aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--benchmarks/common_top.pri3
-rw-r--r--benchmarks/mt_mbuttongroup/mt_mbuttongroup.cpp6
-rw-r--r--benchmarks/performancebenchmark/emptymainloophelper.cpp3
-rw-r--r--benchmarks/pt_mapplication/pt_mapplication.cpp4
-rw-r--r--benchmarks/pt_mcomponentdata/pt_mcomponentdata.cpp2
-rw-r--r--benchmarks/pt_minimalmapplication/pt_minimalmapplication.cpp6
-rw-r--r--benchmarks/pt_minimalqtapplication/pt_minimalqtapplication.cpp6
-rw-r--r--benchmarks/pt_mtheme/pt_mtheme.cpp2
-rwxr-xr-xconfigure11
-rw-r--r--debian/.gitignore2
-rw-r--r--debian/changelog67
-rw-r--r--debian/control196
-rw-r--r--debian/libmeegotouch-bin.install1
-rwxr-xr-xdebian/rules30
-rw-r--r--demos/animatedlayout/animatedlayout.pro10
-rw-r--r--demos/applicationextension/demoextension/demoextension.cpp2
-rw-r--r--demos/applicationextension/demoextension/demoextension.h2
-rw-r--r--demos/applicationextension/main.cpp2
-rw-r--r--demos/demos.pro17
-rw-r--r--demos/qtstyleexample/main.cpp3
-rw-r--r--demos/widgetsgallery/analyze_results/analyze_results.py13
-rw-r--r--demos/widgetsgallery/analyze_results/benchmark_results.py6
-rw-r--r--demos/widgetsgallery/dialogsandnotificationspage.cpp3
-rw-r--r--demos/widgetsgallery/gridmodel.cpp4
-rw-r--r--demos/widgetsgallery/gridvideowidget.cpp4
-rw-r--r--demos/widgetsgallery/gridvideowidget.h3
-rw-r--r--demos/widgetsgallery/itemdetailpage.cpp315
-rw-r--r--demos/widgetsgallery/itemdetailpage.h75
-rw-r--r--demos/widgetsgallery/mgridpage.cpp10
-rw-r--r--demos/widgetsgallery/mlistpage.cpp28
-rw-r--r--demos/widgetsgallery/mlistpage.h1
-rw-r--r--demos/widgetsgallery/panningbenchmark.cpp2
-rw-r--r--demos/widgetsgallery/pushbuttonpage.cpp1
-rw-r--r--demos/widgetsgallery/staticpagebenchmark.cpp2
-rw-r--r--demos/widgetsgallery/swaphook.cpp2
-rw-r--r--demos/widgetsgallery/textentrypage.cpp15
-rw-r--r--demos/widgetsgallery/textentrypage.h1
-rw-r--r--demos/widgetsgallery/theme/base/style/widgetsgallery.css60
-rw-r--r--demos/widgetsgallery/theme/devel/svg/multimedia-overlays.svg851
-rw-r--r--demos/widgetsgallery/timedemo.cpp15
-rw-r--r--demos/widgetsgallery/timedemo.h6
-rw-r--r--demos/widgetsgallery/timedemobenchmark.cpp15
-rw-r--r--demos/widgetsgallery/timedemobenchmark.h10
-rw-r--r--demos/widgetsgallery/toolbarpage.cpp6
-rw-r--r--doc/src/applicationextensions.dox24
-rw-r--r--doc/src/faststartup.dox42
-rw-r--r--doc/src/images/mcontainer.png (renamed from doc/src/images/duicontainer.png)bin28013 -> 28013 bytes
-rw-r--r--doc/src/images/mflowlayoutpolicy.png (renamed from doc/src/images/duiflowlayoutpolicy.png)bin125363 -> 125363 bytes
-rw-r--r--doc/src/images/mflowlayoutpolicy_small.png (renamed from doc/src/images/duiflowlayoutpolicy_small.png)bin62098 -> 62098 bytes
-rw-r--r--doc/src/images/mfreestylelayoutpolicy.png (renamed from doc/src/images/duifreestylelayoutpolicy.png)bin162020 -> 162020 bytes
-rw-r--r--doc/src/images/mfreestylelayoutpolicy_small.png (renamed from doc/src/images/duifreestylelayoutpolicy_small.png)bin81449 -> 81449 bytes
-rw-r--r--doc/src/images/mgridlayoutpolicy.png (renamed from doc/src/images/duigridlayoutpolicy.png)bin106142 -> 106142 bytes
-rw-r--r--doc/src/images/mgridlayoutpolicy_small.png (renamed from doc/src/images/duigridlayoutpolicy_small.png)bin52234 -> 52234 bytes
-rw-r--r--doc/src/images/mlinearlayoutpolicy.png (renamed from doc/src/images/duilinearlayoutpolicy.png)bin83450 -> 83450 bytes
-rw-r--r--doc/src/images/mlinearlayoutpolicy_small.png (renamed from doc/src/images/duilinearlayoutpolicy_small.png)bin40838 -> 40838 bytes
-rw-r--r--doc/src/images/mplatform.png (renamed from doc/src/images/duiplatform.png)bin21413 -> 21413 bytes
-rw-r--r--doc/src/images/root element and scene window.pngbin0 -> 64361 bytes
-rw-r--r--doc/src/images/root element and scene window.svg1045
-rw-r--r--doc/src/images/scene and view.pngbin0 -> 27092 bytes
-rw-r--r--doc/src/images/scene and view.svg279
-rw-r--r--doc/src/launcher.dox209
-rw-r--r--doc/src/layouts.dox40
-rw-r--r--doc/src/mainpage.dox5
-rw-r--r--doc/src/news.dox5
-rw-r--r--doc/src/prestart.dox10
-rw-r--r--doc/src/rotation.dox2
-rw-r--r--doc/src/sceneandscenewindows.dox19
-rw-r--r--doc/src/tutorial.dox12
-rw-r--r--examples/apscanner/apscanner.pro3
-rw-r--r--examples/calculator/calculator.pro11
-rw-r--r--examples/chaining/chainingexampleapp1/chainingexampleapp1.pro2
-rw-r--r--examples/chaining/chainingexampleapp2/chainingexampleapp2.pro2
-rw-r--r--examples/chaining/chainingexampleapp2/imageviewer.cpp17
-rw-r--r--examples/chaining/chainingexampleapp2/imageviewer.h5
-rw-r--r--examples/chaining/chainingexampleapp2/main.cpp2
-rw-r--r--examples/chaining/chainingexampleinterface/chainingexampleinterface.pro2
-rw-r--r--examples/containertest/containertest.pro3
-rw-r--r--examples/helloworld/helloworld.pro8
-rw-r--r--examples/imtoolbar/imtoolbar.pro2
-rw-r--r--examples/layout/hidden_widgets/hidden_widgets.pro2
-rw-r--r--examples/layout/layout_inside_layout/layout_inside_layout.pro2
-rw-r--r--examples/layout/mflowlayoutpolicy/.gitignore2
-rw-r--r--examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.dox16
-rw-r--r--examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.css (renamed from examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.css)0
-rw-r--r--examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.dox16
-rw-r--r--examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro2
-rw-r--r--examples/layout/mfreestylelayoutpolicy/.gitignore2
-rw-r--r--examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.dox16
-rw-r--r--examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.css (renamed from examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.css)0
-rw-r--r--examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.dox16
-rw-r--r--examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro2
-rw-r--r--examples/layout/mgridlayoutpolicy/.gitignore2
-rw-r--r--examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.dox16
-rw-r--r--examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.css (renamed from examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.css)0
-rw-r--r--examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.dox16
-rw-r--r--examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro2
-rw-r--r--examples/layout/mlinearlayoutpolicy/.gitignore2
-rw-r--r--examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.dox16
-rw-r--r--examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.css (renamed from examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.css)0
-rw-r--r--examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.dox16
-rw-r--r--examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro2
-rw-r--r--examples/layout/multiplepolicies/multiplepolicies.pro2
-rw-r--r--examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.dox2
-rw-r--r--examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.pro2
-rw-r--r--examples/layout/qgraphicslayout/qgraphicslayout.pro2
-rw-r--r--examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.dox2
-rw-r--r--examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.pro2
-rw-r--r--examples/layout/two_columns/two_columns.pro2
-rwxr-xr-xexamples/lifecycle/duihome_session_env.sh8
-rw-r--r--examples/lifecycle/lifecycle.pro2
-rw-r--r--examples/lifecycle/mhome_session_env.sh7
-rw-r--r--examples/multipleinstances/multipleinstances.pro2
-rw-r--r--examples/separatorTest/separatorTest.pro2
-rw-r--r--examples/testwidget/testwidget.pro2
-rw-r--r--examples/trackergrid/README2
-rw-r--r--examples/trackergrid/trackergrid.pro2
-rw-r--r--libmeegotouch-spec-README380
-rw-r--r--libmeegotouch.spec772
-rw-r--r--mapplicationextensionrunner/mapplicationextensionrunner.cpp2
-rw-r--r--mkspecs/common.pri4
-rw-r--r--mkspecs/features/meegotouch_defines.prf.in2
-rwxr-xr-xmmoc/mmoc216
-rw-r--r--mmoc/mmoc.cpp214
-rw-r--r--mmoc/mmoc.pro50
-rw-r--r--plainqt/style/qtmaemo6comboboxpopup.cpp1
-rw-r--r--plainqt/style/qtmaemo6dialogproxy.cpp1
-rw-r--r--plainqt/style/qtmaemo6dialogtitle.cpp15
-rw-r--r--plainqt/style/qtmaemo6menu.cpp1
-rw-r--r--plainqt/style/qtmaemo6menuproxy.cpp16
-rw-r--r--plainqt/style/qtmaemo6scrollbareventfilter.cpp18
-rw-r--r--plainqt/style/qtmaemo6sliderpopup.cpp6
-rw-r--r--plainqt/style/qtmaemo6sliderpopup.h2
-rw-r--r--plainqt/style/qtmaemo6style.cpp184
-rw-r--r--plainqt/style/qtmaemo6style.h5
-rw-r--r--plainqt/style/qtmaemo6style_p.h13
-rw-r--r--plainqt/style/qtmaemo6styleeventfilter.cpp12
-rw-r--r--plainqt/style/qtmaemo6submenu.cpp1
-rw-r--r--plainqt/style/qtmaemo6teststyle.cpp31
-rw-r--r--plainqt/style/qtmaemo6teststyle_p.h9
-rw-r--r--plainqt/style/qtmaemo6titlebar.cpp44
-rw-r--r--plainqt/style/qtmaemo6windowdecoration.cpp72
-rw-r--r--plainqt/style/qtmaemo6windowdecoration.h15
-rw-r--r--projects.pro7
-rw-r--r--src/common_top.pri9
-rw-r--r--src/corelib/animation/scene/mbasicorientationanimation.cpp18
-rw-r--r--src/corelib/animation/scene/mbasicorientationanimation.h14
-rw-r--r--src/corelib/animation/scene/mbasicorientationanimation_p.h6
-rw-r--r--src/corelib/animation/scene/mcrossfadedorientationanimation.cpp330
-rw-r--r--src/corelib/animation/scene/mcrossfadedorientationanimation.h46
-rw-r--r--src/corelib/animation/scene/mcrossfadedorientationanimation_p.h55
-rw-r--r--src/corelib/animation/scene/mfliporientationanimation.cpp147
-rw-r--r--src/corelib/animation/scene/mfliporientationanimation.h70
-rw-r--r--src/corelib/animation/scene/mfliporientationanimation_p.h46
-rw-r--r--src/corelib/animation/scene/mnavigationbaranimation.cpp93
-rw-r--r--src/corelib/animation/scene/mnavigationbaranimation.h65
-rw-r--r--src/corelib/animation/scene/mnotificationanimation.cpp99
-rw-r--r--src/corelib/animation/scene/mnotificationanimation.h64
-rw-r--r--src/corelib/animation/scene/mnotificationanimation_p.h34
-rw-r--r--src/corelib/animation/scene/morientationanimation.cpp13
-rw-r--r--src/corelib/animation/scene/morientationanimation.h19
-rw-r--r--src/corelib/animation/scene/morientationanimation_p.h4
-rw-r--r--src/corelib/animation/scene/mscenefadeanimation.cpp86
-rw-r--r--src/corelib/animation/scene/mscenefadeanimation.h66
-rw-r--r--src/corelib/animation/scene/mscenewindowanimation.cpp67
-rw-r--r--src/corelib/animation/scene/mscenewindowanimation.h90
-rw-r--r--src/corelib/animation/scene/msnapshotitem.cpp47
-rw-r--r--src/corelib/animation/scene/msnapshotitem.h29
-rw-r--r--src/corelib/animation/scene/scene.pri26
-rw-r--r--src/corelib/animation/widget/core/mabstractwidgetanimation_p.h8
-rw-r--r--src/corelib/animation/widget/mwidgetfadeanimation.cpp120
-rw-r--r--src/corelib/animation/widget/mwidgetfadeanimation.h (renamed from src/corelib/animation/widget/mwidgetfadeinanimation.h)28
-rw-r--r--src/corelib/animation/widget/mwidgetfadeanimation_p.h (renamed from src/corelib/animation/widget/mwidgetfadeinanimation_p.h)15
-rw-r--r--src/corelib/animation/widget/mwidgetfadeinanimation.cpp80
-rw-r--r--src/corelib/animation/widget/mwidgetfadeoutanimation.cpp78
-rw-r--r--src/corelib/animation/widget/mwidgetfadeoutanimation.h67
-rw-r--r--src/corelib/animation/widget/mwidgetfadeoutanimation_p.h38
-rw-r--r--src/corelib/animation/widget/mwidgetslideanimation.cpp140
-rw-r--r--src/corelib/animation/widget/mwidgetslideanimation.h (renamed from src/corelib/animation/widget/mwidgetslideoutanimation.h)30
-rw-r--r--src/corelib/animation/widget/mwidgetslideanimation_p.h (renamed from src/corelib/animation/widget/mwidgetslideinanimation_p.h)17
-rw-r--r--src/corelib/animation/widget/mwidgetslideinanimation.cpp91
-rw-r--r--src/corelib/animation/widget/mwidgetslideoutanimation.cpp90
-rw-r--r--src/corelib/animation/widget/mwidgetzoomanimation.cpp169
-rw-r--r--src/corelib/animation/widget/mwidgetzoomanimation.h (renamed from src/corelib/animation/widget/mwidgetslideinanimation.h)56
-rw-r--r--src/corelib/animation/widget/mwidgetzoomanimation_p.h (renamed from src/corelib/animation/scene/mnavigationbaranimation_p.h)27
-rw-r--r--src/corelib/animation/widget/mwidgetzoominanimation.cpp62
-rw-r--r--src/corelib/animation/widget/mwidgetzoominanimation.h69
-rw-r--r--src/corelib/animation/widget/mwidgetzoominanimation_p.h34
-rw-r--r--src/corelib/animation/widget/mwidgetzoomoutanimation.cpp57
-rw-r--r--src/corelib/animation/widget/mwidgetzoomoutanimation.h63
-rw-r--r--src/corelib/animation/widget/mwidgetzoomoutanimation_p.h34
-rw-r--r--src/corelib/animation/widget/widget.pri27
-rw-r--r--src/corelib/core/maction.cpp2
-rw-r--r--src/corelib/core/mcomponentcache.cpp4
-rw-r--r--src/corelib/core/mcomponentdata.cpp37
-rw-r--r--src/corelib/core/mnamespace.h36
-rw-r--r--src/corelib/corelib.pro6
-rw-r--r--src/corelib/events/morientationtracker.cpp2
-rw-r--r--src/corelib/events/mpanrecognizer.cpp2
-rw-r--r--src/corelib/events/mtapandholdrecognizer.cpp7
-rw-r--r--src/corelib/i18n/mcalendar.cpp33
-rw-r--r--src/corelib/i18n/mcollator.cpp2
-rw-r--r--src/corelib/i18n/mcollator_p.h2
-rw-r--r--src/corelib/i18n/mlocale.cpp83
-rw-r--r--src/corelib/i18n/mlocale.h147
-rw-r--r--src/corelib/i18n/mlocale_p.h2
-rw-r--r--src/corelib/icu-extradata/extradata.pri5
-rw-r--r--src/corelib/layout/mabstractlayoutpolicy.cpp2
-rw-r--r--src/corelib/layout/mabstractlayoutpolicy_p.cpp20
-rw-r--r--src/corelib/layout/mabstractlayoutpolicy_p.h2
-rw-r--r--src/corelib/layout/mbasiclayoutanimation.cpp24
-rw-r--r--src/corelib/layout/mbasiclayoutanimation_p.cpp85
-rw-r--r--src/corelib/layout/mitemstate_p.cpp60
-rw-r--r--src/corelib/layout/mitemstate_p.h52
-rw-r--r--src/corelib/layout/mlayout.cpp20
-rw-r--r--src/corelib/layout/mlayout_p.cpp10
-rw-r--r--src/corelib/layout/mlayout_p.h6
-rw-r--r--src/corelib/layout/mlinearlayoutpolicy.cpp11
-rw-r--r--src/corelib/painting/mbackgroundtiles.cpp3
-rw-r--r--src/corelib/scene/mscene.cpp2
-rw-r--r--src/corelib/scene/mscene.h12
-rw-r--r--src/corelib/scene/mscenelayereffect.cpp24
-rw-r--r--src/corelib/scene/mscenelayereffect.h4
-rw-r--r--src/corelib/scene/mscenemanager.cpp141
-rw-r--r--src/corelib/scene/mscenemanager_p.h6
-rw-r--r--src/corelib/style/manimationstyle.h2
-rw-r--r--src/corelib/style/mbasiclayoutanimationstyle.h7
-rw-r--r--src/corelib/style/mcrossfadedorientationanimationstyle.h47
-rw-r--r--src/corelib/style/mstylesheetparser.cpp26
-rw-r--r--src/corelib/style/mwidgetfadeanimationstyle.h (renamed from src/corelib/style/mwidgetfadeinanimationstyle.h)13
-rw-r--r--src/corelib/style/mwidgetslideanimationstyle.h (renamed from src/corelib/style/mwidgetzoominanimationstyle.h)14
-rw-r--r--src/corelib/style/mwidgetslideoutanimationstyle.h42
-rw-r--r--src/corelib/style/mwidgetstyle.h2
-rw-r--r--src/corelib/style/mwidgetzoomanimationstyle.h52
-rw-r--r--src/corelib/style/mwidgetzoomoutanimationstyle.h41
-rw-r--r--src/corelib/style/style.pri10
-rw-r--r--src/corelib/theme/mcommonpixmaps.cpp5
-rw-r--r--src/corelib/theme/mtheme.cpp79
-rw-r--r--src/corelib/theme/mtheme.h14
-rw-r--r--src/corelib/theme/mtheme_p.h8
-rw-r--r--src/corelib/widgets/RichTextEditorToolbar1.xml34
-rw-r--r--src/corelib/widgets/core/mwidget.cpp30
-rw-r--r--src/corelib/widgets/core/mwidget.h30
-rw-r--r--src/corelib/widgets/core/mwidgetcontroller.h2
-rw-r--r--src/corelib/widgets/core/mwidgetview.cpp2
-rw-r--r--src/corelib/widgets/mabstractcellcreator.cpp10
-rw-r--r--src/corelib/widgets/mapplicationpage.h36
-rw-r--r--src/corelib/widgets/mapplicationwindow.cpp74
-rw-r--r--src/corelib/widgets/mapplicationwindow.h4
-rw-r--r--src/corelib/widgets/mapplicationwindow_p.h13
-rw-r--r--src/corelib/widgets/mbutton.cpp11
-rw-r--r--src/corelib/widgets/mbutton.h20
-rw-r--r--src/corelib/widgets/mbuttongroup.cpp3
-rw-r--r--src/corelib/widgets/mbuttonmodel.cpp (renamed from src/corelib/animation/scene/mscenewindowanimation_p.h)21
-rw-r--r--src/corelib/widgets/mbuttonmodel.h11
-rw-r--r--src/corelib/widgets/mcontentitem.cpp34
-rw-r--r--src/corelib/widgets/mcontentitem.h20
-rw-r--r--src/corelib/widgets/mcontentitem_p.h4
-rw-r--r--src/corelib/widgets/mcontentitemmodel.h8
-rw-r--r--src/corelib/widgets/mdialog.cpp8
-rw-r--r--src/corelib/widgets/mdialog.h14
-rw-r--r--src/corelib/widgets/mimagewidget.cpp17
-rw-r--r--src/corelib/widgets/mlabel.cpp4
-rw-r--r--src/corelib/widgets/mlabel.h2
-rw-r--r--src/corelib/widgets/mlabelmodel.cpp4
-rw-r--r--src/corelib/widgets/mlabelmodel.h8
-rw-r--r--src/corelib/widgets/mlist.cpp10
-rw-r--r--src/corelib/widgets/mlist.h10
-rw-r--r--src/corelib/widgets/mlistmodel.h1
-rw-r--r--src/corelib/widgets/mobjectmenu.cpp10
-rw-r--r--src/corelib/widgets/mobjectmenu.h5
-rw-r--r--src/corelib/widgets/mobjectmenumodel.h8
-rw-r--r--src/corelib/widgets/mpannablewidget.cpp15
-rw-r--r--src/corelib/widgets/mpannablewidget.h12
-rw-r--r--src/corelib/widgets/mrichtextedit.cpp256
-rw-r--r--src/corelib/widgets/mrichtextedit.h98
-rw-r--r--src/corelib/widgets/mrichtextedit_p.h61
-rw-r--r--src/corelib/widgets/mscenewindow.cpp48
-rw-r--r--src/corelib/widgets/mscenewindow.h6
-rw-r--r--src/corelib/widgets/mscenewindow_p.h9
-rw-r--r--src/corelib/widgets/mscenewindowmodel.h5
-rw-r--r--src/corelib/widgets/mtextedit.cpp372
-rw-r--r--src/corelib/widgets/mtextedit.h13
-rw-r--r--src/corelib/widgets/mtextedit_p.h29
-rw-r--r--src/corelib/widgets/mtexteditmodel.h1
-rw-r--r--src/corelib/widgets/mtoolbar.cpp3
-rw-r--r--src/corelib/widgets/mwindow.cpp46
-rw-r--r--src/corelib/widgets/mwindow_p.h1
-rw-r--r--src/corelib/widgets/widgets.pri3
-rw-r--r--src/corelib/workspace/devices.conf7
-rw-r--r--src/corelib/workspace/mdeviceprofile.cpp24
-rw-r--r--src/corelib/workspace/mdeviceprofile.h3
-rw-r--r--src/corelib/workspace/mdeviceprofile_p.h1
-rw-r--r--src/extensions/applicationextension/mapplicationextensionarea.cpp59
-rw-r--r--src/extensions/applicationextension/mapplicationextensionarea.h105
-rw-r--r--src/extensions/applicationextension/mapplicationextensionarea_p.h3
-rw-r--r--src/extensions/applicationextension/mapplicationextensionareaview.cpp13
-rw-r--r--src/extensions/applicationextension/mapplicationextensionareaview.h4
-rw-r--r--src/extensions/applicationextension/mapplicationextensionareaview_p.h6
-rw-r--r--src/extensions/applicationextension/mapplicationextensioninterface.h4
-rw-r--r--src/extensions/applicationextension/mapplicationextensionmanager.cpp39
-rw-r--r--src/extensions/applicationextension/mapplicationextensionmanager.h48
-rw-r--r--src/extensions/applicationextension/mextensionarea.cpp13
-rw-r--r--src/extensions/applicationextension/mextensionarea.h4
-rw-r--r--src/extensions/applicationextension/mextensionarea_p.h4
-rw-r--r--src/extensions/applicationextension/mextensionareaview.cpp2
-rw-r--r--src/extensions/applicationextension/mextensionareaview_p.h4
-rw-r--r--src/extensions/applicationextension/mextensionrunner.cpp1
-rw-r--r--src/extensions/applicationextension/mextensionrunner.h2
-rw-r--r--src/extensions/mashup/appletinterface/mappletinterface.h6
-rw-r--r--src/extensions/mashup/mashup/mappletinstancedata.h4
-rw-r--r--src/extensions/mashup/mashup/mappletinstancemanager.cpp22
-rw-r--r--src/extensions/mashup/mashup/mappletinstancemanager.h12
-rw-r--r--src/extensions/mashup/mashup/mappletloader.cpp6
-rw-r--r--src/extensions/mashup/mashup/mappletloader.h6
-rw-r--r--src/extensions/mashup/mashup/mmashupcanvas.cpp6
-rw-r--r--src/extensions/mashup/mashup/mmashupcanvas.h2
-rw-r--r--src/extensions/mashup/mashup/mmashupcanvas_p.h2
-rw-r--r--src/extensions/mashup/mashup/mmashupcanvasview.cpp4
-rw-r--r--src/extensions/mashup/mashup/mmashupcanvasview_p.h4
-rw-r--r--src/extensions/style/mapplicationextensionareastyle.h3
-rw-r--r--src/include/MRichTextEdit1
-rw-r--r--src/include/MWidgetFadeInAnimationStyle1
-rw-r--r--src/include/MWidgetFadeOutAnimationStyle2
-rwxr-xr-x[-rw-r--r--]src/include/mrichtextedit.h (renamed from src/include/mwidgetfadeinanimationstyle.h)2
-rwxr-xr-x[-rw-r--r--]src/include/mrichtexteditstyle.h (renamed from src/include/mwidgetfadeoutanimationstyle.h)2
-rw-r--r--src/meegotouch.pc2
-rw-r--r--src/predeps.pri19
-rw-r--r--src/views/animations/animations.pri8
-rw-r--r--src/views/animations/mwarpanimation.cpp105
-rw-r--r--src/views/animations/mwarpanimation.h (renamed from src/corelib/animation/widget/mwidgetslideoutanimation_p.h)44
-rw-r--r--src/views/mapplicationmenubuttonview.cpp2
-rw-r--r--src/views/mbuttonview.cpp99
-rw-r--r--src/views/mbuttonview_p.h10
-rw-r--r--src/views/mcomboboxview.cpp8
-rw-r--r--src/views/mcontentitemview.cpp15
-rw-r--r--src/views/mcontentitemview_p.h1
-rw-r--r--src/views/mdialogview.cpp3
-rw-r--r--src/views/mescapebuttonpanelview.cpp74
-rw-r--r--src/views/mescapebuttonpanelview.h3
-rw-r--r--src/views/mescapebuttonpanelview_p.h8
-rw-r--r--src/views/mlabelview.cpp19
-rw-r--r--src/views/mlabelview.h1
-rw-r--r--src/views/mlabelview_rich.cpp2
-rw-r--r--src/views/mlabelview_simple.cpp7
-rw-r--r--src/views/mlistindexview.cpp10
-rw-r--r--src/views/mlistview.cpp8
-rw-r--r--src/views/mlistview_p.cpp23
-rw-r--r--src/views/mlistview_p.h4
-rw-r--r--src/views/mmessageboxview.cpp1
-rw-r--r--src/views/mnavigationbarview.cpp23
-rw-r--r--src/views/mnavigationbarview_p.h4
-rw-r--r--src/views/mobjectmenuview.cpp2
-rw-r--r--src/views/mscenelayereffectdimview.cpp25
-rw-r--r--src/views/mscenelayereffectdimview.h2
-rw-r--r--src/views/mscenewindowview.cpp4
-rw-r--r--src/views/msliderview.cpp190
-rw-r--r--src/views/msliderview.h6
-rw-r--r--src/views/mtexteditview.cpp99
-rw-r--r--src/views/mtoolbartabview.cpp479
-rw-r--r--src/views/mtoolbartabview.h9
-rw-r--r--src/views/mtoolbartabview_p.h91
-rw-r--r--src/views/mtoolbarview.cpp688
-rw-r--r--src/views/mtoolbarview.h4
-rw-r--r--src/views/mtoolbarview_p.h72
-rwxr-xr-x[-rw-r--r--]src/views/style/mrichtexteditstyle.h (renamed from src/corelib/animation/scene/mscenefadeanimation_p.h)23
-rw-r--r--src/views/style/mscenewindowstyle.h1
-rw-r--r--src/views/style/mwarpanimationstyle.h (renamed from src/corelib/style/mwidgetfadeoutanimationstyle.h)24
-rw-r--r--src/views/style/style.pri2
-rw-r--r--src/views/video/mgstvideo.cpp217
-rw-r--r--src/views/video/mgstvideo.h14
-rw-r--r--src/views/video/mvideowidgetview.cpp35
-rw-r--r--src/views/views.pro1
-rw-r--r--tests/ft_localedata/ft_localedata.pro2
-rw-r--r--tests/ft_locales/ft_locales-test-input-icu-4.2.1.txt7228
-rw-r--r--tests/ft_locales/ft_locales-test-input-icu-4.4.1.txt7592
-rw-r--r--tests/ft_locales/ft_locales.cpp239
-rw-r--r--tests/ft_locales/ft_locales.h9
-rw-r--r--tests/ft_locales/ft_locales.pro3
-rw-r--r--tests/ft_mscalableimage/ft_mscalableimage.cpp3
-rw-r--r--tests/ft_mservicefwgen/ft_mservicefwgen.cpp2
-rw-r--r--tests/ft_mservicefwgen/ftmservicefwgen1adaptor.cpp.correct6
-rw-r--r--tests/ft_mservicefwgen/ftmservicefwgen2adaptor.cpp.correct6
-rw-r--r--tests/ft_mstylesheet/ft_mstylesheet.cpp1
-rw-r--r--tests/ft_mstylesheet/ft_mstylesheet.pro4
-rw-r--r--tests/ft_mstylesheetparser/ft_mstylesheetparser.cpp43
-rw-r--r--tests/ft_mstylesheetparser/ft_mstylesheetparser_test.css5
-rwxr-xr-xtests/gen-tests-xml.sh2
-rw-r--r--tests/stubs/mapplethandle_stub.h4
-rw-r--r--tests/stubs/mappletid_stub.h2
-rw-r--r--tests/stubs/mappletinstancemanager_stub.h11
-rw-r--r--tests/stubs/mappletloader_stub.h8
-rw-r--r--tests/stubs/mappletsharedmutex_stub.h1
-rw-r--r--tests/stubs/mapplicationextensionmanager_stub.h226
-rw-r--r--tests/stubs/methodcall.h12
-rw-r--r--tests/stubs/mextensionrunner_stub.h14
-rw-r--r--tests/stubs/mnotificationmanager_stub.h3
-rw-r--r--tests/stubs/msettingslanguageoption_stub.h1
-rw-r--r--tests/stubs/msettingslanguagesettings_stub.h1
-rw-r--r--tests/stubs/mwidget_stub.h21
-rw-r--r--tests/stubs/stubbase.h2
-rw-r--r--tests/tests.pro1
-rw-r--r--tests/ut_mapplethandle/ut_mapplethandle.pro4
-rw-r--r--tests/ut_mappletinstancemanager/ut_mappletinstancemanager.cpp46
-rw-r--r--tests/ut_mappletinstancemanager/ut_mappletinstancemanager.h9
-rw-r--r--tests/ut_mappletinventory/ut_mappletinventory.cpp4
-rw-r--r--tests/ut_mappletinventory/ut_mappletinventory.h6
-rw-r--r--tests/ut_mappletinventory/ut_mappletinventory.pro4
-rw-r--r--tests/ut_mappletloader/ut_mappletloader.cpp14
-rw-r--r--tests/ut_mappletloader/ut_mappletloader.h2
-rw-r--r--tests/ut_mappletrunner/ut_mappletrunner.cpp6
-rw-r--r--tests/ut_mappletrunner/ut_mappletrunner.h4
-rw-r--r--tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.cpp41
-rw-r--r--tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.h17
-rw-r--r--tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.pro9
-rw-r--r--tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp15
-rw-r--r--tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h2
-rw-r--r--tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.cpp4
-rw-r--r--tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.h4
-rw-r--r--tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.cpp76
-rw-r--r--tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.h21
-rw-r--r--tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.cpp6
-rw-r--r--tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.h6
-rw-r--r--tests/ut_mapplicationservice/ut_mapplicationservice.cpp1
-rw-r--r--tests/ut_mapplicationwindow/ut_mapplicationwindow.h2
-rw-r--r--tests/ut_mcalendar/ut_mcalendar.cpp245
-rw-r--r--tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.cpp4
-rw-r--r--tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.h4
-rw-r--r--tests/ut_mextensionhandle/ut_mextensionhandle.pro4
-rw-r--r--tests/ut_mflowlayoutpolicy/ut_mflowlayoutpolicy.cpp1
-rw-r--r--tests/ut_mfreestylelayoutpolicy/ut_mfreestylelayoutpolicy.cpp1
-rw-r--r--tests/ut_mgridlayoutpolicy/ut_mgridlayoutpolicy.cpp1
-rw-r--r--tests/ut_mimagewidget/ut_mimagewidget-test.png (renamed from tests/ut_mimagewidget/ut_duiimagewidget-test.png)bin2894 -> 2894 bytes
-rw-r--r--tests/ut_mimagewidget/ut_mimagewidget.cpp5
-rw-r--r--tests/ut_mimagewidget/ut_mimagewidget.h2
-rw-r--r--tests/ut_minputmethodstate/ut_minputmethodstate.cpp2
-rw-r--r--tests/ut_mlayout/ut_mlayout.cpp42
-rw-r--r--tests/ut_mlinearlayoutpolicy/ut_mlinearlayoutpolicy.cpp1
-rw-r--r--tests/ut_mlogicalvalues/ut_mlogicalvalues.cpp1
-rw-r--r--tests/ut_mphysics2dpanning/ut_mphysics2dpanning.cpp5
-rw-r--r--tests/ut_mremoteaction/ut_mremoteaction.cpp1
-rw-r--r--tests/ut_mrichtextedit/ut_mrichtextedit.cpp313
-rw-r--r--tests/ut_mrichtextedit/ut_mrichtextedit.h (renamed from src/corelib/style/mwidgetslideinanimationstyle.h)41
-rw-r--r--tests/ut_mrichtextedit/ut_mrichtextedit.pro13
-rw-r--r--tests/ut_mscenemanager/ut_mscenemanager.h2
-rw-r--r--tests/ut_mserviceaction/ut_mserviceaction.cpp1
-rw-r--r--tests/ut_mservicefwgen/ut_mservicefwgen.cpp6
-rw-r--r--tests/ut_mservicefwgen/ut_mservicefwgen.h6
-rw-r--r--tests/ut_msliderview/ut_msliderview.cpp6
-rw-r--r--tests/ut_msliderview/ut_msliderview.h1
-rw-r--r--tests/ut_mtextedit/ut_mtextedit.cpp140
-rw-r--r--tests/ut_mtextedit/ut_mtextedit.h9
-rw-r--r--tests/ut_mtexteditview/ut_mtexteditview.cpp44
-rw-r--r--tests/ut_mtexteditview/ut_mtexteditview.h1
-rw-r--r--tests/ut_mtoolbarview/ut_mtoolbarview.cpp255
-rw-r--r--tests/ut_mtoolbarview/ut_mtoolbarview.h8
-rw-r--r--tests/ut_mvideowidget/ut_mvideowidget.cpp3
-rw-r--r--tests/ut_mwindow/ut_mwindow.cpp2
-rw-r--r--tests/ut_mwindow/ut_mwindow.h3
-rw-r--r--tests/ut_qtmaemo6style/ut_qtmaemo6style.cpp148
-rw-r--r--tools/m-servicefwgen.d/m-servicefwgen.cpp256
-rw-r--r--tools/mapplettester/main.cpp17
-rw-r--r--tools/mapplettester/mapplettester.css110
-rw-r--r--tools/mapplettester/mapplettester.h4
-rw-r--r--tools/mapplettester/mapplettester.pro5
-rwxr-xr-xtools/messageid-check1274
466 files changed, 27377 insertions, 5747 deletions
diff --git a/.gitignore b/.gitignore
index d024b967..0d0aea2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,3 +42,4 @@ cscope.out
build-i386
build-armel
.qmake.cache
+mmoc/mmoc
diff --git a/benchmarks/common_top.pri b/benchmarks/common_top.pri
index 58df70c3..c9821989 100644
--- a/benchmarks/common_top.pri
+++ b/benchmarks/common_top.pri
@@ -1,3 +1,6 @@
+# for defines
+include(../mkspecs/common.pri)
+
MSRCDIR = ../../src/
STUBSDIR = ../stubs
INCLUDEPATH += \
diff --git a/benchmarks/mt_mbuttongroup/mt_mbuttongroup.cpp b/benchmarks/mt_mbuttongroup/mt_mbuttongroup.cpp
index a58a7476..5cf1ffa2 100644
--- a/benchmarks/mt_mbuttongroup/mt_mbuttongroup.cpp
+++ b/benchmarks/mt_mbuttongroup/mt_mbuttongroup.cpp
@@ -56,14 +56,14 @@ void Mt_MButtonGroup::memoryBenchmark()
{
QFETCH(int, buttonCount);
- MButton **buttons = new MButton*[buttonCount];
+ QList<MButton*> buttons;
beginMemoryBenchmark();
MButtonGroup *buttonGroup = new MButtonGroup();
for (int i = 0; i < buttonCount; ++i) {
- buttons[i] = new MButton();
+ buttons.append( new MButton );
buttons[i]->setCheckable(true);
buttonGroup->addButton(buttons[i]);
}
@@ -77,8 +77,6 @@ void Mt_MButtonGroup::memoryBenchmark()
delete buttonGroup;
endMemoryBenchmark();
-
- delete buttons;
}
QTEST_APPLESS_MAIN(Mt_MButtonGroup)
diff --git a/benchmarks/performancebenchmark/emptymainloophelper.cpp b/benchmarks/performancebenchmark/emptymainloophelper.cpp
index c7c6ecaf..a5d3a3e1 100644
--- a/benchmarks/performancebenchmark/emptymainloophelper.cpp
+++ b/benchmarks/performancebenchmark/emptymainloophelper.cpp
@@ -27,7 +27,8 @@
#include <cstdlib>
-EmptyMainLoopHelper::EmptyMainLoopHelper()
+EmptyMainLoopHelper::EmptyMainLoopHelper() :
+ terminationType( QuitOnEmpty )
{
}
diff --git a/benchmarks/pt_mapplication/pt_mapplication.cpp b/benchmarks/pt_mapplication/pt_mapplication.cpp
index 76441e07..1dc4d7ea 100644
--- a/benchmarks/pt_mapplication/pt_mapplication.cpp
+++ b/benchmarks/pt_mapplication/pt_mapplication.cpp
@@ -39,7 +39,7 @@ void Pt_MApplication::processCreationAndCtor()
void Pt_MApplication::ctor()
{
- MApplication *a;
+ MApplication *a = NULL;
QBENCHMARK {
int fakeArgc = 1;
char *fakeArgv[fakeArgc];
@@ -52,7 +52,7 @@ void Pt_MApplication::ctor()
void Pt_MApplication::ctor2()
{
- MApplication *a;
+ MApplication *a = NULL;
QBENCHMARK {
int fakeArgc = 1;
char *fakeArgv[fakeArgc];
diff --git a/benchmarks/pt_mcomponentdata/pt_mcomponentdata.cpp b/benchmarks/pt_mcomponentdata/pt_mcomponentdata.cpp
index 420d1642..b8f2705b 100644
--- a/benchmarks/pt_mcomponentdata/pt_mcomponentdata.cpp
+++ b/benchmarks/pt_mcomponentdata/pt_mcomponentdata.cpp
@@ -29,7 +29,7 @@ void Pt_MComponentData::constructor()
char appName[] = "./widgetsgallery";
argv[0] = appName;
- MComponentData *componentData;
+ MComponentData *componentData = 0;
QBENCHMARK_ONCE {
componentData = new MComponentData(argc, argv, appName);
}
diff --git a/benchmarks/pt_minimalmapplication/pt_minimalmapplication.cpp b/benchmarks/pt_minimalmapplication/pt_minimalmapplication.cpp
index b388a3e8..df9c458c 100644
--- a/benchmarks/pt_minimalmapplication/pt_minimalmapplication.cpp
+++ b/benchmarks/pt_minimalmapplication/pt_minimalmapplication.cpp
@@ -39,7 +39,11 @@
}
Pt_minimalmapplication::Pt_minimalmapplication()
- : appearType("appear"), noBenchmark(false)
+ : appearType("appear"),
+ noBenchmark(false),
+ locale(0),
+ window(0),
+ page(0)
{
}
diff --git a/benchmarks/pt_minimalqtapplication/pt_minimalqtapplication.cpp b/benchmarks/pt_minimalqtapplication/pt_minimalqtapplication.cpp
index 53a7d07d..a845fda4 100644
--- a/benchmarks/pt_minimalqtapplication/pt_minimalqtapplication.cpp
+++ b/benchmarks/pt_minimalqtapplication/pt_minimalqtapplication.cpp
@@ -38,7 +38,11 @@
}
Pt_minimalqtapplication::Pt_minimalqtapplication()
- : noBenchmark(false)
+ : noBenchmark(false),
+ window(0),
+ graphicsScene(0),
+ graphicsView(0),
+ glWidget(0)
{
}
diff --git a/benchmarks/pt_mtheme/pt_mtheme.cpp b/benchmarks/pt_mtheme/pt_mtheme.cpp
index ba84b585..52f4bf95 100644
--- a/benchmarks/pt_mtheme/pt_mtheme.cpp
+++ b/benchmarks/pt_mtheme/pt_mtheme.cpp
@@ -26,7 +26,7 @@
void Pt_MTheme::constructor()
{
- MTheme *theme;
+ MTheme *theme = NULL;
QBENCHMARK_ONCE {
theme = new MTheme("widgetsgallery");
}
diff --git a/configure b/configure
index 7579bcf1..cf1b3292 100755
--- a/configure
+++ b/configure
@@ -60,7 +60,7 @@ CFG_DEV=no
CFG_MINIMAL=no
CFG_BUILD_TESTS=no
CFG_BUILD_BENCHMARKS=no
-CFG_BUILD_PLAINQT=no
+CFG_BUILD_PLAINQT=yes
M_DEFAULT_BUILD_PARTS="libs demos"
CFG_BUILD_PARTS=""
@@ -227,7 +227,9 @@ while [ "$#" -gt 0 ]; do
CFG_BUILD_BENCHMARKS="yes"
;;
plainqt)
- CFG_BUILD_PLAINQT="yes"
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_BUILD_PLAINQT="$VAL"
+ fi
;;
n900)
HAVE_N900="yes"
@@ -447,7 +449,6 @@ Additional options:
-tests ............. Build the tests.
-benchmarks ........ Build the benchmarks.
- -plainqt ........... Build the Plain Qt style plugin.
-n900 .............. Build libmeegotouch for the N900 device.
@@ -456,6 +457,10 @@ Additional options:
-no-gconf .......... Do not compile with gconf support.
+ -gconf ............. Compile with gconf support.
+
+ -no-plainqt......... Do not build the Plain Qt style plugin.
+ + -plainqt ........... Build the Plain Qt style plugin.
+
EOF
exit 0
diff --git a/debian/.gitignore b/debian/.gitignore
index 01417c00..365167b5 100644
--- a/debian/.gitignore
+++ b/debian/.gitignore
@@ -45,4 +45,4 @@ meegotouch-dev-tools
meegotouch-demos-plainqt-dbg
meegotouch-demos-plainqt
meegotouch-im-context
-
+meegotouch-qt-style
diff --git a/debian/changelog b/debian/changelog
index 8006a3ca..c7a7aa99 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,69 @@
-libmeegotouch (0.20.7~1) unstable; urgency=low
+libmeegotouch (0.20.12-1) unstable; urgency=low
+
+ * Fixes: NB#169809 - No textChanged signal is emitted when text is placed to MRichTextEdit by MCompleter
+ * Fixes: NB#161205 - optionalImage is visible even in modes where it should not be
+ * Fixes: MB#169672 - MLabel is not showing the whole text when Qt::escape() some plain text *without* any tag inside
+ * Fixes: NB#170120 - MStyleSheetParser doesn't parse comments properly
+ * Fixes: NB#166269 - fix MContentItem::smallItem
+ * Fixes: NB#162781 - DUI chaining support should provide an option to not terminate the process when closing the child window
+ * Fixes: NB#169749 - QtMaemo6Style crashes when text edit is focused and VKB is shown
+ * Fixes: NB#156115 - CodeStyle> typo in doxygen documentation
+ * Fixes: NB#169377 - System modal dialog" in Widgetsgallery is not a system-modal dialog
+ * Fixes: NB#157742 - Fix MContentItem docs
+ * Fixes: NB#158375 - DuiContentItem api-doc fixes
+ * Fixes: NB#164207 - long press in MLabel
+ * Fixes: NB#167960 - Application is opened in landscape view when device is in portrait mode
+
+ -- Jorgen Scheibengruber <jorgen.scheibengruber@nokia.com> Tue, 25 May 2010 13:38:45 +0300
+
+libmeegotouch (0.20.11-1) unstable; urgency=low
+
+ * Fixes: NB#168737 - "Fast application startup" a.k.a applauncherd does not load application.conf files
+ * Fixes: NB#165035 - m-servicefwgen generates adaptor files that say that qdbusxml2cpp generated them.
+ * Fixes: NB#164028 - DuiTextEdit does not move up after reverse rotation (clockwise)
+ * Fixes: NB#163243 - DuiTextEdit in Multi Line mode is not working properly
+ * Fixes: NB#168463 - Close button is not behaving properly after we press any other button on dialog
+ * Fixes: NB#165862 - MInfoBanner should have default disappear timeout
+ * Fixes: NB#168069 - Object menu is still showing after tapping on an item in object menu.
+ * Fixes: NB#165845 - (Video_full_screen) MVideoWidget: While in full screen the scale mode and aspect ratio do not work.
+ * Fixes: NB#156286 - duimoc doesn't work for some header files.
+
+ -- Tomas Junnonen <tomas.junnonen@nokia.com> Wed, 19 May 2010 14:15:00 +0300
+
+libmeegotouch (0.20.10-1) unstable; urgency=low
+
+ * Fixes: NB#167472 - MLocale formats time "00:15" as "24:15". 24 is returned instead of 00 for "%H" format string.
+ * Fixes: NB#168123 - Panning in MPannableWidget is canceled due QTapAndHoldGesture
+ * Fixes: NB#160130 - Slider label is shown on another page if page changed during animation
+ * Fixes: NB#168135 - Scrolling or Panning is not working for any office-tools documents.
+
+ -- Jorgen Scheibengruber <jorgen.scheibengruber@nokia.com> Wed, 12 May 2010 10:18:31 +0300
+
+libmeegotouch (0.20.9-1) unstable; urgency=low
+
+ * Fixes: NB#167827 - List view shows redundant header list on right side of the screen.
+ * Fixes: NB#167784 - cellSize method in MAbstractCellCreator is not called when rotating device.
+ * Fixes: NB#164283 - DuiCalendar (and therefore DuiLocale) does not support QDateTimes before start of epoch
+ * Implemented: SWP#-DUI-2775
+
+ -- Jorgen Scheibengruber <jorgen.scheibengruber@nokia.com> Mon, 10 May 2010 18:00:01 +0300
+
+libmeegotouch (0.20.8-1) unstable; urgency=low
- * [UNRELEASED]
+ * Fixes: NB#167131 - MTextEdit fails to emit textChanged()...
+ * Fixes: NB#166890 - Alarm Notification window doesnt comes up in non-idle mode.
+
+ -- Jorgen Scheibengruber <jorgen.scheibengruber@nokia.com> Fri, 07 May 2010 15:28:09 +0300
+
+libmeegotouch (0.20.7-1) unstable; urgency=low
+
+ * Fixes: NB#161404 - Service framework call causes caller to crash if caller doesn't have applicationwindow
+ * Fixes: NB#135578 - Very long strings are not completely displayed.
+ * Fixes: NB#166710 - widgetsgallery exits in crash
+ * Fixes: NB#164551 - pannable area spring can be stopped
+ * Fixes: NB#167018 - MSlider 'Mover' element has no unique object name
- -- Daniel d'Andrada <daniel.dandrada@nokia.com> Thu, 06 May 2010 11:02:36 +0300
+ -- Jorgen Scheibengruber <jorgen.scheibengruber@nokia.com> Thu, 06 May 2010 19:38:42 +0300
libmeegotouch (0.20.6-1) unstable; urgency=low
diff --git a/debian/control b/debian/control
index f5ce1abd..5a7a2c67 100644
--- a/debian/control
+++ b/debian/control
@@ -7,34 +7,56 @@ Standards-Version: 3.7.2
Package: libmeegotouchcore0
Architecture: any
-Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}, libmeegotouch-bin (= ${Source-Version}), libmeegotouch-l10n-engineering-english (= ${Source-Version}), dbus-x11, meegotouchtheme (>= 0.20.0~)
+Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}, libmeegotouch-bin (= ${Source-Version}), libmeegotouch-l10n-engineering-english (= ${Source-Version}), dbus-x11, meegotouchtheme (>= 0.20.8)
Suggests: libmeegotouch-l10n-ar, libmeegotouch-l10n-de, libmeegotouch-l10n-en, libmeegotouch-l10n-fi, libmeegotouch-l10n-hu, libmeegotouch-l10n-ur, libmeegotouch-l10n-zh-cn
Description: MeeGo Touch core library
MeeGo Touch core framework library
+Package: libmeegotouchcore0-dbg
+Architecture: any
+Section: devel
+Depends: libmeegotouchcore0 (= ${Source-Version})
+Description: libmeegotouch debug package
+ libmeegotouch debug symbols.
+
Package: libmeegotouchextensions0
Architecture: any
Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}
Description: MeeGo Touch extensions library
MeeGo Touch extensions framework library
+Package: libmeegotouchextensions0-dbg
+Architecture: any
+Section: devel
+Depends: libmeegotouchextensions0 (= ${Source-Version})
+Description: libmeegotouch debug package
+ libmeegotouch debug symbols.
+
Package: libmeegotouchsettings0
Architecture: any
Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}
Description: MeeGo Touch settings library
MeeGo Touch settings framework library
+Package: libmeegotouchsettings0-dbg
+Architecture: any
+Section: devel
+Depends: libmeegotouchsettings0 (= ${Source-Version})
+Description: libmeegotouch debug package
+ libmeegotouch debug symbols.
+
Package: libmeegotouchviews0
Architecture: any
Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}
Description: MeeGo Touch views library
MeeGo Touch views framework library
-Package: meegotouch-qt-style
+Package: libmeegotouchviews0-dbg
Architecture: any
-Depends: ${misc:Depends}, ${shlibs:Depends}
-Description: MeeGo Touch Qt style for plain Qt applications
- MeeGo Touch Qt style plugin
+Section: devel
+Depends: libmeegotouchviews0 (= ${Source-Version})
+Description: libmeegotouch debug package
+ libmeegotouch debug symbols.
Package: libmeegotouch-bin
Architecture: any
@@ -42,6 +64,13 @@ Depends: ${misc:Depends}, ${launcher:Depends}, ${shlibs:Depends}
Description: MeeGo Touch binary files
Binary files of MeeGo Touch framework
+Package: libmeegotouch-bin-dbg
+Architecture: any
+Section: devel
+Depends: libmeegotouch-bin (= ${Source-Version})
+Description: libmeegotouch debug package
+ libmeegotouch debug symbols.
+
Package: libmeegotouch-dev
Section: devel
Architecture: any
@@ -55,9 +84,16 @@ Architecture: any
Depends: ${shlibs:Depends}
Suggests: perl (>= 5.10.0)
Description: MeeGo Touch specific development and testing tools
- Collection of tools for testing and developing on top of MeeGo Touch. Includes
+ Collection of tools for testing and developing on top of MeeGo Touch. Includes
stuff like applettester and code/mock generation.
+Package: meegotouch-dev-tools-dbg
+Architecture: any
+Section: devel
+Depends: meegotouch-dev-tools (= ${Source-Version})
+Description: meegotouch-dev-tools debug package
+ meegotouch-dev-tools debug symbols.
+
Package: meegotouch-demos
Section: devel
Architecture: any
@@ -74,12 +110,6 @@ Conflicts: dui-demos-widgetsgallery
Replaces: dui-demos-widgetsgallery
Description: Demo application for MeeGo Touch
-Package: meegotouch-demos-widgetsgallery-tests
-Section: devel
-Architecture: any
-Depends: ${shlibs:Depends}, duitestrunner, meegotouch-demos-widgetsgallery (= ${Source-Version})
-Description: Demo application for MeeGo Touch
-
Package: meegotouch-demos-widgetsgallery-dbg
Section: devel
Architecture: any
@@ -89,53 +119,11 @@ Replaces: dui-demos-widgetsgallery-dbg
Description: Demo application for MeeGo Touch
This package contains debug symbols.
-Package: meegotouch-demos-widgetsgallery-l10n-engineering-english
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Engineering English translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-ar
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Arabic translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-de
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: German translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-en
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: English translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-fi
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Finnish translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-hu
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Hungarian translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-ur
-Section: devel
-Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Urdu translations for widgetsgallery
-
-Package: meegotouch-demos-widgetsgallery-l10n-zh-cn
+Package: meegotouch-demos-widgetsgallery-tests
Section: devel
Architecture: any
-Enhances: meegotouch-demos-widgetsgallery
-Description: Simplified Chinese translations for widgetsgallery
+Depends: ${shlibs:Depends}, duitestrunner, meegotouch-demos-widgetsgallery (= ${Source-Version})
+Description: Demo application for MeeGo Touch
Package: meegotouch-demos-plainqt
Section: devel
@@ -184,6 +172,13 @@ Depends: ${shlibs:Depends}, testrunner, locales
Description: libmeegotouch unit tests
Unit testing binaries and shellscripts for testing libmeegotouch library
+Package: libmeegotouch-tests-dbg
+Architecture: any
+Section: devel
+Depends: libmeegotouch-tests (= ${Source-Version})
+Description: libmeegotouch-tests debug package
+ libmeegotouch-tests debug symbols.
+
Package: libmeegotouch-benchmarks
Section: extra
Architecture: any
@@ -191,40 +186,25 @@ Depends: ${shlibs:Depends}, meegotouch-demos-widgetsgallery
Description: libmeegotouch benchmarks
Benchmarking binaries for testing libmeegotouch library
-Package: libmeegotouchcore0-dbg
-Architecture: any
-Section: devel
-Depends: libmeegotouchcore0 (= ${Source-Version})
-Description: libmeegotouch debug package
- libmeegotouch debug symbols.
-
-Package: libmeegotouchviews0-dbg
-Architecture: any
-Section: devel
-Depends: libmeegotouchviews0 (= ${Source-Version})
-Description: libmeegotouch debug package
- libmeegotouch debug symbols.
-
-Package: libmeegotouchextensions0-dbg
+Package: libmeegotouch-benchmarks-dbg
Architecture: any
Section: devel
-Depends: libmeegotouchextensions0 (= ${Source-Version})
-Description: libmeegotouch debug package
- libmeegotouch debug symbols.
+Depends: libmeegotouch-benchmarks (= ${Source-Version})
+Description: libmeegotouch-benchmarks debug package
+ libmeegotouch-benchmarks debug symbols.
-Package: libmeegotouchsettings0-dbg
+Package: meegotouch-qt-style
Architecture: any
-Section: devel
-Depends: libmeegotouchsettings0 (= ${Source-Version})
-Description: libmeegotouch debug package
- libmeegotouch debug symbols.
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: MeeGo Touch Qt style for plain Qt applications
+ MeeGo Touch Qt style plugin
-Package: libmeegotouch-bin-dbg
+Package: meegotouch-qt-style-dbg
Architecture: any
Section: devel
-Depends: libmeegotouch-bin (= ${Source-Version})
-Description: libmeegotouch debug package
- libmeegotouch debug symbols.
+Depends: meegotouch-qt-style (= ${Source-Version})
+Description: meegotouch-qt-style debug package
+ meegotouch-qt-style debug symbols.
Package: libmeegotouch-doc
Section: doc
@@ -278,3 +258,51 @@ Section: devel
Architecture: any
Enhances: libmeegotouchcore0
Description: Simplified Chinese translations for libmeegotouch
+
+Package: meegotouch-demos-widgetsgallery-l10n-engineering-english
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Engineering English translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-ar
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Arabic translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-de
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: German translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-en
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: English translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-fi
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Finnish translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-hu
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Hungarian translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-ur
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Urdu translations for widgetsgallery
+
+Package: meegotouch-demos-widgetsgallery-l10n-zh-cn
+Section: devel
+Architecture: any
+Enhances: meegotouch-demos-widgetsgallery
+Description: Simplified Chinese translations for widgetsgallery
diff --git a/debian/libmeegotouch-bin.install b/debian/libmeegotouch-bin.install
index 87ea08cf..a167e33c 100644
--- a/debian/libmeegotouch-bin.install
+++ b/debian/libmeegotouch-bin.install
@@ -2,6 +2,7 @@ usr/bin/mthemedaemon
usr/bin/mservicemapper
usr/share/dbus-1/services/com.nokia.mservicefw.service
usr/share/meegotouch/shaders/*
+usr/share/meegotouch/imtoolbars/RichTextEditorToolbar1.xml
usr/lib/meegotouch/applets/mappletrunner
etc/meegotouch/devices.conf
etc/gconf/schemas/meegotouch.schemas
diff --git a/debian/rules b/debian/rules
index 07abc69e..31600b1a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -39,7 +39,7 @@ ifneq (,$(filter timestamps,$(TMP_BUILD_OPTS)))
endif
# Disable building of tests by setting DEB_BUILD_OPTION=notests,...
-ifneq (,$(filter nocheck,$(TMP_BUILD_OPTS)))
+ifneq (,$(filter notests,$(TMP_BUILD_OPTS)))
OPTIONS += -nomake tests
endif
@@ -59,9 +59,9 @@ ifeq (,$(findstring notestability,$(DEB_BUILD_OPTIONS)))
OPTIONS += -testable
endif
-#add plainqt
-ifneq (,$(findstring plainqt,$(DEB_BUILD_OPTIONS)))
- OPTIONS += -plainqt
+#disable plain qt by setting DEB_BUILD_OPTION=noplainqt,...
+ifneq (,$(findstring noplainqt,$(DEB_BUILD_OPTIONS)))
+ OPTIONS += -no-plainqt
endif
# Perform a minimal build by setting DEB_BUILD_OPTION=minimal,...
@@ -89,7 +89,7 @@ configure-stamp:
touch configure-stamp
build: build-stamp
-build-stamp: configure-stamp
+build-stamp: configure-stamp
dh_testdir
cd $(BUILD_DIR) && make $(PARALLEL_MAKEFLAGS)
@@ -104,7 +104,7 @@ clean:
rm -rf $(BUILD_DIR)
- dh_clean
+ dh_clean
install: build
dh_testdir
@@ -133,19 +133,25 @@ binary-indep: build install
binary-arch: build install
dh_testdir
dh_testroot
- dh_installchangelogs
+ dh_installchangelogs
dh_installdocs
dh_install --sourcedir=debian/tmp -v
# print warnings for not installed files
dh_install --sourcedir=debian/tmp/ --list-missing
dh_link
dh_strip -p libmeegotouchcore0 --dbg-package=libmeegotouchcore0
- dh_strip -p libmeegotouchviews0 --dbg-package=libmeegotouchviews0
- dh_strip -p libmeegotouchsettings0 --dbg-package=libmeegotouchsettings0
dh_strip -p libmeegotouchextensions0 --dbg-package=libmeegotouchextensions0
- dh_strip -p meegotouch-demos-widgetsgallery --dbg-package=meegotouch-demos-widgetsgallery-dbg
- dh_strip -p meegotouch-demos-plainqt --dbg-package=meegotouch-demos-plainqt-dbg
- dh_strip -p libmeegotouch-tests
+ dh_strip -p libmeegotouchsettings0 --dbg-package=libmeegotouchsettings0
+ dh_strip -p libmeegotouchviews0 --dbg-package=libmeegotouchviews0
+ dh_strip -p libmeegotouch-bin --dbg-package=libmeegotouch-bin
+ dh_strip -p meegotouch-dev-tools --dbg-package=meegotouch-dev-tools
+ dh_strip -p meegotouch-demos-widgetsgallery --dbg-package=meegotouch-demos-widgetsgallery
+ dh_strip -p meegotouch-demos-plainqt --dbg-package=meegotouch-demos-plainqt
+ dh_strip -p meegotouch-demos-appletinstallationsource --dbg-package=meegotouch-demos-appletinstallationsource
+ dh_strip -p meegotouch-demos-applicationextension --dbg-package=meegotouch-demos-applicationextension
+ dh_strip -p libmeegotouch-tests --dbg-package=libmeegotouch-tests
+ dh_strip -p libmeegotouch-benchmarks --dbg-package=libmeegotouch-benchmarks
+ dh_strip -p meegotouch-qt-style --dbg-package=meegotouch-qt-style
dh_compress
dh_fixperms
dh_makeshlibs
diff --git a/demos/animatedlayout/animatedlayout.pro b/demos/animatedlayout/animatedlayout.pro
index 82107d03..58adafe5 100644
--- a/demos/animatedlayout/animatedlayout.pro
+++ b/demos/animatedlayout/animatedlayout.pro
@@ -13,13 +13,9 @@ INCLUDEPATH += \
QMAKE_LIBDIR += \
$$MLIB
-win32|macx {
- macx {
- QMAKE_LFLAGS += -F../../lib
- LIBS += -framework meegotouchcore \
- -framework meegotouchviews
- }
- win32:LIBS += -lmeegotouch0
+macx {
+ QMAKE_LFLAGS += -F../../lib
+ LIBS += -framework meegotouchcore
} else {
LIBS += -lmeegotouchcore
}
diff --git a/demos/applicationextension/demoextension/demoextension.cpp b/demos/applicationextension/demoextension/demoextension.cpp
index 1476d54f..0dcf1c9c 100644
--- a/demos/applicationextension/demoextension/demoextension.cpp
+++ b/demos/applicationextension/demoextension/demoextension.cpp
@@ -52,7 +52,7 @@ bool DemoApplicationExtension::initialize(const QString &)
return true;
}
-MWidget *DemoApplicationExtension::widget()
+QGraphicsWidget *DemoApplicationExtension::widget()
{
return slider;
}
diff --git a/demos/applicationextension/demoextension/demoextension.h b/demos/applicationextension/demoextension/demoextension.h
index a4784ba0..db1cb198 100644
--- a/demos/applicationextension/demoextension/demoextension.h
+++ b/demos/applicationextension/demoextension/demoextension.h
@@ -43,7 +43,7 @@ public:
//! methods derived from MApplicationExtensionInterface
virtual bool initialize(const QString &interface);
- virtual MWidget *widget();
+ virtual QGraphicsWidget *widget();
private slots:
void informSliderValueToApplication(int value);
diff --git a/demos/applicationextension/main.cpp b/demos/applicationextension/main.cpp
index 6f4570f5..ec5f79ab 100644
--- a/demos/applicationextension/main.cpp
+++ b/demos/applicationextension/main.cpp
@@ -47,6 +47,8 @@ void DemoPage::createContent()
MApplicationExtensionArea *area =
new MApplicationExtensionArea("com.meego.core.DemoApplicationExtensionInterface/1.0");
+ area->setInProcessFilter(QRegExp("/applicationextensiondemo-demoextension2?\\.desktop$"));
+ area->init();
vbox->addItem(area);
connect(area, SIGNAL(extensionInstantiated(MApplicationExtensionInterface*)),
diff --git a/demos/demos.pro b/demos/demos.pro
index e1cb827c..efb0a6ef 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -12,16 +12,19 @@ SUBDIRS = \
animatedlayout/translations \
qtstyleexample \
qtstyledialogs \
- qtstylekinetic \
- appletinstallationsource \
- applicationextension \
- applicationextension/demoextension \
- applicationextension/demoextension2
+ qtstylekinetic
}
# we do not have compiled QtDBusd4
-macx:SUBDIRS -= appletinstallationsource applicationextension applicationextension/demoextension applicationextension/demoextension2
-win32:SUBDIRS -= appletinstallationsource applicationextension applicationextension/demoextension applicationextension/demoextension2
+!macx:!win32 {
+ contains(DEFINES, HAVE_DBUS) {
+ SUBDIRS += \
+ appletinstallationsource \
+ applicationextension \
+ applicationextension/demoextension \
+ applicationextension/demoextension2
+ }
+}
QMAKE_EXTRA_TARGETS += check
check.commands = $$system(true)
diff --git a/demos/qtstyleexample/main.cpp b/demos/qtstyleexample/main.cpp
index b3f7c393..7a967b90 100644
--- a/demos/qtstyleexample/main.cpp
+++ b/demos/qtstyleexample/main.cpp
@@ -25,6 +25,9 @@
int main(int argc, char **argv)
{
QApplication app(argc, argv);
+// app.setProperty( "NoMStyle", true );
+// app.setProperty( "NoMNavigationBar", true );
+
MainWindow mw;
mw.show();
diff --git a/demos/widgetsgallery/analyze_results/analyze_results.py b/demos/widgetsgallery/analyze_results/analyze_results.py
index 4c0692c3..01bcddbf 100644
--- a/demos/widgetsgallery/analyze_results/analyze_results.py
+++ b/demos/widgetsgallery/analyze_results/analyze_results.py
@@ -2,8 +2,14 @@
import benchmark_results
from optparse import OptionParser
+import sys
+
+try:
+ import pylab
+ pylab_available = True
+except ImportError:
+ pylab_available = False
-import pylab
def main() :
options = parse_commandline_arguments()
@@ -15,6 +21,9 @@ def main() :
textual_output()
if options.graphical :
+ if not pylab_available :
+ print "Pylab is not installed. Plotting is disabled."
+ sys.exit(-1)
generate_plots()
@@ -73,7 +82,7 @@ def textual_output() :
# mean fps
print '| {0:>{1}.1f}fps'.format(result.fps_mean(), fps_width),
# min fps
- print '{0:>{1}.1f}fps'.format(result.fps_mean(), fps_width),
+ print '{0:>{1}.1f}fps'.format(result.fps_min(), fps_width),
# runtime
print '{0:>{1}}ms'.format(result.runtime(), runtime_width),
# std dev
diff --git a/demos/widgetsgallery/analyze_results/benchmark_results.py b/demos/widgetsgallery/analyze_results/benchmark_results.py
index 86f32286..80bde093 100644
--- a/demos/widgetsgallery/analyze_results/benchmark_results.py
+++ b/demos/widgetsgallery/analyze_results/benchmark_results.py
@@ -1,9 +1,13 @@
# -*- coding: utf-8 -*-
import xml.dom.minidom
-import pylab
import numpy
+try:
+ import pylab
+except ImportError:
+ pass
+
class benchmark_result :
def __init__(self, page, benchmark, timestamps) :
self.page = page
diff --git a/demos/widgetsgallery/dialogsandnotificationspage.cpp b/demos/widgetsgallery/dialogsandnotificationspage.cpp
index f45431fa..c19f9812 100644
--- a/demos/widgetsgallery/dialogsandnotificationspage.cpp
+++ b/demos/widgetsgallery/dialogsandnotificationspage.cpp
@@ -280,7 +280,6 @@ void DialogsAndNotificationsPage::showEventBanner()
infoBanner->setIconID("Icon-new-SMS");
connect(infoBanner, SIGNAL(clicked()), this, SLOT(openMessageBox()));
infoBanner->appear(MSceneWindow::DestroyWhenDone);
- QTimer::singleShot(3000, infoBanner, SLOT(disappear()));
}
void DialogsAndNotificationsPage::showInformationBanner()
@@ -291,7 +290,6 @@ void DialogsAndNotificationsPage::showInformationBanner()
//% "<b>Battery is running low</b>"
qtTrId("xx_dialogs_and_notifications_information_banner"));
infoBanner->appear(MSceneWindow::DestroyWhenDone);
- QTimer::singleShot(3000, infoBanner, SLOT(disappear()));
}
void DialogsAndNotificationsPage::showSystemInformationBanner()
@@ -305,7 +303,6 @@ void DialogsAndNotificationsPage::showSystemInformationBanner()
infoBanner->setButtonText(qtTrId("xx_dialogs_and_notifications_system_information_banner_accept"));
connect(infoBanner, SIGNAL(buttonClicked()), this, SLOT(openMessageBox()));
infoBanner->appear(MSceneWindow::DestroyWhenDone);
- QTimer::singleShot(3000, infoBanner, SLOT(disappear()));
}
diff --git a/demos/widgetsgallery/gridmodel.cpp b/demos/widgetsgallery/gridmodel.cpp
index 99ba04f2..211273ce 100644
--- a/demos/widgetsgallery/gridmodel.cpp
+++ b/demos/widgetsgallery/gridmodel.cpp
@@ -90,12 +90,16 @@ void GridModel::createItems()
MediaType m;
if( videoTypes.contains( file.suffix() )) {
+#ifdef HAVE_GSTREAMER
if( file.fileName().startsWith("thumb-") ) {
m.path = path;
m.type = MediaType::Video;
} else {
continue;
}
+#else
+ continue;
+#endif
} else {
m.type = MediaType::Image;
m.path = path;
diff --git a/demos/widgetsgallery/gridvideowidget.cpp b/demos/widgetsgallery/gridvideowidget.cpp
index b145c3e7..f9c71a04 100644
--- a/demos/widgetsgallery/gridvideowidget.cpp
+++ b/demos/widgetsgallery/gridvideowidget.cpp
@@ -21,6 +21,8 @@
#include "gridvideowidget.h"
+#ifdef HAVE_GSTREAMER
+
GridVideoWidget::GridVideoWidget(QGraphicsItem *parent)
: MVideoWidget(parent)
{
@@ -53,3 +55,5 @@ void GridVideoWidget::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
MVideoWidget::contextMenuEvent(event);
emit longPressed();
}
+
+#endif
diff --git a/demos/widgetsgallery/gridvideowidget.h b/demos/widgetsgallery/gridvideowidget.h
index 12e71699..4da94a15 100644
--- a/demos/widgetsgallery/gridvideowidget.h
+++ b/demos/widgetsgallery/gridvideowidget.h
@@ -20,6 +20,8 @@
#ifndef DUIGRIDVIDEOWIDGET_H
#define DUIGRIDVIDEOWIDGET_H
+#ifdef HAVE_GSTREAMER
+
#include <MVideoWidget>
class QGraphicsSceneContextMenuEvent;
@@ -50,3 +52,4 @@ class GridVideoWidget : public MVideoWidget
};
#endif
+#endif
diff --git a/demos/widgetsgallery/itemdetailpage.cpp b/demos/widgetsgallery/itemdetailpage.cpp
index 1f8d751b..568be012 100644
--- a/demos/widgetsgallery/itemdetailpage.cpp
+++ b/demos/widgetsgallery/itemdetailpage.cpp
@@ -22,30 +22,102 @@
#include "gridmodel.h"
#include <QGraphicsLinearLayout>
+#include <QGraphicsSceneMouseEvent>
#include <QFileInfo>
#include <QTimer>
+#include <QPropertyAnimation>
+#include <QParallelAnimationGroup>
#include <MImageWidget>
#include <MLabel>
+#ifdef HAVE_GSTREAMER
#include <MVideoWidget>
+#endif
#include <MButton>
#include <MSlider>
#include <MLinearLayoutPolicy>
+#include <MGridLayoutPolicy>
#include <MLayout>
+#include <MDebug>
-ItemDetailPage::ItemDetailPage()
- : video(0),
+const int ANIMATION_TIME = 1000;
+const int INACTIVITY_TIMEOUT = 5000;
+
+#ifdef HAVE_GSTREAMER
+
+MyVideoWidget::MyVideoWidget(QGraphicsItem *parent)
+ : MVideoWidget(parent)
+{
+}
+
+void MyVideoWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+ MVideoWidget::mousePressEvent(event);
+ event->accept();
+}
+
+void MyVideoWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+ MVideoWidget::mouseReleaseEvent(event);
+ emit clicked();
+}
+
+MyVideoOverlayToolbar::MyVideoOverlayToolbar(QGraphicsItem *parent)
+ : MWidgetController(parent)
+{
+ MLayout *layout = new MLayout(this);
+
+ landscapePolicy = new MGridLayoutPolicy(layout);
+ landscapePolicy->setContentsMargins(0, 0, 0, 0);
+ landscapePolicy->setSpacing(0);
+
+ portraitPolicy = new MGridLayoutPolicy(layout);
+ portraitPolicy->setContentsMargins(0, 0, 0, 0);
+ portraitPolicy->setSpacing(0);
+
+ layout->setLandscapePolicy(landscapePolicy);
+ layout->setPortraitPolicy(portraitPolicy);
+}
+
+MyVideoOverlayToolbar::~MyVideoOverlayToolbar()
+{
+}
+
+void MyVideoOverlayToolbar::addItem(QGraphicsLayoutItem* button)
+{
+ int count = landscapePolicy->count();
+
+ int row = count / 3;
+ int column = count % 3;
+
+ landscapePolicy->addItem(button, row, column);
+ portraitPolicy->addItem(button, row, column);
+}
+
+#endif
+
+ItemDetailPage::ItemDetailPage() :
+#ifdef HAVE_GSTREAMER
+ video(0),
+#endif
slider(0),
- image(0)
+ image(0),
+ hideAnimation(0),
+ showAnimation(0)
{
setObjectName("itemDetailPage");
}
ItemDetailPage::~ItemDetailPage()
{
+#ifdef HAVE_GSTREAMER
delete video;
+#endif
delete slider;
delete image;
+
+ delete hideAnimation;
+ delete showAnimation;
}
QString ItemDetailPage::timedemoTitle()
@@ -56,50 +128,128 @@ QString ItemDetailPage::timedemoTitle()
void ItemDetailPage::createContent()
{
+ mWarning("ItemDetailPage::createContent()");
+
+ inactivityTimer.setInterval(INACTIVITY_TIMEOUT);
+ connect(&inactivityTimer, SIGNAL(timeout()),
+ this, SLOT(hideOverlay()),
+ Qt::UniqueConnection);
+
QGraphicsWidget *panel = centralWidget();
layout = new MLayout(panel);
+#ifdef HAVE_GSTREAMER
if( !videoId.isEmpty() ) {
- policy = new MLinearLayoutPolicy(layout, Qt::Vertical);
- policy->setSpacing(0.0);
- layout->setLandscapePolicy(policy);
- layout->setPortraitPolicy(policy);
+ QFileInfo info(videoId);
+ setTitle(info.fileName());
- video = new GridVideoWidget(panel);
+ setObjectName("video-detail-page");
+ video = new MyVideoWidget(panel);
connect(video, SIGNAL(videoReady()), this, SLOT(videoReady()));
- video->open(videoId);
-
- policy->addItem(video);
- QGraphicsLinearLayout* controlLayout = new QGraphicsLinearLayout(Qt::Horizontal);
- controlLayout->setContentsMargins(0,0,0,0);
+//set video to fullscreen mode immediately only on device where the
+//Xv rendering with color-key is supported for sure, to avoid flickering
+//on desktop machines that does not support color-keying.
+#ifdef __arm__
+ video->setFullscreen(true);
+#endif
+ video->open(videoId);
+ video->setAspectRatioMode(MVideoWidgetModel::AspectRatioScaled);
+ connect(video, SIGNAL(clicked()), this, SLOT(buttonClicked()));
button = new MButton(panel);
+ button->setViewType(MButton::iconType);
button->setObjectName("video-player-button");
- button->setIconID("icon-m-common-pause");
- button->setIconVisible(true);
- button->setTextVisible(false);
-
+ button->setIconID("icon-m-toolbar-mediacontrol-pause");
connect(button, SIGNAL(clicked(bool)), this, SLOT(buttonClicked()));
- controlLayout->addItem(button);
- controlLayout->setAlignment(button, Qt::AlignCenter);
-
+
+ MButton* bPrev = new MButton(panel);
+ bPrev->setViewType(MButton::iconType);
+ bPrev->setObjectName("video-player-button");
+ bPrev->setIconID("icon-m-toolbar-mediacontrol-previous");
+ connect(bPrev, SIGNAL(clicked(bool)), this, SLOT(buttonClicked()));
+
+ MButton* bNext = new MButton(panel);
+ bNext->setViewType(MButton::iconType);
+ bNext->setObjectName("video-player-button");
+ bNext->setIconID("icon-m-toolbar-mediacontrol-next");
+ connect(bNext, SIGNAL(clicked(bool)), this, SLOT(buttonClicked()));
+
slider = new MSlider(panel);
slider->setObjectName("video-player-slider");
-
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(videoSliderValueChanged(int)));
connect(slider, SIGNAL(sliderPressed()), this, SLOT(sliderPressed()));
connect(slider, SIGNAL(sliderReleased()), this, SLOT(sliderReleased()));
-
- controlLayout->addItem(slider);
- policy->addItem(controlLayout);
-
- setTitle(QFileInfo(videoId).fileName());
-
- // go fullscreen
- setComponentsDisplayMode(MApplicationPage::AllComponents,
- MApplicationPageModel::AutoHide);
+ slider->setMinLabelVisible(true);
+ slider->setMaxLabelVisible(true);
+
+ cContainer = new MyVideoOverlayToolbar(panel);
+ cContainer->addItem(bPrev);
+ cContainer->addItem(button);
+ cContainer->addItem(bNext);
+ cContainer->setObjectName("center-overlay-container");
+ cContainer->setViewType("background");
+ cContainer->setGeometry(QRect(0,0,100,100));
+
+ bContainer = new MyVideoOverlayToolbar(panel);
+ bContainer->addItem(slider);
+ bContainer->setObjectName("bottom-overlay-container");
+ bContainer->setViewType("background");
+ bContainer->setGeometry(QRect(0,0,100,100));
+
+ MLabel* label = new MLabel(panel);
+ label->setObjectName("video-title-label");
+ label->setText(info.fileName());
+ label->setAlignment(Qt::AlignCenter);
+
+ tContainer = new MyVideoOverlayToolbar(panel);
+ tContainer->addItem(label);
+ tContainer->setObjectName("top-overlay-container");
+ tContainer->setViewType("background");
+ tContainer->setGeometry(QRect(0,0,label->preferredWidth(),0));
+
+ cContainer->setOpacity(0.0);
+ tContainer->setOpacity(0.0);
+ bContainer->setOpacity(0.0);
+
+ hideAnimation = new QParallelAnimationGroup();
+ showAnimation = new QParallelAnimationGroup();
+
+ QPropertyAnimation* animation = new QPropertyAnimation(cContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(0.0);
+ hideAnimation->addAnimation(animation);
+
+ animation = new QPropertyAnimation(tContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(0.0);
+ hideAnimation->addAnimation(animation);
+
+ animation = new QPropertyAnimation(bContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(0.0);
+ hideAnimation->addAnimation(animation);
+
+ animation = new QPropertyAnimation(cContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(1.0);
+ showAnimation->addAnimation(animation);
+
+ animation = new QPropertyAnimation(tContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(1.0);
+ showAnimation->addAnimation(animation);
+
+ animation = new QPropertyAnimation(bContainer, "opacity");
+ animation->setDuration(ANIMATION_TIME);
+ animation->setEndValue(1.0);
+ showAnimation->addAnimation(animation);
+
+ relayout();
} else if( !imageId.isEmpty() ) {
+#else
+ if( !imageId.isEmpty() ) {
+#endif
policy = new MLinearLayoutPolicy(layout, Qt::Horizontal);
policy->setSpacing(0.0);
layout->setLandscapePolicy(policy);
@@ -159,10 +309,59 @@ void ItemDetailPage::retranslateUi()
{
}
+void ItemDetailPage::resizeEvent(QGraphicsSceneResizeEvent *event)
+{
+ MApplicationPage::resizeEvent(event);
+ relayout();
+}
+
+void ItemDetailPage::relayout()
+{
+#ifdef HAVE_GSTREAMER
+ if( video ) {
+ const QSizeF& s = size();
+ QPoint cPos = QPoint(((s.width() / 2) - (cContainer->size().width()/2)),
+ ((s.height() / 2) - (cContainer->size().height()/2)));
+ QPoint bPos = QPoint(((s.width() / 2) - (bContainer->size().width()/2)),
+ (s.height() - bContainer->size().height()));
+ QPoint tPos = QPoint(((s.width() / 2) - (tContainer->size().width()/2)),
+ 0);
+
+ cContainer->setPos(cPos);
+ bContainer->setPos(bPos);
+ tContainer->setPos(tPos);
+
+ video->setGeometry(QRectF(0,0,s.width(), s.height()));
+ }
+#endif
+}
+
+void ItemDetailPage::showOverlay()
+{
+ hideAnimation->stop();
+ showAnimation->start();
+ inactivityTimer.start();
+
+ setComponentsDisplayMode(MApplicationPage::HomeButton | MApplicationPage::EscapeButton, MApplicationPageModel::Show);
+}
+
+void ItemDetailPage::hideOverlay()
+{
+ if( slider->state() == MSliderModel::Pressed ) {
+ inactivityTimer.start();
+ }
+ else {
+ showAnimation->stop();
+ hideAnimation->start();
+ inactivityTimer.stop();
+ setComponentsDisplayMode(MApplicationPage::HomeButton | MApplicationPage::EscapeButton, MApplicationPageModel::Hide);
+ }
+}
+
void ItemDetailPage::videoReady()
{
+#ifdef HAVE_GSTREAMER
video->play();
- video->setFullscreen(true);
video->setMuted(false);
video->setVolume(0.8);
@@ -170,49 +369,77 @@ void ItemDetailPage::videoReady()
slider->setMaximum(video->length());
QTimer::singleShot(100, this, SLOT(updatePosition()));
+ int minutes = (video->length() / 1000) / 60;
+ int seconds = (video->length() / 1000) % 60;
+ slider->setMinLabel("0:00");
+ slider->setMaxLabel(QString("%1:%2").arg(minutes).arg(seconds, 2, 10, QChar('0')));
+
+ setPannable(false);
+ setAutoMarginsForComponentsEnabled(false);
+ setComponentsDisplayMode(MApplicationPage::NavigationBar, MApplicationPageModel::Hide);
+
+ showOverlay();
+
setAutoMarginsForComponentsEnabled(false);
setComponentsDisplayMode(MApplicationPage::NavigationBar/*MApplicationPage::AllComponents*/, MApplicationPageModel::Hide);
+#endif
}
void ItemDetailPage::sliderPressed()
{
- //if( video )
- // video->pause();
+ inactivityTimer.start();
}
void ItemDetailPage::sliderReleased()
{
- //if( video )
- // video->play();
+ inactivityTimer.start();
}
void ItemDetailPage::videoSliderValueChanged(int newValue)
{
+#ifdef HAVE_GSTREAMER
if( video ) {
video->seek(newValue);
}
+#else
+ Q_UNUSED(newValue)
+#endif
}
void ItemDetailPage::buttonClicked()
{
- if( video->state() == MVideo::Playing ) {
- video->pause();
- button->setIconID("icon-m-common-play");
- //button->setText("PLAY");
- } else {
- video->play();
- button->setIconID("icon-m-common-pause");
- //button->setText("PAUSE");
- }
+#ifdef HAVE_GSTREAMER
+ if( cContainer->opacity() == 1 )
+ inactivityTimer.start();
+ else
+ showOverlay();
+
+ MyVideoWidget* v = qobject_cast<MyVideoWidget*>(sender());
+ if( !v ) {
+ MButton* b = qobject_cast<MButton*>(sender());
+ if( b == button ) {
+ if( video->state() == MVideo::Playing ) {
+ video->pause();
+ button->setIconID("icon-m-toolbar-mediacontrol-play");
+ } else {
+ video->play();
+ button->setIconID("icon-m-toolbar-mediacontrol-pause");
+ }
+ } else
+ video->setFullscreen(!video->isFullscreen());
+ }
+#endif
}
void ItemDetailPage::updatePosition()
{
+#ifdef HAVE_GSTREAMER
if( video ) {
slider->setValue(video->position());
QTimer::singleShot(100, this, SLOT(updatePosition()));
}
+#endif
}
void ItemDetailPage::rateNoneButtonClicked()
diff --git a/demos/widgetsgallery/itemdetailpage.h b/demos/widgetsgallery/itemdetailpage.h
index d28072fc..9745be29 100644
--- a/demos/widgetsgallery/itemdetailpage.h
+++ b/demos/widgetsgallery/itemdetailpage.h
@@ -20,12 +20,59 @@
#include "timedemopage.h"
#include "gridmodel.h"
+#include <MContainer>
+#include <MImageWidget>
+#ifdef HAVE_GSTREAMER
+#include <MVideoWidget>
+#endif
+#include <MWidgetController>
+#include <MWidgetModel>
+#include <QTimer>
+
class MLayout;
class MSlider;
class MButton;
-class MImageWidget;
-class MVideoWidget;
class MLinearLayoutPolicy;
+class MGridLayoutPolicy;
+class QParallelAnimationGroup;
+
+#ifdef HAVE_GSTREAMER
+
+//video widget which emits clicked signal
+class MyVideoWidget : public MVideoWidget
+{
+ Q_OBJECT
+
+ public:
+ MyVideoWidget(QGraphicsItem *parent = 0);
+Q_SIGNALS:
+ void clicked();
+
+ protected:
+
+ virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+ virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+ private:
+};
+
+//container widget for the video playback controls
+class MyVideoOverlayToolbar : public MWidgetController
+{
+public:
+ M_CONTROLLER(MWidget)
+
+ MyVideoOverlayToolbar(QGraphicsItem *parent = 0);
+ virtual ~MyVideoOverlayToolbar();
+
+ void addItem(QGraphicsLayoutItem *button);
+
+ private:
+ MGridLayoutPolicy *landscapePolicy;
+ MGridLayoutPolicy *portraitPolicy;
+};
+
+#endif
//page for showing video or image in it's native size
class ItemDetailPage : public TimedemoPage
@@ -44,6 +91,10 @@ public:
virtual void createContent();
public slots:
+
+ void showOverlay();
+ void hideOverlay();
+
void videoReady();
void sliderPressed();
@@ -66,16 +117,32 @@ signals:
protected:
virtual void retranslateUi();
-
+ virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
private:
+
+ void relayout();
+
MLayout* layout;
MLinearLayoutPolicy* policy;
- MVideoWidget* video;
MSlider* slider;
MButton* button;
MImageWidget* image;
+#ifdef HAVE_GSTREAMER
+ MyVideoWidget* video;
+ MyVideoOverlayToolbar* cContainer;
+ MyVideoOverlayToolbar* lContainer;
+ MyVideoOverlayToolbar* rContainer;
+ MyVideoOverlayToolbar* tContainer;
+ MyVideoOverlayToolbar* bContainer;
+#endif
+
+ QParallelAnimationGroup* hideAnimation;
+ QParallelAnimationGroup* showAnimation;
+
QString imageId;
QString videoId;
+
+ QTimer inactivityTimer;
};
diff --git a/demos/widgetsgallery/mgridpage.cpp b/demos/widgetsgallery/mgridpage.cpp
index 1e90f503..bee02d64 100644
--- a/demos/widgetsgallery/mgridpage.cpp
+++ b/demos/widgetsgallery/mgridpage.cpp
@@ -62,14 +62,15 @@ public:
if( m.type == MediaType::Video )
{
+#ifdef HAVE_GSTREAMER
cell = MListCellCreatorHelper<GridVideoWidget>::createCell(recycler, "", "");
GridVideoWidget *video = qobject_cast<GridVideoWidget*>(cell);
video->open( m.path );
video->setMuted(true);
QObject::connect(video, SIGNAL(videoReady()), m_gridPage, SLOT(videoReady()));
-
updateCell(index, cell);
+#endif
} else {
cell = MListCellCreatorHelper<GridImageWidget>::createCell(recycler, "", "");
updateCell(index, cell);
@@ -96,6 +97,7 @@ void ContentItemCreator::updateCell(const QModelIndex &index, MWidget *cell) con
if( data.canConvert<MediaType>() )
m = data.value<MediaType>();
+#ifdef HAVE_GSTREAMER
if( m.type == MediaType::Video ) {
GridVideoWidget *video = qobject_cast<GridVideoWidget*>(cell);
@@ -113,6 +115,7 @@ void ContentItemCreator::updateCell(const QModelIndex &index, MWidget *cell) con
return;
}
+#endif
if( m.type == MediaType::Image ) {
GridImageWidget *imageWidget = qobject_cast<GridImageWidget*>(cell);
@@ -210,9 +213,11 @@ QString MGridPage::timedemoTitle()
void MGridPage::videoReady()
{
+#ifdef HAVE_GSTREAMER
GridVideoWidget* video = qobject_cast<GridVideoWidget*>(sender());
if( video )
video->play();
+#endif
}
void MGridPage::itemClicked()
@@ -234,6 +239,7 @@ void MGridPage::itemClicked()
return;
}
+#ifdef HAVE_GSTREAMER
//video clicked
GridVideoWidget* video = qobject_cast<GridVideoWidget*>(sender());
if( video ) {
@@ -248,6 +254,7 @@ void MGridPage::itemClicked()
page->appear(DestroyWhenDismissed);
}
+#endif
}
}
@@ -337,5 +344,6 @@ void MGridPage::modifyRowsSliderHandle(int newValue)
void MGridPage::orientationChanged(M::Orientation orientation)
{
+ Q_UNUSED(orientation)
configureGrid();
}
diff --git a/demos/widgetsgallery/mlistpage.cpp b/demos/widgetsgallery/mlistpage.cpp
index e7304c1e..ddb74f39 100644
--- a/demos/widgetsgallery/mlistpage.cpp
+++ b/demos/widgetsgallery/mlistpage.cpp
@@ -52,8 +52,15 @@
#include "phonebookmodel.h"
#endif
-MListPage::MListPage() :
- model(NULL), list(NULL), currentSortingIndex(0)
+MListPage::MListPage()
+ : model(NULL),
+#ifndef HAVE_N900
+ proxyModel(NULL),
+#endif
+ imageLoader(NULL),
+ list(NULL),
+ currentSortingIndex(0),
+ currentListModeIndex(0)
{
gid = TemplatePage::ListsGridsAndMenus;
}
@@ -285,6 +292,11 @@ void MListPage::createActions()
separatorsModes << "Off" << "On";
combo = createComboBoxAction("Separators", separatorsModes);
connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeSeparatorsMode(int)));
+
+ QStringList listIndexModes;
+ listIndexModes << "Hidden" << "Visible";
+ combo = createComboBoxAction("List index mode", listIndexModes);
+ connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeListIndexVisibility(int)));
}
void MListPage::scrollToBottom()
@@ -323,7 +335,7 @@ void MListPage::changeSortingOrder(int index)
#ifndef HAVE_N900
void MListPage::changeAmountOfItemInList(int index)
-{
+{
Q_ASSERT(index >= 0 && index < 4);
if(currentListModeIndex == Grouped) {
@@ -401,6 +413,14 @@ void MListPage::changeSeparatorsMode(int index)
list->setObjectName("wgList");
}
+void MListPage::changeListIndexVisibility(int index)
+{
+ Q_ASSERT(index >= 0 && index <= 1);
+ bool indexVisible = (index == 1);
+
+ list->setIndexVisible(indexVisible);
+}
+
void MListPage::itemClick(const QModelIndex &index)
{
mDebug("MListPage::itemClick") << "Row was clicked: " << index.row();
@@ -438,11 +458,13 @@ void MListPage::createContent()
list = new MList(panel);
list->setObjectName("wgList");
+ //% "Remove"
MAction *action = new MAction(qtTrId("xx_listpage_list_remove"), list);
action->setLocation(MAction::ObjectMenuLocation);
list->addAction(action);
connect(action, SIGNAL(triggered()), this, SLOT(removeListItem()));
+ //% "Edit"
action = new MAction(qtTrId("xx_listpage_list_edit"), list);
action->setLocation(MAction::ObjectMenuLocation);
list->addAction(action);
diff --git a/demos/widgetsgallery/mlistpage.h b/demos/widgetsgallery/mlistpage.h
index aea16d5f..cd196ea1 100644
--- a/demos/widgetsgallery/mlistpage.h
+++ b/demos/widgetsgallery/mlistpage.h
@@ -78,6 +78,7 @@ public slots:
void changeAmountOfColumns(int index);
void changeSelectionMode(int index);
void changeSeparatorsMode(int index);
+ void changeListIndexVisibility(int index);
void scrollToBottom();
void scrollToTop();
diff --git a/demos/widgetsgallery/panningbenchmark.cpp b/demos/widgetsgallery/panningbenchmark.cpp
index 498166be..845e0403 100644
--- a/demos/widgetsgallery/panningbenchmark.cpp
+++ b/demos/widgetsgallery/panningbenchmark.cpp
@@ -47,6 +47,7 @@ void PanningBenchmark::start()
if (!applicationPage->isActiveWindow()) {
connect(applicationPage, SIGNAL(appeared()), this, SLOT(waitBeforePanning()));
applicationPage->appear();
+ verifyAppearanceTimer->start(2000);
} else {
waitBeforePanning();
}
@@ -56,6 +57,7 @@ void PanningBenchmark::start()
// the widgets are not completely set up yet
void PanningBenchmark::waitBeforePanning()
{
+ verifyAppearanceTimer->stop();
QTimer::singleShot(2500, this, SLOT(panDown()));
}
diff --git a/demos/widgetsgallery/pushbuttonpage.cpp b/demos/widgetsgallery/pushbuttonpage.cpp
index 56f00129..0f8900c7 100644
--- a/demos/widgetsgallery/pushbuttonpage.cpp
+++ b/demos/widgetsgallery/pushbuttonpage.cpp
@@ -60,6 +60,7 @@ void PushButtonPage::createContent()
containerPolicy->addItem(pushButton2);
pushButton3 = new MButton();
+ pushButton3->setIcon(QIcon::fromTheme("phone"));
containerPolicy->addItem(pushButton3);
retranslateUi();
diff --git a/demos/widgetsgallery/staticpagebenchmark.cpp b/demos/widgetsgallery/staticpagebenchmark.cpp
index ba312f6e..96377f10 100644
--- a/demos/widgetsgallery/staticpagebenchmark.cpp
+++ b/demos/widgetsgallery/staticpagebenchmark.cpp
@@ -29,12 +29,14 @@ void StaticPageBenchmark::start()
if (!applicationPage->isActiveWindow()) {
connect(applicationPage, SIGNAL(appeared()), this, SLOT(stabilizeFps()));
applicationPage->appear();
+ verifyAppearanceTimer->start(2000);
} else {
QTimer::singleShot(0, this, SLOT(stabilizeFps()));
}
}
void StaticPageBenchmark::stabilizeFps() {
+ verifyAppearanceTimer->stop();
QTimer::singleShot(1000, this, SLOT(waitPageDuration()));
}
diff --git a/demos/widgetsgallery/swaphook.cpp b/demos/widgetsgallery/swaphook.cpp
index 2c31d89c..786df674 100644
--- a/demos/widgetsgallery/swaphook.cpp
+++ b/demos/widgetsgallery/swaphook.cpp
@@ -1,5 +1,4 @@
#include <cstdio>
-#include <dlfcn.h>
#include <ctime>
#include <QObject>
@@ -70,6 +69,7 @@ SwapHookPrivate::SwapHookPrivate() :
func(0),
lib(0),
lurk(false),
+ lurkBegin(0),
firstTimestamp(true)
{
#ifdef EGL
diff --git a/demos/widgetsgallery/textentrypage.cpp b/demos/widgetsgallery/textentrypage.cpp
index ba3b5607..3b38bcdc 100644
--- a/demos/widgetsgallery/textentrypage.cpp
+++ b/demos/widgetsgallery/textentrypage.cpp
@@ -25,6 +25,7 @@
#include <MButton>
#include <MCompleter>
#include <MSceneManager>
+#include <MRichTextEdit>
#include <QList>
#include <QStringListModel>
#include <QDebug>
@@ -490,6 +491,18 @@ void TextEntryPage::createContent()
layoutPolicy->addItem(Entries.at(row), row, 1);
row++;
+ // rich text entry
+ Entries << new MRichTextEdit(MTextEditModel::SingleLine, "", centralWidget());
+
+ label9 = new MLabel(centralWidget());
+ label9->setWordWrap(true);
+ label9->setMinimumWidth(MaxminLabelWidth);
+ label9->setMaximumWidth(MaxminLabelWidth);
+ label9->setAlignment(Qt::AlignTop);
+ layoutPolicy->addItem(label9, row, 0);
+ layoutPolicy->addItem(Entries.at(row), row, 1);
+ row++;
+
//direct input custom widget.
directIMWidget = new CustomDirectIMWidget(centralWidget());
labelDirectIM = new MLabel(centralWidget());
@@ -600,6 +613,8 @@ void TextEntryPage::retranslateUi()
label7->setText(qtTrId("xx_textentry_singleselectall"));
//% "Email suggestion text:"
label8->setText(qtTrId("xx_textentry_completion_text"));
+ //% "Rich Text:"
+ label9->setText(qtTrId("xx_textentry_richtext_text"));
//% "No Echo mode:"
labelNoEcho->setText(qtTrId("xx_textentry_noecho"));
diff --git a/demos/widgetsgallery/textentrypage.h b/demos/widgetsgallery/textentrypage.h
index 5347961b..81756daf 100644
--- a/demos/widgetsgallery/textentrypage.h
+++ b/demos/widgetsgallery/textentrypage.h
@@ -79,6 +79,7 @@ private:
MLabel *label6;
MLabel *label7;
MLabel *label8;
+ MLabel *label9;
MLabel *labelNoEcho;
MLabel *labelEchoOnEdit;
MLabel *labelDirectIM;
diff --git a/demos/widgetsgallery/theme/base/style/widgetsgallery.css b/demos/widgetsgallery/theme/base/style/widgetsgallery.css
index 530f0b83..752cae00 100644
--- a/demos/widgetsgallery/theme/base/style/widgetsgallery.css
+++ b/demos/widgetsgallery/theme/base/style/widgetsgallery.css
@@ -144,6 +144,14 @@ DuiButtonStyle#theme-selection-button {
}
MSliderStyle#video-player-slider {
+
+ background-base-image: "video-duislider-background" 7px 7px 7px 7px;
+ background-elapsed-image: "video-duislider-background-elapsed" 7px 7px 7px 7px;
+ background-received-image: "video-duislider-background-received" 7px 7px 7px 7px;
+
+ handle-pressed-pixmap: "video-duislider-handle-pressed" 6.4mm 6.4mm;
+ handle-pixmap: "video-duislider-handle" 6.4mm 6.4mm;
+
padding-left: 0;
padding-top: 0;
padding-right: 0;
@@ -153,19 +161,18 @@ MSliderStyle#video-player-slider {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
+
+ preferred-size: 80% -1;
+ minimum-size: 80% -1;
+ maximum-size: 80% -1;
}
MButtonStyle#video-player-button {
- padding-left: 0;
- padding-top: 0;
- padding-right: 0;
- padding-bottom: 0;
-
- margin-left: 0;
- margin-top: 0;
- margin-right: 0;
- margin-bottom: 0;
+ margin-left: $PADDING_XLARGE;
+ margin-top: $PADDING_XLARGE;
+ margin-right: $PADDING_XLARGE;
+ margin-bottom: $PADDING_XLARGE;
text-margin-left: 0;
text-margin-top: 0;
@@ -176,20 +183,41 @@ MButtonStyle#video-player-button {
minimum-size: 7.5mm 5mm;
maximum-size: 7.5mm 5mm;
-
icon-size: 3.0mm 3.0mm;
icon-align: center;
}
MApplicationPageStyle#video-detail-page {
- background-image: ;
- background-color: #001100;
}
-#itemDetailPage {
- background-image: ;
- background-color: black;
- color-key: #001100;
+ItemDetailPage MVideoWidgetStyle {
+ color-key: #001000;
+}
+
+ItemDetailPage MVideoWidgetStyle:fullscreen {
+ color-key: #001000;
+}
+
+MWidgetStyle#center-overlay-container {
+ background-image: multimedia-overlay-center-background 17px 17px 17px 17px;
+}
+
+MWidgetStyle#bottom-overlay-container {
+ background-image: multimedia-overlay-bottom-background 17px 17px 17px 17px;
+}
+
+MWidgetStyle#top-overlay-container {
+ background-image: multimedia-overlay-top-background 17px 17px 17px 17px;
+}
+
+MLabelStyle#video-title-label {
+ color: #FFFFFF;
+ preferred-size: -1 -1;
+
+ margin-left: $PADDING_XLARGE;
+ margin-top: $PADDING_XLARGE;
+ margin-right: $PADDING_XLARGE;
+ margin-bottom: $PADDING_XLARGE;
}
#gridPage {
diff --git a/demos/widgetsgallery/theme/devel/svg/multimedia-overlays.svg b/demos/widgetsgallery/theme/devel/svg/multimedia-overlays.svg
new file mode 100644
index 00000000..384c218c
--- /dev/null
+++ b/demos/widgetsgallery/theme/devel/svg/multimedia-overlays.svg
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg6057"
+ version="1.1"
+ inkscape:version="0.47pre4 r22446"
+ sodipodi:docname="multimedia-overlays.svg">
+ <defs
+ id="defs6059">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective6065" />
+ <inkscape:perspective
+ id="perspective6075"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient6005"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5941">
+ <stop
+ style="stop-color:black;stop-opacity:1;"
+ offset="0"
+ id="stop5943" />
+ <stop
+ style="stop-color:black;stop-opacity:0.502"
+ offset="1"
+ id="stop5945" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient6015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient6023"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient6031"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ y2="573.70679"
+ x2="312.34692"
+ y1="528.24756"
+ x1="312.34692"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient6116"
+ xlink:href="#linearGradient5941"
+ inkscape:collect="always" />
+ <inkscape:perspective
+ id="perspective7151"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ id="SVGID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="119"
+ y1="278.44919"
+ x2="119"
+ y2="266.44919">
+ <stop
+ offset="0"
+ style="stop-color:#74CCD4"
+ id="stop7068" />
+ <stop
+ offset="0.1301"
+ style="stop-color:#66C2D6"
+ id="stop7070" />
+ <stop
+ offset="0.4156"
+ style="stop-color:#4BB5DC"
+ id="stop7072" />
+ <stop
+ offset="0.7046"
+ style="stop-color:#35ADDF"
+ id="stop7074" />
+ <stop
+ offset="1"
+ style="stop-color:#2AAAE2"
+ id="stop7076" />
+ </linearGradient>
+ <linearGradient
+ id="SVGID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="119"
+ y1="258.44919"
+ x2="119"
+ y2="246.4492">
+ <stop
+ offset="0"
+ style="stop-color:#1A1A1A"
+ id="stop7057" />
+ <stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop7059" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective7788"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7814"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7822"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7832"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7836"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.37692308,0,0,0.98989899,191.26923,201.96325)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7842"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.37692308,0,0,-0.98989899,498.73077,1143.274)"
+ x1="312.34692"
+ y1="528.24756"
+ x2="312.34692"
+ y2="573.70679" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5941"
+ id="linearGradient7845"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.37692308,0,0,-0.98989899,498.73077,1143.274)"
+ x1="288.46939"
+ y1="612.0946"
+ x2="288.46939"
+ y2="531.27826" />
+ <inkscape:perspective
+ id="perspective3951"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_14_"
+ id="radialGradient3798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1052,0,0,1.1052,-88.2734,62.2657)"
+ cx="125.1118"
+ cy="20.071301"
+ r="19.0012" />
+ <radialGradient
+ id="SVGID_14_"
+ cx="125.1118"
+ cy="20.071301"
+ r="19.0012"
+ gradientTransform="matrix(1.1052,0,0,1.1052,-88.2734,62.2657)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop3604" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.1"
+ id="stop3606" />
+ </radialGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_15_"
+ id="linearGradient3800"
+ gradientUnits="userSpaceOnUse"
+ x1="50"
+ y1="101.9492"
+ x2="50"
+ y2="66.949203" />
+ <linearGradient
+ id="SVGID_15_"
+ gradientUnits="userSpaceOnUse"
+ x1="50"
+ y1="101.9492"
+ x2="50"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#E6E6E6"
+ id="stop3612" />
+ <stop
+ offset="0.5042"
+ style="stop-color:#F2F2F2"
+ id="stop3614" />
+ <stop
+ offset="1"
+ style="stop-color:#F7F7F7"
+ id="stop3616" />
+ </linearGradient>
+ <radialGradient
+ id="SVGID_12_"
+ cx="203.01559"
+ cy="20.071301"
+ r="19.001499"
+ gradientTransform="matrix(1.1052,0,0,1.1052,-92.373,62.2657)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop3581" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.1"
+ id="stop3583" />
+ </radialGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_13_"
+ id="linearGradient3796"
+ gradientUnits="userSpaceOnUse"
+ x1="132.0005"
+ y1="101.9492"
+ x2="132.0005"
+ y2="66.949203" />
+ <linearGradient
+ id="SVGID_13_"
+ gradientUnits="userSpaceOnUse"
+ x1="132.0005"
+ y1="101.9492"
+ x2="132.0005"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#B3B3B3"
+ id="stop3589" />
+ <stop
+ offset="1"
+ style="stop-color:#4D4D4D"
+ id="stop3591" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_11_"
+ id="linearGradient3792"
+ gradientUnits="userSpaceOnUse"
+ x1="193"
+ y1="92.449203"
+ x2="193"
+ y2="80.449203" />
+ <linearGradient
+ id="SVGID_11_"
+ gradientUnits="userSpaceOnUse"
+ x1="193"
+ y1="92.449203"
+ x2="193"
+ y2="80.449203">
+ <stop
+ offset="0"
+ style="stop-color:#1A1A1A"
+ id="stop3570" />
+ <stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop3572" />
+ </linearGradient>
+ <linearGradient
+ id="SVGID_9_"
+ gradientUnits="userSpaceOnUse"
+ x1="233"
+ y1="92.449203"
+ x2="233"
+ y2="80.449203">
+ <stop
+ offset="0"
+ style="stop-color:#74CCD4"
+ id="stop3530" />
+ <stop
+ offset="0.1301"
+ style="stop-color:#66C2D6"
+ id="stop3532" />
+ <stop
+ offset="0.4156"
+ style="stop-color:#4BB5DC"
+ id="stop3534" />
+ <stop
+ offset="0.7046"
+ style="stop-color:#35ADDF"
+ id="stop3536" />
+ <stop
+ offset="1"
+ style="stop-color:#2AAAE2"
+ id="stop3538" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_10_"
+ id="linearGradient3790"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,6838,-1763.1016)"
+ x1="6605"
+ y1="-1863.5508"
+ x2="6605"
+ y2="-1875.5508" />
+ <linearGradient
+ id="SVGID_10_"
+ gradientUnits="userSpaceOnUse"
+ x1="6605"
+ y1="-1863.5508"
+ x2="6605"
+ y2="-1875.5508"
+ gradientTransform="matrix(-1,0,0,-1,6838,-1763.1016)">
+ <stop
+ offset="0.25"
+ style="stop-color:#FFFFFF;stop-opacity:0"
+ id="stop3550" />
+ <stop
+ offset="0.9328"
+ style="stop-color:#FFFFFF;stop-opacity:0.9104"
+ id="stop3552" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop3554" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective5047"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#SVGID_15_-2"
+ id="linearGradient3800-8"
+ gradientUnits="userSpaceOnUse"
+ x1="135"
+ y1="67.449005"
+ x2="135"
+ y2="102.44901" />
+ <linearGradient
+ id="SVGID_15_-2"
+ gradientUnits="userSpaceOnUse"
+ x1="50"
+ y1="101.9492"
+ x2="50"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#E6E6E6"
+ id="stop3612-4" />
+ <stop
+ offset="0.5042"
+ style="stop-color:#F2F2F2"
+ id="stop3614-6" />
+ <stop
+ offset="1"
+ style="stop-color:#F7F7F7"
+ id="stop3616-5" />
+ </linearGradient>
+ <linearGradient
+ y2="66.949203"
+ x2="50"
+ y1="101.9492"
+ x1="50"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5062"
+ xlink:href="#SVGID_15_-2"
+ inkscape:collect="always" />
+ <inkscape:perspective
+ id="perspective5047-1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ id="SVGID_15_-0"
+ gradientUnits="userSpaceOnUse"
+ x1="50"
+ y1="101.9492"
+ x2="50"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#E6E6E6"
+ id="stop3612-2" />
+ <stop
+ offset="0.5042"
+ style="stop-color:#F2F2F2"
+ id="stop3614-5" />
+ <stop
+ offset="1"
+ style="stop-color:#F7F7F7"
+ id="stop3616-8" />
+ </linearGradient>
+ <linearGradient
+ y2="66.949203"
+ x2="50"
+ y1="101.9492"
+ x1="50"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5062-0"
+ xlink:href="#SVGID_15_-0"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="242.17975"
+ inkscape:cy="682.86379"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="2560"
+ inkscape:window-height="1532"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:bbox-nodes="true"
+ inkscape:bbox-paths="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid7264" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata6062">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:0.75;color:black;fill:#070f1c;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect6183"
+ width="779"
+ height="577"
+ x="-3"
+ y="298.36218"
+ rx="15"
+ ry="15"
+ transform="translate(4.5,-18)" />
+ <g
+ transform="translate(28.989579,0.89619232)"
+ id="multimedia-overlay-bottom-background"
+ inkscape:label="#g6033">
+ <path
+ style="opacity:0.75;color:black;fill:none;stroke:white;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 359,766.875 0,-27.5 c 0,-8.31 -7.19,-15.5 -15.5,-15.5 l -67,0 c -8.31,0 -15.5,7.19 -15.5,15.5 l 0,27.5"
+ id="path6035"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(41.010408,1.5909903)" />
+ <path
+ transform="translate(41.010408,1.5909903)"
+ sodipodi:nodetypes="cccccc"
+ id="path6037"
+ d="m 358,767.875 0,-28 c 0,-8.31 -6.69,-15 -15,-15 l -66,0 c -8.31,0 -15,6.69 -15,15 l 0,28"
+ style="opacity:0.75;color:black;fill:url(#linearGradient6116);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <g
+ id="multimedia-overlay-left-background"
+ transform="matrix(0,1,-1,0,857.46599,216.35177)"
+ inkscape:label="#g6039">
+ <path
+ transform="translate(41.010408,1.5909903)"
+ sodipodi:nodetypes="cccccc"
+ id="path6041"
+ d="m 359,766.875 0,-27.5 c 0,-8.31 -7.19,-15.5 -15.5,-15.5 l -67,0 c -8.31,0 -15.5,7.19 -15.5,15.5 l 0,27.5"
+ style="opacity:0.75;color:black;fill:none;stroke:white;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:0.75;color:black;fill:url(#linearGradient6015);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 358,767.875 0,-28 c 0,-8.31 -6.69,-15 -15,-15 l -66,0 c -8.31,0 -15,6.69 -15,15 l 0,28"
+ id="path6043"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(41.010408,1.5909903)" />
+ </g>
+ <g
+ transform="matrix(0,-1,1,0,-83.465993,918.37262)"
+ id="multimedia-overlay-right-background"
+ inkscape:label="#g6045">
+ <path
+ style="opacity:0.75;color:black;fill:none;stroke:white;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 359,766.875 0,-27.5 c 0,-8.31 -7.19,-15.5 -15.5,-15.5 l -67,0 c -8.31,0 -15.5,7.19 -15.5,15.5 l 0,27.5"
+ id="path6047"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(41.010408,1.5909903)" />
+ <path
+ transform="translate(41.010408,1.5909903)"
+ sodipodi:nodetypes="cccccc"
+ id="path6049"
+ d="m 358,767.875 0,-28 c 0,-8.31 -6.69,-15 -15,-15 l -66,0 c -8.31,0 -15,6.69 -15,15 l 0,28"
+ style="opacity:0.75;color:black;fill:url(#linearGradient6023);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <g
+ id="multimedia-overlay-top-background"
+ transform="matrix(-1,0,0,-1,731.01041,1156.8282)"
+ inkscape:label="#g6051">
+ <path
+ transform="translate(41.010408,1.5909903)"
+ sodipodi:nodetypes="cccccc"
+ id="path6053"
+ d="m 359,766.875 0,-27.5 c 0,-8.31 -7.19,-15.5 -15.5,-15.5 l -67,0 c -8.31,0 -15.5,7.19 -15.5,15.5 l 0,27.5"
+ style="opacity:0.75;color:black;fill:none;stroke:white;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:0.75;color:black;fill:url(#linearGradient6031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 358,767.875 0,-28 c 0,-8.31 -6.69,-15 -15,-15 l -66,0 c -8.31,0 -15,6.69 -15,15 l 0,28"
+ id="path6055"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(41.010408,1.5909903)" />
+ </g>
+ <g
+ id="multimedia-overlay-center-background"
+ inkscape:label="#g7824">
+ <path
+ style="opacity:0.75;color:black;fill:none;stroke:white;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 429,577.375 0,-28.5 c 0,-8.31 -7.19,-15.5 -15.5,-15.5 l -67,0 c -8.31,0 -15.5,7.19 -15.5,15.5 l 0,28.5 0,28.5 c 0,8.31 7.19,15.5 15.5,15.5 l 67,0 c 8.31,0 15.5,-7.19 15.5,-15.5 l 0,-28.5 z"
+ id="path7810"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="opacity:0.75000000000000000;color:black;fill:url(#linearGradient7845);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 347 534.375 C 338.69 534.375 332 541.065 332 549.375 L 332 577.375 L 332 605.375 C 332 613.685 338.69 620.375 347 620.375 L 413 620.375 C 421.31 620.375 428 613.685 428 605.375 L 428 577.375 L 428 549.375 C 428 541.065 421.31 534.375 413 534.375 L 347 534.375 z "
+ id="path7812" />
+ </g>
+ <g
+ transform="translate(40,264.91318)"
+ id="video-duislider-background">
+ <g
+ id="Normal_44_"
+ style="opacity:1;fill:white;fill-opacity:1">
+ <path
+ style="fill:white;fill-opacity:1"
+ d="m 208,88.449 c 0,3.3 -2.7,6 -6,6 h -18 c -3.3,0 -6,-2.7 -6,-6 v -4 c 0,-3.3 2.7,-6 6,-6 h 18 c 3.3,0 6,2.7 6,6 v 4 z"
+ id="path3560" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path3563"
+ d="m 206,87.449 c 0,2.75 -2.25,5 -5,5 l -16,0 c -2.75,0 -5,-2.25 -5,-5 l 0,-2 c 0,-2.75 2.25,-5 5,-5 l 16,0 c 2.75,0 5,2.25 5,5 l 0,2 z"
+ style="fill:black;fill-opacity:1" />
+ </g>
+ <g
+ transform="translate(40,264.91318)"
+ id="video-duislider-handle-pressed">
+ <rect
+ x="96"
+ y="48.449001"
+ style="opacity:0;fill:#010101"
+ width="72"
+ height="72"
+ id="rect3577" />
+ <g
+ id="Normal_40_"
+ style="fill:#44b2f3;fill-opacity:1">
+ <radialGradient
+ id="radialGradient4036"
+ cx="203.01559"
+ cy="20.071301"
+ r="19.001499"
+ gradientTransform="matrix(1.1052,0,0,1.1052,-92.373,62.2657)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop4038" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.1"
+ id="stop4040" />
+ </radialGradient>
+ <path
+ style="fill:#44b2f3;fill-opacity:1"
+ d="m 153,85.449 c 0,11 -9,20 -20,20 h -2 c -11,0 -20,-9 -20,-20 v -2 c 0,-11 9,-20 20,-20 h 2 c 11,0 20,9 20,20 v 2 z"
+ id="path3585" />
+ </g>
+ <g
+ id="Normal_39_"
+ transform="matrix(1.0285716,0,0,1.0285714,-3.771461,-2.412823)">
+ <linearGradient
+ id="linearGradient4044"
+ gradientUnits="userSpaceOnUse"
+ x1="132.0005"
+ y1="101.9492"
+ x2="132.0005"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#B3B3B3"
+ id="stop4046" />
+ <stop
+ offset="1"
+ style="stop-color:#4D4D4D"
+ id="stop4048" />
+ </linearGradient>
+ <path
+ style="color:black;fill:url(#linearGradient3800-8);fill-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 132,101.949 c -9.649,0 -17.5,-7.851 -17.5,-17.5 0,-9.649 7.851,-17.5 17.5,-17.5 9.649,0 17.5,7.851 17.5,17.5 0,9.649 -7.851,17.5 -17.5,17.5 l 0,0 z"
+ id="path3593" />
+ </g>
+ </g>
+ <g
+ transform="translate(40,264.91318)"
+ id="video-duislider-handle">
+ <rect
+ x="14"
+ y="48.449001"
+ style="opacity:0;fill:#010101"
+ width="72"
+ height="72"
+ id="rect3600" />
+ <g
+ id="Normal_38_"
+ style="fill:white;fill-opacity:1">
+ <radialGradient
+ id="radialGradient4056"
+ cx="125.1118"
+ cy="20.071301"
+ r="19.0012"
+ gradientTransform="matrix(1.1052,0,0,1.1052,-88.2734,62.2657)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop4058" />
+ <stop
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0.1"
+ id="stop4060" />
+ </radialGradient>
+ <path
+ style="fill:white;fill-opacity:1"
+ d="m 71,85.449 c 0,11 -9,20 -20,20 h -2 c -11,0 -20,-9 -20,-20 v -2 c 0,-11 9,-20 20,-20 h 2 c 11,0 20,9 20,20 v 2 z"
+ id="path3608" />
+ </g>
+ <g
+ id="Normal_37_"
+ transform="matrix(1.0285714,0,0,1.0285713,-1.4285714,-2.4128159)">
+ <linearGradient
+ id="linearGradient4064"
+ gradientUnits="userSpaceOnUse"
+ x1="50"
+ y1="101.9492"
+ x2="50"
+ y2="66.949203">
+ <stop
+ offset="0"
+ style="stop-color:#E6E6E6"
+ id="stop4066" />
+ <stop
+ offset="0.5042"
+ style="stop-color:#F2F2F2"
+ id="stop4068" />
+ <stop
+ offset="1"
+ style="stop-color:#F7F7F7"
+ id="stop4070" />
+ </linearGradient>
+ <path
+ style="fill:url(#linearGradient3800)"
+ d="m 50,101.949 c -9.649,0 -17.5,-7.851 -17.5,-17.5 0,-9.649 7.851,-17.5 17.5,-17.5 9.649,0 17.5,7.851 17.5,17.5 0,9.649 -7.851,17.5 -17.5,17.5 l 0,0 z"
+ id="path3618" />
+ </g>
+ </g>
+ <g
+ transform="translate(35,264.91319)"
+ id="video-duislider-background-elapsed">
+ <rect
+ x="218"
+ y="78.448997"
+ style="opacity:0;fill:#010101"
+ width="30"
+ height="16"
+ id="rect3526" />
+ <g
+ id="Normal_47_"
+ transform="matrix(1.0769231,0,0,1.1666662,-17.923077,-14.408129)"
+ style="fill:white;fill-opacity:1">
+ <linearGradient
+ id="linearGradient3991"
+ gradientUnits="userSpaceOnUse"
+ x1="233"
+ y1="92.449203"
+ x2="233"
+ y2="80.449203">
+ <stop
+ offset="0"
+ style="stop-color:#74CCD4"
+ id="stop3993" />
+ <stop
+ offset="0.1301"
+ style="stop-color:#66C2D6"
+ id="stop3995" />
+ <stop
+ offset="0.4156"
+ style="stop-color:#4BB5DC"
+ id="stop3997" />
+ <stop
+ offset="0.7046"
+ style="stop-color:#35ADDF"
+ id="stop3999" />
+ <stop
+ offset="1"
+ style="stop-color:#2AAAE2"
+ id="stop4001" />
+ </linearGradient>
+ <path
+ style="color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 246,87.449 c 0,2.75 -2.25,5 -5,5 l -16,0 c -2.75,0 -5,-2.25 -5,-5 l 0,-2 c 0,-2.75 2.25,-5 5,-5 l 16,0 c 2.75,0 5,2.25 5,5 l 0,2 z"
+ id="path3540"
+ sodipodi:nodetypes="ccccccccc" />
+ </g>
+ </g>
+ <g
+ transform="translate(35,264.91319)"
+ id="video-duislider-background-received"
+ style="opacity:1;fill:white;fill-opacity:1">
+ <rect
+ x="218"
+ y="98.448997"
+ style="opacity:0;fill:white;fill-opacity:1"
+ width="30"
+ height="16"
+ id="rect3543" />
+ <g
+ id="Normal_46_"
+ style="fill:white;fill-opacity:1;opacity:0.50000000000000000">
+ <path
+ style="fill:white;fill-opacity:1"
+ d="m 220,105.449 c 0,-2.75 2.25,-5 5,-5 l 16,0 c 2.75,0 5,2.25 5,5 l 0,2 c 0,2.75 -2.25,5 -5,5 l -16,0 c -2.75,0 -5,-2.25 -5,-5 l 0,-2 z"
+ id="path3546"
+ sodipodi:nodetypes="ccccccccc" />
+ </g>
+ <g
+ id="Normal_45_"
+ style="opacity:0.29999999999999999;fill:white;fill-opacity:1">
+ <linearGradient
+ id="linearGradient4009"
+ gradientUnits="userSpaceOnUse"
+ x1="6605"
+ y1="-1863.5508"
+ x2="6605"
+ y2="-1875.5508"
+ gradientTransform="matrix(-1,0,0,-1,6838,-1763.1016)">
+ <stop
+ offset="0.25"
+ style="stop-color:#FFFFFF;stop-opacity:0"
+ id="stop4011" />
+ <stop
+ offset="0.9328"
+ style="stop-color:#FFFFFF;stop-opacity:0.9104"
+ id="stop4013" />
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop4015" />
+ </linearGradient>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/widgetsgallery/timedemo.cpp b/demos/widgetsgallery/timedemo.cpp
index df175948..3ead52d1 100644
--- a/demos/widgetsgallery/timedemo.cpp
+++ b/demos/widgetsgallery/timedemo.cpp
@@ -184,7 +184,12 @@ void Timedemo::displayBenchmarkResults()
statsCsvFile.setFileName(m_csvFilename);
}
- statsCsvFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
+ if ( ! statsCsvFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text) )
+ {
+ qCritical( "failed to open stats file: %s", qPrintable( statsCsvFile.fileName() ) );
+ exit(EXIT_FAILURE);
+ }
+
QTextStream statsCsv(&statsCsvFile);
int pageTitleWidth = 0;
@@ -258,7 +263,11 @@ void Timedemo::saveFramelog() {
framelogFile.setFileName(framelogFilename);
}
- framelogFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
+ if (!framelogFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
+ {
+ qWarning( "failed to open frame log file: %s", qPrintable( framelogFile.fileName() ) );
+ }
+
QXmlStreamWriter framelog(&framelogFile);
framelog.setAutoFormatting(true);
framelog.writeStartDocument();
@@ -275,7 +284,7 @@ void Timedemo::saveFramelog() {
BenchmarkResultHash results = benchmarkResults[i];
foreach(const QString& name, allBenchmarks) {
BenchmarkResultHash::const_iterator resultIter = results.find(name);
- if (resultIter == results.end()) {
+ if (resultIter == results.end() || resultIter->runtime() == 0 || resultIter->fps() == 0) {
continue;
}
framelog.writeStartElement("benchmark");
diff --git a/demos/widgetsgallery/timedemo.h b/demos/widgetsgallery/timedemo.h
index dd640c08..75e879b2 100644
--- a/demos/widgetsgallery/timedemo.h
+++ b/demos/widgetsgallery/timedemo.h
@@ -46,7 +46,11 @@ public:
QString type;
int fps() const {
- return (timestamps.count() - 1) / qMax<float>(runtime(), 1.f) * 1000;
+ if (timestamps.count() == 0) {
+ return 0;
+ } else {
+ return (timestamps.count() - 1) / qMax<float>(runtime(), 1.f) * 1000;
+ }
}
int runtime() const {
diff --git a/demos/widgetsgallery/timedemobenchmark.cpp b/demos/widgetsgallery/timedemobenchmark.cpp
index b1a2d619..0a2532a6 100644
--- a/demos/widgetsgallery/timedemobenchmark.cpp
+++ b/demos/widgetsgallery/timedemobenchmark.cpp
@@ -1,10 +1,15 @@
#include "timedemobenchmark.h"
+#include <QTimer>
+#include <MApplicationPage>
+
TimedemoBenchmark::TimedemoBenchmark(MApplicationPage *applicationPage, Timedemo *timedemo)
: applicationPage(applicationPage)
, timedemo(timedemo)
, _type("common")
{
+ verifyAppearanceTimer = new QTimer(this);
+ connect(verifyAppearanceTimer, SIGNAL(timeout()), this, SLOT(terminateIfNotAppeared()));
}
QString TimedemoBenchmark::type() {
@@ -14,3 +19,13 @@ QString TimedemoBenchmark::type() {
void TimedemoBenchmark::setType(const QString& type) {
_type = type;
}
+
+void TimedemoBenchmark::terminateIfNotAppeared() {
+ verifyAppearanceTimer->stop();
+ if (applicationPage->isActiveWindow()) {
+ return;
+ } else {
+ qCritical("Could not activate application page. Is a window manager running?");
+ exit(EXIT_FAILURE);
+ }
+}
diff --git a/demos/widgetsgallery/timedemobenchmark.h b/demos/widgetsgallery/timedemobenchmark.h
index 89440d4e..22c90b83 100644
--- a/demos/widgetsgallery/timedemobenchmark.h
+++ b/demos/widgetsgallery/timedemobenchmark.h
@@ -6,6 +6,7 @@
class MApplicationPage;
class Timedemo;
class QString;
+class QTimer;
/**
* TimedemoBenchmark is the base class for all benchmarks used in the timedemo.
@@ -52,7 +53,16 @@ signals:
*/
void finished();
+protected slots:
+ void terminateIfNotAppeared();
+
protected:
+ /**
+ * Start this timer after calling MApplicationPage::appear() to verify the application page
+ * has really appeared/is really active.
+ * Timer will terminate the application after the timeout if page is not active.
+ */
+ QTimer *verifyAppearanceTimer;
MApplicationPage *applicationPage;
Timedemo *timedemo;
QString _type;
diff --git a/demos/widgetsgallery/toolbarpage.cpp b/demos/widgetsgallery/toolbarpage.cpp
index e6a9e957..eb41ff8e 100644
--- a/demos/widgetsgallery/toolbarpage.cpp
+++ b/demos/widgetsgallery/toolbarpage.cpp
@@ -86,7 +86,7 @@ void TestModel::setMode(TestModel::CallMode mode) {
class MContentItemCreator : public MAbstractCellCreator<MContentItem>
{
public:
- MContentItemCreator() {
+ MContentItemCreator() : amountOfColumns( 0 ) {
}
void updateCell(const QModelIndex &index, MWidget *cell) const {
@@ -144,9 +144,11 @@ ToolBarPage::ToolBarPage() :
exampleAction1(0),
exampleAction2(0),
defaultViewAction(0),
- tabViewAction(0)
+ tabViewAction(0),
+ isDefaultView(true)
{
gid = TemplatePage::ViewsAndDialogs;
+
}
ToolBarPage::~ToolBarPage()
diff --git a/doc/src/applicationextensions.dox b/doc/src/applicationextensions.dox
index c35f1a63..e681f9aa 100644
--- a/doc/src/applicationextensions.dox
+++ b/doc/src/applicationextensions.dox
@@ -5,7 +5,7 @@ Application extensions are plugins that can be embedded into an application exte
\section appextensiondevenv Development environment
For developing application extensions you need:
-- libdui-dev
+- libmeegotouch-dev
\section appextensiondevelopment Developing application extensions and applications that use them
@@ -26,11 +26,16 @@ In this method you need to return a pointer to the \c MWidget of your applicatio
To use application extensions of particular interface in an application, an instance of \c MApplicationExtensionArea is created:
\code
-new MApplicationExtensionArea(interface, enableInProcessExtensions, parent);
+new MApplicationExtensionArea(interface, parent);
\endcode
-where interface is the name of the interface the extensions in the area implement, enableInProcessExtensions is a boolean which tells whether
-the area can load in-process extensions and parent is the parent QGraphicsItem.
+where interface is the name of the interface the extensions in the area implement and parent is the parent QGraphicsItem. The area will only
+be populated after init() is called.
+
+It is possible to define which extensions are allowed to be loaded in the same process as the extension area and which extensions are ran in separate
+processes using setInProcessFilter() and setOutOfProcessFilter() before calling init(). These take QRegExp objects as their parameter, so it is for
+example possible to use QRegExp("$^") to allow no extensions, QRegExp("/test(1|A).desktop$") to allow extensions test1.desktop and testA.desktop and
+QRegExp() to allow all extensions.
\subsection appextensionprocdiff Differences between in-process and out-of-process application extensions
@@ -152,6 +157,8 @@ void DemoApp::createExtensionArea()
{
MApplicationExtensionArea *extensionArea =
new MApplicationExtensionArea("com.meego.core.DemoApplicationExtensionInterface/1.0");
+ extensionArea->setInProcessFilter(QRegExp("/demoapp-demoextension2?\\.desktop$"));
+ extensionArea->init();
layout->addItem(extensionArea);
// Listen to signals about new and removed extensions
@@ -175,6 +182,7 @@ void DemoApp::addExtension(MApplicationExtensionInterface *extension)
\subsection appextensiondesktopfile Application extension desktop file
Application extension must have a \c .desktop file written according to <a href="http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec">freedesktop.org desktop entry specification</a>.
+It is a good practice to name the file in a similar manner to naming the shared library (for example myapplication-myextension.desktop).
The keys \c Type and \c Name are required as specified in the desktop entry specification. The type must be \c X-MeeGoApplicationExtension.
The \c Exec key is optionally used to specify a runner binary (usually mapplicationextensionrunner) which is launched in separate process to run the application extension binary. If the key is not used, the application extension is run inside the host process.
@@ -275,6 +283,14 @@ When the application extension is run as in-process, the resource location is co
See \ref theme_structure for more information about the directory locations.
+The layout orientation of the application extension area can be modified using the layout-orientation style parameter:
+
+\code
+MApplicationExtensionAreaStyle {
+ layout-orientation: horizontal;
+}
+\endcode
+
\section appextensiontools Tools to help development
The <tt>dui-dev-tools</tt> package includes a tool called <tt>duiapplicationextensiontester</tt>. This tool can be used to test application extensions that have an UI.
The tool loads application extensions implementing a specified interface to a window where they can be tested by interacting with them and visually checking the results.
diff --git a/doc/src/faststartup.dox b/doc/src/faststartup.dox
new file mode 100644
index 00000000..40b32c18
--- /dev/null
+++ b/doc/src/faststartup.dox
@@ -0,0 +1,42 @@
+/*! \page faststart Fast application startup
+
+There are three features that enable improving MApplication startup
+times:
+
+\li The <a href="launcher.html">application launcher</a> is the
+primary alternative for shortening application startup times. It will
+preload large libraries and instantiate e.g. MApplication and
+MApplicationWindow objects to so called component cache before the
+main() of the application is started. The application will then use
+the already created instances from the component cache. However, there
+are some limitations to launcher usage. For instance it does not
+support some MeeGoTouch and Qt command line options.
+
+\li <a href="prestart.html">Application prestarting</a> is meant for
+applications that cannot avoid slow initializations before they can be
+used. Prestarting enables starting up those applications to a state
+where they do not show UI. From that state they can show a window in
+no time when requested. This will provide the fastest results, but the
+drawback is the high memory usage due to prestarted applications as
+well as some unexpected maintenance tasks that the system may do for
+prestarted application processes. <strong>In Harmattan UI framework
+prestarting is limited to a small set of critical applications. This
+feature cannot be used without support from the system
+configuration.</strong>
+
+\li <a href="prestart.html">Lazy shutdown</a> allows applications to
+be closed without terminating. This allows an application to show its
+window very quickly when it is needed next time. Lazy shutdown does
+not speed up the first startup at all, but it improves the performance
+of applications that take advantage of prestarting already.
+
+An application can use any combination of the above features.
+
+\section links Documentation links
+
+ \li <a href="launcher.html">How to write launchable applications</a>
+
+ \li <a href="prestart.html">How to write a prestartable and lazy
+ shutdownable applications</a>
+
+*/
diff --git a/doc/src/images/duicontainer.png b/doc/src/images/mcontainer.png
index ad09a9f4..ad09a9f4 100644
--- a/doc/src/images/duicontainer.png
+++ b/doc/src/images/mcontainer.png
Binary files differ
diff --git a/doc/src/images/duiflowlayoutpolicy.png b/doc/src/images/mflowlayoutpolicy.png
index 926247ba..926247ba 100644
--- a/doc/src/images/duiflowlayoutpolicy.png
+++ b/doc/src/images/mflowlayoutpolicy.png
Binary files differ
diff --git a/doc/src/images/duiflowlayoutpolicy_small.png b/doc/src/images/mflowlayoutpolicy_small.png
index 1e696193..1e696193 100644
--- a/doc/src/images/duiflowlayoutpolicy_small.png
+++ b/doc/src/images/mflowlayoutpolicy_small.png
Binary files differ
diff --git a/doc/src/images/duifreestylelayoutpolicy.png b/doc/src/images/mfreestylelayoutpolicy.png
index 2f0baffc..2f0baffc 100644
--- a/doc/src/images/duifreestylelayoutpolicy.png
+++ b/doc/src/images/mfreestylelayoutpolicy.png
Binary files differ
diff --git a/doc/src/images/duifreestylelayoutpolicy_small.png b/doc/src/images/mfreestylelayoutpolicy_small.png
index 63734fb8..63734fb8 100644
--- a/doc/src/images/duifreestylelayoutpolicy_small.png
+++ b/doc/src/images/mfreestylelayoutpolicy_small.png
Binary files differ
diff --git a/doc/src/images/duigridlayoutpolicy.png b/doc/src/images/mgridlayoutpolicy.png
index 53632a70..53632a70 100644
--- a/doc/src/images/duigridlayoutpolicy.png
+++ b/doc/src/images/mgridlayoutpolicy.png
Binary files differ
diff --git a/doc/src/images/duigridlayoutpolicy_small.png b/doc/src/images/mgridlayoutpolicy_small.png
index 84e6363f..84e6363f 100644
--- a/doc/src/images/duigridlayoutpolicy_small.png
+++ b/doc/src/images/mgridlayoutpolicy_small.png
Binary files differ
diff --git a/doc/src/images/duilinearlayoutpolicy.png b/doc/src/images/mlinearlayoutpolicy.png
index fa33277b..fa33277b 100644
--- a/doc/src/images/duilinearlayoutpolicy.png
+++ b/doc/src/images/mlinearlayoutpolicy.png
Binary files differ
diff --git a/doc/src/images/duilinearlayoutpolicy_small.png b/doc/src/images/mlinearlayoutpolicy_small.png
index 44462e86..44462e86 100644
--- a/doc/src/images/duilinearlayoutpolicy_small.png
+++ b/doc/src/images/mlinearlayoutpolicy_small.png
Binary files differ
diff --git a/doc/src/images/duiplatform.png b/doc/src/images/mplatform.png
index a2f2ccc7..a2f2ccc7 100644
--- a/doc/src/images/duiplatform.png
+++ b/doc/src/images/mplatform.png
Binary files differ
diff --git a/doc/src/images/root element and scene window.png b/doc/src/images/root element and scene window.png
new file mode 100644
index 00000000..6f76d8b6
--- /dev/null
+++ b/doc/src/images/root element and scene window.png
Binary files differ
diff --git a/doc/src/images/root element and scene window.svg b/doc/src/images/root element and scene window.svg
new file mode 100644
index 00000000..45f59de9
--- /dev/null
+++ b/doc/src/images/root element and scene window.svg
@@ -0,0 +1,1045 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1287.3606"
+ height="587.03339"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="root element and scene window.svg"
+ inkscape:export-filename="/home/dandrader/work/meegotouch_tutorial/root element and scene window.png"
+ inkscape:export-xdpi="59.913284"
+ inkscape:export-ydpi="59.913284">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mend"
+ style="overflow:visible;">
+ <path
+ id="path3604"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+ transform="scale(0.4) rotate(180) translate(10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lend"
+ style="overflow:visible;">
+ <path
+ id="path3598"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3616"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective4090"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-9"
+ style="overflow:visible">
+ <path
+ id="path3616-6"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4138">
+ <rect
+ y="400.72647"
+ x="355.85593"
+ height="239.15941"
+ width="380.12735"
+ id="rect4140"
+ style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </clipPath>
+ <inkscape:perspective
+ id="perspective4179"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5582"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5607"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5640"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5677"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6297"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6516"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-9-6"
+ style="overflow:visible">
+ <path
+ id="path3616-6-7"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-3"
+ style="overflow:visible">
+ <path
+ id="path3616-1"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6524"
+ style="overflow:visible">
+ <path
+ id="path6526"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6528"
+ style="overflow:visible">
+ <path
+ id="path6530"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6532"
+ style="overflow:visible">
+ <path
+ id="path6534"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6727"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6761"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6795"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6829"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6854"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6879"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6917"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6942"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6992"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective7017"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective7044"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective7109"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective7162"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.1110909"
+ inkscape:cx="628.58214"
+ inkscape:cy="268.45594"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1129"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Daniel d'Andrada</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="scene coords and view"
+ style="display:inline" />
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-109.70985,-181.86302)"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="149.50526"
+ y="441.005"
+ id="text5624"
+ transform="translate(109.70985,181.86302)"><tspan
+ sodipodi:role="line"
+ id="tspan5626"
+ x="149.50526"
+ y="441.005" /></text>
+ <g
+ id="g7187"
+ transform="translate(0,-59.14063)">
+ <g
+ transform="matrix(0,-1,1,0,-213.61085,662.106)"
+ id="g5556">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-9)"
+ d="m 116.48492,475.26836 0,65.05944"
+ id="path4275" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path4275"
+ id="use5039"
+ transform="matrix(0,-1,1,0,-359.38408,592.06983)"
+ width="1287.3606"
+ height="587.03339"
+ style="stroke:#000000;stroke-opacity:1" />
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2816"
+ d="m 262.00875,272.08164 0,158.03514"
+ style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <use
+ height="1052.3622"
+ width="744.09448"
+ transform="matrix(0,-1,1,0,-44.222313,568.28913)"
+ id="use4048"
+ xlink:href="#path2816"
+ y="0"
+ x="0" />
+ <text
+ id="text4062"
+ y="329.00876"
+ x="371.86655"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="329.00876"
+ x="371.86655"
+ id="tspan4064"
+ sodipodi:role="line">x</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="236.73175"
+ y="428.17239"
+ id="text4066"><tspan
+ sodipodi:role="line"
+ id="tspan4068"
+ x="236.73175"
+ y="428.17239"
+ style="font-size:25px">y</tspan></text>
+ <rect
+ y="306.38171"
+ x="262.04211"
+ height="239.15941"
+ width="380.12735"
+ id="rect4072"
+ style="fill:none;stroke:#c00000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.19999981, 11.19999981;stroke-dashoffset:0" />
+ <g
+ transform="translate(-83.962667,-68.741097)"
+ id="g4260">
+ <g
+ id="g4265">
+ <g
+ transform="matrix(0,-1,1,0,22.893455,555.77274)"
+ id="g4270">
+ <rect
+ style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="rect4250"
+ width="119.76852"
+ height="56.187698"
+ x="-48.902061"
+ y="368.83432" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="-32.238018"
+ y="408.11224"
+ id="text4252"><tspan
+ sodipodi:role="line"
+ id="tspan4256"
+ x="-32.238018"
+ y="408.11224"
+ style="font-size:30px">Hello!</tspan></text>
+ </g>
+ </g>
+ </g>
+ <g
+ transform="translate(-93.813789,-76.274308)"
+ id="g6314">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="319.08594"
+ y="578.7099"
+ id="text4062-4"><tspan
+ sodipodi:role="line"
+ id="tspan4064-9"
+ x="319.08594"
+ y="578.7099"
+ style="font-size:25px">x</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="333.38828"
+ y="568.97662"
+ id="text5628"><tspan
+ sodipodi:role="line"
+ id="tspan5630"
+ x="333.38828"
+ y="568.97662"
+ style="font-size:15px">re</tspan></text>
+ </g>
+ <g
+ transform="translate(-99.813789,-82.274308)"
+ id="g5657">
+ <text
+ id="text4066-8"
+ y="650.86249"
+ x="401.32291"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="650.86249"
+ x="401.32291"
+ id="tspan4068-2"
+ sodipodi:role="line">y</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="416.54037"
+ y="640.86975"
+ id="text5628-4"><tspan
+ sodipodi:role="line"
+ id="tspan5630-4"
+ x="416.54037"
+ y="640.86975"
+ style="font-size:15px">re</tspan></text>
+ </g>
+ <g
+ id="g5703"
+ transform="translate(-69.249959,-10.30059)">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="299.96317"
+ y="572.9151"
+ id="text4062-4-5"><tspan
+ sodipodi:role="line"
+ id="tspan4064-9-2"
+ x="299.96317"
+ y="572.9151"
+ style="font-size:25px">o</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="314.2655"
+ y="563.18182"
+ id="text5628-3"><tspan
+ sodipodi:role="line"
+ id="tspan5630-1"
+ x="314.2655"
+ y="563.18182"
+ style="font-size:15px">re</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
+ d="m 261.01516,545.43474 44.61979,-9.85112"
+ id="path5709" />
+ <g
+ transform="translate(79.921341,-68.079255)"
+ id="g6332">
+ <text
+ id="text6281"
+ y="595.21075"
+ x="195.79665"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:20px"
+ y="595.21075"
+ x="195.79665"
+ id="tspan6283"
+ sodipodi:role="line">p</tspan></text>
+ <g
+ id="g6320">
+ <text
+ id="text5628-6"
+ y="586.96295"
+ x="209.23912"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="586.96295"
+ x="209.23912"
+ id="tspan5630-5"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ </g>
+ <text
+ id="text4062-4-5-0-2"
+ y="298.97778"
+ x="238.72682"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="298.97778"
+ x="238.72682"
+ id="tspan4064-9-2-31-8"
+ sodipodi:role="line">o</tspan></text>
+ </g>
+ <g
+ id="g2995"
+ transform="translate(0,2.5296669)">
+ <g
+ transform="translate(0.57578255,-10)"
+ id="g7333">
+ <g
+ style="display:inline"
+ transform="translate(508.24491,139.94406)"
+ id="g5703-7">
+ <text
+ id="text4062-4-5-0"
+ y="572.9151"
+ x="299.96317"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="572.9151"
+ x="299.96317"
+ id="tspan4064-9-2-31"
+ sodipodi:role="line">o</tspan></text>
+ <text
+ id="text5628-3-8"
+ y="563.18182"
+ x="314.2655"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="563.18182"
+ x="314.2655"
+ id="tspan5630-1-15"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g6314-2"
+ transform="translate(538.11049,133.52639)">
+ <text
+ id="text4062-4-47"
+ y="578.7099"
+ x="319.08594"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="578.7099"
+ x="319.08594"
+ id="tspan4064-9-6"
+ sodipodi:role="line">x</tspan></text>
+ <text
+ id="text5628-39"
+ y="568.97662"
+ x="333.38828"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="568.97662"
+ x="333.38828"
+ id="tspan5630-17"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g5657-2"
+ transform="translate(503.94674,60.603334)">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="401.32291"
+ y="650.86249"
+ id="text4066-8-9"><tspan
+ sodipodi:role="line"
+ id="tspan4068-2-6"
+ x="401.32291"
+ y="650.86249"
+ style="font-size:25px">y</tspan></text>
+ <text
+ id="text5628-4-9"
+ y="640.86975"
+ x="416.54037"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="640.86975"
+ x="416.54037"
+ id="tspan5630-4-2"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ </g>
+ <text
+ id="text6961"
+ y="701.26941"
+ x="126.58235"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:18px"
+ id="tspan7034"
+ y="701.26941"
+ x="126.58235"
+ sodipodi:role="line">Origin, x-axis and y-axis of root element's coordinate system, respectively:</tspan></text>
+ </g>
+ <g
+ id="g2984"
+ transform="translate(0,-1.9073486e-6)">
+ <g
+ transform="translate(1.0267167,-10)"
+ id="g7325">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ x="840.2981"
+ y="684.0318"
+ id="text4062-2"><tspan
+ sodipodi:role="line"
+ id="tspan4064-5"
+ x="840.2981"
+ y="684.0318"
+ style="font-size:25px">x</tspan></text>
+ <text
+ id="text4066-0"
+ y="684.0318"
+ x="872.81464"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="684.0318"
+ x="872.81464"
+ id="tspan4068-6"
+ sodipodi:role="line">y</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ x="807.75714"
+ y="684.0318"
+ id="text4062-4-5-0-2-1"><tspan
+ sodipodi:role="line"
+ id="tspan4064-9-2-31-8-3"
+ x="807.75714"
+ y="684.0318"
+ style="font-size:25px">o</tspan></text>
+ </g>
+ <text
+ id="text6961-9"
+ y="673.31012"
+ x="126.58235"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ id="tspan7034-4"
+ y="673.31012"
+ x="126.58235"
+ sodipodi:role="line"
+ style="font-size:18px">Origin, x-axis and y-axis of scene's coordinate system, respectively:</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="re labels"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend);display:inline"
+ d="m 810.72125,44.25393 0,159.23049"
+ id="path2816-2"
+ sodipodi:nodetypes="cc" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#path2816-2"
+ id="use4048-1"
+ transform="matrix(0,-1,1,0,730.66486,890.49846)"
+ width="744.09448"
+ height="1052.3622" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ x="920.57904"
+ y="102.37642"
+ id="text4062-44"><tspan
+ sodipodi:role="line"
+ id="tspan4064-8"
+ x="920.57904"
+ y="102.37642"
+ style="font-size:25px">x</tspan></text>
+ <text
+ id="text4066-9"
+ y="201.54005"
+ x="785.44415"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="201.54005"
+ x="785.44415"
+ id="tspan4068-8"
+ sodipodi:role="line">y</tspan></text>
+ <g
+ style="display:inline"
+ id="g6707"
+ transform="matrix(0,1,-1,0,1289.7117,-975.54753)">
+ <g
+ transform="matrix(0,-1,1,0,579.40639,594.85409)"
+ id="g5556-2">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-9)"
+ d="m 116.48492,475.26836 0,65.05944"
+ id="path4275-1" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path4275-1"
+ id="use5039-4"
+ transform="matrix(0,-1,1,0,-359.38408,592.06983)"
+ width="1287.3606"
+ height="587.03339"
+ style="stroke:#000000;stroke-opacity:1" />
+ </g>
+ <g
+ transform="translate(709.05457,-135.99301)"
+ id="g4260-9">
+ <g
+ id="g4265-1">
+ <g
+ transform="matrix(0,-1,1,0,22.893455,555.77274)"
+ id="g4270-9">
+ <rect
+ style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="rect4250-5"
+ width="119.76852"
+ height="56.187698"
+ x="-48.902061"
+ y="368.83432" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="-32.238018"
+ y="408.11224"
+ id="text4252-2"><tspan
+ sodipodi:role="line"
+ id="tspan4256-7"
+ x="-32.238018"
+ y="408.11224"
+ style="font-size:30px">Hello!</tspan></text>
+ </g>
+ </g>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-9)"
+ d="m 1054.0324,478.18283 44.6198,-9.85112"
+ id="path5709-4" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ x="753.80981"
+ y="73.748459"
+ id="text4062-4-5-0-2-2"><tspan
+ sodipodi:role="line"
+ id="tspan4064-9-2-31-8-8"
+ x="753.80981"
+ y="73.748459"
+ style="font-size:25px">o,</tspan></text>
+ <g
+ style="display:inline"
+ transform="translate(540.40023,-508.11038)"
+ id="g6314-7">
+ <text
+ id="text4062-4-4"
+ y="578.7099"
+ x="319.08594"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="578.7099"
+ x="319.08594"
+ id="tspan4064-9-3"
+ sodipodi:role="line">x</tspan></text>
+ <text
+ id="text5628-0"
+ y="568.97662"
+ x="333.38828"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="568.97662"
+ x="333.38828"
+ id="tspan5630-7"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g5657-1"
+ transform="translate(369.69724,-503.31019)">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="401.32291"
+ y="650.86249"
+ id="text4066-8-8"><tspan
+ sodipodi:role="line"
+ id="tspan4068-2-5"
+ x="401.32291"
+ y="650.86249"
+ style="font-size:25px">y</tspan></text>
+ <text
+ id="text5628-4-2"
+ y="640.86975"
+ x="416.54037"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="640.86975"
+ x="416.54037"
+ id="tspan5630-4-0"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(477.66248,-499.73772)"
+ id="g5703-1">
+ <text
+ id="text4062-4-5-9"
+ y="572.9151"
+ x="299.96317"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="572.9151"
+ x="299.96317"
+ id="tspan4064-9-2-3"
+ sodipodi:role="line">o</tspan></text>
+ <text
+ id="text5628-3-2"
+ y="563.18182"
+ x="314.2655"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="563.18182"
+ x="314.2655"
+ id="tspan5630-1-1"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g6332-9"
+ transform="translate(628.63381,-483.71504)">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="195.79665"
+ y="595.21075"
+ id="text6281-4"><tspan
+ sodipodi:role="line"
+ id="tspan6283-7"
+ x="195.79665"
+ y="595.21075"
+ style="font-size:20px">p</tspan></text>
+ <g
+ id="g6320-3">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="209.23912"
+ y="586.96295"
+ id="text5628-6-0"><tspan
+ sodipodi:role="line"
+ id="tspan5630-5-5"
+ x="209.23912"
+ y="586.96295"
+ style="font-size:15px">re</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g3015"
+ transform="translate(0,1.6687641)">
+ <text
+ id="text7097"
+ y="548.4328"
+ x="16.200626"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:18px"
+ y="548.4328"
+ x="16.200626"
+ id="tspan7099"
+ sodipodi:role="line">Position of &quot;Hello!&quot; scene window, in root element's coordinate system:</tspan></text>
+ <g
+ transform="translate(502.84035,-47.133889)"
+ id="g6332-9-2"
+ style="display:inline">
+ <text
+ id="text6281-4-3"
+ y="595.21075"
+ x="195.79665"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:20px"
+ y="595.21075"
+ x="195.79665"
+ id="tspan6283-7-7"
+ sodipodi:role="line">p</tspan></text>
+ <g
+ id="g6320-3-9">
+ <text
+ id="text5628-6-0-3"
+ y="586.96295"
+ x="209.23912"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:15px"
+ y="586.96295"
+ x="209.23912"
+ id="tspan5630-5-5-1"
+ sodipodi:role="line">re</tspan></text>
+ </g>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="337.50613"
+ y="391.07339"
+ id="text7150"><tspan
+ sodipodi:role="line"
+ id="tspan7152"
+ x="337.50613"
+ y="391.07339"
+ style="font-size:25px;text-align:center;text-anchor:middle">Orientation angle of 270 degrees</tspan><tspan
+ sodipodi:role="line"
+ x="337.50613"
+ y="422.32339"
+ style="font-size:25px;text-align:center;text-anchor:middle"
+ id="tspan7185">(portrait)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ x="985.86548"
+ y="386.2272"
+ id="text7150-1"><tspan
+ sodipodi:role="line"
+ x="985.86548"
+ y="386.2272"
+ style="font-size:25px;text-align:center;text-anchor:middle"
+ id="tspan7179">Orientation angle of 0 (zero) degrees</tspan><tspan
+ sodipodi:role="line"
+ x="985.86548"
+ y="417.4772"
+ style="font-size:25px;text-align:center;text-anchor:middle"
+ id="tspan7183">(landscape)</tspan></text>
+ <rect
+ style="fill:none;stroke:#c00000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.19999981, 11.19999981;stroke-dashoffset:0;display:inline"
+ id="rect4072-6"
+ width="380.12735"
+ height="239.15941"
+ x="810.75452"
+ y="79.749374" />
+ <text
+ id="text2980"
+ y="576.4328"
+ x="16.200626"
+ style="font-size:16px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:18px"
+ y="576.4328"
+ x="16.200626"
+ id="tspan2982"
+ sodipodi:role="line">The red, dotted, rectangle is the area of the scene rendered by MWindows</tspan></text>
+ </g>
+</svg>
diff --git a/doc/src/images/scene and view.png b/doc/src/images/scene and view.png
new file mode 100644
index 00000000..c4d3c9ce
--- /dev/null
+++ b/doc/src/images/scene and view.png
Binary files differ
diff --git a/doc/src/images/scene and view.svg b/doc/src/images/scene and view.svg
new file mode 100644
index 00000000..d5989923
--- /dev/null
+++ b/doc/src/images/scene and view.svg
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1287.3606"
+ height="587.03339"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="scene and view.svg"
+ inkscape:export-filename="/home/dandrader/work/meegotouch_tutorial/scene and view.png"
+ inkscape:export-xdpi="59.913284"
+ inkscape:export-ydpi="59.913284">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3616"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective4090"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-9"
+ style="overflow:visible">
+ <path
+ id="path3616-6"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4138">
+ <rect
+ y="400.72647"
+ x="355.85593"
+ height="239.15941"
+ width="380.12735"
+ id="rect4140"
+ style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </clipPath>
+ <inkscape:perspective
+ id="perspective4179"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.57544533"
+ inkscape:cx="595.1341"
+ inkscape:cy="343.06313"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1129"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Daniel d'Andrada</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-109.70985,-181.86302)">
+ <g
+ id="g4202"
+ transform="translate(0,-18.07043)">
+ <path
+ transform="translate(-26.249204,41.804288)"
+ d="m 456.9306,323.21764 -44.54637,-13.16886 -44.54636,-13.16885 33.67774,-31.99386 33.67775,-31.99386 10.86862,45.16271 10.86862,45.16272 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.8582311"
+ sodipodi:arg1="0.81103357"
+ sodipodi:r2="26.819132"
+ sodipodi:r1="53.638264"
+ sodipodi:cy="284.32993"
+ sodipodi:cx="419.98727"
+ sodipodi:sides="3"
+ id="path4052"
+ style="fill:#7aa0ff;fill-opacity:1;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3"
+ sodipodi:type="star" />
+ <path
+ d="m 427.76482,456.40802 c 0,12.88625 -40.4797,23.33263 -90.41393,23.33263 -49.93423,0 -90.41392,-10.44638 -90.41392,-23.33263 0,-12.88625 40.47969,-23.33263 90.41392,-23.33263 49.93423,0 90.41393,10.44638 90.41393,23.33263 z"
+ sodipodi:ry="23.332626"
+ sodipodi:rx="90.413925"
+ sodipodi:cy="456.40802"
+ sodipodi:cx="337.35089"
+ id="path4050"
+ style="fill:#7aa0ff;fill-opacity:1;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3"
+ sodipodi:type="arc" />
+ <path
+ id="path2816"
+ d="m 355.82254,275.58018 0,248.88134"
+ style="fill:none;stroke:#000000;stroke-width:1.39999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" />
+ <use
+ height="1052.3622"
+ width="744.09448"
+ transform="matrix(0,-1,1,0,-44.753262,756.44766)"
+ id="use4048"
+ xlink:href="#path2816"
+ y="0"
+ x="0" />
+ <path
+ transform="translate(443.31989,225.54872)"
+ d="m 97.219275,306.69034 -48.355983,0.14644 -24.304816,-41.80429 24.051167,-41.95073 48.355983,-0.14644 24.304814,41.80428 -24.051165,41.95074 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="true"
+ sodipodi:arg2="1.5677678"
+ sodipodi:arg1="1.0441691"
+ sodipodi:r2="41.877705"
+ sodipodi:r1="48.356205"
+ sodipodi:cy="264.88605"
+ sodipodi:cx="72.914459"
+ sodipodi:sides="6"
+ id="path4060"
+ style="fill:#7ba0ff;fill-opacity:1;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3"
+ sodipodi:type="star" />
+ <text
+ id="text4062"
+ y="423.35352"
+ x="465.68033"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:25px"
+ y="423.35352"
+ x="465.68033"
+ id="tspan4064"
+ sodipodi:role="line">x</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="330.54553"
+ y="522.51715"
+ id="text4066"><tspan
+ sodipodi:role="line"
+ id="tspan4068"
+ x="330.54553"
+ y="522.51715"
+ style="font-size:25px">y</tspan></text>
+ <rect
+ y="400.72647"
+ x="355.8559"
+ height="239.15941"
+ width="380.12735"
+ id="rect4072"
+ style="fill:none;stroke:#c00000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.19999981, 11.19999981;stroke-dashoffset:0" />
+ </g>
+ <g
+ id="g4214"
+ transform="translate(0,-25.989688)">
+ <rect
+ y="345.98074"
+ x="946.32233"
+ height="239.15941"
+ width="380.12735"
+ id="rect4072-1"
+ style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:1.39999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <path
+ clip-path="url(#clipPath4138)"
+ d="m 427.76482,456.40802 c 0,12.88625 -40.4797,23.33263 -90.41393,23.33263 -49.93423,0 -90.41392,-10.44638 -90.41392,-23.33263 0,-12.88625 40.47969,-23.33263 90.41392,-23.33263 49.93423,0 90.41393,10.44638 90.41393,23.33263 z"
+ sodipodi:ry="23.332626"
+ sodipodi:rx="90.413925"
+ sodipodi:cy="456.40802"
+ sodipodi:cx="337.35089"
+ id="path4050-8"
+ style="fill:#7aa0ff;fill-opacity:1;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3"
+ sodipodi:type="arc"
+ transform="translate(590.46641,-54.745717)" />
+ <path
+ transform="translate(1033.7863,170.803)"
+ d="m 97.219275,306.69034 -48.355983,0.14644 -24.304816,-41.80429 24.051167,-41.95073 48.355983,-0.14644 24.304814,41.80428 -24.051165,41.95074 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="true"
+ sodipodi:arg2="1.5677678"
+ sodipodi:arg1="1.0441691"
+ sodipodi:r2="41.877705"
+ sodipodi:r1="48.356205"
+ sodipodi:cy="264.88605"
+ sodipodi:cx="72.914459"
+ sodipodi:sides="6"
+ id="path4060-8"
+ style="fill:#7ba0ff;fill-opacity:1;stroke-width:1.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3"
+ sodipodi:type="star" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="951.49762"
+ y="689.10687"
+ id="text4163"><tspan
+ sodipodi:role="line"
+ id="tspan4165"
+ x="951.49762"
+ y="689.10687"
+ style="font-size:25px">MApplicationWindow viewport</tspan></text>
+ <path
+ style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 842.20151,236.24997 0,406.64158"
+ id="path4169" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="487.32611"
+ y="689.10687"
+ id="text4163-5"><tspan
+ sodipodi:role="line"
+ id="tspan4165-2"
+ x="487.32611"
+ y="689.10687"
+ style="font-size:25px;text-align:center;text-anchor:middle">MScene and the rectangular area viewed</tspan><tspan
+ sodipodi:role="line"
+ x="487.32611"
+ y="720.35687"
+ style="font-size:25px;text-align:center;text-anchor:middle"
+ id="tspan4196">by MApplicationWindow</tspan></text>
+ </g>
+</svg>
diff --git a/doc/src/launcher.dox b/doc/src/launcher.dox
new file mode 100644
index 00000000..d4a001fc
--- /dev/null
+++ b/doc/src/launcher.dox
@@ -0,0 +1,209 @@
+/*! \page launcher How to write launchable applications
+
+\section intro Introduction
+
+In order to be started with the launcher, an application needs to
+
+\li use the MApplication instance from MComponentCache
+
+\li be compiled and linked to a position independent binary
+(executable or library)
+
+\li started with the \c invoker command instead of executing the
+executable file.
+
+In the following we will explain how the launcher works and then
+explain how to fulfill the requirements above.
+
+
+\section howitworks How the launcher works
+
+Applauncherd is a daemon that helps launching applications faster. It
+preloads MeeGo Touch and Qt dynamically linked libraries and makes
+some initializations before loading application binaries and running
+them.
+
+Applauncherd forks the will-be-application process a.k.a booster
+before knowing which application is going to be launched next. Booster
+processes do application-type specific initializations, for instance
+the MeeGo Touch booster instantiates an MApplication object and stores
+it to MComponentCache. Then the booster process waits for a connection
+from the \c invoker.
+
+An application of the boosted application type is invoked with the \c
+invoker. The invoker sends the booster process the name of the
+application binary and the running environment. This triggers the
+booster process to load the application binary, to initialize its
+environment, and finally to call its \c main() function.
+
+
+\section source Source code modifications
+
+MApplication instance must be picked up from the MComponentCache. For
+further acceleration, MApplicationWindow can be taken from the cache
+as well. That is, in your main program you should have:
+
+\code
+MApplication* application = MComponentCache::mApplication(argc, argv);
+MApplicationWindow* window = MComponentCache::mApplicationWindow();
+\endcode
+
+Note that applications that use MComponentCache can be run without the
+launcher/invoker as well.
+
+It is strongly encouraged to hide the unnecessary symbols in the
+application binary. For that purpose, export the main function
+explicitly:
+
+\code
+#include <MExport>
+
+M_EXPORT int main(int argc, char **argv)
+{
+...
+}
+\endcode
+
+
+\section compilation Compilation and Linking
+
+Binaries intended to be run with applauncherd should be compiled with
+\c -fPIC option to produce position independent code. In order to
+produce a position independent executable, \c -pie option and \c
+-rdynamic options can be used in linking. This allows the result to be
+executed traditionally and with the launcher.
+
+To improve linking and load times of shared object libraries the size
+of dynamic export table it is encouraged to hide the unnecessary
+symbols from the resulting binary by using \c -fvisibility=hidden and
+\c -fvisibility-inlines-hidden flags in compilation as well.
+
+
+\subsection qmaketips Building with QMake
+
+Define the following variables in .pro file:
+
+\code
+ QMAKE_CXXFLAGS += -fPIC -fvisibility=hidden -fvisibility-inlines-hidden
+ QMAKE_LFLAGS += -pie -rdynamic
+\endcode
+
+and QMake will use correct options for compiler and linker.
+
+
+\subsection cmaketips Building with CMake
+
+With CMake, compile and install your program like this:
+
+\code
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fvisibility=hidden -fvisibility-inlines-hidden")
+ set(CMAKE_EXE_LINKER_FLAGS " -pie -rdynamic")
+ install(PROGRAMS myapplication DESTINATION /usr/bin RENAME myapplication.launch)
+\endcode
+
+
+\section running Running boosted application
+
+Check that applauncherd package is installed and applancherd daemon is
+running. You can now run your application as usual like
+/usr/bin/yourapplication, or use the mboosted launching by running:
+
+\code
+invoker --type=m /usr/bin/yourapplication
+\endcode
+
+\section packaging Packaging and distributing
+
+It is recommended to rename application binary to
+<application_name>.launch and replace original binary by a script that
+executes invoker with correct application type and the name of
+application binary as a parameter. Launch script example for typical
+application is:
+
+\code
+#!/bin/sh
+exec /usr/bin/invoker --type=m $0.launch "$@"
+\endcode
+
+Note that even if the binary is renamed to application_name.launch,
+application identifier does not change (optional parameter of
+MComponentCache::mApplication).
+
+\c .desktop and D-Bus \c .service files can be modified so that instead of
+normal execution there is
+
+\code
+Exec=/usr/bin/invoker --type=m /usr/bin/application_binary
+\endcode
+
+Application packages that use the launcher depend on the applauncherd
+package.
+
+
+\section limits Launcher usage limitations
+
+Current launcher implementation does not support following Qt and
+MeeGo Touch command line options (see QApplication and MApplication
+docs for more information about command options usage):
+
+\li \c -style
+\li \c -stylesheet
+\li \c -session
+\li \c -widgetcount
+\li \c -reverse
+\li \c -graphicssystem
+\li \c -display
+\li \c -geometry
+\li \c -fn
+\li \c -font
+\li \c -bg
+\li \c -background
+\li \c -fg
+\li \c -foreground
+\li \c -btn
+\li \c -button
+\li \c -name
+\li \c -title
+\li \c -visual
+\li \c -ncols
+\li \c -cmap
+\li \c -im
+\li \c -inputstyle
+\li \c -genimglist
+\li \c -remote-theme
+\li \c -fullscreen
+\li \c -output-level
+\li \c -output-file
+\li \c -disable-m-input-context
+\li \c -output-prefix
+\li \c -no-output-prefix
+
+
+\section sample Sample MeeGo Touch launchable application
+
+\code
+
+#include <MApplication>
+#include <MApplicationPage>
+#include <MApplicationWindow>
+#include <MComponentCache>
+#include <MExport>
+
+M_EXPORT int main(int argc, char ** argv)
+{
+ MApplication *app = MComponentCache::mApplication(argc, argv);
+ MApplicationWindow* window = MComponentCache::mApplicationWindow();
+ MApplicationPage mainPage;
+
+ window->show();
+
+ mainPage.setTitle("Hello World! (Now supports Launcher)");
+ mainPage.appear();
+
+ return app->exec();
+}
+
+\endcode
+
+*/
+
diff --git a/doc/src/layouts.dox b/doc/src/layouts.dox
index 661f7c00..19c04acb 100644
--- a/doc/src/layouts.dox
+++ b/doc/src/layouts.dox
@@ -2,15 +2,15 @@
\section basics Basics
-libdui includes a set of layout management classes that are used to describe how widgets are laid out in an application's user interface. These layouts automatically position and resize widgets when the amount of space available for them changes, ensuring that they are consistently arranged and that the user interface as a whole remains usable.
+MeeGo Touch includes a set of layout management classes that are used to describe how widgets are laid out in an application's user interface. These layouts automatically position and resize widgets when the amount of space available for them changes, ensuring that they are consistently arranged and that the user interface as a whole remains usable.
There are two different sets of layout classes.
The first is provided by Qt, and inherit from QGraphicsLayout, including QGraphicsLinearLayout, QGraphicsGridLayout, etc. These Qt classes provide an easy way to layout items as you want.
-The second set of layout classes is provided by libdui, and offer additional feature, at the cost of slightly more overhead. The libdui classes work in a slightly different way - there is a single DuiLayout to which you can add one or more policies that inherit DuiAbstractLayoutPolicy. This allows a single layout to have multiple policies, with one active at a given time. A different policy can be made active at any time, causing the items within the layout to move into their new position.
+The second set of layout classes is provided by MeeGo Touch, and offer additional feature, at the cost of slightly more overhead. The MeeGo Touch classes work in a slightly different way - there is a single MLayout to which you can add one or more policies that inherit MAbstractLayoutPolicy. This allows a single layout to have multiple policies, with one active at a given time. A different policy can be made active at any time, causing the items within the layout to move into their new position.
-The multiple policies in a single DuiLayout do not even need to contain the same items. New items will be shown and hidden as necessary (Unless the item is itself a layout, since a layout cannot be directly hidden itself, but a layout inside of a widget inside of a layout will be hidden. See \ref layout-inside-layout).
+The multiple policies in a single MLayout do not even need to contain the same items. New items will be shown and hidden as necessary (Unless the item is itself a layout, since a layout cannot be directly hidden itself, but a layout inside of a widget inside of a layout will be hidden. See \ref layout-inside-layout).
\section tips Tips for Using Layouts
\li When you use a layout or layout policy, you do not need to pass a parent when constructing the child widgets. The layout will automatically reparent the widgets so that they are children of the widget on which the layout is installed.
@@ -19,9 +19,9 @@ The multiple policies in a single DuiLayout do not even need to contain the same
\li You can have one policy when in landscape mode and another policy when portrait mode. You do not even need to have the same items in each case.
-\li If you only want to switch between a horizontal and vertical linear layout policy, you can use DuiLinearLayoutPolicy::setOrientation() instead of multiple policies.
+\li If you only want to switch between a horizontal and vertical linear layout policy, you can use MLinearLayoutPolicy::setOrientation() instead of multiple policies.
-\li For a complex set of nested layouts it is easier and more lightweight to use nested \link QGraphicsLayout QGraphicsLayouts\endlink than to try to nest \link DuiLayout DuiLayouts \endlink.
+\li For a complex set of nested layouts it is easier and more lightweight to use nested \link QGraphicsLayout QGraphicsLayouts\endlink than to try to nest \link MLayout MLayouts \endlink.
\li See the QLayout and QGraphicsLayout documentation for more information and tips, and see the examples.
@@ -33,24 +33,24 @@ For example the calculator example has the following code snippet:
\dontinclude calculator/calculatorwidget.cpp
\skip CalculatorWidget::CalculatorWidget
-\until DuiLayout *layout
+\until MLayout *layout
\section main Main Policies
-\li DuiLinearLayoutPolicy - For placing items horizontally or vertically:
+\li MLinearLayoutPolicy - For placing items horizontally or vertically:
-\image html duilinearlayoutpolicy_small.png
+\image html mlinearlayoutpolicy_small.png
-\li DuiGridLayoutPolicy - For placing items in a grid:
+\li MGridLayoutPolicy - For placing items in a grid:
-\image html duigridlayoutpolicy_small.png
+\image html mgridlayoutpolicy_small.png
-\li DuiFlowLayoutPolicy - For placing items in a horizontal line, overflowing onto the next line:
+\li MFlowLayoutPolicy - For placing items in a horizontal line, overflowing onto the next line:
-\image html duiflowlayoutpolicy_small.png
+\image html mflowlayoutpolicy_small.png
-\li DuiFreestyleLayoutPolicy - For placing items freely, but still preventing items from overlapping:
+\li MFreestyleLayoutPolicy - For placing items freely, but still preventing items from overlapping:
-\image html duifreestylelayoutpolicy_small.png
+\image html mfreestylelayoutpolicy_small.png
\section multiple Multiple Policies
@@ -63,12 +63,12 @@ A more concrete example is given with the \ref example-calculator "example calcu
\htmlonly <center><a href="example-calculator.html"><img src="calculator_landscape_small.png"></a>
<a href="example-calculator.html"><img src="calculator_portrait_small.png"></a></center> \endhtmlonly
-\sa \ref layout-multiplepolicies, \ref example-calculator, \ref layout-inside-layout, DuiLayout
+\sa \ref layout-multiplepolicies, \ref example-calculator, \ref layout-inside-layout, MLayout
\section usingqgraphicslayout More complex layouting using QGraphicsLayout
For a more complex layout of items, you can place multiple layouts together. This is easiest using a mix of
-DuiLayouts and QGraphicsLayout, using a DuiLayout only when animations and multiple policies are required.
+MLayouts and QGraphicsLayout, using a MLayout only when animations and multiple policies are required.
For example using multiple \link QGraphicsLinearLayout QGraphicsLinearLayouts \endlink we can obtain a layout where items are laid in rows, but the items do not line up vertically. For \ref layout-qgraphicslayout "example":
@@ -81,10 +81,10 @@ For example using multiple \link QGraphicsLinearLayout QGraphicsLinearLayouts \e
\li \ref layout-qgraphicslinearlayout
\li \ref layout-qgraphicsgridlayout
-\li \ref layout-duilinearlayoutpolicy
-\li \ref layout-duigridlayoutpolicy
-\li \ref layout-duiflowlayoutpolicy
-\li \ref layout-duifreestylelayoutpolicy
+\li \ref layout-mlinearlayoutpolicy
+\li \ref layout-mgridlayoutpolicy
+\li \ref layout-mflowlayoutpolicy
+\li \ref layout-mfreestylelayoutpolicy
\li \ref layout-multiplepolicies
\li \ref layout-inside-layout
\li \ref example-calculator
diff --git a/doc/src/mainpage.dox b/doc/src/mainpage.dox
index 8776f5e8..d5ab0dce 100644
--- a/doc/src/mainpage.dox
+++ b/doc/src/mainpage.dox
@@ -13,7 +13,7 @@
<li><a href="installation.html">Installation</a> and First Steps with MeeGo Touch</li>
<li>Examples and Demos</li>
<li><strong><a href="news.html">What's New in MeeGo Touch</a></strong></li>
- <li><strong><a href="tutorial.html">Tutorial</a></strong></li>
+ <li><strong><a href="tutorial.html">Your first MeeGo Touch application</a></strong></li>
</ul>
</td>
<td>
@@ -47,6 +47,7 @@
<li><a href="servicefw.html">MeeGo Touch Service Framework</a></li>
<li><a href="i18n.html">Internationalization</a></li>
<li><a href="plainqt.html">Developing Qt applications for Maemo 5 and MeeGo</a></li>
+ <li>\subpage sceneandscenewindows "The scene and its scene windows"</li>
</ul>
</td>
<td>
@@ -57,7 +58,7 @@
<li><a href="appletdevelopment.html">Applets</a></li>
<li><a href="applicationextensions.html">Application extensions</a></li>
<li><a href="appletinstallationsource.html">Applet installation sources</a></li>
- <li><a href="prestart.html">Prestarting</a></li>
+ <li><a href="faststart.html">Fast application startup</a></li>
<li><a href="notifications.html">Notifications</a></li>
<li><a href="settingslanguageschema.html">Settings language reference</a></li>
</ul>
diff --git a/doc/src/news.dox b/doc/src/news.dox
index b5494530..1ce2d11d 100644
--- a/doc/src/news.dox
+++ b/doc/src/news.dox
@@ -4,6 +4,11 @@
\subsection New
+- Application developers can control the behaviour of automatic software input
+ panel (SIP) requests on the MTextEdit level:
+ - isAutoSipEnabled()
+ - setAutoSipEnabled()
+
- MSceneManager now allows a widget to request cursor visibility directly via
the ensureCursorVisible() slot.
diff --git a/doc/src/prestart.dox b/doc/src/prestart.dox
index cfea7d94..03cae505 100644
--- a/doc/src/prestart.dox
+++ b/doc/src/prestart.dox
@@ -1,6 +1,6 @@
-/*! \page prestart Prestartable application development How-To
+/*! \page prestart How to prestartable and lazy shutdownable applications
-Prestarting and lazy shutdown reduces the start-up time of an
+Prestarting and lazy shutdown reduces the startup time of an
application to zero: the application is able to show its GUI
immediately when requested. MeeGo Touch supports prestarting and lazy shutdown
of application services, that is, applications that are started by
@@ -12,9 +12,9 @@ state during boot by a daemon called \b Applifed. In that state they are running
in the background in their mainloop but not showing nor doing anything. If
application gets terminated, Applifed re-prestarts is automatically.
-A special type of prestarting, called "Lazy shutdown" allows an application
-to resume the \b prestarted \b state instead of terminating. This makes the next
-application start-up very fast. Automatically prestarted applications
+Lazy shutdown allows an application to enter the \b prestarted \b
+state instead of terminating, when closed by user. This makes the next
+application startup very fast. Automatically prestarted applications
can use lazy shutdown as well.
diff --git a/doc/src/rotation.dox b/doc/src/rotation.dox
index 9533b1cc..e82defb7 100644
--- a/doc/src/rotation.dox
+++ b/doc/src/rotation.dox
@@ -1,5 +1,7 @@
/*! \page rotation Rotation
+\warning THIS DOCUMENT IS OUTDATED
+
\section basics Basics
Libdui provides support for rotation of the screen (i.e. changing the orientation). Rotation consists of multiple (simultaneous) actions:
diff --git a/doc/src/sceneandscenewindows.dox b/doc/src/sceneandscenewindows.dox
new file mode 100644
index 00000000..92aa4990
--- /dev/null
+++ b/doc/src/sceneandscenewindows.dox
@@ -0,0 +1,19 @@
+/*! \page sceneandscenewindows The scene and its scene windows
+
+All graphical items of a MeeGo Touch application are positioned in a Cartesian plane which we call "scene". The scene is represented by the <code>MScene</code> class. The X-axis grows rightwards and the Y-axis downwards.
+
+What is seen through an MApplicationWindow is just a rectangular area of that scene. This rectangle has its top left corner on (0, 0). Its width and height are equivalent to the device's horizontal and vertical pixel resolution, respectively.
+
+\image html "scene and view.png" "MScene and MApplicationWindow"
+
+Scene windows are the graphical items that comprise the high-level layout of a MeeGo Touch application. Virtually all graphical items in a standard MeeGo Touch application are held in a scene window of some type. They are represented by the <code>MSceneWindow</code> class. Scene windows in a scene are analogous to top level windows in a traditional desktop windowing system.
+
+\image html "scene windows.png" "The basic scene windows of a MeeGo Touch application"
+
+The stacking order (Z-value) and geometry (position and size) of scene windows are controlled by a scene manager (<code>MSceneManager</code>). When the device orientation changes, the scene manager orchestrates the rotation and repositioning of all its scene windows. In order to properly rotate the UI, the scene manager have all its scene windows inside a graphical item called <i>root element</i> (meaning that it is the parent of all scene windows in the scene graph), which gets rotated instead of the scene windows themselves. This means that scene windows are positioned in the root element's coordinate system, not in scene coordinates. MeeGo Touch defines four possible rotation angles for its UI: 0, 90, 180 and 270 degrees (clockwise).
+
+\image html "root element and scene window.png" "A scene window at different orientation angles"
+
+<code>MApplicationWindow</code> creates its own <code>MScene</code> and <code>MSceneManager</code>. It also automatically populates the scene with all the scene windows that comprise a standard MeeGo Touch GUI, such as a status bar, navigation bar, home button panel, etc.
+
+*/
diff --git a/doc/src/tutorial.dox b/doc/src/tutorial.dox
index dc747380..8605950d 100644
--- a/doc/src/tutorial.dox
+++ b/doc/src/tutorial.dox
@@ -1,4 +1,4 @@
-/*! \page tutorial MeeGo Touch Tutorial
+/*! \page tutorial Your first MeeGo Touch application
This document explains, step-by-step, how to create a simple MeeGo Touch application.
Knowledge of the basics of Qt framework, such as QObject and its signals and slots mechanism, is recommended.
@@ -28,7 +28,7 @@ That will generate a project file (ends with <code>.pro</code>) in the current d
\include tutorial.pro
-That project file is good to build plain Qt applications but won't work as it is for MeeGo Touch ones. To bring in the MeeGo Touch libraries, headers and compilation options into the build all that is needed is the addition of the following line to the project file:
+That project file is suitable for building plain Qt applications but won't work as it is for MeeGo Touch ones. To bring in the MeeGo Touch libraries, headers and compilation options into the build all that is needed is the addition of the following line to the project file:
\code
CONFIG += meegotouch
@@ -69,12 +69,10 @@ With the addition of the application page our <code>main.cpp</code> should now l
Now you should be able to see the title of your page being displayed in the navigation bar and the "Hello World!" text below it. You can also try to pan the page to see what happens. Since the text fits within the screen boundaries the page bounces back to its original position after each panning gesture.
-This is the minimal code to get a "Hello World!" MeeGo Touch application working. Before adding more features to it it's important to have some understanding of the MeeGo Touch scene and its scene windows.
+This is the minimal code to get a "Hello World!" MeeGo Touch application working.
-\section scenewindows The scene and its scene windows
+\section whereToGoFromHere Where to go from here
-To be written...
-
-\image html "scene windows.png" "The basic scene windows of a MeeGo Touch application"
+Understand the \subpage sceneandscenewindows "MeeGo Touch scene and its scene windows".
*/
diff --git a/examples/apscanner/apscanner.pro b/examples/apscanner/apscanner.pro
index 58487551..8af2f460 100644
--- a/examples/apscanner/apscanner.pro
+++ b/examples/apscanner/apscanner.pro
@@ -1,4 +1,4 @@
-CONFIG += m qt link_pkgconfig debug
+CONFIG += meegotouch qt link_pkgconfig debug
TEMPLATE = app
TARGET = apscanner
DEPENDPATH += .
@@ -21,4 +21,3 @@ HEADERS += apscanner.h \
# libm first:
INCLUDEPATH += ../../src/include
QMAKE_LIBDIR += ../../lib/
-LIBS += -lmeegotouch
diff --git a/examples/calculator/calculator.pro b/examples/calculator/calculator.pro
index a8667cd3..ffdd1cfa 100644
--- a/examples/calculator/calculator.pro
+++ b/examples/calculator/calculator.pro
@@ -1,16 +1,7 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += calculator.cpp calculatorbutton.cpp calculatorwidget.cpp
HEADERS += *.h
-INCLUDEPATH += ../../src/include
-QMAKE_LIBDIR += ../../lib/
-
-# The following lines are only to allow building the
-# example inside the source tree without installing
-# libm first:
-INCLUDEPATH += ../../src/include
-QMAKE_LIBDIR += ../../lib/
-LIBS += -lmeegotouch
diff --git a/examples/chaining/chainingexampleapp1/chainingexampleapp1.pro b/examples/chaining/chainingexampleapp1/chainingexampleapp1.pro
index 747410a1..758a7aa4 100644
--- a/examples/chaining/chainingexampleapp1/chainingexampleapp1.pro
+++ b/examples/chaining/chainingexampleapp1/chainingexampleapp1.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = chainingexampleapp1
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
OBJECTS_DIR = ./.obj
MOC_DIR = ./.moc
diff --git a/examples/chaining/chainingexampleapp2/chainingexampleapp2.pro b/examples/chaining/chainingexampleapp2/chainingexampleapp2.pro
index 1dbf4a99..ce9ddd26 100644
--- a/examples/chaining/chainingexampleapp2/chainingexampleapp2.pro
+++ b/examples/chaining/chainingexampleapp2/chainingexampleapp2.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = chainingexampleapp2
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
OBJECTS_DIR = ./.obj
MOC_DIR = ./.moc
diff --git a/examples/chaining/chainingexampleapp2/imageviewer.cpp b/examples/chaining/chainingexampleapp2/imageviewer.cpp
index 846d9245..27be761d 100644
--- a/examples/chaining/chainingexampleapp2/imageviewer.cpp
+++ b/examples/chaining/chainingexampleapp2/imageviewer.cpp
@@ -6,11 +6,12 @@
#include <MButton>
#include <MApplication>
#include <MApplicationWindow>
+#include <MApplicationPage>
+#include <MSceneWindow>
#include <MApplicationIfProxy>
-ImageViewer::ImageViewer( MButton *button )
+ImageViewer::ImageViewer()
{
- this->button = button;
}
ImageViewer::~ImageViewer()
@@ -22,10 +23,16 @@ bool ImageViewer::showImage(const QString &uri, const QStringList &uriList)
qDebug() << __PRETTY_FUNCTION__;
Q_UNUSED( uriList );
- MApplication *mApp = MApplication::instance();
- mApp->activeWindow()->raise();
+ MApplicationWindow *mWin = new MApplicationWindow();
+ mWin->setObjectName( "MApplicationWindow#2" );
+ mWin->setAttribute( Qt::WA_DeleteOnClose, true );
- button->setText( uri );
+ MApplicationPage *p = new MApplicationPage();
+ mWin->show();
+ p->appear( mWin, MSceneWindow::DestroyWhenDone );
+
+ MButton *b = new MButton( p->centralWidget() );
+ b->setText( uriList[0] );
return true;
}
diff --git a/examples/chaining/chainingexampleapp2/imageviewer.h b/examples/chaining/chainingexampleapp2/imageviewer.h
index 66c46ca4..b5043a09 100644
--- a/examples/chaining/chainingexampleapp2/imageviewer.h
+++ b/examples/chaining/chainingexampleapp2/imageviewer.h
@@ -10,14 +10,11 @@ class ImageViewer: public QObject
Q_OBJECT
public:
- ImageViewer( MButton *button );
+ ImageViewer();
~ImageViewer();
public slots:
bool showImage(const QString &uri, const QStringList &uriList);
-
-private:
- MButton *button;
};
#endif // IMAGEVIEWER_H
diff --git a/examples/chaining/chainingexampleapp2/main.cpp b/examples/chaining/chainingexampleapp2/main.cpp
index 23188931..ead163df 100644
--- a/examples/chaining/chainingexampleapp2/main.cpp
+++ b/examples/chaining/chainingexampleapp2/main.cpp
@@ -21,7 +21,7 @@ int main(int argc, char** argv)
MButton b(p.centralWidget());
b.setText("NO");
- ImageViewer myImageViewer( &b );
+ ImageViewer myImageViewer;
new ChainingExampleInterfaceAdaptor( &myImageViewer );
diff --git a/examples/chaining/chainingexampleinterface/chainingexampleinterface.pro b/examples/chaining/chainingexampleinterface/chainingexampleinterface.pro
index 63d8742b..0515f7ea 100644
--- a/examples/chaining/chainingexampleinterface/chainingexampleinterface.pro
+++ b/examples/chaining/chainingexampleinterface/chainingexampleinterface.pro
@@ -1,6 +1,6 @@
TEMPLATE = lib
TARGET = chainingexampleinterface
-CONFIG += dll m
+CONFIG += dll meegotouch
QT += dbus
system(m-servicefwgen -p com.nokia.ChainingExampleInterface)
diff --git a/examples/containertest/containertest.pro b/examples/containertest/containertest.pro
index 1b00a831..f6665078 100644
--- a/examples/containertest/containertest.pro
+++ b/examples/containertest/containertest.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = containertest
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
# Input
SOURCES += main.cpp
@@ -13,4 +13,3 @@ QMAKE_LIBDIR += ../../lib/
# libm first:
INCLUDEPATH += ../../src/include
QMAKE_LIBDIR += ../../lib/
-LIBS += -lmeegotouch
diff --git a/examples/helloworld/helloworld.pro b/examples/helloworld/helloworld.pro
index 318bae69..4422c71d 100644
--- a/examples/helloworld/helloworld.pro
+++ b/examples/helloworld/helloworld.pro
@@ -1,13 +1,7 @@
TEMPLATE = app
TARGET = helloworld
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
# Input
SOURCES += main.cpp
-# The following lines are only to allow building the
-# example inside the source tree without installing
-# libm first:
-INCLUDEPATH += ../../src/include
-QMAKE_LIBDIR += ../../lib/
-LIBS += -lmeegotouch
diff --git a/examples/imtoolbar/imtoolbar.pro b/examples/imtoolbar/imtoolbar.pro
index 0906685b..721baa00 100644
--- a/examples/imtoolbar/imtoolbar.pro
+++ b/examples/imtoolbar/imtoolbar.pro
@@ -3,7 +3,7 @@ include($$MROOT/mkspecs/common.pri)
TEMPLATE = app
TARGET = imtoolbar
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
DEPENDPATH += .
INCLUDEPATH += .
diff --git a/examples/layout/hidden_widgets/hidden_widgets.pro b/examples/layout/hidden_widgets/hidden_widgets.pro
index 21552123..ffd3c0f3 100644
--- a/examples/layout/hidden_widgets/hidden_widgets.pro
+++ b/examples/layout/hidden_widgets/hidden_widgets.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/layout_inside_layout/layout_inside_layout.pro b/examples/layout/layout_inside_layout/layout_inside_layout.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/layout_inside_layout/layout_inside_layout.pro
+++ b/examples/layout/layout_inside_layout/layout_inside_layout.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/mflowlayoutpolicy/.gitignore b/examples/layout/mflowlayoutpolicy/.gitignore
index ee40536b..191dac05 100644
--- a/examples/layout/mflowlayoutpolicy/.gitignore
+++ b/examples/layout/mflowlayoutpolicy/.gitignore
@@ -1 +1 @@
-duiflowlayoutpolicy
+mflowlayoutpolicy
diff --git a/examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.dox b/examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.dox
deleted file mode 100644
index 16d4aa94..00000000
--- a/examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
-\page layout-duiflowlayoutpolicy DuiFlowLayoutPolicy example
-
-Source code for a simple example of DuiFlowLayoutPolicy.
-
-\image html duiflowlayoutpolicy.png
-
-\include examples/layout/duiflowlayoutpolicy/duiflowlayoutpolicy.cpp
-
-Styled with the following duiflowlayoutpolicy.css file:
-\include examples/layout/duiflowlayoutpolicy/duiflowlayoutpolicy.css
-
-And compiled with the following duiflowlayoutpolicy.pro file:
-\include examples/layout/duiflowlayoutpolicy/duiflowlayoutpolicy.pro
-
-*/
diff --git a/examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.css b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.css
index d09e0b79..d09e0b79 100644
--- a/examples/layout/mflowlayoutpolicy/duiflowlayoutpolicy.css
+++ b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.css
diff --git a/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.dox b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.dox
new file mode 100644
index 00000000..383f45fe
--- /dev/null
+++ b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.dox
@@ -0,0 +1,16 @@
+/**
+\page layout-mflowlayoutpolicy DuiFlowLayoutPolicy example
+
+Source code for a simple example of DuiFlowLayoutPolicy.
+
+\image html mflowlayoutpolicy.png
+
+\include examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.cpp
+
+Styled with the following mflowlayoutpolicy.css file:
+\include examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.css
+
+And compiled with the following mflowlayoutpolicy.pro file:
+\include examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro
+
+*/
diff --git a/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro
+++ b/examples/layout/mflowlayoutpolicy/mflowlayoutpolicy.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/mfreestylelayoutpolicy/.gitignore b/examples/layout/mfreestylelayoutpolicy/.gitignore
index d587b126..40726697 100644
--- a/examples/layout/mfreestylelayoutpolicy/.gitignore
+++ b/examples/layout/mfreestylelayoutpolicy/.gitignore
@@ -1 +1 @@
-duifreestylelayoutpolicy
+mfreestylelayoutpolicy
diff --git a/examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.dox b/examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.dox
deleted file mode 100644
index 72c545bd..00000000
--- a/examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
-\page layout-duifreestylelayoutpolicy DuiFreestyleLayoutPolicy example
-
-Source code for a simple example of DuiFreestyleLayoutPolicy.
-
-\image html duifreestylelayoutpolicy.png
-
-\include examples/layout/duifreestylelayoutpolicy/duifreestylelayoutpolicy.cpp
-
-Styled with the following duifreestylelayoutpolicy.css file:
-\include examples/layout/duifreestylelayoutpolicy/duifreestylelayoutpolicy.css
-
-And compiled with the following duifreestylelayoutpolicy.pro file:
-\include examples/layout/duifreestylelayoutpolicy/duifreestylelayoutpolicy.pro
-
-*/
diff --git a/examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.css b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.css
index 8d1cedb9..8d1cedb9 100644
--- a/examples/layout/mfreestylelayoutpolicy/duifreestylelayoutpolicy.css
+++ b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.css
diff --git a/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.dox b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.dox
new file mode 100644
index 00000000..acdadc1d
--- /dev/null
+++ b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.dox
@@ -0,0 +1,16 @@
+/**
+\page layout-mfreestylelayoutpolicy DuiFreestyleLayoutPolicy example
+
+Source code for a simple example of DuiFreestyleLayoutPolicy.
+
+\image html mfreestylelayoutpolicy.png
+
+\include examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.cpp
+
+Styled with the following mfreestylelayoutpolicy.css file:
+\include examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.css
+
+And compiled with the following mfreestylelayoutpolicy.pro file:
+\include examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro
+
+*/
diff --git a/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro
+++ b/examples/layout/mfreestylelayoutpolicy/mfreestylelayoutpolicy.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/mgridlayoutpolicy/.gitignore b/examples/layout/mgridlayoutpolicy/.gitignore
index 99b9dcac..97a82dad 100644
--- a/examples/layout/mgridlayoutpolicy/.gitignore
+++ b/examples/layout/mgridlayoutpolicy/.gitignore
@@ -1 +1 @@
-duigridlayoutpolicy
+mgridlayoutpolicy
diff --git a/examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.dox b/examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.dox
deleted file mode 100644
index 67e00e7c..00000000
--- a/examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
-\page layout-duigridlayoutpolicy DuiGridLayoutPolicy example
-
-Source code for a simple example of DuiGridLayoutPolicy.
-
-\image html duigridlayoutpolicy.png
-
-\include examples/layout/duigridlayoutpolicy/duigridlayoutpolicy.cpp
-
-Styled with the following duigridlayoutpolicy.css file:
-\include examples/layout/duigridlayoutpolicy/duigridlayoutpolicy.css
-
-And compiled with the following duigridlayoutpolicy.pro file:
-\include examples/layout/duigridlayoutpolicy/duigridlayoutpolicy.pro
-
-*/
diff --git a/examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.css b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.css
index 0ac8ce7f..0ac8ce7f 100644
--- a/examples/layout/mgridlayoutpolicy/duigridlayoutpolicy.css
+++ b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.css
diff --git a/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.dox b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.dox
new file mode 100644
index 00000000..e695b678
--- /dev/null
+++ b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.dox
@@ -0,0 +1,16 @@
+/**
+\page layout-mgridlayoutpolicy DuiGridLayoutPolicy example
+
+Source code for a simple example of DuiGridLayoutPolicy.
+
+\image html mgridlayoutpolicy.png
+
+\include examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.cpp
+
+Styled with the following mgridlayoutpolicy.css file:
+\include examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.css
+
+And compiled with the following mgridlayoutpolicy.pro file:
+\include examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro
+
+*/
diff --git a/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro
+++ b/examples/layout/mgridlayoutpolicy/mgridlayoutpolicy.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/mlinearlayoutpolicy/.gitignore b/examples/layout/mlinearlayoutpolicy/.gitignore
index 8c8060ef..f19513ab 100644
--- a/examples/layout/mlinearlayoutpolicy/.gitignore
+++ b/examples/layout/mlinearlayoutpolicy/.gitignore
@@ -1 +1 @@
-duilinearlayoutpolicy
+mlinearlayoutpolicy
diff --git a/examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.dox b/examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.dox
deleted file mode 100644
index 80ad9053..00000000
--- a/examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.dox
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
-\page layout-duilinearlayoutpolicy DuiLinearLayoutPolicy example
-
-Source code for a simple example of DuiLinearLayoutPolicy.
-
-\image html duilinearlayoutpolicy.png
-
-\include examples/layout/duilinearlayoutpolicy/duilinearlayoutpolicy.cpp
-
-Styled with the following duilinearlayoutpolicy.css file:
-\include examples/layout/duilinearlayoutpolicy/duilinearlayoutpolicy.css
-
-And compiled with the following duilinearlayoutpolicy.pro file:
-\include examples/layout/duilinearlayoutpolicy/duilinearlayoutpolicy.pro
-
-*/
diff --git a/examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.css b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.css
index 6cbb97c4..6cbb97c4 100644
--- a/examples/layout/mlinearlayoutpolicy/duilinearlayoutpolicy.css
+++ b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.css
diff --git a/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.dox b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.dox
new file mode 100644
index 00000000..7d1b87dd
--- /dev/null
+++ b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.dox
@@ -0,0 +1,16 @@
+/**
+\page layout-mlinearlayoutpolicy DuiLinearLayoutPolicy example
+
+Source code for a simple example of DuiLinearLayoutPolicy.
+
+\image html mlinearlayoutpolicy.png
+
+\include examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.cpp
+
+Styled with the following mlinearlayoutpolicy.css file:
+\include examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.css
+
+And compiled with the following mlinearlayoutpolicy.pro file:
+\include examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro
+
+*/
diff --git a/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro
+++ b/examples/layout/mlinearlayoutpolicy/mlinearlayoutpolicy.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/multiplepolicies/multiplepolicies.pro b/examples/layout/multiplepolicies/multiplepolicies.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/multiplepolicies/multiplepolicies.pro
+++ b/examples/layout/multiplepolicies/multiplepolicies.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.dox b/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.dox
index 1f8148ed..38ed438f 100644
--- a/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.dox
+++ b/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.dox
@@ -3,7 +3,7 @@
Source code for a simple example of QGraphicsGridLayout.
-\image html duigridlayoutpolicy.png
+\image html mgridlayoutpolicy.png
Source code of qgraphicsgridlayout.cpp:
\include examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.cpp
diff --git a/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.pro b/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.pro
+++ b/examples/layout/qgraphicsgridlayout/qgraphicsgridlayout.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/qgraphicslayout/qgraphicslayout.pro b/examples/layout/qgraphicslayout/qgraphicslayout.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/qgraphicslayout/qgraphicslayout.pro
+++ b/examples/layout/qgraphicslayout/qgraphicslayout.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.dox b/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.dox
index 687da33a..9d43c4f3 100644
--- a/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.dox
+++ b/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.dox
@@ -3,7 +3,7 @@
Source code for a simple example of QGraphicsLinearLayout.
-\image html duilinearlayoutpolicy.png
+\image html mlinearlayoutpolicy.png
Source code of qgraphicslinearlayout.cpp:
\include examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.cpp
diff --git a/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.pro b/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.pro
+++ b/examples/layout/qgraphicslinearlayout/qgraphicslinearlayout.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/layout/two_columns/two_columns.pro b/examples/layout/two_columns/two_columns.pro
index 55c449e7..40c5e9fa 100644
--- a/examples/layout/two_columns/two_columns.pro
+++ b/examples/layout/two_columns/two_columns.pro
@@ -1,5 +1,5 @@
TEMPLATE = app
-CONFIG += m
+CONFIG += meegotouch
# Input
SOURCES += *.cpp
diff --git a/examples/lifecycle/duihome_session_env.sh b/examples/lifecycle/duihome_session_env.sh
deleted file mode 100755
index 2bea41f5..00000000
--- a/examples/lifecycle/duihome_session_env.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# This script sets up the D-Bus environment variables to the same
-# value as used by duihomescreen
-#
-# source ./duihome_session_env.sh
-
-eval $(cat /proc/$(pgrep duihome)/environ | sed 's/\x00/\nexport /g' | grep DBUS_SESSION_BUS)
diff --git a/examples/lifecycle/lifecycle.pro b/examples/lifecycle/lifecycle.pro
index 1e961e03..29b4d4f9 100644
--- a/examples/lifecycle/lifecycle.pro
+++ b/examples/lifecycle/lifecycle.pro
@@ -13,7 +13,7 @@ win32|macx {
macx {
QMAKE_LFLAGS += -F../../lib
LIBS += -framework \
- m
+ meegotouchcore
}
win32:LIBS += -lmeegotouchcore0
}
diff --git a/examples/lifecycle/mhome_session_env.sh b/examples/lifecycle/mhome_session_env.sh
new file mode 100644
index 00000000..22106e0b
--- /dev/null
+++ b/examples/lifecycle/mhome_session_env.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+# This script sets up the D-Bus environment variables to the same
+# value as used by mhomescreen
+#
+# source ./mhome_session_env.sh
+
+eval $(cat /proc/$(pgrep mhome)/environ | sed 's/\x00/\nexport /g' | grep DBUS_SESSION_BUS)
diff --git a/examples/multipleinstances/multipleinstances.pro b/examples/multipleinstances/multipleinstances.pro
index 662514f7..4288021e 100644
--- a/examples/multipleinstances/multipleinstances.pro
+++ b/examples/multipleinstances/multipleinstances.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = multipleInstances
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
# Input
SOURCES += main.cpp
diff --git a/examples/separatorTest/separatorTest.pro b/examples/separatorTest/separatorTest.pro
index 57140d3a..97c317e1 100644
--- a/examples/separatorTest/separatorTest.pro
+++ b/examples/separatorTest/separatorTest.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = SeparatorTest
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
# Input
SOURCES += main.cpp SeparatorTestPage.cpp
diff --git a/examples/testwidget/testwidget.pro b/examples/testwidget/testwidget.pro
index 240ba1e5..f06de305 100644
--- a/examples/testwidget/testwidget.pro
+++ b/examples/testwidget/testwidget.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = testwidget
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
# Input
SOURCES += testwidgetmodel.cpp \
diff --git a/examples/trackergrid/README b/examples/trackergrid/README
index 9be46b26..11f0de6f 100644
--- a/examples/trackergrid/README
+++ b/examples/trackergrid/README
@@ -1,4 +1,4 @@
-This source example demonstrates using tracker to populate dui grid widget.
+This source example demonstrates using tracker to populate MGridWidget.
Preconditions
=============
diff --git a/examples/trackergrid/trackergrid.pro b/examples/trackergrid/trackergrid.pro
index 916e5dbc..5301a816 100644
--- a/examples/trackergrid/trackergrid.pro
+++ b/examples/trackergrid/trackergrid.pro
@@ -1,6 +1,6 @@
TEMPLATE = app
TARGET = trackergrid
-CONFIG += m # Requires libm to be installed
+CONFIG += meegotouch
LIBS += -lqttracker # Requires libqttracker + tracker
# Input
diff --git a/libmeegotouch-spec-README b/libmeegotouch-spec-README
new file mode 100644
index 00000000..5be7c4b0
--- /dev/null
+++ b/libmeegotouch-spec-README
@@ -0,0 +1,380 @@
+ README for libmeegotouch.spec
+ =============================
+
+Author: Stefan.Hundhammer@basyskom.de
+Updated: 2010-04-29
+
+
+
+RPM and spec file concepts
+==========================
+
+(skip this section if you are familiar with RPM and spec files)
+
+libmeegotouch.spec is a spec file for creating RPM packages from the
+libmeegotouch sources.
+
+RPM ("Red Hat Package Manager") is a file format for (mostly binary) packages
+for Linux distributions such as Red Hat / Fedora, openSUSE, and MeeGo.
+
+The RPM file format is little more than a cpio (see "man 1 cpio") archive, very
+similar to a tar archive. In addition to the files it contains, there are also
+meta data that, among other things, specify dependencies between packages
+("package A requires package B to run").
+
+The spec file is the RPM counterpart to the debian/ subdirectory, but in one
+single file: It specifies build instructions, file lists, dependencies and
+administrative information like package name, version numbers etc.
+
+RPM has the concept of "pristine sources" and patches. In general (for a Linux
+distributor), the sources are taken from "upstream" (somewhere in the Internet)
+as a "tarball" (a .tar or .tar.gz or .tgz or .tar.bz2 file.
+
+To get those sources to compile and to run in that distribution's specific
+environment, a distributor might have to do some (hopefully minor) changes.
+Those changes are stored in "patches" (xy.patch or xy.diff) generated with the
+"diff" (see "man 1 diff") command. The patches are also listed in the .spec
+file; while building the package, RPM first unpacks the tarball(s) (there might
+be more than one) and then applies the patches one by one.
+
+The general idea is that these patches can be applied again if there is a newer
+version of the upstream sources, so the distributor only has to fetch another
+tarball and reuse the existing patches rather than having to go through the
+complete source tree and make all the changes again manually.
+
+Since this does not always work perfectly if there were major changes in the
+source tree, it helps to keep separate changes in separate patches to minimize
+rejected patches (patches that no longer can be cleanly applied with the
+"patch" (see "man 1 pach") command.
+
+Whenever a patch is not just specific to the specific system environment, but a
+general fix, it makes a lot of sense to "send the patch upstream", i.e. to mail
+it to the authors of the original sources.
+
+
+
+Creating RPM packages with this spec file
+=========================================
+
+(1) Edit the version in the spec file. In this example:
+
+ Version: 0.20.2
+
+
+
+(2) Create a tarball. It is RPM file name convention to include the version
+ number in both the tar file name and in the first level directory in that tar
+ file:
+
+ libmeegotouch-0.20.2.tar.bz2 containing
+
+ libmeegotouch-0.20.2/benchmarks
+ libmeegotouch-0.20.2/configure
+ libmeegotouch-0.20.2/configure-win32.pl
+ libmeegotouch-0.20.2/debian
+ libmeegotouch-0.20.2/demos
+ libmeegotouch-0.20.2/doc
+ libmeegotouch-0.20.2/examples
+ ...
+
+ Also, exclude the .git subdirectory as well as any built files (.o files,
+ binaries, moc files, ...) since they only blow up the tarball without any
+ benefit.
+
+ Simple approach:
+
+ ~/projects/libmeegotouch % git clean -dfx
+ ~/projects/libmeegotouch % cd ..
+ ~/projects % mv libmeegotouch libmeegotouch-0.20.2
+ ~/projects % tar cjvf /tmp/libmeegotouch-0.20.2.tar.bz2 libmeegotouch-0.20.2 --exclude .git
+ ~/projects % mv libmeegotouch-0.20.2 libmeegotouch
+
+
+(3.1) If building with OBS:
+
+ (3.1.1) Check out the old version of this package from OBS:
+
+ ~/projects/obs % osc co libmeegotouch
+
+ (3.1.2) Go into that directory, remove the old tarball, copy the new one
+ and the changed spec file there and check in those changes:
+
+ ~/projects/obs % cd libmeegotouch
+ ~/projects/obs/libmeegotouch % rm libmeegotouch-*.tar.bz2
+ ~/projects/obs/libmeegotouch % cp /tmp/libmeegotouch-0.20.2.tar.bz2 .
+ ~/projects/obs/libmeegotouch % cp ../../libmeegotouch/libmeegotouch.spec .
+ ~/projects/obs/libmeegotouch % osc addremove
+ ~/projects/obs/libmeegotouch % osc ci -m "Updated to version 0.20.2"
+
+ (3.1.3) Upon "osc ci", the package will automatically be rebuilt in OBS.
+ Go to the web interface and monitor the results or use the
+ "osc results" and "osc buildlog" commands:
+
+ ~/projects/obs/libmeegotouch % osc results
+ standard armv5el disabled (repository is published)
+ standard armv7el disabled (repository is published)
+ standard i586 succeeded (repository is published)
+ ~/projects/obs/libmeegotouch % osc buildlog standard i586 >/tmp/build.log
+
+
+(3.2) If building without "rpmbuild" rather than with OBS:
+
+ (3.2.1) Make sure the tarball and the spec file are in the same directory:
+
+ ~ % mkdir /tmp/libmeegotouch
+ ~ % mv /tmp/libmeegotouch-0.20.2.tar.bz2 /tmp/libmeegotouch
+ ~ % cp projects/libmeegotouch/libmeegotouch.spec /tmp/libmeegotouch
+ ~ % ls /tmp/libmeegotouch
+ libmeegotouch-0.20.2.tar.bz2
+ libmeegotouch.spec
+
+ (3.2.2) Find a directory on your hard drive where you have enough disk space
+ to use as a "build root" and create a build root subdirectory there:
+
+ % df -h /work
+ Filesystem Size Used Avail Use% Mounted on
+ /dev/sda7 69G 30G 37G 45% /home
+ mkdir /work/tmp/build-root/
+
+ (3.2.3) Start a local "rpmbuild" with that build root:
+
+ ~ % cd /tmp/libmeegotouch
+ /tmp/libmeegotouch % rpmbuild -ba --buildroot /work/tmp/build-root
+
+
+
+libmeegotouch Subpackage strategy
+=================================
+
+The one source tarball (libmeegotouch-x.y.tar.bz2) creates a number of RPM
+packages:
+
+
+- libmeegotouch: This is the main package, but it only contains one single file
+ (LICENSE.LGPL) to satisfy packaging conventions (as enforced in MeeGo by the
+ "rpmlint" tool). The main idea behind this main package is to serve as a
+ collection for the real library packages:
+
+ - libmeegotouchcore0
+ - libmeegotouchextensions0
+ - libmeegotouchsettings0
+ - libmeegotouchviews0
+
+ They each contain one of the libmeegotouch libraries. The main package
+ "libmeegotouch" has "requires" dependencies set up on all of them so it is
+ sufficient to install libmeegotouch.rpm to get all the modularized libs.
+
+- libmeegotouchqtstyle": The "plain Qt style", the Qt plug-in that adds the
+ Meego Touch look and feel for "plain Qt" applications (applications that
+ don't link against libmeegotouch).
+
+- libmeegotouch-bin: Some binaries required by applications using libmeegotouch
+ such as the theme daemon and the service mapper.
+
+- libmeegotouch-devel: Files needed for developing libmeegotouch-based
+ applications: Header files, qmake specs etc.; please notice that the RPM
+ package naming convention for development subpackages is -devel, not -dev
+ like in Debian-based distributions.
+
+- meegotouch-devel-tools: Tools needed for developing libmeegotouch-based
+ applications like the libmeegotouch-specific "moc" preprocessor etc.
+
+- libmeegotouch-doc: API documentation
+
+- meegotouch-demos: Container for the demo subpackages:
+
+ - meegotouch-demos-widgetsgallery: Widget gallery demo
+ - meegotouch-demos-widgetsgallery-tests
+ - meegotouch-demos-qtstyle
+ - meegotouch-demos-animatedlayout
+ - meegotouch-demos-appletinstallationsource
+ - meegotouch-demos-applicationextension
+
+- libmeegotouch-tests: Unit tests
+
+- libmeegotouch-benchmarks: Benchmarks
+
+
+- libmeegotouch-l10n- packages: Messages / translations for user-visible
+ strings in the lib packages.
+
+ - libmeegotouch-l10n-eng-en : "Engineering English"
+ - libmeegotouch-l10n-en: English
+ - libmeegotouch-l10n-ar Arabic
+ - libmeegotouch-l10n-de German
+ - libmeegotouch-l10n-fi Finnish
+ - libmeegotouch-l10n-hu Hungarian
+ - libmeegotouch-l10n-ur Urdu
+ - libmeegotouch-l10n-zh-cn Simplified Chinese
+
+- meegotouch-demos-widgetsgallery-l10n- packages: Messages / translatiosn for
+ user-visible strings in the "widgets gallery" demo. Please note that the
+ "rpmlint" checking tool enforces a 64 character limit per file name component
+ because of the Joliet file system that is commonly used on CDs / DVDs. Thus,
+ -engineering-english had to be abbreviated to -eng-en.
+
+ - meegotouch-demos-widgetsgallery-l10n-eng-en
+ - meegotouch-demos-widgetsgallery-l10n-ar
+ - meegotouch-demos-widgetsgallery-l10n-de
+ - meegotouch-demos-widgetsgallery-l10n-en
+ - meegotouch-demos-widgetsgallery-l10n-fi
+ - meegotouch-demos-widgetsgallery-l10n-hu
+ - meegotouch-demos-widgetsgallery-l10n-ur
+ - meegotouch-demos-widgetsgallery-l10n-zh-cn
+
+- meegotouch-demos-animatedlayout-l10n- packages: Messages / translations for
+ user-visible strings in the "animated layout" demo.
+
+ - meegotouch-demos-animatedlayout-l10n-eng-en
+ - meegotouch-demos-animatedlayout-l10n-de
+ - meegotouch-demos-animatedlayout-l10n-en
+ - meegotouch-demos-animatedlayout-l10n-ja
+
+
+RPM spec file cheat sheet
+=========================
+
+RPM Variables / Macros
+----------------------
+
+Variable definition:
+
+ %define variable_name value
+
+Variable reference:
+
+ %variable_name
+ %{variable_name}
+
+
+Dependencies
+-------------
+
+ Requires: other_pkg
+
+This package requires package other_pkg to run (not for building!).
+
+ BuildRequires: other_pkg
+
+This package requires package other_pkg for building (not at runtime!).
+
+ Provides: some_capability
+
+This package provides a capability named "some_capability" that other packages
+might require. Note: A package always provides itself, so it's pointless to
+write
+
+ Provides: mypackage
+
+in mypackage.spec.
+
+A package also automatically provides all shared libs it has in its file list,
+and a package built with a shared lib automatically requires that shared
+lib. For example, package libqt4-x11 automatically provides libQtGui.so.4,
+libQtSvg.so.4 etc.; likewise, it automatically requires libX11.so.6,
+libXext.so.6 etc.
+
+
+Package name and subpackages
+----------------------------
+
+The name of the main package is specified in
+
+ Name: foo
+
+it can have any number of subpackages. A subpackage is defined with
+
+ %package subpkg-name1
+or
+
+ %package -n subpkg-name2
+
+Without the -n, it will be prefixed with the main package name and a dash:
+
+ foo-subpkg-name1
+
+With the -n, there will be no prefix:
+
+ subpkg-name2
+
+
+File lists
+----------
+
+All files generated during the build process must be listed in the file
+list(s). Wildcards may be used.
+
+ %files
+
+is the file list of the main package.
+
+ %files -n subpkg-name
+
+is the file list of subpackage "subpkg-name" (same rules as with %package:
+Prefixed with the main package name if specified without -n).
+
+ %defattr(-,root,root)
+
+specifies the default file permission and ownership (user and group) for each
+item in the file list.
+
+ %dir /usr/share/somewhere
+
+assigns directory ownership to this package.
+
+ %config /etc/foo
+
+indicates that /etc/foo should be packaged as a configuration file with special
+rules what to do if it already exists when the package is installed so changes
+by the system administrator don't simply get lost during package update.
+
+ %doc /usr/share/doc/packages/foo/*
+
+marks files as documentation.
+
+
+Build section
+-------------
+
+ %prep
+ %setup mysource-47.11.tar.bz2
+
+This removes an existing build directory for that package, creates a new one
+and unpacks the tarball there.
+
+ %build
+
+This executes the commands following %build inside the build directory.
+The convention is to only build (compile and link) the project in that section,
+not install any files there.
+
+ %install
+
+This is similar to %build, but the intention is to do "make install" and
+whatever else is required to install files to the target system in this
+section. IMPORTANT: Make sure to prefix all target paths with %{buildroot},
+e.g. use
+
+ %{buildroot}/usr/lib/whatever
+
+and not just /usr/lib/whatever.
+
+
+Misc
+----
+
+ Group: System Environment/Libraries
+
+This specifies the RPM "group tag", a tree of categories where this package
+belongs to. Different distributions may have different predefined such
+categories.
+
+-devel subpackages should go to a category below "Development/".
+
+
+
+Further reading
+===============
+
+http://www.rpm.org/max-rpm-snapshot/
+http://docs.fedoraproject.org/drafts/rpm-guide-en/ \ No newline at end of file
diff --git a/libmeegotouch.spec b/libmeegotouch.spec
new file mode 100644
index 00000000..436e0ded
--- /dev/null
+++ b/libmeegotouch.spec
@@ -0,0 +1,772 @@
+#
+# spec file for creating RPM packages from libmeegotouch for MeeGo
+#
+# See also file libmeegotouch-spec-README
+#
+
+Name: libmeegotouch
+Version: 0.20.2
+Release: 1%{?dist}
+Summary: Meego Touch Framework
+
+Group: System Environment/Libraries
+License: LGPL v2.1
+URL: http://qt.gitorious.org/maemo-6-ui-framework/libdui
+
+Source0: %{name}-%{version}.tar.bz2
+### Patch1: 0001-Changes-Read-target-device-from-GConf.patch
+### Patch2: 0002-Fix-Ensure-rowsRemoved-updates-visible-cells.patch
+### Patch3: 0003-Enable-building-of-the-video-widget.patch
+### Patch4: 0004-Fix-Calculate-rotation-and-position-per-device-prof.patch
+### Patch5: 0005-Add-respect-of-cell-s-preferred-width-in-duifastlist.patch
+### Patch6: 0006-Adding-various-Moorestown-and-Menlow-devices-to-the.patch
+### Patch7: 0007-Work-around-fix-to-duimoc-s-regexp-matching-to-gener.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+
+BuildRequires: pkgconfig(QtCore) >= 4.6.0
+BuildRequires: pkgconfig(QtDBus)
+BuildRequires: pkgconfig(QtOpenGL)
+BuildRequires: pkgconfig(QtMultimedia)
+BuildRequires: pkgconfig(QtNetwork)
+BuildRequires: pkgconfig(QtGui)
+BuildRequires: pkgconfig(gstreamer-0.10)
+BuildRequires: pkgconfig(gstreamer-base-0.10)
+BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(xdamage)
+BuildRequires: pkgconfig(icu)
+BuildRequires: pkgconfig(x11)
+BuildRequires: pkgconfig(gconf-2.0)
+BuildRequires: pkgconfig(contextprovider-1.0)
+BuildRequires: pkgconfig(gl)
+BuildRequires: mesa-libEGL-devel
+BuildRequires: qt-devel
+BuildRequires: doxygen
+BuildRequires: icu
+
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+
+# TO DO: Check if the following makes any sense
+# Requires: %{name} >= %{version}
+
+Requires: meegotouch-theme >= %{version}
+Requires: libmeegotouch-l10n
+# Requires: libmeegotouch-l10n-eng-en = %{version}
+
+# The main package is just a wrapper for the lib subpackages
+Requires: libmeegotouchcore0 >= %{version}
+Requires: libmeegotouchextensions0 >= %{version}
+Requires: libmeegotouchsettings0 >= %{version}
+Requires: libmeegotouchviews0 >= %{version}
+Requires: libmeegotouch-bin >= %{version}
+Requires: meegotouch-qt-style >= %{version}
+
+
+#
+# Main package
+#
+
+%description
+Qt based framework for developing touch based user interfaces
+
+
+#
+# Lib and binary subpackages
+#
+# %package -n foo is just "foo", not <pkg-base-name>-foo (i.e. "meegotouch-foo")
+#
+
+%package -n libmeegotouchcore0
+Summary: Meego Touch core library
+%description -n libmeegotouchcore0
+Meego Touch core library
+
+
+%package -n libmeegotouchextensions0
+Summary: Meego Touch extensions library
+%description -n libmeegotouchextensions0
+Meego Touch extensions library
+
+
+%package -n libmeegotouchsettings0
+Summary: Meego Touch settings library
+%description -n libmeegotouchsettings0
+Meego Touch settings library
+
+
+%package -n libmeegotouchviews0
+Summary: Meego Touch widget views library
+%description -n libmeegotouchviews0
+Meego Touch widget views library
+
+
+%package -n libmeegotouch-bin
+Summary: Meego Touch binary files
+Requires: libmeegotouchcore0 >= %{version}
+Requires: libmeegotouchextensions0 >= %{version}
+Requires: libmeegotouchsettings0 >= %{version}
+Requires: libmeegotouchviews0 >= %{version}
+%description -n libmeegotouch-bin
+Meego Touch framework binary files
+
+
+%package -n meegotouch-qt-style
+Summary: Meego Touch plain Qt style
+Requires: libmeegotouchcore0 >= %{version}
+Requires: libmeegotouchviews0 >= %{version}
+%description -n meegotouch-qt-style
+Meego Touch Qt style for applications that do not link against libmeegotouch
+
+
+#
+# Development subpackages
+#
+
+# -devel is the naming convention for development packages in RPM based distributions.
+# Debian uses -dev.
+%package -n libmeegotouch-devel
+Summary: Meego Touch development files
+Group: Development/Libraries
+Requires: libmeegotouchcore0 >= %{version}
+Requires: libmeegotouchextensions0 >= %{version}
+Requires: libmeegotouchsettings0 >= %{version}
+Requires: libmeegotouchviews0 >= %{version}
+Requires: meegotouch-qt-style >= %{version}
+%description -n libmeegotouch-devel
+Development files for Meego Touch
+
+
+%package -n meegotouch-devel-tools
+Summary: Meego Touch development and testing tools
+Group: Development/Libraries
+Requires: libmeegotouch-devel
+%description -n meegotouch-devel-tools
+Collection of tools for testing and developing on top of libmeegotouch.
+Includes stuff like applettester and code/mock generation.
+
+
+%package -n libmeegotouch-doc
+Summary: Meego Touch API documentation
+%description -n libmeegotouch-doc
+Meego Touch API documentation
+
+
+#
+# Demo and test subpackages
+#
+
+%package -n meegotouch-demos
+Summary: Meego Touch demo applications
+Requires: meegotouch-demos-widgetsgallery
+Requires: meegotouch-demos-qt-style
+Requires: meegotouch-demos-animatedlayout
+%description -n meegotouch-demos
+Collection of demo applications for Meego Touch
+
+
+%package -n meegotouch-demos-widgetsgallery
+Summary: Meego Touch widgets gallery demo
+Requires: meegotouch-demos-widgetsgallery-l10n
+%description -n meegotouch-demos-widgetsgallery
+Meego Touch demo application that shows the available widgets
+
+
+%package -n meegotouch-demos-widgetsgallery-tests
+Summary: Meego Touch widgets gallery tests
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-tests
+Meego Touch demo application tests
+
+
+%package -n meegotouch-demos-qt-style
+Summary: Meego Touch plain Qt applications demos
+Requires: meegotouch-qt-style
+%description -n meegotouch-demos-qt-style
+Demo applications that show how plain Qt applications
+(applications that do not link against libmeegotouch) are supported
+in the Meego Touch framework
+
+
+%package -n meegotouch-demos-animatedlayout
+Summary: Meego Touch animated layout demo
+Requires: meegotouch-demos-animatedlayout-l10n
+%description -n meegotouch-demos-animatedlayout
+Demo application for the Meego Touch animated demo
+
+
+%package -n meegotouch-demos-appletinstallationsource
+Summary: Meego Touch applet installation source demos
+%description -n meegotouch-demos-appletinstallationsource
+Demo applet installation source for the Meego Touch applet library
+
+
+%package -n meegotouch-demos-applicationextension
+Summary: Meego Touch application extension demos
+%description -n meegotouch-demos-applicationextension
+Demo application for the Meego Touch application extensions
+
+
+%package -n libmeegotouch-tests
+Summary: Meego Touch unit tests
+%description -n libmeegotouch-tests
+Unit testing binaries and shell scripts for testing the libmeegotouch library
+
+
+%package -n libmeegotouch-benchmarks
+Summary: Meego Touch benchmarks
+%description -n libmeegotouch-benchmarks
+Benchmarking binaries for testing the libmeegotouch library
+
+
+#
+# i10n subpackages
+#
+# -engineering-english had to be shortened to -eng-en because of file name lenght limitations:
+# rpmlint complains about exceeding the 64 character file name component limit on Joliet file systems.
+
+%package -n libmeegotouch-l10n-eng-en
+Summary: Meego Touch engineering English messages
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-eng-en
+Meego Touch engineering English messages
+
+
+%package -n libmeegotouch-l10n-ar
+Summary: Meego Touch Arabic translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-ar
+Meego Touch Arabic translations
+
+
+%package -n libmeegotouch-l10n-de
+Summary: Meego Touch German translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-de
+Meego Touch German translations
+
+
+%package -n libmeegotouch-l10n-en
+Summary: Meego Touch English messages
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-en
+Meego Touch English messages
+
+
+%package -n libmeegotouch-l10n-fi
+Summary: Meego Touch Finnish translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-fi
+Meego Touch Finnish translations
+
+
+%package -n libmeegotouch-l10n-hu
+Summary: Meego Touch Hungarian translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-hu
+Meego Touch Hungarian translations
+
+
+%package -n libmeegotouch-l10n-ur
+Summary: Meego Touch Urdu translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-ur
+Meego Touch Urdu translations
+
+
+%package -n libmeegotouch-l10n-zh-cn
+Summary: Meego Touch simplified Chinese translations
+Provides: libmeegotouch-l10n
+%description -n libmeegotouch-l10n-zh-cn
+Meego Touch simplified Chinese translations
+
+
+# i10n widget gallery demo subpackages
+
+%package -n meegotouch-demos-widgetsgallery-l10n-eng-en
+Summary: Meego Touch widgets gallery engineering English messages
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-eng-en
+Meego Touch widgets gallery engineering English messages
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-ar
+Summary: Meego Touch widgets gallery Arabic translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-ar
+Meego Touch widgets gallery Arabic translations
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-de
+Summary: Meego Touch widgets gallery German translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-de
+Meego Touch widgets gallery German translations
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-en
+Summary: Meego Touch widgets gallery English messages
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-en
+Meego Touch widgets gallery English messages
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-fi
+Summary: Meego Touch widgets gallery Finnish translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-fi
+Meego Touch widgets gallery Finnish translations
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-hu
+Summary: Meego Touch widgets gallery Hungarian translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-hu
+Meego Touch widgets gallery Hungarian translations
+
+%package -n meegotouch-demos-widgetsgallery-l10n-ur
+Summary: Meego Touch widgets gallery Urdu translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-ur
+Meego Touch widgets gallery Urdu translations
+
+
+%package -n meegotouch-demos-widgetsgallery-l10n-zh-cn
+Summary: Meego Touch widgets gallery simplified Chinese translations
+Provides: meegotouch-demos-widgetsgallery-l10n
+Requires: meegotouch-demos-widgetsgallery
+%description -n meegotouch-demos-widgetsgallery-l10n-zh-cn
+Meego Touch widgets gallery simplified Chinese translations
+
+
+# i10n animated layout demo subpackages
+
+%package -n meegotouch-demos-animatedlayout-l10n-eng-en
+Summary: Meego Touch animated layout demo engineering English messages
+Provides: meegotouch-demos-animatedlayout-l10n
+%description -n meegotouch-demos-animatedlayout-l10n-eng-en
+Meego Touch animated layout engineering English messages
+
+
+%package -n meegotouch-demos-animatedlayout-l10n-de
+Summary: Meego Touch animated layout demo German translations
+Provides: meegotouch-demos-animatedlayout-l10n
+%description -n meegotouch-demos-animatedlayout-l10n-de
+Meego Touch animated layout German translations
+
+
+%package -n meegotouch-demos-animatedlayout-l10n-en
+Summary: Meego Touch animated layout demo English messages
+Provides: meegotouch-demos-animatedlayout-l10n
+%description -n meegotouch-demos-animatedlayout-l10n-en
+Meego Touch animated layout English messages
+
+
+%package -n meegotouch-demos-animatedlayout-l10n-ja
+Summary: Meego Touch animated layout demo Japanese translations
+Provides: meegotouch-demos-animatedlayout-l10n
+%description -n meegotouch-demos-animatedlayout-l10n-ja
+Meego Touch animated layout Japanese translations
+
+
+
+# Typically /usr/share/qt4, but might also be /usr/lib/qt4
+%define qt_install_data_dir %(qmake -query QT_INSTALL_DATA)
+
+
+#
+# Unpack / build / install rules
+#
+
+%prep
+%setup -q -n %{name}-%{version}
+### %patch1 -p1 -b .p1
+### %patch2 -p1 -b .p2
+### %patch3 -p1 -b .p3
+### %patch4 -p1 -b .p4
+### %patch5 -p1 -b .p5
+### %patch6 -p1 -b .p6
+### %patch7 -p1 -b .p7
+
+
+%build
+export PATH=$PATH:%{_libdir}/qt4/bin
+unset LD_AS_NEEDED
+./configure -prefix /usr -release -plainqt -tests -benchmarks
+make %{?_smp_mflags}
+
+
+%install
+rm -fR %{buildroot}
+
+export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
+make INSTALL_ROOT=%{buildroot} install
+
+# The one file the main package contains
+# (rpmlint complains if it doesn't have any file at all)
+install -m 644 -D -p LICENSE.LGPL %{buildroot}/usr/share/doc/packages/%{name}/LICENSE.LGPL
+
+# FIXME find out what this libdui.sh is good for (not packaged anywhere yet)
+### mkdir -p %{buildroot}/etc/profile.d
+### echo "export DUI_DECORATED=0" > %{buildroot}/etc/profile.d/libdui.sh
+
+# FIXME the next 2 lines should go to the Makefile
+install -m 644 -D -p demos/widgetsgallery/translations/widgetsgallery.ts %{buildroot}/usr/share/doc/meegotouch-demos-widgetsgallery-l10n-eng-en/widgetsgallery.ts
+install -m 644 -D -p src/translations/libmeegotouch.ts %{buildroot}/usr/share/doc/libmeegotouch-l10n-eng-en/libmeegotouch.ts
+
+
+%clean
+rm -fR %{buildroot}
+
+
+%post -n libmeegotouchcore0
+/sbin/ldconfig
+# create cache directory
+mkdir -p -m a+w /var/cache/meegotouch
+mkdir -p -m a+w /var/cache/meegotouch/css
+
+
+%postun -n libmeegotouchcore0
+/sbin/ldconfig
+# remove cached data
+if [ -d /var/cache/meegotouch ]; then
+ rm -rf /var/cache/meegotouch
+fi
+
+
+%post -n libmeegotouchextensions0
+/sbin/ldconfig
+
+%postun -n libmeegotouchextensions0
+/sbin/ldconfig
+
+
+
+%post -n libmeegotouchsettings0
+/sbin/ldconfig
+
+%postun -n libmeegotouchsettings0
+/sbin/ldconfig
+
+
+
+%post -n libmeegotouchviews0
+/sbin/ldconfig
+
+%postun -n libmeegotouchviews0
+/sbin/ldconfig
+
+
+
+%post -n libmeegotouch-tests
+# add en_US.UTF-8 locale if not already there:
+# (this locale is needed for the test ft_meegotouchgconfitem)
+if ! egrep -q -E "^[[:space:]]*en_US.UTF-8[[:space:]]+UTF-8" /etc/locale.gen ; then
+ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
+ /usr/sbin/locale-gen
+fi
+
+
+### TO DO: Find out if this is necessary - the Debian packages do it like this
+### %post -n libmeegotouch-bin
+### GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule /etc/gconf/schemas/meegotouch.schemas > /dev/null
+
+### %postun -n libmeegotouch-bin
+### GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/meegotouch.schemas > /dev/null
+
+
+
+#
+# File lists
+#
+
+%files
+%defattr(-,root,root)
+%dir /usr/share/doc/packages/%{name}
+%doc /usr/share/doc/packages/%{name}/*
+
+
+%files -n libmeegotouchcore0
+%defattr(-,root,root)
+%{_libdir}/libmeegotouchcore.so.0*
+
+
+%files -n libmeegotouchextensions0
+%defattr(-,root,root)
+%{_libdir}/libmeegotouchextensions.so.0*
+
+
+%files -n libmeegotouchsettings0
+%defattr(-,root,root)
+%{_libdir}/libmeegotouchsettings.so.0*
+
+
+%files -n libmeegotouchviews0
+%defattr(-,root,root)
+%{_libdir}/libmeegotouchviews.so.0*
+
+
+%files -n meegotouch-qt-style
+%defattr(-,root,root)
+%{_libdir}/qt4/plugins/styles/libmeegotouchqtstyleplugin.so
+
+
+%files -n libmeegotouch-bin
+%defattr(-,root,root)
+%dir %{_libdir}/meegotouch
+%dir %{_libdir}/meegotouch/applets
+/usr/bin/mthemedaemon
+/usr/bin/mservicemapper
+/usr/share/dbus-1/services/com.nokia.mservicefw.service
+/usr/share/meegotouch/shaders/*
+%{_libdir}/meegotouch/applets/mappletrunner
+%config /etc/meegotouch/devices.conf
+%config /etc/gconf/schemas/meegotouch.schemas
+
+
+%files -n libmeegotouch-devel
+%defattr(-,root,root)
+%dir /usr/include/meegotouch
+/usr/include/meegotouch/*
+%{_libdir}/libmeegotouch*.so
+%{_libdir}/libmeegotouch*.prl
+%{_libdir}/pkgconfig/*
+%{qt_install_data_dir}/mkspecs/features/meegotouch.prf
+%{qt_install_data_dir}/mkspecs/features/meegotouch_defines.prf
+%{qt_install_data_dir}/mkspecs/features/meegotouch_translations.prf
+
+
+%files -n meegotouch-devel-tools
+%defattr(-,root,root)
+/usr/bin/mmoc
+/usr/bin/mgen
+/usr/bin/m-servicefwgen
+/usr/bin/mapplettester
+/usr/bin/mapplicationextensiontester
+/usr/bin/mnotificationtool
+/usr/bin/mnotificationstresstest
+/usr/bin/dui-rename-files
+/usr/bin/dui-rename-symbols
+
+
+%files -n libmeegotouch-doc
+%defattr(-,root,root)
+%dir /usr/share/doc/libmeegotouch
+%doc /usr/share/doc/libmeegotouch/*
+
+
+%files -n libmeegotouch-tests
+%defattr(-,root,root)
+%dir %{_libdir}/libmeegotouch-tests
+%dir /usr/share/libmeegotouch-tests
+/usr/share/libmeegotouch-tests/*
+%{_libdir}/libmeegotouch-tests/*
+
+
+%files -n libmeegotouch-benchmarks
+%defattr(-,root,root)
+%dir %{_libdir}/libmeegotouch-benchmarks
+%{_libdir}/libmeegotouch-benchmarks/*
+
+
+%files -n meegotouch-demos-qt-style
+%defattr(-,root,root)
+%dir /usr/share/qtstyleexample
+%dir /usr/share/qtstyleexample/themes
+/usr/bin/qtstyle*
+/usr/share/applications/qtstyle*
+/usr/share/dbus-1/services/com.nokia.qtstyle*
+/usr/share/qtstyleexample/themes/*
+
+
+%files -n meegotouch-demos-animatedlayout
+%defattr(-,root,root)
+%dir /usr/share/animatedlayout
+/usr/bin/animatedlayout
+/usr/share/animatedlayout/*
+
+
+%files -n meegotouch-demos-appletinstallationsource
+%defattr(-,root,root)
+/usr/share/meegotouch/applicationextensions/*installationsource*
+%{_libdir}/meegotouch/applicationextensions/*installationsource*
+
+
+%files -n meegotouch-demos-applicationextension
+%defattr(-,root,root)
+%dir /usr/share/meegotouch
+/usr/bin/applicationextension*
+%{_libdir}/meegotouch/applicationextensions/*extension*
+/usr/share/meegotouch/applicationextensions/*extension*
+
+
+%files -n meegotouch-demos-widgetsgallery
+%defattr(-,root,root)
+%dir /usr/share/widgetsgallery
+/usr/bin/widgetsgallery
+/usr/share/themes/*
+/usr/share/applications/widgetsgallery.desktop
+/usr/share/dbus-1/services/com.nokia.widgetsgallery.service
+/usr/share/widgetsgallery/*
+
+
+%files -n meegotouch-demos-widgetsgallery-tests
+%defattr(-,root,root)
+%dir /usr/share/meegotouch-demos-widgetsgallery-tests
+/usr/share/meegotouch-demos-widgetsgallery-tests/tests.xml
+
+
+%files -n libmeegotouch-l10n-eng-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+%dir /usr/share/doc/libmeegotouch-l10n-eng-en
+/usr/share/l10n/meegotouch/libmeegotouch.qm
+/usr/share/doc/libmeegotouch-l10n-eng-en/libmeegotouch.ts
+
+
+%files -n libmeegotouch-l10n-ar
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_ar.qm
+
+
+%files -n libmeegotouch-l10n-de
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_de.qm
+
+
+%files -n libmeegotouch-l10n-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_en.qm
+
+
+%files -n libmeegotouch-l10n-fi
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_fi.qm
+
+
+%files -n libmeegotouch-l10n-hu
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_hu.qm
+
+
+%files -n libmeegotouch-l10n-ur
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_ur.qm
+
+
+%files -n libmeegotouch-l10n-zh-cn
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/libmeegotouch_zh_CN.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-eng-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+%dir /usr/share/doc/meegotouch-demos-widgetsgallery-l10n-eng-en
+/usr/share/l10n/meegotouch/widgetsgallery.qm
+/usr/share/doc/meegotouch-demos-widgetsgallery-l10n-eng-en/widgetsgallery.ts
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-ar
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_ar.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-de
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_de.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_en.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-fi
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_fi.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-hu
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_hu.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-ur
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_ur.qm
+
+
+%files -n meegotouch-demos-widgetsgallery-l10n-zh-cn
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/widgetsgallery_zh_CN.qm
+
+
+%files -n meegotouch-demos-animatedlayout-l10n-eng-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/animatedlayout.qm
+
+
+%files -n meegotouch-demos-animatedlayout-l10n-de
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/animatedlayout_de.qm
+
+
+%files -n meegotouch-demos-animatedlayout-l10n-en
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/animatedlayout_en.qm
+
+
+%files -n meegotouch-demos-animatedlayout-l10n-ja
+%defattr(-,root,root)
+%dir /usr/share/l10n
+%dir /usr/share/l10n/meegotouch
+/usr/share/l10n/meegotouch/animatedlayout_ja.qm
+
+
+%changelog
diff --git a/mapplicationextensionrunner/mapplicationextensionrunner.cpp b/mapplicationextensionrunner/mapplicationextensionrunner.cpp
index 53b2950b..e5bf98da 100644
--- a/mapplicationextensionrunner/mapplicationextensionrunner.cpp
+++ b/mapplicationextensionrunner/mapplicationextensionrunner.cpp
@@ -21,8 +21,8 @@
#include <mapplicationextensionmetadata.h>
#include <mapplicationextensionloader.h>
#include <mapplicationextensioninterface.h>
-#include <MWidget>
#include <QGraphicsLinearLayout>
+#include <QGraphicsWidget>
#include <QDebug>
MApplicationExtensionRunner::MApplicationExtensionRunner() :
diff --git a/mkspecs/common.pri b/mkspecs/common.pri
index f93d6293..37fbfd99 100644
--- a/mkspecs/common.pri
+++ b/mkspecs/common.pri
@@ -76,6 +76,10 @@ include($${M_BUILD_TREE}/mkspecs/features/meegotouch_defines.prf)
unix {
DEFINES += CACHEDIR=\\\"\"/var/cache/meegotouch/\"\\\"
+ # drop unneeded dependencies
+ !macx {
+ QMAKE_LFLAGS += "-Wl,--as-needed"
+ }
}
# Compiler configuration for all subprojects in libm
diff --git a/mkspecs/features/meegotouch_defines.prf.in b/mkspecs/features/meegotouch_defines.prf.in
index cf892319..12fca3f4 100644
--- a/mkspecs/features/meegotouch_defines.prf.in
+++ b/mkspecs/features/meegotouch_defines.prf.in
@@ -6,7 +6,7 @@
M_MAJOR_VERSION = 0
M_MINOR_VERSION = 20
-M_PATCH_VERSION = 7
+M_PATCH_VERSION = 12
M_VERSION=$${M_MAJOR_VERSION}.$${M_MINOR_VERSION}.$${M_PATCH_VERSION}
# first set default value for meegotouch prefix
diff --git a/mmoc/mmoc b/mmoc/mmoc
deleted file mode 100755
index eb3db1e9..00000000
--- a/mmoc/mmoc
+++ /dev/null
@@ -1,216 +0,0 @@
-#! /usr/bin/perl
-
-use English;
-
-$::QT_MOC_PATH = find_moc ();
-
-if (! -x $::QT_MOC_PATH) {
- print "Unable to find moc, or is not executable\n";
- if ( "MSWin32" ne "$OSNAME" ) {
- exit (1);
- }
-}
-
-chomp( $::QT_MOC_PATH );
-
-exit main( @ARGV );
-
-sub find_moc
-{
- my $mocpath;
-
- if ($ENV{"QTDIR"} && -x "$ENV{\"QTDIR\"}/bin/moc")
- {
- return "$ENV{\"QTDIR\"}/bin/moc";
- }
-
- # here we need to do things differently for windows
- if ( "MSWin32" ne "$OSNAME" )
- {
- $mocpath = `which moc 2>/dev/null`;
- if ($? == 0) {
- chomp $mocpath;
- return $mocpath;
- }
-
- $mocpath = `which moc-qt4 2>/dev/null`;
- if ($? == 0) {
- chomp $mocpath;
- return $mocpath;
- }
- } else {
- return "moc";
- }
-}
-
-sub main
-{
- my @argv = @_;
-
- my @commandLineParameters = ( $::QT_MOC_PATH );
-
- my $filename = "";
- my $type = "";
-
- for ( my $i=0; $i<@argv; ++$i ) {
- if ( $argv[$i] =~ /style.h$/ ) {
- $type = "Style";
- $filename = $argv[$i];
- } elsif ( $argv[$i] =~ /model.h$/ ) {
- $type = "Model";
- $filename = $argv[$i];
- } else {
- push @commandLineParameters, $argv[$i];
- }
- }
-
- if ( $filename eq "" ) {
- system( @commandLineParameters );
- } else {
- push @commandLineParameters, "-f".$filename;
-
- if ( $type eq "Model" ) {
- runModelMoc( $filename, @commandLineParameters );
- } elsif ( $type eq "Style" ) {
- runStyleMoc( $filename, @commandLineParameters );
- }
- }
-
- return 0;
-}
-
-# common regular expressions
-$::spaces = "\s*";
-$::comma = ",";
-$::colon = ":";
-$::parenO = "\(";
-$::parenC = "\)";
-$::emptyParen = "\(\)";
-$::angleO = "<";
-$::angleC = ">";
-$::braceO = "\{";
-$::nameSpace = "(?:\w+::)";
-$::typeName = "\w+";
-$::pointer = "\*";
-$::templateName = "\w+";
-$::plainParam = "(\w+)";
-$::boolParam = "(true|false)";
-$::anyParam = "(.+)";
-
-sub runStyleMoc
-{
- my ($header, @arguments) = @_;
-
- my $commandLine = join( " ", @arguments );
-
- open( INF, "<$header" ) || die( "Could not open $header for reading : $!" );
-
- open( MOC, "|$commandLine" ) || die( "Could not run command $commandLine : $!" );
-
- while ( <INF> ) {
- chomp;
- my $line = $_;
-
- $line =~ s/\s*M_STYLE_ATTRIBUTE\s*\(\s*(\w+\:*\w*)\s*,\s*(\w+)\s*,\s*(\w+)\s*\)\s*/ Q_PROPERTY($1 $2 READ $2 WRITE set$3)/;
- $line =~ s/\s*M_STYLE_PTR_ATTRIBUTE\s*\(\s*(\w+\:*\w*\s*\*+)\s*,\s*(\w+)\s*,\s*(\w+)\s*\)\s*/ Q_PROPERTY(const $1 $2 READ $2 WRITE set$3)/;
-
- print MOC "$line\n";
- }
-
- close( MOC );
-
- close( INF );
-}
-
-sub runModelMoc
-{
- my ($header, @arguments) = @_;
-
- my $commandLine = join( " ", @arguments );
-
- my @pattern = (
- $::spaces.
- "M_MODEL_PROPERTY".
- $::spaces.$::parenO.$::spaces.
- "(".
- "(?:".
- $::nameSpace."{,1}".
- $::typeName.
- $::spaces.
- $::pointer."{,1}".
- ")".
- "|".
- "(?:".
- $::templateName.
- $::angleO.
- $::spaces.
- $::typeName.
- $::spaces.
- $::pointer."{,1}".
- $::spaces.
- $::angleC.
- ")".
- ")".
- $::spaces.$::comma.$::spaces.
- $::plainParam.
- $::spaces.$::comma.$::spaces.
- $::plainParam.
- $::spaces.$::comma.$::spaces.
- $::plainParam.
- $::spaces.$::comma.$::spaces.
- $::anyParam.
- $::spaces.$::parenC.$::spaces,
-
- $::spaces.
- "M_MODEL_PTR_PROPERTY".
- $::spaces.$::parenO.$::spaces.
- "(".
- "(?:".
- $::nameSpace."{,1}".
- $::typeName.
- $::spaces.
- $::pointer."{,1}".
- $::spaces.
- ")".
- "|".
- "(?:".
- $::templateName.
- $::angleO.
- $::spaces.
- $::typeName.
- $::spaces.
- $::pointer."{,1}".
- $::spaces.
- $::angleC.
- ")".
- ")".
- $::spaces.$::comma.$::spaces.
- $::plainParam.
- $::spaces.$::comma.$::spaces.
- $::plainParam.
- $::spaces.$::comma.$::spaces.
- $::boolParam.
- $::spaces.$::comma.$::spaces.
- $::anyParam.
- $::spaces.$::parenC.$::spaces,
-
- );
-
- open( INF, "<$header" ) || die( "Could not open header file for reading : $!" );
-
- open( MOC, "|$commandLine" ) || die( "Could not run command $commandLine : $!" );
-
- while ( <INF> ) {
- chomp;
- my $line = $_;
-
- $line =~ s/\s*M_MODEL_PROPERTY\s*\((\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*([^\(\)]+)(?:\(\))?\s*\)\s*/ Q_PROPERTY($1 $2 READ $2 WRITE set$3)/;
- $line =~ s/\s*M_MODEL_PTR_PROPERTY\s*\((\w+\s*(?:\*)*)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*([^\(\)]+)(?:\(\))?\s*\)\s*/ Q_PROPERTY($1 $2 READ $2 WRITE set$3)/;
-
- print MOC "$line\n";
- }
-
- close( MOC );
-
- close( INF );
-}
diff --git a/mmoc/mmoc.cpp b/mmoc/mmoc.cpp
new file mode 100644
index 00000000..ee8649f9
--- /dev/null
+++ b/mmoc/mmoc.cpp
@@ -0,0 +1,214 @@
+#include <QtGlobal>
+#include <QFileInfo>
+#include <QDir>
+#include <QProcess>
+#include <QtDebug>
+
+
+void runModelMoc(const QString& header, const QStringList& arguments)
+{
+ QFile inf(header);
+ if(!inf.open(QFile::ReadOnly))
+ qFatal("Could not open header file for reading");
+
+ QTextStream in(&inf);
+
+ QProcess p;
+ p.setProcessChannelMode( QProcess::ForwardedChannels );
+ p.start(QString(QT_MOC_PATH), arguments, QIODevice::WriteOnly);
+ if(!p.waitForStarted()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+
+ QString spaces = "\\s*";
+ QString comma = ",";
+ QString colon = ":";
+ QString parenO = "\\(";
+ QString parenC = "\\)";
+ QString emptyParen = "\\(\\)";
+ QString angleO = "<";
+ QString angleC = ">";
+ QString braceO = "\\{";
+ QString nameSpace = "(?:\\w+::)";
+ QString typeName = "\\w+";
+ QString pointer = "\\*";
+ QString templateName = "\\w+";
+ QString plainParam = "(\\w+)";
+ QString boolParam = "(true|false)";
+ QString anyParam = "(.+)";
+
+ QRegExp propertyRegExp(
+ spaces+
+ "M_MODEL_PROPERTY"+
+ spaces+parenO+spaces+
+ "("+
+ "(?:"+
+ nameSpace+"{,1}"+
+ typeName+
+ spaces+
+ pointer+"{,1}"+
+ ")"+
+ "|"+
+ "(?:"+
+ templateName+
+ angleO+
+ spaces+
+ typeName+
+ spaces+
+ pointer+"{,1}"+
+ spaces+
+ angleC+
+ ")"+
+ ")"+
+ spaces+comma+spaces+
+ plainParam+
+ spaces+comma+spaces+
+ plainParam+
+ spaces+comma+spaces+
+ plainParam+
+ spaces+comma+spaces+
+ anyParam+
+ spaces+parenC+spaces );
+
+ QRegExp propertyPtrRegExp(
+ spaces+
+ "M_MODEL_PTR_PROPERTY"+
+ spaces+parenO+spaces+
+ "("+
+ "(?:"+
+ nameSpace+"{,1}"+
+ typeName+
+ spaces+
+ pointer+"{,1}"+
+ spaces+
+ ")"+
+ "|"+
+ "(?:"+
+ templateName+
+ angleO+
+ spaces+
+ typeName+
+ spaces+
+ pointer+"{,1}"+
+ spaces+
+ angleC+
+ ")"+
+ ")"+
+ spaces+comma+spaces+
+ plainParam+
+ spaces+comma+spaces+
+ plainParam+
+ spaces+comma+spaces+
+ boolParam+
+ spaces+comma+spaces+
+ anyParam+
+ spaces+parenC+spaces );
+
+ QString line;
+ while(true) {
+ line = in.readLine();
+ if(line.isNull()) {
+ break;
+ }
+
+ line.replace(propertyRegExp, " Q_PROPERTY(\\1 \\2 READ \\2 WRITE set\\3)");
+ line.replace(propertyPtrRegExp, " Q_PROPERTY(\\1 \\2 READ \\2 WRITE set\\3)");
+ p.write(QString(line + "\n").toLatin1());
+ }
+ p.closeWriteChannel();
+
+ if(!p.waitForFinished()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+}
+
+void runStyleMoc(const QString& header, const QStringList& arguments)
+{
+ QFile inf(header);
+ if(!inf.open(QFile::ReadOnly))
+ qFatal("Could not open header file for reading");
+
+ QTextStream in(&inf);
+
+ QProcess p;
+ p.setProcessChannelMode( QProcess::ForwardedChannels );
+ p.start(QString(QT_MOC_PATH), arguments);
+ if(!p.waitForStarted()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+
+
+ QRegExp attributeRegExp("\\s*M_STYLE_ATTRIBUTE\\s*\\(\\s*(\\w+\\:*\\w*)\\s*,\\s*(\\w+)\\s*,\\s*(\\w+)\\s*\\)\\s*");
+ QRegExp attributePtrRegExp("\\s*M_STYLE_PTR_ATTRIBUTE\\s*\\(\\s*(\\w+\\:*\\w*\\s*\\*+)\\s*,\\s*(\\w+)\\s*,\\s*(\\w+)\\s*\\)\\s*");
+
+
+ QString line;
+ while(true) {
+ line = in.readLine();
+ if(line.isNull()) {
+ break;
+ }
+
+ line.replace(attributeRegExp, " Q_PROPERTY(\\1 \\2 READ \\2 WRITE set\\3)");
+ line.replace(attributePtrRegExp, " Q_PROPERTY(const \\1 \\2 READ \\2 WRITE set\\3)");
+ p.write(QString(line + "\n").toLatin1());
+ }
+ p.closeWriteChannel();
+
+ if(!p.waitForFinished()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+}
+
+void runQtMoc(const QStringList& arguments)
+{
+ QProcess p;
+ p.setProcessChannelMode( QProcess::ForwardedChannels );
+ p.start(QString(QT_MOC_PATH), arguments);
+
+ if(!p.waitForStarted()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+
+ if(!p.waitForFinished()) {
+ qFatal("mmoc: failed to run command '%s'", QT_MOC_PATH);
+ }
+}
+
+enum HeaderType {
+ Model,
+ Style
+};
+
+int main(int argc, const char *argv[])
+{
+ HeaderType type=Model;
+ QStringList commandLineParameters;
+ QString filename;
+
+ for(int i=1; i<argc; ++i) {
+ if(QString(argv[i]).endsWith("style.h")) {
+ type = Style;
+ filename = argv[i];
+ } else if(QString(argv[i]).endsWith("model.h")) {
+ type = Model;
+ filename = argv[i];
+ } else {
+ commandLineParameters << QString(argv[i]);
+ }
+ }
+
+ if(filename.isEmpty()) {
+ runQtMoc(commandLineParameters);
+ } else {
+ commandLineParameters << "-f" + filename;
+ if(type == Model) {
+ runModelMoc(filename, commandLineParameters);
+ } else if(type == Style) {
+ runStyleMoc(filename, commandLineParameters);
+ }
+ }
+
+ return 0; //success
+}
+
diff --git a/mmoc/mmoc.pro b/mmoc/mmoc.pro
index 4541841d..b9daccc2 100644
--- a/mmoc/mmoc.pro
+++ b/mmoc/mmoc.pro
@@ -1,20 +1,46 @@
include(../mkspecs/common.pri)
-TEMPLATE = subdirs
-SUBDIRS =
+TEMPLATE = app
+TARGET = mmoc
+target.path = $$M_INSTALL_BIN
+INCLUDEPATH += .
+DEPENDPATH += $$INCLUDEPATH
+
+# enable QString optimizations
+DEFINES += QT_USE_FAST_CONCATENATION QT_USE_FAST_OPERATOR_PLUS
+
+# Check for mixing of const and non-const iterators,
+# which can cause problems when built with some compilers:
+DEFINES += QT_STRICT_ITERATORS
+
+win32-msvc*:{
+ target.commands += copy release\mmoc.exe .
+}
+
+# Dont generate mmoc.app bundle for Mac OS X
+macx:CONFIG -= app_bundle
+CONFIG += \
+ qt \
+
+SOURCES += \
+ mmoc.cpp \
+
+HEADERS += \
+
+
+INSTALLS += \
+ target\
+
+win32: {
+ DEFINES += QT_MOC_PATH=\\\"\"moc.exe\"\\\"
+} else {
+ DEFINES += QT_MOC_PATH=\'$$quote(\"$$QMAKE_MOC\")\'
+}
QMAKE_EXTRA_TARGETS += check
-check.depends =
+check.depends = $${TARGET}
check.commands = $$system(true)
QMAKE_EXTRA_TARGETS += check-xml
-check-xml.depends =
+check-xml.depends = $${TARGET}
check-xml.commands = $$system(true)
-
-mmoc.target = .dummy
-mmoc.commands = touch $$mmoc.target
-mmoc.path = $$M_INSTALL_BIN
-mmoc.files = mmoc
-
-INSTALLS += \
- mmoc\
diff --git a/plainqt/style/qtmaemo6comboboxpopup.cpp b/plainqt/style/qtmaemo6comboboxpopup.cpp
index 0ad09bcf..e3924aa7 100644
--- a/plainqt/style/qtmaemo6comboboxpopup.cpp
+++ b/plainqt/style/qtmaemo6comboboxpopup.cpp
@@ -37,6 +37,7 @@ QtMaemo6ComboBoxPopup::QtMaemo6ComboBoxPopup(QComboBox *comboBox, QWidget *paren
m_listView(NULL),
m_lineEdit(NULL)
{
+ setObjectName("Qt_Maemo6_ComboBox");
m_listView = new QListView();
if(comboBox)
m_listView->setModel(comboBox->model());
diff --git a/plainqt/style/qtmaemo6dialogproxy.cpp b/plainqt/style/qtmaemo6dialogproxy.cpp
index 2318898f..4964e846 100644
--- a/plainqt/style/qtmaemo6dialogproxy.cpp
+++ b/plainqt/style/qtmaemo6dialogproxy.cpp
@@ -34,6 +34,7 @@
QtMaemo6DialogProxy::QtMaemo6DialogProxy(QWidget *mw, QWidget *parent)
: QtMaemo6Window(mw, parent)
{
+ setObjectName("Qt_Maemo6_DialogProxy");
setAttribute(Qt::WA_TranslucentBackground);
QPalette palette;
diff --git a/plainqt/style/qtmaemo6dialogtitle.cpp b/plainqt/style/qtmaemo6dialogtitle.cpp
index 5703dfa0..eda5fb61 100644
--- a/plainqt/style/qtmaemo6dialogtitle.cpp
+++ b/plainqt/style/qtmaemo6dialogtitle.cpp
@@ -18,6 +18,7 @@
****************************************************************************/
#include "qtmaemo6dialogtitle.h"
+#include "qtmaemo6style_p.h"
#include <QToolButton>
#include <QHBoxLayout>
@@ -25,17 +26,31 @@
#include <QStyleOption>
#include <QPainter>
#include <QDebug>
+#include <mescapebuttonpanelstyle.h>
+#include <MTheme>
QtMaemo6DialogTitle::QtMaemo6DialogTitle(QWidget *parent) : QWidget(parent)
{
setObjectName(QString("Qt_Maemo6_DialogTitle"));
+ QStyleOption option;
+ option.initFrom(this);
+
m_titleLabel = new QLabel(this);
m_closeButton = new QtMaemo6ClickLabel(this);
m_closeButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
m_closeButton->setMargin(8);
+ m_closeButton->setObjectName( QString( "Qt_Maemo6_Dialog_CloseButton" ) );
+
+ //currently meegotouch uses the same close button icon for dialogs as used in navigation bar
+ const MEscapeButtonPanelStyle *escapeButtonStyle =
+ static_cast<const MEscapeButtonPanelStyle *>(QtMaemo6StylePrivate::mStyle(option.state,
+ "MEscapeButtonPanelStyle", ""));
+ if(escapeButtonStyle) {
+ m_closeButton->setPixmap(*MTheme::pixmapCopy(escapeButtonStyle->closeButtonIconId()));
+ }
connect(m_closeButton, SIGNAL(clicked()), this, SIGNAL(closeRequest()));
m_titleBarLayout = new QHBoxLayout(this);
diff --git a/plainqt/style/qtmaemo6menu.cpp b/plainqt/style/qtmaemo6menu.cpp
index 0ee5887f..a0748a55 100644
--- a/plainqt/style/qtmaemo6menu.cpp
+++ b/plainqt/style/qtmaemo6menu.cpp
@@ -30,6 +30,7 @@
QtMaemo6Menu::QtMaemo6Menu(QMenuBar *mb, QWidget *parent) : QWidget(parent)
{
+ setObjectName("Qt_Maemo6_Menu");
QGridLayout *gridLayout = new QGridLayout(this);
for (int i = 0; i < mb->actions().count(); ++i) {
diff --git a/plainqt/style/qtmaemo6menuproxy.cpp b/plainqt/style/qtmaemo6menuproxy.cpp
index b759f1c4..a0f018b6 100644
--- a/plainqt/style/qtmaemo6menuproxy.cpp
+++ b/plainqt/style/qtmaemo6menuproxy.cpp
@@ -33,8 +33,7 @@
#include <QParallelAnimationGroup>
#include <mapplicationmenustyle.h>
-#include <mwidgetfadeinanimationstyle.h>
-#include <mwidgetfadeoutanimationstyle.h>
+#include <mwidgetfadeanimationstyle.h>
#include <QDebug>
/* unforunately this is required to force widgets drawing it's background, even
@@ -62,6 +61,7 @@ QtMaemo6MenuProxy::QtMaemo6MenuProxy(QMenuBar *mb, QWidget *parent)
: QtMaemo6Window(NULL, parent),
m_menuBar(mb)
{
+ setObjectName("Qt_Maemo6_MenuProxy");
//must be set, to activate the compositing
setAttribute(Qt::WA_TranslucentBackground);
QPalette palette;
@@ -122,9 +122,9 @@ void QtMaemo6MenuProxy::mousePressEvent(QMouseEvent *event)
void QtMaemo6MenuProxy::showEvent(QShowEvent *event) {
Q_UNUSED(event);
- const MWidgetFadeInAnimationStyle *fadeInStyle =
- static_cast<const MWidgetFadeInAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
- "MWidgetFadeInAnimationStyle"));
+ const MWidgetFadeAnimationStyle *fadeInStyle =
+ static_cast<const MWidgetFadeAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
+ "MWidgetFadeInAnimationStyle", "In"));
layout()->activate();
QRect finalGeometry = QRect(m_menu->geometry().topLeft(), m_menu->sizeHint());
@@ -160,9 +160,9 @@ void QtMaemo6MenuProxy::showEvent(QShowEvent *event) {
}
void QtMaemo6MenuProxy::hideWindow() {
- const MWidgetFadeOutAnimationStyle *fadeOutStyle =
- static_cast<const MWidgetFadeOutAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
- "MWidgetFadeOutAnimationStyle"));
+ const MWidgetFadeAnimationStyle *fadeOutStyle =
+ static_cast<const MWidgetFadeAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
+ "MWidgetFadeOutAnimationStyle", "Out"));
QRect startGeometry = m_menu->geometry();
QRect finalGeometry = startGeometry;
diff --git a/plainqt/style/qtmaemo6scrollbareventfilter.cpp b/plainqt/style/qtmaemo6scrollbareventfilter.cpp
index 982ac7e8..46b21a0a 100644
--- a/plainqt/style/qtmaemo6scrollbareventfilter.cpp
+++ b/plainqt/style/qtmaemo6scrollbareventfilter.cpp
@@ -35,8 +35,7 @@
#include <mwidgetstyle.h>
#include <MScalableImage>
-#include <mwidgetfadeinanimationstyle.h>
-#include <mwidgetfadeoutanimationstyle.h>
+#include <mwidgetfadeanimationstyle.h>
#ifdef SHOW_SCROLLING_THUMBNAIL
AbstractScrollAreaThumbView::AbstractScrollAreaThumbView(QWidget *parent /*= NULL*/)
@@ -104,7 +103,10 @@ void QtMaemo6ScrollBarEventFilter::enableOn(QObject *o)
#endif //SHOW_SCROLLING_THUMBNAIL
//FIXME: find a more proper solution without manipulating the widget's properties
// turn the scrollbars off for ScrollArea, they are handled manually by the style
+ abstractScrollArea->horizontalScrollBar()->setVisible(false);
abstractScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ abstractScrollArea->verticalScrollBar()->setVisible(false);
abstractScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
if (QScrollBar *scrollBar = qobject_cast<QScrollBar *>(o)) {
@@ -345,13 +347,13 @@ void QtMaemo6ScrollBarEventFilter::fadeInOutAnimation(QWidget *w, const char *pr
static_cast<const MPositionIndicatorStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
"MPositionIndicatorStyle"));
- const MWidgetFadeInAnimationStyle *fadeInStyle =
- static_cast<const MWidgetFadeInAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
- "MWidgetFadeInAnimationStyle"));
+ const MWidgetFadeAnimationStyle *fadeInStyle =
+ static_cast<const MWidgetFadeAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
+ "MWidgetFadeAnimationStyle", "In"));
- const MWidgetFadeOutAnimationStyle *fadeOutStyle =
- static_cast<const MWidgetFadeOutAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
- "MWidgetFadeOutAnimationStyle"));
+ const MWidgetFadeAnimationStyle *fadeOutStyle =
+ static_cast<const MWidgetFadeAnimationStyle *>(QtMaemo6StylePrivate::mStyle(QStyle::State_Active,
+ "MWidgetFadeAnimationStyle", "Out"));
QSequentialAnimationGroup *animationGroup = new QSequentialAnimationGroup();
QPropertyAnimation *fadeIn = new QPropertyAnimation(animationGroup);
diff --git a/plainqt/style/qtmaemo6sliderpopup.cpp b/plainqt/style/qtmaemo6sliderpopup.cpp
index 0d5596d3..1e6b0994 100644
--- a/plainqt/style/qtmaemo6sliderpopup.cpp
+++ b/plainqt/style/qtmaemo6sliderpopup.cpp
@@ -31,6 +31,12 @@
#include <mlabelstyle.h>
+QtMaemo6SliderPopUp::QtMaemo6SliderPopUp()
+ : m_slider(0)
+{
+ setObjectName("Qt_Maemo6_SliderPopUp");
+}
+
void QtMaemo6SliderPopUp::enableOn(QSlider* slider) {
QWidget* topLevelWidget = slider;
diff --git a/plainqt/style/qtmaemo6sliderpopup.h b/plainqt/style/qtmaemo6sliderpopup.h
index 684630af..9b4b1740 100644
--- a/plainqt/style/qtmaemo6sliderpopup.h
+++ b/plainqt/style/qtmaemo6sliderpopup.h
@@ -33,7 +33,7 @@ class QSlider;
class QtMaemo6SliderPopUp : public QLabel {
Q_OBJECT
public:
- QtMaemo6SliderPopUp() : m_slider(0) {};
+ QtMaemo6SliderPopUp();
/*!
* \brief append the popup to a QSlider
diff --git a/plainqt/style/qtmaemo6style.cpp b/plainqt/style/qtmaemo6style.cpp
index 5cd6cc22..f38f8bd2 100644
--- a/plainqt/style/qtmaemo6style.cpp
+++ b/plainqt/style/qtmaemo6style.cpp
@@ -59,6 +59,7 @@
#include <MScalableImage>
#include <MLabel>
#include <MApplicationWindow>
+#include <MInputMethodState>
#include <mbuttonstyle.h>
#include <mapplicationpagestyle.h>
#include <mpositionindicatorstyle.h>
@@ -79,8 +80,8 @@
#include <mcontentitemstyle.h>
#include <mapplicationmenustyle.h>
#include <mfeedbackplayer.h>
-#include <mwidgetfadeinanimationstyle.h>
-#include <mwidgetfadeoutanimationstyle.h>
+//#include <mwidgetfadeinanimationstyle.h>
+//#include <mwidgetfadeoutanimationstyle.h>
#include <mdeviceprofile.h>
#include "qtmaemo6titlebar.h"
@@ -147,19 +148,6 @@ void QtMaemo6StylePrivate::initM()
m_isMInitialized = true;
- QStringList args = qApp->arguments();
-
- int argc = 1;
- char *argv[ 1 ];
- argv[ 0 ] = 0;
-
- if (! args.isEmpty()) {
- //FIXME: using QString would be nicer
- argv[ 0 ] = strndup(args[ 0 ].toLocal8Bit().constData(), 42);
-
- qDebug("appName: %s", argv[ 0 ]);
- }
-
m_windowEventFilter = new QtMaemo6StyleEventFilter(q);
m_scrollBarEventFilter = new QtMaemo6ScrollBarEventFilter(q);
m_scrollBarEventFilter->setScrollBarsAlwaysVisible(false);
@@ -168,6 +156,18 @@ void QtMaemo6StylePrivate::initM()
if (MComponentData::instance() != 0) {
m_isMApplication = true;
} else {
+ QStringList args = qApp->arguments();
+
+ int argc = 1;
+ char *argv[ 1 ];
+ argv[ 0 ] = 0;
+
+ if (! args.isEmpty()) {
+ //FIXME: using QString would be nicer
+ argv[ 0 ] = strndup(args[ 0 ].toLocal8Bit().constData(), 42);
+
+ qDebug("appName: %s", argv[ 0 ]);
+ }
m_componentData = new MComponentData(argc, argv);
}
@@ -176,7 +176,10 @@ void QtMaemo6StylePrivate::initM()
"MLabelStyle"));
qApp->setFont(style->font());
qApp->setGlobalStrut(QSize(0, 0));
- qApp->setInputContext(QInputContextFactory::create("MInputContext", qApp));
+
+ bool inputConnect = QObject::connect(MInputMethodState::instance(), SIGNAL(inputMethodAreaChanged(QRect)), q, SLOT(ensureFocusedWidgetVisible(QRect)));
+ if(!inputConnect)
+ qCritical() << "Virtual keyboard notification connection failed";
}
const MStyle *QtMaemo6StylePrivate::mStyle(QStyle::State state,
@@ -837,21 +840,32 @@ void QtMaemo6Style::setKineticMaxKineticScrollSpeed(int speed) {
d->m_kinetic->setMaxKineticScrollSpeed(speed);
}
+bool QtMaemo6Style::isStyled( const QWidget * widget ) const {
+ return ! ( ( widget &&
+ widget->dynamicPropertyNames().contains(M::NoMStyle) ) ||
+ qApp->dynamicPropertyNames().contains(M::NoMStyle) );
+}
void QtMaemo6Style::polish(QApplication *app)
{
- if(app->dynamicPropertyNames().contains(M::NoMStyle))
- return;
- QtMaemo6TestStyle::polish(app);
+ if(!isStyled()) {
+ QPlastiqueStyle::polish(app);
+ }
+ else {
+ QtMaemo6TestStyle::polish(app);
+ }
}
void QtMaemo6Style::polish(QWidget *widget)
{
+ Q_D(QtMaemo6Style);
+
if(qobject_cast<QDesktopWidget*>(widget))
return;
- if(widget->dynamicPropertyNames().contains(M::NoMStyle))
+ if( !isStyled( widget ) ) {
return;
+ }
if(qobject_cast<MWindow*>(widget)) {
return;
@@ -873,7 +887,7 @@ void QtMaemo6Style::polish(QWidget *widget)
}
#ifdef M_LOG_POLISH
- QString filename = QString("/home/mstyle_%1.log").arg( QCoreApplication::applicationFilePath().section('/', -1 ) );
+ QString filename = QString("/tmp/mstyle_%1.log").arg( QCoreApplication::applicationFilePath().section('/', -1 ) );
QFile file( filename );
if (file.open(QIODevice::Append | QIODevice::Text)) {
@@ -887,8 +901,6 @@ void QtMaemo6Style::polish(QWidget *widget)
}
#endif
- Q_D(QtMaemo6Style);
-
// Lazy initialization of the MFramework.
// This is needed to guarantee that actual MApplications will work as well.
if (!d->m_isMInitialized) {
@@ -907,23 +919,6 @@ void QtMaemo6Style::polish(QWidget *widget)
}
}
- if (QtMaemo6ClickLabel *lbl = qobject_cast<QtMaemo6ClickLabel *>(widget)) {
- int navigationBarHeight = 0;
- QWidget * parent = qobject_cast<QWidget *>( widget->parent() );
- if ( parent ) {
- navigationBarHeight = parent->height() - 2 * parent->layout()->margin();
- }
- QSize navigationBarSize = QSize( navigationBarHeight, navigationBarHeight );
- if ( lbl->objectName() == "Qt_Maemo6_TitleBar_Close") {
- const QPixmap *closePixmap = MTheme::pixmapCopy("Icon-close", navigationBarSize);
- lbl->setPixmap(*closePixmap);
- }
- if ( lbl->objectName() == "Qt_Maemo6_TitleBar_Home") {
- const QPixmap *closePixmap = MTheme::pixmapCopy("Icon-home", navigationBarSize);
- lbl->setPixmap(*closePixmap);
- }
- }
-
if (QtMaemo6TitleBar *titleBar = qobject_cast<QtMaemo6TitleBar *>(widget)) {
// apply properties of the navigation bar style
const MNavigationBarStyle *style =
@@ -1048,6 +1043,11 @@ void QtMaemo6Style::drawPrimitive(PrimitiveElement element,
QPainter *painter,
const QWidget *widget) const
{
+ if( !isStyled( widget ) ) {
+ QPlastiqueStyle::drawPrimitive(element, option, painter, widget);
+ return;
+ }
+
Q_D(const QtMaemo6Style);
switch (element) {
@@ -1063,7 +1063,7 @@ void QtMaemo6Style::drawPrimitive(PrimitiveElement element,
if (qobject_cast<const QtMaemo6DialogTitle *>(widget)) {
const MWidgetStyle *style =
static_cast<const MWidgetStyle *>(
- QtMaemo6StylePrivate::mStyle(option->state, "MWidgetStyle", "MDialogTitleBar"));
+ QtMaemo6StylePrivate::mStyle(option->state, "MDialogStyle", "MDialogTitleBar"));
// draw widget background
d->drawWidgetBackground(painter, option, widget->rect(), style);
@@ -1198,6 +1198,11 @@ void QtMaemo6Style::drawControl(ControlElement element,
QPainter *p,
const QWidget *widget) const
{
+ if( !isStyled( widget ) ) {
+ QPlastiqueStyle::drawControl(element, opt, p, widget);
+ return;
+ }
+
Q_D(const QtMaemo6Style);
switch (element) {
@@ -1518,6 +1523,11 @@ void QtMaemo6Style::drawComplexControl(ComplexControl control,
QPainter *p,
const QWidget *widget /*= 0*/) const
{
+ if( !isStyled( widget ) ) {
+ QPlastiqueStyle::drawComplexControl(control, opt, p, widget);
+ return;
+ }
+
Q_D(const QtMaemo6Style);
switch (control) {
case CC_ComboBox: {
@@ -1797,6 +1807,10 @@ QRect QtMaemo6Style::subControlRect(ComplexControl control,
SubControl subControl,
const QWidget *widget /*= 0*/) const
{
+ if( !isStyled( widget ) ) {
+ return QPlastiqueStyle::subControlRect(control, option, subControl, widget);
+ }
+
Q_D(const QtMaemo6Style);
if (!d->m_isMInitialized) {
@@ -2087,6 +2101,10 @@ QSize QtMaemo6Style::sizeFromContents(ContentsType type,
const QSize &contentsSize,
const QWidget *widget) const
{
+ if( !isStyled( widget ) ) {
+ return QPlastiqueStyle::sizeFromContents(type, option, contentsSize, widget);
+ }
+
Q_D(const QtMaemo6Style);
QSize retSize = QtMaemo6TestStyle::sizeFromContents(type, option, contentsSize, widget);
@@ -2219,6 +2237,9 @@ int QtMaemo6Style::pixelMetric(PixelMetric metric,
const QStyleOption *option,
const QWidget *widget) const
{
+ if ( !isStyled( widget ) ) {
+ return QPlastiqueStyle::pixelMetric(metric, option, widget);
+ }
switch (metric) {
case PM_ScrollBarExtent:
case PM_ScrollBarSliderMin: {
@@ -2358,6 +2379,10 @@ int QtMaemo6Style::pixelMetric(PixelMetric metric,
QIcon QtMaemo6Style::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option,
const QWidget *widget) const
{
+ if ( !isStyled( widget ) ) {
+ return QPlastiqueStyle::standardIconImplementation(standardIcon, option, widget);
+ }
+
QIcon icon;
QPixmap pixmap;
@@ -2404,6 +2429,10 @@ QIcon QtMaemo6Style::standardIconImplementation(StandardPixmap standardIcon, con
int QtMaemo6Style::styleHint(StyleHint hint, const QStyleOption *option,
const QWidget *widget, QStyleHintReturn *returnData) const
{
+ if( !isStyled( widget ) ) {
+ return QPlastiqueStyle::styleHint(hint, option, widget, returnData);
+ }
+
if (hint == QStyle::SH_ToolBar_Movable) {
return false;
} else if (hint == QStyle::SH_RequestSoftwareInputPanel) {
@@ -2412,6 +2441,79 @@ int QtMaemo6Style::styleHint(StyleHint hint, const QStyleOption *option,
return QtMaemo6TestStyle::styleHint(hint, option, widget, returnData);
}
+
+void QtMaemo6Style::ensureFocusedWidgetVisible(QRect rect) {
+ QWidget* widget = qApp->focusWidget();
+ if(widget) {
+ Q_D(QtMaemo6Style);
+ if(rect.isValid()) {
+ QRect screenRect = QRect(QPoint(0,0), MDeviceProfile::instance()->resolution());
+ int spaceAbove = rect.top();
+ int spaceBelow = screenRect.height() - (rect.top() + rect.height());
+
+ if(spaceAbove > spaceBelow) {
+ int maxY = rect.top();
+ d->ensureWidgetVisible(widget, QRect(QPoint(0,0), QSize(screenRect.width(), maxY)));
+ } else {
+ int minY = rect.top() + rect.height();
+ d->ensureWidgetVisible(widget, QRect(QPoint(0,minY), QSize(screenRect.width(), screenRect.height()-minY)));
+ }
+ } else {
+ d->ensureWidgetVisible(widget, rect);
+ }
+ }
+}
+
+void QtMaemo6StylePrivate::ensureWidgetVisible(QWidget* widget, QRect visibleArea)
+{
+ if(visibleArea.isValid()) {
+ QWidget* parent = widget->parentWidget();
+ QtMaemo6Window* window = NULL;
+ //search
+ while(!(window = qobject_cast<QtMaemo6Window*>(parent)) && parent)
+ parent = parent->parentWidget();
+ if(window) {
+ QAbstractScrollArea* sa = qobject_cast<QAbstractScrollArea*>(window->centralWidget());
+ if(sa) {
+ QWidget* viewport = sa->viewport();
+
+ //that is the real visible area of the viewport, the navigation bar is excluded here
+ QRect realVisibleRect = visibleArea.intersected(
+ QRect(viewport->mapToGlobal(QPoint(0,0)), viewport->size() ));
+
+ QRect globalWidgetRect = QRect(
+ widget->mapToGlobal(QPoint(0,0)),
+ widget->size()
+ );
+
+ QPoint widgetGlobalPosition = widget->mapToGlobal(QPoint(0,0));
+
+ //the widget is not fully covered by the visible Area
+ if(globalWidgetRect.intersected(realVisibleRect) != globalWidgetRect) {
+ QPoint originalViewportPos = viewport->mapToGlobal(QPoint(0,0));
+ m_originalWidgetPos.widget = viewport;
+ m_originalWidgetPos.position = viewport->pos();
+
+ int newXPos = realVisibleRect.top() + ((realVisibleRect.height() - widget->height()) / 2);
+ QPoint moveBy = QPoint(0, widgetGlobalPosition.y() - newXPos);
+
+ //centered in visibleArea
+ viewport->move(-moveBy);
+ }
+ } else {
+ qCritical() << "Can't focus on" << widget << "because scroll area contains no viewport";
+ }
+ } else {
+ qCritical() << "Can't focus on" << widget << "because there is no top level scroll area";
+ }
+ } else {
+ if(m_originalWidgetPos.widget) {
+ m_originalWidgetPos.widget->move(m_originalWidgetPos.position);
+ m_originalWidgetPos.widget = 0;
+ }
+ }
+}
+
/*
Private implementation specific methods:
*/
diff --git a/plainqt/style/qtmaemo6style.h b/plainqt/style/qtmaemo6style.h
index 9d00cb1a..1e616863 100644
--- a/plainqt/style/qtmaemo6style.h
+++ b/plainqt/style/qtmaemo6style.h
@@ -188,6 +188,9 @@ public:
* \see kineticMaxKineticScrollSpeed()
*/
void setKineticMaxKineticScrollSpeed(int speed);
+
+ bool isStyled( const QWidget * widget = 0 ) const;
+
protected Q_SLOTS:
/*! \reimp */
QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option,
@@ -196,6 +199,8 @@ protected Q_SLOTS:
virtual int styleHint(StyleHint hint, const QStyleOption *option = 0,
const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const;
/*! \reimp_end */
+
+ void ensureFocusedWidgetVisible(QRect rect);
};
#endif
diff --git a/plainqt/style/qtmaemo6style_p.h b/plainqt/style/qtmaemo6style_p.h
index 8b06215c..2a17cd8c 100644
--- a/plainqt/style/qtmaemo6style_p.h
+++ b/plainqt/style/qtmaemo6style_p.h
@@ -313,6 +313,18 @@ public:
return align & 0xF;
};
+ void ensureWidgetVisible(QWidget* widget, QRect visibleArea);
+
+ struct WidgetPos {
+ WidgetPos() : widget(NULL) {};
+ WidgetPos(QWidget* w, QPoint p) : widget(w), position(p) {};
+ WidgetPos(const WidgetPos& other) { widget = other.widget; position = other.position; }
+ QWidget* widget;
+ QPoint position;
+ };
+
+ WidgetPos m_originalWidgetPos;
+
public:
QList<QToolButton *> m_toolButtonsInTitleBar;
QList<QAction *> m_toolBarActions;
@@ -323,6 +335,7 @@ public:
MComponentData *m_componentData;
bool m_isMInitialized;
bool m_isMApplication;
+
QtMaemo6ScrollBarEventFilter *m_scrollBarEventFilter;
QtMaemo6StyleEventFilter *m_windowEventFilter;
diff --git a/plainqt/style/qtmaemo6styleeventfilter.cpp b/plainqt/style/qtmaemo6styleeventfilter.cpp
index 276ca686..d46e705f 100644
--- a/plainqt/style/qtmaemo6styleeventfilter.cpp
+++ b/plainqt/style/qtmaemo6styleeventfilter.cpp
@@ -24,6 +24,7 @@
#include "qtmaemo6comboboxpopup.h"
#include "qtmaemo6submenu.h"
+#include <QApplication>
#include <QWidget>
#include <QEvent>
#include <QDebug>
@@ -63,12 +64,7 @@ bool QtMaemo6StyleEventFilter::eventFilter(QObject *obj, QEvent *event)
if (widget->isWindow()) {
if (QDialog *dialog = qobject_cast<QDialog *>(widget)) {
QtMaemo6DialogProxy *dialogProxy = new QtMaemo6DialogProxy(dialog, m_style->m_windowDecoration);
-
dialogProxy->setTitle(widget->windowTitle());
-
- const QPixmap *closePixmap = MTheme::pixmap("Icon-close", QSize(28, 28));
- dialogProxy->setPixmap(*closePixmap);
-
dialogProxy->showFastMaximized();
QtMaemo6StylePrivate::drawWindowBackground(widget);
return true;
@@ -81,12 +77,18 @@ bool QtMaemo6StyleEventFilter::eventFilter(QObject *obj, QEvent *event)
// menubar is added on show event
decoration->setStatusBar(NULL);
decoration->setMenuBar(NULL);
+ bool navigationBarVisible = !qApp->dynamicPropertyNames().contains(M::NoMNavigationBar);
+ decoration->showNavigationBar( navigationBarVisible );
QtMaemo6StylePrivate::drawWindowBackground(decoration);
} else if (!qobject_cast<QtMaemo6Window *>(widget) &&
!widget->inherits("QTipLabel")) { //don't create a new window for every tooltip!
if(0 == qobject_cast<QtMaemo6WindowDecoration*>(widget->parent())) {
m_style->m_windowDecoration = new QtMaemo6WindowDecoration(widget);
m_style->m_windowDecoration->showFastMaximized();
+ bool navigationBarVisible = !qApp->dynamicPropertyNames().contains(M::NoMNavigationBar);
+ m_style->m_windowDecoration->showNavigationBar( navigationBarVisible );
+ bool statusBarVisible = !qApp->dynamicPropertyNames().contains(M::NoMStatusBar);
+ m_style->m_windowDecoration->showDeviceStatusBar( statusBarVisible );
QtMaemo6StylePrivate::drawWindowBackground(m_style->m_windowDecoration);
return true;
}
diff --git a/plainqt/style/qtmaemo6submenu.cpp b/plainqt/style/qtmaemo6submenu.cpp
index 2f510e16..5900a9b3 100644
--- a/plainqt/style/qtmaemo6submenu.cpp
+++ b/plainqt/style/qtmaemo6submenu.cpp
@@ -25,6 +25,7 @@
QtMaemo6SubMenu::QtMaemo6SubMenu(QMenu *m, QWidget *parent) : QListWidget(parent)
{
+ setObjectName("Qt_Maemo6_SubMenu");
if(m)
fillListWidget(m);
diff --git a/plainqt/style/qtmaemo6teststyle.cpp b/plainqt/style/qtmaemo6teststyle.cpp
index 054ed8d3..18561e1a 100644
--- a/plainqt/style/qtmaemo6teststyle.cpp
+++ b/plainqt/style/qtmaemo6teststyle.cpp
@@ -64,20 +64,23 @@ bool QtMaemo6TestStyleEventFilter::eventFilter(QObject *obj, QEvent *event)
QtMaemo6TestStyle::QtMaemo6TestStyle(QtMaemo6TestStylePrivate &dd)
: d_ptr(& dd), // this is a special case, since we start our shared d-pointer hierarchy within m right here
+ m_windowEventFilter(NULL),
m_windowDecoration(NULL)
{
Q_D(QtMaemo6TestStyle);
- if (d)
- d->q_ptr = this;
+ d->q_ptr = this;
+ d->m_styleInitialized = false;
}
QtMaemo6TestStyle::QtMaemo6TestStyle()
: QPlastiqueStyle(),
d_ptr(new QtMaemo6TestStylePrivate()),
- m_windowEventFilter(0)
+ m_windowEventFilter(NULL),
+ m_windowDecoration(NULL)
{
Q_D(QtMaemo6TestStyle);
d->q_ptr = this;
+ d->m_styleInitialized = false;
}
@@ -86,6 +89,17 @@ QtMaemo6TestStyle::~QtMaemo6TestStyle()
delete d_ptr;
}
+void QtMaemo6TestStylePrivate::initStyle()
+{
+ //FIXME: remove magic numbers!
+ qApp->setGlobalStrut(QSize(48, 48));
+ QFont font("Nokia Sans");
+ font.setPointSize(25);
+ qApp->setFont(font);
+
+ m_styleInitialized = true;
+}
+
void QtMaemo6TestStyle::init()
{
m_windowEventFilter = new QtMaemo6TestStyleEventFilter(this);
@@ -93,11 +107,7 @@ void QtMaemo6TestStyle::init()
void QtMaemo6TestStyle::polish(QApplication *app)
{
- //FIXME: remove magic numbers!
- app->setGlobalStrut(QSize(48, 48));
- QFont font("Nokia Sans");
- font.setPointSize(25);
- app->setFont(font);
+ Q_UNUSED(app);
}
void QtMaemo6TestStyle::polish(QPalette &palette)
@@ -128,6 +138,11 @@ void QtMaemo6TestStyle::polish(QWidget *widget)
if(qobject_cast<QDesktopWidget*>(widget))
return;
+ Q_D(QtMaemo6TestStyle);
+ if (!d->m_styleInitialized) {
+ d->initStyle();
+ }
+
widget->installEventFilter(m_windowEventFilter);
}
diff --git a/plainqt/style/qtmaemo6teststyle_p.h b/plainqt/style/qtmaemo6teststyle_p.h
index bc1f7831..cb2d6c0a 100644
--- a/plainqt/style/qtmaemo6teststyle_p.h
+++ b/plainqt/style/qtmaemo6teststyle_p.h
@@ -30,8 +30,15 @@ class QtMaemo6TestStylePrivate
{
Q_DECLARE_PUBLIC(QtMaemo6TestStyle)
public:
- QtMaemo6TestStylePrivate():q_ptr(0) {};
+ QtMaemo6TestStylePrivate()
+ : m_styleInitialized(false),
+ q_ptr(0)
+ {};
virtual ~QtMaemo6TestStylePrivate() {};
+
+ void initStyle();
+
+ bool m_styleInitialized;
protected:
QtMaemo6TestStyle *q_ptr;
};
diff --git a/plainqt/style/qtmaemo6titlebar.cpp b/plainqt/style/qtmaemo6titlebar.cpp
index 11102083..107be721 100644
--- a/plainqt/style/qtmaemo6titlebar.cpp
+++ b/plainqt/style/qtmaemo6titlebar.cpp
@@ -32,6 +32,8 @@
#include <QDebug>
#include <mapplicationmenubuttonstyle.h>
+#include <mhomebuttonpanelstyle.h>
+#include <mescapebuttonpanelstyle.h>
#include <MScalableImage>
#include <MTheme>
@@ -39,24 +41,24 @@ QtMaemo6TitleBar::QtMaemo6TitleBar(QWidget *parent) : QWidget(parent)
{
setObjectName(QString("Qt_Maemo6_TitleBar"));
+ QStyleOption option;
+ option.initFrom(this);
+
QtMaemo6ClickLabel * minimizeButton = new QtMaemo6ClickLabel(this);
minimizeButton->setObjectName( QString( "Qt_Maemo6_TitleBar_Home" ) );
-/*
- minimize_button->setText("MinimizeButton");
- minimize_button->setIcon(QPixmap(":/Icon-home.png"));
- minimize_button->setAutoRaise(true);
- minimize_button->setIconSize(QSize(48, 48));
- */
+ const MHomeButtonPanelStyle *homeButtonStyle =
+ static_cast<const MHomeButtonPanelStyle *>(QtMaemo6StylePrivate::mStyle(option.state,
+ "MHomeButtonPanelStyle", ""));
+ if(homeButtonStyle) {
+ minimizeButton->setPixmap(*MTheme::pixmapCopy(homeButtonStyle->homeButtonIconId()));
+ }
connect(minimizeButton, SIGNAL(clicked()), this, SIGNAL(minimizeButtonClicked()));
m_titleLabel = new QtMaemo6ClickLabel(this);
connect(m_titleLabel, SIGNAL(clicked()), this, SIGNAL(menuLabelClicked()));
m_titleLabelMenuButton = new QtMaemo6ClickLabel(this);
-
- QStyleOption option;
- option.initFrom(this);
-
+ m_titleLabelMenuButton->setObjectName("Qt_Maemo6_TitleBar_Menu");
const MApplicationMenuButtonStyle *iconStyle =
static_cast<const MApplicationMenuButtonStyle *>(QtMaemo6StylePrivate::mStyle(option.state,
"MApplicationMenuButtonStyle", "NavigationBarMenuButton"));
@@ -65,25 +67,19 @@ QtMaemo6TitleBar::QtMaemo6TitleBar(QWidget *parent) : QWidget(parent)
}
connect(m_titleLabelMenuButton, SIGNAL(clicked()), this, SIGNAL(menuLabelClicked()));
-
QSpacerItem *spacer = new QSpacerItem(0, 0);
- const MWidgetStyle *spacerStyle =
- static_cast<const MWidgetStyle *>(QtMaemo6StylePrivate::mStyle(option.state,
- "MWidgetStyle", "NavigationBarMenuButtonArrowImage"));
- if (spacerStyle) {
- spacer->changeSize(spacerStyle->marginLeft(), 0);
+ if (iconStyle) {
+ spacer->changeSize(iconStyle->marginLeft(), 0);
}
QtMaemo6ClickLabel * closeButton = new QtMaemo6ClickLabel(this);
closeButton->setObjectName( QString( "Qt_Maemo6_TitleBar_Close" ) );
- /*
- close_button->setText("CloseButton");
- close_button->setIcon(QPixmap(":/Icon-close.png"));
- //FIXME: remove magic numbers!
- close_button->setIconSize(QSize(48, 48));
- close_button->setAutoRaise(true);
- */
-
+ const MEscapeButtonPanelStyle *escapeButtonStyle =
+ static_cast<const MEscapeButtonPanelStyle *>(QtMaemo6StylePrivate::mStyle(option.state,
+ "MEscapeButtonPanelStyle", ""));
+ if(escapeButtonStyle) {
+ closeButton->setPixmap(*MTheme::pixmapCopy(escapeButtonStyle->closeButtonIconId()));
+ }
connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closeButtonClicked()));
m_buttonsLayout = new QHBoxLayout;
diff --git a/plainqt/style/qtmaemo6windowdecoration.cpp b/plainqt/style/qtmaemo6windowdecoration.cpp
index 14e8d96d..5a32fd67 100644
--- a/plainqt/style/qtmaemo6windowdecoration.cpp
+++ b/plainqt/style/qtmaemo6windowdecoration.cpp
@@ -31,19 +31,31 @@
#include <QGraphicsLinearLayout>
#include <QStatusBar>
#include <QMenuBar>
+#include <QFile>
+#include <QDir>
QtMaemo6WindowDecoration::QtMaemo6WindowDecoration(QWidget *mw, QWidget *parent /*= NULL*/)
: QtMaemo6Window(mw, parent),
m_menuBar(0),
m_statusBar(0),
- m_statusBarParent(0)
+ m_statusBarParent(0),
+ m_deviceStatusBarTimerId(-1)
{
m_titleBar = new QtMaemo6TitleBar(NULL);
m_titleBar->setMenuButtonVisible(false);
m_titleBar->setTitle(mw->windowTitle());
- m_windowLayout->addWidget(m_titleBar, 0, 1);
- m_windowLayout->addWidget(centralWidget(), 1, 1);
+ m_deviceStatusBar = new QLabel();
+ //FIXME: set fixed height to 30, because haven't found a place where this is defined
+ m_deviceStatusBar->setFixedHeight(30);
+ m_deviceStatusBar->setAlignment(Qt::AlignLeft | Qt::AlignTop);
+ updateStatusBarSharedPixmap();
+ //FIXME: use XDamage to update the pixmap. As long as this don't work, update every 2 sec
+ m_deviceStatusBarTimerId = startTimer(2000);
+
+ m_windowLayout->addWidget(m_deviceStatusBar, 0, 1);
+ m_windowLayout->addWidget(m_titleBar, 1, 1);
+ m_windowLayout->addWidget(centralWidget(), 2, 1);
connect(m_titleBar, SIGNAL(closeButtonClicked()), this, SLOT(close()));
connect(m_titleBar, SIGNAL(minimizeButtonClicked()), this, SLOT(showMinimized()));
@@ -59,6 +71,45 @@ QtMaemo6WindowDecoration::~QtMaemo6WindowDecoration()
}
}
+#ifdef Q_WS_X11
+void QtMaemo6WindowDecoration::updateStatusBarSharedPixmap()
+{
+ //destroyXDamageForSharedPixmap();
+
+ Qt::HANDLE handle;
+ if (fetchStatusBarSharedPixmapHandle(&handle)) {
+ QPixmap statusBarPixmap = QPixmap::fromX11Pixmap(handle, QPixmap::ExplicitlyShared);
+ m_deviceStatusBar->setPixmap(statusBarPixmap);
+ statusBarPixmap.save("/tmp/statusbar.png");
+ }
+
+ /*
+ if (!sharedPixmap.isNull()) {
+ setupXDamageForSharedPixmap();
+ }
+ */
+}
+
+bool QtMaemo6WindowDecoration::fetchStatusBarSharedPixmapHandle(Qt::HANDLE *handle)
+{
+ QFile handleTempFile(QDir::temp().filePath("mstatusbar_pixmap_handle"));
+
+ if (!handleTempFile.exists())
+ return false;
+
+ if (!handleTempFile.open(QIODevice::ReadOnly))
+ return false;
+
+ quint32 intHandle;
+ QDataStream dataStream(&handleTempFile);
+ dataStream >> intHandle;
+
+ *handle = intHandle;
+
+ return true;
+}
+#endif
+
void QtMaemo6WindowDecoration::setStatusBar(QStatusBar *statusBar)
{
if (!m_windowLayout)
@@ -66,7 +117,7 @@ void QtMaemo6WindowDecoration::setStatusBar(QStatusBar *statusBar)
if (statusBar) {
m_statusBarParent = statusBar->parentWidget();
- m_windowLayout->addWidget(statusBar, 2, 1);
+ m_windowLayout->addWidget(statusBar, 3, 1);
} else {
if (m_statusBar) {
m_windowLayout->removeWidget(m_statusBar);
@@ -97,6 +148,15 @@ void QtMaemo6WindowDecoration::showMenuBar()
}
}
+void QtMaemo6WindowDecoration::showNavigationBar( bool visible )
+{
+ m_titleBar->setVisible(visible);
+}
+
+void QtMaemo6WindowDecoration::showDeviceStatusBar( bool visible ) {
+ m_deviceStatusBar->setVisible(visible);
+}
+
bool QtMaemo6WindowDecoration::eventFilter(QObject *watched, QEvent *event)
{
if (event->type() == QEvent::WindowTitleChange) {
@@ -106,3 +166,7 @@ bool QtMaemo6WindowDecoration::eventFilter(QObject *watched, QEvent *event)
return QtMaemo6Window::eventFilter(watched, event);
}
+void QtMaemo6WindowDecoration::timerEvent(QTimerEvent *e) {
+ if(e->timerId() == m_deviceStatusBarTimerId)
+ updateStatusBarSharedPixmap();
+}
diff --git a/plainqt/style/qtmaemo6windowdecoration.h b/plainqt/style/qtmaemo6windowdecoration.h
index dc10e3aa..924efff1 100644
--- a/plainqt/style/qtmaemo6windowdecoration.h
+++ b/plainqt/style/qtmaemo6windowdecoration.h
@@ -27,6 +27,7 @@
#include "qtmaemo6window.h"
+class QLabel;
class QStatusBar;
class QtMaemo6TitleBar;
class QVBoxLayout;
@@ -56,6 +57,11 @@ public:
* it takes the ownership of the menuBar
*/
void setMenuBar(QMenuBar *menuBar);
+
+ void showNavigationBar( bool visible );
+
+ void showDeviceStatusBar( bool visible );
+
protected Q_SLOTS:
void showMenuBar();
protected:
@@ -63,12 +69,21 @@ protected:
/*! \reimp */
bool eventFilter(QObject *obj, QEvent *event);
+ void timerEvent(QTimerEvent *);
/*! \reimp_end */
+
+#ifdef Q_WS_X11
+ void updateStatusBarSharedPixmap();
+ bool fetchStatusBarSharedPixmapHandle(Qt::HANDLE *handle);
+#endif
private:
+ QLabel* m_deviceStatusBar;
QtMaemo6TitleBar *m_titleBar;
QMenuBar *m_menuBar;
QStatusBar *m_statusBar;
QWidget *m_statusBarParent;
+
+ int m_deviceStatusBarTimerId;
};
#endif
diff --git a/projects.pro b/projects.pro
index 18ee5fa7..37a4ba01 100644
--- a/projects.pro
+++ b/projects.pro
@@ -62,7 +62,7 @@ for(PROJECT, $$list($$lower($$unique(M_BUILD_PARTS)))) {
}
}
-# put mgen, src and plainqt dirs in right build order...
+# put mmoc, mgen, src and plainqt dirs in right build order...
contains( SUBDIRS, plainqt ) {
SUBDIRS -= plainqt
@@ -74,6 +74,11 @@ contains( SUBDIRS, src ) {
SUBDIRS = src $$SUBDIRS
}
+contains( SUBDIRS, mmoc ) {
+ SUBDIRS -= mmoc
+ SUBDIRS = mmoc $$SUBDIRS
+ }
+
contains( SUBDIRS, mgen ) {
SUBDIRS -= mgen
SUBDIRS = mgen $$SUBDIRS
diff --git a/src/common_top.pri b/src/common_top.pri
index 700e6ae2..cafa74c8 100644
--- a/src/common_top.pri
+++ b/src/common_top.pri
@@ -19,18 +19,13 @@ INCLUDEPATH += $${OUT_PWD}/.gen
QMAKE_STRIP = echo
-PRE_TARGETDEPS += $$MGEN_EXECUTABLE
+PRE_TARGETDEPS += $$MGEN_EXECUTABLE $$MMOC_EXECUTABLE
CONFIG += qt warn_on depend_includepath qmake_cache target_qt dll create_prl
!win32:CONFIG += link_pkgconfig
macx:CONFIG += lib_bundle
-win32 {
- QMAKE_MOC = perl $${IN_PWD}\..\mmoc\mmoc
- INCLUDEPATH += .
-} else {
- QMAKE_MOC = $${M_SOURCE_TREE}/mmoc/mmoc
-}
+QMAKE_MOC = $$MMOC_EXECUTABLE
QMAKE_CFLAGS += -Werror
diff --git a/src/corelib/animation/scene/mbasicorientationanimation.cpp b/src/corelib/animation/scene/mbasicorientationanimation.cpp
index 449beebe..e806e6e3 100644
--- a/src/corelib/animation/scene/mbasicorientationanimation.cpp
+++ b/src/corelib/animation/scene/mbasicorientationanimation.cpp
@@ -265,11 +265,10 @@ MSceneWindow *MBasicOrientationAnimationPrivate::fetchLayerEffect(MSceneWindow *
}
MBasicOrientationAnimation::MBasicOrientationAnimation(const QSize &landscapeScreenSize, QObject *parent) :
- MParallelAnimationGroup(new MBasicOrientationAnimationPrivate, parent)
+ MOrientationAnimation(new MBasicOrientationAnimationPrivate, parent)
{
Q_D(MBasicOrientationAnimation);
- d->rootElement = NULL;
d->sequentialPhasesAnimation = new QSequentialAnimationGroup;
addAnimation(d->sequentialPhasesAnimation);
@@ -467,21 +466,6 @@ void MBasicOrientationAnimation::rootElementChanged()
d->originAnimation->setTargetObject(rootElement());
}
-void MBasicOrientationAnimation::setRootElement(QGraphicsWidget *rootElement)
-{
- Q_D(MBasicOrientationAnimation);
- if (d->rootElement != rootElement) {
- d->rootElement = rootElement;
- rootElementChanged();
- }
-}
-
-QGraphicsWidget *MBasicOrientationAnimation::rootElement()
-{
- Q_D(MBasicOrientationAnimation);
- return d->rootElement;
-}
-
void MBasicOrientationAnimation::updateState(QAbstractAnimation::State newState,
QAbstractAnimation::State oldState)
{
diff --git a/src/corelib/animation/scene/mbasicorientationanimation.h b/src/corelib/animation/scene/mbasicorientationanimation.h
index 8b8c8afa..8e478d31 100644
--- a/src/corelib/animation/scene/mbasicorientationanimation.h
+++ b/src/corelib/animation/scene/mbasicorientationanimation.h
@@ -22,7 +22,7 @@
#ifndef MBASICORIENTATIONANIMATION_H
#define MBASICORIENTATIONANIMATION_H
-#include <mparallelanimationgroup.h>
+#include <morientationanimation.h>
#include <mbasicorientationanimationstyle.h>
#include <QSize>
#include <mnamespace.h>
@@ -40,7 +40,7 @@ class QAnimationGroup;
Phase 1: Screen is rotated
Phase 2: Navigation bar & dock widget slide in, scene window fade in
*/
-class MBasicOrientationAnimation : public MParallelAnimationGroup
+class MBasicOrientationAnimation : public MOrientationAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(MBasicOrientationAnimation)
@@ -65,22 +65,12 @@ public:
virtual void setTargetRotationAngle(M::OrientationAngle start, M::OrientationAngle end);
//! \reimp_end
- void setRootElement(QGraphicsWidget *rootElement);
-
-Q_SIGNALS:
- /*!
- \brief Signals that orientation has changed
- */
- void orientationChanged();
-
protected:
//! \reimp
// from MOrientationAnimation
virtual void rootElementChanged();
//! \reimp_end
- QGraphicsWidget *rootElement();
-
void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
private:
diff --git a/src/corelib/animation/scene/mbasicorientationanimation_p.h b/src/corelib/animation/scene/mbasicorientationanimation_p.h
index d8abdd91..77780702 100644
--- a/src/corelib/animation/scene/mbasicorientationanimation_p.h
+++ b/src/corelib/animation/scene/mbasicorientationanimation_p.h
@@ -20,17 +20,16 @@
#ifndef MBASICORIENTATIONANIMATION_P_H
#define MBASICORIENTATIONANIMATION_P_H
-#include "mparallelanimationgroup_p.h"
+#include "morientationanimation_p.h"
#include <QHash>
class QParallelAnimationGroup;
class QPropertyAnimation;
class MBasicOrientationAnimation;
-class MSceneWindowAnimation;
class MSceneWindow;
-class MBasicOrientationAnimationPrivate : public MParallelAnimationGroupPrivate
+class MBasicOrientationAnimationPrivate : public MOrientationAnimationPrivate
{
Q_DECLARE_PUBLIC(MBasicOrientationAnimation)
@@ -98,7 +97,6 @@ public:
QHash<MSceneWindow *, SceneWindowAnimationPair> genericAnimationsHash;
class QAnimationGroup *sequentialPhasesAnimation;
- QGraphicsWidget *rootElement;
};
#endif
diff --git a/src/corelib/animation/scene/mcrossfadedorientationanimation.cpp b/src/corelib/animation/scene/mcrossfadedorientationanimation.cpp
new file mode 100644
index 00000000..3ef83853
--- /dev/null
+++ b/src/corelib/animation/scene/mcrossfadedorientationanimation.cpp
@@ -0,0 +1,330 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mcrossfadedorientationanimation.h"
+#include "mcrossfadedorientationanimation_p.h"
+
+#include <QGraphicsScene>
+#include <QGraphicsWidget>
+#include <QPropertyAnimation>
+
+#include <QDebug>
+
+void MCrossFadedOrientationAnimationPrivate::init(const QRectF &visibleSceneRect)
+{
+ Q_Q(MCrossFadedOrientationAnimation);
+
+ snapshot = 0;
+ this->visibleSceneRect = visibleSceneRect;
+
+ rootElementRotationAnimation = new QPropertyAnimation(0, "rotation", q);
+ rootElementRotationAnimation->setDuration(q->style()->duration());
+ rootElementRotationAnimation->setEasingCurve(q->style()->rotationEasingCurve());
+
+ rootElementFadeInAnimation = new QPropertyAnimation(0, "opacity", q);
+ rootElementFadeInAnimation->setStartValue(0.0);
+ rootElementFadeInAnimation->setEndValue(1.0);
+ rootElementFadeInAnimation->setDuration(q->style()->duration());
+ rootElementFadeInAnimation->setEasingCurve(q->style()->fadingEasingCurve());
+
+ rootElementPositionAnimation = new QPropertyAnimation(0, "pos", q);
+ rootElementPositionAnimation->setDuration(q->style()->duration());
+ rootElementPositionAnimation->setEasingCurve(q->style()->translationEasingCurve());
+
+ snapshotRotationAnimation = new QPropertyAnimation(0, "rotation", q);
+ snapshotRotationAnimation->setDuration(q->style()->duration());
+ snapshotRotationAnimation->setEasingCurve(q->style()->rotationEasingCurve());
+
+ snapshotFadeOutAnimation = new QPropertyAnimation(0, "opacity", q);
+ snapshotFadeOutAnimation->setStartValue(1.0);
+ snapshotFadeOutAnimation->setEndValue(0.0);
+ snapshotFadeOutAnimation->setDuration(q->style()->duration());
+ snapshotFadeOutAnimation->setEasingCurve(q->style()->fadingEasingCurve());
+
+ snapshotPositionAnimation = new QPropertyAnimation(0, "pos", q);
+ snapshotPositionAnimation->setDuration(q->style()->duration());
+ snapshotPositionAnimation->setEasingCurve(q->style()->translationEasingCurve());
+
+}
+
+void MCrossFadedOrientationAnimationPrivate::createRootElementSnapshot()
+{
+ Q_Q(MCrossFadedOrientationAnimation);
+ QGraphicsScene *scene = q->rootElement()->scene();
+
+ Q_ASSERT(snapshot == 0);
+
+ // Since we want a snapshot only from the root element, we have to
+ // temporarily hide the scene background.
+
+ // hide scene background
+ snapshot = new MSnapshotItem(scene, visibleSceneRect);
+ // show scene background
+
+ scene->addItem(snapshot);
+ snapshot->setPos(0.0, 0.0);
+ snapshot->setTransformOriginPoint(snapshotRotationPoint);
+
+ snapshotRotationAnimation->setTargetObject(snapshot);
+ snapshotFadeOutAnimation->setTargetObject(snapshot);
+ snapshotPositionAnimation->setTargetObject(snapshot);
+}
+
+void MCrossFadedOrientationAnimationPrivate::destroyRootElementSnapshot()
+{
+ snapshotRotationAnimation->setTargetObject(0);
+ snapshotFadeOutAnimation->setTargetObject(0);
+ snapshotPositionAnimation->setTargetObject(0);
+
+ if (snapshot) {
+ delete snapshot;
+ snapshot = 0;
+ }
+}
+
+void MCrossFadedOrientationAnimationPrivate::setSnapshotRotationAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle)
+{
+ // Unlike the root element, the snapshot always begin from 0.0.
+ // Therefore we have to translate the root element rotation angles to snapshot
+ // rotation angles.
+
+ snapshotRotationAnimation->setStartValue(0.0);
+
+ qreal snapshotEndAngle;
+ if (startAngle == M::Angle0) {
+ if (endAngle == M::Angle270)
+ snapshotEndAngle = -90.0;
+ else
+ snapshotEndAngle = endAngle;
+
+ } else if (startAngle == M::Angle90) {
+ snapshotEndAngle = endAngle - startAngle;
+
+ } else if (startAngle == M::Angle180) {
+ if (endAngle == M::Angle0)
+ snapshotEndAngle = 180.0;
+ else
+ snapshotEndAngle = endAngle - startAngle;
+ } else {
+ // startAngle == M::Angle270
+
+ if (endAngle == M::Angle0) {
+ snapshotEndAngle = 90.0;
+ } else if (endAngle == M::Angle90) {
+ snapshotEndAngle = 180.0;
+ } else if (endAngle == M::Angle180) {
+ snapshotEndAngle = -90.0;
+ } else {
+ // M::Angle270
+ snapshotEndAngle = 0.0;
+ }
+ }
+ snapshotRotationAnimation->setEndValue(snapshotEndAngle);
+}
+
+void MCrossFadedOrientationAnimationPrivate::calculateSnapshotRotationPoint(
+ M::OrientationAngle startAngle)
+{
+ // The snapshot item always begin its rotation from 0 degrees, unlike the root
+ // element, which begins from startAngle.
+ // Since both snapshot and root element must be rotated from the same point
+ // in the scene, their rotation points (transform origin points) in their respective local
+ // coordinates must map to the same point in scene coordinates.
+ //
+ // The style option "rotation point" is in local root element coordinates.
+ // Here we translate it into snapshot local coordinates.
+
+ Q_Q(MCrossFadedOrientationAnimation);
+
+ // rotation point of the root element in its local coordinate system.
+ QPointF rootElementRotationPoint = q->style()->rotationPoint();
+
+ switch (startAngle) {
+ case M::Angle0:
+ snapshotRotationPoint = rootElementRotationPoint;
+ break;
+ case M::Angle90:
+ snapshotRotationPoint.rx() = visibleSceneRect.width() - rootElementRotationPoint.y();
+ snapshotRotationPoint.ry() = rootElementRotationPoint.x();
+ break;
+ case M::Angle180:
+ snapshotRotationPoint.rx() = visibleSceneRect.width() - rootElementRotationPoint.x();
+ snapshotRotationPoint.ry() = visibleSceneRect.height() - rootElementRotationPoint.y();
+ break;
+ default: // M::Angle270:
+ snapshotRotationPoint.rx() = rootElementRotationPoint.x();
+ snapshotRotationPoint.ry() = visibleSceneRect.height() - rootElementRotationPoint.y();
+ break;
+ }
+}
+
+void MCrossFadedOrientationAnimationPrivate::setSnapshotPositionAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle)
+{
+ snapshotPositionAnimation->setStartValue(
+ calculateRotationPointSceneCoords(startAngle) - snapshotRotationPoint);
+
+ snapshotPositionAnimation->setEndValue(
+ calculateRotationPointSceneCoords(endAngle) - snapshotRotationPoint);
+}
+
+void MCrossFadedOrientationAnimationPrivate::setRootElementPositionAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle)
+{
+ Q_Q(MCrossFadedOrientationAnimation);
+
+ // rotation point in local item coordinates.
+ QPointF rotationPointLocal = q->style()->rotationPoint();
+
+ rootElementPositionAnimation->setStartValue(
+ calculateRotationPointSceneCoords(startAngle) - rotationPointLocal);
+
+ rootElementPositionAnimation->setEndValue(
+ calculateRotationPointSceneCoords(endAngle) - rotationPointLocal);
+}
+
+void MCrossFadedOrientationAnimationPrivate::setRootElementRotationAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle)
+{
+ if (startAngle == M::Angle270 && endAngle == M::Angle90) {
+ // 180 degrees rotation. Do it clockwise like the snapshot item.
+ rootElementRotationAnimation->setStartValue(-90);
+ rootElementRotationAnimation->setEndValue(endAngle);
+
+ } else if (startAngle == M::Angle180 && endAngle == M::Angle0) {
+ // 180 degrees rotation. Do it clockwise like the snapshot item.
+ rootElementRotationAnimation->setStartValue(-180);
+ rootElementRotationAnimation->setEndValue(endAngle);
+ } else if (startAngle == M::Angle270 && endAngle == M::Angle0) {
+ // Do it clockwise, which is the shortest rotation.
+ rootElementRotationAnimation->setStartValue(-90);
+ rootElementRotationAnimation->setEndValue(endAngle);
+ } else if (startAngle == M::Angle0 && endAngle == M::Angle270) {
+ // Do it counterclockwise, which is the shortest rotation.
+ rootElementRotationAnimation->setStartValue(startAngle);
+ rootElementRotationAnimation->setEndValue(-90);
+ } else {
+ // Easy cases. No tweaks needed.
+ rootElementRotationAnimation->setStartValue(startAngle);
+ rootElementRotationAnimation->setEndValue(endAngle);
+ }
+}
+
+QPointF MCrossFadedOrientationAnimationPrivate::calculateRotationPointSceneCoords(M::OrientationAngle angle)
+{
+ Q_Q(MCrossFadedOrientationAnimation);
+
+ // rotation point in local item coordinates
+ QPointF rotationPointLocal = q->style()->rotationPoint();
+
+ // rotation point in scene coordinates
+ QPointF rotationPointScene;
+
+ rotationPointScene.rx() = visibleSceneRect.x();
+ rotationPointScene.ry() = visibleSceneRect.y();
+
+ switch (angle) {
+ case M::Angle0:
+ rotationPointScene.rx() += rotationPointLocal.x();
+ rotationPointScene.ry() += rotationPointLocal.y();
+ break;
+ case M::Angle90:
+ rotationPointScene.rx() += visibleSceneRect.width() - rotationPointLocal.x();
+ rotationPointScene.ry() += rotationPointLocal.y();
+ break;
+ case M::Angle180:
+ rotationPointScene.rx() += visibleSceneRect.width() - rotationPointLocal.x();
+ rotationPointScene.ry() += visibleSceneRect.height() - rotationPointLocal.y();
+ break;
+ default: // M::Angle270:
+ rotationPointScene.rx() += rotationPointLocal.x();
+ rotationPointScene.ry() += visibleSceneRect.height() - rotationPointLocal.y();
+ break;
+ }
+
+ return rotationPointScene;
+}
+
+MCrossFadedOrientationAnimation::MCrossFadedOrientationAnimation(
+ const QRectF &visibleSceneRect, QObject *parent) :
+ MOrientationAnimation(new MCrossFadedOrientationAnimationPrivate, parent)
+{
+ Q_D(MCrossFadedOrientationAnimation);
+ d->init(visibleSceneRect);
+}
+
+MCrossFadedOrientationAnimation::~MCrossFadedOrientationAnimation()
+{
+ Q_D(MCrossFadedOrientationAnimation);
+
+ d->destroyRootElementSnapshot();
+}
+
+void MCrossFadedOrientationAnimation::addSceneWindow(MSceneWindow *sceneWindow)
+{
+ Q_UNUSED(sceneWindow);
+}
+
+void MCrossFadedOrientationAnimation::removeSceneWindow(MSceneWindow *sceneWindow)
+{
+ Q_UNUSED(sceneWindow);
+}
+
+void MCrossFadedOrientationAnimation::setTargetRotationAngle(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle)
+{
+ Q_D(MCrossFadedOrientationAnimation);
+
+ d->setRootElementRotationAnimationValues(startAngle, endAngle);
+ d->setRootElementPositionAnimationValues(startAngle, endAngle);
+ d->setSnapshotRotationAnimationValues(startAngle, endAngle);
+
+ d->calculateSnapshotRotationPoint(startAngle);
+ d->setSnapshotPositionAnimationValues(startAngle, endAngle);
+}
+
+void MCrossFadedOrientationAnimation::rootElementChanged()
+{
+ Q_D(MCrossFadedOrientationAnimation);
+ d->rootElementRotationAnimation->setTargetObject(rootElement());
+ d->rootElementFadeInAnimation->setTargetObject(rootElement());
+ d->rootElementPositionAnimation->setTargetObject(rootElement());
+}
+
+void MCrossFadedOrientationAnimation::updateState(
+ QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+{
+ Q_D(MCrossFadedOrientationAnimation);
+
+ if (newState == QAbstractAnimation::Running) {
+ d->createRootElementSnapshot();
+
+ // Let the scene windows and widgets have their final sizes and positions
+ // within the root element.
+ emit orientationChanged();
+
+ rootElement()->setTransformOriginPoint(style()->rotationPoint());
+
+ } else if (newState == QAbstractAnimation::Stopped) {
+ d->destroyRootElementSnapshot();
+ }
+
+ MParallelAnimationGroup::updateState(newState, oldState);
+}
diff --git a/src/corelib/animation/scene/mcrossfadedorientationanimation.h b/src/corelib/animation/scene/mcrossfadedorientationanimation.h
new file mode 100644
index 00000000..515ec180
--- /dev/null
+++ b/src/corelib/animation/scene/mcrossfadedorientationanimation.h
@@ -0,0 +1,46 @@
+// Make doxygen skip this internal class
+//! \internal
+#ifndef MCROSSFADEDORIENTATIONANIMATION_H
+#define MCROSSFADEDORIENTATIONANIMATION_H
+
+#include "morientationanimation.h"
+#include <mcrossfadedorientationanimationstyle.h>
+
+class MCrossFadedOrientationAnimationPrivate;
+
+class MCrossFadedOrientationAnimation : public MOrientationAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(MCrossFadedOrientationAnimation)
+ M_ANIMATION_GROUP(MCrossFadedOrientationAnimationStyle)
+
+public:
+ /*!
+ * \brief Constructor
+ *
+ * \param visibleSceneRect The rectangle of the scene that is rendered by MWindow.
+ * Equals to the bounding rectangle of the root element in
+ * scene coordinates.
+ */
+ MCrossFadedOrientationAnimation(const QRectF &visibleSceneRect, QObject *parent = 0);
+
+ /*!
+ * \brief Destructor
+ */
+ virtual ~MCrossFadedOrientationAnimation();
+
+ virtual void addSceneWindow(MSceneWindow *window);
+ virtual void removeSceneWindow(MSceneWindow *window);
+ virtual void setTargetRotationAngle(M::OrientationAngle start, M::OrientationAngle end);
+
+protected:
+ //! \reimp
+ // from MOrientationAnimation
+ virtual void rootElementChanged();
+ //! \reimp_end
+
+ void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
+};
+
+#endif
+//! \internal_end
diff --git a/src/corelib/animation/scene/mcrossfadedorientationanimation_p.h b/src/corelib/animation/scene/mcrossfadedorientationanimation_p.h
new file mode 100644
index 00000000..b62b636d
--- /dev/null
+++ b/src/corelib/animation/scene/mcrossfadedorientationanimation_p.h
@@ -0,0 +1,55 @@
+#ifndef MCROSSFADEDORIENTATIONANIMATION_P_H
+#define MCROSSFADEDORIENTATIONANIMATION_P_H
+
+#include "morientationanimation_p.h"
+
+#include "msnapshotitem.h"
+
+class QPropertyAnimation;
+
+class MCrossFadedOrientationAnimationPrivate : public MOrientationAnimationPrivate
+{
+ Q_DECLARE_PUBLIC(MCrossFadedOrientationAnimation)
+
+public:
+ void init(const QRectF &visibleSceneRect);
+ void createRootElementSnapshot();
+ void destroyRootElementSnapshot();
+
+ void setSnapshotRotationAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle);
+
+ void setSnapshotPositionAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle);
+
+ void setRootElementRotationAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle);
+
+ void setRootElementPositionAnimationValues(
+ M::OrientationAngle startAngle, M::OrientationAngle endAngle);
+
+ void calculateSnapshotRotationPoint(M::OrientationAngle startAngle);
+
+ // Calculates the rotation point in scene coordinates.
+ QPointF calculateRotationPointSceneCoords(M::OrientationAngle angle);
+
+ MSnapshotItem *snapshot;
+
+ // visible scene rect, in scene coordinates.
+ // This is the rectangle of the scene that is rendered by MWindow.
+ // Equals to the bounding rectangle of the root element in scene coordinates.
+ QRectF visibleSceneRect;
+
+ QPropertyAnimation *rootElementRotationAnimation;
+ QPropertyAnimation *rootElementFadeInAnimation;
+ QPropertyAnimation *rootElementPositionAnimation;
+
+ QPropertyAnimation *snapshotRotationAnimation;
+ QPropertyAnimation *snapshotFadeOutAnimation;
+ QPropertyAnimation *snapshotPositionAnimation;
+
+ // The rotation point of the snapshot item, in its local coordinates.
+ QPointF snapshotRotationPoint;
+};
+
+#endif
diff --git a/src/corelib/animation/scene/mfliporientationanimation.cpp b/src/corelib/animation/scene/mfliporientationanimation.cpp
deleted file mode 100644
index 20a5d1bb..00000000
--- a/src/corelib/animation/scene/mfliporientationanimation.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mfliporientationanimation.h"
-
-#if QT_VERSION >= 0x040600
-
-#include "mfliporientationanimation_p.h"
-
-#include <QParallelAnimationGroup>
-#include <QPropertyAnimation>
-#include <QGraphicsWidget>
-#include "mwidgetanimation.h"
-#include "mscenemanager.h"
-#include "mscenewindow.h"
-#include "mnavigationbaranimation.h"
-
-///////////////////
-// Private class //
-///////////////////
-MFlipOrientationAnimationPrivate::MFlipOrientationAnimationPrivate() : angle(M::Angle0)
-{
-}
-
-MFlipOrientationAnimationPrivate::~MFlipOrientationAnimationPrivate()
-{
-}
-
-void MFlipOrientationAnimationPrivate::finishedPhase0()
-{
- Q_Q(MFlipOrientationAnimation);
-
- //TODO: create own class for rootElement to be able to
- // rotate around other axes as well.
-
- if (angle == M::Angle0 || angle == M::Angle180) {
- q->rootElement()->setPos(0, 0);
- q->rootElement()->setTransformOriginPoint(QPointF(432, 240));
- //q->rootElement()->setXRotation(0);
- //q->rootElement()->setYRotation(0);
- //q->rootElement()->setZRotation(angle);
- } else {
- q->rootElement()->setPos(192, -192);
- q->rootElement()->setTransformOriginPoint(QPointF(240, 432));
- //q->rootElement()->setXRotation(0);
- //q->rootElement()->setYRotation(0);
- //q->rootElement()->setZRotation(angle);
- }
-}
-
-//////////////////
-// Public class //
-//////////////////
-
-MFlipOrientationAnimation::MFlipOrientationAnimation(QObject *parent) :
- MOrientationAnimation(new MFlipOrientationAnimationPrivate(), parent, MGroupAnimation::Sequential)
-{
- Q_D(MFlipOrientationAnimation);
-
- d->phase0 = new QPropertyAnimation(NULL, "xRotation", group());
- d->phase0->setDuration(500);
-
-
- d->phase1 = new QPropertyAnimation(NULL, "yRotation", group());
- d->phase1->setDuration(500);
-
- connect(d->phase0, SIGNAL(finished()), SIGNAL(orientationChanged()));
- connect(d->phase0, SIGNAL(finished()), SLOT(finishedPhase0()));
-}
-
-MFlipOrientationAnimation::~MFlipOrientationAnimation()
-{
-}
-
-void MFlipOrientationAnimation::addSceneWindow(MSceneWindow *window)
-{
- Q_UNUSED(window);
-}
-
-void MFlipOrientationAnimation::removeSceneWindow(MSceneWindow *window)
-{
- Q_UNUSED(window);
-}
-
-void MFlipOrientationAnimation::setTargetRotationAngle(M::OrientationAngle start,
- M::OrientationAngle end)
-{
- Q_D(MFlipOrientationAnimation);
-
- //TODO: create own class for rootElement to be able to
- // rotate around other axes as well.
-
-
- //d->phase0->setStartValue(0);
- //d->phase0->setStartValue(rootElement()->xRotation());
- //d->phase1->setEndValue(0);
-
- int startDir = -1;
- //if(start == M::Angle180/* || start == M::Angle270*/)
- // startDir = 1;
-
- int endDir = -1;
- //if(/*end == M::Angle180 || */end == M::Angle270)
- // endDir = 1;
-
- d->phase0->setEndValue(90 * startDir);
- d->phase1->setStartValue(-90 * endDir);
-
-
- if (start == M::Angle0 || start == M::Angle180) {
- // Landscape to portrait
- d->phase0->setPropertyName("xRotation");
- d->phase1->setPropertyName("xRotation");
- } else {
- // Portrait to landscape
- d->phase0->setPropertyName("xRotation");
- d->phase1->setPropertyName("xRotation");
- }
-
- d->angle = end;
-}
-
-void MFlipOrientationAnimation::rootElementChanged()
-{
- Q_D(MFlipOrientationAnimation);
- d->phase0->setTargetObject(rootElement());
- d->phase1->setTargetObject(rootElement());
-}
-
-#include "moc_mfliporientationanimation.cpp"
-#endif
diff --git a/src/corelib/animation/scene/mfliporientationanimation.h b/src/corelib/animation/scene/mfliporientationanimation.h
deleted file mode 100644
index 36109c85..00000000
--- a/src/corelib/animation/scene/mfliporientationanimation.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MFLIPORIENTATIONANIMATION_H
-#define MFLIPORIENTATIONANIMATION_H
-
-#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-
-#include <morientationanimation.h>
-#include <manimationstyle.h>
-
-class MFlipOrientationAnimationPrivate;
-class MWindow;
-
-/*!
- \class MFlipOrientationAnimation
- */
-class MFlipOrientationAnimation : public MOrientationAnimation
-{
- Q_OBJECT
- M_ANIMATION(MAnimationStyle)
- Q_DECLARE_PRIVATE(MFlipOrientationAnimation)
-
- Q_PRIVATE_SLOT(d_func(), void finishedPhase0())
-public:
-
- /*!
- \brief Constructs the orientation animation.
- */
- MFlipOrientationAnimation(QObject *parent = NULL);
-
- /*!
- \brief Destroys the orientation animation.
- */
- virtual ~MFlipOrientationAnimation();
-
- //! \reimp
- // from MOrientationAnimation
- virtual void addSceneWindow(MSceneWindow *window);
- virtual void removeSceneWindow(MSceneWindow *window);
- virtual void setTargetRotationAngle(M::OrientationAngle start, M::OrientationAngle end);
- //! \reimp_end
-
-protected:
- //! \reimp
- // from MOrientationAnimation
- virtual void rootElementChanged();
- //! \reimp_end
-};
-
-#endif
-#endif
-
diff --git a/src/corelib/animation/scene/mfliporientationanimation_p.h b/src/corelib/animation/scene/mfliporientationanimation_p.h
deleted file mode 100644
index b407c66b..00000000
--- a/src/corelib/animation/scene/mfliporientationanimation_p.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MFLIPORIENTATIONANIMATION_P_H
-#define MFLIPORIENTATIONANIMATION_P_H
-
-#include "morientationanimation_p.h"
-#include "mnamespace.h"
-
-class QParallelAnimationGroup;
-class QPropertyAnimation;
-class MBasicOrientationAnimation;
-class MSceneWindowAnimation;
-
-class MFlipOrientationAnimationPrivate : public MOrientationAnimationPrivate
-{
- Q_DECLARE_PUBLIC(MFlipOrientationAnimation)
-public:
- MFlipOrientationAnimationPrivate();
- virtual ~MFlipOrientationAnimationPrivate();
-private:
- void finishedPhase0();
-
- QPropertyAnimation *phase0;
- QPropertyAnimation *phase1;
-
- M::OrientationAngle angle;
-};
-
-#endif
diff --git a/src/corelib/animation/scene/mnavigationbaranimation.cpp b/src/corelib/animation/scene/mnavigationbaranimation.cpp
deleted file mode 100644
index 8802b187..00000000
--- a/src/corelib/animation/scene/mnavigationbaranimation.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mnavigationbaranimation.h"
-
-#if QT_VERSION >= 0x040600
-
-
-#include "mnavigationbaranimation_p.h"
-#include "mscenewindow.h"
-#include <QPropertyAnimation>
-#include <QAnimationGroup>
-
-MNavigationbarAnimation::MNavigationbarAnimation(MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(new MNavigationbarAnimationPrivate, window, parent)
-{
- Q_D(MNavigationbarAnimation);
-
- d->positionAnimation = new QPropertyAnimation(window, "pos", group());
- d->opacityAnimation = new QPropertyAnimation(window, "opacity", group());
-}
-
-MNavigationbarAnimation::MNavigationbarAnimation(MNavigationbarAnimationPrivate *dd, MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(dd, window, parent)
-{
- Q_D(MNavigationbarAnimation);
-
- d->positionAnimation = new QPropertyAnimation(window, "pos", group());
- d->opacityAnimation = new QPropertyAnimation(window, "opacity", group());
-}
-
-void MNavigationbarAnimation::setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue)
-{
- Q_D(MNavigationbarAnimation);
-
- if (useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(d->sceneWindow->pos());
- d->opacityAnimation->setStartValue(d->sceneWindow->opacity());
- }
-
- switch (type) {
- case MSceneWindowAnimation::Show:
- if (!useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(QPointF(0, -d->sceneWindow->geometry().height()));
- d->opacityAnimation->setStartValue(0);
- }
- d->positionAnimation->setEndValue(QPointF(0, 0));
- d->opacityAnimation->setEndValue(1);
- d->positionAnimation->setDuration(250);
- d->opacityAnimation->setDuration(250);
- break;
-
- case MSceneWindowAnimation::Hide:
- if (!useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(QPointF(0, 0));
- d->opacityAnimation->setStartValue(1);
- }
- d->positionAnimation->setEndValue(QPointF(0, -d->sceneWindow->geometry().height()));
- d->opacityAnimation->setEndValue(0);
- d->positionAnimation->setDuration(250);
- d->opacityAnimation->setDuration(250);
- break;
-
- case MSceneWindowAnimation::Move:
- if (!useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(QPointF(0, 0));
- d->opacityAnimation->setStartValue(1);
- }
-
- d->positionAnimation->setEndValue(QPointF(0, 0));
- d->opacityAnimation->setEndValue(1);
- d->positionAnimation->setDuration(500);
- d->opacityAnimation->setDuration(500);
- break;
- }
-}
-#endif
diff --git a/src/corelib/animation/scene/mnavigationbaranimation.h b/src/corelib/animation/scene/mnavigationbaranimation.h
deleted file mode 100644
index cf86f0cd..00000000
--- a/src/corelib/animation/scene/mnavigationbaranimation.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MNAVIGATIONBARANIMATION_H
-#define MNAVIGATIONBARANIMATION_H
-
-#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-
-#include <mscenewindowanimation.h>
-#include <manimationstyle.h>
-
-class MNavigationbarAnimationPrivate;
-
-/*!
- \class MNavigationbarAnimation
- \brief
- */
-class MNavigationbarAnimation : public MSceneWindowAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MNavigationbarAnimation)
- M_ANIMATION(MSceneWindowAnimationStyle)
-
-protected:
-
- /*!
- \brief Constructs the navigation bar animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MNavigationbarAnimation(MNavigationbarAnimationPrivate *dd, MSceneWindow *window, QObject *parent = NULL);
-
-public:
-
- /*!
- \brief Constructs the scene window animation.
- */
- MNavigationbarAnimation(MSceneWindow *window, QObject *parent = NULL);
-
- /*!
- \brief Sets animation type.
- */
- virtual void setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue);
-};
-
-#endif
-#endif
diff --git a/src/corelib/animation/scene/mnotificationanimation.cpp b/src/corelib/animation/scene/mnotificationanimation.cpp
deleted file mode 100644
index ea2fbab4..00000000
--- a/src/corelib/animation/scene/mnotificationanimation.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mnotificationanimation.h"
-
-#if QT_VERSION >= 0x040600
-
-#include "mnotificationanimation_p.h"
-#include "mscenewindow.h"
-#include "mscenemanager.h"
-#include "mapplication.h"
-#include "mwindow.h"
-#include <QPropertyAnimation>
-#include <QAnimationGroup>
-
-MNotificationAnimation::MNotificationAnimation(MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(new MNotificationAnimationPrivate, window, parent)
-{
- Q_D(MNotificationAnimation);
-
- d->positionAnimation = new QPropertyAnimation(window, "pos", group());
-}
-
-MNotificationAnimation::MNotificationAnimation(MNotificationAnimationPrivate *dd, MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(dd, window, parent)
-{
- Q_D(MNotificationAnimation);
-
- d->positionAnimation = new QPropertyAnimation(window, "pos", group());
-}
-
-void MNotificationAnimation::setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue)
-{
- Q_D(MNotificationAnimation);
-
- if (useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(d->sceneWindow->pos());
- }
-
- QSize screenSize = MApplication::activeWindow()->visibleSceneSize();
-
- //TODO: Get the start, end and duration parameters from theme or somewhere.
-
- switch (type) {
- case MSceneWindowAnimation::Show:
- if (!useCurrentAsStartValue) {
- if (d->sceneWindow->windowType() == MSceneWindow::NotificationEvent)
- d->positionAnimation->setStartValue(QPointF(-d->sceneWindow->geometry().width(), screenSize.height() * .2));
- else
- d->positionAnimation->setStartValue(QPointF(screenSize.width() + d->sceneWindow->geometry().width(), screenSize.height() * .2));
- }
- if (d->sceneWindow->windowType() == MSceneWindow::NotificationEvent)
- d->positionAnimation->setEndValue(QPointF(0, screenSize.height() * .2));
- else
- d->positionAnimation->setEndValue(QPointF(screenSize.width() - d->sceneWindow->geometry().width(), screenSize.height() * .2));
- d->positionAnimation->setDuration(750);
- break;
-
- case MSceneWindowAnimation::Hide:
- if (!useCurrentAsStartValue) {
- if (d->sceneWindow->windowType() == MSceneWindow::NotificationEvent)
- d->positionAnimation->setStartValue(QPointF(0, screenSize.height() * .2));
- else
- d->positionAnimation->setStartValue(QPointF(screenSize.width() - d->sceneWindow->geometry().width(), screenSize.height() * .2));
- }
- if (d->sceneWindow->windowType() == MSceneWindow::NotificationEvent)
- d->positionAnimation->setEndValue(QPointF(-d->sceneWindow->geometry().width(), screenSize.height() * .2));
- else
- d->positionAnimation->setEndValue(QPointF(screenSize.width() + d->sceneWindow->geometry().width(), screenSize.height() * .2));
- d->positionAnimation->setDuration(750);
- break;
-
- case MSceneWindowAnimation::Move:
- if (!useCurrentAsStartValue) {
- d->positionAnimation->setStartValue(QPointF(0, screenSize.height() * .2));
- }
-
- d->positionAnimation->setEndValue(QPointF(0, screenSize.height() * .2));
- d->positionAnimation->setDuration(500);
- break;
- }
-}
-#endif
diff --git a/src/corelib/animation/scene/mnotificationanimation.h b/src/corelib/animation/scene/mnotificationanimation.h
deleted file mode 100644
index 135d09a7..00000000
--- a/src/corelib/animation/scene/mnotificationanimation.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MNOTIFICATIONANIMATION_H
-#define MNOTIFICATIONANIMATION_H
-#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-
-#include <mscenewindowanimation.h>
-#include <manimationstyle.h>
-
-class MNotificationAnimationPrivate;
-
-/*!
- \class MNavigationbarAnimation
- \brief
- */
-class MNotificationAnimation : public MSceneWindowAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MNotificationAnimation)
- M_ANIMATION(MSceneWindowAnimationStyle)
-
-protected:
-
- /*!
- \brief Constructs the navigation bar animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MNotificationAnimation(MNotificationAnimationPrivate *dd, MSceneWindow *window, QObject *parent = NULL);
-
-public:
-
- /*!
- \brief Constructs the scene window animation.
- */
- MNotificationAnimation(MSceneWindow *window, QObject *parent = NULL);
-
- /*!
- \brief Sets animation type.
- */
- virtual void setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue);
-};
-
-#endif
-#endif
diff --git a/src/corelib/animation/scene/mnotificationanimation_p.h b/src/corelib/animation/scene/mnotificationanimation_p.h
deleted file mode 100644
index 586fef44..00000000
--- a/src/corelib/animation/scene/mnotificationanimation_p.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MNOTIFICATIONANIMATION_P_H
-#define MNOTIFICATIONANIMATION_P_H
-
-#include "mscenewindowanimation_p.h"
-class QPropertyAnimation;
-
-class MNotificationAnimationPrivate : public MSceneWindowAnimationPrivate
-{
- Q_DECLARE_PUBLIC(MNotificationAnimation)
-
-public:
- QPropertyAnimation *positionAnimation;
-};
-
-#endif
diff --git a/src/corelib/animation/scene/morientationanimation.cpp b/src/corelib/animation/scene/morientationanimation.cpp
index cfd03632..2eeb7bef 100644
--- a/src/corelib/animation/scene/morientationanimation.cpp
+++ b/src/corelib/animation/scene/morientationanimation.cpp
@@ -19,9 +19,6 @@
#include "morientationanimation.h"
-#if QT_VERSION >= 0x040600
-
-
#include "morientationanimation_p.h"
///////////////////
@@ -42,13 +39,8 @@ MOrientationAnimationPrivate::~MOrientationAnimationPrivate()
//////////////////
MOrientationAnimation::MOrientationAnimation(MOrientationAnimationPrivate *d,
- QObject *parent, MGroupAnimation::Type type) :
- MGroupAnimation(d, type, parent)
-{
-}
-
-MOrientationAnimation::MOrientationAnimation(QObject *parent, MGroupAnimation::Type type) :
- MGroupAnimation(new MOrientationAnimationPrivate(), type, parent)
+ QObject *parent) :
+ MParallelAnimationGroup(d, parent)
{
}
@@ -70,4 +62,3 @@ QGraphicsWidget *MOrientationAnimation::rootElement()
void MOrientationAnimation::rootElementChanged()
{
}
-#endif
diff --git a/src/corelib/animation/scene/morientationanimation.h b/src/corelib/animation/scene/morientationanimation.h
index 2a3ce35b..c7a3868e 100644
--- a/src/corelib/animation/scene/morientationanimation.h
+++ b/src/corelib/animation/scene/morientationanimation.h
@@ -21,14 +21,11 @@
#define MORIENTATIONANIMATION_H
#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-#include <mgroupanimation.h>
-#include <mgroupanimationstyle.h>
+#include <mparallelanimationgroup.h>
#include <mnamespace.h>
class QGraphicsWidget;
-class MWindow;
class MSceneWindow;
class MOrientationAnimationPrivate;
@@ -36,21 +33,18 @@ class MOrientationAnimationPrivate;
\class MOrientationAnimation
\brief MOrientationAnimation class provides abstract interface for orientation animations.
*/
-class MOrientationAnimation : public MGroupAnimation
+class MOrientationAnimation : public MParallelAnimationGroup
{
Q_OBJECT
Q_DECLARE_PRIVATE(MOrientationAnimation)
-
- M_ANIMATION(MGroupAnimationStyle)
+ M_ANIMATION_GROUP(MAnimationStyle)
protected:
/*!
\brief Constructs the orientation animation.
*/
- MOrientationAnimation(MOrientationAnimationPrivate *d,
- QObject *parent,
- MGroupAnimation::Type type = MGroupAnimation::Parallel);
+ MOrientationAnimation(MOrientationAnimationPrivate *d, QObject *parent);
Q_SIGNALS:
/*!
@@ -61,10 +55,6 @@ Q_SIGNALS:
public:
/*!
- \brief Constructs the orientation animation.
- */
- MOrientationAnimation(QObject *parent, MGroupAnimation::Type type = MGroupAnimation::Parallel);
- /*!
\brief Destroys the orientation animation.
*/
virtual ~MOrientationAnimation() {};
@@ -102,4 +92,3 @@ protected:
};
#endif
-#endif
diff --git a/src/corelib/animation/scene/morientationanimation_p.h b/src/corelib/animation/scene/morientationanimation_p.h
index 2c29064e..bc46e189 100644
--- a/src/corelib/animation/scene/morientationanimation_p.h
+++ b/src/corelib/animation/scene/morientationanimation_p.h
@@ -20,9 +20,9 @@
#ifndef MORIENTATIONANIMATION_P_H
#define MORIENTATIONANIMATION_P_H
-#include "mgroupanimation_p.h"
+#include "mparallelanimationgroup_p.h"
-class MOrientationAnimationPrivate : public MGroupAnimationPrivate
+class MOrientationAnimationPrivate : public MParallelAnimationGroupPrivate
{
Q_DECLARE_PUBLIC(MOrientationAnimation)
public:
diff --git a/src/corelib/animation/scene/mscenefadeanimation.cpp b/src/corelib/animation/scene/mscenefadeanimation.cpp
deleted file mode 100644
index 91a16180..00000000
--- a/src/corelib/animation/scene/mscenefadeanimation.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mscenefadeanimation.h"
-
-#if QT_VERSION >= 0x040600
-
-
-#include "mscenefadeanimation_p.h"
-#include "mscenewindow.h"
-#include "mscenemanager.h"
-#include "mwidgetanimation.h"
-
-//#include <QPropertyAnimation>
-#include <QAnimationGroup>
-#include <QEasingCurve>
-
-MSceneFadeAnimation::MSceneFadeAnimation(MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(new MSceneFadeAnimationPrivate, window, parent)
-{
- Q_D(MSceneFadeAnimation);
-
- //d->positionAnimation = new QPropertyAnimation(window, "pos", group());
- d->animation = new MWidgetAnimation(group());
- //d->animation->addWidget(window);
-}
-
-MSceneFadeAnimation::MSceneFadeAnimation(MSceneFadeAnimationPrivate *dd, MSceneWindow *window, QObject *parent) :
- MSceneWindowAnimation(dd, window, parent)
-{
- Q_D(MSceneFadeAnimation);
-
- //d->positionAnimation = new QPropertyAnimation(window, "pos", group());
- d->animation = new MWidgetAnimation(group());
- d->animation->addWidget(window);
-}
-
-void MSceneFadeAnimation::setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue)
-{
- Q_D(MSceneFadeAnimation);
-
- switch (type) {
- case MSceneWindowAnimation::Show: {
-
- if (!useCurrentAsStartValue)
- d->sceneWindow->setOpacity(0.0);
-
- /*d->sceneWindow->setTransformOrigin(QPointF(432, 240));
- d->sceneWindow->setXScale(0.0);
- d->sceneWindow->setYScale(0.0);
- d->animation->setTargetValue(d->sceneWindow, "xScale",1.0);
- d->animation->setTargetValue(d->sceneWindow, "yScale",1.0);
- d->animation->setDuration(500);*/
- //d->animation->setEasingCurve(QEasingCurve::OutBounce);
-
- d->animation->setTargetOpacity(d->sceneWindow, 1.0);
- d->animation->setDuration(style()->showDuration(), "opacity");
- } break;
-
- case MSceneWindowAnimation::Hide:
-
- d->animation->setTargetOpacity(d->sceneWindow, 0.0);
- d->animation->setDuration(style()->hideDuration());
- break;
-
- case MSceneWindowAnimation::Move:
- break;
- }
-}
-#endif
diff --git a/src/corelib/animation/scene/mscenefadeanimation.h b/src/corelib/animation/scene/mscenefadeanimation.h
deleted file mode 100644
index 19240074..00000000
--- a/src/corelib/animation/scene/mscenefadeanimation.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MSCENEFADEANIMATION_H
-#define MSCENEFADEANIMATION_H
-
-#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-
-#include <mscenewindowanimation.h>
-#include <manimationstyle.h>
-
-class MSceneFadeAnimationPrivate;
-
-/*!
- \class MNavigationbarAnimation
- \brief
- */
-class MSceneFadeAnimation : public MSceneWindowAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MSceneFadeAnimation)
- M_ANIMATION(MSceneWindowAnimationStyle)
-
-protected:
-
- /*!
- \brief Constructs the navigation bar animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MSceneFadeAnimation(MSceneFadeAnimationPrivate *dd, MSceneWindow *window, QObject *parent = NULL);
-
-public:
-
- /*!
- \brief Constructs the scene window animation.
- */
- MSceneFadeAnimation(MSceneWindow *window, QObject *parent = NULL);
-
- /*!
- \brief Sets animation type.
- */
- virtual void setType(MSceneWindowAnimation::Type type, bool useCurrentAsStartValue);
-};
-
-#endif
-#endif
-
diff --git a/src/corelib/animation/scene/mscenewindowanimation.cpp b/src/corelib/animation/scene/mscenewindowanimation.cpp
deleted file mode 100644
index 8bb0e8dc..00000000
--- a/src/corelib/animation/scene/mscenewindowanimation.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mscenewindowanimation.h"
-
-#if QT_VERSION >= 0x040600
-
-#include "mscenewindowanimation_p.h"
-
-#include <QPropertyAnimation>
-#include <QAnimationGroup>
-#include <QGraphicsWidget>
-
-
-MSceneWindowAnimation::MSceneWindowAnimation(MSceneWindowAnimationPrivate *dd,
- MSceneWindow *window,
- QObject *parent,
- MGroupAnimation::Type type) :
- MGroupAnimation(dd, type, parent)
-{
- Q_D(MSceneWindowAnimation);
-
- d->sceneWindow = window;
-}
-
-MSceneWindowAnimation::MSceneWindowAnimation(MSceneWindow *window,
- QObject *parent,
- MGroupAnimation::Type type) :
- MGroupAnimation(new MSceneWindowAnimationPrivate, type, parent)
-{
- Q_D(MSceneWindowAnimation);
-
- d->sceneWindow = window;
-}
-
-MSceneWindowAnimation::~MSceneWindowAnimation()
-{
-}
-
-void MSceneWindowAnimation::updateState(QAbstractAnimation::State oldState,
- QAbstractAnimation::State newState)
-{
- MGroupAnimation::updateState(oldState, newState);
-
- if (newState == QAbstractAnimation::Stopped) {
- Q_D(MSceneWindowAnimation);
- emit animationDone(d->sceneWindow);
- }
-}
-#endif
-
diff --git a/src/corelib/animation/scene/mscenewindowanimation.h b/src/corelib/animation/scene/mscenewindowanimation.h
deleted file mode 100644
index c450f169..00000000
--- a/src/corelib/animation/scene/mscenewindowanimation.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MSCENEWINDOWANIMATION_H
-#define MSCENEWINDOWANIMATION_H
-
-#include <QtGlobal>
-#if QT_VERSION >= 0x040600
-
-#include <MGroupAnimation>
-#include <QPair>
-#include <QVector>
-#include <mscenewindowanimationstyle.h>
-
-class MSceneWindow;
-class MSceneWindowAnimationPrivate;
-
-/*!
- \class MSceneWindowAnimation
- \brief
- */
-class MSceneWindowAnimation : public MGroupAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MSceneWindowAnimation)
- M_ANIMATION(MSceneWindowAnimationStyle)
-
-protected:
-
- /*!
- \brief Constructs the scene window animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MSceneWindowAnimation(MSceneWindowAnimationPrivate *dd,
- MSceneWindow *window,
- QObject *parent = NULL,
- MGroupAnimation::Type type = Parallel);
-
-public:
-
- enum Type {
- Show,
- Hide,
- Move
- };
-
- /*!
- \brief Constructs the scene window animation.
- */
- MSceneWindowAnimation(MSceneWindow *window,
- QObject *parent = NULL,
- MGroupAnimation::Type type = Parallel);
-
- /*!
- \brief Destructs the scene window animation.
- */
- virtual ~MSceneWindowAnimation();
-
- /*!
- \brief Sets animation type.
- */
- virtual void setType(Type type, bool useCurrentAsStartValue = true) = 0;
-
-Q_SIGNALS:
- void animationDone(MSceneWindow *window);
-
-protected:
- virtual void updateState(QAbstractAnimation::State oldState, QAbstractAnimation::State newState);
-};
-
-#endif
-#endif
diff --git a/src/corelib/animation/scene/msnapshotitem.cpp b/src/corelib/animation/scene/msnapshotitem.cpp
new file mode 100644
index 00000000..86ee395a
--- /dev/null
+++ b/src/corelib/animation/scene/msnapshotitem.cpp
@@ -0,0 +1,47 @@
+#include "msnapshotitem.h"
+
+#include <QGraphicsScene>
+#include <QImage>
+#include <QPainter>
+
+MSnapshotItem::MSnapshotItem(QGraphicsScene *scene, const QRectF &sceneTargetRect, QGraphicsItem *parent)
+ : QGraphicsObject(parent), m_boundingRect(sceneTargetRect)
+{
+ // Assumes that the resolution is one scene unit per pixel
+ image = new QImage(sceneTargetRect.width(), sceneTargetRect.height(),
+ QImage::Format_ARGB32_Premultiplied);
+
+ QRectF targetRect;
+ targetRect.setX(0.0f);
+ targetRect.setY(0.0f);
+ targetRect.setWidth(sceneTargetRect.width());
+ targetRect.setHeight(sceneTargetRect.height());
+
+ QRectF sourceRect;
+ sourceRect = sceneTargetRect;
+
+ QPainter painter(image);
+ scene->render(&painter, targetRect, sourceRect);
+}
+
+MSnapshotItem::~MSnapshotItem()
+{
+ delete image;
+ image = 0;
+}
+
+QRectF MSnapshotItem::boundingRect() const
+{
+ return m_boundingRect;
+}
+
+void MSnapshotItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+ QWidget *widget)
+{
+ Q_UNUSED(option);
+ Q_UNUSED(widget);
+
+ painter->setRenderHint(QPainter::Antialiasing, true);
+ painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
+ painter->drawImage(0, 0, *image);
+}
diff --git a/src/corelib/animation/scene/msnapshotitem.h b/src/corelib/animation/scene/msnapshotitem.h
new file mode 100644
index 00000000..1a92ff10
--- /dev/null
+++ b/src/corelib/animation/scene/msnapshotitem.h
@@ -0,0 +1,29 @@
+#ifndef MSNAPSHOTITEM_H
+#define MSNAPSHOTITEM_H
+
+#include <QGraphicsObject>
+
+class QGraphicsScene;
+class QRectF;
+class QImage;
+
+class MSnapshotItem : public QGraphicsObject
+{
+ Q_OBJECT
+public:
+ MSnapshotItem(QGraphicsScene *scene, const QRectF &targetRect,
+ QGraphicsItem *parent = 0);
+
+ virtual ~MSnapshotItem();
+
+ //! \reimp
+ virtual QRectF boundingRect() const;
+ virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+ //! \reimp_end
+
+private:
+ QRectF m_boundingRect;
+ QImage *image;
+};
+
+#endif
diff --git a/src/corelib/animation/scene/scene.pri b/src/corelib/animation/scene/scene.pri
index 3d4d7366..627cd541 100644
--- a/src/corelib/animation/scene/scene.pri
+++ b/src/corelib/animation/scene/scene.pri
@@ -6,31 +6,21 @@
ANIMATIONS_SCENE_SRC_DIR=./animation/scene
PUBLIC_HEADERS += \
- $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation.h \
$$ANIMATIONS_SCENE_SRC_DIR/mbasicorientationanimation.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mfliporientationanimation.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenewindowanimation.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mnavigationbaranimation.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mnotificationanimation.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenefadeanimation.h \
$$ANIMATIONS_SCENE_SRC_DIR/mpageswitchanimation.h \
PRIVATE_HEADERS += \
- $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation_p.h \
$$ANIMATIONS_SCENE_SRC_DIR/mbasicorientationanimation_p.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mfliporientationanimation_p.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenewindowanimation_p.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mnavigationbaranimation_p.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mnotificationanimation_p.h \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenefadeanimation_p.h \
+ $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation.h \
+ $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation_p.h \
+ $$ANIMATIONS_SCENE_SRC_DIR/mcrossfadedorientationanimation.h \
+ $$ANIMATIONS_SCENE_SRC_DIR/mcrossfadedorientationanimation_p.h \
+ $$ANIMATIONS_SCENE_SRC_DIR/msnapshotitem.h \
$$ANIMATIONS_SCENE_SRC_DIR/mpageswitchanimation_p.h \
SOURCES += \
- $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation.cpp \
$$ANIMATIONS_SCENE_SRC_DIR/mbasicorientationanimation.cpp \
- $$ANIMATIONS_SCENE_SRC_DIR/mfliporientationanimation.cpp \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenewindowanimation.cpp \
- $$ANIMATIONS_SCENE_SRC_DIR/mnavigationbaranimation.cpp \
- $$ANIMATIONS_SCENE_SRC_DIR/mnotificationanimation.cpp \
- $$ANIMATIONS_SCENE_SRC_DIR/mscenefadeanimation.cpp \
+ $$ANIMATIONS_SCENE_SRC_DIR/morientationanimation.cpp \
+ $$ANIMATIONS_SCENE_SRC_DIR/mcrossfadedorientationanimation.cpp \
+ $$ANIMATIONS_SCENE_SRC_DIR/msnapshotitem.cpp \
$$ANIMATIONS_SCENE_SRC_DIR/mpageswitchanimation.cpp \
diff --git a/src/corelib/animation/widget/core/mabstractwidgetanimation_p.h b/src/corelib/animation/widget/core/mabstractwidgetanimation_p.h
index efe8090f..65059cab 100644
--- a/src/corelib/animation/widget/core/mabstractwidgetanimation_p.h
+++ b/src/corelib/animation/widget/core/mabstractwidgetanimation_p.h
@@ -21,8 +21,8 @@
#define MABSTRACTWIDGETANIMATION_P_H
#include "mparallelanimationgroup_p.h"
-
-class MWidgetController;
+#include <mwidgetcontroller.h>
+#include <QPointer>
class MAbstractWidgetAnimationPrivate : public MParallelAnimationGroupPrivate
{
@@ -30,8 +30,8 @@ class MAbstractWidgetAnimationPrivate : public MParallelAnimationGroupPrivate
public:
MAbstractWidgetAnimationPrivate();
virtual ~MAbstractWidgetAnimationPrivate() {}
-private:
- MWidgetController *targetWidget;
+protected:
+ QPointer<MWidgetController> targetWidget;
};
#endif
diff --git a/src/corelib/animation/widget/mwidgetfadeanimation.cpp b/src/corelib/animation/widget/mwidgetfadeanimation.cpp
new file mode 100644
index 00000000..e3633b02
--- /dev/null
+++ b/src/corelib/animation/widget/mwidgetfadeanimation.cpp
@@ -0,0 +1,120 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mwidgetfadeanimation.h"
+#include "mwidgetfadeanimation_p.h"
+#include "manimationcreator.h"
+
+#include <QPauseAnimation>
+#include <QPropertyAnimation>
+#include <QSequentialAnimationGroup>
+#include <mwidgetcontroller.h>
+
+void MWidgetFadeAnimationPrivate::init()
+{
+ Q_Q(MWidgetFadeAnimation);
+
+ direction = MWidgetFadeAnimation::In;
+ QSequentialAnimationGroup *delayedAnimation = new QSequentialAnimationGroup;
+ delay = new QPauseAnimation;
+ opacityAnimation = new QPropertyAnimation;
+ opacityAnimation->setPropertyName("opacity");
+ delayedAnimation->addAnimation(delay);
+ delayedAnimation->addAnimation(opacityAnimation);
+ q->addAnimation(delayedAnimation);
+}
+
+MWidgetFadeAnimation::MWidgetFadeAnimation(MWidgetFadeAnimationPrivate *dd, QObject *parent) :
+ MAbstractWidgetAnimation(dd, parent)
+{
+ Q_D(MWidgetFadeAnimation);
+
+ d->init();
+}
+
+MWidgetFadeAnimation::MWidgetFadeAnimation(QObject *parent) :
+ MAbstractWidgetAnimation(new MWidgetFadeAnimationPrivate, parent)
+{
+ Q_D(MWidgetFadeAnimation);
+
+ d->init();
+}
+
+MWidgetFadeAnimation::~MWidgetFadeAnimation()
+{
+}
+
+void MWidgetFadeAnimation::setTargetWidget(MWidgetController *widget)
+{
+ Q_D(MWidgetFadeAnimation);
+ MAbstractWidgetAnimation::setTargetWidget(widget);
+
+ d->played = false;
+ d->opacityAnimation->setTargetObject(targetWidget());
+}
+
+void MWidgetFadeAnimation::restoreTargetWidgetState()
+{
+ Q_D(MWidgetFadeAnimation);
+ if (d->played)
+ targetWidget()->setOpacity(d->originalOpacity);
+}
+
+void MWidgetFadeAnimation::setTransitionDirection(TransitionDirection direction)
+{
+ Q_D(MWidgetFadeAnimation);
+
+ d->direction = direction;
+
+ if (d->direction == In)
+ style().setObjectName("In");
+ else
+ style().setObjectName("Out");
+}
+
+void MWidgetFadeAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+{
+ Q_D(MWidgetFadeAnimation);
+
+ if (!d->targetWidget)
+ return;
+
+ if (oldState == QAbstractAnimation::Stopped &&
+ newState == QAbstractAnimation::Running)
+ {
+ if (style().objectName().isNull())
+ style().setObjectName("In");
+
+ d->originalOpacity = d->targetWidget->opacity();
+
+ if (d->direction == In) {
+ targetWidget()->setOpacity(0);
+ d->opacityAnimation->setStartValue(0);
+ d->opacityAnimation->setEndValue(style()->opacity());
+ } else {
+ d->opacityAnimation->setStartValue(style()->opacity());
+ d->opacityAnimation->setEndValue(0);
+ }
+
+ d->played = true;
+
+ d->delay->setDuration(style()->delay());
+ d->opacityAnimation->setDuration(style()->duration());
+ }
+}
diff --git a/src/corelib/animation/widget/mwidgetfadeinanimation.h b/src/corelib/animation/widget/mwidgetfadeanimation.h
index e3f91956..dcff20a2 100644
--- a/src/corelib/animation/widget/mwidgetfadeinanimation.h
+++ b/src/corelib/animation/widget/mwidgetfadeanimation.h
@@ -17,20 +17,20 @@
**
****************************************************************************/
-#ifndef MWIDGETFADEINANIMATION_H
-#define MWIDGETFADEINANIMATION_H
+#ifndef MWIDGETFADEANIMATION_H
+#define MWIDGETFADEANIMATION_H
#include <mabstractwidgetanimation.h>
-#include <mwidgetfadeinanimationstyle.h>
+#include <mwidgetfadeanimationstyle.h>
-class MWidgetFadeInAnimationPrivate;
+class MWidgetFadeAnimationPrivate;
//! \internal
-class MWidgetFadeInAnimation : public MAbstractWidgetAnimation
+class MWidgetFadeAnimation : public MAbstractWidgetAnimation
{
Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetFadeInAnimation)
- M_ANIMATION_GROUP(MWidgetFadeInAnimationStyle)
+ Q_DECLARE_PRIVATE(MWidgetFadeAnimation)
+ M_ANIMATION_GROUP(MWidgetFadeAnimationStyle)
/*!
\brief Constructs the widget animation.
@@ -38,19 +38,25 @@ class MWidgetFadeInAnimation : public MAbstractWidgetAnimation
This constructor is meant to be used inside the libmeegotouch to share the
private data class pointer.
*/
- MWidgetFadeInAnimation(MWidgetFadeInAnimationPrivate *dd, QObject *parent);
+ MWidgetFadeAnimation(MWidgetFadeAnimationPrivate *dd, QObject *parent);
public:
-
/*!
\brief Constructs the widget animation.
*/
- MWidgetFadeInAnimation(QObject *parent = NULL);
+ MWidgetFadeAnimation(QObject *parent = NULL);
/*!
\brief Destructs the widget animation.
*/
- virtual ~MWidgetFadeInAnimation();
+ virtual ~MWidgetFadeAnimation();
+
+ enum TransitionDirection {
+ In,
+ Out
+ };
+
+ void setTransitionDirection(TransitionDirection direction);
//! \reimp
virtual void restoreTargetWidgetState();
diff --git a/src/corelib/animation/widget/mwidgetfadeinanimation_p.h b/src/corelib/animation/widget/mwidgetfadeanimation_p.h
index 7513c497..e372805e 100644
--- a/src/corelib/animation/widget/mwidgetfadeinanimation_p.h
+++ b/src/corelib/animation/widget/mwidgetfadeanimation_p.h
@@ -17,21 +17,26 @@
**
****************************************************************************/
-#ifndef MWIDGETFADEINANIMATION_P_H
-#define MWIDGETFADEINANIMATION_P_H
+#ifndef MWIDGETFADEANIMATION_P_H
+#define MWIDGETFADEANIMATION_P_H
#include "mabstractwidgetanimation_p.h"
+#include "mwidgetfadeanimation.h"
+class QPauseAnimation;
class QPropertyAnimation;
-class MWidgetFadeInAnimationPrivate : public MAbstractWidgetAnimationPrivate
+class MWidgetFadeAnimationPrivate : public MAbstractWidgetAnimationPrivate
{
- Q_DECLARE_PUBLIC(MWidgetFadeInAnimation)
+ Q_DECLARE_PUBLIC(MWidgetFadeAnimation)
public:
- virtual ~MWidgetFadeInAnimationPrivate() {}
+ void init();
+ virtual ~MWidgetFadeAnimationPrivate() {}
private:
qreal originalOpacity;
bool played;
+ MWidgetFadeAnimation::TransitionDirection direction;
+ QPauseAnimation *delay;
QPropertyAnimation *opacityAnimation;
};
diff --git a/src/corelib/animation/widget/mwidgetfadeinanimation.cpp b/src/corelib/animation/widget/mwidgetfadeinanimation.cpp
deleted file mode 100644
index 6832df91..00000000
--- a/src/corelib/animation/widget/mwidgetfadeinanimation.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetfadeinanimation.h"
-#include "mwidgetfadeinanimation_p.h"
-#include "manimationcreator.h"
-
-#include <QPropertyAnimation>
-#include <mwidgetcontroller.h>
-
-MWidgetFadeInAnimation::MWidgetFadeInAnimation(MWidgetFadeInAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
- Q_D(MWidgetFadeInAnimation);
-
- d->opacityAnimation = new QPropertyAnimation;
- d->opacityAnimation->setPropertyName("opacity");
- addAnimation(d->opacityAnimation);
-}
-
-MWidgetFadeInAnimation::MWidgetFadeInAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetFadeInAnimationPrivate, parent)
-{
- Q_D(MWidgetFadeInAnimation);
-
- d->opacityAnimation = new QPropertyAnimation;
- d->opacityAnimation->setPropertyName("opacity");
- addAnimation(d->opacityAnimation);
-}
-
-MWidgetFadeInAnimation::~MWidgetFadeInAnimation()
-{
-}
-
-void MWidgetFadeInAnimation::setTargetWidget(MWidgetController *widget)
-{
- Q_D(MWidgetFadeInAnimation);
- MAbstractWidgetAnimation::setTargetWidget(widget);
-
- d->played = false;
- d->opacityAnimation->setTargetObject(targetWidget());
-}
-
-void MWidgetFadeInAnimation::restoreTargetWidgetState()
-{
- Q_D(MWidgetFadeInAnimation);
- if (d->played)
- targetWidget()->setOpacity(d->originalOpacity);
-}
-
-void MWidgetFadeInAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetFadeInAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- targetWidget()->show();
-
- d->originalOpacity = targetWidget()->opacity();
- d->played = true;
-
- d->opacityAnimation->setStartValue(0.0);
- d->opacityAnimation->setEndValue(style()->opacity());
- d->opacityAnimation->setDuration(style()->duration());
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetfadeoutanimation.cpp b/src/corelib/animation/widget/mwidgetfadeoutanimation.cpp
deleted file mode 100644
index 8f162d2c..00000000
--- a/src/corelib/animation/widget/mwidgetfadeoutanimation.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetfadeoutanimation.h"
-#include "mwidgetfadeoutanimation_p.h"
-#include "manimationcreator.h"
-
-#include <QPropertyAnimation>
-#include <mwidgetcontroller.h>
-
-MWidgetFadeOutAnimation::MWidgetFadeOutAnimation(MWidgetFadeOutAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
- Q_D(MWidgetFadeOutAnimation);
-
- d->opacityAnimation = new QPropertyAnimation;
- d->opacityAnimation->setPropertyName("opacity");
- addAnimation(d->opacityAnimation);
-}
-
-MWidgetFadeOutAnimation::MWidgetFadeOutAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetFadeOutAnimationPrivate, parent)
-{
- Q_D(MWidgetFadeOutAnimation);
-
- d->opacityAnimation = new QPropertyAnimation;
- d->opacityAnimation->setPropertyName("opacity");
- addAnimation(d->opacityAnimation);
-}
-
-MWidgetFadeOutAnimation::~MWidgetFadeOutAnimation()
-{
-}
-
-void MWidgetFadeOutAnimation::setTargetWidget(MWidgetController *widget)
-{
- Q_D(MWidgetFadeOutAnimation);
- MAbstractWidgetAnimation::setTargetWidget(widget);
-
- d->played = false;
- d->opacityAnimation->setTargetObject(targetWidget());
-}
-
-void MWidgetFadeOutAnimation::restoreTargetWidgetState()
-{
- Q_D(MWidgetFadeOutAnimation);
- if (d->played)
- targetWidget()->setOpacity(d->originalOpacity);
-}
-
-void MWidgetFadeOutAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetFadeOutAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- d->originalOpacity = targetWidget()->opacity();
- d->played = true;
-
- d->opacityAnimation->setStartValue(d->originalOpacity);
- d->opacityAnimation->setEndValue(style()->opacity());
- d->opacityAnimation->setDuration(style()->duration());
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetfadeoutanimation.h b/src/corelib/animation/widget/mwidgetfadeoutanimation.h
deleted file mode 100644
index 5b4790dd..00000000
--- a/src/corelib/animation/widget/mwidgetfadeoutanimation.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETFADEOUTANIMATION_H
-#define MWIDGETFADEOUTANIMATION_H
-
-#include <mabstractwidgetanimation.h>
-#include <mwidgetfadeoutanimationstyle.h>
-
-class MWidgetFadeOutAnimationPrivate;
-
-//! \internal
-class MWidgetFadeOutAnimation : public MAbstractWidgetAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetFadeOutAnimation)
- M_ANIMATION_GROUP(MWidgetFadeOutAnimationStyle)
-
- /*!
- \brief Constructs the widget animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MWidgetFadeOutAnimation(MWidgetFadeOutAnimationPrivate *dd, QObject *parent);
-
-public:
-
- /*!
- \brief Constructs the widget animation.
- */
- MWidgetFadeOutAnimation(QObject *parent = NULL);
-
- /*!
- \brief Destructs the widget animation.
- */
- virtual ~MWidgetFadeOutAnimation();
-
- //! \reimp
- virtual void restoreTargetWidgetState();
- virtual void setTargetWidget(MWidgetController *widget);
- //! \reimp_end
-
-protected:
- //! \reimp
- virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
- //! \reimp_end
-};
-//! \internal_end
-
-#endif
diff --git a/src/corelib/animation/widget/mwidgetfadeoutanimation_p.h b/src/corelib/animation/widget/mwidgetfadeoutanimation_p.h
deleted file mode 100644
index a7f464ad..00000000
--- a/src/corelib/animation/widget/mwidgetfadeoutanimation_p.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETFADEOUTANIMATION_P_H
-#define MWIDGETFADEOUTANIMATION_P_H
-
-#include "mabstractwidgetanimation_p.h"
-
-class QPropertyAnimation;
-
-class MWidgetFadeOutAnimationPrivate : public MAbstractWidgetAnimationPrivate
-{
- Q_DECLARE_PUBLIC(MWidgetFadeOutAnimation)
-public:
- virtual ~MWidgetFadeOutAnimationPrivate() {}
-private:
- qreal originalOpacity;
- bool played;
- QPropertyAnimation *opacityAnimation;
-};
-
-#endif
diff --git a/src/corelib/animation/widget/mwidgetslideanimation.cpp b/src/corelib/animation/widget/mwidgetslideanimation.cpp
new file mode 100644
index 00000000..fe81e741
--- /dev/null
+++ b/src/corelib/animation/widget/mwidgetslideanimation.cpp
@@ -0,0 +1,140 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mwidgetslideanimation.h"
+#include "mwidgetslideanimation_p.h"
+#include "manimationcreator.h"
+
+#include <QPauseAnimation>
+#include <QPropertyAnimation>
+#include <QSequentialAnimationGroup>
+#include <mwidgetcontroller.h>
+
+void MWidgetSlideAnimationPrivate::init()
+{
+ Q_Q(MWidgetSlideAnimation);
+
+ direction = MWidgetSlideAnimation::In;
+
+ QSequentialAnimationGroup *delayedAnimation = new QSequentialAnimationGroup;
+ delay = new QPauseAnimation;
+ positionAnimation = new QPropertyAnimation;
+ positionAnimation->setPropertyName("pos");
+ delayedAnimation->addAnimation(delay);
+ delayedAnimation->addAnimation(positionAnimation);
+ q->addAnimation(delayedAnimation);
+ q->connect(delay, SIGNAL(finished()), SLOT(_q_onDelayFinished()));
+}
+
+void MWidgetSlideAnimationPrivate::_q_onDelayFinished()
+{
+ targetWidget->show();
+}
+
+MWidgetSlideAnimation::MWidgetSlideAnimation(MWidgetSlideAnimationPrivate *dd, QObject *parent) :
+ MAbstractWidgetAnimation(dd, parent)
+{
+ Q_D(MWidgetSlideAnimation);
+
+ d->init();
+}
+
+MWidgetSlideAnimation::MWidgetSlideAnimation(QObject *parent) :
+ MAbstractWidgetAnimation(new MWidgetSlideAnimationPrivate, parent)
+{
+ Q_D(MWidgetSlideAnimation);
+
+ d->init();
+}
+
+MWidgetSlideAnimation::~MWidgetSlideAnimation()
+{
+}
+
+void MWidgetSlideAnimation::setTargetWidget(MWidgetController *widget)
+{
+ Q_D(MWidgetSlideAnimation);
+ MAbstractWidgetAnimation::setTargetWidget(widget);
+
+ d->played = false;
+ d->positionAnimation->setTargetObject(targetWidget());
+}
+
+void MWidgetSlideAnimation::setTransitionDirection(TransitionDirection direction)
+{
+ Q_D(MWidgetSlideAnimation);
+
+ d->direction = direction;
+
+ if (d->direction == In)
+ style().setObjectName("In");
+ else
+ style().setObjectName("Out");
+}
+
+void MWidgetSlideAnimation::restoreTargetWidgetState()
+{
+ Q_D(MWidgetSlideAnimation);
+ if (d->played)
+ targetWidget()->setPos(d->originalPos);
+}
+
+void MWidgetSlideAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+{
+ Q_D(MWidgetSlideAnimation);
+
+ if (!d->targetWidget)
+ return;
+
+ if (oldState == QAbstractAnimation::Stopped &&
+ newState == QAbstractAnimation::Running)
+ {
+ d->originalPos = targetWidget()->pos();
+
+ QPointF offscreenPos;
+
+ if (style().objectName().isNull())
+ style().setObjectName("In");
+
+ if (style()->origin() == "top") {
+ offscreenPos = QPointF(0, -targetWidget()->boundingRect().height());
+ } else if (style()->origin() == "right") {
+ offscreenPos = QPointF(targetWidget()->boundingRect().width(), 0);
+ } else if (style()->origin() == "bottom") {
+ offscreenPos = QPointF(0, targetWidget()->boundingRect().height());
+ } else if (style()->origin() == "left") {
+ offscreenPos = QPointF(-targetWidget()->boundingRect().width(), 0);
+ }
+
+ if (d->direction == In) {
+ targetWidget()->hide();
+ d->positionAnimation->setStartValue(offscreenPos);
+ d->positionAnimation->setEndValue(d->originalPos);
+ } else {
+ d->positionAnimation->setStartValue(d->originalPos);
+ d->positionAnimation->setEndValue(offscreenPos);
+ }
+
+ d->delay->setDuration(style()->delay());
+ d->positionAnimation->setDuration(style()->duration());
+ d->played = true;
+ }
+}
+
+#include "moc_mwidgetslideanimation.cpp"
diff --git a/src/corelib/animation/widget/mwidgetslideoutanimation.h b/src/corelib/animation/widget/mwidgetslideanimation.h
index 18711783..3ecdbb3f 100644
--- a/src/corelib/animation/widget/mwidgetslideoutanimation.h
+++ b/src/corelib/animation/widget/mwidgetslideanimation.h
@@ -17,20 +17,20 @@
**
****************************************************************************/
-#ifndef MWIDGETSLIDEOUTANIMATION_H
-#define MWIDGETSLIDEOUTANIMATION_H
+#ifndef MWIDGETSLIDEANIMATION_H
+#define MWIDGETSLIDEANIMATION_H
#include <mabstractwidgetanimation.h>
-#include <mwidgetslideoutanimationstyle.h>
+#include <mwidgetslideanimationstyle.h>
-class MWidgetSlideOutAnimationPrivate;
+class MWidgetSlideAnimationPrivate;
//! \internal
-class MWidgetSlideOutAnimation : public MAbstractWidgetAnimation
+class MWidgetSlideAnimation : public MAbstractWidgetAnimation
{
Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetSlideOutAnimation)
- M_ANIMATION_GROUP(MWidgetSlideOutAnimationStyle)
+ Q_DECLARE_PRIVATE(MWidgetSlideAnimation)
+ M_ANIMATION_GROUP(MWidgetSlideAnimationStyle)
/*!
\brief Constructs the widget animation.
@@ -38,19 +38,26 @@ class MWidgetSlideOutAnimation : public MAbstractWidgetAnimation
This constructor is meant to be used inside the libmeegotouch to share the
private data class pointer.
*/
- MWidgetSlideOutAnimation(MWidgetSlideOutAnimationPrivate *dd, QObject *parent);
+ MWidgetSlideAnimation(MWidgetSlideAnimationPrivate *dd, QObject *parent);
public:
/*!
\brief Constructs the widget animation.
*/
- MWidgetSlideOutAnimation(QObject *parent = NULL);
+ MWidgetSlideAnimation(QObject *parent = NULL);
/*!
\brief Destructs the widget animation.
*/
- virtual ~MWidgetSlideOutAnimation();
+ virtual ~MWidgetSlideAnimation();
+
+ enum TransitionDirection {
+ In,
+ Out
+ };
+
+ void setTransitionDirection(TransitionDirection direction);
//! \reimp
virtual void restoreTargetWidgetState();
@@ -61,6 +68,9 @@ protected:
//! \reimp
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
//! \reimp_end
+
+private:
+ Q_PRIVATE_SLOT(d_func(), void _q_onDelayFinished())
};
//! \internal_end
diff --git a/src/corelib/animation/widget/mwidgetslideinanimation_p.h b/src/corelib/animation/widget/mwidgetslideanimation_p.h
index 0b96bea1..1aeae0c3 100644
--- a/src/corelib/animation/widget/mwidgetslideinanimation_p.h
+++ b/src/corelib/animation/widget/mwidgetslideanimation_p.h
@@ -17,22 +17,29 @@
**
****************************************************************************/
-#ifndef MWIDGETSLIDEINANIMATION_P_H
-#define MWIDGETSLIDEINANIMATION_P_H
+#ifndef MWIDGETSLIDEANIMATION_P_H
+#define MWIDGETSLIDEANIMATION_P_H
#include "mabstractwidgetanimation_p.h"
+#include "mwidgetslideanimation.h"
#include <QPointF>
+class QPauseAnimation;
class QPropertyAnimation;
-class MWidgetSlideInAnimationPrivate : public MAbstractWidgetAnimationPrivate
+class MWidgetSlideAnimationPrivate : public MAbstractWidgetAnimationPrivate
{
- Q_DECLARE_PUBLIC(MWidgetSlideInAnimation)
+ Q_DECLARE_PUBLIC(MWidgetSlideAnimation)
public:
- virtual ~MWidgetSlideInAnimationPrivate() {}
+ void init();
+ virtual ~MWidgetSlideAnimationPrivate() {}
+
+ void _q_onDelayFinished();
private:
QPointF originalPos;
bool played;
+ MWidgetSlideAnimation::TransitionDirection direction;
+ QPauseAnimation *delay;
QPropertyAnimation *positionAnimation;
};
diff --git a/src/corelib/animation/widget/mwidgetslideinanimation.cpp b/src/corelib/animation/widget/mwidgetslideinanimation.cpp
deleted file mode 100644
index edcf5c29..00000000
--- a/src/corelib/animation/widget/mwidgetslideinanimation.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetslideinanimation.h"
-#include "mwidgetslideinanimation_p.h"
-#include "manimationcreator.h"
-
-#include <QPropertyAnimation>
-#include <mwidgetcontroller.h>
-
-MWidgetSlideInAnimation::MWidgetSlideInAnimation(MWidgetSlideInAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
- Q_D(MWidgetSlideInAnimation);
-
- d->positionAnimation = new QPropertyAnimation;
- d->positionAnimation->setPropertyName("pos");
- addAnimation(d->positionAnimation);
-}
-
-MWidgetSlideInAnimation::MWidgetSlideInAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetSlideInAnimationPrivate, parent)
-{
- Q_D(MWidgetSlideInAnimation);
-
- d->positionAnimation = new QPropertyAnimation;
- d->positionAnimation->setPropertyName("pos");
- addAnimation(d->positionAnimation);
-}
-
-MWidgetSlideInAnimation::~MWidgetSlideInAnimation()
-{
-}
-
-void MWidgetSlideInAnimation::setTargetWidget(MWidgetController *widget)
-{
- Q_D(MWidgetSlideInAnimation);
- MAbstractWidgetAnimation::setTargetWidget(widget);
-
- d->played = false;
- d->positionAnimation->setTargetObject(targetWidget());
-}
-
-void MWidgetSlideInAnimation::restoreTargetWidgetState()
-{
- Q_D(MWidgetSlideInAnimation);
- if (d->played)
- targetWidget()->setPos(d->originalPos);
-}
-
-void MWidgetSlideInAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetSlideInAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- targetWidget()->show();
- d->originalPos = targetWidget()->pos();
- d->played = true;
-
- QPointF startPos;
-
- if (style()->from() == "top") {
- startPos = QPointF(0, -targetWidget()->boundingRect().height());
- } else if (style()->from() == "right") {
- startPos = QPointF(targetWidget()->boundingRect().width(), 0);
- } else if (style()->from() == "bottom") {
- startPos = QPointF(0, targetWidget()->boundingRect().height());
- } else if (style()->from() == "left") {
- startPos = QPointF(-targetWidget()->boundingRect().width(), 0);
- }
-
- d->positionAnimation->setStartValue(startPos);
- d->positionAnimation->setEndValue(d->originalPos);
- d->positionAnimation->setDuration(style()->duration());
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetslideoutanimation.cpp b/src/corelib/animation/widget/mwidgetslideoutanimation.cpp
deleted file mode 100644
index 449b90ed..00000000
--- a/src/corelib/animation/widget/mwidgetslideoutanimation.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetslideoutanimation.h"
-#include "mwidgetslideoutanimation_p.h"
-#include "manimationcreator.h"
-
-#include <QPropertyAnimation>
-#include <mwidgetcontroller.h>
-
-MWidgetSlideOutAnimation::MWidgetSlideOutAnimation(MWidgetSlideOutAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
- Q_D(MWidgetSlideOutAnimation);
-
- d->positionAnimation = new QPropertyAnimation;
- d->positionAnimation->setPropertyName("pos");
- addAnimation(d->positionAnimation);
-}
-
-MWidgetSlideOutAnimation::MWidgetSlideOutAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetSlideOutAnimationPrivate, parent)
-{
- Q_D(MWidgetSlideOutAnimation);
-
- d->positionAnimation = new QPropertyAnimation;
- d->positionAnimation->setPropertyName("pos");
- addAnimation(d->positionAnimation);
-}
-
-MWidgetSlideOutAnimation::~MWidgetSlideOutAnimation()
-{
-}
-
-void MWidgetSlideOutAnimation::setTargetWidget(MWidgetController *widget)
-{
- Q_D(MWidgetSlideOutAnimation);
- MAbstractWidgetAnimation::setTargetWidget(widget);
-
- d->played = false;
- d->positionAnimation->setTargetObject(targetWidget());
-}
-
-void MWidgetSlideOutAnimation::restoreTargetWidgetState()
-{
- Q_D(MWidgetSlideOutAnimation);
- if (d->played)
- targetWidget()->setPos(d->originalPos);
-}
-
-void MWidgetSlideOutAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetSlideOutAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- d->originalPos = targetWidget()->pos();
- d->played = true;
-
- QPointF endPos;
-
- if (style()->to() == "top") {
- endPos = QPointF(0, -targetWidget()->boundingRect().height());
- } else if (style()->to() == "right") {
- endPos = QPointF(targetWidget()->boundingRect().width(), 0);
- } else if (style()->to() == "bottom") {
- endPos = QPointF(0, targetWidget()->boundingRect().height());
- } else if (style()->to() == "left") {
- endPos = QPointF(-targetWidget()->boundingRect().width(), 0);
- }
-
- d->positionAnimation->setStartValue(d->originalPos);
- d->positionAnimation->setEndValue(endPos);
- d->positionAnimation->setDuration(style()->duration());
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetzoomanimation.cpp b/src/corelib/animation/widget/mwidgetzoomanimation.cpp
new file mode 100644
index 00000000..22b5dc4f
--- /dev/null
+++ b/src/corelib/animation/widget/mwidgetzoomanimation.cpp
@@ -0,0 +1,169 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include "mwidgetzoomanimation.h"
+#include "mwidgetzoomanimation_p.h"
+#include <mobjectmenu.h>
+
+#include <QPropertyAnimation>
+#include <QPauseAnimation>
+#include <QSequentialAnimationGroup>
+
+void MWidgetZoomAnimationPrivate::init()
+{
+ Q_Q(MWidgetZoomAnimation);
+
+ direction = MWidgetZoomAnimation::In;
+ startDelay = new QPauseAnimation;
+
+ opacityAnimationDelay = new QPauseAnimation;
+ opacityAnimation = new QPropertyAnimation;
+ opacityAnimation->setPropertyName("opacity");
+
+ QSequentialAnimationGroup *delayedOpacityAnimation = new QSequentialAnimationGroup;
+ delayedOpacityAnimation->addAnimation(opacityAnimationDelay);
+ delayedOpacityAnimation->addAnimation(opacityAnimation);
+
+ scaleAnimation = new QPropertyAnimation;
+ scaleAnimation->setPropertyName("scale");
+
+ positionAnimation = new QPropertyAnimation;
+ positionAnimation->setPropertyName("pos");
+
+ QParallelAnimationGroup *parallelGroup = new QParallelAnimationGroup;
+ parallelGroup->addAnimation(delayedOpacityAnimation);
+ parallelGroup->addAnimation(scaleAnimation);
+ parallelGroup->addAnimation(positionAnimation);
+
+ QSequentialAnimationGroup *sequentialGroup = new QSequentialAnimationGroup;
+ sequentialGroup->addAnimation(startDelay);
+ sequentialGroup->addAnimation(parallelGroup);
+
+ q->addAnimation(sequentialGroup);
+}
+
+QPointF MWidgetZoomAnimationPrivate::setupPositionAnimation(const QPointF &widgetPos)
+{
+ Q_Q(MWidgetZoomAnimation);
+
+ QPointF distance = origin - widgetPos;
+ return widgetPos + distance * (1 - q->style()->positionAnimationDistanceFactor());
+}
+
+MWidgetZoomAnimation::MWidgetZoomAnimation(QObject *parent) :
+ MAbstractWidgetAnimation(new MWidgetZoomAnimationPrivate, parent)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ d->init();
+}
+
+MWidgetZoomAnimation::MWidgetZoomAnimation(MWidgetZoomAnimationPrivate *dd, QObject *parent) :
+ MAbstractWidgetAnimation(dd, parent)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ d->init();
+}
+
+void MWidgetZoomAnimation::setTargetWidget(MWidgetController *widget)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ MAbstractWidgetAnimation::setTargetWidget(widget);
+
+ d->opacityAnimation->setTargetObject(widget);
+ d->scaleAnimation->setTargetObject(widget);
+ d->positionAnimation->setTargetObject(widget);
+}
+
+void MWidgetZoomAnimation::restoreTargetWidgetState()
+{
+}
+
+void MWidgetZoomAnimation::setTransitionDirection(TransitionDirection direction)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ d->direction = direction;
+
+ if (d->direction == In)
+ style().setObjectName("In");
+ else
+ style().setObjectName("Out");
+}
+
+void MWidgetZoomAnimation::setOrigin(const QPointF &pos)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ d->origin = pos;
+}
+
+void MWidgetZoomAnimation::updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+{
+ Q_D(MWidgetZoomAnimation);
+
+ QAbstractAnimation::updateState(newState, oldState);
+
+ if (!d->targetWidget)
+ return;
+
+ if (oldState == QAbstractAnimation::Stopped &&
+ newState == QAbstractAnimation::Running)
+ {
+ if (style().objectName().isNull())
+ style().setObjectName("In");
+
+ if (d->direction == In) {
+ d->targetWidget->setOpacity(0);
+
+ d->positionAnimation->setStartValue(d->setupPositionAnimation(d->targetWidget->pos()));
+ d->positionAnimation->setEndValue(d->targetWidget->pos());
+
+ d->scaleAnimation->setStartValue(style()->scale());
+ d->scaleAnimation->setEndValue(1);
+
+ d->opacityAnimation->setStartValue(0);
+ d->opacityAnimation->setEndValue(style()->opacity());
+ } else {
+ d->positionAnimation->setStartValue(d->targetWidget->pos());
+ d->positionAnimation->setEndValue(d->setupPositionAnimation(d->targetWidget->pos()));
+
+ d->opacityAnimation->setStartValue(style()->opacity());
+ d->opacityAnimation->setEndValue(0);
+ d->scaleAnimation->setStartValue(1);
+ d->scaleAnimation->setEndValue(style()->scale());
+ }
+
+ d->startDelay->setDuration(style()->delay());
+ d->opacityAnimationDelay->setDuration(style()->opacityAnimationDelay());
+ d->opacityAnimation->setEasingCurve(style()->opacityAnimationEasingCurve());
+ d->opacityAnimation->setDuration(style()->opacityAnimationDuration());
+
+ d->scaleAnimation->setEasingCurve(style()->scaleAnimationEasingCurve());
+ d->scaleAnimation->setDuration(style()->scaleAnimationDuration());
+
+ d->positionAnimation->setEasingCurve(style()->scaleAnimationEasingCurve());
+ d->positionAnimation->setDuration(style()->scaleAnimationDuration());
+ }
+}
+
+#include "moc_mwidgetzoomanimation.cpp"
diff --git a/src/corelib/animation/widget/mwidgetslideinanimation.h b/src/corelib/animation/widget/mwidgetzoomanimation.h
index ea147694..07466a7c 100644
--- a/src/corelib/animation/widget/mwidgetslideinanimation.h
+++ b/src/corelib/animation/widget/mwidgetzoomanimation.h
@@ -17,51 +17,41 @@
**
****************************************************************************/
-#ifndef MWIDGETSLIDEINANIMATION_H
-#define MWIDGETSLIDEINANIMATION_H
+#ifndef MWIDGETZOOMANIMATION_H
+#define MWIDGETZOOMANIMATION_H
-#include <mabstractwidgetanimation.h>
-#include <mwidgetslideinanimationstyle.h>
+#include "mabstractwidgetanimation.h"
+#include <mwidgetzoomanimationstyle.h>
-class MWidgetSlideInAnimationPrivate;
+#include <QPointF>
-//! \internal
-class MWidgetSlideInAnimation : public MAbstractWidgetAnimation
+class MWidgetZoomAnimationPrivate;
+
+class MWidgetZoomAnimation : public MAbstractWidgetAnimation
{
Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetSlideInAnimation)
- M_ANIMATION_GROUP(MWidgetSlideInAnimationStyle)
-
- /*!
- \brief Constructs the widget animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MWidgetSlideInAnimation(MWidgetSlideInAnimationPrivate *dd, QObject *parent);
+ M_ANIMATION_GROUP(MWidgetZoomAnimationStyle)
public:
+ MWidgetZoomAnimation(QObject *parent = NULL);
- /*!
- \brief Constructs the widget animation.
- */
- MWidgetSlideInAnimation(QObject *parent = NULL);
-
- /*!
- \brief Destructs the widget animation.
- */
- virtual ~MWidgetSlideInAnimation();
+ enum TransitionDirection {
+ In,
+ Out
+ };
- //! \reimp
- virtual void restoreTargetWidgetState();
virtual void setTargetWidget(MWidgetController *widget);
- //! \reimp_end
+ virtual void restoreTargetWidgetState();
+
+ void setTransitionDirection(TransitionDirection direction);
+ void setOrigin(const QPointF &pos);
protected:
- //! \reimp
+ MWidgetZoomAnimation(MWidgetZoomAnimationPrivate *dd, QObject *parent = NULL);
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
- //! \reimp_end
+
+private:
+ Q_DECLARE_PRIVATE(MWidgetZoomAnimation)
};
-//! \internal_end
-#endif
+#endif // MWIDGETZOOMANIMATION_H
diff --git a/src/corelib/animation/scene/mnavigationbaranimation_p.h b/src/corelib/animation/widget/mwidgetzoomanimation_p.h
index 598e0e69..5bf37b27 100644
--- a/src/corelib/animation/scene/mnavigationbaranimation_p.h
+++ b/src/corelib/animation/widget/mwidgetzoomanimation_p.h
@@ -17,19 +17,30 @@
**
****************************************************************************/
-#ifndef MNAVIGATIONBARANIMATION_P_H
-#define MNAVIGATIONBARANIMATION_P_H
+#ifndef MWIDGETZOOMANIMATION_P_H
+#define MWIDGETZOOMANIMATION_P_H
+
+#include "mabstractwidgetanimation_p.h"
+#include "mwidgetzoomanimation.h"
-#include "mscenewindowanimation_p.h"
class QPropertyAnimation;
+class QPauseAnimation;
-class MNavigationbarAnimationPrivate : public MSceneWindowAnimationPrivate
+class MWidgetZoomAnimationPrivate : MAbstractWidgetAnimationPrivate
{
- Q_DECLARE_PUBLIC(MNavigationbarAnimation)
-
+ Q_DECLARE_PUBLIC(MWidgetZoomAnimation)
public:
- QPropertyAnimation *positionAnimation;
+ void init();
+ QPointF setupPositionAnimation(const QPointF &widgetPos);
+
+ QPauseAnimation *startDelay;
+ QPauseAnimation *opacityAnimationDelay;
+
+ MWidgetZoomAnimation::TransitionDirection direction;
+ QPointF origin;
QPropertyAnimation *opacityAnimation;
+ QPropertyAnimation *positionAnimation;
+ QPropertyAnimation *scaleAnimation;
};
-#endif
+#endif // MWIDGETZOOMANIMATION_P_H
diff --git a/src/corelib/animation/widget/mwidgetzoominanimation.cpp b/src/corelib/animation/widget/mwidgetzoominanimation.cpp
deleted file mode 100644
index bf50a8a3..00000000
--- a/src/corelib/animation/widget/mwidgetzoominanimation.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetzoominanimation.h"
-#include "mwidgetzoominanimation_p.h"
-#include "mwidgetview.h"
-#include "manimationcreator.h"
-
-M_REGISTER_ANIMATION(MWidgetZoomInAnimation)
-
-MWidgetZoomInAnimation::MWidgetZoomInAnimation(MWidgetZoomInAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
-}
-
-MWidgetZoomInAnimation::MWidgetZoomInAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetZoomInAnimationPrivate, parent)
-{
-}
-
-MWidgetZoomInAnimation::~MWidgetZoomInAnimation()
-{
-}
-
-void MWidgetZoomInAnimation::resetToInitialState()
-{
- view()->setScale(0.0);
-}
-
-void MWidgetZoomInAnimation::updateCurrentTime(int currentTime)
-{
- Q_D(MWidgetZoomInAnimation);
-
- qreal progress = ((qreal)currentTime) / ((qreal)style()->duration());
- qreal value = style()->easingCurve().valueForProgress(progress);
- view()->setScale(d->startScale + (1 - d->startScale) * value);
-}
-
-void MWidgetZoomInAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetZoomInAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- view()->show();
- d->startScale = view()->scale();
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetzoominanimation.h b/src/corelib/animation/widget/mwidgetzoominanimation.h
deleted file mode 100644
index c896615a..00000000
--- a/src/corelib/animation/widget/mwidgetzoominanimation.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETZOOMINANIMATION_H
-#define MWIDGETZOOMINANIMATION_H
-
-#include <mabstractwidgetanimation.h>
-#include <mwidgetzoominanimationstyle.h>
-
-class MWidgetZoomInAnimationPrivate;
-
-
-//! \internal
-class MWidgetZoomInAnimation : public MAbstractWidgetAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetZoomInAnimation)
- M_WIDGET_ANIMATION(MWidgetZoomInAnimationStyle, MWidgetView)
-
- /*!
- \brief Constructs the widget animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MWidgetZoomInAnimation(MWidgetZoomInAnimationPrivate *dd, QObject *parent);
-
-public:
-
- /*!
- \brief Constructs the widget animation.
- */
- MWidgetZoomInAnimation(QObject *parent = NULL);
-
- /*!
- \brief Destructs the widget animation.
- */
- virtual ~MWidgetZoomInAnimation();
-
- //! \reimp
- virtual void resetToInitialState();
- //! \reimp_end
-
-protected:
- //! \reimp
- virtual void updateCurrentTime(int currentTime);
- virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
- //! \reimp_end
-};
-
-//! \internal_end
-
-#endif
diff --git a/src/corelib/animation/widget/mwidgetzoominanimation_p.h b/src/corelib/animation/widget/mwidgetzoominanimation_p.h
deleted file mode 100644
index 03c690e8..00000000
--- a/src/corelib/animation/widget/mwidgetzoominanimation_p.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETZOOMINANIMATION_P_H
-#define MWIDGETZOOMINANIMATION_P_H
-
-#include "core/mabstractwidgetanimation_p.h"
-
-class MWidgetZoomInAnimationPrivate : public MAbstractWidgetAnimationPrivate
-{
- Q_DECLARE_PUBLIC(MWidgetZoomInAnimation)
-public:
- virtual ~MWidgetZoomInAnimationPrivate() {}
-private:
- qreal startScale;
-};
-
-#endif
diff --git a/src/corelib/animation/widget/mwidgetzoomoutanimation.cpp b/src/corelib/animation/widget/mwidgetzoomoutanimation.cpp
deleted file mode 100644
index 82342532..00000000
--- a/src/corelib/animation/widget/mwidgetzoomoutanimation.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#include "mwidgetzoomoutanimation.h"
-#include "mwidgetzoomoutanimation_p.h"
-#include "mwidgetview.h"
-#include "manimationcreator.h"
-
-M_REGISTER_ANIMATION(MWidgetZoomOutAnimation)
-
-MWidgetZoomOutAnimation::MWidgetZoomOutAnimation(MWidgetZoomOutAnimationPrivate *dd, QObject *parent) :
- MAbstractWidgetAnimation(dd, parent)
-{
-}
-
-MWidgetZoomOutAnimation::MWidgetZoomOutAnimation(QObject *parent) :
- MAbstractWidgetAnimation(new MWidgetZoomOutAnimationPrivate, parent)
-{
-}
-
-MWidgetZoomOutAnimation::~MWidgetZoomOutAnimation()
-{
-}
-
-void MWidgetZoomOutAnimation::updateCurrentTime(int currentTime)
-{
- Q_D(MWidgetZoomOutAnimation);
- qreal progress = ((qreal)currentTime) / ((qreal)style()->duration());
- qreal value = style()->easingCurve().valueForProgress(progress);
- view()->setScale(d->startScale - (d->startScale) * value);
-}
-
-void MWidgetZoomOutAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
-{
- Q_D(MWidgetZoomOutAnimation);
- if (oldState == QAbstractAnimation::Stopped && newState == QAbstractAnimation::Running) {
- d->startScale = view()->scale();
- } else if (oldState == QAbstractAnimation::Running && newState == QAbstractAnimation::Stopped) {
- view()->hide();
- }
-}
diff --git a/src/corelib/animation/widget/mwidgetzoomoutanimation.h b/src/corelib/animation/widget/mwidgetzoomoutanimation.h
deleted file mode 100644
index a9a5d723..00000000
--- a/src/corelib/animation/widget/mwidgetzoomoutanimation.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETZOOMOUTANIMATION_H
-#define MWIDGETZOOMOUTANIMATION_H
-
-#include <mabstractwidgetanimation.h>
-#include <mwidgetzoomoutanimationstyle.h>
-
-class MWidgetZoomOutAnimationPrivate;
-
-//! \internal
-class MWidgetZoomOutAnimation : public MAbstractWidgetAnimation
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(MWidgetZoomOutAnimation)
- M_WIDGET_ANIMATION(MWidgetZoomOutAnimationStyle, MWidgetView)
-
- /*!
- \brief Constructs the widget animation.
-
- This constructor is meant to be used inside the libmeegotouch to share the
- private data class pointer.
- */
- MWidgetZoomOutAnimation(MWidgetZoomOutAnimationPrivate *dd, QObject *parent);
-
-public:
-
- /*!
- \brief Constructs the widget animation.
- */
- MWidgetZoomOutAnimation(QObject *parent = NULL);
-
- /*!
- \brief Destructs the widget animation.
- */
- virtual ~MWidgetZoomOutAnimation();
-
-protected:
- //! \reimp
- virtual void updateCurrentTime(int currentTime);
- virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
- //! \reimp_end
-};
-//! \internal_end
-
-#endif
diff --git a/src/corelib/animation/widget/mwidgetzoomoutanimation_p.h b/src/corelib/animation/widget/mwidgetzoomoutanimation_p.h
deleted file mode 100644
index 328e028f..00000000
--- a/src/corelib/animation/widget/mwidgetzoomoutanimation_p.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETZOOMOUTANIMATION_P_H
-#define MWIDGETZOOMOUTANIMATION_P_H
-
-#include "core/mabstractwidgetanimation_p.h"
-
-class MWidgetZoomOutAnimationPrivate : public MAbstractWidgetAnimationPrivate
-{
- Q_DECLARE_PUBLIC(MWidgetZoomOutAnimation)
-public:
- virtual ~MWidgetZoomOutAnimationPrivate() {}
-private:
- qreal startScale;
-};
-
-#endif
diff --git a/src/corelib/animation/widget/widget.pri b/src/corelib/animation/widget/widget.pri
index 0a6cc0b5..faa98d24 100644
--- a/src/corelib/animation/widget/widget.pri
+++ b/src/corelib/animation/widget/widget.pri
@@ -8,26 +8,17 @@ include(core/core.pri)
ANIMATIONS_WIDGET_SRC_DIR=./animation/widget
PUBLIC_HEADERS += \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeinanimation.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeoutanimation.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideinanimation.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideoutanimation.h \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoominanimation.h \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomoutanimation.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeanimation.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideanimation.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomanimation.h \
PRIVATE_HEADERS += \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeinanimation_p.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeoutanimation_p.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideinanimation_p.h \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideoutanimation_p.h \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoominanimation_p.h \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomoutanimation_p.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeanimation_p.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideanimation_p.h \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomanimation_p.h \
SOURCES += \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeinanimation.cpp \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeoutanimation.cpp \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideinanimation.cpp \
- $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideoutanimation.cpp \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoominanimation.cpp \
- #$$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomoutanimation.cpp \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetfadeanimation.cpp \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetslideanimation.cpp \
+ $$ANIMATIONS_WIDGET_SRC_DIR/mwidgetzoomanimation.cpp \
diff --git a/src/corelib/core/maction.cpp b/src/corelib/core/maction.cpp
index a1afd74a..4774b3c0 100644
--- a/src/corelib/core/maction.cpp
+++ b/src/corelib/core/maction.cpp
@@ -26,7 +26,7 @@
#include <QGraphicsWidget>
MActionPrivate::MActionPrivate()
- : location(MAction::EveryLocation), styleAction(false)
+ : location(MAction::EveryLocation), styleAction(false), q_ptr(0)
{
}
diff --git a/src/corelib/core/mcomponentcache.cpp b/src/corelib/core/mcomponentcache.cpp
index 16a1ae88..b890ff26 100644
--- a/src/corelib/core/mcomponentcache.cpp
+++ b/src/corelib/core/mcomponentcache.cpp
@@ -62,12 +62,12 @@ bool MComponentCachePrivate::populating()
void MComponentCachePrivate::populateForMApplication()
{
static int argc = 1;
- static char *argv0 = (char *)"generic";
+ static char *argv[] = {(char*)"generic"};
cacheBeingPopulated = true;
if (mApplicationInstance == 0) {
- mApplicationInstance = new MApplication(argc, &argv0, 0);
+ mApplicationInstance = new MApplication(argc, argv, 0);
} else {
cacheBeingPopulated = false;
qFatal("MComponentCache::populateForMApplication() - Cache is already populated.");
diff --git a/src/corelib/core/mcomponentdata.cpp b/src/corelib/core/mcomponentdata.cpp
index 89ffda35..fc2ff54f 100644
--- a/src/corelib/core/mcomponentdata.cpp
+++ b/src/corelib/core/mcomponentdata.cpp
@@ -27,6 +27,7 @@
#include "minputmethodstate.h"
#include "mtheme.h"
+#include "mtheme_p.h"
#include "mthemedaemon.h"
#include "mcomponentdata.h"
#include "mscenemanager.h"
@@ -54,6 +55,10 @@
// end testability
#endif
+#ifdef Q_WS_X11
+#include <QX11Info>
+#include <X11/extensions/Xfixes.h>
+#endif
namespace
{
@@ -281,9 +286,9 @@ MComponentData::MComponentData(MApplicationService *service) :
MComponentData::self = this;
int argc = 0;
- char *argv = 0;
+ char *argv[] = {0};
- d->init(argc, &argv, QString(), service);
+ d->init(argc, argv, QString(), service);
}
void MComponentDataPrivate::init(int &argc, char **argv, const QString &appIdentifier, MApplicationService *newService)
@@ -637,23 +642,9 @@ void MComponentData::reinit(int &argc, char **argv, const QString &appIdentifier
systemLocale.installTrCatalog(d->appName);
MLocale::setDefault(systemLocale);
- QString baseCSS(MThemeDaemon::systemThemeDirectory() +
- QDir::separator() + QString("base") +
- QDir::separator() + QString("meegotouch") +
- QDir::separator() + d->appName +
- QDir::separator() + QString("style") +
- QDir::separator() + d->appName + QString(".css"));
-
- MTheme::loadCSS(baseCSS);
-
- QString themeCSS(MThemeDaemon::systemThemeDirectory() +
- QDir::separator() + MTheme::currentTheme() +
- QDir::separator() + QString("meegotouch") +
- QDir::separator() + d->appName +
- QDir::separator() + QString("style") +
- QDir::separator() + d->appName + QString(".css"));
-
- MTheme::loadCSS(themeCSS);
+ if (MTheme::instance()) {
+ MTheme::instance()->d_func()->reinit(d->appName, d->imglistFilename, MTheme::AnyTheme);
+ }
if (newService) {
d->registerNewService(newService);
@@ -878,11 +869,19 @@ void MComponentData::setShowCursor(bool show)
}
if (show) {
+#ifdef Q_WS_X11
+ XFixesShowCursor(QX11Info::display(), QX11Info::appRootWindow());
+#else
qApp->restoreOverrideCursor();
+#endif
} else {
+#ifdef Q_WS_X11
+ XFixesHideCursor(QX11Info::display(), QX11Info::appRootWindow());
+#else
QPixmap cursor(QSize(1, 1));
cursor.fill(Qt::transparent);
qApp->setOverrideCursor(cursor);
+#endif
}
gMComponentDataPrivate->showCursor = show;
diff --git a/src/corelib/core/mnamespace.h b/src/corelib/core/mnamespace.h
index f20acc3d..8e024372 100644
--- a/src/corelib/core/mnamespace.h
+++ b/src/corelib/core/mnamespace.h
@@ -20,6 +20,7 @@
#ifndef MNAMESPACE_H
#define MNAMESPACE_H
+#include <QMetaType>
#include <QMessageBox>
namespace M
@@ -30,7 +31,7 @@ namespace M
};
/*!
- * setting a dynamic porperty to any QWidget or QApplication will cause the the object
+ * setting a dynamic porperty to any QWidget or QApplication will cause the object
* not to be styled like M does.
*/
#ifdef __GNUC__
@@ -40,6 +41,26 @@ namespace M
#endif
/*!
+ * setting a dynamic property to QApplication named NoMNavigationBar will hide the
+ * navigationbar from qt maemo 6 style
+ */
+#ifdef __GNUC__
+ static const char* NoMNavigationBar __attribute__((__unused__)) = "NoMNavigationBar";
+#else
+ static const char* NoMNavigationBar = "NoMNavigationBar";
+#endif
+
+ /*!
+ * setting a dynamic property to QApplication named NoMStatusBar will hide the
+ * statusbar from qt maemo 6 style
+ */
+#ifdef __GNUC__
+ static const char* NoMStatusBar __attribute__((__unused__)) = "NoMStatusBar";
+#else
+ static const char* NoMStatusBar = "NoMStatusBar";
+#endif
+
+ /*!
* This enum contains values of the orientation angle of windows in the application.
*
* \sa Orientation
@@ -244,4 +265,17 @@ namespace M
Q_DECLARE_OPERATORS_FOR_FLAGS(M::StandardButtons)
+Q_ENUMS(M::AssemblyType)
+
+Q_DECLARE_METATYPE(M::OrientationAngle)
+Q_DECLARE_METATYPE(M::Orientation)
+Q_DECLARE_METATYPE(M::Position)
+Q_DECLARE_METATYPE(M::RecursionMode)
+Q_DECLARE_METATYPE(M::InputMethodQueryExtensions)
+Q_DECLARE_METATYPE(M::PreeditFace)
+Q_DECLARE_METATYPE(M::TextContentType)
+Q_DECLARE_METATYPE(M::InputMethodMode)
+Q_DECLARE_METATYPE(M::PrestartMode)
+Q_DECLARE_METATYPE(M::StandardButton)
+
#endif
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index db2ae35f..f73b5f82 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -45,11 +45,15 @@ install_prf.files = $${M_SOURCE_TREE}/mkspecs/features/meegotouch.prf \
INSTALLS += install_prf
}
+#install Rich Text Editor xml file
+install_xmltoolbar.files = ./widgets/RichTextEditorToolbar1.xml
+install_xmltoolbar.path = /usr/share/meegotouch/imtoolbars
#install libmeegotouch .pc file
install_pkgconfig.path = $$M_INSTALL_LIBS/pkgconfig
install_pkgconfig.files = ../meegotouch.pc
-INSTALLS += install_pkgconfig
+INSTALLS += install_pkgconfig \
+ install_xmltoolbar
# install forwarding headers
diff --git a/src/corelib/events/morientationtracker.cpp b/src/corelib/events/morientationtracker.cpp
index d3c19b84..ff32f890 100644
--- a/src/corelib/events/morientationtracker.cpp
+++ b/src/corelib/events/morientationtracker.cpp
@@ -82,7 +82,7 @@ void MOrientationTrackerPrivate::topEdgeChanged()
} else if (edge == "bottom") {
angle = M::Angle180;
} else {
- angle = currentAngle;
+ angle = M::Angle0;
}
// if hardware keyboard is opened, don't allow orientation angle to be changed.
diff --git a/src/corelib/events/mpanrecognizer.cpp b/src/corelib/events/mpanrecognizer.cpp
index 3ad00332..60c3e132 100644
--- a/src/corelib/events/mpanrecognizer.cpp
+++ b/src/corelib/events/mpanrecognizer.cpp
@@ -28,6 +28,8 @@
static const int defaultPanThreshold = 10;
MPanRecognizerPrivate::MPanRecognizerPrivate()
+ : movementThreshold( 0 ),
+ q_ptr( 0 )
{
}
diff --git a/src/corelib/events/mtapandholdrecognizer.cpp b/src/corelib/events/mtapandholdrecognizer.cpp
index de44e8bc..6e9ca2be 100644
--- a/src/corelib/events/mtapandholdrecognizer.cpp
+++ b/src/corelib/events/mtapandholdrecognizer.cpp
@@ -31,6 +31,9 @@ static const int MTapAndHoldTimeout = 500; /* miliseconds */
static const int MTapAndHoldMovementThreshold = 20; /* pixels */
MTapAndHoldRecognizerPrivate::MTapAndHoldRecognizerPrivate()
+ : timeoutValue( 0 ),
+ movementThreshold( 0 ),
+ q_ptr( 0 )
{
}
@@ -77,7 +80,7 @@ QGestureRecognizer::Result MTapAndHoldRecognizer::recognize(QGesture *state, QOb
switch (event->type()) {
case QEvent::GraphicsSceneMousePress:
- tapAndHoldState->setPosition(ev->pos());
+ tapAndHoldState->setPosition(ev->scenePos());
tapAndHoldState->setHotSpot(ev->scenePos());
if (tapAndHoldState->timerId)
@@ -98,7 +101,7 @@ QGestureRecognizer::Result MTapAndHoldRecognizer::recognize(QGesture *state, QOb
break;
case QEvent::GraphicsSceneMouseMove:
if (tapAndHoldState->state() != Qt::NoGesture) {
- QPoint delta = ev->pos().toPoint() - tapAndHoldState->position().toPoint();
+ QPoint delta = ev->scenePos().toPoint() - tapAndHoldState->position().toPoint();
if (delta.manhattanLength() <= d->movementThreshold)
result = QGestureRecognizer::TriggerGesture;
}
diff --git a/src/corelib/i18n/mcalendar.cpp b/src/corelib/i18n/mcalendar.cpp
index 46b72360..a52b26e1 100644
--- a/src/corelib/i18n/mcalendar.cpp
+++ b/src/corelib/i18n/mcalendar.cpp
@@ -22,6 +22,7 @@
#include <QString>
#include <QDateTime>
+#include <QDebug>
#include "mlocale_p.h"
#include "micuconversions.h"
@@ -233,6 +234,7 @@ void MCalendar::setDate(const QDate &date)
setDateTime(datetime);
}
+#define MSECS_PER_DAY 86400000
//! Sets the calendar according to given QDate
void MCalendar::setDateTime(QDateTime date)
@@ -244,7 +246,17 @@ void MCalendar::setDateTime(QDateTime date)
// we avoid time conversions made by qt
Qt::TimeSpec originalTimeSpec = date.timeSpec();
date.setTimeSpec(Qt::UTC);
- UDate icuDate = date.toTime_t() * 1000.0;
+
+ // We cannot use QDateTime::toTime_t because this
+ // works only for dates after 1970-01-01T00:00:00.000.
+#if QT_VERSION >= 0x040700
+ UDate icuDate = date.toMSecsSinceEpoch();
+#else
+ // Qt < 4.7 lacks QDateTime::toMSecsSinceEpoch(), we need to emulate it:
+ int days = QDate(1970, 1, 1).daysTo(date.date());
+ qint64 msecs = qint64(QTime().secsTo(date.time())) * 1000;
+ UDate icuDate = (qint64(days) * MSECS_PER_DAY) + msecs;
+#endif
if (originalTimeSpec == Qt::LocalTime) {
// convert from local time to UTC
@@ -278,8 +290,23 @@ QDateTime MCalendar::qDateTime(Qt::TimeSpec spec) const
tz.getOffset(icuDate, true /*local */, rawOffset, dstOffset, status);
icuDate = icuDate + rawOffset + dstOffset;
}
-
- time.setTime_t(icuDate / 1000.0); // takes time in seconds since epoch
+ // We cannot use QDateTime::setTime_t because this
+ // works only for dates after 1970-01-01T00:00:00.000.
+#if QT_VERSION >= 0x040700
+ time.setMSecsSinceEpoch(qint64(icuDate));
+#else
+ // Qt < 4.7 lacks QDateTime::setMSecsSinceEpoch(), we need to emulate it.
+ qint64 msecs = qint64(icuDate);
+ int ddays = msecs / MSECS_PER_DAY;
+ msecs %= MSECS_PER_DAY;
+ if (msecs < 0) {
+ // negative
+ --ddays;
+ msecs += MSECS_PER_DAY;
+ }
+ time.setDate(QDate(1970, 1, 1).addDays(ddays));
+ time.setTime(QTime().addMSecs(msecs));
+#endif
// note: we set time spec after time value so Qt will not any conversions
// of its own to UTC. We might let Qt handle it but this might be more robust
time.setTimeSpec(spec);
diff --git a/src/corelib/i18n/mcollator.cpp b/src/corelib/i18n/mcollator.cpp
index 7672d0b0..abf035e8 100644
--- a/src/corelib/i18n/mcollator.cpp
+++ b/src/corelib/i18n/mcollator.cpp
@@ -45,7 +45,7 @@ MCollatorPrivate::~MCollatorPrivate()
// allocates an icu collator based on locale
-void MCollatorPrivate::initCollator(icu::Locale locale)
+void MCollatorPrivate::initCollator(const icu::Locale &locale)
{
UErrorCode status = U_ZERO_ERROR;
_coll = icu::Collator::createInstance(locale, status);
diff --git a/src/corelib/i18n/mcollator_p.h b/src/corelib/i18n/mcollator_p.h
index d756da29..8c8d915c 100644
--- a/src/corelib/i18n/mcollator_p.h
+++ b/src/corelib/i18n/mcollator_p.h
@@ -28,7 +28,7 @@ public:
MCollatorPrivate();
virtual ~MCollatorPrivate();
- void initCollator(icu::Locale locale);
+ void initCollator(const icu::Locale &locale);
icu::Collator *_coll;
diff --git a/src/corelib/i18n/mlocale.cpp b/src/corelib/i18n/mlocale.cpp
index 7b296ef3..af8d4afd 100644
--- a/src/corelib/i18n/mlocale.cpp
+++ b/src/corelib/i18n/mlocale.cpp
@@ -114,7 +114,7 @@ public:
* As an example lets assume that
*
* - MLocale::translationPaths()
- * is the list ("/usr/share/l10n/m", "/usr/share/l10n")
+ * is the list ("/usr/share/l10n/meegotouch", "/usr/share/l10n")
* - the category is MLocale::MLcMessages
* - the name of the locale (returned by mlocale->categoryName(category))
* is "en_US"
@@ -122,18 +122,14 @@ public:
*
* then the function will try to load translation catalogs in the following order:
*
- * /usr/share/l10n/m/foo_en_US.qm
- * /usr/share/l10n/m/foo_en_US
- * /usr/share/l10n/m/foo_en.qm
- * /usr/share/l10n/m/foo_en
- * /usr/share/l10n/m/foo.qm
- * /usr/share/l10n/m/foo
+ * /usr/share/l10n/meegotouch/foo_en_US.qm
+ * /usr/share/l10n/meegotouch/foo_en_US
+ * /usr/share/l10n/meegotouch/foo_en.qm
+ * /usr/share/l10n/meegotouch/foo_en
* /usr/share/l10n/foo_en_US.qm
* /usr/share/l10n/foo_en_US
* /usr/share/l10n/foo_en.qm
* /usr/share/l10n/foo_en
- * /usr/share/l10n/foo.qm
- * /usr/share/l10n/foo
*
* and return when the first translation catalog was found.
* If no translation can be found this function returns false.
@@ -286,7 +282,7 @@ QString MLocalePrivate::createLocaleString(const QString &language,
}
#ifdef HAVE_ICU
-icu::DateFormatSymbols *MLocalePrivate::createDateFormatSymbols(icu::Locale locale)
+icu::DateFormatSymbols *MLocalePrivate::createDateFormatSymbols(const icu::Locale &locale)
{
// This is a bit dirty but the only way to currently get the symbols
// is like this. Only the internal API supports directly creating DateFormatSymbols
@@ -349,6 +345,7 @@ MLocalePrivate::MLocalePrivate()
currentLcNumericItem(SettingsLcNumeric),
currentLcMonetaryItem(SettingsLcMonetary)
#endif
+ , q_ptr(0)
{
}
@@ -377,6 +374,7 @@ MLocalePrivate::MLocalePrivate(const MLocalePrivate &other)
currentLcNumericItem(SettingsLcNumeric),
currentLcMonetaryItem(SettingsLcMonetary)
#endif
+ , q_ptr(0)
{
#ifdef HAVE_ICU
if (other._numberFormat != 0) {
@@ -1395,13 +1393,13 @@ QString MLocale::formatDateTime(const MCalendar &mCalendar,
break;
case 'H':
- // 24 hour clock
- icuFormat.append("kk");
+ // Hour (24-hour clock), as a decimal number (00-23).
+ icuFormat.append("HH");
break;
case 'I':
- // 12 hour clock
- icuFormat.append("KK");
+ // Hour (12-hour clock), as a decimal number (01-12).
+ icuFormat.append("hh");
break;
case 'j':
@@ -1429,14 +1427,29 @@ QString MLocale::formatDateTime(const MCalendar &mCalendar,
icuFormat.append("aaa");
break;
- case 'r':
+ case 'r': {
// 12 hour clock with am/pm
- icuFormat.append("KK aaa"); // correct?
+ QString timeShortFormat
+ = icuFormatString(MLocale::DateNone, MLocale::TimeShort,
+ MLocale::GregorianCalendar);
+ timeShortFormat.replace(QChar('k'), QChar('K'), Qt::CaseSensitive);
+ timeShortFormat.replace(QChar('H'), QChar('h'), Qt::CaseSensitive);
+ if (!timeShortFormat.contains('a', Qt::CaseSensitive))
+ timeShortFormat.append(QLatin1String(" a"));
+ icuFormat.append(timeShortFormat);
+ }
break;
- case 'R':
+ case 'R': {
// 24-hour clock time, in the format "%H:%M"
- icuFormat.append("kk:mm");
+ QString timeShortFormat
+ = icuFormatString(MLocale::DateNone, MLocale::TimeShort,
+ MLocale::GregorianCalendar);
+ timeShortFormat.replace(QRegExp(" *a"), QLatin1String(""));
+ timeShortFormat.replace(QChar('K'), QChar('k'), Qt::CaseSensitive);
+ timeShortFormat.replace(QChar('h'), QChar('H'), Qt::CaseSensitive);
+ icuFormat.append(timeShortFormat);
+ }
break;
case 'S':
@@ -1449,7 +1462,7 @@ QString MLocale::formatDateTime(const MCalendar &mCalendar,
icuFormat.append('\t');
break;
- case 'T':
+ case 'T': // FIXME!
// 24 hour clock HH:MM:SS
icuFormat.append("kk:mm:ss");
break;
@@ -1618,18 +1631,18 @@ QString MLocale::icuFormatString( DateType dateType,
calendarType);
DateFormatSymbols *dfs = MLocalePrivate::createDateFormatSymbols(symbolLocale);
- // This is not nice but seems to be the only way to set the
- // symbols with the public API
- static_cast<SimpleDateFormat *>(df)->adoptDateFormatSymbols(dfs);
-
- icu::UnicodeString icuFormatString;
- static_cast<SimpleDateFormat *>(df)->toPattern(icuFormatString);
-
- QString icuFormatQString = MIcuConversions::unicodeStringToQString(icuFormatString);
+ QString icuFormatQString;
- if( df )
+ if (df)
+ {
+ icu::UnicodeString icuFormatString;
+ // This is not nice but seems to be the only way to set the
+ // symbols with the public API
+ static_cast<SimpleDateFormat *>(df)->adoptDateFormatSymbols(dfs);
+ static_cast<SimpleDateFormat *>(df)->toPattern(icuFormatString);
+ icuFormatQString = MIcuConversions::unicodeStringToQString(icuFormatString);
delete df;
-
+ }
return icuFormatQString;
}
#endif
@@ -1833,7 +1846,13 @@ QString MLocale::languageEndonym() const
Q_D(const MLocale);
UErrorCode status = U_ZERO_ERROR;
+ // TODO: implement a workaround for
+ // http://site.icu-project.org/design/resbund/issues
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ UResourceBundle *res = ures_open("ICUDATA-lang", qPrintable(d->_defaultLocale), &status);
+#else
UResourceBundle *res = ures_open(NULL, qPrintable(d->_defaultLocale), &status);
+#endif
if (U_FAILURE(status)) {
mDebug("MLocale") << "Error ures_open" << u_errorName(status);
}
@@ -1865,7 +1884,13 @@ QString MLocale::countryEndonym() const
Q_D(const MLocale);
UErrorCode status = U_ZERO_ERROR;
+ // TODO: implement a workaround for
+ // http://site.icu-project.org/design/resbund/issues
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ UResourceBundle *res = ures_open("ICUDATA-region", qPrintable(d->_defaultLocale), &status);
+#else
UResourceBundle *res = ures_open(NULL, qPrintable(d->_defaultLocale), &status);
+#endif
if (U_FAILURE(status)) {
mDebug("MLocale") << "Error ures_open" << u_errorName(status);
}
diff --git a/src/corelib/i18n/mlocale.h b/src/corelib/i18n/mlocale.h
index 1eea9d20..2c1dd115 100644
--- a/src/corelib/i18n/mlocale.h
+++ b/src/corelib/i18n/mlocale.h
@@ -550,11 +550,11 @@ public:
</a>
or
<a href="http://linux.die.net/man/1/date">
- the man page of <verbatim>date<verbatim>
+ the man page of “date”
</a>
or
<a href="http://www.gnu.org/s/libc/manual/html_node/Formatting-Calendar-Time.html">
- the documentation of the glibc function <verbatim>strftime</verbatim>
+ the documentation of the glibc function “strftime”
</a>.
The pattern may contain the following symbols to be replaced with
@@ -579,8 +579,19 @@ public:
- \%M Minute, as a decimal number (00-59).
- \%n A &lt;newline&gt; character.
- \%p FDCC-set's equivalent of either AM or PM.
- - \%r 12-hour clock time (01-12), using the AM/PM notation.
- - \%R 24-hour clock time, in the format "%H:%M".
+ - \%r locale specific 12-hour clock time using the AM/PM notation
+ Similar to “%I:%M %p” but the exact format does depend more on
+ the locale. E.g. for “en_GB” locale the result may look like
+ “12:15 PM” with a colon between the hours and he minutes whereas
+ for “fi_FI” locale a dot may be used as the separator, like
+ “12.15 ip.”. The exact result depends on how the TimeShort format
+ for the locale is implemented in ICU.
+ - \%R locale specific 24-hour clock time.
+ Similar to “%H:%M” but the exact format depends on the locale.
+ E.g. for “en_GB” locale the result may look like “14:15” and
+ for “fi_FI” locale the result may look like “14.15”.
+ The exact result depends on how the TimeShort format
+ for the locale is implemented in ICU.
- \%S Seconds, as a decimal number (00-61).
- \%t A &lt;tab&gt; character.
- \%T 24-hour clock time, in the format HH:MM:SS.
@@ -677,17 +688,34 @@ public:
/*!
* \brief installs a translation catalog
+ * \param name of the translation catalog to install
*
* Adds this translation catalog to the list of translation catalogs
* used by this MLocale.
*
- * The list of catalogs used by the default locale is the list of
- * catalogs which will be used when translating strings with qtTrId() or tr().
+ * The list of catalogs used by the system default locale is the
+ * list of catalogs which will be used when translating strings
+ * with qtTrId() or tr().
*
- * Examples:
+ * Usually the catalog name should be specified <b>without</b> the
+ * “.qm” file extension and <b>without</b> the locale specific
+ * part of the file name. I.e. one should usually call
+ * installTrCatalog("foo") and <b>not</b>
+ * installTrCatalog("foo_en_US.qm").
+ *
+ * If only the basename of the catalog (e.g. "foo") is specified,
+ * installTrCatalog() installs both the engineering
+ * English file for this catalog <b>and</b> the real translations
+ * for this catalog for the locale. The engineering English
+ * gets lowest priority by prepending it to the list of
+ * already installed catalogs and the real translations get
+ * highest priority by appending it to the list of already
+ * installed catalog names.
+ *
+ * Example:
*
- * Add another translation catalog to the catalogs used
- * by the system default locale, and translate a message:
+ * Add translation catalogs “foo” and “bar” to the catalogs used
+ * by the system default locale:
*
* \code
* // get current system default locale
@@ -695,11 +723,89 @@ public:
* // install a translation catalog
* // (this catalog is added to the list of catalogs already used
* // by the system default locale):
- * locale.installTrCatalog("catalogname");
+ * locale.installTrCatalog("foo");
+ * locale.installTrCatalog("bar");
* // make the locale with the added translation catalog the new system
* // default:
* MLocale::setDefault(locale);
+ * \endcode
+ *
+ * In this example, after calling locale.installTrCatalog("foo") the
+ * internal list of installed catalog names of the locale looks like:
+ *
+ * \code
+ * "foo.qm" "bar.qm" ... previous catalog list ... "foo" "bar"
+ * \endcode
+ *
+ * Priority in this list increases from left to right.
+ *
+ * Eventually, this list of catalog names is evaluated and
+ * translation files are loaded from the file system.
+ * The translation files are searched in the directories
+ * in the translation path list, see translationPaths().
+ *
+ * For entries in the list of catalog names which end with “.qm”
+ * the names are used “as is”, i.e. in the example above the files
+ * “foo.qm” and “bar.qm” are loaded for these entries. For entries
+ * in the list of catalog names which do <b>not</b> end with
+ * “.qm”, a locale specific file name part and a “.qm” extension
+ * is added and Qt-like fallbacks for the file name to load are
+ * used. As an example, let’s assume that the name of the locale
+ * is “en_US”, then the following file names are tried to get
+ * the real translations for the catalog name “foo”:
+ *
+ * \code
+ * foo_en_US.qm
+ * foo_en_US
+ * foo_en.qm
+ * foo_en
+ * \endcode
+ *
+ * and the first one which exists is loaded.
+ *
+ * Note that the search for fallbacks for the real translation
+ * stops at “foo_en”. This is slightly different from the
+ * behaviour of <a
+ * href="http://qt.nokia.com/doc/4.6/qtranslator.html#load">QTranslator::load()</a>
+ * because proceeding to the fallback “foo.qm” would load
+ * engineering English if “foo.qm” exists which is not what we
+ * want when trying to load real translations because this might
+ * add engineering English with the wrong priority (highest
+ * priority) to the list of translation catalogs if the real
+ * translation happens to be missing.
+ *
+ * If the settings of the locale change, the list of translation
+ * catalog names is reevaluated and translations may switch to
+ * a different language (see connectSettings(), disconnectSettings(),
+ * settingsChanged(), localeSettingsChanged()).
+ *
+ * If a full file name including a “.qm” extension is specified
+ * as the argument of installTrCatalog(), this catalog name is
+ * always appended to the list of catalog names, i.e. used with
+ * highest priority. This means that after calling
+ * locale.installTrCatalog("foo_en_US.qm") the internal list
+ * of installed catalog names looks like:
+ *
+ * \code
+ * ... previous catalog list ... "foo_en_US.qm"
+ * \endcode
*
+ * This is mainly intended for testing to force loading of a fully
+ * specified translation file with highest priority. Except
+ * for testing this should not be used because in the above example
+ * with “foo_en_US.qm”, the locale specific part does not change
+ * according to the locale settings but always stays like this.
+ * And loading an engineering English file by specifying
+ * the full file name, i.e. installTrCatalog("foo.qm") should
+ * also be used only for testing because this adds the engineering
+ * English with highest priority which is usually wrong.
+ *
+ * After a locale has been made the system default with setDefault(),
+ * the translation catalogs which have been installed into that locale
+ * are available for use with qtTrId(), i.e. one can use code
+ * like this to translate a string:
+ *
+ * \code
* // translate a string:
*
* //% "Hello"
@@ -707,11 +813,16 @@ public:
* \endcode
*
* \sa setDefault(const MLocale &locale)
+ * \sa translationPaths()
+ * \sa setTranslationPaths(const QStringList &paths)
+ * \sa addTranslationPath(const QString &path)
+ * \sa removeTranslationPath(const QString &path)
*/
void installTrCatalog(const QString &name);
/*!
* \brief removes a translation catalog
+ * \param name of the translation catalog to remove
*
* Removes the catalog from the list of translation catalogs used by this
* MLocale.
@@ -744,21 +855,37 @@ public:
/*!
* \brief Sets the paths that are used as base directories for using translations
* The translation path modification methods are not thread-safe.
+ *
+ * \sa translationPaths()
+ * \sa addTranslationPath(const QString &path)
+ * \sa removeTranslationPath(const QString &path)
*/
static void setTranslationPaths(const QStringList &paths);
/*!
* \brief Append a path to the translation file lookup directories.
+ *
+ * \sa translationPaths()
+ * \sa setTranslationPaths(const QStringList &paths)
+ * \sa removeTranslationPath(const QString &path)
*/
static void addTranslationPath(const QString &path);
/*!
* \brief Removes a path
+ *
+ * \sa translationPaths()
+ * \sa setTranslationPaths(const QStringList &paths)
+ * \sa addTranslationPath(const QString &path)
*/
static void removeTranslationPath(const QString &path);
/*!
* \brief Returns the list of current translation file base paths
+ *
+ * \sa setTranslationPaths(const QStringList &paths)
+ * \sa addTranslationPath(const QString &path)
+ * \sa removeTranslationPath(const QString &path)
*/
static QStringList translationPaths();
diff --git a/src/corelib/i18n/mlocale_p.h b/src/corelib/i18n/mlocale_p.h
index 39f28f22..e19249bb 100644
--- a/src/corelib/i18n/mlocale_p.h
+++ b/src/corelib/i18n/mlocale_p.h
@@ -90,7 +90,7 @@ public:
// creates an icu::Locale for specific category
icu::Locale getCategoryLocale(MLocale::Category category) const;
- static icu::DateFormatSymbols *createDateFormatSymbols(icu::Locale locale);
+ static icu::DateFormatSymbols *createDateFormatSymbols(const icu::Locale &locale);
// creates a dateformat object for datetime formatting/parsing
// the caller is responsible for deleting the dateformat object
diff --git a/src/corelib/icu-extradata/extradata.pri b/src/corelib/icu-extradata/extradata.pri
index 6b091956..866a9eef 100644
--- a/src/corelib/icu-extradata/extradata.pri
+++ b/src/corelib/icu-extradata/extradata.pri
@@ -1,8 +1,9 @@
+ICUBINDIR = $$system(icu-config --bindir)
extradata.name = libextradata builder
extradata.input = EXTRADATA_SOURCE
extradata.output = $$DESTDIR/lib${QMAKE_FILE_BASE}.a
-extradata.commands += genrb -d $$OBJECTS_DIR -s $$IN_PWD -e UTF-8 ${QMAKE_FILE_BASE}.txt;
-extradata.commands += pkgdata --name ${QMAKE_FILE_BASE} --mode static -v -d $$DESTDIR -T $$OBJECTS_DIR -s $$OBJECTS_DIR $$IN_PWD/packagelist.txt
+extradata.commands += $$ICUBINDIR/genrb -d $$OBJECTS_DIR -s $$IN_PWD -e UTF-8 ${QMAKE_FILE_BASE}.txt;
+extradata.commands += $$ICUBINDIR/pkgdata --name ${QMAKE_FILE_BASE} --mode static -v -d $$DESTDIR -T $$OBJECTS_DIR -s $$OBJECTS_DIR $$IN_PWD/packagelist.txt
extradata.clean += $$OBJECTS_DIR/*.mak $$OBJECTS_DIR/*.lst $$OBJECTS_DIR/*.ao $$OBJECTS_DIR/*.o $$OBJECTS_DIR/*.res $$OBJECTS_DIR/*.c $$DESTDIR/lib${QMAKE_FILE_BASE}.a $$DESTDIR/README_${QMAKE_FILE_BASE}.txt
diff --git a/src/corelib/layout/mabstractlayoutpolicy.cpp b/src/corelib/layout/mabstractlayoutpolicy.cpp
index 82e3cbce..8b1c0bdd 100644
--- a/src/corelib/layout/mabstractlayoutpolicy.cpp
+++ b/src/corelib/layout/mabstractlayoutpolicy.cpp
@@ -350,6 +350,6 @@ void MAbstractLayoutPolicy::activated()
void MAbstractLayoutPolicy::aboutToBeRemovedFromLayout(const QGraphicsLayoutItem *item)
{
Q_D(MAbstractLayoutPolicy);
- d->aboutToBeRemovedFromLayout(item);
+ d->aboutToBeRemovedFromLayout(layout()->indexOf(item));
}
diff --git a/src/corelib/layout/mabstractlayoutpolicy_p.cpp b/src/corelib/layout/mabstractlayoutpolicy_p.cpp
index 79dd2b11..95f25cf9 100644
--- a/src/corelib/layout/mabstractlayoutpolicy_p.cpp
+++ b/src/corelib/layout/mabstractlayoutpolicy_p.cpp
@@ -41,27 +41,17 @@ MAbstractLayoutPolicyPrivate::MAbstractLayoutPolicyPrivate(MLayout *l) :
MAbstractLayoutPolicyPrivate::~MAbstractLayoutPolicyPrivate()
{ }
-void MAbstractLayoutPolicyPrivate::aboutToBeRemovedFromLayout(const QGraphicsLayoutItem *item)
+void MAbstractLayoutPolicyPrivate::aboutToBeRemovedFromLayout(int layoutIndex)
{
- //The item is about to be removed from the layout, so we need to remove it from this policy too
- //This gets called even if the item is not in this policy, so that we can update the items mapping
- Q_Q(MAbstractLayoutPolicy);
-
- // First remove the item from this policy, if it is in this policy
- int policyIndex = q->indexOf(item);
- if (policyIndex > -1) {
- removingFromLayout = true;
- q->removeItem(item);
- removingFromLayout = false;
- }
-
- //Now update all of the indexes
- int layoutIndex = layout->indexOf(item); //This should always succeed
+ //The item is about to be removed from the layout. It has already been removed from the policy
+ //so this gets called so that we can update the items mappings.
Q_ASSERT(layoutIndex >= 0);
+ //Now update all of the indexes
const int count = items.count();
for (int i = 0; i < count; ++i) {
int currentLayoutIndex = items.at(i);
+ Q_ASSERT(currentLayoutIndex != layoutIndex);
if (currentLayoutIndex > layoutIndex)
items[i] = currentLayoutIndex - 1;
}
diff --git a/src/corelib/layout/mabstractlayoutpolicy_p.h b/src/corelib/layout/mabstractlayoutpolicy_p.h
index eeeeff3b..f3006e0c 100644
--- a/src/corelib/layout/mabstractlayoutpolicy_p.h
+++ b/src/corelib/layout/mabstractlayoutpolicy_p.h
@@ -37,7 +37,7 @@ public:
/** Destructor */
virtual ~MAbstractLayoutPolicyPrivate();
- void aboutToBeRemovedFromLayout(const QGraphicsLayoutItem *item);
+ void aboutToBeRemovedFromLayout(int index);
/** The layout we are associated with. */
MLayout *const layout;
diff --git a/src/corelib/layout/mbasiclayoutanimation.cpp b/src/corelib/layout/mbasiclayoutanimation.cpp
index 0e3de45d..860d6e88 100644
--- a/src/corelib/layout/mbasiclayoutanimation.cpp
+++ b/src/corelib/layout/mbasiclayoutanimation.cpp
@@ -58,16 +58,23 @@ void MBasicLayoutAnimation::setItemGeometry(int index, const QRectF &geometry) {
Q_ASSERT(index >= 0 && index < d->states.count());
MItemState &state = d->states[index];
Q_ASSERT(state.item());
- state.setTargetGeometry(geometry);
- if (state.isSet(MItemState::STATE_FLAG_TO_BE_SHOWN)) {
+ if(state.isSet(MItemState::STATE_FLAG_SHOWING) && !state.isSet(MItemState::STATE_FLAG_TO_BE_HIDDEN)) {
+ QPointF originalPositionCenter = state.item()->pos() + QPointF(state.item()->transform().dx(), state.item()->transform().dy());
+ state.item()->setGeometry(geometry); //Note that the item's geometry doesn't have to be equal to geometry, since there are various constraints
+ QPointF offset = originalPositionCenter - state.item()->pos();
+ state.item()->setTransform( QTransform::fromTranslate(offset.x(), offset.y()) );
+ state.setSourceTranslatePoint(offset);
+ } else {
+ state.item()->setTransform( QTransform() );
+ state.item()->setGeometry(geometry); //Note that the item's geometry doesn't have to be equal to geometry, since there are various constraints
d->doItemShownAnimation(&state);
- //we only want to call the item shown animation once, so clear the shown flags
- state.removeFlags(MItemState::STATE_FLAG_TO_BE_SHOWN);
state.addFlags(MItemState::STATE_FLAG_SHOWING);
+ state.removeFlags(MItemState::STATE_FLAG_TO_BE_HIDDEN);
}
+
if (state.isAnimationDone()) {//Set the geometry anyway, so that it can refresh
- state.item()->setOpacity(1); //Restore the opacity to 1, since we are hiding it now anyway
- state.item()->setGeometry(state.targetGeometry());
+ state.item()->setOpacity(1);
+ state.item()->setTransform( QTransform() );
} else
start();
}
@@ -76,10 +83,9 @@ void MBasicLayoutAnimation::hideItem(int index) {
Q_ASSERT(index >= 0 && index < d->states.count());
MItemState &state = d->states[index];
Q_ASSERT(state.item());
- //Check if its being hidden or if it is hiding (i.e. not shown and not to-be-shown
+ //Check if its being hidden or if it is hiding (i.e. not shown)
if (state.isSet(MItemState::STATE_FLAG_TO_BE_HIDDEN) ||
- (!state.isSet(MItemState::STATE_FLAG_TO_BE_SHOWN) &&
- !state.isSet(MItemState::STATE_FLAG_SHOWING))) {
+ (!state.isSet(MItemState::STATE_FLAG_SHOWING))) {
return; //It's already hiding/hidden. Nothing to do
}
state.hide();
diff --git a/src/corelib/layout/mbasiclayoutanimation_p.cpp b/src/corelib/layout/mbasiclayoutanimation_p.cpp
index 355630ce..303a9ad5 100644
--- a/src/corelib/layout/mbasiclayoutanimation_p.cpp
+++ b/src/corelib/layout/mbasiclayoutanimation_p.cpp
@@ -55,25 +55,22 @@ void MBasicLayoutAnimationPrivate::animate(MItemState &item)
{
Q_Q(MBasicLayoutAnimation);
- QRectF target(item.targetGeometry());
- QRectF start(item.sourceGeometry());
qreal delta_progress = recordedTimeSinceLastUpdate / q->style()->duration(); //Both times are in milliseconds
//First animate the geometry if needed
- if (item.geometryProgress() != 1) {
+ if (item.translateProgress() != 1) {
//animate the geometry
- qreal new_geometry_progress = qMin(item.geometryProgress() + delta_progress, (qreal)1.0); //between 0 and 1
- item.setGeometryProgress(new_geometry_progress);
- qreal geometry_animation_value = q->style()->geometryEasingCurve().valueForProgress(new_geometry_progress);
- if (item.geometryProgress() == 1) {
- item.item()->setGeometry(target);
+ qreal new_geometry_progress = item.translateProgress() + delta_progress;
+ if (new_geometry_progress >= 1.0) {
+ item.setTransformProgress(1.0);
+ item.item()->setTransform( QTransform() );
} else {
- QSizeF new_size = start.size() + (target.size() - start.size()) * geometry_animation_value;
- new_size = new_size.boundedTo(item.item()->maximumSize()).expandedTo(item.item()->minimumSize());
- QPointF new_position = start.center() - QPointF(new_size.width() / 2, new_size.height() / 2) + (target.center() - start.center()) * geometry_animation_value;
- QRectF new_geometry(new_position, new_size);
- if (item.item()->geometry() != new_geometry)
- item.item()->setGeometry(new_geometry);
+ item.setTransformProgress(new_geometry_progress);
+ qreal x_translation_animation_value = q->style()->xTranslationEasingCurve().valueForProgress(new_geometry_progress);
+ qreal y_translation_animation_value = q->style()->yTranslationEasingCurve().valueForProgress(new_geometry_progress);
+ qreal x_offset = item.sourceTranslate().x() * (1 - x_translation_animation_value);
+ qreal y_offset = item.sourceTranslate().y() * (1 - y_translation_animation_value);
+ item.item()->setTransform( QTransform::fromTranslate(x_offset, y_offset) );
}
}
@@ -95,7 +92,7 @@ void MBasicLayoutAnimationPrivate::animate(MItemState &item)
}
//Have we finished with this item now?
- if (item.opacityProgress() == 1 && item.geometryProgress() == 1) {
+ if (item.opacityProgress() == 1 && item.translateProgress() == 1) {
if (item.isSet(MItemState::STATE_FLAG_TO_BE_HIDDEN)) {
if (item.targetOpacity() != -1)
item.item()->setOpacity(1); //Restore the opacity to 1, since we are hiding it now anyway
@@ -109,23 +106,6 @@ void MBasicLayoutAnimationPrivate::doItemHiddenAnimation(MItemState *itemstate)
{
Q_Q(MBasicLayoutAnimation);
Q_ASSERT(itemstate->item());
- // for item hiding it should deflate from its current size to final-hiding-scale-factor
- qreal finalScaleFactor = q->style()->finalHidingScaleFactor();
- QRectF finalGeometry;
- if (finalScaleFactor == 1.0) {
- finalGeometry = itemstate->item()->geometry();
- } else {
- QSizeF size = itemstate->item()->effectiveSizeHint(Qt::MinimumSize);
- if (finalScaleFactor > 0) {
- size = size.expandedTo(itemstate->item()->geometry().size() * finalScaleFactor)
- .boundedTo(itemstate->item()->effectiveSizeHint(Qt::MaximumSize));
- }
- finalGeometry = QRectF(QPointF(0, 0), size);
- finalGeometry.moveCenter(itemstate->item()->geometry().center());
- }
-
- if (itemstate->targetGeometry().size() != finalGeometry.size())
- itemstate->setTargetGeometry(finalGeometry);
QGraphicsItem *graphicsItem = itemstate->item()->graphicsItem();
if (graphicsItem) {
@@ -138,43 +118,22 @@ void MBasicLayoutAnimationPrivate::doItemShownAnimation(MItemState *itemstate)
{
Q_Q(MBasicLayoutAnimation);
Q_ASSERT(itemstate->item());
+ q->showItemNow(itemstate->item());
+ QGraphicsItem *graphicsItem = itemstate->item()->graphicsItem();
+ if(!graphicsItem)
+ return;
if (itemstate->isSet(MItemState::STATE_FLAG_SHOWING)) {
//If the item is already visible, this can be called because we were currently doing a hide animation.
//So just make sure that we make everything visible
- q->showItemNow(itemstate->item());
- QGraphicsItem *graphicsItem = itemstate->item()->graphicsItem();
- if (graphicsItem) {
- itemstate->setTargetOpacity(1);
- graphicsItem->setOpacity(1);
- }
+ itemstate->setTargetOpacity(1);
+ graphicsItem->setOpacity(1);
return;
}
- //If the item that started this animation is to be added/shown, set the initial geometry
- qreal initialScaleFactor = q->style()->initialShowingScaleFactor();
- QRectF initialGeometry;
- if (initialScaleFactor == 1.0) {
- initialGeometry = itemstate->targetGeometry();
- } else {
- QSizeF size = itemstate->item()->effectiveSizeHint(Qt::MinimumSize);
- if (initialScaleFactor != 0.0) {
- size = size.expandedTo(itemstate->targetGeometry().size() * initialScaleFactor)
- .boundedTo(itemstate->item()->effectiveSizeHint(Qt::MaximumSize));
- }
- initialGeometry = QRectF(QPointF(0, 0), size);
- initialGeometry.moveCenter(itemstate->targetGeometry().center());
- }
-
- itemstate->setGeometry(initialGeometry);
-
- q->showItemNow(itemstate->item());
- QGraphicsItem *graphicsItem = itemstate->item()->graphicsItem();
- if (graphicsItem) {
- qreal initialOpacity = q->style()->initialShowingOpacity();
- if (initialOpacity != 1.0) {
- graphicsItem->setOpacity(initialOpacity);
- itemstate->setTargetOpacity(1);
- }
+ qreal initialOpacity = q->style()->initialShowingOpacity();
+ if (initialOpacity != 1.0) {
+ graphicsItem->setOpacity(initialOpacity);
+ itemstate->setTargetOpacity(1);
}
}
diff --git a/src/corelib/layout/mitemstate_p.cpp b/src/corelib/layout/mitemstate_p.cpp
index a289a483..47bb662c 100644
--- a/src/corelib/layout/mitemstate_p.cpp
+++ b/src/corelib/layout/mitemstate_p.cpp
@@ -25,7 +25,7 @@ MItemState::MItemState(QGraphicsWidget *i) :
m_sourceOpacity(-1),
m_targetOpacity(-1),
m_flags(MItemState::STATE_FLAG_NONE),
- m_geometryProgress(1),
+ m_translateProgress(1),
m_opacityProgress(1),
m_isAnimationDone(true)
{
@@ -40,14 +40,9 @@ QGraphicsWidget *MItemState::item() const
return m_item;
}
-QRectF MItemState::sourceGeometry() const
+QPointF MItemState::sourceTranslate() const
{
- return m_sourceGeometry;
-}
-
-QRectF MItemState::targetGeometry() const
-{
- return m_targetGeometry;
+ return m_sourceTranslate;
}
MItemState::Flags MItemState::flags() const
@@ -55,35 +50,15 @@ MItemState::Flags MItemState::flags() const
return m_flags;
}
-void MItemState::setGeometry(const QRectF &p)
-{
- m_item->setGeometry(p);
- m_sourceGeometry = p;
- m_isAnimationDone = false;
- if (m_sourceGeometry != m_targetGeometry)
- m_geometryProgress = 0;
- else
- m_geometryProgress = 1;
-}
-void MItemState::setTargetGeometry(const QRectF &p)
+void MItemState::setSourceTranslatePoint(const QPointF &sourceTranslate)
{
Q_ASSERT(m_item);
- QSizeF maximum = m_item->effectiveSizeHint(Qt::MaximumSize, p.size());
- QSizeF minimum = m_item->effectiveSizeHint(Qt::MinimumSize, p.size());
- QRectF target = p;
- target.setSize(target.size().boundedTo(maximum).expandedTo(minimum));
- if (target == m_targetGeometry && (isSet(STATE_FLAG_SHOWING) || isSet(STATE_FLAG_TO_BE_SHOWN)) && !isSet(STATE_FLAG_TO_BE_HIDDEN))
- return; //Nothing has changed and item is already being shown or is already showing. If the item is hiding, then we need to reset the source and show the item anyway
- m_targetGeometry = target;
- m_sourceGeometry = m_item->geometry();
-
- if (!isSet(STATE_FLAG_SHOWING) || isSet(STATE_FLAG_TO_BE_HIDDEN)) //If it's not being shown or we are in the middle of a showing animation
- addFlags(STATE_FLAG_TO_BE_SHOWN);
- removeFlags(STATE_FLAG_TO_BE_HIDDEN);
-
+ if(m_sourceTranslate == sourceTranslate)
+ return;
+ m_sourceTranslate = sourceTranslate;
m_isAnimationDone = false;
- if (m_sourceGeometry != m_targetGeometry)
- m_geometryProgress = 0;
+ if (!m_sourceTranslate.isNull())
+ m_translateProgress = 0;
}
void MItemState::setFlags(Flags new_flags)
@@ -115,23 +90,19 @@ void MItemState::animationDone()
{
m_isAnimationDone = true;
m_opacityProgress = 1;
- m_geometryProgress = 1;
- m_sourceGeometry = m_targetGeometry;
+ m_translateProgress = 1;
+ m_sourceTranslate = QPointF(0,0);
m_sourceOpacity = m_targetOpacity = -1;
//Keep the deleted flag so that it can be deleted
- if (m_flags & STATE_FLAG_TO_BE_SHOWN) {
- m_flags &= ~STATE_FLAG_TO_BE_SHOWN;
- m_flags |= STATE_FLAG_SHOWING;
- }
if (m_flags & STATE_FLAG_TO_BE_HIDDEN) {
m_flags &= ~STATE_FLAG_TO_BE_HIDDEN;
m_flags &= ~STATE_FLAG_SHOWING;
}
}
-void MItemState::setGeometryProgress(qreal progress)
+void MItemState::setTransformProgress(qreal progress)
{
- m_geometryProgress = progress;
+ m_translateProgress = progress;
if (progress != 1)
m_isAnimationDone = false;
}
@@ -141,9 +112,9 @@ void MItemState::setOpacityProgress(qreal progress)
if (progress != 1)
m_isAnimationDone = false;
}
-qreal MItemState::geometryProgress() const
+qreal MItemState::translateProgress() const
{
- return m_geometryProgress;
+ return m_translateProgress;
}
qreal MItemState::opacityProgress() const
{
@@ -173,7 +144,6 @@ qreal MItemState::sourceOpacity() const
}
void MItemState::hide()
{
- removeFlags(STATE_FLAG_TO_BE_SHOWN);
m_isAnimationDone = false;
if (isSet(STATE_FLAG_SHOWING)) //if it's not already hiding
addFlags(STATE_FLAG_TO_BE_HIDDEN);
diff --git a/src/corelib/layout/mitemstate_p.h b/src/corelib/layout/mitemstate_p.h
index 6e902db1..88f4687f 100644
--- a/src/corelib/layout/mitemstate_p.h
+++ b/src/corelib/layout/mitemstate_p.h
@@ -43,9 +43,8 @@ public:
STATE_FLAG_NONE = 0, //!< If none of the other flags are set, this indicates that the item is not being shown
/* The item is still doing its remove-animation. */
STATE_FLAG_TO_BE_DELETED = 1, //!< Indicates that the item will be deleted as soon as its hidden/
- STATE_FLAG_TO_BE_SHOWN = 2, //!< Indicates that setTargetGeometry has been called for an item that wasn't SHOWING. The animator will move the item into its starting position and clear this flag. This is not set during any showing animation.
- STATE_FLAG_TO_BE_HIDDEN = 4, //!< Indicates that hide() has been called for an item was SHOWING. The animator will set the hiding animation. Both this flag and the SHOWING flag will be left set during any hiding animation. One the animation is finished, the item will be hidden and both this flag and SHOWING will be cleared. If TO_BE_DELETED is set, the item is deleted.
- STATE_FLAG_SHOWING = 8 //!< Whether the item is currently visible by the user
+ STATE_FLAG_TO_BE_HIDDEN = 2, //!< Indicates that hide() has been called for an item was SHOWING. The animator will set the hiding animation. Both this flag and the SHOWING flag will be left set during any hiding animation. One the animation is finished, the item will be hidden and both this flag and SHOWING will be cleared. If TO_BE_DELETED is set, the item is deleted.
+ STATE_FLAG_SHOWING = 4 //!< Whether the item is currently visible by the user
};
Q_DECLARE_FLAGS(Flags, Flag)
@@ -70,14 +69,9 @@ public:
QGraphicsWidget *item() const;
/*!
- * \brief Getter for the source position.
+ * \brief Getter for the starting offset to draw the item
*/
- QRectF sourceGeometry() const;
-
- /*!
- * \brief Getter for the target position.
- */
- QRectF targetGeometry() const;
+ QPointF sourceTranslate() const;
/*!
* \brief Getter for the state flags.
@@ -85,20 +79,11 @@ public:
Flags flags() const;
/*!
- * \brief Set a new target position.
+ * \brief Set a new starting offset to draw the item.
*
- * This will set the target geometry to the given rectangle, and set
- * source geometry to be the current item geometry
+ * This will set the starting offset for where to draw the item.
*/
- void setTargetGeometry(const QRectF &rect);
-
- /*!
- * \brief Set the current position, restarting the animation
- *
- * This will set the item's geometry to the rectangle and set the source
- * geometry, restarting the animation.
- */
- void setGeometry(const QRectF &rect);
+ void setSourceTranslatePoint(const QPointF &translatePoint);
/*!
* \brief set a new target opacity.
@@ -166,7 +151,7 @@ public:
* far into the geometry animation we are
* If this is set to -1, the geometry will not be changed.
*/
- qreal geometryProgress() const;
+ qreal translateProgress() const;
/*!
* \brief Current opacity progress for this item
@@ -186,7 +171,7 @@ public:
*
* The animator will use this value to set the geometry
*/
- void setGeometryProgress(qreal progress);
+ void setTransformProgress(qreal progress);
/*!
* \brief Set the current opacity progress for this item
@@ -200,7 +185,7 @@ public:
/** \brief Whether the animation is completed
*
- * Equivalent to geometryProgress() == 1 && opacityProgress == 1
+ * Equivalent to translateProgress() == 1 && opacityProgress == 1
*/
bool isAnimationDone() const;
void animationDone();
@@ -212,20 +197,11 @@ private:
QGraphicsWidget *m_item;
/*!
- * \brief The position of the item in the layout.
- *
- * This position is the one the item had before the currently
- * active change was issued.
- */
- QRectF m_sourceGeometry;
-
- /*!
- * \brief The position of the item in the layout.
+ * \brief The original offset to paint the item
*
- * This is the position the item should have once all in-flight
- * operations are finished.
+ * The item's translatePoint value is animated from this value to the (0,0).
*/
- QRectF m_targetGeometry;
+ QPointF m_sourceTranslate;
qreal m_sourceOpacity;
qreal m_targetOpacity;
@@ -239,7 +215,7 @@ private:
* \brief Current progress of animation of the geometry
* Between 0 and 1. 1 indicating finished.
*/
- qreal m_geometryProgress;
+ qreal m_translateProgress;
/*!
* \brief Current progress of animation of the opacity
* Between 0 and 1. 1 indicating finished.
diff --git a/src/corelib/layout/mlayout.cpp b/src/corelib/layout/mlayout.cpp
index dd26e65b..08d7900c 100644
--- a/src/corelib/layout/mlayout.cpp
+++ b/src/corelib/layout/mlayout.cpp
@@ -39,9 +39,8 @@ MLayout::MLayout(QGraphicsLayoutItem *parent) :
QSizePolicy newSizePolicy(sizePolicy());
newSizePolicy.setHeightForWidth(true);
setSizePolicy(newSizePolicy);
- // Disabling layout animations by default. Unfortunately they are not working
- // nicely.
- //new MBasicLayoutAnimation(this);
+ // Disabling layout animations by default
+ // new MBasicLayoutAnimation(this);
}
MLayout::~MLayout()
@@ -122,9 +121,19 @@ QGraphicsLayoutItem *MLayout::takeAt(int index)
bool toBeDeleted = d->items.at(index).toBeDeleted;
QGraphicsLayoutItem *item = d->items.at(index).item;
Q_ASSERT(item);
+ //First remove the item from all the policies, then update the indexes using aboutToBeRemovedFromLayout
+ //We cannot do this in once pass since removeAt() is virtual and can do pretty much anything
foreach(MAbstractLayoutPolicy * policy, d->policies) {
Q_ASSERT(policy);
- policy->d_ptr->aboutToBeRemovedFromLayout(item);
+ int policyIndex = policy->indexOf(item);
+ if (policyIndex >= 0 ) {
+ policy->d_ptr->removingFromLayout = true; //Indicate to the policy to remove the item but not to hide it
+ policy->removeAt(policyIndex);
+ policy->d_ptr->removingFromLayout = false;
+ }
+ }
+ foreach(MAbstractLayoutPolicy * policy, d->policies) {
+ policy->d_ptr->aboutToBeRemovedFromLayout(index);
}
if (d->animation)
d->animation->itemRemovedFromLayout(index);
@@ -136,7 +145,8 @@ QGraphicsLayoutItem *MLayout::takeAt(int index)
delete item;
return NULL;
}
- d->removeHiddenFlag(item);
+ /* We cannot actually show the item as it might be in the process of being deleted */
+ d->removeHiddenFlag(item->graphicsItem());
return item;
}
diff --git a/src/corelib/layout/mlayout_p.cpp b/src/corelib/layout/mlayout_p.cpp
index 488a4153..957018b5 100644
--- a/src/corelib/layout/mlayout_p.cpp
+++ b/src/corelib/layout/mlayout_p.cpp
@@ -191,8 +191,10 @@ void MLayoutPrivate::recheckOrientation() {
}
}
}
-void MLayoutPrivate::showItemNow(QGraphicsItem *graphicsItem)
+void MLayoutPrivate::showItemNow(QGraphicsItem *graphicsItem) const
{
+ if(!graphicsItem)
+ return;
MWidget *widget = dynamic_cast<MWidget *>(graphicsItem);
if (widget) {
widget->d_ptr->layoutHidden = false;
@@ -201,13 +203,13 @@ void MLayoutPrivate::showItemNow(QGraphicsItem *graphicsItem)
} else
graphicsItem->show(); //Show always for non-mwidgets
}
-void MLayoutPrivate::removeHiddenFlag(QGraphicsLayoutItem *layoutItem)
+void MLayoutPrivate::removeHiddenFlag(QGraphicsItem *graphicsItem) const
{
- MWidget *widget = dynamic_cast<MWidget *>(layoutItem->graphicsItem());
+ MWidget *widget = dynamic_cast<MWidget *>(graphicsItem);
if (widget)
widget->d_ptr->layoutHidden = false;
}
-void MLayoutPrivate::hideItemNow(QGraphicsItem *graphicsItem)
+void MLayoutPrivate::hideItemNow(QGraphicsItem *graphicsItem) const
{
graphicsItem->hide();
MWidget *widget = dynamic_cast<MWidget *>(graphicsItem);
diff --git a/src/corelib/layout/mlayout_p.h b/src/corelib/layout/mlayout_p.h
index a2aec4fc..ea191389 100644
--- a/src/corelib/layout/mlayout_p.h
+++ b/src/corelib/layout/mlayout_p.h
@@ -94,11 +94,11 @@ public:
QGraphicsItem *parentItem() const;
/** Hide the given item, setting a flag in MWidget to indicate that the layout hid it */
- void hideItemNow(QGraphicsItem *layoutItem);
+ void hideItemNow(QGraphicsItem *layoutItem) const;
/** Show the given item if it was hidden by the layout, clearing the flag in MWidget to indicate that the layout unhid it */
- void showItemNow(QGraphicsItem *layoutItem);
+ void showItemNow(QGraphicsItem *layoutItem) const;
/** Only clear the flag in MWidget */
- void removeHiddenFlag(QGraphicsLayoutItem *layoutItem);
+ void removeHiddenFlag(QGraphicsItem *layoutItem) const;
/** This is called when the widget's orientation has changed (probably because the device has been rotated) */
void setOrientation(M::Orientation orientation);
/** Check the closest parent widget's scene to find out what orientation we are in */
diff --git a/src/corelib/layout/mlinearlayoutpolicy.cpp b/src/corelib/layout/mlinearlayoutpolicy.cpp
index 72f77a99..5a34bad1 100644
--- a/src/corelib/layout/mlinearlayoutpolicy.cpp
+++ b/src/corelib/layout/mlinearlayoutpolicy.cpp
@@ -106,9 +106,13 @@ void MLinearLayoutPolicy::setStretchFactor(QGraphicsLayoutItem *item, int stretc
mWarning("MLinearLayoutPolicy") << Q_FUNC_INFO << "cannot assign a stretch factor to a null item";
return;
}
- if (stretchFactor(item) == stretch)
+
+ QGraphicsLayoutItem *proxyItem = d->engine->itemAt(indexOf(item));
+
+ if (d->engine->stretchFactor(proxyItem) == stretch)
return;
- d->engine->setStretchFactor(item, stretch);
+
+ d->engine->setStretchFactor(proxyItem, stretch);
invalidatePolicyAndLayout();
}
int MLinearLayoutPolicy::stretchFactor(QGraphicsLayoutItem *item) const
@@ -118,7 +122,8 @@ int MLinearLayoutPolicy::stretchFactor(QGraphicsLayoutItem *item) const
mWarning("MLinearLayoutPolicy") << Q_FUNC_INFO << "cannot return a stretch factor for a null item";
return 0;
}
- return d->engine->stretchFactor(item);
+ QGraphicsLayoutItem *proxyItem = d->engine->itemAt(indexOf(item));
+ return d->engine->stretchFactor(proxyItem);
}
void MLinearLayoutPolicy::setOrientation(Qt::Orientation orientation)
diff --git a/src/corelib/painting/mbackgroundtiles.cpp b/src/corelib/painting/mbackgroundtiles.cpp
index 53883ec9..5a70804c 100644
--- a/src/corelib/painting/mbackgroundtiles.cpp
+++ b/src/corelib/painting/mbackgroundtiles.cpp
@@ -38,6 +38,9 @@ const QString TILE_POSTFIX[16] = {
MBackgroundTilesPrivate::MBackgroundTilesPrivate() :
refCount(1)
{
+ for(int i=0; i<16; ++i) {
+ tiles[i] = 0;
+ }
}
MBackgroundTilesPrivate::~MBackgroundTilesPrivate()
diff --git a/src/corelib/scene/mscene.cpp b/src/corelib/scene/mscene.cpp
index 4b20d939..dc9e1f9d 100644
--- a/src/corelib/scene/mscene.cpp
+++ b/src/corelib/scene/mscene.cpp
@@ -52,6 +52,8 @@ const int GesturePointSize = 4;
MScenePrivate::MScenePrivate() :
+ q_ptr(0),
+ manager(0),
emuPoint1(1),
emuPoint2(2),
panEmulationEnabled(false),
diff --git a/src/corelib/scene/mscene.h b/src/corelib/scene/mscene.h
index d0f42359..ffff914f 100644
--- a/src/corelib/scene/mscene.h
+++ b/src/corelib/scene/mscene.h
@@ -45,12 +45,12 @@ class MWindowPrivate;
- Emulation of multitouch events for single-touch enviroments, as in a development environment.
- Calcuation of the widget on-display property, see MWidget::isOnDisplay()
- Development mode visual overlays, providing information to help debug applications:
- - Bounding rectangles, toggled by <Ctrl>-B
- - Margins, toggled by <Ctrl>-M
- - Positions, toggled by <Ctrl>-P
- - Sizes, toggled by <Ctrl>-S
- - Object names, toggled by <Ctrl>-N
- - Frames per second, toggled by <Ctrl>-F
+ - Bounding rectangles, toggled by <Ctrl>-<Shift>-B
+ - Margins, toggled by <Ctrl>-<Shift>-M
+ - Positions, toggled by <Ctrl>-<Shift>-P
+ - Sizes, toggled by <Ctrl>-<Shift>-S
+ - Object names, toggled by <Ctrl>-<Shift>-N
+ - Frames per second, toggled by <Ctrl>-<Shift>-F
\sa MWindow, MApplicationWindow
*/
diff --git a/src/corelib/scene/mscenelayereffect.cpp b/src/corelib/scene/mscenelayereffect.cpp
index 18f4ac89..9f45f9f2 100644
--- a/src/corelib/scene/mscenelayereffect.cpp
+++ b/src/corelib/scene/mscenelayereffect.cpp
@@ -22,6 +22,7 @@
#include "mscenelayereffect.h"
#include "mscenelayereffect_p.h"
#include "mscenelayereffectmodel.h"
+#include "mwidgetfadeanimation.h"
#include "mwidgetcreator.h"
M_REGISTER_WIDGET_NO_CREATE(MSceneLayerEffect)
@@ -29,6 +30,15 @@ M_REGISTER_WIDGET_NO_CREATE(MSceneLayerEffect)
MSceneLayerEffectPrivate::MSceneLayerEffectPrivate()
{
layerPressedDirectly = false;
+
+ MWidgetFadeAnimation *fadeInAnimation = new MWidgetFadeAnimation;
+ fadeInAnimation->setTransitionDirection(MWidgetFadeAnimation::In);
+
+ MWidgetFadeAnimation *fadeOutAnimation = new MWidgetFadeAnimation;
+ fadeOutAnimation->setTransitionDirection(MWidgetFadeAnimation::Out);
+
+ appearanceAnimation = fadeInAnimation;
+ disappearanceAnimation = fadeOutAnimation;
}
MSceneLayerEffectPrivate::~MSceneLayerEffectPrivate()
@@ -40,6 +50,10 @@ MSceneLayerEffect::MSceneLayerEffect(const QString &effectType)
new MSceneLayerEffectModel(), MSceneWindow::LayerEffect,
effectType)
{
+ Q_D(MSceneLayerEffect);
+
+ d->appearanceAnimation->setTargetWidget(this);
+ d->disappearanceAnimation->setTargetWidget(this);
}
MSceneLayerEffect::~MSceneLayerEffect()
@@ -97,13 +111,3 @@ void MSceneLayerEffect::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
event->accept();
}
-
-void MSceneLayerEffect::enableEffect()
-{
- model()->setEnabled(true);
-}
-
-void MSceneLayerEffect::disableEffect()
-{
- model()->setEnabled(false);
-}
diff --git a/src/corelib/scene/mscenelayereffect.h b/src/corelib/scene/mscenelayereffect.h
index 8f2c12ef..5e064c3e 100644
--- a/src/corelib/scene/mscenelayereffect.h
+++ b/src/corelib/scene/mscenelayereffect.h
@@ -36,10 +36,6 @@ public:
MSceneLayerEffect(const QString &effectType);
virtual ~MSceneLayerEffect();
-public Q_SLOTS:
- void enableEffect();
- void disableEffect();
-
protected:
//! \reimp
diff --git a/src/corelib/scene/mscenemanager.cpp b/src/corelib/scene/mscenemanager.cpp
index b5a0fe4c..ab574658 100644
--- a/src/corelib/scene/mscenemanager.cpp
+++ b/src/corelib/scene/mscenemanager.cpp
@@ -42,6 +42,7 @@
#include "mdockwidget.h"
#include "mescapebuttonpanel.h"
#include "mescapebuttonpanelmodel.h"
+#include "mobjectmenu.h"
#include "mapplication.h"
#include "mwindow.h"
#include "mapplicationwindow.h"
@@ -55,15 +56,13 @@
#include "morientationtracker.h"
#include "mbasicorientationanimation.h"
-#include "mnotificationanimation.h"
-#include "mscenefadeanimation.h"
+#include "mcrossfadedorientationanimation.h"
#include "mabstractwidgetanimation.h"
#include "mpageswitchanimation.h"
-#include <mwidgetslideinanimation.h>
-#include <mwidgetfadeinanimation.h>
-#include <mwidgetslideoutanimation.h>
-#include <mwidgetfadeoutanimation.h>
+#include <mwidgetslideanimation.h>
+#include <mwidgetfadeanimation.h>
+#include <mwidgetzoomanimation.h>
namespace
{
@@ -115,13 +114,7 @@ void MSceneManagerPrivate::init(MScene *scene)
rootElement->setTransformOriginPoint(QPointF(q->visibleSceneSize().width() / 2.0, q->visibleSceneSize().height() / 2.0));
scene->addItem(rootElement);
- //TODO: get this from theme
- orientationAnimation = new MBasicOrientationAnimation(q->visibleSceneSize(M::Landscape));
- orientationAnimation->setRootElement(rootElement);
- q->connect(orientationAnimation, SIGNAL(orientationChanged()), SLOT(_q_changeGlobalOrientationAngle()));
- q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_emitOrientationChangeFinished()));
- q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_applyQueuedSceneWindowTransitions()));
- q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_triggerAsyncPendingOrientationChange()));
+ createOrientationAnimation();
// The scene manager should only listen to region updates from one instance, to prevent
// conflicting window relocation requests. Since MIMS is a singleton, enforcing
@@ -132,11 +125,33 @@ void MSceneManagerPrivate::init(MScene *scene)
q, SLOT(_q_relocateWindowByInputPanel(QRect)),
Qt::UniqueConnection);
+ q->connect(q, SIGNAL(orientationChangeFinished(M::Orientation)),
+ q, SLOT(ensureCursorVisible()),
+ Qt::UniqueConnection);
+
pageSwitchAnimation = new MPageSwitchAnimation;
setOrientationAngleWithoutAnimation(newAngle);
}
+void MSceneManagerPrivate::createOrientationAnimation()
+{
+ Q_Q(MSceneManager);
+
+ QRectF visibleSceneRect = QRectF(QPointF(0.0, 0.0), q->visibleSceneSize(M::Landscape));
+
+ //TODO: get this from theme
+ orientationAnimation = new MCrossFadedOrientationAnimation(visibleSceneRect);
+ //orientationAnimation = new MBasicOrientationAnimation(q->visibleSceneSize(M::Landscape));
+
+ orientationAnimation->setRootElement(rootElement);
+
+ q->connect(orientationAnimation, SIGNAL(orientationChanged()), SLOT(_q_changeGlobalOrientationAngle()));
+ q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_emitOrientationChangeFinished()));
+ q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_applyQueuedSceneWindowTransitions()));
+ q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_triggerAsyncPendingOrientationChange()));
+}
+
MSceneManagerPrivate::~MSceneManagerPrivate()
{
delete windows;
@@ -386,6 +401,12 @@ void MSceneManagerPrivate::_q_relocateWindowByInputPanel(const QRect &inputPanel
{
Q_Q(MSceneManager);
+ const QRectF microFocusRect = q->scene()->inputMethodQuery(Qt::ImMicroFocus).toRectF();
+ // If the microfocus is invalid then the focused widget does not want to be relocated.
+ if (!microFocusRect.isValid()) {
+ return;
+ }
+
// This method is not responsible for restoring visibility when the input panel is closed -
// _q_inputPanelClosed() does that. Therefore, it is OK to also ignore empty rectangles here.
if (!focusedInputWidget || inputPanelRect.isEmpty()) {
@@ -404,7 +425,6 @@ void MSceneManagerPrivate::_q_relocateWindowByInputPanel(const QRect &inputPanel
visibleRect.setHeight(visibleRect.height() - obstructedHeight);
// Always try to center the input focus into the remaining visible rectangle.
- const QRectF microFocusRect = q->scene()->inputMethodQuery(Qt::ImMicroFocus).toRectF();
int adjustment = (rootElement->mapRectFromScene(microFocusRect).toRect().center() -
visibleRect.center()).y();
@@ -418,7 +438,7 @@ void MSceneManagerPrivate::_q_relocateWindowByInputPanel(const QRect &inputPanel
void MSceneManagerPrivate::_q_restoreSceneWindow()
{
- if (alteredSceneWindow && !focusedInputWidget) {
+ if (alteredSceneWindow) {
sceneWindowTranslation *= -1;
alteredSceneWindow->moveBy(sceneWindowTranslation.x(), sceneWindowTranslation.y());
sceneWindowTranslation = QPoint();
@@ -863,9 +883,7 @@ void MSceneManagerPrivate::prepareWindowShow(MSceneWindow *window)
setSceneWindowGeometry(window);
MSceneLayerEffect *effect = createLayerEffectForWindow(window);
- if (effect) {
- effect->enableEffect();
- } else {
+ if (!effect) {
// window could have been added to another scene manually beforehand
// remove it in that case, to avoid Qt's assert
if (window->scene() && window->scene() != scene)
@@ -1022,7 +1040,7 @@ void MSceneManagerPrivate::appearSceneWindow(MSceneWindow *window,
if (animatedTransition) {
if (!window->d_func()->appearanceAnimation)
createAppearanceAnimationForSceneWindow(window);
- window->d_func()->appearanceAnimation->start();
+ window->d_func()->appearanceAnimation->start(QAbstractAnimation::DeleteWhenStopped);
} else {
emit window->appeared();
}
@@ -1039,10 +1057,6 @@ void MSceneManagerPrivate::prepareWindowHide(MSceneWindow *window)
orientationAnimation->removeSceneWindow(window);
window->d_func()->shown = false;
- if (window->d_func()->effect) {
- window->d_func()->effect->disableEffect();
- }
-
// Check whether we are trying to hide a window while it is in the middle of
// a show animation. If that's the case, we stop it.
if (window->d_func()->appearanceAnimation) {
@@ -1092,7 +1106,7 @@ void MSceneManagerPrivate::disappearSceneWindow(MSceneWindow *window,
if (animatedTransition) {
if (!window->d_func()->disappearanceAnimation)
createDisappearanceAnimationForSceneWindow(window);
- window->d_func()->disappearanceAnimation->start();
+ window->d_func()->disappearanceAnimation->start(QAbstractAnimation::DeleteWhenStopped);
} else {
emit window->disappeared();
}
@@ -1161,15 +1175,46 @@ void MSceneManagerPrivate::createAppearanceAnimationForSceneWindow(MSceneWindow
case MSceneWindow::NotificationEvent:
case MSceneWindow::ApplicationMenu:
case MSceneWindow::NavigationBar:
- case MSceneWindow::PopupList:
- animation = new MWidgetSlideInAnimation(sceneWindow);
+ case MSceneWindow::PopupList: {
+ MWidgetSlideAnimation *slideInAnimation = new MWidgetSlideAnimation(sceneWindow);
+ slideInAnimation->setTransitionDirection(MWidgetSlideAnimation::In);
+ animation = slideInAnimation;
+ break;
+ }
+ case MSceneWindow::MessageBox: {
+ MWidgetZoomAnimation *objectMenuAnimation =
+ new MWidgetZoomAnimation(sceneWindow);
+
+ objectMenuAnimation->setOrigin(sceneWindow->boundingRect().center());
+ objectMenuAnimation->setTransitionDirection(MWidgetZoomAnimation::In);
+
+ animation = objectMenuAnimation;
break;
- default:
- animation = new MWidgetFadeInAnimation(sceneWindow);
+ }
+ case MSceneWindow::ObjectMenu: {
+ MWidgetZoomAnimation *objectMenuAnimation =
+ new MWidgetZoomAnimation(sceneWindow);
+
+ MObjectMenu *objectMenu = static_cast<MObjectMenu*>(sceneWindow);
+ objectMenuAnimation->setOrigin(rootElement->mapFromScene(objectMenu->cursorPosition()));
+ objectMenuAnimation->setTransitionDirection(MWidgetZoomAnimation::In);
+ animation = objectMenuAnimation;
break;
+ }
+ default: {
+ MWidgetFadeAnimation *fadeInAnimation = new MWidgetFadeAnimation(sceneWindow);
+ fadeInAnimation->setTransitionDirection(MWidgetFadeAnimation::In);
+ animation = fadeInAnimation;
+ break;
+ }
}
animation->setTargetWidget(sceneWindow);
+
+ MSceneWindow *effect = sceneWindow->d_func()->effect;
+ if (effect)
+ animation->addAnimation(effect->d_func()->appearanceAnimation);
+
sceneWindow->connect(animation, SIGNAL(finished()), SIGNAL(appeared()));
sceneWindow->d_func()->appearanceAnimation = animation;
}
@@ -1186,15 +1231,47 @@ void MSceneManagerPrivate::createDisappearanceAnimationForSceneWindow(MSceneWind
case MSceneWindow::NotificationEvent:
case MSceneWindow::ApplicationMenu:
case MSceneWindow::NavigationBar:
- case MSceneWindow::PopupList:
- animation = new MWidgetSlideOutAnimation(sceneWindow);
+ case MSceneWindow::PopupList: {
+ MWidgetSlideAnimation *slideOutAnimation = new MWidgetSlideAnimation(sceneWindow);
+ slideOutAnimation->setTransitionDirection(MWidgetSlideAnimation::Out);
+ animation = slideOutAnimation;
break;
- default:
- animation = new MWidgetFadeOutAnimation(sceneWindow);
+ }
+ case MSceneWindow::MessageBox: {
+ MWidgetZoomAnimation *zoomAnimation =
+ new MWidgetZoomAnimation(sceneWindow);
+
+ zoomAnimation->setOrigin(sceneWindow->boundingRect().center());
+ zoomAnimation->setTransitionDirection(MWidgetZoomAnimation::Out);
+
+ animation = zoomAnimation;
break;
+ }
+ case MSceneWindow::ObjectMenu: {
+ MWidgetZoomAnimation *zoomAnimation =
+ new MWidgetZoomAnimation(sceneWindow);
+
+ MObjectMenu *objectMenu = static_cast<MObjectMenu*>(sceneWindow);
+ zoomAnimation->setOrigin(rootElement->mapFromScene(objectMenu->cursorPosition()));
+ zoomAnimation->setTransitionDirection(MWidgetZoomAnimation::Out);
+
+ animation = zoomAnimation;
+ break;
+ }
+ default: {
+ MWidgetFadeAnimation *fadeOutAnimation = new MWidgetFadeAnimation(sceneWindow);
+ fadeOutAnimation->setTransitionDirection(MWidgetFadeAnimation::Out);
+ animation = fadeOutAnimation;
+ break;
+ }
}
animation->setTargetWidget(sceneWindow);
+
+ MSceneWindow *effect = sceneWindow->d_func()->effect;
+ if (effect)
+ animation->addAnimation(effect->d_func()->disappearanceAnimation);
+
sceneWindow->connect(animation, SIGNAL(finished()), SIGNAL(disappeared()));
sceneWindow->d_func()->disappearanceAnimation = animation;
}
diff --git a/src/corelib/scene/mscenemanager_p.h b/src/corelib/scene/mscenemanager_p.h
index af4533ed..4421b52e 100644
--- a/src/corelib/scene/mscenemanager_p.h
+++ b/src/corelib/scene/mscenemanager_p.h
@@ -34,7 +34,7 @@ class MSceneWindow;
class MSceneLayerEffect;
class MSceneManager;
class MNavigationBar;
-class MBasicOrientationAnimation;
+class MOrientationAnimation;
class MPageSwitchAnimation;
class MWindow;
@@ -125,6 +125,8 @@ public:
QRectF calculateAvailableSceneRect(MSceneWindow *window);
+ void createOrientationAnimation();
+
void createAppearanceAnimationForSceneWindow(MSceneWindow *sceneWindow);
void createDisappearanceAnimationForSceneWindow(MSceneWindow *sceneWindow);
@@ -156,7 +158,7 @@ public:
MScene *scene;
QGraphicsWidget *rootElement;
- MBasicOrientationAnimation *orientationAnimation;
+ MOrientationAnimation *orientationAnimation;
MPageSwitchAnimation *pageSwitchAnimation;
QList<MSceneWindow *> *windows;
diff --git a/src/corelib/style/manimationstyle.h b/src/corelib/style/manimationstyle.h
index e01816c6..a488c291 100644
--- a/src/corelib/style/manimationstyle.h
+++ b/src/corelib/style/manimationstyle.h
@@ -28,7 +28,7 @@ class M_EXPORT MAnimationStyle : public MStyle
M_STYLE_INTERNAL(MAnimationStyle)
};
-class MAnimationStyleContainer : public MStyleContainer
+class M_EXPORT MAnimationStyleContainer : public MStyleContainer
{
M_STYLE_CONTAINER_INTERNAL(MAnimationStyle)
};
diff --git a/src/corelib/style/mbasiclayoutanimationstyle.h b/src/corelib/style/mbasiclayoutanimationstyle.h
index 4debcc9c..12bb2ec1 100644
--- a/src/corelib/style/mbasiclayoutanimationstyle.h
+++ b/src/corelib/style/mbasiclayoutanimationstyle.h
@@ -25,18 +25,17 @@
#include <QtGlobal>
#include <QEasingCurve>
-class M_EXPORT MBasicLayoutAnimationStyle : public MLayoutAnimationStyle
+class MBasicLayoutAnimationStyle : public MLayoutAnimationStyle
{
Q_OBJECT
M_STYLE_INTERNAL(MBasicLayoutAnimationStyle)
M_STYLE_ATTRIBUTE(int, duration, Duration)
- M_STYLE_ATTRIBUTE(QEasingCurve, geometryEasingCurve, GeometryEasingCurve)
+ M_STYLE_ATTRIBUTE(QEasingCurve, xTranslationEasingCurve, XTranslationEasingCurve)
+ M_STYLE_ATTRIBUTE(QEasingCurve, yTranslationEasingCurve, YTranslationEasingCurve)
M_STYLE_ATTRIBUTE(QEasingCurve, opacityEasingCurve, OpacityEasingCurve)
M_STYLE_ATTRIBUTE(qreal, initialShowingOpacity, InitialShowingOpacity)
- M_STYLE_ATTRIBUTE(qreal, initialShowingScaleFactor, InitialShowingScaleFactor)
M_STYLE_ATTRIBUTE(qreal, finalHidingOpacity, FinalHidingOpacity)
- M_STYLE_ATTRIBUTE(qreal, finalHidingScaleFactor, FinalHidingScaleFactor)
};
// TODO: get rid of this container
diff --git a/src/corelib/style/mcrossfadedorientationanimationstyle.h b/src/corelib/style/mcrossfadedorientationanimationstyle.h
new file mode 100644
index 00000000..ab0e0964
--- /dev/null
+++ b/src/corelib/style/mcrossfadedorientationanimationstyle.h
@@ -0,0 +1,47 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MCROSSFADEDORIENTATIONANIMATIONSTYLE_H
+#define MCROSSFADEDORIENTATIONANIMATIONSTYLE_H
+
+#include <manimationstyle.h>
+
+#include <QPointF>
+#include <QEasingCurve>
+
+//! \internal
+class MCrossFadedOrientationAnimationStyle: public MAnimationStyle
+{
+ Q_OBJECT
+ M_STYLE_INTERNAL(MCrossFadedOrientationAnimationStyle)
+
+ M_STYLE_ATTRIBUTE(int, duration, Duration)
+ M_STYLE_ATTRIBUTE(QPointF, rotationPoint, RotationPoint)
+ M_STYLE_ATTRIBUTE(QEasingCurve, rotationEasingCurve, RotationEasingCurve)
+ M_STYLE_ATTRIBUTE(QEasingCurve, translationEasingCurve, TranslationEasingCurve)
+ M_STYLE_ATTRIBUTE(QEasingCurve, fadingEasingCurve, FadingEasingCurve)
+};
+
+class MCrossFadedOrientationAnimationStyleContainer : public MAnimationStyleContainer
+{
+ M_STYLE_CONTAINER_INTERNAL(MCrossFadedOrientationAnimationStyle)
+};
+//! \internal_end
+
+#endif
diff --git a/src/corelib/style/mstylesheetparser.cpp b/src/corelib/style/mstylesheetparser.cpp
index 887ea32b..9282a1ff 100644
--- a/src/corelib/style/mstylesheetparser.cpp
+++ b/src/corelib/style/mstylesheetparser.cpp
@@ -264,20 +264,25 @@ QChar MStyleSheetParserPrivate::read(QFile &stream, const QString &delimeters, Q
continue;
} else if (in[0] == '/' && in[1] == '*') {
stream.read(in, 2);
+ in[1] = 0;
// multi-line comment
- int count = 0;
QString comment;
// Read until we get "*/"
while (stream.atEnd() == false) {
stream.read(in, 1);
- if (count == 0 && in[0] == '*')
- count++;
- else if (count == 1 && in[0] == '/')
+ if (in[0] == '/' && in[1] == '*') {
break;
- else {
- comment += in[0];
- count = 0;
+ } else {
+ if(in[1] == '*') {
+ comment += in[1];
+ }
+ if(in[0] == '*') {
+ in[1] = '*';
+ } else {
+ in[1] = 0;
+ comment += in[0];
+ }
}
}
//mDebug("MStyleSheetParserPrivate") << "Skipping comment:" << comment;
@@ -1202,8 +1207,11 @@ int MStyleSheetParser::getLineNum(QFile &stream, const qint64 &streamPos)
int MStyleSheetParser::getLineNum(const QString &filename, const qint64 &streamPos)
{
QFile file(filename);
- file.open(QFile::ReadOnly);
- return getLineNum(file, streamPos);
+ if ( file.open(QFile::ReadOnly) ) {
+ return getLineNum(file, streamPos);
+ } else {
+ return 0;
+ }
}
diff --git a/src/corelib/style/mwidgetfadeinanimationstyle.h b/src/corelib/style/mwidgetfadeanimationstyle.h
index e3d98b65..27fac88c 100644
--- a/src/corelib/style/mwidgetfadeinanimationstyle.h
+++ b/src/corelib/style/mwidgetfadeanimationstyle.h
@@ -17,25 +17,26 @@
**
****************************************************************************/
-#ifndef MWIDGETFADEINANIMATIONSTYLE_H
-#define MWIDGETFADEINANIMATIONSTYLE_H
+#ifndef MWIDGETFADEANIMATIONSTYLE_H
+#define MWIDGETFADEANIMATIONSTYLE_H
#include <mabstractwidgetanimationstyle.h>
#include <QEasingCurve>
//! \internal
-class M_EXPORT MWidgetFadeInAnimationStyle : public MAbstractWidgetAnimationStyle
+class MWidgetFadeAnimationStyle : public MAbstractWidgetAnimationStyle
{
Q_OBJECT
- M_STYLE_INTERNAL(MWidgetFadeInAnimationStyle)
+ M_STYLE_INTERNAL(MWidgetFadeAnimationStyle)
+ M_STYLE_ATTRIBUTE(int, delay, Delay)
M_STYLE_ATTRIBUTE(qreal, opacity, Opacity)
M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
};
-class MWidgetFadeInAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
+class MWidgetFadeAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
{
- M_STYLE_CONTAINER_INTERNAL(MWidgetFadeInAnimationStyle)
+ M_STYLE_CONTAINER_INTERNAL(MWidgetFadeAnimationStyle)
};
//! \internal_end
diff --git a/src/corelib/style/mwidgetzoominanimationstyle.h b/src/corelib/style/mwidgetslideanimationstyle.h
index f06e4647..ef419d90 100644
--- a/src/corelib/style/mwidgetzoominanimationstyle.h
+++ b/src/corelib/style/mwidgetslideanimationstyle.h
@@ -17,24 +17,26 @@
**
****************************************************************************/
-#ifndef MWIDGETZOOMINANIMATIONSTYLE_H
-#define MWIDGETZOOMINANIMATIONSTYLE_H
+#ifndef MWIDGETSLIDEANIMATIONSTYLE_H
+#define MWIDGETSLIDEANIMATIONSTYLE_H
#include <mabstractwidgetanimationstyle.h>
#include <QEasingCurve>
//! \internal
-class MWidgetZoomInAnimationStyle : public MAbstractWidgetAnimationStyle
+class MWidgetSlideAnimationStyle : public MAbstractWidgetAnimationStyle
{
Q_OBJECT
- M_STYLE_INTERNAL(MWidgetZoomInAnimationStyle)
+ M_STYLE_INTERNAL(MWidgetSlideAnimationStyle)
+ M_STYLE_ATTRIBUTE(int, delay, Delay)
+ M_STYLE_ATTRIBUTE(QString, origin, Origin)
M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
};
-class MWidgetZoomInAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
+class MWidgetSlideAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
{
- M_STYLE_CONTAINER_INTERNAL(MWidgetZoomInAnimationStyle)
+ M_STYLE_CONTAINER_INTERNAL(MWidgetSlideAnimationStyle)
};
//! \internal_end
diff --git a/src/corelib/style/mwidgetslideoutanimationstyle.h b/src/corelib/style/mwidgetslideoutanimationstyle.h
deleted file mode 100644
index 9eaf18c1..00000000
--- a/src/corelib/style/mwidgetslideoutanimationstyle.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETSLIDEOUTANIMATIONSTYLE_H
-#define MWIDGETSLIDEOUTANIMATIONSTYLE_H
-
-#include <mabstractwidgetanimationstyle.h>
-#include <QEasingCurve>
-
-//! \internal
-class MWidgetSlideOutAnimationStyle : public MAbstractWidgetAnimationStyle
-{
- Q_OBJECT
- M_STYLE_INTERNAL(MWidgetSlideOutAnimationStyle)
-
- M_STYLE_ATTRIBUTE(QString, to, To)
- M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
-};
-
-class MWidgetSlideOutAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
-{
- M_STYLE_CONTAINER_INTERNAL(MWidgetSlideOutAnimationStyle)
-};
-//! \internal_end
-
-#endif
diff --git a/src/corelib/style/mwidgetstyle.h b/src/corelib/style/mwidgetstyle.h
index 8da0c637..06d20a8c 100644
--- a/src/corelib/style/mwidgetstyle.h
+++ b/src/corelib/style/mwidgetstyle.h
@@ -67,7 +67,7 @@ class M_EXPORT MWidgetStyle : public MStyle
M_STYLE_ATTRIBUTE(MFeedback, pressFeedback, PressFeedback)
M_STYLE_ATTRIBUTE(MFeedback, releaseFeedback, ReleaseFeedback)
-
+ M_STYLE_ATTRIBUTE(MFeedback, cancelFeedback, CancelFeedback)
};
class M_EXPORT MWidgetStyleContainer : public MStyleContainer
diff --git a/src/corelib/style/mwidgetzoomanimationstyle.h b/src/corelib/style/mwidgetzoomanimationstyle.h
new file mode 100644
index 00000000..0e3152a8
--- /dev/null
+++ b/src/corelib/style/mwidgetzoomanimationstyle.h
@@ -0,0 +1,52 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MWIDGETZOOMANIMATIONSTYLE_H
+#define MWIDGETZOOMANIMATIONSTYLE_H
+
+#include <manimationstyle.h>
+#include <QEasingCurve>
+
+//! \internal
+class MWidgetZoomAnimationStyle: public MAnimationStyle
+{
+ Q_OBJECT
+ M_STYLE_INTERNAL(MWidgetZoomAnimationStyle)
+
+ M_STYLE_ATTRIBUTE(int, opacityAnimationDelay, opacityAnimationDelay)
+ M_STYLE_ATTRIBUTE(int, opacityAnimationDuration, opacityAnimationDuration)
+ M_STYLE_ATTRIBUTE(QEasingCurve, opacityAnimationEasingCurve, OpacityAnimationEasingCurve)
+
+ M_STYLE_ATTRIBUTE(int, scaleAnimationDuration, scaleAnimationDuration)
+ M_STYLE_ATTRIBUTE(QEasingCurve, scaleAnimationEasingCurve, ScaleAnimationEasingCurve)
+
+ M_STYLE_ATTRIBUTE(int, delay, Delay)
+ M_STYLE_ATTRIBUTE(qreal, scale, Scale)
+ M_STYLE_ATTRIBUTE(qreal, opacity, Opacity)
+ M_STYLE_ATTRIBUTE(qreal, positionAnimationDistanceFactor, PositionAnimationDistanceFactor)
+};
+
+class MWidgetZoomAnimationStyleContainer : public MAnimationStyleContainer
+{
+ M_STYLE_CONTAINER_INTERNAL(MWidgetZoomAnimationStyle)
+};
+//! \internal_end
+
+#endif
+
diff --git a/src/corelib/style/mwidgetzoomoutanimationstyle.h b/src/corelib/style/mwidgetzoomoutanimationstyle.h
deleted file mode 100644
index e241306d..00000000
--- a/src/corelib/style/mwidgetzoomoutanimationstyle.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/***************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (directui@nokia.com)
-**
-** This file is part of libmeegotouch.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at directui@nokia.com.
-**
-** This library is free software; you can redistribute it and/or
-** modify it under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation
-** and appearing in the file LICENSE.LGPL included in the packaging
-** of this file.
-**
-****************************************************************************/
-
-#ifndef MWIDGETZOOMOUTANIMATIONSTYLE_H
-#define MWIDGETZOOMOUTANIMATIONSTYLE_H
-
-#include <mabstractwidgetanimationstyle.h>
-#include <QEasingCurve>
-
-//! \internal
-class MWidgetZoomOutAnimationStyle : public MAbstractWidgetAnimationStyle
-{
- Q_OBJECT
- M_STYLE_INTERNAL(MWidgetZoomOutAnimationStyle)
-
- M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
-};
-
-class MWidgetZoomOutAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
-{
- M_STYLE_CONTAINER_INTERNAL(MWidgetZoomOutAnimationStyle)
-};
-//! \internal_end
-
-#endif
diff --git a/src/corelib/style/style.pri b/src/corelib/style/style.pri
index 5404daa9..1ec272cd 100644
--- a/src/corelib/style/style.pri
+++ b/src/corelib/style/style.pri
@@ -25,14 +25,12 @@ MGEN_STYLE_HEADERS += \
$$STYLE_SRC_DIR/manimationstyle.h \
$$STYLE_SRC_DIR/mscenewindowanimationstyle.h \
$$STYLE_SRC_DIR/mbasiclayoutanimationstyle.h \
+ $$STYLE_SRC_DIR/mcrossfadedorientationanimationstyle.h \
$$STYLE_SRC_DIR/mgroupanimationstyle.h \
$$STYLE_SRC_DIR/mlayoutanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetfadeinanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetfadeoutanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetslideinanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetslideoutanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetzoominanimationstyle.h \
- $$STYLE_SRC_DIR/mwidgetzoomoutanimationstyle.h \
+ $$STYLE_SRC_DIR/mwidgetfadeanimationstyle.h \
+ $$STYLE_SRC_DIR/mwidgetslideanimationstyle.h \
+ $$STYLE_SRC_DIR/mwidgetzoomanimationstyle.h \
$$STYLE_SRC_DIR/mpageswitchanimationstyle.h \
$$STYLE_SRC_DIR/mbasicorientationanimationstyle.h \
diff --git a/src/corelib/theme/mcommonpixmaps.cpp b/src/corelib/theme/mcommonpixmaps.cpp
index c91aeaef..b2e9aa17 100644
--- a/src/corelib/theme/mcommonpixmaps.cpp
+++ b/src/corelib/theme/mcommonpixmaps.cpp
@@ -169,9 +169,10 @@ void MCommonPixmaps::loadOne()
}
ImageResource *resource = daemon->findImageResource(id.imageId);
- if(!resource)
+ if (resource)
+ resource->fetchPixmap(id.size);
+ else
qFatal("MCommonPixmaps - Theme daemon could not find resource %s while loading most used pixmaps! Please re-install current theme or clear the preload.list file", qPrintable(id.imageId));
- resource->fetchPixmap(id.size);
} else {
// the cpu usage was too high, so start start the timer with longer delay
diff --git a/src/corelib/theme/mtheme.cpp b/src/corelib/theme/mtheme.cpp
index 354b86b3..c01962b4 100644
--- a/src/corelib/theme/mtheme.cpp
+++ b/src/corelib/theme/mtheme.cpp
@@ -70,25 +70,23 @@ MThemePrivate::RegisteredStyleContainers MThemePrivate::styleContainers;
namespace
{
+ // "default_pixmap_MyPixmap_47_47"
+ static QString defaultPixmapCacheId(const QString &name, int width, int height)
+ {
+ return QString::fromLatin1("default_pixmap_") + name
+ + QChar::fromLatin1('_') + QString::number(width)
+ + QChar::fromLatin1('_') + QString::number(height);
+ }
-// "default_pixmap_MyPixmap_47_47"
-static QString defaultPixmapCacheId(const QString &name, int width, int height)
-{
- return QString::fromLatin1("default_pixmap_") + name
- + QChar::fromLatin1('_') + QString::number(width)
- + QChar::fromLatin1('_') + QString::number(height);
-}
-
-// "scalable_image_myscalable_5_5_5_5
-static QString scalableImageCacheId(const QString &name, int left, int top, int right, int bottom)
-{
- return QString::fromLatin1("scalable_image_") + name
- + QChar::fromLatin1('_') + QString::number(left)
- + QChar::fromLatin1('_') + QString::number(top)
- + QChar::fromLatin1('_') + QString::number(right)
- + QChar::fromLatin1('_') + QString::number(bottom);
-}
-
+ // "scalable_image_myscalable_5_5_5_5
+ static QString scalableImageCacheId(const QString &name, int left, int top, int right, int bottom)
+ {
+ return QString::fromLatin1("scalable_image_") + name
+ + QChar::fromLatin1('_') + QString::number(left)
+ + QChar::fromLatin1('_') + QString::number(top)
+ + QChar::fromLatin1('_') + QString::number(right)
+ + QChar::fromLatin1('_') + QString::number(bottom);
+ }
} // anonymous namespace
MTheme::MTheme(const QString &applicationName, const QString &, ThemeService themeService) :
@@ -369,22 +367,23 @@ const MStyle *MTheme::style(const char *styleClassName,
// find proper library
MLibrary *library = d->libraries->value(assemblyName, NULL);
- if (!library) {
+ if (library) {
+ // use stylesheet from this library if there is one
+ if (library->stylesheet()) {
+ if (!sheets.contains(library->stylesheet())) {
+ sheets.insert(0, library->stylesheet());
+ }
+ }
+ } else {
mWarning("MTheme") << "Cannot find library. You must register your library to theming using M_LIBRARY macro." << '(' << assemblyName << ')';
Q_ASSERT_X(library, "MTheme", "Failed to find library");
}
- // use stylesheet from this library if there is one
- if (library->stylesheet()) {
- if (!sheets.contains(library->stylesheet())) {
- sheets.insert(0, library->stylesheet());
- }
- }
mobj = mobj->superClass();
} while (mobj->className() != QObject::staticMetaObject.className());
// add application css
- if (d->application.stylesheet())
- sheets.append(d->application.stylesheet());
+ if (d->application->stylesheet())
+ sheets.append(d->application->stylesheet());
// add custom stylesheet
if (d->customStylesheet)
@@ -490,10 +489,18 @@ bool MTheme::hasPendingRequests()
return instance()->d_ptr->themeDaemon->hasPendingRequests();
}
+void MThemePrivate::reinit(const QString &newApplicationName, const QString &, MTheme::ThemeService)
+{
+ delete application;
+ applicationName = newApplicationName;
+ application = new MAssembly(applicationName);
+ application->themeChanged(themeDaemon->themeInheritanceChain(), logicalValues);
+}
+
MThemePrivate::MThemePrivate(const QString &applicationName, MTheme::ThemeService themeService) :
applicationName(applicationName),
customStylesheet(NULL),
- application(applicationName),
+ application(new MAssembly(applicationName)),
palette(logicalValues),
fonts(logicalValues)
#ifdef HAVE_GCONF
@@ -530,6 +537,7 @@ MThemePrivate::MThemePrivate(const QString &applicationName, MTheme::ThemeServic
MThemePrivate::~MThemePrivate()
{
+ delete application;
delete themeDaemon;
delete invalidPixmap;
delete customStylesheet;
@@ -542,7 +550,7 @@ QString MThemePrivate::determineViewClassForController(const MWidgetController *
bool exactMatch = false;
// first search from application view configuration
- QString bestMatch = application.viewType(controller, exactMatch);
+ QString bestMatch = application->viewType(controller, exactMatch);
if (exactMatch)
return bestMatch;
@@ -619,7 +627,7 @@ void MThemePrivate::refreshLocalThemeConfiguration(const QStringList &themeInher
}
// refresh application theme data
- application.themeChanged(themeInheritance, logicalValues);
+ application->themeChanged(themeInheritance, logicalValues);
// cached data is no more valid
MStyleSheet::cleanup(false);
@@ -627,13 +635,22 @@ void MThemePrivate::refreshLocalThemeConfiguration(const QStringList &themeInher
void MThemePrivate::reloadThemeLibraries(const QStringList& libraryNames)
{
+ QString libsuffix;
+
+#ifdef Q_OS_WIN
+ // under windows the libraries are suffixed with a "0",
+ // e.g. meegotouchviews0.dll, so the 0 here is needed,
+ // so that the library can be loaded under windows.
+ libsuffix = "0";
+#endif
+
// store list of libraries that needs to be unloaded
QSet<QLibrary*> toUnload = openedThemeLibraries;
// load all new libraries (if the library is already loaded, it will ref the loaded one)
openedThemeLibraries.clear();
foreach(const QString& libname, libraryNames) {
- QLibrary* library = new QLibrary(libname);
+ QLibrary* library = new QLibrary(libname + libsuffix);
if(library->load()) {
openedThemeLibraries.insert(library);
} else {
diff --git a/src/corelib/theme/mtheme.h b/src/corelib/theme/mtheme.h
index 5e881130..a17de25a 100644
--- a/src/corelib/theme/mtheme.h
+++ b/src/corelib/theme/mtheme.h
@@ -40,6 +40,7 @@ class MStyleContainer;
class MLibrary;
class MPalette;
class MDefaultFonts;
+class MComponentData;
/*!
\class MTheme
@@ -133,11 +134,11 @@ public:
\sa releaseStyle
*/
static const MStyle *style(const char *styleClassName,
- const QString &objectName,
- const QString &mode,
- const QString &type,
- M::Orientation orientation,
- const MWidgetController *parent = NULL);
+ const QString &objectName,
+ const QString &mode,
+ const QString &type,
+ M::Orientation orientation,
+ const MWidgetController *parent = NULL);
/*!
This is an overloaded function.
@@ -145,7 +146,7 @@ public:
Returns the style object with the given \a styleClassName and \a objectName
*/
static const MStyle *style(const char *styleClassName,
- const QString &objectName = "");
+ const QString &objectName = "");
/*!
This method should be called on style objects when they are no longer needed.
@@ -319,6 +320,7 @@ private:
#endif
friend class MApplicationPrivate;
+ friend class MComponentData;
friend class MWidgetController;
friend class MStyle;
diff --git a/src/corelib/theme/mtheme_p.h b/src/corelib/theme/mtheme_p.h
index bd5fe503..32bf13c3 100644
--- a/src/corelib/theme/mtheme_p.h
+++ b/src/corelib/theme/mtheme_p.h
@@ -37,6 +37,7 @@ class MLibrary;
#include "mlogicalvalues.h"
#include "mpalette.h"
#include "mdefaultfonts.h"
+#include "mtheme.h"
// TODO: remove this with style profiling
#ifndef Q_OS_WIN
@@ -105,7 +106,7 @@ public:
static QHash<QString, MLibrary *>* libraries;
- MAssembly application;
+ MAssembly *application;
MLogicalValues logicalValues;
@@ -159,6 +160,11 @@ public:
void refreshLocalThemeConfiguration(const QStringList &themeInheritance);
void reloadThemeLibraries(const QStringList& libraryNames);
+ /*!
+ * Reinitializes the theme to correspond to the new application name
+ */
+ void reinit(const QString &applicationName, const QString &imglistFilename = QString(), MTheme::ThemeService themeService = MTheme::AnyTheme);
+
static void registerStyleContainer(MStyleContainer *container);
static void unregisterStyleContainer(MStyleContainer *container);
diff --git a/src/corelib/widgets/RichTextEditorToolbar1.xml b/src/corelib/widgets/RichTextEditorToolbar1.xml
new file mode 100644
index 00000000..f86843bc
--- /dev/null
+++ b/src/corelib/widgets/RichTextEditorToolbar1.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE MEEGO_IM_TOOLBAR_WIDGET SYSTEM 'VirtualKeyboardToolbarDTD.dtd'>
+<toolbar>
+ <button name="Underline" group="Styles" priority="0" showon="always" alignment="left" icon="" text="&lt;U&gt;U&lt;&#x002F;U&gt;" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+U"> </sendkeysequence>
+ </actions>
+ </button>
+ <button name="Italic" group="Styles" priority="0" showon="always" alignment="left" icon="" text="&lt;I&gt;I&lt;&#x002F;I&gt;" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+I"> </sendkeysequence>
+ </actions>
+ </button>
+ <button name="Bold" group="Styles" priority="0" showon="always" alignment="left" icon="" text="&lt;B&gt;B&lt;&#x002F;B&gt;" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+B"> </sendkeysequence>
+ </actions>
+ </button>
+ <button name="Paste" group="ClipboardOptions" priority="0" showon="always" alignment="right" icon="" text="Paste" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+V"> </sendkeysequence>
+ </actions>
+ </button>
+ <button name="Copy" group="ClipboardOptions" priority="0" showon="always" alignment="right" icon="" text="Copy" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+C"> </sendkeysequence>
+ </actions>
+ </button>
+ <button name="Cut" group="ClipboardOptions" priority="0" showon="always" alignment="right" icon="" text="Cut" text_id="">
+ <actions>
+ <sendkeysequence keysequence="Ctrl+X"> </sendkeysequence>
+ </actions>
+ </button>
+</toolbar>
diff --git a/src/corelib/widgets/core/mwidget.cpp b/src/corelib/widgets/core/mwidget.cpp
index b050c386..ae56f7c4 100644
--- a/src/corelib/widgets/core/mwidget.cpp
+++ b/src/corelib/widgets/core/mwidget.cpp
@@ -122,18 +122,20 @@ void MWidgetPrivate::sendOnDisplayChangeEvent(MWidget *widget, const QRectF *vis
QRectF widgetSceneRect = widget->sceneBoundingRect();
- if (visibleSceneRect && visibleSceneRect->intersects(widgetSceneRect)) {
- if (visibleSceneRect->contains(widgetSceneRect)) {
- event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::FullyOnDisplay, *visibleSceneRect);
+ if (visibleSceneRect) {
+ if (visibleSceneRect->intersects(widgetSceneRect)) {
+ if (visibleSceneRect->contains(widgetSceneRect)) {
+ event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::FullyOnDisplay, *visibleSceneRect);
+ } else {
+ event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::PartiallyOnDisplay, *visibleSceneRect);
+ }
} else {
- event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::PartiallyOnDisplay, *visibleSceneRect);
+ event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::FullyOffDisplay, *visibleSceneRect);
}
- } else {
- event = new MOnDisplayChangeEvent(MOnDisplayChangeEvent::FullyOffDisplay, *visibleSceneRect);
- }
- q->scene()->sendEvent(widget, event);
- delete event;
+ q->scene()->sendEvent(widget, event);
+ delete event;
+ }
}
void MWidgetPrivate::resolveIsOnDisplay(QGraphicsItem *item, const QRectF *visibleSceneRect)
@@ -319,6 +321,7 @@ void MWidget::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
if (hasObjectMenuActions) {
MObjectMenu *menu = new MObjectMenu(this);
+ menu->setCursorPosition(event->scenePos());
sceneManager()->appearSceneWindow(menu, MSceneWindow::DestroyWhenDone);
} else {
event->ignore();
@@ -455,3 +458,12 @@ void MWidget::setVisible(bool visible)
QGraphicsWidget::setVisible(visible);
}
+QPointF MWidget::paintOffset() const
+{
+ return QPointF(transform().dx(), transform().dy());
+}
+
+void MWidget::setPaintOffset(const QPointF &newOffset)
+{
+ setTransform(QTransform::fromTranslate(newOffset.x(), newOffset.y()));
+}
diff --git a/src/corelib/widgets/core/mwidget.h b/src/corelib/widgets/core/mwidget.h
index 4ea2ad62..5756e230 100644
--- a/src/corelib/widgets/core/mwidget.h
+++ b/src/corelib/widgets/core/mwidget.h
@@ -46,6 +46,8 @@ class M_EXPORT MWidget : public QGraphicsWidget
Q_PROPERTY(QSizePolicy sizePolicy READ sizePolicy WRITE setSizePolicy)
Q_PROPERTY(bool selected READ isSelected WRITE setSelected)
+ Q_PROPERTY(bool onDisplay READ isOnDisplay)
+ Q_PROPERTY(QPointF paintOffset READ paintOffset WRITE setPaintOffset)
public:
MWidget(QGraphicsItem *parent = 0);
@@ -76,6 +78,9 @@ public:
* Returning false means that currently this widget cannot be seen
* on the display in any way. E.g.: If the widget happens to be out of sight of all the
* QGraphicsViews that are rendering his scene.
+ *
+ * Its computational cost is significantly higher than that of a simple attribute
+ * getter such as isVisible().
*/
bool isOnDisplay() const;
@@ -85,6 +90,31 @@ public:
*/
bool isSelected() const;
+ /*!
+ Returns the offset by which the widget will be transformed when painted.
+
+ This convenience function is equivalent to querying the horizontal and
+ vertical translation factors of the widgets's transform().
+
+ \sa setPaintOffset()
+ */
+ QPointF paintOffset() const;
+
+ /*!
+ Sets the offset by which the widget will be transformed when painted.
+
+ This convenience function is equivalent to calling setTransform on the widget,
+ supplying a QTransform that shifts the widget by \a offset.
+
+ The paint offset allows for a widget to appear as if in a position
+ different than that of the widget's pos() property. This allows for example
+ to animate the widget's apparent location using a QPropertyAnimation
+ without affecting layouting or the layout affecting the animation.
+
+ \sa paintOffset()
+ */
+ void setPaintOffset(const QPointF & offset);
+
/*! \reimp
* We reimplement these to distinguish between the user hiding items
* explicitly, and the layout hiding them.
diff --git a/src/corelib/widgets/core/mwidgetcontroller.h b/src/corelib/widgets/core/mwidgetcontroller.h
index 1c12e72a..9836c65d 100644
--- a/src/corelib/widgets/core/mwidgetcontroller.h
+++ b/src/corelib/widgets/core/mwidgetcontroller.h
@@ -43,7 +43,7 @@ class MAbstractWidgetAnimation;
stores the widget's state in the model and delegates painting and event handling to the view.
Although the controller provides methods to set the view and model components, widgets derived from MWidgetController
- always provide an already initalised model while a view is constructed at the time it is needed unless otherwise explicitly
+ always provide an already initialised model while a view is constructed at the time it is needed unless otherwise explicitly
set.
*/
diff --git a/src/corelib/widgets/core/mwidgetview.cpp b/src/corelib/widgets/core/mwidgetview.cpp
index d8601a72..d2518ac0 100644
--- a/src/corelib/widgets/core/mwidgetview.cpp
+++ b/src/corelib/widgets/core/mwidgetview.cpp
@@ -366,6 +366,8 @@ void MWidgetView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
void MWidgetView::cancelEvent(MCancelEvent *event)
{
+ style()->cancelFeedback().play();
+
Q_UNUSED(event);
}
diff --git a/src/corelib/widgets/mabstractcellcreator.cpp b/src/corelib/widgets/mabstractcellcreator.cpp
index 929f6ded..0a9539ba 100644
--- a/src/corelib/widgets/mabstractcellcreator.cpp
+++ b/src/corelib/widgets/mabstractcellcreator.cpp
@@ -19,3 +19,13 @@
#include "mabstractcellcreator.h"
+// this hack is needed, because under windows
+// the template symbols are not exported...
+#ifdef Q_OS_WIN
+#include "mcontentitem.h"
+#include "mimagewidget.h"
+#include "mwidgetcontroller.h"
+template class MAbstractCellCreator<MContentItem>;
+template class MAbstractCellCreator<MImageWidget>;
+template class MAbstractCellCreator<MWidgetController>;
+#endif
diff --git a/src/corelib/widgets/mapplicationpage.h b/src/corelib/widgets/mapplicationpage.h
index e0067360..5d8de699 100644
--- a/src/corelib/widgets/mapplicationpage.h
+++ b/src/corelib/widgets/mapplicationpage.h
@@ -75,6 +75,42 @@ class MPannableViewport;
\endcode
centralWidget() returns MWidget, layout can be used to group more than one widget.
+
+ \section navigating-between-pages Navigating between pages.
+
+ Only one page can be displayed at any given time. The framework enforces this behavior.
+ Thus in order to make your application navigate to a child page all you have to do is
+ call the child's appear() method. That will automatically make the current page disappear
+ to make room for the child page that is starting to appear.
+
+ In an hypothetical music browser application, the following code snippet
+ would make it transition from the current album page to a child page displaying
+ one of its songs:
+
+ \code
+ class AlbumPage : public MApplicationPage {
+ ...
+ void displaySong(Song song) {
+ MApplicationPage *songPage = new SongPage(song);
+
+ // I don't need this page anymore after it gets dismissed
+ songPage->appear(MSceneWindow::DestroyWhenDismissed);
+ }
+ ...
+ };
+ \endcode
+
+ The code above will put AlbumPage onto the top of the page history's stack and make
+ SongPage be displayed. Since the escapeMode of the SongPage is MApplicationPageModel::EscapeAuto
+ (the default value) the escape button panel will automatically show a back button that, when clicked,
+ will bring the application back to the AlbumPage. Therefore no code is required to make your
+ application navigate back to its previous page.
+
+ To implement a different behavior for the escape button you have set the escapeMode of the page to either
+ MApplicationPageModel::EscapeManualBack or MApplicationPageModel::EscapeCloseWindow.
+
+ You can also check and manually modify the page navigation history of your application using the methods
+ MSceneManager::pageHistory() and MSceneManager::setPageHistory().
*/
class M_EXPORT MApplicationPage : public MSceneWindow
diff --git a/src/corelib/widgets/mapplicationwindow.cpp b/src/corelib/widgets/mapplicationwindow.cpp
index 70e8eac8..0d58e98c 100644
--- a/src/corelib/widgets/mapplicationwindow.cpp
+++ b/src/corelib/widgets/mapplicationwindow.cpp
@@ -41,6 +41,7 @@
#include "mapplication_p.h"
#include "mscene.h"
#include "mstatusbar.h"
+#include "mdeviceprofile.h"
#include <QList>
#include <QEvent>
@@ -83,12 +84,19 @@ MApplicationWindowPrivate::MApplicationWindowPrivate()
, homeButtonPanel(new MHomeButtonPanel)
, escapeButtonPanel(new MEscapeButtonPanel)
, menu(new MApplicationMenu)
- , statusBar(new MStatusBar)
, isMenuOpen(false)
- , callOngoing(false)
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ , callStatusProperty("Phone.Call")
+#endif
, showingStatusBar(false)
, showingDockWidget(false)
{
+ if(MDeviceProfile::instance()->showStatusbar()) {
+ statusBar = new MStatusBar;
+ }
+ else{
+ statusBar = NULL;
+ }
}
MApplicationWindowPrivate::~MApplicationWindowPrivate()
@@ -141,7 +149,7 @@ void MApplicationWindowPrivate::init()
q->connect(menu, SIGNAL(disappeared()),
q, SLOT(_q_menuDisappeared()));
- if (!MApplication::fullScreen()) {
+ if (!MApplication::fullScreen() && statusBar ) {
sceneManager->appearSceneWindowNow(statusBar);
}
@@ -163,16 +171,9 @@ void MApplicationWindowPrivate::init()
initAutoHideComponentsTimer();
-#ifdef HAVE_DBUS
- // TODO: Take that info from Context Framework instead,
- // once it becomes available.
- // Initialization of callOngoing variable is missing at the moment.
- QDBusConnection systemBus(QDBusConnection::systemBus());
- systemBus.connect("", "/com/nokia/csd/csnet",
- "com.nokia.csd.CSNet", "ActivityChanged", q,
- SLOT(_q_updateCallOngoingState(QString)));
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ q->connect(&callStatusProperty, SIGNAL(valueChanged()), SLOT(_q_updateStatusBarVisibility()));
#endif
-
q->connect(q, SIGNAL(orientationAngleChanged(M::OrientationAngle)),
SLOT(_q_updatePageExposedContentRect()));
}
@@ -214,33 +215,36 @@ void MApplicationWindowPrivate::initAutoHideComponentsTimer()
void MApplicationWindowPrivate::windowStateChangeEvent(QWindowStateChangeEvent *event)
{
Q_Q(MApplicationWindow);
- Q_ASSERT(statusBar != 0);
+ if (!statusBar)
+ return;
// Status bar should always be visible while a phone call is ongoing.
- if (!callOngoing) {
- if (q->isFullScreen() && !event->oldState().testFlag(Qt::WindowFullScreen)) {
- q->sceneManager()->disappearSceneWindowNow(statusBar);
- } else if (!q->isFullScreen() && event->oldState().testFlag(Qt::WindowFullScreen)) {
- q->sceneManager()->appearSceneWindowNow(statusBar);
- }
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ if (callStatusProperty.value().toString() == "active")
+ return;
+#endif
+
+ if (q->isFullScreen() && !event->oldState().testFlag(Qt::WindowFullScreen)) {
+ q->sceneManager()->disappearSceneWindowNow(statusBar);
+ } else if (!q->isFullScreen() && event->oldState().testFlag(Qt::WindowFullScreen)) {
+ q->sceneManager()->appearSceneWindowNow(statusBar);
}
}
-#ifdef HAVE_DBUS
-void MApplicationWindowPrivate::_q_updateCallOngoingState(QString mode)
+#ifdef HAVE_CONTEXTSUBSCRIBER
+void MApplicationWindowPrivate::_q_updateStatusBarVisibility()
{
Q_Q(MApplicationWindow);
-
+ if (!statusBar)
+ return;
// Status bar should always be visible while a phone call is ongoing.
- if (mode == "Call") {
- callOngoing = true;
- if (q->isFullScreen())
+ if (q->isFullScreen()) {
+ if (callStatusProperty.value().toString() == "active") {
q->sceneManager()->appearSceneWindowNow(statusBar);
- } else if (callOngoing) {
- callOngoing = false;
- if (q->isFullScreen())
+ } else {
q->sceneManager()->disappearSceneWindowNow(statusBar);
+ }
}
}
#endif
@@ -588,6 +592,8 @@ void MApplicationWindowPrivate::sceneWindowAppearEvent(MSceneWindowEvent *event)
break;
case MSceneWindow::StatusBar:
+ if (!statusBar)
+ return;
showingStatusBar = true;
_q_updatePageExposedContentRect();
break;
@@ -617,6 +623,8 @@ void MApplicationWindowPrivate::sceneWindowDisappearEvent(MSceneWindowEvent *eve
break;
case MSceneWindow::StatusBar:
+ if(!statusBar)
+ return;
showingStatusBar = false;
_q_updatePageExposedContentRect();
break;
@@ -649,7 +657,8 @@ void MApplicationWindowPrivate::applicationPageAppearEvent(MSceneWindowEvent *ev
Q_ASSERT(pageFromEvent != page);
if (page != 0) {
- menu->disappear();
+ if (menu->isVisible())
+ menu->disappear();
disconnectPage(page);
}
@@ -664,7 +673,8 @@ void MApplicationWindowPrivate::applicationPageDisappearEvent(MSceneWindowEvent
// Page is going away. Let's disconnect it if it's the current page.
if (pageFromEvent == page) {
- menu->disappear();
+ if (menu->isVisible())
+ menu->disappear();
disconnectPage(pageFromEvent);
}
}
@@ -1040,6 +1050,8 @@ void MApplicationWindow::mouseReleaseEvent(QMouseEvent *event)
Q_D(MApplicationWindow);
MSceneWindow *component;
+ MWindow::mouseReleaseEvent(event);
+
if (d->componentsOnAutoHide.count() > 0) {
const int count = d->componentsOnAutoHide.count();
for (int i = 0; i < count; ++i) {
@@ -1063,8 +1075,6 @@ void MApplicationWindow::mouseReleaseEvent(QMouseEvent *event)
closeMenu();
}
}
-
- MWindow::mouseReleaseEvent(event);
}
#include "moc_mapplicationwindow.cpp"
diff --git a/src/corelib/widgets/mapplicationwindow.h b/src/corelib/widgets/mapplicationwindow.h
index e68dd8f6..37c360e1 100644
--- a/src/corelib/widgets/mapplicationwindow.h
+++ b/src/corelib/widgets/mapplicationwindow.h
@@ -170,8 +170,8 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_handlePageModelModifications(const QList<const char *>&))
Q_PRIVATE_SLOT(d_func(), void _q_menuAppeared())
Q_PRIVATE_SLOT(d_func(), void _q_menuDisappeared())
-#ifdef HAVE_DBUS
- Q_PRIVATE_SLOT(d_func(), void _q_updateCallOngoingState(QString))
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ Q_PRIVATE_SLOT(d_func(), void _q_updateStatusBarVisibility())
#endif
#ifdef HAVE_N900
Q_PRIVATE_SLOT(d_func(), void _q_exitAppView())
diff --git a/src/corelib/widgets/mapplicationwindow_p.h b/src/corelib/widgets/mapplicationwindow_p.h
index 84bb9978..7eeb4fa9 100644
--- a/src/corelib/widgets/mapplicationwindow_p.h
+++ b/src/corelib/widgets/mapplicationwindow_p.h
@@ -27,6 +27,10 @@
#include <QPointer>
#include <QTimer>
+#ifdef HAVE_CONTEXTSUBSCRIBER
+# include "contextproperty.h"
+#endif
+
class QGraphicsItemAnimation;
class QTimeLine;
class MScene;
@@ -61,7 +65,10 @@ public:
QTimer autoHideComponentsTimer;
QList<MSceneWindow *> componentsOnAutoHide;
bool isMenuOpen;
- bool callOngoing;
+
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ ContextProperty callStatusProperty;
+#endif
// TODO: Use some API like "bool MSceneWindow::isAppearing()" or something,
// once it becomes available, instead of manually tracking the scene windows
@@ -132,8 +139,8 @@ public:
void _q_handlePageModelModifications(const QList<const char *>&);
void _q_menuAppeared();
void _q_menuDisappeared();
-#ifdef HAVE_DBUS
- void _q_updateCallOngoingState(QString mode);
+#ifdef HAVE_CONTEXTSUBSCRIBER
+ void _q_updateStatusBarVisibility();
#endif
#ifdef HAVE_N900
void _q_exitAppView();
diff --git a/src/corelib/widgets/mbutton.cpp b/src/corelib/widgets/mbutton.cpp
index 8b5e9d7f..b71b263a 100644
--- a/src/corelib/widgets/mbutton.cpp
+++ b/src/corelib/widgets/mbutton.cpp
@@ -118,12 +118,21 @@ QString MButton::toggledIconID() const
return model()->toggledIconID();
}
+void MButton::setIcon(const QIcon &icon)
+{
+ model()->setIcon(icon);
+}
+
+QIcon MButton::icon() const
+{
+ return model()->icon();
+}
+
void MButton::setText(const QString &text)
{
model()->setText(text);
}
-
QString MButton::text() const
{
return model()->text();
diff --git a/src/corelib/widgets/mbutton.h b/src/corelib/widgets/mbutton.h
index c6cf99d8..f4bde0cf 100644
--- a/src/corelib/widgets/mbutton.h
+++ b/src/corelib/widgets/mbutton.h
@@ -163,6 +163,12 @@ class M_EXPORT MButton : public MWidgetController
Q_PROPERTY(QString toggledIconID READ toggledIconID WRITE setToggledIconID)
/*!
+ \property MButton::icon
+ \brief See MButtonModel::icon
+ */
+ Q_PROPERTY(QIcon icon READ icon WRITE setIcon)
+
+ /*!
\property MButton::textVisible
\brief See MButtonModel::textVisible
*/
@@ -256,6 +262,20 @@ public:
QString toggledIconID() const;
/*!
+ \brief Sets the \a icon of the button.
+
+ \sa icon(), setIconVisible(), setIconID()
+ */
+ void setIcon(const QIcon &icon);
+
+ /*!
+ \brief Returns the icon of the button.
+
+ \sa setIcon()
+ */
+ QIcon icon() const;
+
+ /*!
\brief Returns the text of the button.
If the button has no text, the text() function will return an empty string.
diff --git a/src/corelib/widgets/mbuttongroup.cpp b/src/corelib/widgets/mbuttongroup.cpp
index 6e06f8e7..9fee5927 100644
--- a/src/corelib/widgets/mbuttongroup.cpp
+++ b/src/corelib/widgets/mbuttongroup.cpp
@@ -27,7 +27,8 @@
MButtonGroupPrivate::MButtonGroupPrivate()
: checkedButton(0),
- exclusive(true)
+ exclusive(true),
+ q_ptr(0)
{
}
diff --git a/src/corelib/animation/scene/mscenewindowanimation_p.h b/src/corelib/widgets/mbuttonmodel.cpp
index 812ffae4..7e87518c 100644
--- a/src/corelib/animation/scene/mscenewindowanimation_p.h
+++ b/src/corelib/widgets/mbuttonmodel.cpp
@@ -17,18 +17,15 @@
**
****************************************************************************/
-#ifndef MSCENEWINDOWANIMATION_P_H
-#define MSCENEWINDOWANIMATION_P_H
+#include "mbuttonmodel.h"
-#include "mgroupanimation_p.h"
-
-class MSceneWindow;
-
-class MSceneWindowAnimationPrivate : public MGroupAnimationPrivate
+const QIcon& MButtonModel::icon() const
{
- Q_DECLARE_PUBLIC(MSceneWindowAnimation)
-public:
- MSceneWindow *sceneWindow;
-};
+ return _icon();
+}
-#endif
+void MButtonModel::setIcon(const QIcon& icon)
+{
+ _icon() = icon;
+ memberModified(Icon);
+}
diff --git a/src/corelib/widgets/mbuttonmodel.h b/src/corelib/widgets/mbuttonmodel.h
index 368bab16..afeb9abe 100644
--- a/src/corelib/widgets/mbuttonmodel.h
+++ b/src/corelib/widgets/mbuttonmodel.h
@@ -21,6 +21,7 @@
#define MBUTTONMODEL_H
#include <mwidgetmodel.h>
+#include <QIcon>
/*!
\class MButtonModel
@@ -36,17 +37,23 @@ class M_EXPORT MButtonModel : public MWidgetModel
/*!
\property MButtonModel::iconID
- \brief Id of the icon that is displayed whe a non-toggled button.
+ \brief ID of the icon that is displayed for a non-toggled button.
*/
M_MODEL_PROPERTY(QString, iconID, IconID, true, QString())
/*!
\property MButtonModel::toggledIconID
- \brief Id of the icon that is displayed when button is in toggled/down state.
+ \brief ID of the icon that is displayed when the button is in toggled/down state.
*/
M_MODEL_PROPERTY(QString, toggledIconID, ToggledIconID, true, QString::null)
/*!
+ \property MButtonModel::icon
+ \brief QIcon that is displayed for the button.
+ */
+ M_MODEL_PROPERTY(QIcon, icon, Icon, false, QIcon())
+
+ /*!
\property MButtonModel::text
\brief Text of the button.
*/
diff --git a/src/corelib/widgets/mcontentitem.cpp b/src/corelib/widgets/mcontentitem.cpp
index 10b64829..c06b4e6e 100644
--- a/src/corelib/widgets/mcontentitem.cpp
+++ b/src/corelib/widgets/mcontentitem.cpp
@@ -22,21 +22,23 @@
#include "mcontentitem.h"
#include "mcontentitem_p.h"
#include "mcontentitemmodel.h"
-#include <QDebug>
#include "mwidgetcreator.h"
#include <mprogressindicator.h>
#include <mlabel.h>
+
M_REGISTER_WIDGET(MContentItem)
MContentItemPrivate::MContentItemPrivate():
MWidgetControllerPrivate(),
- smallItem(0)
+ smallText(0)
{
}
MContentItemPrivate::~MContentItemPrivate()
{
+ if (smallText)
+ delete smallText;
}
MContentItem::MContentItem(MContentItem::ContentItemStyle itemStyle, QGraphicsItem *parent)
@@ -101,6 +103,13 @@ void MContentItem::setImage(const QImage &image)
model()->setItemImage(d->image);
}
+void MContentItem::setImage(const QString &id)
+{
+ Q_D(MContentItem);
+ d->imageID = id;
+ model()->setItemImageID(d->imageID);
+}
+
void MContentItem::setTitle(const QString &text)
{
model()->setTitle(text);
@@ -177,20 +186,29 @@ void MContentItem::enableProgressBar()
void MContentItem::setSmallItem(MWidget* widget)
{
Q_D(MContentItem);
- d->smallItem = widget;
+
+ if (d->smallText) {
+ delete d->smallText;
+ d->smallText = 0;
+ }
+ model()->setSmallItem(widget);
}
MWidget* MContentItem::smallItem() const
{
- Q_D(const MContentItem);
- return d->smallItem;
+ return model()->smallItem();
}
void MContentItem::setSmallText(QString text)
{
Q_D(MContentItem);
- MLabel* label = new MLabel(text);
- label->setAlignment( Qt::AlignRight );
- d->smallItem = label;
+
+ if (d->smallText) {
+ d->smallText->setText(text);
+ } else {
+ d->smallText = new MLabel(text);
+ d->smallText->setAlignment( Qt::AlignRight );
+ model()->setSmallItem(d->smallText);
+ }
}
diff --git a/src/corelib/widgets/mcontentitem.h b/src/corelib/widgets/mcontentitem.h
index 5ac1c69f..7734375a 100644
--- a/src/corelib/widgets/mcontentitem.h
+++ b/src/corelib/widgets/mcontentitem.h
@@ -39,10 +39,14 @@ class MContentItemPrivate;
queried via isSelected() function.
MContentItem provides the following styles:
- \li ContentItemStyle::IconAndTwoTextLabels
- \li ContentItemStyle::SingleTextLabel
- \li ContentItemStyle::IconAndSingleTextLabel
- \li ContentItemStyle::TwoTextLabels
+ \li MContentItem::IconAndTwoTextLabels
+ \li MContentItem::SingleTextLabel
+ \li MContentItem::IconAndSingleTextLabel
+ \li MContentItem::TwoTextLabels
+ \li MContentItem::SingleIcon
+ \li MContentItem::IconAndSingleTextLabelVertical
+ \li MContentItem::IconAndTwoTextLabelsVertical
+ \li MContentItem::TwoIconsTwoWidgets
MContentItem can be in one of the modes provided by ContentItemMode enumeration.
For each mode there is a dedicated graphics which is up to the view to show. The purpose of mode is to indicate
@@ -57,7 +61,7 @@ class M_EXPORT MContentItem : public MWidgetController
public:
/*!
- ContentItemStyle indicates how text and thumbnail should be shown. There are 4 predefined layouts.
+ ContentItemStyle indicates how text and thumbnail should be shown. There are 8 predefined layouts.
Exact look and feel depends on the view.
\sa MContentItemView
@@ -223,6 +227,12 @@ public Q_SLOTS:
void setImage(const QImage &pixmap);
/**
+ \brief Sets thumbnail image.
+ \param id, image id in theme system.
+ */
+ void setImage(const QString &id);
+
+ /**
\brief Set title text. This is first line.
\param text text.
*/
diff --git a/src/corelib/widgets/mcontentitem_p.h b/src/corelib/widgets/mcontentitem_p.h
index e5e6cfe3..0f9c4be4 100644
--- a/src/corelib/widgets/mcontentitem_p.h
+++ b/src/corelib/widgets/mcontentitem_p.h
@@ -23,6 +23,7 @@
#include "private/mwidgetcontroller_p.h"
#include <QPixmap>
#include <QImage>
+#include <MLabel>
class MContentItemPrivate : public MWidgetControllerPrivate
{
@@ -32,9 +33,10 @@ public:
QPixmap pixmap;
QImage image;
+ QString imageID;
QPixmap optionalPixmap;
QImage optionalImage;
- MWidget* smallItem;
+ MLabel* smallText;
};
#endif
diff --git a/src/corelib/widgets/mcontentitemmodel.h b/src/corelib/widgets/mcontentitemmodel.h
index b65392d0..6a182ac5 100644
--- a/src/corelib/widgets/mcontentitemmodel.h
+++ b/src/corelib/widgets/mcontentitemmodel.h
@@ -77,6 +77,8 @@ public:
M_MODEL_PROPERTY(QImage, itemQImage, ItemQImage, false, QImage())
+ M_MODEL_PROPERTY(QString, itemImageID, ItemImageID, true, QString())
+
/*!
\property MContentItemModel::selected
\brief Contains selection status of item.
@@ -101,6 +103,12 @@ public:
In case there is already a subtitle it will be replaced.
*/
M_MODEL_PTR_PROPERTY(MWidget*, additionalItem, AdditionalItem, true, NULL)
+
+ /*!
+ \property MContentItemModel::smallItem
+ \brief MWidget as e.g. progress bar, visible on the lower right corner
+ */
+ M_MODEL_PTR_PROPERTY(MWidget*, smallItem, SmallItem, true, NULL)
};
#endif
diff --git a/src/corelib/widgets/mdialog.cpp b/src/corelib/widgets/mdialog.cpp
index 8135b9d9..993b02f6 100644
--- a/src/corelib/widgets/mdialog.cpp
+++ b/src/corelib/widgets/mdialog.cpp
@@ -186,7 +186,7 @@ bool MDialogPrivate::prepareStandAloneAppearance(MSceneWindow::DeletionPolicy po
standAloneWindow->setTranslucentBackground(true);
#ifdef Q_WS_X11
standAloneWindow->setAttribute(Qt::WA_X11NetWmWindowTypeDialog, true);
- XSetTransientForHint(QX11Info::display(), standAloneWindow->winId(), MApplication::activeWindow()->winId());
+ standAloneWindow->setWindowModality(Qt::WindowModal);
#endif
q->connect(q, SIGNAL(disappeared()), SLOT(_q_onStandAloneDialogDisappeared()));
}
@@ -405,6 +405,12 @@ void MDialog::accept()
void MDialog::reject()
{
+ Q_D(MDialog);
+
+ QObject *sender= QObject::sender();
+ if (sender != 0 && sender->objectName() == "MDialogCloseButton") {
+ d->clickedButton = 0;
+ }
done(Rejected);
}
diff --git a/src/corelib/widgets/mdialog.h b/src/corelib/widgets/mdialog.h
index 251de0c5..a41155ef 100644
--- a/src/corelib/widgets/mdialog.h
+++ b/src/corelib/widgets/mdialog.h
@@ -43,7 +43,7 @@ class MDismissEvent;
A MDialog is comprised by three components:
- \li A title bar containig a title text, a progress indicator and a close button.
+ \li A title bar containing a title text, a progress indicator and a close button.
The close button, the progress indicator or the entire title bar can be hidden.
The progress indicator is hidden by default.
\li A customizable central widget, that is meant to contain either the message or query
@@ -122,7 +122,8 @@ class MDismissEvent;
centralWidget,
M::OkButton | M::ResetButton);
- dialog->exec();
+ connect(dialog, SIGNAL(disappeared()), SLOT(processDialogResult()));
+ dialog->appear();
\endcode
Constructing a question dialog, it is easier to use MMessageBox instead:
@@ -130,7 +131,8 @@ class MDismissEvent;
MDialog* dialog = new MDialog("Question",
new MLabel("Lorem ipsum dolor sit amet?"),
M::YesButton | M::NoButton);
- dialog->exec();
+ connect(dialog, SIGNAL(disappeared()), SLOT(processDialogResult()));
+ dialog->appear();
\endcode
\sa MDialogView, MDialogStyle
@@ -486,6 +488,12 @@ public Q_SLOTS:
* If the dialog was dismissed with either accept() or reject() (or the equivalent done()
* calls), a DialogCode result is returned instead.
*
+ * \warning Usage of this method is discouraged as running a local event loop can
+ * lead to hard-to-predict code paths and therefore is likely to cause
+ * bugs. See <a href="http://labs.trolltech.com/blogs/2010/02/23/unpredictable-exec/">Unpredictable exec()</a>
+ * article for more info. Instead, summon the dialog with appear() and
+ * process its result upon the emission of its disappeared() signal.
+ *
* \sa StandardButton, setSystemModal()
*/
int exec(MWindow *window = 0);
diff --git a/src/corelib/widgets/mimagewidget.cpp b/src/corelib/widgets/mimagewidget.cpp
index 1040256b..519347bd 100644
--- a/src/corelib/widgets/mimagewidget.cpp
+++ b/src/corelib/widgets/mimagewidget.cpp
@@ -38,7 +38,6 @@ MImageWidgetPrivate::MImageWidgetPrivate()
MImageWidgetPrivate::~MImageWidgetPrivate()
{
-
cleanUp();
}
@@ -76,11 +75,12 @@ MImageWidgetPrivate &MImageWidgetPrivate::operator=(const MImageWidgetPrivate &o
if (other.deletePixmap)
pixmap = new QPixmap(*(other.pixmap));
else
- setImageName(other.imageName);
+ setImageName(other.imageName, other.pixmap->size());
}
- deletePixmap = other.deletePixmap;
+ deletePixmap = other.deletePixmap;
imageName = other.imageName;
+
return *this;
}
@@ -162,7 +162,9 @@ void MImageWidget::setImage(const QString &id, const QSize &s)
{
Q_D(MImageWidget);
d->setImageName(id, s);
-
+
+ model()->setCrop(QRect());
+
update();
}
@@ -316,6 +318,8 @@ void MImageWidget::setImage(const QString &id)
Q_D(MImageWidget);
d->setImageName(id);
+ model()->setCrop(QRect());
+
update();
}
@@ -327,6 +331,8 @@ void MImageWidget::setImage(const QImage &image)
d->pixmap = new QPixmap(QPixmap::fromImage(image));
d->deletePixmap = true;
+ model()->setCrop(QRect());
+
update();
}
@@ -338,6 +344,7 @@ void MImageWidget::setPixmap(const QPixmap &pixmap)
d->pixmap = new QPixmap(pixmap);
d->deletePixmap = true;
+ model()->setCrop(QRect());
+
update();
}
-
diff --git a/src/corelib/widgets/mlabel.cpp b/src/corelib/widgets/mlabel.cpp
index 0b5362c8..8e7d04e1 100644
--- a/src/corelib/widgets/mlabel.cpp
+++ b/src/corelib/widgets/mlabel.cpp
@@ -32,11 +32,13 @@ M_REGISTER_WIDGET(MLabel)
MLabel::MLabel(QGraphicsItem *parent, MLabelModel *model) :
MWidgetController(new MLabelPrivate, model == NULL ? new MLabelModel : model, parent)
{
+ grabGesture(Qt::TapAndHoldGesture);
}
MLabel::MLabel(QString const &text, QGraphicsItem *parent) :
MWidgetController(new MLabelPrivate, new MLabelModel, parent)
{
+ grabGesture(Qt::TapAndHoldGesture);
setText(text);
}
@@ -167,6 +169,6 @@ void MLabel::removeHighlighter(MLabelHighlighter *highlighter)
void MLabel::removeAllHighlighters()
{
- model()->setHighlighters(MLabelHighlighterList());
+ model()->setHighlighters(QList<MLabelHighlighter *>());
}
diff --git a/src/corelib/widgets/mlabel.h b/src/corelib/widgets/mlabel.h
index 6352081e..9338f228 100644
--- a/src/corelib/widgets/mlabel.h
+++ b/src/corelib/widgets/mlabel.h
@@ -27,8 +27,6 @@ class MLabelPrivate;
class MLabelHighlighter;
class QString;
-Q_DECLARE_METATYPE(QTextOption::WrapMode)
-
/*!
\class MLabel
\brief MLabel provides functionality for displaying text.
diff --git a/src/corelib/widgets/mlabelmodel.cpp b/src/corelib/widgets/mlabelmodel.cpp
index 05935c6d..51075cea 100644
--- a/src/corelib/widgets/mlabelmodel.cpp
+++ b/src/corelib/widgets/mlabelmodel.cpp
@@ -21,7 +21,7 @@
void MLabelModel::addHighlighter(MLabelHighlighter *highlighter)
{
- MLabelHighlighterList &list = _highlighters();
+ QList<MLabelHighlighter *> &list = _highlighters();
if (list.indexOf(highlighter) == -1) {
list.append(highlighter);
memberModified(Highlighters);
@@ -30,7 +30,7 @@ void MLabelModel::addHighlighter(MLabelHighlighter *highlighter)
void MLabelModel::removeHighlighter(MLabelHighlighter *highlighter)
{
- MLabelHighlighterList &list = _highlighters();
+ QList<MLabelHighlighter *> &list = _highlighters();
if (list.removeOne(highlighter))
memberModified(Highlighters);
}
diff --git a/src/corelib/widgets/mlabelmodel.h b/src/corelib/widgets/mlabelmodel.h
index fd5ff894..e80140aa 100644
--- a/src/corelib/widgets/mlabelmodel.h
+++ b/src/corelib/widgets/mlabelmodel.h
@@ -20,11 +20,13 @@
#ifndef MLABELMODEL_H
#define MLABELMODEL_H
-#include <mwidgetmodel.h>
#include <QApplication>
+#include <QList>
+#include <QTextOption>
+#include <mwidgetmodel.h>
class MLabelHighlighter;
-typedef QList<MLabelHighlighter *> MLabelHighlighterList;
+Q_DECLARE_METATYPE(QTextOption::WrapMode)
/*!
\class MLabelModel
@@ -118,7 +120,7 @@ class M_EXPORT MLabelModel : public MWidgetModel
fragments like urls, email addresses etc. Objects also receive callbacks
when the highlighted items are interacted by the user.
*/
- M_MODEL_PROPERTY(MLabelHighlighterList, highlighters, Highlighters, true, MLabelHighlighterList())
+ M_MODEL_PROPERTY(QList<MLabelHighlighter *>, highlighters, Highlighters, true, QList<MLabelHighlighter *>())
public:
void emitLinkActivated(const QString &link) const {
diff --git a/src/corelib/widgets/mlist.cpp b/src/corelib/widgets/mlist.cpp
index 0f7f2934..decec0f3 100644
--- a/src/corelib/widgets/mlist.cpp
+++ b/src/corelib/widgets/mlist.cpp
@@ -193,6 +193,16 @@ void MList::setShowGroups(bool showGroups)
model()->setShowGroups(showGroups);
}
+void MList::setIndexVisible(bool visible)
+{
+ model()->setListIndexVisible(visible);
+}
+
+bool MList::indexVisible()
+{
+ return model()->listIndexVisible();
+}
+
int MList::columns() const
{
return model()->columns();
diff --git a/src/corelib/widgets/mlist.h b/src/corelib/widgets/mlist.h
index b15066c2..f525db0a 100644
--- a/src/corelib/widgets/mlist.h
+++ b/src/corelib/widgets/mlist.h
@@ -314,6 +314,11 @@ public:
*/
void setShowGroups(bool showGroups);
+ /*!
+ \return Returns the status of the list index availability.
+ */
+ bool indexVisible();
+
public Q_SLOTS:
/*!
\brief Convenience function - Select the given item.
@@ -337,6 +342,11 @@ public Q_SLOTS:
*/
void scrollTo(const QModelIndex &index, ScrollHint hint);
+ /*!
+ \brief Specifies whether the list index for a grouped model should be visible or not.
+ */
+ void setIndexVisible(bool visible);
+
Q_SIGNALS:
/*!
\brief Emitted when scrollTo(index) is called to tell the view to scroll
diff --git a/src/corelib/widgets/mlistmodel.h b/src/corelib/widgets/mlistmodel.h
index 053f6320..8bb29f07 100644
--- a/src/corelib/widgets/mlistmodel.h
+++ b/src/corelib/widgets/mlistmodel.h
@@ -47,6 +47,7 @@ private:
M_MODEL_PROPERTY(QModelIndex, scrollToIndex, ScrollToIndex, false, QModelIndex())
M_MODEL_PROPERTY(int, scrollHint, ScrollHint, true, 0)
M_MODEL_PROPERTY(QPointF, longTap, LongTap, true, QPointF())
+ M_MODEL_PROPERTY(bool, listIndexVisible, ListIndexVisible, true, false)
};
#endif
diff --git a/src/corelib/widgets/mobjectmenu.cpp b/src/corelib/widgets/mobjectmenu.cpp
index 65ab9db9..ca2f05dc 100644
--- a/src/corelib/widgets/mobjectmenu.cpp
+++ b/src/corelib/widgets/mobjectmenu.cpp
@@ -94,3 +94,13 @@ void MObjectMenu::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
event->accept();
}
+
+QPointF MObjectMenu::cursorPosition() const
+{
+ return model()->cursorPosition();
+}
+
+void MObjectMenu::setCursorPosition(const QPointF &pos)
+{
+ model()->setCursorPosition(pos);
+}
diff --git a/src/corelib/widgets/mobjectmenu.h b/src/corelib/widgets/mobjectmenu.h
index 81b2c47a..7a6fe172 100644
--- a/src/corelib/widgets/mobjectmenu.h
+++ b/src/corelib/widgets/mobjectmenu.h
@@ -120,6 +120,8 @@ class M_EXPORT MObjectMenu : public MSceneWindow
Q_DISABLE_COPY(MObjectMenu)
M_CONTROLLER(MObjectMenu)
+ Q_PROPERTY(QPointF cursorPosition READ cursorPosition WRITE setCursorPosition)
+
public:
/*!
\brief Constructs an object menu.
@@ -134,6 +136,9 @@ public:
*/
virtual ~MObjectMenu();
+ QPointF cursorPosition() const;
+ void setCursorPosition(const QPointF &pos);
+
protected:
//! \reimp
virtual bool eventFilter(QObject *obj, QEvent *event);
diff --git a/src/corelib/widgets/mobjectmenumodel.h b/src/corelib/widgets/mobjectmenumodel.h
index 340d7deb..521a806d 100644
--- a/src/corelib/widgets/mobjectmenumodel.h
+++ b/src/corelib/widgets/mobjectmenumodel.h
@@ -48,6 +48,14 @@ class M_EXPORT MObjectMenuModel : public MSceneWindowModel
*/
M_MODEL_PROPERTY(MActionList, actions, Actions, true, MActionList())
+ /*!
+ \property MObjectMenuModel::cursorPosition
+ \brief Position of the cursor that invokes the object menu
+
+ This property contains the position of the cursor that causes menu to appear.
+ */
+ M_MODEL_PROPERTY(QPointF, cursorPosition, CursorPosition, true, QPointF())
+
public:
/*!
\brief Adds the \a action to the actions list.
diff --git a/src/corelib/widgets/mpannablewidget.cpp b/src/corelib/widgets/mpannablewidget.cpp
index 4d7c7e36..441bb13d 100644
--- a/src/corelib/widgets/mpannablewidget.cpp
+++ b/src/corelib/widgets/mpannablewidget.cpp
@@ -444,12 +444,15 @@ void MPannableWidget::glassPanEvent(QGestureEvent *event, QPanGesture* panGestur
return;
}
- if ((panGesture->offset().x() != 0 && panDirection().testFlag(Qt::Vertical)) ||
- (panGesture->offset().y() != 0 && panDirection().testFlag(Qt::Horizontal)))
- {
- // Panning against the pannable direction, we aren't interested in it.
- event->ignore(panGesture);
- return;
+ if (panDirection().testFlag(Qt::Vertical) == false || panDirection().testFlag(Qt::Horizontal) == false) {
+ //Ignoring gestures that aren't aligned to allowed pan direction.
+ if ((panGesture->offset().x() != 0 && panDirection().testFlag(Qt::Vertical)) ||
+ (panGesture->offset().y() != 0 && panDirection().testFlag(Qt::Horizontal)))
+ {
+ // Panning against the pannable direction, we aren't interested in it.
+ event->ignore(panGesture);
+ return;
+ }
}
switch (panGesture->state())
diff --git a/src/corelib/widgets/mpannablewidget.h b/src/corelib/widgets/mpannablewidget.h
index 9e9c4209..a4d1a27d 100644
--- a/src/corelib/widgets/mpannablewidget.h
+++ b/src/corelib/widgets/mpannablewidget.h
@@ -39,8 +39,18 @@ class MOnDisplayChangeEvent;
* and interprets them. If the events form a panning gesture, a
* physics class is used to create a natural Newtonian movement in the
* direction of panning. Panning position is provided as an
- * overridable slot UpdatePosition(). If the events don't form a
+ * overridable slot updatePosition(). If the events don't form a
* panning gesture, they are forwarded underneath the glass.
+ *
+ * In order to change the current position of the viewport the user
+ * can call setPosition() method. When this is done, integration engine
+ * is started and in case that the position is outside specified bounds,
+ * the physics engine will start spring action to move the viewport to
+ * the allowed borders.
+ *
+ * The physics engine object can be obtained by calling physics() method.
+ *
+ * \sa MPhysics2DPanning, MPannableViewport
*/
class M_EXPORT MPannableWidget : public MWidgetController
{
diff --git a/src/corelib/widgets/mrichtextedit.cpp b/src/corelib/widgets/mrichtextedit.cpp
new file mode 100644
index 00000000..d42e14b4
--- /dev/null
+++ b/src/corelib/widgets/mrichtextedit.cpp
@@ -0,0 +1,256 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include <QTextDocument>
+#include <QTextCursor>
+#include <QTextDocumentFragment>
+#include <QApplication>
+#include <QClipboard>
+#include "mrichtextedit.h"
+#include "mrichtextedit_p.h"
+
+#include "mwidgetcreator.h"
+M_REGISTER_WIDGET(MRichTextEdit)
+
+namespace
+{
+ //! Toolbar file
+ const QString ToolbarFile = QString("/usr/share/meegotouch/imtoolbars/RichTextEditorToolbar1.xml");
+}
+
+
+MRichTextEditPrivate::MRichTextEditPrivate()
+ : MTextEditPrivate()
+{
+}
+
+
+MRichTextEditPrivate::~MRichTextEditPrivate()
+{
+}
+
+
+bool MRichTextEditPrivate::insertFromMimeData(const QMimeData *source)
+{
+ Q_Q(MRichTextEdit);
+
+ QTextDocumentFragment fragment;
+ bool updated = false;
+
+ if (source->hasHtml()) {
+ fragment = QTextDocumentFragment::fromHtml(source->html());
+ updated = true;
+ } else {
+ QString text = source->text();
+ if (!text.isNull()) {
+ fragment = QTextDocumentFragment::fromPlainText(text);
+ updated = true;
+ }
+ }
+
+ if (updated) {
+ QTextCursor textcursor = q->textCursor();
+ textcursor.insertFragment(fragment);
+ q->setTextCursor(textcursor);
+ }
+
+ return updated;
+}
+
+
+QMimeData *MRichTextEditPrivate::createMimeDataFromSelection()
+{
+ Q_Q(MRichTextEdit);
+
+ const QTextDocumentFragment fragment(q->textCursor());
+ QMimeData *mimeData = new QMimeData();
+
+ mimeData->setData(QLatin1String("text/html"), fragment.toHtml("utf-8").toUtf8());
+ mimeData->setText(fragment.toPlainText());
+
+ return mimeData;
+}
+
+
+bool MRichTextEditPrivate::copy()
+{
+ Q_Q(MRichTextEdit);
+
+ QClipboard *clipboard = QApplication::clipboard();
+
+ if (!q->hasSelectedText()
+ || q->echoMode() != MTextEditModel::Normal // only allow copy from normal echo mode entry
+ || !clipboard) {
+ return false;
+ }
+
+ clipboard->setMimeData(createMimeDataFromSelection());
+ return true;
+}
+
+///////////////////////////////////////////////
+// Actual class implementation
+
+
+MRichTextEdit::MRichTextEdit(MTextEditModel::LineMode type, const QString &text, QGraphicsItem *parent)
+ : MTextEdit(new MRichTextEditPrivate, new MTextEditModel, parent)
+{
+ model()->setText(text);
+ model()->setLine(type);
+ attachToolbar(ToolbarFile);
+}
+
+
+MRichTextEdit::MRichTextEdit(MTextEditModel *model, QGraphicsItem *parent)
+ : MTextEdit(new MRichTextEditPrivate, model, parent)
+{
+ attachToolbar(ToolbarFile);
+}
+
+
+MRichTextEdit::~MRichTextEdit()
+{
+}
+
+
+void MRichTextEdit::copy()
+{
+ Q_D(MRichTextEdit);
+
+ d->copy();
+}
+
+
+void MRichTextEdit::paste()
+{
+ Q_D(MRichTextEdit);
+
+ QClipboard *clipboard = QApplication::clipboard();
+
+ if (isReadOnly() || !clipboard) {
+ return;
+ }
+
+ const QMimeData *mimedata = clipboard->mimeData();
+
+ bool updated = false;
+
+ if (mimedata)
+ updated = d->insertFromMimeData(mimedata);
+
+ if (updated) {
+ emit textChanged();
+ updateMicroFocus();
+ }
+}
+
+
+void MRichTextEdit::cut()
+{
+ MTextEdit::cut();
+}
+
+
+void MRichTextEdit::setFontUnderline(bool underline)
+{
+ Q_D(MRichTextEdit);
+
+ if (d->isPreediting() == true) {
+ d->addStyleToPreeditStyling(MRichTextEditPrivate::Underline, underline);
+ } else {
+ QTextCursor textcursor = textCursor();
+ QTextCharFormat format;
+ format.setFontUnderline(underline);
+ textcursor.mergeCharFormat(format);
+ setTextCursor(textcursor);
+ }
+}
+
+
+void MRichTextEdit::setFontItalic(bool italic)
+{
+ Q_D(MRichTextEdit);
+
+ if (d->isPreediting() == true) {
+ d->addStyleToPreeditStyling(MRichTextEditPrivate::Italic, italic);
+ } else {
+ QTextCursor textcursor = textCursor();
+ QTextCharFormat format;
+ format.setFontItalic(italic);
+ textcursor.mergeCharFormat(format);
+ setTextCursor(textcursor);
+ }
+}
+
+
+void MRichTextEdit::setFontBold(bool bold)
+{
+ Q_D(MRichTextEdit);
+
+ if (d->isPreediting() == true) {
+ d->addStyleToPreeditStyling(MRichTextEditPrivate::Bold, bold);
+ } else {
+ QTextCursor textcursor = textCursor();
+
+ QFont::Weight wt = QFont::Normal;
+ if (bold)
+ wt = QFont::Bold;
+
+ QTextCharFormat format;
+ format.setFontWeight(wt);
+ textcursor.mergeCharFormat(format);
+ setTextCursor(textcursor);
+ }
+}
+
+
+QFont MRichTextEdit::currentFont()
+{
+ QTextCursor textcursor = textCursor();
+
+ return textcursor.charFormat().font();
+}
+
+
+void MRichTextEdit::keyPressEvent(QKeyEvent *event)
+{
+ if (QEvent::KeyPress == event->type()) {
+ if (event->matches(QKeySequence::Bold)) {
+ QFont curFont = currentFont();
+ bool boldStyle = !curFont.bold();
+ // set current bold style option
+ setFontBold(boldStyle);
+ } else if (event->matches(QKeySequence::Italic)) {
+ QFont curFont = currentFont();
+ bool italicStyle = !curFont.italic();
+ // set current italic style option
+ setFontItalic(italicStyle);
+ } else if (event->matches(QKeySequence::Underline)) {
+ QFont curFont = currentFont();
+ bool underlineStyle = !curFont.underline();
+ // set current underline style option
+ setFontUnderline(underlineStyle);
+ } else {
+ // Pass the remaining events to MTextEdit will handle
+ MTextEdit::keyPressEvent(event);
+ }
+ }
+}
+
+#include "moc_mrichtextedit.cpp"
diff --git a/src/corelib/widgets/mrichtextedit.h b/src/corelib/widgets/mrichtextedit.h
new file mode 100644
index 00000000..cdefb1b9
--- /dev/null
+++ b/src/corelib/widgets/mrichtextedit.h
@@ -0,0 +1,98 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MRICHTEXTEDIT_H
+#define MRICHTEXTEDIT_H
+
+#include <MTextEdit>
+#include <QTextCharFormat>
+
+class MRichTextEditPrivate;
+
+class M_EXPORT MRichTextEdit : public MTextEdit
+{
+ Q_OBJECT
+
+public:
+ /*!
+ * \brief Default constructor. Creates a textEdit field containing the specified text and line mode with rich text support.
+ * \param type widget type (single line or multiline).
+ * \param text optional text.
+ * \param parent optional parent.
+ */
+ explicit MRichTextEdit(MTextEditModel::LineMode type = MTextEditModel::SingleLine,
+ const QString &text = QString(), QGraphicsItem *parent = 0);
+ /*!
+ * \brief Creates a textEdit field with a specified line mode, model and parent with rich text support.
+ * \param model the model to be used.
+ * \param parent the parent of the text edit.
+ */
+ MRichTextEdit(MTextEditModel *model, QGraphicsItem *parent);
+
+ /*!
+ * \brief - Destructor
+ */
+ virtual ~MRichTextEdit();
+
+ /*! \reimp */
+ virtual void copy();
+
+ virtual void paste();
+
+ virtual void cut();
+ /*! \reimp_end */
+
+ /*!
+ * \brief sets the Underline style and apply the style to the current selection if any
+ */
+ void setFontUnderline(bool underline);
+
+ /*!
+ * \brief sets the italic style and apply the style to the current selection if any
+ */
+ void setFontItalic(bool italic);
+
+ /*!
+ * \brief sets the bold style and apply the style to the current selection if any
+ */
+ void setFontBold(bool bold);
+
+ /*!
+ * \brief Retrieves the font information of current selection
+ * Use the bold(),italic(),overline(), etc methods of font
+ * object to get more info about the selection.
+ * \return - Font properties of selection
+ */
+ QFont currentFont();
+
+protected:
+ /*! \reimp */
+ virtual void keyPressEvent(QKeyEvent *event);
+ /*! \reimp_end */
+
+private:
+ Q_DECLARE_PRIVATE(MRichTextEdit)
+ Q_DISABLE_COPY(MRichTextEdit)
+
+#ifdef UNIT_TEST
+ friend class Ut_MRichTextEdit;
+#endif
+};
+
+#endif //MRichTEXTEDIT_H
diff --git a/src/corelib/widgets/mrichtextedit_p.h b/src/corelib/widgets/mrichtextedit_p.h
new file mode 100644
index 00000000..75f6cdaa
--- /dev/null
+++ b/src/corelib/widgets/mrichtextedit_p.h
@@ -0,0 +1,61 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MRICHTEXTEDIT_P_H
+#define MRICHTEXTEDIT_P_H
+
+#include <QMimeData>
+#include "mtextedit_p.h"
+#include "mrichtextedit.h"
+
+class MRichTextEditPrivate : public MTextEditPrivate
+{
+ Q_DECLARE_PUBLIC(MRichTextEdit)
+
+public:
+ /*!
+ * \brief constructor
+ */
+ MRichTextEditPrivate();
+ /*!
+ * \brief destructor
+ */
+ virtual ~MRichTextEditPrivate();
+ /*!
+ * \brief Return the mime information about the selection
+ * The mime will contain both text and html formats
+ * \return MimeData - Caller has to release memory when done
+ */
+ QMimeData *createMimeDataFromSelection();
+
+ /*!
+ * \brief Paste the mimedata to the selection.
+ * Paste richtext if available, otherwise paste plain text.
+ * \param source - Input mime data
+ */
+ bool insertFromMimeData(const QMimeData *source);
+
+ /*!
+ * \brief copy the text cursor's selection to the clipbaord.
+ * \return True if operation compeled successfully.
+ */
+ virtual bool copy();
+};
+
+#endif
diff --git a/src/corelib/widgets/mscenewindow.cpp b/src/corelib/widgets/mscenewindow.cpp
index 26d7783f..67dfe49b 100644
--- a/src/corelib/widgets/mscenewindow.cpp
+++ b/src/corelib/widgets/mscenewindow.cpp
@@ -22,6 +22,7 @@
#include <QGestureEvent>
#include <QTapAndHoldGesture>
#include <QGraphicsSceneContextMenuEvent>
+#include <QTimer>
#include "mscenewindow.h"
#include "mscenewindowmodel.h"
#include "mscenewindow_p.h"
@@ -38,19 +39,20 @@
M_REGISTER_WIDGET_NO_CREATE(MSceneWindow)
MSceneWindowPrivate::MSceneWindowPrivate()
- : windowType(MSceneWindow::PlainSceneWindow),
- policy(MSceneWindow::KeepWhenDone),
- managedManually(false),
- shown(false),
- dismissed(false),
- effect(0),
- appearanceAnimation(0),
- disappearanceAnimation(0)
+ : windowType(MSceneWindow::PlainSceneWindow),
+ policy(MSceneWindow::KeepWhenDone),
+ managedManually(false),
+ shown(false),
+ dismissed(false),
+ waitingForContextMenuEvent(false),
+ effect(0),
+ appearanceAnimation(0),
+ disappearanceAnimation(0)
{
}
MSceneWindow::MSceneWindow(QGraphicsItem *parent) :
- MWidgetController(new MSceneWindowPrivate, new MSceneWindowModel, parent)
+ MWidgetController(new MSceneWindowPrivate, new MSceneWindowModel, parent)
{
Q_D(MSceneWindow);
@@ -60,7 +62,7 @@ MSceneWindow::MSceneWindow(QGraphicsItem *parent) :
MSceneWindow::MSceneWindow(MSceneWindowPrivate *dd, MSceneWindowModel *model, MSceneWindow::WindowType windowType, const QString &viewType, QGraphicsItem *parent) :
- MWidgetController(dd, model, parent)
+ MWidgetController(dd, model, parent)
{
Q_D(MSceneWindow);
setViewType(viewType);
@@ -101,6 +103,12 @@ void MSceneWindow::setManagedManually(bool managedManually)
void MSceneWindow::appear(MWindow *window, MSceneWindow::DeletionPolicy policy)
{
+ if (view()) {
+ if (model()->disappearTimeout() != 0) {
+ QTimer::singleShot(model()->disappearTimeout(), this, SLOT(disappear()));
+ }
+ }
+
if (!window) {
window = MApplication::activeWindow();
if (!window) {
@@ -200,6 +208,8 @@ void MSceneWindow::closeEvent(QCloseEvent *event)
void MSceneWindow::tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGesture *gesture)
{
+ Q_D(MSceneWindow);
+
if (gesture->state() == Qt::GestureFinished) {
QGraphicsSceneContextMenuEvent contextEvent(QEvent::GraphicsSceneContextMenu);
@@ -207,9 +217,11 @@ void MSceneWindow::tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGestu
contextEvent.setScenePos(gesture->hotSpot());
contextEvent.setScreenPos(gesture->hotSpot().toPoint());
+ d->waitingForContextMenuEvent = true;
QApplication::sendEvent(scene(), &contextEvent);
- if (contextEvent.isAccepted()) {
+ if (contextEvent.isAccepted() && d->waitingForContextMenuEvent) {
+ //Event has been accepted by some widget on top of this scenewindow.
if ((scene() == NULL) || (scene()->views().size() == 0)) {
// If this widget has been removed from the scene and/or there
// is no view, return
@@ -224,8 +236,9 @@ void MSceneWindow::tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGestu
if (scene()->items().contains(item))
scene()->sendEvent(item, &cancelEvent);
}
-
}
+ d->waitingForContextMenuEvent = false;
+
}
event->accept(gesture);
@@ -233,8 +246,19 @@ void MSceneWindow::tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGestu
bool MSceneWindow::event(QEvent *event)
{
+ Q_D(MSceneWindow);
if (event->type() == MDismissEvent::eventType()) {
dismissEvent(static_cast<MDismissEvent *>(event));
+ } else if (event->type() == QEvent::GraphicsSceneContextMenu) {
+ //Event was not accepted by any of our child widgets.
+ //We need to accept it so that it doesn't propagate further and
+ //clear the flag, so that the tap&hold gesture event handler
+ //will know that the event wasn't delivered.
+ if (d->waitingForContextMenuEvent) {
+ event->accept();
+ d->waitingForContextMenuEvent = false;
+ return true;
+ }
}
return MWidgetController::event(event);
diff --git a/src/corelib/widgets/mscenewindow.h b/src/corelib/widgets/mscenewindow.h
index 2054de5e..378a58fd 100644
--- a/src/corelib/widgets/mscenewindow.h
+++ b/src/corelib/widgets/mscenewindow.h
@@ -29,11 +29,11 @@ class MSceneWindowPrivate;
/*!
* \class MSceneWindow
- * \brief MSceneWindow objects are the base graphical items in a Direct UI scene.
+ * \brief MSceneWindow objects are the base graphical items in a MeeGo Touch scene.
*
- * All graphical components of a standard Direct UI application are held in
+ * All graphical components of a standard MeeGo Touch application are held in
* a MSceneWindow of some type. MSceneWindow instances form the base
- * level of a Direct UI application's scene graph.
+ * level of a MeeGo Touch application's scene graph.
*
* MSceneWindows in a MScene are analogous to top level windows in a
* traditional windowing system.
diff --git a/src/corelib/widgets/mscenewindow_p.h b/src/corelib/widgets/mscenewindow_p.h
index cf2683b2..3fa15232 100644
--- a/src/corelib/widgets/mscenewindow_p.h
+++ b/src/corelib/widgets/mscenewindow_p.h
@@ -22,10 +22,12 @@
#include "mscenewindow.h"
#include "private/mwidgetcontroller_p.h"
+#include <mabstractwidgetanimation.h>
+
+#include <QPointer>
class MWindow;
class MSceneLayerEffect;
-class MAbstractWidgetAnimation;
class MSceneWindowPrivate : public MWidgetControllerPrivate
{
@@ -43,11 +45,12 @@ public:
bool managedManually;
bool shown;
bool dismissed;
+ bool waitingForContextMenuEvent;
MSceneLayerEffect *effect;
- MAbstractWidgetAnimation *appearanceAnimation;
- MAbstractWidgetAnimation *disappearanceAnimation;
+ QPointer<MAbstractWidgetAnimation> appearanceAnimation;
+ QPointer<MAbstractWidgetAnimation> disappearanceAnimation;
};
diff --git a/src/corelib/widgets/mscenewindowmodel.h b/src/corelib/widgets/mscenewindowmodel.h
index b0e4a281..1321515d 100644
--- a/src/corelib/widgets/mscenewindowmodel.h
+++ b/src/corelib/widgets/mscenewindowmodel.h
@@ -26,6 +26,11 @@ class M_EXPORT MSceneWindowModel : public MWidgetModel
{
Q_OBJECT
M_MODEL_INTERNAL(MSceneWindowModel)
+
+ /*!
+ * \property The scene window will disappear after a timeout
+ */
+ M_MODEL_PROPERTY(int, disappearTimeout, DisappearTimeout, true, 0)
};
#endif
diff --git a/src/corelib/widgets/mtextedit.cpp b/src/corelib/widgets/mtextedit.cpp
index bf231f33..f95eaf96 100644
--- a/src/corelib/widgets/mtextedit.cpp
+++ b/src/corelib/widgets/mtextedit.cpp
@@ -78,7 +78,7 @@ namespace
* \param type widget type (single line or multiline)
*/
MTextEditPrivate::MTextEditPrivate()
- : pendingSoftwareInputPanelRequest(true),
+ : pendingSoftwareInputPanelRequest(false),
validator(0),
ownValidator(false),
completer(0),
@@ -199,11 +199,24 @@ bool MTextEditPrivate::doBackspace()
}
QTextCursor currentPositionCursor = q->textCursor();
+ int position = currentPositionCursor.position();
+
+ if (position == 0) {
+ return false;
+ }
+
currentPositionCursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor);
QTextDocumentFragment currentFragment = currentPositionCursor.selection();
+
+ QTextCharFormat format;
+ // setPosition() is required to get the style that would be applied when a text is inserted at the cursor position
+ currentPositionCursor.setPosition(position);
+ format = currentPositionCursor.charFormat();
+
cursor()->deletePreviousChar();
if (validateCurrentBlock() == true) {
+ cursor()->setCharFormat(format);
return true;
} else {
@@ -230,15 +243,13 @@ bool MTextEditPrivate::doDelete()
QTextDocumentFragment currentFragment = currentPositionCursor.selection();
cursor()->deleteChar();
- if (validateCurrentBlock() == true) {
- emit q->cursorPositionChanged();
- return true;
-
- } else {
+ if (!validateCurrentBlock()) {
// document doesn't validate after delete -> put the character back
cursor()->insertFragment(currentFragment);
return false;
}
+
+ return true;
}
@@ -317,7 +328,7 @@ bool MTextEditPrivate::doSignCycle()
* \param text text to be inserted
* \return true if some text was successfully inserted
*/
-bool MTextEditPrivate::doTextInsert(const QString &text)
+bool MTextEditPrivate::doTextInsert(const QString &text, bool usePreeditStyling)
{
Q_Q(MTextEdit);
@@ -346,6 +357,8 @@ bool MTextEditPrivate::doTextInsert(const QString &text)
int textPosition = 0;
int filteredTextLength = filteredText.length();
int snippetLength = -1;
+ int listIndex = -1;
+ int count = 0;
do {
if (textPosition >= filteredTextLength) {
@@ -372,7 +385,12 @@ bool MTextEditPrivate::doTextInsert(const QString &text)
QString textSnippet = filteredText.mid(textPosition, snippetLength);
int cursorPosBefore = cursor()->position();
- cursor()->insertText(textSnippet);
+
+ if (usePreeditStyling == true) {
+ insertTextWithPreeditStyling(textSnippet, listIndex, count);
+ } else {
+ cursor()->insertText(textSnippet);
+ }
if (validateCurrentBlock() == true) {
changed = true;
@@ -481,7 +499,10 @@ void MTextEditPrivate::setPreeditText(const QString &text,
// If this becomes problematic, we should move this formatting to paintContext of the view.
layout->setAdditionalFormats(preeditStyles);
- textCursor->insertText(text);
+ int listIndex = -1;
+ int count = 0;
+ insertTextWithPreeditStyling(text, listIndex, count);
+ clearUnusedPreeditStyling(listIndex, count);
// mark preedit as selection
int position = textCursor->position();
@@ -498,6 +519,8 @@ void MTextEditPrivate::commitPreedit()
{
Q_Q(MTextEdit);
+ preeditStyling.clear();
+
// Nothing to commit if not pre-editing
if (isPreediting() == false) {
return;
@@ -638,6 +661,33 @@ bool MTextEditPrivate::isPreediting() const
return (q->mode() == MTextEditModel::EditModeActive);
}
+void MTextEditPrivate::requestSip()
+{
+ Q_Q(MTextEdit);
+ Q_ASSERT_X(q->sceneManager(),
+ "MTextEditPrivate::requestSip()",
+ "Invalid SIP request - no scene manager found!");
+
+ q->sceneManager()->requestSoftwareInputPanel(q);
+ pendingSoftwareInputPanelRequest = false;
+}
+
+void MTextEditPrivate::requestAutoSip(Qt::FocusReason fr)
+{
+ Q_Q(MTextEdit);
+
+ if (!q->isAutoSipEnabled()) {
+ return;
+ }
+
+ if (fr == Qt::MouseFocusReason) {
+ // Wait for the mouse release event instead so that the window relocation that might
+ // happen does not change the mouse position *before* the button is released.
+ pendingSoftwareInputPanelRequest = true;
+ } else {
+ requestSip();
+ }
+}
/*!
* \brief Sends mouse events to input context mouse handling method
@@ -715,6 +765,172 @@ QEvent::Type MTextEditPrivate::translateGraphicsSceneMouseTypeToQMouse(QEvent::T
return result;
}
+/*!
+ * \brief stores the style information of text in pre-edit mode
+ * \param start position from where to start reading the style for storing
+ * \param end position where to end reading the style
+ */
+void MTextEditPrivate::storePreeditTextStyling(int start, int end)
+{
+ QTextCursor *textCursor = cursor();
+ int cursorPosition = textCursor->position();
+
+ for (int i = start + 1; i <= end; ++i) {
+ textCursor->setPosition(i, QTextCursor::KeepAnchor);
+ QTextCharFormat charFormat = textCursor->charFormat();
+
+ if (preeditStyling.isEmpty() == false) {
+ styleData &currentStyle = preeditStyling.last();
+
+ if (currentStyle.charFormat != charFormat) {
+ styleData newStyle;
+
+ newStyle.charFormat = charFormat;
+ newStyle.count = 1;
+ preeditStyling.push_back(newStyle);
+ } else {
+ currentStyle.count++;
+ }
+ } else {
+ styleData newStyle;
+
+ newStyle.charFormat = charFormat;
+ newStyle.count = 1;
+ preeditStyling.push_back(newStyle);
+ }
+ }
+
+ textCursor->setPosition(cursorPosition, QTextCursor::KeepAnchor);
+}
+
+
+/*!
+ * \brief inserts text by applying the stored preedit styling information
+ * \param currentListIndex styling list index to start reading from the stored styling
+ * \param currentCount character index within the current styling list index
+ */
+void MTextEditPrivate::insertTextWithPreeditStyling(const QString &text, int &currentListIndex, int &currentCount)
+{
+ QTextCursor *textCursor = cursor();
+ const int textLength = text.length();
+ int listIndex = currentListIndex;
+ int count = currentCount;
+ int preeditStyleSize = preeditStyling.size();
+ int currentIndex = textLength;
+
+ QTextCharFormat format = textCursor->charFormat();
+
+ styleData newStyle;
+ newStyle.charFormat = format;
+ newStyle.count = 1;
+
+ if (preeditStyleSize == 0) {
+ preeditStyling.push_back(newStyle);
+ preeditStyleSize++;
+ }
+
+ for (int i = 0; i < textLength; ++i) {
+ if (preeditStyling.isEmpty() != true) {
+ if (count == 0) {
+ listIndex++;
+ if (listIndex == preeditStyleSize) {
+ QTextCharFormat charFormat = preeditStyling.at(preeditStyleSize - 1).charFormat;
+ textCursor->setCharFormat(charFormat);
+ currentIndex = i;
+ listIndex = preeditStyleSize - 1;
+ break;
+ }
+
+ count = preeditStyling.at(listIndex).count;
+ }
+
+ if (count == 0) {
+ styleData &lastStyle = preeditStyling[listIndex];
+ lastStyle.count++;
+ count = 1;
+ }
+
+ QTextCharFormat charFormat = preeditStyling.at(listIndex).charFormat;
+ textCursor->setCharFormat(charFormat);
+ count--;
+ }
+
+ textCursor->insertText(text.at(i));
+ }
+
+ for (int i = currentIndex; i < textLength; ++i) {
+ if (preeditStyling.isEmpty() != true) {
+ styleData &newStyle = preeditStyling[listIndex];
+ newStyle.count++;
+ }
+ textCursor->insertText(text.at(i));
+ }
+
+ currentListIndex = listIndex;
+ currentCount = count;
+}
+
+
+/*!
+ * \brief adds a style to the stored preedit styling
+ * \param StyleType current style type
+ */
+void MTextEditPrivate::addStyleToPreeditStyling(StyleType currentStyleType, bool setValue)
+{
+ QTextCharFormat format;
+ int preeditStyleSize = preeditStyling.size();
+
+ if (preeditStyleSize > 0) {
+ format = preeditStyling[preeditStyleSize - 1].charFormat;
+ }
+
+ if (currentStyleType == Underline) {
+ format.setFontUnderline(setValue);
+ } else if (currentStyleType == Italic) {
+ format.setFontItalic(setValue);
+ } else { // bold
+ QFont::Weight wt = QFont::Normal;
+ if (setValue)
+ wt = QFont::Bold;
+
+ format.setFontWeight(wt);
+ }
+
+ if ((preeditStyleSize > 0) && (preeditStyling[preeditStyleSize - 1].count == 0)) {
+ preeditStyling[preeditStyleSize - 1].charFormat = format;
+ } else {
+ styleData currentStyle;
+ currentStyle.charFormat = format;
+ currentStyle.count = 0;
+ preeditStyling.push_back(currentStyle);
+ }
+}
+
+
+/*!
+ * \brief clears the unused styling from stored preedit styling information
+ * \param currentListIndex styling list index to start erasing from the stored styling
+ * \param currentCount character index within the current styling list index
+ */
+void MTextEditPrivate::clearUnusedPreeditStyling(int currentListIndex, int currentCount)
+{
+ int preeditTextStyleSize = preeditStyling.size();
+
+ if ((currentListIndex < 0) || (currentListIndex >= preeditTextStyleSize)) {
+ return;
+ }
+
+ styleData &style = preeditStyling[currentListIndex];
+ style.count -= currentCount;
+
+ for (int i = currentListIndex + 1; i < preeditTextStyleSize; i++) {
+ preeditStyling.removeAt(i);
+ }
+
+ if (style.count == 0) {
+ preeditStyling.removeAt(currentListIndex);
+ }
+}
void MTextEditPrivate::_q_confirmCompletion(const QString &completion)
{
@@ -738,6 +954,9 @@ void MTextEditPrivate::_q_confirmCompletion(const QString &completion)
cursor()->setPosition(index + block.position() + prefix.length(), QTextCursor::KeepAnchor);
cursor()->removeSelectedText();
doTextInsert(completion);
+ QObject::disconnect(q, SIGNAL(textChanged()), completer, SLOT(complete()));
+ emit q->textChanged();
+ QObject::connect(q, SIGNAL(textChanged()), completer, SLOT(complete()));
q->updateMicroFocus();
}
@@ -966,6 +1185,10 @@ void MTextEdit::keyPressEvent(QKeyEvent *event)
copy();
event->accept();
return;
+ } else if (event->matches(QKeySequence::SelectAll)) {
+ selectAll();
+ event->accept();
+ return;
}
if ((textInteractionFlags() & Qt::TextEditable) == 0) {
@@ -980,10 +1203,6 @@ void MTextEdit::keyPressEvent(QKeyEvent *event)
cut();
event->accept();
return;
- } else if (event->matches(QKeySequence::SelectAll)) {
- selectAll();
- event->accept();
- return;
}
// we continue by assuming some input is to be made
@@ -997,8 +1216,16 @@ void MTextEdit::keyPressEvent(QKeyEvent *event)
QTextDocumentFragment selectedFragment;
int selectionStart = -1;
+ QTextCharFormat format;
if (wasSelecting == true) {
+ QTextCursor positionCursor = textCursor();
+ int position = positionCursor.selectionStart();
+ // setPosition() is required to get the style that would be applied when a text is
+ // inserted at the position + 1
+ positionCursor.setPosition(position + 1);
+ format = positionCursor.charFormat();
+
selectionStart = d->cursor()->selectionStart();
selectedFragment = d->cursor()->selection();
d->cursor()->removeSelectedText();
@@ -1015,6 +1242,7 @@ void MTextEdit::keyPressEvent(QKeyEvent *event)
if (wasSelecting == false) {
modified = d->doBackspace();
} else {
+ d->cursor()->setCharFormat(format);
modified = true;
}
break;
@@ -1076,6 +1304,19 @@ void MTextEdit::keyPressEvent(QKeyEvent *event)
}
}
+
+void MTextEdit::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+ Q_D(MTextEdit);
+ MWidgetController::mouseReleaseEvent(event);
+
+ // Widget was focused-in on corresponding mouse press event:
+ if (d->pendingSoftwareInputPanelRequest) {
+ d->requestSip();
+ }
+}
+
+
void MTextEdit::focusInEvent(QFocusEvent *event)
{
Q_D(MTextEdit);
@@ -1090,13 +1331,7 @@ void MTextEdit::focusInEvent(QFocusEvent *event)
sceneManager(), SLOT(ensureCursorVisible()),
Qt::UniqueConnection);
- if (event->reason() == Qt::MouseFocusReason) {
- // Wait for the mouse release event instead so that the window relocation that might
- // happen does not change the mouse position *before* the button is released.
- d->pendingSoftwareInputPanelRequest = true;
- } else {
- sceneManager()->requestSoftwareInputPanel(this);
- }
+ d->requestAutoSip(event->reason());
}
if (model()->autoSelectionEnabled() == true) {
@@ -1157,6 +1392,7 @@ bool MTextEdit::insert(const QString &text)
emit selectionChanged();
} else if (mode() == MTextEditModel::EditModeActive) {
d->removePreedit();
+ d->preeditStyling.clear();
}
d->setMode(MTextEditModel::EditModeBasic);
@@ -1183,9 +1419,11 @@ bool MTextEdit::setText(const QString &text)
int cursorPosBefore = d->cursor()->position();
bool wasSelecting = hasSelectedText();
+ bool wasEmpty = (document()->characterCount() == 0);
// clear the state
d->removePreedit();
+ d->preeditStyling.clear();
d->cursor()->clearSelection();
document()->clear();
d->setMode(MTextEditModel::EditModeBasic);
@@ -1204,16 +1442,25 @@ bool MTextEdit::setText(const QString &text)
d->cursor()->insertText(filteredText);
- bool accepted = hasAcceptableInput();
+ bool accepted = true;
- if (accepted == true) {
- updateMicroFocus();
- emit textChanged();
+ if (d->validator) {
+ QString textCopy = text;
+ int cursorPos = text.length();
+ QValidator::State result = d->validator->validate(textCopy, cursorPos);
+ accepted = (result != QValidator::Invalid);
+ }
- } else {
+ if (!accepted) {
document()->clear();
}
+ // only avoid signaling if empty before and after
+ if (!((document()->characterCount() == 0) && wasEmpty)) {
+ updateMicroFocus();
+ emit textChanged();
+ }
+
if (d->cursor()->position() != cursorPosBefore) {
emit cursorPositionChanged();
}
@@ -1268,12 +1515,6 @@ void MTextEdit::handleMouseRelease(int eventCursorPosition, QGraphicsSceneMouseE
int cursorPositionBefore = cursorPosition();
- // Widget was focused-in on corresponding mouse press event:
- if (sceneManager() && d->pendingSoftwareInputPanelRequest) {
- sceneManager()->requestSoftwareInputPanel(this);
- d->pendingSoftwareInputPanelRequest = false;
- }
-
deselect();
if (d->isPositionOnPreedit(eventCursorPosition) == false) {
@@ -1296,6 +1537,7 @@ void MTextEdit::handleMouseRelease(int eventCursorPosition, QGraphicsSceneMouseE
int end = breakIterator.next(eventCursorPosition);
QString preedit = text.mid(start, end - start);
+ d->storePreeditTextStyling(start, end);
d->cursor()->setPosition(start);
d->cursor()->setPosition(end, QTextCursor::KeepAnchor);
QTextDocumentFragment preeditFragment = d->cursor()->selection();
@@ -1317,6 +1559,7 @@ void MTextEdit::handleMouseRelease(int eventCursorPosition, QGraphicsSceneMouseE
if (injectionAccepted == false) {
d->cursor()->insertFragment(preeditFragment);
d->setCursorPosition(eventCursorPosition);
+ d->preeditStyling.clear();
}
} else {
@@ -1418,6 +1661,7 @@ void MTextEdit::paste()
if (changed) {
emit textChanged();
+ emit cursorPositionChanged();
updateMicroFocus();
} else {
mDebug("MTextEdit") << __PRETTY_FUNCTION__ << "paste failed";
@@ -1450,6 +1694,7 @@ void MTextEdit::cut()
d->sendCopyAvailable(false);
emit selectionChanged();
emit textChanged();
+ emit cursorPositionChanged();
updateMicroFocus();
}
}
@@ -1515,7 +1760,8 @@ void MTextEdit::inputMethodEvent(QInputMethodEvent *event)
// append possible commit string
if (commitString.isEmpty() == false) {
- insertionSuccess = d->doTextInsert(commitString);
+ insertionSuccess = d->doTextInsert(commitString, true);
+ d->preeditStyling.clear();
if (insertionSuccess == false && wasSelecting == true) {
// validation failed, put the old selection back
@@ -1624,37 +1870,65 @@ void MTextEdit::setTextCursor(const QTextCursor &cursor)
void MTextEdit::setContentType(M::TextContentType type)
{
Q_D(MTextEdit);
- Qt::InputMethodHints newHint;
model()->setType(type);
+ // update validator if it's currently our, otherwise leave it intact
// FIXME: doesn't work if model has content type already from somewhere
if (d->ownValidator == true) {
delete d->validator;
+ d->validator = 0;
+ d->ownValidator = false;
}
- d->validator = 0;
+ if (d->validator == 0) {
+ QRegExp rx;
+
+ switch (type) {
+ case M::NumberContentType:
+ rx.setPattern(NumberCharacterSet);
+ d->validator = new QRegExpValidator(rx, 0);
+ break;
- QRegExp rx;
+ case M::PhoneNumberContentType:
+ rx.setPattern(PhoneNumberCharacterSet);
+ d->validator = new QRegExpValidator(rx, 0);
+ break;
+
+ case M::EmailContentType:
+ rx.setPattern(EmailCharacterSet);
+ d->validator = new QRegExpValidator(rx, 0);
+ break;
+
+ case M::UrlContentType:
+ //TODO: No check rule for URL yet
+ break;
+
+ default:
+ break;
+ }
+
+ // if a validator was created, we own it
+ if (d->validator != 0) {
+ d->ownValidator = true;
+ }
+ }
+
+ // update other state
+ Qt::InputMethodHints newHint;
switch (type) {
case M::NumberContentType:
- rx.setPattern(NumberCharacterSet);
- d->validator = new QRegExpValidator(rx, 0);
setInputMethodCorrectionEnabled(false);
newHint = Qt::ImhFormattedNumbersOnly;
break;
case M::PhoneNumberContentType:
- rx.setPattern(PhoneNumberCharacterSet);
- d->validator = new QRegExpValidator(rx, 0);
setInputMethodCorrectionEnabled(false);
newHint = Qt::ImhDialableCharactersOnly;
break;
case M::EmailContentType:
- rx.setPattern(EmailCharacterSet);
- d->validator = new QRegExpValidator(rx, 0);
setInputMethodCorrectionEnabled(false);
setInputMethodAutoCapitalizationEnabled(false);
newHint = Qt::ImhEmailCharactersOnly;
@@ -1663,7 +1937,6 @@ void MTextEdit::setContentType(M::TextContentType type)
case M::UrlContentType:
setInputMethodCorrectionEnabled(false);
setInputMethodAutoCapitalizationEnabled(false);
- //TODO: No check rule for URL yet
newHint = Qt::ImhUrlCharactersOnly;
break;
@@ -1672,11 +1945,6 @@ void MTextEdit::setContentType(M::TextContentType type)
break;
}
- // if a validator was created, we own it
- if (d->validator != 0) {
- d->ownValidator = true;
- }
-
setInputMethodHints((inputMethodHints() & ~Qt::ImhExclusiveInputMask) | newHint);
}
@@ -1990,6 +2258,16 @@ MCompleter *MTextEdit::completer()
return d->completer;
}
+void MTextEdit::setAutoSipEnabled(bool enabled)
+{
+ model()->setAutoSipEnabled(enabled);
+}
+
+bool MTextEdit::isAutoSipEnabled() const
+{
+ return model()->isAutoSipEnabled();
+}
+
void MTextEdit::attachToolbar(const QString &name)
{
if (attachedToolbar() == name)
diff --git a/src/corelib/widgets/mtextedit.h b/src/corelib/widgets/mtextedit.h
index 1eddae1e..0c18d7f5 100644
--- a/src/corelib/widgets/mtextedit.h
+++ b/src/corelib/widgets/mtextedit.h
@@ -75,6 +75,7 @@ class M_EXPORT MTextEdit : public MWidgetController
Q_PROPERTY(bool inputMethodPredictionEnabled READ inputMethodPredictionEnabled WRITE setInputMethodPredictionEnabled)
Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength)
Q_PROPERTY(MTextEditModel::EchoMode echoMode READ echoMode WRITE setEchoMode)
+ Q_PROPERTY(bool autoSipEnabled READ isAutoSipEnabled WRITE setAutoSipEnabled)
public:
typedef M::TextContentType TextContentType; // workaround for moc bug
@@ -362,6 +363,17 @@ public:
MCompleter *completer();
/*!
+ * \brief Allows control over SIP handling
+ *
+ * When a text edit is focused and this property is disabled, no software
+ * input panel will be requested.
+ */
+ void setAutoSipEnabled(bool enabled);
+
+ //! \sa setAutoSipEnabled
+ bool isAutoSipEnabled() const;
+
+ /*!
* \brief Attaches a custom toolbar named \a name.
* \param name is the absolute file name of a custom toolbar, or the relative file under
* /usr/share/meegotouch/imtoolbars/.
@@ -501,6 +513,7 @@ Q_SIGNALS:
protected:
/*! \reimp */
virtual void keyPressEvent(QKeyEvent *event);
+ virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event);
virtual void inputMethodEvent(QInputMethodEvent *);
diff --git a/src/corelib/widgets/mtextedit_p.h b/src/corelib/widgets/mtextedit_p.h
index d69d3a0c..b4d424a2 100644
--- a/src/corelib/widgets/mtextedit_p.h
+++ b/src/corelib/widgets/mtextedit_p.h
@@ -54,7 +54,7 @@ public:
bool doBackspace();
bool doDelete();
bool doTab();
- bool doTextInsert(const QString &text);
+ bool doTextInsert(const QString &text, bool usePreeditStyling = false);
bool onReturnPressed(QKeyEvent *event);
bool doSignCycle();
@@ -69,6 +69,9 @@ public:
bool isPositionOnPreedit(int cursorPosition) const;
bool isPreediting() const;
+ void requestSip();
+ void requestAutoSip(Qt::FocusReason fr);
+
void setMode(MTextEditModel::EditMode mode);
void notifyInputContextMouseHandler(int position, QGraphicsSceneMouseEvent *event);
@@ -77,12 +80,32 @@ public:
static QEvent::Type translateGraphicsSceneMouseTypeToQMouse(QEvent::Type input);
+ enum StyleType
+ {
+ Bold,
+ Italic,
+ Underline
+ };
+
+ struct styleData
+ {
+ QTextCharFormat charFormat;
+ int count;
+ };
+ QList<styleData> preeditStyling;
+
+ void storePreeditTextStyling(int start, int end);
+ void addStyleToPreeditStyling(StyleType currentStyleType, bool setValue);
+ void insertTextWithPreeditStyling(const QString &text, int &currentListIndex, int &currentCount);
+ void clearUnusedPreeditStyling(int currentListIndex, int currentCount);
+
void _q_confirmCompletion(const QString &);
- bool copy();
+ virtual bool copy();
-private:
bool pendingSoftwareInputPanelRequest;
+
+private:
const QValidator *validator;
bool ownValidator; // setting content type creates a validator that the widget owns
diff --git a/src/corelib/widgets/mtexteditmodel.h b/src/corelib/widgets/mtexteditmodel.h
index 9d3ba3a9..2dd495b4 100644
--- a/src/corelib/widgets/mtexteditmodel.h
+++ b/src/corelib/widgets/mtexteditmodel.h
@@ -88,6 +88,7 @@ private:
M_MODEL_PROPERTY(QString, toolbar, Toolbar, true, QString())
M_MODEL_PROPERTY(int, toolbarId, ToolbarId, true, -1)
M_MODEL_PROPERTY(MTextEditModel::EchoMode, echo, Echo, true, MTextEditModel::Normal)
+ M_MODEL_PROPERTY(bool, isAutoSipEnabled, AutoSipEnabled, true, true)
public:
void updateCursor() {
diff --git a/src/corelib/widgets/mtoolbar.cpp b/src/corelib/widgets/mtoolbar.cpp
index 1d65b20f..96c61fe1 100644
--- a/src/corelib/widgets/mtoolbar.cpp
+++ b/src/corelib/widgets/mtoolbar.cpp
@@ -47,10 +47,9 @@ void MToolBarPrivate::initLayout()
{
Q_Q(MToolBar);
- QGraphicsLinearLayout *layout = new QGraphicsLinearLayout();
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(q);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
- q->setLayout(layout);
}
MToolBar::MToolBar(QGraphicsItem *parent, const QString &viewType)
diff --git a/src/corelib/widgets/mwindow.cpp b/src/corelib/widgets/mwindow.cpp
index 4c927b23..27d5856d 100644
--- a/src/corelib/widgets/mwindow.cpp
+++ b/src/corelib/widgets/mwindow.cpp
@@ -136,6 +136,8 @@ void MWindowPrivate::init()
q->viewport()->grabGesture(Qt::TapAndHoldGesture);
q->viewport()->grabGesture(Qt::PinchGesture);
q->viewport()->grabGesture(Qt::PanGesture);
+ q->viewport()->grabGesture(Qt::SwipeGesture);
+ q->viewport()->grabGesture(Qt::TapGesture);
q->setAttribute(Qt::WA_AcceptTouchEvents);
}
@@ -207,6 +209,13 @@ M::Orientation MWindowPrivate::orientation(M::OrientationAngle angle) const
return (angle == M::Angle0 || angle == M::Angle180) ? M::Landscape : M::Portrait;
}
+// return true if modifiers match what is required for debug keyboard shortcuts
+bool MWindowPrivate::debugShortcutModifiersPresent(Qt::KeyboardModifiers modifiers) const
+{
+ return (modifiers & (Qt::ControlModifier | Qt::AltModifier)
+ && (modifiers & Qt::ShiftModifier));
+}
+
void MWindowPrivate::notifyWidgetsAboutOrientationChange()
{
Q_Q(MWindow);
@@ -357,6 +366,12 @@ void MWindow::setTranslucentBackground(bool enable)
d->glWidget->setPalette(palette);
} else {
d->glWidget = MComponentCache::glWidget();
+
+ if (d->glWidget->isValid() == false) {
+ qCritical("Could not create a valid QGLWidget, quitting.");
+ exit(EXIT_FAILURE);
+ }
+
setViewport(d->glWidget);
}
#ifdef M_USE_OPENGL
@@ -733,34 +748,37 @@ bool MWindow::event(QEvent *event)
bool updateNeeded = false;
//SIMULATION OF ROTATION FOR DEVELOPMENT PURPOSES
- QKeyEvent *k = (QKeyEvent *) event;
- if (Qt::Key_R == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
- foreach(MWindow * window, MApplication::windows()) {
- int newAngle = (window->orientationAngle() + ((k->modifiers() & Qt::ShiftModifier) ? 270 : 90)) % 360;
+ QKeyEvent *k = static_cast<QKeyEvent *>(event);
+ if (Qt::Key_R == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
+ foreach (MWindow *window, MApplication::windows()) {
+ int newAngle = (window->orientationAngle()
+ + ((k->modifiers() & Qt::AltModifier) ? 270 : 90)) % 360;
if (!window->isOrientationAngleLocked()) {
- if (!window->isOrientationLocked() || window->orientation() == (M::Orientation)newAngle)
- window->setOrientationAngle((M::OrientationAngle)newAngle);
+ if ((!window->isOrientationLocked())
+ || window->orientation() == static_cast<M::Orientation>(newAngle)) {
+ window->setOrientationAngle(static_cast<M::OrientationAngle>(newAngle));
+ }
}
}
- } else if (Qt::Key_P == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_P == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowPosition(!MApplication::showPosition());
updateNeeded = true;
- } else if (Qt::Key_S == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_S == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowSize(!MApplication::showSize());
updateNeeded = true;
- } else if (Qt::Key_B == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_B == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowBoundingRect(!MApplication::showBoundingRect());
updateNeeded = true;
- } else if (Qt::Key_M == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_M == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowMargins(!MApplication::showMargins());
updateNeeded = true;
- } else if (Qt::Key_N == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_N == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowObjectNames(!MApplication::showObjectNames());
updateNeeded = true;
- } else if (Qt::Key_F == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_F == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
MApplication::setShowFps(!MApplication::showFps());
updateNeeded = true;
- } else if (Qt::Key_D == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_D == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
Qt::LayoutDirection dir = MApplication::layoutDirection();
if (dir == Qt::LeftToRight)
@@ -771,7 +789,7 @@ bool MWindow::event(QEvent *event)
MApplication::setLayoutDirection(dir);
updateNeeded = true;
- } else if (Qt::Key_L == k->key() && (k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) {
+ } else if (Qt::Key_L == k->key() && d->debugShortcutModifiersPresent(k->modifiers())) {
// switch language
QString language;
diff --git a/src/corelib/widgets/mwindow_p.h b/src/corelib/widgets/mwindow_p.h
index 5eeb40a9..faf70762 100644
--- a/src/corelib/widgets/mwindow_p.h
+++ b/src/corelib/widgets/mwindow_p.h
@@ -40,6 +40,7 @@ public:
void handleApplicationLayoutDirectionChangeEvent(QGraphicsItem *item);
void handleLanguageChangeEvent(QGraphicsItem *item);
M::Orientation orientation(M::OrientationAngle angle) const;
+ bool debugShortcutModifiersPresent(Qt::KeyboardModifiers modifiers) const;
#ifdef Q_WS_X11
void appendVisibilityChangeMask();
diff --git a/src/corelib/widgets/widgets.pri b/src/corelib/widgets/widgets.pri
index be1ef10f..ca45964c 100644
--- a/src/corelib/widgets/widgets.pri
+++ b/src/corelib/widgets/widgets.pri
@@ -36,6 +36,7 @@ PUBLIC_HEADERS += \
$$WIDGETS_SRC_DIR/mpopuplist_p.h \
$$WIDGETS_SRC_DIR/mpositionindicator.h \
$$WIDGETS_SRC_DIR/mprogressindicator.h \
+ $$WIDGETS_SRC_DIR/mrichtextedit.h \
$$WIDGETS_SRC_DIR/mscenewindow.h \
$$WIDGETS_SRC_DIR/mseekbar.h \
$$WIDGETS_SRC_DIR/mslider.h \
@@ -101,6 +102,7 @@ SOURCES += \
$$WIDGETS_SRC_DIR/mapplicationpage.cpp \
$$WIDGETS_SRC_DIR/mapplicationwindow.cpp \
$$WIDGETS_SRC_DIR/mbutton.cpp \
+ $$WIDGETS_SRC_DIR/mbuttonmodel.cpp \
$$WIDGETS_SRC_DIR/mbuttongroup.cpp \
$$WIDGETS_SRC_DIR/mcombobox.cpp \
$$WIDGETS_SRC_DIR/mcontainer.cpp \
@@ -131,6 +133,7 @@ SOURCES += \
$$WIDGETS_SRC_DIR/mpopuplist.cpp \
$$WIDGETS_SRC_DIR/mpositionindicator.cpp \
$$WIDGETS_SRC_DIR/mprogressindicator.cpp \
+ $$WIDGETS_SRC_DIR/mrichtextedit.cpp \
$$WIDGETS_SRC_DIR/mscenewindow.cpp \
$$WIDGETS_SRC_DIR/mseekbar.cpp \
$$WIDGETS_SRC_DIR/mslider.cpp \
diff --git a/src/corelib/workspace/devices.conf b/src/corelib/workspace/devices.conf
index d5847a4a..a3292730 100644
--- a/src/corelib/workspace/devices.conf
+++ b/src/corelib/workspace/devices.conf
@@ -3,40 +3,47 @@ resolutionX=864
resolutionY=480
ppiX=261
ppiY=261
+showStatusBar=true
[N900]
resolutionX=800
resolutionY=480
ppiX=261
ppiY=261
+showStatusBar=false
[N95]
resolutionX=240
resolutionY=320
ppiX=153
ppiY=153
+showStatusBar=false
[Pineapple]
resolutionX=480
resolutionY=320
ppiX=163
ppiY=163
+showStatusBar=false
[N95i]
resolutionX=240
resolutionY=800
ppiX=152
ppiY=152
+showStatusBar=false
[QVGAL]
resolutionX=320
resolutionY=240
ppiX=152
ppiY=152
+showStatusBar=true
[N97]
resolutionX=640
resolutionY=360
ppiX=209
ppiY=209
+showStatusBar=false
diff --git a/src/corelib/workspace/mdeviceprofile.cpp b/src/corelib/workspace/mdeviceprofile.cpp
index 0ff17d2d..7810ef0f 100644
--- a/src/corelib/workspace/mdeviceprofile.cpp
+++ b/src/corelib/workspace/mdeviceprofile.cpp
@@ -21,6 +21,7 @@
#include <QSize>
#include <QSettings>
#include <QFile>
+#include <QDir>
#include "mdebug.h"
#include "mdeviceprofile.h"
@@ -35,6 +36,14 @@ MDeviceProfilePrivate::MDeviceProfilePrivate()
{
QString filename = "/etc/meegotouch/devices.conf";
+#ifdef Q_OS_WIN
+ QDir appDir(QCoreApplication::applicationDirPath());
+ appDir.cdUp();
+ appDir.cd("etc");
+ appDir.cd("meegotouch");
+ filename = appDir.path().append("/devices.conf" );
+#endif
+
if(!load(filename)) {
qFatal("Failed to load device profile.");
}
@@ -61,6 +70,7 @@ bool MDeviceProfilePrivate::load(const QString& filename)
resolution.setHeight(settings.value(device + "/resolutionY", 0).toInt());
pixelsPerInch.setWidth(settings.value(device + "/ppiX", 0).toInt());
pixelsPerInch.setHeight(settings.value(device + "/ppiY", 0).toInt());
+ showStatusBar=settings.value(device+"/showStatusBar",false).toBool();
return true;
}
@@ -71,8 +81,14 @@ MDeviceProfile *MDeviceProfile::instance()
{
MComponentData *data = MComponentData::instance();
if (!data)
+ {
qFatal("There is no instance of MDeviceProfile. Please create MComponentData first.");
- return data->d_ptr->deviceProfile;
+ return 0;
+ }
+ else
+ {
+ return data->d_ptr->deviceProfile;
+ }
}
MDeviceProfile::MDeviceProfile(QObject *parent)
@@ -104,3 +120,9 @@ QSize MDeviceProfile::pixelsPerInch() const
Q_D(const MDeviceProfile);
return d->pixelsPerInch;
}
+
+bool MDeviceProfile::showStatusbar() const
+{
+ Q_D(const MDeviceProfile);
+ return d->showStatusBar;
+}
diff --git a/src/corelib/workspace/mdeviceprofile.h b/src/corelib/workspace/mdeviceprofile.h
index 6d70c672..fc447453 100644
--- a/src/corelib/workspace/mdeviceprofile.h
+++ b/src/corelib/workspace/mdeviceprofile.h
@@ -52,6 +52,9 @@ public:
//! Return the target device pixels per inch
QSize pixelsPerInch() const;
+ //! Return whether the status bar should be shown on target device
+ bool showStatusbar() const;
+
protected:
MDeviceProfilePrivate *const d_ptr;
diff --git a/src/corelib/workspace/mdeviceprofile_p.h b/src/corelib/workspace/mdeviceprofile_p.h
index 5c43ead5..b29beef6 100644
--- a/src/corelib/workspace/mdeviceprofile_p.h
+++ b/src/corelib/workspace/mdeviceprofile_p.h
@@ -36,6 +36,7 @@ public:
QSize resolution;
QSize pixelsPerInch;
+ bool showStatusBar;
protected:
MDeviceProfile *q_ptr;
diff --git a/src/extensions/applicationextension/mapplicationextensionarea.cpp b/src/extensions/applicationextension/mapplicationextensionarea.cpp
index 41647f9d..f06a9545 100644
--- a/src/extensions/applicationextension/mapplicationextensionarea.cpp
+++ b/src/extensions/applicationextension/mapplicationextensionarea.cpp
@@ -38,15 +38,14 @@ MApplicationExtensionAreaPrivate::~MApplicationExtensionAreaPrivate()
{
}
-void MApplicationExtensionAreaPrivate::init(const QString &interface, const bool enableInProcessExtensions)
+void MApplicationExtensionAreaPrivate::init(const QString &interface)
{
Q_Q(MApplicationExtensionArea);
- extensionManager = QSharedPointer<MApplicationExtensionManager>(new MApplicationExtensionManager(interface, enableInProcessExtensions));
+ extensionManager = QSharedPointer<MApplicationExtensionManager>(new MApplicationExtensionManager(interface));
QObject::connect(extensionManager.data(), SIGNAL(extensionInstantiated(MApplicationExtensionInterface *)), q, SIGNAL(extensionInstantiated(MApplicationExtensionInterface *)), Qt::QueuedConnection);
QObject::connect(extensionManager.data(), SIGNAL(extensionRemoved(MApplicationExtensionInterface*)), q, SIGNAL(extensionRemoved(MApplicationExtensionInterface*)), Qt::QueuedConnection);
- QObject::connect(extensionManager.data(), SIGNAL(widgetCreated(MWidget*, MDataStore&)), q, SLOT(addWidget(MWidget*, MDataStore&)));
- QObject::connect(extensionManager.data(), SIGNAL(widgetRemoved(MWidget*)), q, SLOT(removeWidget(MWidget*)));
- extensionManager->init();
+ QObject::connect(extensionManager.data(), SIGNAL(widgetCreated(QGraphicsWidget*, MDataStore&)), q, SLOT(addWidget(QGraphicsWidget*, MDataStore&)));
+ QObject::connect(extensionManager.data(), SIGNAL(widgetRemoved(QGraphicsWidget*)), q, SLOT(removeWidget(QGraphicsWidget*)));
}
QList<MApplicationExtensionInterface*> MApplicationExtensionAreaPrivate::extensions()
@@ -57,13 +56,33 @@ QList<MApplicationExtensionInterface*> MApplicationExtensionAreaPrivate::extensi
//////////////////
// PUBLIC CLASS //
//////////////////
+MApplicationExtensionArea::MApplicationExtensionArea(const QString &interface, QGraphicsItem *parent) :
+ MExtensionArea(new MApplicationExtensionAreaPrivate(), new MApplicationExtensionAreaModel, parent)
+{
+ Q_D(MApplicationExtensionArea);
+ d->q_ptr = this;
+ d->init(interface);
+}
+
MApplicationExtensionArea::MApplicationExtensionArea(const QString &interface, const bool enableInProcessExtensions, QGraphicsItem *parent) :
- MExtensionArea(new MApplicationExtensionAreaPrivate, new MApplicationExtensionAreaModel, parent)
+ MExtensionArea(new MApplicationExtensionAreaPrivate(), new MApplicationExtensionAreaModel, parent)
{
- // Initialize the private implementation
Q_D(MApplicationExtensionArea);
d->q_ptr = this;
- d->init(interface, enableInProcessExtensions);
+ d->init(interface);
+
+ if (!enableInProcessExtensions) {
+ d->extensionManager->setInProcessFilter(QRegExp("$^"));
+ }
+
+ d->extensionManager->init();
+}
+
+MApplicationExtensionArea::MApplicationExtensionArea(MApplicationExtensionAreaPrivate *dd, MApplicationExtensionAreaModel *model, QGraphicsItem *parent, const QString &interface) :
+ MExtensionArea(dd, model, parent)
+{
+ Q_D(MApplicationExtensionArea);
+ d->init(interface);
}
MApplicationExtensionArea::MApplicationExtensionArea(MApplicationExtensionAreaPrivate *dd, MApplicationExtensionAreaModel *model,
@@ -71,15 +90,35 @@ MApplicationExtensionArea::MApplicationExtensionArea(MApplicationExtensionAreaPr
MExtensionArea(dd, model, parent)
{
Q_D(MApplicationExtensionArea);
+ d->init(interface);
- // Initialize the private implementation
- d->init(interface, enableInProcessExtensions);
+ if (!enableInProcessExtensions) {
+ d->extensionManager->setInProcessFilter(QRegExp("$^"));
+ }
}
MApplicationExtensionArea::~MApplicationExtensionArea()
{
}
+void MApplicationExtensionArea::setInProcessFilter(const QRegExp &inProcessFilter)
+{
+ Q_D(MApplicationExtensionArea);
+ d->extensionManager->setInProcessFilter(inProcessFilter);
+}
+
+void MApplicationExtensionArea::setOutOfProcessFilter(const QRegExp &outOfProcessFilter)
+{
+ Q_D(MApplicationExtensionArea);
+ d->extensionManager->setOutOfProcessFilter(outOfProcessFilter);
+}
+
+bool MApplicationExtensionArea::init()
+{
+ Q_D(MApplicationExtensionArea);
+ return d->extensionManager->init();
+}
+
QList<MApplicationExtensionInterface*> MApplicationExtensionArea::extensions()
{
Q_D(MApplicationExtensionArea);
diff --git a/src/extensions/applicationextension/mapplicationextensionarea.h b/src/extensions/applicationextension/mapplicationextensionarea.h
index 035707a0..a443a3ff 100644
--- a/src/extensions/applicationextension/mapplicationextensionarea.h
+++ b/src/extensions/applicationextension/mapplicationextensionarea.h
@@ -27,13 +27,12 @@ class MApplicationExtensionAreaPrivate;
class MApplicationExtensionInterface;
/*!
- * MApplicationExtensionArea is a widget which can be populated with application extensions. MApplicationExtensionArea
- * can be placed on any view that wants to have application extension support.
+ * MApplicationExtensionArea is a widget which can be populated with
+ * application extensions. MApplicationExtensionArea can be placed on
+ * any view that wants to have application extension support.
*
- * The MApplicationExtensionArea will load application extensions which implement the specified interface.
- *
- * \note The behaviour of this class will change in the future and cannot be used for real
- * application extension development right now.
+ * The MApplicationExtensionArea will load application extensions which
+ * implement the specified interface.
*
* \see \ref applicationextensions
*/
@@ -44,13 +43,64 @@ class M_EXPORT MApplicationExtensionArea : public MExtensionArea
public:
/*!
- * Constructor
- * \param interface Specifies which interface the application extensions must implement in order to be loaded to
- * this application extension area.
- * \param enableInProcessExtensions \c true if in process extensions should be loaded. \c false otherwise
- * \param parent Optional Object's parent
+ * Constructs an application extension area. The area is not initialized
+ * until init() has been called.
+ *
+ * \param interface the name of the interface the application extensions
+ * must implement in order to be loaded to this
+ * application extension area
+ * \param parent optional parent graphics item
+ */
+ explicit MApplicationExtensionArea(const QString &interface, QGraphicsItem *parent = NULL);
+
+ /*!
+ * Destroys the application extension area.
*/
- explicit MApplicationExtensionArea(const QString &interface, const bool enableInProcessExtensions = true, QGraphicsItem *parent = NULL);
+ virtual ~MApplicationExtensionArea();
+
+ /*!
+ * Sets a filter for allowing only certain extensions to be ran in the
+ * same process as the extension area. The filter is a regular expression
+ * which is matched against the .desktop file names of the extensions. By
+ * default all extensions are allowed to be loaded in-process. For example,
+ * use QRegExp("$^") to allow no extensions, QRegExp("/test(1|A).desktop$")
+ * to allow extensions test1.desktop and testA.desktop and QRegExp() to
+ * allow all extensions.
+ *
+ * Must be called before init().
+ * Calling this after init() has no effect.
+ *
+ * \param inProcessFilter a regular expression for defining which
+ * extension are allowed in-process
+ */
+ void setInProcessFilter(const QRegExp &inProcessFilter);
+
+ /*!
+ * Sets a filter for allowing only certain extensions to be ran in separate
+ * processes. The filter is a regular expression which is matched against
+ * the .desktop file names of the extensions. By default all extensions are
+ * allowed to be loaded in separate processes. For example,
+ * use QRegExp("$^") to allow no extensions, QRegExp("/test(1|A).desktop$")
+ * to allow extensions test1.desktop and testA.desktop and QRegExp() to
+ * allow all extensions.
+ *
+ * Must be called before init().
+ * Calling this after init() has no effect.
+ *
+ * \param outOfProcessFilter a regular expression for defining which
+ * extension are allowed out-of-process
+ */
+ void setOutOfProcessFilter(const QRegExp &outOfProcessFilter);
+
+ /*!
+ * Initializes the application extension area. All setters introduced by
+ * this class must be called before the area is initialized. Initialization
+ * will fail if no interface name has been provided or if the area has
+ * already been initialized.
+ *
+ * \return \c false if the initialization fails, \c true otherwise
+ */
+ bool init();
/*!
* Returns a list of in process extensions loaded by this manager
@@ -59,10 +109,25 @@ public:
*/
QList<MApplicationExtensionInterface*> extensions();
+ //! \internal
/*!
- * Destructor
+ * Constructs an application extension area. This constructor calls
+ * init() immediately so it is not possible to use the functions
+ * that need to be called before init() is called.
+ *
+ * \param interface Specifies which interface the application extensions
+ * must implement in order to be loaded to this
+ * application extension area.
+ * \param enableInProcessExtensions \c true if in process extensions should
+ * be loaded. \c false otherwise
+ * \param parent optional parent graphics item
+ *
+ * \deprecated This constructor is deprecated in favour of
+ * MApplicationExtensionArea(const QString &, QGraphicsItem *)
+ * and will be removed in libmeegotouch 0.21.
*/
- virtual ~MApplicationExtensionArea();
+ explicit MApplicationExtensionArea(const QString &interface, const bool enableInProcessExtensions, QGraphicsItem *parent = NULL);
+ //! \internal_end
signals:
/*!
@@ -84,8 +149,18 @@ protected:
* Protected constructor to be called by derived classes to set up the private implementation
* hierarchy.
*/
+ MApplicationExtensionArea(MApplicationExtensionAreaPrivate *dd, MApplicationExtensionAreaModel *model, QGraphicsItem *parent, const QString &interface);
+
+ //! \internal
+ /*!
+ * Protected constructor to be called by derived classes to set up the private implementation
+ * hierarchy.
+ *
+ * \deprecated
+ */
MApplicationExtensionArea(MApplicationExtensionAreaPrivate *dd, MApplicationExtensionAreaModel *model,
- QGraphicsItem *parent, const QString &interface, const bool enableInProcessExtensions);
+ QGraphicsItem *parent, const QString &interface, const bool enableInProcessExtensions);
+ //! \internal_end
private:
Q_DECLARE_PRIVATE(MApplicationExtensionArea)
diff --git a/src/extensions/applicationextension/mapplicationextensionarea_p.h b/src/extensions/applicationextension/mapplicationextensionarea_p.h
index 00de2a97..54d4cd70 100644
--- a/src/extensions/applicationextension/mapplicationextensionarea_p.h
+++ b/src/extensions/applicationextension/mapplicationextensionarea_p.h
@@ -50,9 +50,8 @@ public:
* is used for anything else.
*
* \param interface the extension interface name for the application extension area.
- * \param enableInProcessExtensions \c true if in process extensions should be loaded. \c false otherwise
*/
- void init(const QString &interface, const bool enableInProcessExtensions);
+ void init(const QString &interface);
/*!
* Returns a list of in process extensions loaded by this manager
diff --git a/src/extensions/applicationextension/mapplicationextensionareaview.cpp b/src/extensions/applicationextension/mapplicationextensionareaview.cpp
index a95637d5..5253a28a 100644
--- a/src/extensions/applicationextension/mapplicationextensionareaview.cpp
+++ b/src/extensions/applicationextension/mapplicationextensionareaview.cpp
@@ -42,7 +42,7 @@ void MApplicationExtensionAreaViewPrivate::init(MApplicationExtensionArea *contr
controller->setLayout(layout);
}
-void MApplicationExtensionAreaViewPrivate::addToLayout(MWidget *widget, int index)
+void MApplicationExtensionAreaViewPrivate::addToLayout(QGraphicsWidget *widget, int index)
{
QGraphicsLinearLayout *linearLayout = static_cast<QGraphicsLinearLayout *>(layout);
if (index >= 0) {
@@ -53,7 +53,7 @@ void MApplicationExtensionAreaViewPrivate::addToLayout(MWidget *widget, int inde
}
-void MApplicationExtensionAreaViewPrivate::connectContainerToWidget(MContainer *container, MWidget *widget) const
+void MApplicationExtensionAreaViewPrivate::connectContainerToWidget(MContainer *container, QGraphicsWidget *widget) const
{
const QMetaObject *mob = widget->metaObject();
@@ -111,4 +111,13 @@ MApplicationExtensionAreaView::~MApplicationExtensionAreaView()
{
}
+void MApplicationExtensionAreaView::applyStyle()
+{
+ Q_D(MApplicationExtensionAreaView);
+ MExtensionAreaView::applyStyle();
+
+ QGraphicsLinearLayout *linearLayout = static_cast<QGraphicsLinearLayout *>(d->layout);
+ linearLayout->setOrientation(style()->layoutOrientation());
+}
+
M_REGISTER_VIEW_NEW(MApplicationExtensionAreaView, MApplicationExtensionArea)
diff --git a/src/extensions/applicationextension/mapplicationextensionareaview.h b/src/extensions/applicationextension/mapplicationextensionareaview.h
index df8dfebb..7125489a 100644
--- a/src/extensions/applicationextension/mapplicationextensionareaview.h
+++ b/src/extensions/applicationextension/mapplicationextensionareaview.h
@@ -58,6 +58,10 @@ protected:
*/
MApplicationExtensionAreaView(MApplicationExtensionAreaViewPrivate &dd, MApplicationExtensionArea *controller);
+ //! \reimp
+ virtual void applyStyle();
+ //! \reimp_end
+
private:
Q_DISABLE_COPY(MApplicationExtensionAreaView)
Q_DECLARE_PRIVATE(MApplicationExtensionAreaView)
diff --git a/src/extensions/applicationextension/mapplicationextensionareaview_p.h b/src/extensions/applicationextension/mapplicationextensionareaview_p.h
index 62f308d8..b2ac6c6c 100644
--- a/src/extensions/applicationextension/mapplicationextensionareaview_p.h
+++ b/src/extensions/applicationextension/mapplicationextensionareaview_p.h
@@ -27,7 +27,7 @@ class MLinearLayoutPolicy;
class QGraphicsLinearLayout;
class MButton;
class MApplicationExtensionArea;
-class MWidget;
+class QGraphicsWidget;
/*!
* MApplicationExtensionAreaViewPrivate is the private class for MApplicationExtensionAreaView.
@@ -62,12 +62,12 @@ public:
* \param widget the widget
* \param index the index to insert or -1 to add to the end
*/
- virtual void addToLayout(MWidget *widget, int index = -1);
+ virtual void addToLayout(QGraphicsWidget *widget, int index = -1);
/*!
* Used to check properties of widget and connect signals between it and the MContainer
*/
- virtual void connectContainerToWidget(MContainer *container, MWidget *widget) const;
+ virtual void connectContainerToWidget(MContainer *container, QGraphicsWidget *widget) const;
};
#endif /* MAPPLICATIONEXTENSIONAREAVIEW_P_H_ */
diff --git a/src/extensions/applicationextension/mapplicationextensioninterface.h b/src/extensions/applicationextension/mapplicationextensioninterface.h
index 777bcc0f..7a4992e4 100644
--- a/src/extensions/applicationextension/mapplicationextensioninterface.h
+++ b/src/extensions/applicationextension/mapplicationextensioninterface.h
@@ -23,7 +23,7 @@
#include <QtPlugin>
#include "mexport.h"
-class MWidget;
+class QGraphicsWidget;
/**
* MApplicationExtensionInterface is the base class for application extension
@@ -64,7 +64,7 @@ public:
*
* \return a pointer to the extension's widget or NULL if the extension does not have a widget.
*/
- virtual MWidget *widget() { return NULL; }
+ virtual QGraphicsWidget *widget() { return NULL; }
};
Q_DECLARE_INTERFACE(MApplicationExtensionInterface, "com.meego.core.MApplicationExtensionInterface/1.0")
diff --git a/src/extensions/applicationextension/mapplicationextensionmanager.cpp b/src/extensions/applicationextension/mapplicationextensionmanager.cpp
index 2a400164..9da4d619 100644
--- a/src/extensions/applicationextension/mapplicationextensionmanager.cpp
+++ b/src/extensions/applicationextension/mapplicationextensionmanager.cpp
@@ -30,9 +30,9 @@
#include "mfiledatastore.h"
#include "mdebug.h"
-MApplicationExtensionManager::MApplicationExtensionManager(const QString &interface, const bool loadInProcessExtensions) :
- interface(interface),
- enableInProcessExtensions(loadInProcessExtensions)
+MApplicationExtensionManager::MApplicationExtensionManager(const QString &interface) :
+ initialized(false),
+ interface(interface)
{
}
@@ -47,17 +47,36 @@ MApplicationExtensionManager::~MApplicationExtensionManager()
}
}
+void MApplicationExtensionManager::setInProcessFilter(const QRegExp &inProcessFilter)
+{
+ if (!initialized) {
+ this->inProcessFilter = inProcessFilter;
+ }
+}
+
+void MApplicationExtensionManager::setOutOfProcessFilter(const QRegExp &outOfProcessFilter)
+{
+ if (!initialized) {
+ this->outOfProcessFilter = outOfProcessFilter;
+ }
+}
+
bool MApplicationExtensionManager::init()
{
+ if (initialized) {
+ return false;
+ }
+
if (!createDataStore()) {
mWarning("MApplicationExtensionManager") << "DataStore cannot be created for application extension manager. Bailing out.";
return false;
}
+ initialized = true;
updateAvailableExtensions(APPLICATION_EXTENSION_DATA_DIR);
+
// Start watching the application extensions directory for changes
connect(&watcher, SIGNAL(directoryChanged(const QString)), this, SLOT(updateAvailableExtensions(QString)));
-
watcher.addPath(APPLICATION_EXTENSION_DATA_DIR);
return true;
@@ -112,11 +131,13 @@ bool MApplicationExtensionManager::instantiateExtension(const MApplicationExtens
bool success = false;
if (isInProcess(metadata)) {
- if (enableInProcessExtensions) {
+ if (metadata.fileName().indexOf(inProcessFilter) >= 0) {
success = instantiateInProcessExtension(metadata.extensionBinary());
}
} else {
- success = instantiateOutOfProcessExtension(metadata);
+ if (metadata.fileName().indexOf(outOfProcessFilter) >= 0) {
+ success = instantiateOutOfProcessExtension(metadata);
+ }
}
return success;
@@ -134,7 +155,7 @@ bool MApplicationExtensionManager::instantiateInProcessExtension(const QString &
if (extension != NULL) {
success = extension->initialize(interface);
if (success) {
- MWidget *widget = extension->widget();
+ QGraphicsWidget *widget = extension->widget();
if (widget) {
// Inform about the added extension widget
emit widgetCreated(widget, *extensionDataStore.data());
@@ -196,7 +217,7 @@ void MApplicationExtensionManager::removeOutOfProcessExtension(const MApplicatio
{
QString desktopFileName = metadata.fileName();
if (outOfProcessHandles.contains(desktopFileName)) {
- MExtensionHandle *handle = outOfProcessHandles.take(desktopFileName);
+ MExtensionHandle *handle = outOfProcessHandles.take(desktopFileName);
if (handle) {
emit widgetRemoved(handle);
handle->kill();
@@ -223,7 +244,7 @@ bool MApplicationExtensionManager::createDataStore()
}
QString dataPath = this->dataPath();
- QString dataStoreFileName = dataPath + ".data";
+ QString dataStoreFileName = dataPath + ".data";
bool dataPathExists = QDir::root().exists(dataPath);
// Create the user data directory if it doesn't exist yet
diff --git a/src/extensions/applicationextension/mapplicationextensionmanager.h b/src/extensions/applicationextension/mapplicationextensionmanager.h
index 64f50980..5eb80e1e 100644
--- a/src/extensions/applicationextension/mapplicationextensionmanager.h
+++ b/src/extensions/applicationextension/mapplicationextensionmanager.h
@@ -25,13 +25,14 @@
#include <QHash>
#include <QSharedPointer>
#include <QHash>
+#include <QRegExp>
class MApplicationExtensionMetaData;
class MDataStore;
-class MWidget;
class MExtensionHandle;
class MApplicationExtensionInterface;
class MFileDataStore;
+class QGraphicsWidget;
//! \internal
class MApplicationExtensionManager : public QObject
@@ -42,14 +43,39 @@ public:
/*!
* Constructs a MApplicationExtensionManager.
* \param interface The interface the extensions to be instantiated by this manager should implement
- * \param enableInProcessExtensions \c true if in process extensions should be loaded. \c false otherwise
*/
- MApplicationExtensionManager(const QString &interface, bool enableInProcessExtensions = true);
+ MApplicationExtensionManager(const QString &interface);
//! Destroys the MApplicationExtensionManager object
virtual ~MApplicationExtensionManager();
/*!
+ * Sets a filter for allowing only certain extensions to be loaded in the
+ * same process. The filter is a regular expression which is matched against
+ * the .desktop file names of the extensions.
+ *
+ * Must be called before init().
+ * Calling this after init() has no effect.
+ *
+ * \param inProcessFilter a regular expression for defining which
+ * extensions are allowed in-process
+ */
+ void setInProcessFilter(const QRegExp &inProcessFilter);
+
+ /*!
+ * Sets a filter for allowing only certain extensions to be ran in separate
+ * processes. The filter is a regular expression which is matched against
+ * the .desktop file names of the extensions.
+ *
+ * Must be called before init().
+ * Calling this after init() has no effect.
+ *
+ * \param outOfProcessFilter a regular expression for defining which
+ * extension are allowed out-of-process
+ */
+ void setOutOfProcessFilter(const QRegExp &outOfProcessFilter);
+
+ /*!
* Initializes the application extension manager
*
* \return true if initialization succeeds, false otherwise
@@ -81,7 +107,7 @@ Q_SIGNALS:
* Signal sent when an extension widget is removed
* \param widget the extension that was removed
*/
- void widgetRemoved(MWidget* widget);
+ void widgetRemoved(QGraphicsWidget* widget);
/*!
* Signal for instantiating an extension widget and it's datastore
@@ -89,7 +115,7 @@ Q_SIGNALS:
* \param store This MDataStore object can be used to store permanent extension area data related
* to this particular application extension instance.
*/
- void widgetCreated(MWidget *widget, MDataStore &store);
+ void widgetCreated(QGraphicsWidget *widget, MDataStore &store);
private slots:
/*!
@@ -99,6 +125,9 @@ private slots:
void updateAvailableExtensions(const QString &path);
private:
+ //! Whether the manager has been initialized or not
+ bool initialized;
+
//! A file system watcher for the desktop entry file directory
QFileSystemWatcher watcher;
@@ -108,10 +137,13 @@ private:
//! Data store for application extension manager
QSharedPointer <MDataStore> extensionDataStore;
- //! Keeps track of whether in process extensions should be loaded or not
- const bool enableInProcessExtensions;
+ //! Filter for extensions allowed to be loaded in-process
+ QRegExp inProcessFilter;
+
+ //! Filter for extensions allowed to be loaded out-of-process
+ QRegExp outOfProcessFilter;
- typedef QPair<MApplicationExtensionInterface*, MWidget*> InProcessExtensionData;
+ typedef QPair<MApplicationExtensionInterface*, QGraphicsWidget*> InProcessExtensionData;
//! Instantiated in-process extensions. A map from the shared library name to the extension instance.
QHash<QString, InProcessExtensionData> inProcessExtensions;
diff --git a/src/extensions/applicationextension/mextensionarea.cpp b/src/extensions/applicationextension/mextensionarea.cpp
index 011aba9e..a6f45194 100644
--- a/src/extensions/applicationextension/mextensionarea.cpp
+++ b/src/extensions/applicationextension/mextensionarea.cpp
@@ -35,7 +35,7 @@ MExtensionAreaPrivate::~MExtensionAreaPrivate()
{
}
-void MExtensionAreaPrivate::addWidget(MWidget *widget, MDataStore &store)
+void MExtensionAreaPrivate::addWidget(QGraphicsWidget *widget, MDataStore &store)
{
Q_Q(MExtensionArea);
@@ -51,7 +51,7 @@ void MExtensionAreaPrivate::addWidget(MWidget *widget, MDataStore &store)
}
}
-void MExtensionAreaPrivate::removeWidget(MWidget *widget)
+void MExtensionAreaPrivate::removeWidget(QGraphicsWidget *widget)
{
Q_Q(MExtensionArea);
@@ -92,9 +92,10 @@ MExtensionArea::MExtensionArea(MExtensionAreaPrivate *dd, MWidgetModel *model, Q
{
// Initialize the private implementation
Q_D(MExtensionArea);
- if (d)
+ if (d) {
d->q_ptr = this;
- d->init();
+ d->init();
+ }
}
MExtensionArea::MExtensionArea(QGraphicsItem *parent) :
@@ -111,14 +112,14 @@ MExtensionArea::~MExtensionArea()
{
}
-void MExtensionArea::addWidget(MWidget *widget, MDataStore &store)
+void MExtensionArea::addWidget(QGraphicsWidget *widget, MDataStore &store)
{
Q_D(MExtensionArea);
d->addWidget(widget, store);
}
-void MExtensionArea::removeWidget(MWidget *widget)
+void MExtensionArea::removeWidget(QGraphicsWidget *widget)
{
Q_D(MExtensionArea);
diff --git a/src/extensions/applicationextension/mextensionarea.h b/src/extensions/applicationextension/mextensionarea.h
index 202be968..73101be1 100644
--- a/src/extensions/applicationextension/mextensionarea.h
+++ b/src/extensions/applicationextension/mextensionarea.h
@@ -66,7 +66,7 @@ protected Q_SLOTS:
* last time around. This can be used to store for instance layout data of an application extension instance
* or any other extension area specific data.
*/
- virtual void addWidget(MWidget *widget, MDataStore &store);
+ virtual void addWidget(QGraphicsWidget *widget, MDataStore &store);
/*!
* removeWidget performs cleanup related to a widget that is being removed.
@@ -74,7 +74,7 @@ protected Q_SLOTS:
*
* \param widget The widget to be removed from the system.
*/
- virtual void removeWidget(MWidget *widget);
+ virtual void removeWidget(QGraphicsWidget *widget);
private:
Q_DECLARE_PRIVATE(MExtensionArea)
diff --git a/src/extensions/applicationextension/mextensionarea_p.h b/src/extensions/applicationextension/mextensionarea_p.h
index 459cd76f..fc5bb42f 100644
--- a/src/extensions/applicationextension/mextensionarea_p.h
+++ b/src/extensions/applicationextension/mextensionarea_p.h
@@ -48,13 +48,13 @@ public:
* Adds a widget to the canvas.
* \see MExtensionArea::addWidget()
*/
- virtual void addWidget(MWidget *widget, MDataStore &store);
+ virtual void addWidget(QGraphicsWidget *widget, MDataStore &store);
/*!
* Removes a widget from the canvas.
* \see MExtensionArea::removeWidget()
*/
- virtual void removeWidget(MWidget *widget);
+ virtual void removeWidget(QGraphicsWidget *widget);
virtual void gestureEvent(QGestureEvent *event);
virtual void tapAndHoldGesture(QGestureEvent *event, QTapAndHoldGesture *state);
diff --git a/src/extensions/applicationextension/mextensionareaview.cpp b/src/extensions/applicationextension/mextensionareaview.cpp
index be2020e4..ad89c7c2 100644
--- a/src/extensions/applicationextension/mextensionareaview.cpp
+++ b/src/extensions/applicationextension/mextensionareaview.cpp
@@ -151,7 +151,7 @@ void MExtensionAreaViewPrivate::updateLayout()
}
}
-void MExtensionAreaViewPrivate::addToLayout(MWidget *, int)
+void MExtensionAreaViewPrivate::addToLayout(QGraphicsWidget *, int)
{
}
diff --git a/src/extensions/applicationextension/mextensionareaview_p.h b/src/extensions/applicationextension/mextensionareaview_p.h
index cf179aef..a3ee3457 100644
--- a/src/extensions/applicationextension/mextensionareaview_p.h
+++ b/src/extensions/applicationextension/mextensionareaview_p.h
@@ -46,7 +46,7 @@ public:
/*!
* pointer to controller
*/
- MWidgetController *controller;
+ MWidgetController *controller;
/*!
* Updates the geometry of each widget present in the layout into the data
@@ -97,7 +97,7 @@ public:
* \param widget the widget
* \param index the index to insert or -1 to add to the end
*/
- virtual void addToLayout(MWidget *widget, int index = -1);
+ virtual void addToLayout(QGraphicsWidget *widget, int index = -1);
//! Layout used to layout the widget instances on this extension area.
QGraphicsLayout *layout;
diff --git a/src/extensions/applicationextension/mextensionrunner.cpp b/src/extensions/applicationextension/mextensionrunner.cpp
index 2be416fc..4cbebff0 100644
--- a/src/extensions/applicationextension/mextensionrunner.cpp
+++ b/src/extensions/applicationextension/mextensionrunner.cpp
@@ -42,7 +42,6 @@
#include <mfiledatastore.h>
#include <mcancelevent.h>
#include <mondisplaychangeevent.h>
-#include <MWidget>
#include <MScene>
#include <MSceneManager>
#include <MAction>
diff --git a/src/extensions/applicationextension/mextensionrunner.h b/src/extensions/applicationextension/mextensionrunner.h
index 36386618..2f21da89 100644
--- a/src/extensions/applicationextension/mextensionrunner.h
+++ b/src/extensions/applicationextension/mextensionrunner.h
@@ -116,7 +116,7 @@ protected:
QGraphicsWidget *parentWidget;
//! The extension widget instantiated from shared library
- MWidget *widget;
+ QGraphicsWidget *widget;
//! Scene where the widget is inserted.
MScene *scene;
diff --git a/src/extensions/mashup/appletinterface/mappletinterface.h b/src/extensions/mashup/appletinterface/mappletinterface.h
index 074a3012..fc4c086a 100644
--- a/src/extensions/mashup/appletinterface/mappletinterface.h
+++ b/src/extensions/mashup/appletinterface/mappletinterface.h
@@ -23,7 +23,7 @@
#include <QtPlugin>
#include "mexport.h"
-class MWidget;
+class QGraphicsWidget;
class MAppletMetaData;
class MDataStore;
class MDataAccess;
@@ -55,9 +55,9 @@ public:
* \param instanceData A data store object that should be used to store permanent data of the constructed applet instance.
* \param settings A data store object that bundles applet settings to the applet. Contains both the
* instance settings and the global settings.
- * \return New MWidget class instance that visualizes this applet.
+ * \return New widget instance that visualizes this applet.
*/
- virtual MWidget *constructWidget(const MAppletMetaData &metadata, MDataStore &instanceData, MDataAccess &settings) = 0;
+ virtual QGraphicsWidget *constructWidget(const MAppletMetaData &metadata, MDataStore &instanceData, MDataAccess &settings) = 0;
};
Q_DECLARE_INTERFACE(MAppletInterface, "com.meego.core.MAppletInterface/1.0")
diff --git a/src/extensions/mashup/mashup/mappletinstancedata.h b/src/extensions/mashup/mashup/mappletinstancedata.h
index bd5268eb..205eec91 100644
--- a/src/extensions/mashup/mashup/mappletinstancedata.h
+++ b/src/extensions/mashup/mashup/mappletinstancedata.h
@@ -23,7 +23,7 @@
#include <QString>
#include "mappletid.h"
-class MWidget;
+class QGraphicsWidget;
class MFileDataStore;
class MSubDataStore;
class MDataAccess;
@@ -68,7 +68,7 @@ public:
//! The size of the applet in portrait
QString sizePortrait;
//! The applet widget.
- MWidget *widget;
+ QGraphicsWidget *widget;
//! The path where applet instances can store their instance data.
QString instanceDataFilePath;
//! The data store where applet instances can store their instance data.
diff --git a/src/extensions/mashup/mashup/mappletinstancemanager.cpp b/src/extensions/mashup/mashup/mappletinstancemanager.cpp
index df3bb25c..99f2f11f 100644
--- a/src/extensions/mashup/mashup/mappletinstancemanager.cpp
+++ b/src/extensions/mashup/mashup/mappletinstancemanager.cpp
@@ -139,17 +139,13 @@ void MAppletInstanceManager::removeActionTriggered(bool)
MAction *action = qobject_cast<MAction *>(sender());
if (action != NULL) {
// Go through the associated graphics widgets
- foreach(QGraphicsWidget * w, action->associatedGraphicsWidgets()) {
- // They're expected to be MWidgets
- MWidget *widget = qobject_cast<MWidget *>(w);
- if (widget != NULL) {
- // If an applet is found for the widget, remove it
- MAppletId id = appletIDForWidget(widget);
-
- if (id != MAppletId()) {
- removeApplet(id);
- break;
- }
+ foreach(QGraphicsWidget *widget, action->associatedGraphicsWidgets()) {
+ // If an applet is found for the widget, remove it
+ MAppletId id = appletIDForWidget(widget);
+
+ if (id != MAppletId()) {
+ removeApplet(id);
+ break;
}
}
}
@@ -437,7 +433,7 @@ void MAppletInstanceManager::freeAppletInstanceID(MAppletId id)
}
}
-MAppletId MAppletInstanceManager::appletIDForWidget(MWidget *widget) const
+MAppletId MAppletInstanceManager::appletIDForWidget(QGraphicsWidget *widget) const
{
foreach(MAppletInstanceData * data, applets.values()) {
if (data->widget == widget) {
@@ -552,7 +548,7 @@ MAppletId MAppletInstanceManager::createAppletId(MAppletId::AppletInstanceID ins
void MAppletInstanceManager::setAppletTitle(const QString &title)
{
// Find the widget whose title has changed
- MWidget *widget = dynamic_cast<MWidget *>(sender());
+ QGraphicsWidget *widget = dynamic_cast<QGraphicsWidget *>(sender());
if (widget != NULL) {
foreach(MAppletInstanceData * data, applets.values()) {
if (data->widget == widget) {
diff --git a/src/extensions/mashup/mashup/mappletinstancemanager.h b/src/extensions/mashup/mashup/mappletinstancemanager.h
index 62a14db8..52e1067b 100644
--- a/src/extensions/mashup/mashup/mappletinstancemanager.h
+++ b/src/extensions/mashup/mashup/mappletinstancemanager.h
@@ -25,7 +25,7 @@
#include <QHash>
#include <QSizeF>
-class MWidget;
+class QGraphicsWidget;
class MDataStore;
class MAppletInstanceData;
class MAppletMetaData;
@@ -102,17 +102,17 @@ public:
signals:
/*!
* Signals about a new instance of an applet.
- * \param widget Pointer to MWidget that represents the new widget.
+ * \param widget Pointer to QGraphicsWidget that represents the new widget.
* \param store Reference to a MDataStore object given to clients listening to this signal. Through this MDataStore object
* clients can store their own data into permanent store that will be bound with the instantiated applet instance.
*/
- void appletInstantiated(MWidget *widget, MDataStore &store) const;
+ void appletInstantiated(QGraphicsWidget *widget, MDataStore &store) const;
/*!
* Signals about a removal of an applet instance.
- * \param widget Pointer to MWidget representation about the removed applet instance.
+ * \param widget Pointer to QGraphicsWidget representation about the removed applet instance.
*/
- void appletRemoved(MWidget *widget);
+ void appletRemoved(QGraphicsWidget *widget);
public slots:
/*!
@@ -287,7 +287,7 @@ private:
*
* \return the Applet ID of the widget or an empty ID if the widget does not belong to an applet
*/
- MAppletId appletIDForWidget(MWidget *widget) const;
+ MAppletId appletIDForWidget(QGraphicsWidget *widget) const;
/*!
* Returns the Applet ID for a package name
diff --git a/src/extensions/mashup/mashup/mappletloader.cpp b/src/extensions/mashup/mashup/mappletloader.cpp
index 4cc3b3df..6e05be4f 100644
--- a/src/extensions/mashup/mashup/mappletloader.cpp
+++ b/src/extensions/mashup/mashup/mappletloader.cpp
@@ -18,9 +18,7 @@
****************************************************************************/
#include "mappletloader.h"
-
#include "mappletinterface.h"
-#include "mwidget.h"
#include "mappletmetadata.h"
#include "mdataaccess.h"
@@ -30,13 +28,13 @@ MAppletLoader::MAppletLoader()
{
}
-MWidget *MAppletLoader::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings)
+QGraphicsWidget *MAppletLoader::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings)
{
QPluginLoader loader(metadata.appletBinary());
QObject *object = loader.instance();
MAppletInterface *applet = qobject_cast<MAppletInterface *>(object);
- MWidget *widget = NULL;
+ QGraphicsWidget *widget = NULL;
if (applet != NULL) {
widget = applet->constructWidget(metadata, dataStore, settings);
}
diff --git a/src/extensions/mashup/mashup/mappletloader.h b/src/extensions/mashup/mashup/mappletloader.h
index fc142139..4519b260 100644
--- a/src/extensions/mashup/mashup/mappletloader.h
+++ b/src/extensions/mashup/mashup/mappletloader.h
@@ -22,14 +22,14 @@
#include "mexport.h"
+class QGraphicsWidget;
class MAppletMetaData;
-class MWidget;
class MDataStore;
class MDataAccess;
//! \internal
/*!
- * \brief A class that loads M applets.
+ * \brief A class that loads MeeGo Touch applets.
*/
class M_EXPORT MAppletLoader
{
@@ -42,7 +42,7 @@ public:
* \param settings a data store object that bundles applet settings to the applet.
* \return the applet widget or \c NULL in an error.
*/
- static MWidget *loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings);
+ static QGraphicsWidget *loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings);
private:
/*!
diff --git a/src/extensions/mashup/mashup/mmashupcanvas.cpp b/src/extensions/mashup/mashup/mmashupcanvas.cpp
index fe160315..b085b42b 100644
--- a/src/extensions/mashup/mashup/mmashupcanvas.cpp
+++ b/src/extensions/mashup/mashup/mmashupcanvas.cpp
@@ -55,8 +55,8 @@ void MMashupCanvasPrivate::init(const QString &identifier)
instanceManager = new MAppletInstanceManager(this->identifier);
// Connect applet instance manager signals and restore applet instances
- q->connect(instanceManager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)), SLOT(addWidget(MWidget *, MDataStore &)));
- q->connect(instanceManager, SIGNAL(appletRemoved(MWidget *)), SLOT(removeWidget(MWidget *)));
+ q->connect(instanceManager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)), SLOT(addWidget(QGraphicsWidget *, MDataStore &)));
+ q->connect(instanceManager, SIGNAL(appletRemoved(QGraphicsWidget *)), SLOT(removeWidget(QGraphicsWidget *)));
instanceManager->restoreApplets();
// Put the data stores into the model
@@ -81,7 +81,7 @@ QString MMashupCanvasPrivate::provideUniqueIdentifier(const QString &identifier)
return result;
}
-void MMashupCanvasPrivate::addWidget(MWidget *widget, MDataStore &store)
+void MMashupCanvasPrivate::addWidget(QGraphicsWidget *widget, MDataStore &store)
{
Q_Q(MMashupCanvas);
diff --git a/src/extensions/mashup/mashup/mmashupcanvas.h b/src/extensions/mashup/mashup/mmashupcanvas.h
index d388adbf..a4a1275d 100644
--- a/src/extensions/mashup/mashup/mmashupcanvas.h
+++ b/src/extensions/mashup/mashup/mmashupcanvas.h
@@ -40,7 +40,7 @@ class MMashupCanvasPrivate;
*
* \section metadata Applet metadata
*
- * Each applet package installs a .desktop file into \c /usr/share/m/applets/ in which the applet specifies its metadata. \c MAppletInventory monitors this directory and enables instantiation of installed applets onto mashup canvas. The applet inventory is opened by tapping a button on bottom of the mashup canvas area. The inventory shows the icon of each applet in a grid view. When icon is tapped the applet is instantiated to the mashup canvas. When applet is instantiated a new !MWidget - object from applet binary is constructed and added to the mashup canvas. The applet inventory can be closed/hidden by tapping 'x' on the top right corner.
+ * Each applet package installs a .desktop file into \c /usr/share/m/applets/ in which the applet specifies its metadata. \c MAppletInventory monitors this directory and enables instantiation of installed applets onto mashup canvas. The applet inventory is opened by tapping a button on bottom of the mashup canvas area. The inventory shows the icon of each applet in a grid view. When icon is tapped the applet is instantiated to the mashup canvas. When applet is instantiated a new !QGraphicsWidget - object from applet binary is constructed and added to the mashup canvas. The applet inventory can be closed/hidden by tapping 'x' on the top right corner.
*
* Applet metadata is defined in .desktop files following freedesktop.org <a href="http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec?action=show&redirect=Standards%2Fdesktop-entry-spec">desktop entry specification</a>. Applet metadata extends .desktop entry specification by defining a new type \c MApplet. Applet metadata specification follows desktop entry specification so that required keys (Type, Name and Exec) have to be defined in the applet metadata. \c Exec key in applet metadata defines the runner binary which is launched in separate process to run the applet binary. This key needs to be defined but can be left empty. If \c Exec key is left empty the applet is ran in the same process with the mashup canvas.
*
diff --git a/src/extensions/mashup/mashup/mmashupcanvas_p.h b/src/extensions/mashup/mashup/mmashupcanvas_p.h
index 208cd494..02429dc0 100644
--- a/src/extensions/mashup/mashup/mmashupcanvas_p.h
+++ b/src/extensions/mashup/mashup/mmashupcanvas_p.h
@@ -52,7 +52,7 @@ public:
void init(const QString &identifier);
//! \reimp
- virtual void addWidget(MWidget *widget, MDataStore &store);
+ virtual void addWidget(QGraphicsWidget *widget, MDataStore &store);
//! \reimp_end
//! Applet instance manager
diff --git a/src/extensions/mashup/mashup/mmashupcanvasview.cpp b/src/extensions/mashup/mashup/mmashupcanvasview.cpp
index 02940531..2771eeee 100644
--- a/src/extensions/mashup/mashup/mmashupcanvasview.cpp
+++ b/src/extensions/mashup/mashup/mmashupcanvasview.cpp
@@ -98,7 +98,7 @@ void MMashupCanvasViewPrivate::init()
mainLayout->addItem(l);
}
-void MMashupCanvasViewPrivate::addToLayout(MWidget *widget, int index)
+void MMashupCanvasViewPrivate::addToLayout(QGraphicsWidget *widget, int index)
{
if (index >= 0) {
layoutPolicy->insertItem(index, widget);
@@ -107,7 +107,7 @@ void MMashupCanvasViewPrivate::addToLayout(MWidget *widget, int index)
}
}
-void MMashupCanvasViewPrivate::connectContainerToWidget(MContainer *container, MWidget *widget) const
+void MMashupCanvasViewPrivate::connectContainerToWidget(MContainer *container, QGraphicsWidget *widget) const
{
const QMetaObject *mob = widget->metaObject();
diff --git a/src/extensions/mashup/mashup/mmashupcanvasview_p.h b/src/extensions/mashup/mashup/mmashupcanvasview_p.h
index 8e32174e..99d59dd0 100644
--- a/src/extensions/mashup/mashup/mmashupcanvasview_p.h
+++ b/src/extensions/mashup/mashup/mmashupcanvasview_p.h
@@ -62,12 +62,12 @@ public:
* \param widget the widget
* \param index the index to insert or -1 to add to the end
*/
- virtual void addToLayout(MWidget *widget, int index = -1);
+ virtual void addToLayout(QGraphicsWidget *widget, int index = -1);
/*!
* Used to check properties of widget and connect signals between it and the MContainer
*/
- virtual void connectContainerToWidget(MContainer *container, MWidget *widget) const;
+ virtual void connectContainerToWidget(MContainer *container, QGraphicsWidget *widget) const;
//! The MMashupCanvas controller.
MMashupCanvas *controller;
diff --git a/src/extensions/style/mapplicationextensionareastyle.h b/src/extensions/style/mapplicationextensionareastyle.h
index 51551d47..12974005 100644
--- a/src/extensions/style/mapplicationextensionareastyle.h
+++ b/src/extensions/style/mapplicationextensionareastyle.h
@@ -29,6 +29,9 @@ class M_EXPORT MApplicationExtensionAreaStyle : public MExtensionAreaStyle
{
Q_OBJECT
M_STYLE(MApplicationExtensionAreaStyle)
+
+ //! The orientation of the layout
+ M_STYLE_ATTRIBUTE(Qt::Orientation, layoutOrientation, LayoutOrientation)
};
/*!
diff --git a/src/include/MRichTextEdit b/src/include/MRichTextEdit
new file mode 100644
index 00000000..2718e92d
--- /dev/null
+++ b/src/include/MRichTextEdit
@@ -0,0 +1 @@
+#include "mrichtextedit.h"
diff --git a/src/include/MWidgetFadeInAnimationStyle b/src/include/MWidgetFadeInAnimationStyle
deleted file mode 100644
index 6bbdf0c7..00000000
--- a/src/include/MWidgetFadeInAnimationStyle
+++ /dev/null
@@ -1 +0,0 @@
-#include "mwidgetfadeinanimationstyle.h"
diff --git a/src/include/MWidgetFadeOutAnimationStyle b/src/include/MWidgetFadeOutAnimationStyle
deleted file mode 100644
index c97de5bd..00000000
--- a/src/include/MWidgetFadeOutAnimationStyle
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "mwidgetfadeoutanimationstyle.h"
-
diff --git a/src/include/mwidgetfadeinanimationstyle.h b/src/include/mrichtextedit.h
index 4f6ad890..45fd8384 100644..100755
--- a/src/include/mwidgetfadeinanimationstyle.h
+++ b/src/include/mrichtextedit.h
@@ -17,4 +17,4 @@
**
****************************************************************************/
-#include "../corelib/style/mwidgetfadeinanimationstyle.h"
+#include "../corelib/widgets/mrichtextedit.h"
diff --git a/src/include/mwidgetfadeoutanimationstyle.h b/src/include/mrichtexteditstyle.h
index 1af96cb9..7b84d455 100644..100755
--- a/src/include/mwidgetfadeoutanimationstyle.h
+++ b/src/include/mrichtexteditstyle.h
@@ -17,4 +17,4 @@
**
****************************************************************************/
-#include "../corelib/style/mwidgetfadeoutanimationstyle.h"
+#include "../views/style/mrichtexteditstyle.h"
diff --git a/src/meegotouch.pc b/src/meegotouch.pc
index a8bf8e03..a5ecac8c 100644
--- a/src/meegotouch.pc
+++ b/src/meegotouch.pc
@@ -5,7 +5,7 @@ includedir=${prefix}/include/meegotouch
Name: meegotouch
Description: MeeGo Touch UI Framework
-Version: 0.20.1
+Version: 0.20.11
Requires: QtGui
Cflags: -I${includedir}
Libs: -L${libdir} -lmeegotouchcore -lmeegotouchviews -lmeegotouchsettings -lmeegotouchextensions
diff --git a/src/predeps.pri b/src/predeps.pri
index 5d877a9a..f200d2fd 100644
--- a/src/predeps.pri
+++ b/src/predeps.pri
@@ -1,16 +1,29 @@
-QMAKE_EXTRA_TARGETS += build_gen
+QMAKE_EXTRA_TARGETS += build_mgen build_mmoc
build_gen.target = ../mgen/mgen
win32 {
- build_gen.commands = \
+ build_mgen.commands = \
cd $$M_BUILD_TREE/mgen && mingw32-make
# FIXME make it work for release build too
MGEN_EXECUTABLE = $$M_BUILD_TREE/mgen/debug/mgen.exe
} else {
- build_gen.commands = \
+ build_mgen.commands = \
cd $$M_BUILD_TREE/mgen && qmake && make
MGEN_EXECUTABLE = $$M_BUILD_TREE/mgen/mgen
}
+build_mmoc.target = ../mmoc/mmoc
+win32 {
+ build_mmoc.commands = \
+ cd $$M_BUILD_TREE/mmoc && mingw32-make
+
+ # FIXME make it work for release build too
+ MMOC_EXECUTABLE = $$M_BUILD_TREE/mmoc/debug/mmoc.exe
+} else {
+ build_mmoc.commands = \
+ cd $$M_BUILD_TREE/mmoc && qmake && make
+
+ MMOC_EXECUTABLE = $$M_BUILD_TREE/mmoc/mmoc
+}
diff --git a/src/views/animations/animations.pri b/src/views/animations/animations.pri
new file mode 100644
index 00000000..ec198f92
--- /dev/null
+++ b/src/views/animations/animations.pri
@@ -0,0 +1,8 @@
+ANIMATIONS_SRC_DIR=./animations
+INCLUDEPATH+=./widgets
+
+PRIVATE_HEADERS += \
+ $$ANIMATIONS_SRC_DIR/mwarpanimation.h \
+
+SOURCES += \
+ $$ANIMATIONS_SRC_DIR/mwarpanimation.cpp \
diff --git a/src/views/animations/mwarpanimation.cpp b/src/views/animations/mwarpanimation.cpp
new file mode 100644
index 00000000..780d5a94
--- /dev/null
+++ b/src/views/animations/mwarpanimation.cpp
@@ -0,0 +1,105 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include <QGraphicsWidget>
+#include <QPropertyAnimation>
+#include <QPauseAnimation>
+
+#include <MDebug>
+#include "mwarpanimation.h"
+
+MWarpAnimation::MWarpAnimation(MWidget *widget, WarpDirection direction, QObject *parent) :
+ MParallelAnimationGroup(parent)
+{
+ target = widget;
+ warpDirection = direction;
+
+ QPropertyAnimation *opacityAnimation = new QPropertyAnimation();
+ opacityAnimation->setPropertyName("opacity");
+ opacityAnimation->setDuration(style()->warpDuration());
+
+ offsetAnimation = new QPropertyAnimation();
+ offsetAnimation->setPropertyName("paintOffset");
+ offsetAnimation->setDuration(style()->warpDuration());
+
+ if (direction == InFromLeft || direction == InFromRight) {
+ opacityAnimation->setStartValue(0.0f);
+ opacityAnimation->setEndValue(1.0f);
+
+ opacityAnimation->setEasingCurve(style()->warpInCurve());
+ offsetAnimation->setEasingCurve(style()->warpInCurve());
+ } else {
+ opacityAnimation->setStartValue(1.0f);
+ opacityAnimation->setEndValue(0.0f);
+
+ opacityAnimation->setEasingCurve(style()->warpOutCurve());
+ offsetAnimation->setEasingCurve(style()->warpOutCurve());
+ }
+
+ opacityAnimation->setTargetObject(widget);
+ offsetAnimation->setTargetObject(widget);
+
+
+ if (direction == InFromLeft || direction == InFromRight) {
+ QPauseAnimation *pause = new QPauseAnimation(style()->warpInDelay());
+ this->addAnimation(pause);
+ connect(pause, SIGNAL(finished()), opacityAnimation, SLOT(start()));
+ connect(pause, SIGNAL(finished()), offsetAnimation, SLOT(start()));
+ } else {
+ this->addAnimation(opacityAnimation);
+ this->addAnimation(offsetAnimation);
+ }
+
+ connect(target, SIGNAL(destroyed()), this, SLOT(clearTarget()));
+}
+
+void MWarpAnimation::clearTarget()
+{
+ target = 0;
+}
+
+void MWarpAnimation::updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+{
+ Q_UNUSED(oldState);
+
+ if (newState == Running && target) {
+ target->show();
+
+ if (warpDirection == InFromLeft) {
+ // On the first frame of the animation, the incoming widget might
+ // be visible with a non-zero opacity unless explcitly set
+ target->setOpacity(0.0f);
+ offsetAnimation->setStartValue(QPointF(-style()->warpDistance(), 0));
+ offsetAnimation->setEndValue(QPointF(0, 0));
+ } else if (warpDirection == InFromRight) {
+ target->setOpacity(0.0f);
+ offsetAnimation->setStartValue(QPointF(style()->warpDistance(), 0));
+ offsetAnimation->setEndValue(QPointF(0, 0));
+ } else if (warpDirection == OutFromLeft) {
+ offsetAnimation->setStartValue(QPointF(0, 0));
+ offsetAnimation->setEndValue(QPointF(-style()->warpDistance(), 0));
+ } else {
+ offsetAnimation->setStartValue(QPointF(0, 0));
+ offsetAnimation->setEndValue(QPointF(style()->warpDistance(), 0));
+ }
+ }
+}
+
+#include "moc_mwarpanimation.cpp"
diff --git a/src/corelib/animation/widget/mwidgetslideoutanimation_p.h b/src/views/animations/mwarpanimation.h
index edd7ae18..41f60591 100644
--- a/src/corelib/animation/widget/mwidgetslideoutanimation_p.h
+++ b/src/views/animations/mwarpanimation.h
@@ -17,23 +17,49 @@
**
****************************************************************************/
-#ifndef MWIDGETSLIDEOUTANIMATION_P_H
-#define MWIDGETSLIDEOUTANIMATION_P_H
+#ifndef MWARPANIMATION_H
+#define MWARPANIMATION_H
-#include "mabstractwidgetanimation_p.h"
+#include <QtGlobal>
#include <QPointF>
+#include <mwidget.h>
+#include <mparallelanimationgroup.h>
+#include <mwarpanimationstyle.h>
+
+class QGraphicsWidget;
class QPropertyAnimation;
-class MWidgetSlideOutAnimationPrivate : public MAbstractWidgetAnimationPrivate
+//! \internal
+
+class MWarpAnimation : public MParallelAnimationGroup
{
- Q_DECLARE_PUBLIC(MWidgetSlideOutAnimation)
+ Q_OBJECT
+ M_ANIMATION_GROUP(MWarpAnimationStyle)
+
public:
- virtual ~MWidgetSlideOutAnimationPrivate() {}
+
+ enum WarpDirection {
+ InFromLeft,
+ InFromRight,
+ OutFromLeft,
+ OutFromRight
+ };
+
+ MWarpAnimation(MWidget *widget, WarpDirection direction = InFromLeft, QObject *parent=NULL);
+
+public Q_SLOTS:
+ void clearTarget();
+
+protected:
+ virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState);
+
private:
- QPointF originalPos;
- bool played;
- QPropertyAnimation *positionAnimation;
+ MWidget *target;
+ WarpDirection warpDirection;
+ QPropertyAnimation *offsetAnimation;
};
+//! \internal_end
+
#endif
diff --git a/src/views/mapplicationmenubuttonview.cpp b/src/views/mapplicationmenubuttonview.cpp
index b049095b..86a277ee 100644
--- a/src/views/mapplicationmenubuttonview.cpp
+++ b/src/views/mapplicationmenubuttonview.cpp
@@ -105,7 +105,7 @@ void MApplicationMenuButtonViewPrivate::refreshLayout()
layout->setAlignment(arrowIconImage, Qt::AlignCenter);
}
}
-
+ q->updateGeometry();
}
void MApplicationMenuButtonViewPrivate::refreshIconImage()
diff --git a/src/views/mbuttonview.cpp b/src/views/mbuttonview.cpp
index cbd03b30..b0fa0105 100644
--- a/src/views/mbuttonview.cpp
+++ b/src/views/mbuttonview.cpp
@@ -23,9 +23,10 @@
#include <QPainter>
#include <QGraphicsSceneMouseEvent>
#include <QFontMetricsF>
+#include <QPixmap>
+#include <QIcon>
#include "mbutton.h"
-#include "mbutton_p.h" // For the member indexes of the model
#include "mfeedback.h"
#include "mtheme.h"
#include "mscalableimage.h"
@@ -39,14 +40,31 @@
#define RELEASE_MISS_DELTA 30
MButtonViewPrivate::MButtonViewPrivate()
- : icon(0), toggledIcon(0), label(NULL)
+ : icon(0), toggledIcon(0), label(NULL), iconFromQIcon(false), toggledIconFromQIcon(false)
{
}
+void MButtonViewPrivate::freeIcons()
+{
+ if (iconFromQIcon && icon) {
+ delete icon;
+ } else {
+ MTheme::releasePixmap(icon);
+ }
+
+ if (toggledIconFromQIcon && toggledIcon) {
+ delete toggledIcon;
+ } else {
+ MTheme::releasePixmap(toggledIcon);
+ }
+
+ icon = 0;
+ toggledIcon = 0;
+}
+
MButtonViewPrivate::~MButtonViewPrivate()
{
- MTheme::releasePixmap(icon);
- MTheme::releasePixmap(toggledIcon);
+ freeIcons();
}
// As the condition of text color and background change for button
@@ -79,10 +97,16 @@ void MButtonViewPrivate::refreshStyleMode()
//update the icons only if the iconSize in the style has changed
QSize size = q->style()->iconSize();
if (icon && icon->size() != size) {
- loadIcon(icon, q->model()->iconID(), size);
+ if (iconFromQIcon)
+ loadIcon(q->model()->icon(), size);
+ else
+ loadIcon(q->model()->iconID(), size);
}
if (toggledIcon && toggledIcon->size() != size) {
- loadIcon(toggledIcon, q->model()->toggledIconID(), size);
+ if (toggledIconFromQIcon)
+ loadIcon(q->model()->icon(), size);
+ else
+ loadIcon(q->model()->toggledIconID(), size, QIcon::Selected);
}
calcIconTextRects();
@@ -163,14 +187,49 @@ void MButtonViewPrivate::calcIconTextRects()
label->setGeometry(textRect.translated(q->marginLeft(), q->marginTop()));
}
-void MButtonViewPrivate::loadIcon(const QPixmap*& icon, const QString &newIconId, const QSize &newIconSize)
+void MButtonViewPrivate::loadIcon(const QIcon &newQIcon, const QSize &newIconSize)
{
- MTheme::releasePixmap(icon);
- icon = 0;
- if (!newIconId.isEmpty())
- icon = MTheme::pixmap(newIconId, newIconSize);
+ freeIcons();
+
+ icon = new QPixmap(newQIcon.pixmap(newIconSize));
+ iconFromQIcon = true;
+
+ toggledIcon = new QPixmap(newQIcon.pixmap(newIconSize, QIcon::Selected));
+ if (toggledIcon && !toggledIcon->isNull()) {
+ toggledIconFromQIcon = true;
+ }
}
+void MButtonViewPrivate::loadIcon(const QString &newIconId, const QSize &newIconSize, QIcon::Mode mode)
+{
+ const QPixmap **tmp;
+ bool *fromQIcon;
+
+ if (mode == QIcon::Selected)
+ {
+ fromQIcon = &toggledIconFromQIcon;
+ tmp = &toggledIcon;
+ }
+ else
+ {
+ fromQIcon = &iconFromQIcon;
+ tmp = &icon;
+ }
+
+ if (*tmp)
+ {
+ if (*fromQIcon)
+ delete *tmp;
+ else
+ MTheme::releasePixmap(*tmp);
+ }
+
+ *fromQIcon = false;
+ *tmp = 0;
+
+ if (!newIconId.isEmpty())
+ *tmp = MTheme::pixmap(newIconId, newIconSize);
+}
MButtonView::MButtonView(MButton *controller) :
MWidgetView(* new MButtonViewPrivate, controller)
@@ -326,10 +385,13 @@ void MButtonView::updateData(const QList<const char *>& modifications)
d->label->setVisible(model()->textVisible());
d->calcIconTextRects();
} else if (member == MButtonModel::IconID) {
- d->loadIcon(d->icon, model()->iconID(), style()->iconSize());
+ d->loadIcon(model()->iconID(), style()->iconSize());
d->calcIconTextRects();
} else if (member == MButtonModel::ToggledIconID) {
- d->loadIcon(d->toggledIcon, model()->toggledIconID(), style()->iconSize());
+ d->loadIcon(model()->toggledIconID(), style()->iconSize(), QIcon::Selected);
+ d->calcIconTextRects();
+ } else if (member == MButtonModel::Icon) {
+ d->loadIcon(model()->icon(), style()->iconSize());
d->calcIconTextRects();
} else if (member == MButtonModel::IconVisible) {
d->calcIconTextRects();
@@ -346,10 +408,15 @@ void MButtonView::setupModel()
Q_D(MButtonView);
MWidgetView::setupModel();
+ QList<const char *> members;
+ if (model()->icon().isNull())
+ members << MButtonModel::IconID;
+ else
+ members << MButtonModel::Icon;
+ if (!model()->toggledIconID().isEmpty())
+ members << MButtonModel::ToggledIconID;
- d->loadIcon(d->icon, model()->iconID(), style()->iconSize());
- d->loadIcon(d->toggledIcon, model()->toggledIconID(), style()->iconSize());
- d->calcIconTextRects();
+ updateData(members);
d->label->setText(model()->text());
d->label->setVisible(model()->textVisible());
diff --git a/src/views/mbuttonview_p.h b/src/views/mbuttonview_p.h
index 99b3f469..44d25ccb 100644
--- a/src/views/mbuttonview_p.h
+++ b/src/views/mbuttonview_p.h
@@ -21,8 +21,8 @@
#define MBUTTONVIEW_P_H
#include "private/mwidgetview_p.h"
+#include <QIcon>
-class QPixmap;
class MScalableImage;
class MLabel;
@@ -34,18 +34,24 @@ public:
MButtonViewPrivate();
virtual ~MButtonViewPrivate();
+ void freeIcons();
+
const QPixmap *icon;
const QPixmap *toggledIcon;
MLabel *label;
+ bool iconFromQIcon;
+ bool toggledIconFromQIcon;
+
QRectF iconRect;
void calcIconTextRects();
bool toggleState() const;
void refreshStyleMode();
- void loadIcon(const QPixmap*& icon, const QString &newIconId, const QSize &newIconSize);
+ void loadIcon(const QIcon &qIcon, const QSize &newIconSize);
+ void loadIcon(const QString &newIconId, const QSize &newIconSize, QIcon::Mode mode = QIcon::Normal);
};
#endif
diff --git a/src/views/mcomboboxview.cpp b/src/views/mcomboboxview.cpp
index df367957..58b32fc8 100644
--- a/src/views/mcomboboxview.cpp
+++ b/src/views/mcomboboxview.cpp
@@ -36,7 +36,13 @@
#include <QGraphicsSceneMouseEvent>
MComboBoxViewPrivate::MComboBoxViewPrivate()
- : q_ptr(0), controller(0), contentItem(0), popuplist(0), pixmap(0), progressIndicator(0)
+ : q_ptr(0),
+ controller(0),
+ layout(0),
+ contentItem(0),
+ popuplist(0),
+ pixmap(0),
+ progressIndicator(0)
{
}
diff --git a/src/views/mcontentitemview.cpp b/src/views/mcontentitemview.cpp
index 7618f4ce..4e9e86cb 100644
--- a/src/views/mcontentitemview.cpp
+++ b/src/views/mcontentitemview.cpp
@@ -16,6 +16,7 @@
** of this file.
**
****************************************************************************/
+
#include <MScalableImage>
#include <MImageWidget>
#include <MLabel>
@@ -135,6 +136,8 @@ void MContentItemViewPrivate::initLayout(MContentItem::ContentItemStyle style)
configuredStyle = style;
+ if (optionalImageWidget)
+ optionalImageWidget->setVisible(false);
switch (style) {
case MContentItem::IconAndTwoTextLabels:
image()->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
@@ -283,6 +286,11 @@ void MContentItemViewPrivate::setImage(const QImage &i)
image()->setImage(i);
}
+void MContentItemViewPrivate::setImageID(const QString &id)
+{
+ image()->setImage(id);
+}
+
void MContentItemViewPrivate::setOptionalImage(const QImage& i)
{
optionalImage()->setImage(i);
@@ -363,6 +371,8 @@ void MContentItemView::updateData(const QList<const char *> &modifications)
d->setSubtitle(model()->subtitle());
} else if (member == MContentItemModel::ItemPixmap) {
d->setPixmap(model()->itemPixmap());
+ } else if (member == MContentItemModel::ItemImageID) {
+ d->setImageID(model()->itemImageID());
} else if (member == MContentItemModel::Selected) {
setSelected(model()->selected());
} else if(member == MContentItemModel::OptionalPixmap){
@@ -371,7 +381,8 @@ void MContentItemView::updateData(const QList<const char *> &modifications)
d->setOptionalImage(model()->optionalImage());
} else if(member == MContentItemModel::ItemImage) {
d->setImage(model()->itemImage());
- } else if(member == MContentItemModel::AdditionalItem) {
+ } else if(member == MContentItemModel::AdditionalItem ||
+ member == MContentItemModel::SmallItem) {
if (d->configuredStyle == MContentItem::TwoIconsTwoWidgets) {
d->clearLayout();
d->initTwoIconsTwoWidgetsLayout();
@@ -398,6 +409,8 @@ void MContentItemView::setupModel()
d->setOptionalImage(d->controller->optionalImage());
if(!d->controller->image().isNull())
d->setImage(d->controller->image());
+ if(!model()->itemImageID().isNull())
+ d->setImageID(model()->itemImageID());
d->initLayout(static_cast<MContentItem::ContentItemStyle>(model()->itemStyle()));
}
diff --git a/src/views/mcontentitemview_p.h b/src/views/mcontentitemview_p.h
index 43cb89ca..1689c7f9 100644
--- a/src/views/mcontentitemview_p.h
+++ b/src/views/mcontentitemview_p.h
@@ -48,6 +48,7 @@ public:
inline void setPixmap(const QPixmap& pixmap);
inline void setOptionalPixmap(const QPixmap& pixmap);
inline void setImage(const QImage& image);
+ inline void setImageID(const QString &id);
inline void setOptionalImage(const QImage& image);
void initLayout(MContentItem::ContentItemStyle style);
diff --git a/src/views/mdialogview.cpp b/src/views/mdialogview.cpp
index ca4db5c0..c6c76fd1 100644
--- a/src/views/mdialogview.cpp
+++ b/src/views/mdialogview.cpp
@@ -45,7 +45,10 @@ MDialogViewPrivate::MDialogViewPrivate()
horizontalWidget(0),
horizontalLayout(0),
dialogBox(0),
+ dialogBoxLayout(0),
+ contents(0),
contentsLayout(0),
+ contentsViewport(0),
centralWidget(0),
titleBar(0),
titleLabel(0),
diff --git a/src/views/mescapebuttonpanelview.cpp b/src/views/mescapebuttonpanelview.cpp
index d9a50b33..39879d3f 100644
--- a/src/views/mescapebuttonpanelview.cpp
+++ b/src/views/mescapebuttonpanelview.cpp
@@ -22,14 +22,18 @@
#include "mbutton.h"
#include "mviewcreator.h"
#include "mescapebuttonpanel.h"
+#include "animations/mwarpanimation.h"
+#include "mdebug.h"
-#include <QGraphicsGridLayout>
-#include <QTimeLine>
#include <QDebug>
+#include <QPropertyAnimation>
+#include <QParallelAnimationGroup>
+#include <QPauseAnimation>
MEscapeButtonPanelViewPrivate::MEscapeButtonPanelViewPrivate() :
q_ptr(0),
- opacityTimeLine(0),
+ backButton(0),
+ closeButton(0),
escapeMode(MEscapeButtonPanelModel::CloseMode),
controller(0)
{
@@ -41,69 +45,68 @@ MEscapeButtonPanelViewPrivate::~MEscapeButtonPanelViewPrivate()
void MEscapeButtonPanelViewPrivate::init()
{
- Q_Q(MEscapeButtonPanelView);
-
- QGraphicsGridLayout *mainLayout = new QGraphicsGridLayout;
- mainLayout->setContentsMargins(0, 0, 0, 0);
- mainLayout->setSpacing(0);
-
backButton = new MButton(controller);
closeButton = new MButton(controller);
backButton->setViewType("icon");
closeButton->setViewType("icon");
- mainLayout->addItem(closeButton, 0, 0);
- mainLayout->addItem(backButton, 0, 0);
- controller->setLayout(mainLayout);
-
QObject::connect(backButton, SIGNAL(clicked()), controller, SIGNAL(buttonClicked()));
QObject::connect(closeButton, SIGNAL(clicked()), controller, SIGNAL(buttonClicked()));
- opacityTimeLine = new QTimeLine(500, q);
- QObject::connect(opacityTimeLine, SIGNAL(finished()),
- q, SLOT(finalizeEscapeButtonTransition()));
-
- QObject::connect(opacityTimeLine, SIGNAL(valueChanged(qreal)),
- q, SLOT(opacityChange(qreal)));
-
- finalizeEscapeButtonTransition();
+ setupEscapeButtonTransition();
}
-void MEscapeButtonPanelViewPrivate::finalizeEscapeButtonTransition()
+void MEscapeButtonPanelViewPrivate::animatedEscapeButtonTransition()
{
+ MWarpAnimation *warpInAnimation = 0;
+ MWarpAnimation *warpOutAnimation = 0;
+
switch (escapeMode) {
case MEscapeButtonPanelModel::CloseMode:
- backButton->hide();
- closeButton->show();
+ warpInAnimation = new MWarpAnimation(closeButton, MWarpAnimation::InFromLeft, controller);
+ warpOutAnimation = new MWarpAnimation(backButton, MWarpAnimation::OutFromRight, controller);
break;
case MEscapeButtonPanelModel::BackMode:
- closeButton->hide();
- backButton->show();
+ warpInAnimation = new MWarpAnimation(backButton, MWarpAnimation::InFromRight, controller);
+ warpOutAnimation = new MWarpAnimation(closeButton, MWarpAnimation::OutFromLeft, controller);
break;
default:
- qCritical() << "MEscapeButtonPanelViewPrivate::finalizeEscapeButtonTransition: unknown mode for escape button";
+ mWarning("MEscapeButtonPanelView") << "Unknown mode for escape button transition";
break;
};
+
+ if (warpInAnimation && warpOutAnimation) {
+ warpInAnimation->start(QAbstractAnimation::DeleteWhenStopped);
+ warpOutAnimation->start(QAbstractAnimation::DeleteWhenStopped);
+ }
}
-void MEscapeButtonPanelViewPrivate::opacityChange(qreal step)
+void MEscapeButtonPanelViewPrivate::immediateEscapeButtonTransition()
{
- qreal opposite = 1.0 - step;
switch (escapeMode) {
case MEscapeButtonPanelModel::CloseMode:
- closeButton->setOpacity(step);
- backButton->setOpacity(opposite);
+ backButton->hide();
+ closeButton->show();
break;
case MEscapeButtonPanelModel::BackMode:
- closeButton->setOpacity(opposite);
- backButton->setOpacity(step);
+ closeButton->hide();
+ backButton->show();
break;
default:
- qCritical() << "MEscapeButtonPanelViewPrivate::opacityChange: unknown mode for escape button";
+ mWarning("MEscapeButtonPanelView") << "Unknown mode for escape button transition";
break;
};
}
+void MEscapeButtonPanelViewPrivate::setupEscapeButtonTransition()
+{
+ if (controller->isOnDisplay()) {
+ animatedEscapeButtonTransition();
+ } else {
+ immediateEscapeButtonTransition();
+ }
+}
+
MEscapeButtonPanelView::MEscapeButtonPanelView(MEscapeButtonPanel *controller) :
MSceneWindowView(controller),
d_ptr(new MEscapeButtonPanelViewPrivate)
@@ -129,7 +132,6 @@ void MEscapeButtonPanelView::applyStyle()
d->backButton->setIconID(style()->backButtonIconId());
d->closeButton->setObjectName(style()->closeButtonObjectName());
d->closeButton->setIconID(style()->closeButtonIconId());
- d->opacityTimeLine->setDuration(style()->buttonAnimationLength());
}
void MEscapeButtonPanelView::updateData(const QList<const char *>& modifications)
@@ -142,7 +144,7 @@ void MEscapeButtonPanelView::updateData(const QList<const char *>& modifications
foreach(member, modifications) {
if (member == MEscapeButtonPanelModel::Mode) {
d->escapeMode = model()->mode();
- d->opacityTimeLine->start();
+ d->setupEscapeButtonTransition();
}
}
}
diff --git a/src/views/mescapebuttonpanelview.h b/src/views/mescapebuttonpanelview.h
index ef2fc229..ea989b14 100644
--- a/src/views/mescapebuttonpanelview.h
+++ b/src/views/mescapebuttonpanelview.h
@@ -57,9 +57,6 @@ protected Q_SLOTS:
private:
Q_DISABLE_COPY(MEscapeButtonPanelView)
Q_DECLARE_PRIVATE(MEscapeButtonPanelView)
-
- Q_PRIVATE_SLOT(d_func(), void finalizeEscapeButtonTransition())
- Q_PRIVATE_SLOT(d_func(), void opacityChange(qreal))
};
#endif // MESCAPEBUTTONPANELVIEW_P
diff --git a/src/views/mescapebuttonpanelview_p.h b/src/views/mescapebuttonpanelview_p.h
index 46ff21ad..86c55558 100644
--- a/src/views/mescapebuttonpanelview_p.h
+++ b/src/views/mescapebuttonpanelview_p.h
@@ -39,15 +39,17 @@ public:
virtual void init();
- void finalizeEscapeButtonTransition();
- void opacityChange(qreal step);
+ void setupEscapeButtonTransition();
MButton *backButton;
MButton *closeButton;
- QTimeLine *opacityTimeLine;
MEscapeButtonPanelModel::EscapeMode escapeMode;
MEscapeButtonPanel *controller;
+
+private:
+ void animatedEscapeButtonTransition();
+ void immediateEscapeButtonTransition();
};
#endif
diff --git a/src/views/mlabelview.cpp b/src/views/mlabelview.cpp
index 3253fbab..4bec5b8d 100644
--- a/src/views/mlabelview.cpp
+++ b/src/views/mlabelview.cpp
@@ -28,6 +28,7 @@
#include <QAbstractTextDocumentLayout>
#include <QGraphicsSceneMouseEvent>
#include <QGraphicsSceneResizeEvent>
+#include <QTapAndHoldGesture>
MLabelViewPrivate::MLabelViewPrivate()
{
@@ -207,9 +208,23 @@ void MLabelView::cancelEvent(MCancelEvent *event)
void MLabelView::longPressEvent(QGraphicsSceneContextMenuEvent *event)
{
- Q_D(MLabelView);
+ //FIXME
+ //Functionality replaced by tapAndHoldGestureEvent, this function not needed any more
event->ignore();
- d->impl->longPressEvent(event);
+}
+
+void MLabelView::tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGesture* gesture)
+{
+ Q_UNUSED(event);
+ Q_D(MLabelView);
+
+ if (gesture->state() == Qt::GestureFinished) {
+ QGraphicsSceneContextMenuEvent ev;
+ ev.setPos(gesture->position());
+ d->impl->longPressEvent(&ev);
+ }
+
+ event->accept();
}
diff --git a/src/views/mlabelview.h b/src/views/mlabelview.h
index 62f18a9c..dcf82197 100644
--- a/src/views/mlabelview.h
+++ b/src/views/mlabelview.h
@@ -124,6 +124,7 @@ protected:
virtual void applyStyle();
virtual QFont font() const;
virtual void cancelEvent(MCancelEvent *event);
+ virtual void tapAndHoldGestureEvent(QGestureEvent *event, QTapAndHoldGesture* gesture);
//! \reimp_end
protected Q_SLOTS:
diff --git a/src/views/mlabelview_rich.cpp b/src/views/mlabelview_rich.cpp
index 0e9f6275..ca019531 100644
--- a/src/views/mlabelview_rich.cpp
+++ b/src/views/mlabelview_rich.cpp
@@ -446,7 +446,7 @@ void MLabelViewRich::updateHighlighting()
{
//TODO: Should the highlight format come from the highlighter object?
- MLabelHighlighterList list = viewPrivate->model()->highlighters();
+ QList<MLabelHighlighter *> list = viewPrivate->model()->highlighters();
const int listSize = list.size();
for (int i = 0; i < listSize; ++i) {
const MLabelHighlighter *highlighter = list[i];
diff --git a/src/views/mlabelview_simple.cpp b/src/views/mlabelview_simple.cpp
index 7a2c5c11..e5d44198 100644
--- a/src/views/mlabelview_simple.cpp
+++ b/src/views/mlabelview_simple.cpp
@@ -167,7 +167,8 @@ QSizeF MLabelViewSimple::sizeHint(Qt::SizeHint which, const QSizeF &constraint)
r.setHeight(QWIDGETSIZE_MAX);
}
- QRectF bR(fm.boundingRect(r, viewPrivate->textOptions.alignment() | Qt::TextSingleLine,
+ Qt::TextFlag wrap = viewPrivate->controller->wordWrap() ? Qt::TextWordWrap : Qt::TextSingleLine;
+ QRectF bR(fm.boundingRect(r, viewPrivate->textOptions.alignment() | wrap,
viewPrivate->model()->text()));
return QSizeF(fm.width("x"), bR.height());
@@ -188,7 +189,8 @@ QSizeF MLabelViewSimple::sizeHint(Qt::SizeHint which, const QSizeF &constraint)
QFontMetricsF fm(viewPrivate->controller->font());
- QRectF bR(fm.boundingRect(QRectF(0, 0, w, h), viewPrivate->textOptions.alignment() | Qt::TextSingleLine,
+ Qt::TextFlag wrap = viewPrivate->controller->wordWrap() ? Qt::TextWordWrap : Qt::TextSingleLine;
+ QRectF bR(fm.boundingRect(QRectF(0, 0, w, h), viewPrivate->textOptions.alignment() | wrap,
viewPrivate->model()->text()));
return bR.size().boundedTo(QSizeF(w, h));
}
@@ -223,6 +225,7 @@ bool MLabelViewSimple::updateData(const QList<const char *>& modifications)
} else {
viewPrivate->textOptions.setWrapMode(QTextOption::ManualWrap);
}
+ needUpdate = true;
} else if (member == MLabelModel::TextDirection) {
needUpdate = true;
viewPrivate->textOptions.setTextDirection(viewPrivate->model()->textDirection());
diff --git a/src/views/mlistindexview.cpp b/src/views/mlistindexview.cpp
index 0119b96a..1fb674f0 100644
--- a/src/views/mlistindexview.cpp
+++ b/src/views/mlistindexview.cpp
@@ -34,10 +34,14 @@
#include "mlist.h"
MListIndexViewPrivate::MListIndexViewPrivate()
+ : controller(NULL),
+ controllerModel(NULL),
+ container(NULL),
+ eventScene(NULL),
+ shortcutHeight(0),
+ shortcutsCount(0),
+ q_ptr(NULL)
{
- shortcutHeight = 0;
- eventScene = NULL;
- container = NULL;
}
MListIndexViewPrivate::~MListIndexViewPrivate()
diff --git a/src/views/mlistview.cpp b/src/views/mlistview.cpp
index 16ec55d5..57cb9809 100644
--- a/src/views/mlistview.cpp
+++ b/src/views/mlistview.cpp
@@ -92,6 +92,8 @@ void MListView::updateData(const QList<const char *>& modifications)
scrollTo(model()->scrollToIndex(), static_cast<MList::ScrollHint>(model()->scrollHint()));
} else if (member == MListModel::LongTap) {
longTap(model()->longTap());
+ } else if (member == MListModel::ListIndexVisible) {
+ d_ptr->updateListIndexVisibility();
}
}
}
@@ -119,10 +121,11 @@ void MListView::applyStyle()
if (d_ptr) {
d_ptr->clearVisibleItemsArray();
+ d_ptr->updateItemHeight();
d_ptr->updateSeparators();
d_ptr->updateSeparatorSize();
d_ptr->setHeadersCreator(new MDefaultHeadersCreator(style()->groupHeaderObjectName()));
- relayoutItemsInViewportRect();
+ relayoutItemsInViewportRect();
}
}
@@ -205,7 +208,8 @@ void MListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &botto
int bottomRightRow = d_ptr->indexToFlatRow(bottomRight);
int top = qMax(topLeftRow, firstVisibleRow);
- int bottom = qMin(bottomRightRow, lastVisibleRow);
+ int lastCellInLastVisibleRow = lastVisibleRow + model()->columns() - lastVisibleRow % model()->columns() - 1;
+ int bottom = qMin(bottomRightRow, lastCellInLastVisibleRow);
for (int i = top; i <= bottom; i++) {
QModelIndex cellIndex = d_ptr->flatRowToIndex(i);
diff --git a/src/views/mlistview_p.cpp b/src/views/mlistview_p.cpp
index b0f3c53e..2f743a6f 100644
--- a/src/views/mlistview_p.cpp
+++ b/src/views/mlistview_p.cpp
@@ -212,7 +212,7 @@ void MListViewPrivate::connectPannableViewport()
disconnect(this, SLOT(viewportSizeChanged(QSizeF)));
connect(controller, SIGNAL(parentChanged()), SLOT(controllerParentChanged()));
-
+
pannableViewport = MListViewPrivateNamespace::findParentWidgetOfType<MPannableViewport>(controller);
if(pannableViewport) {
updatePannableViewportPosition();
@@ -421,6 +421,10 @@ void MListViewPrivate::drawHorizontalSeparator(int row, QPainter *painter, const
painter->translate(-pos.x(), -pos.y());
}
+void MListViewPrivate::updateListIndexVisibility()
+{
+}
+
////////////
// Plain list
////////////
@@ -625,7 +629,11 @@ int MPlainMultiColumnListViewPrivate::locateVisibleRowAt(int y, int x)
if (viewWidth)
column = x / (viewWidth / columns);
- return row + column;
+ int flatRow = row + column;
+ if (flatRow >= itemsCount())
+ flatRow = itemsCount() - 1;
+
+ return flatRow;
}
void MPlainMultiColumnListViewPrivate::updateItemSize()
@@ -806,6 +814,7 @@ void MGroupHeaderListViewPrivate::resetModel(MListModel *mListModel)
if(!listIndexWidget) {
listIndexWidget = new MListIndex(controller);
+ updateListIndexVisibility();
}
headersPositions.resize(this->headersCount());
@@ -1056,6 +1065,16 @@ void MGroupHeaderListViewPrivate::drawSeparator(int row, QPainter *painter, cons
drawHorizontalSeparator(row, painter, option);
}
+void MGroupHeaderListViewPrivate::updateListIndexVisibility()
+{
+ if(listIndexWidget) {
+ if(controllerModel->listIndexVisible())
+ listIndexWidget->show();
+ else
+ listIndexWidget->hide();
+ }
+}
+
////////////
// Group Header MultiColumn
////////////
diff --git a/src/views/mlistview_p.h b/src/views/mlistview_p.h
index f8e5feac..902dee4a 100644
--- a/src/views/mlistview_p.h
+++ b/src/views/mlistview_p.h
@@ -138,6 +138,8 @@ public:
virtual void drawSeparators(QPainter *painter, const QStyleOptionGraphicsItem *option);
virtual void drawSeparator(const int row, QPainter *painter, const QStyleOptionGraphicsItem *option);
+ virtual void updateListIndexVisibility();
+
public Q_SLOTS:
void movingDetectionTimerTimeout();
void viewportPositionChanged(const QPointF &pos);
@@ -276,6 +278,8 @@ public:
virtual void drawSeparator(const int row, QPainter *painter, const QStyleOptionGraphicsItem *option);
+ virtual void updateListIndexVisibility();
+
public:
QVector<int> headersPositions;
QVector<int> headersRows;
diff --git a/src/views/mmessageboxview.cpp b/src/views/mmessageboxview.cpp
index 2661ea84..cca478f9 100644
--- a/src/views/mmessageboxview.cpp
+++ b/src/views/mmessageboxview.cpp
@@ -26,6 +26,7 @@
#include <QGraphicsLinearLayout>
MMessageBoxViewPrivate::MMessageBoxViewPrivate()
+ : label(0)
{
}
diff --git a/src/views/mnavigationbarview.cpp b/src/views/mnavigationbarview.cpp
index 9f96f58a..84ccdf2e 100644
--- a/src/views/mnavigationbarview.cpp
+++ b/src/views/mnavigationbarview.cpp
@@ -37,9 +37,8 @@
// --------------------------------------------------------------------------
MNavigationBarViewPrivate::MNavigationBarViewPrivate()
- : layout(new QGraphicsGridLayout()),
+ : layout(new QGraphicsLinearLayout()),
applicationMenuButton(0),
- toolbarPlaceholder(0),
toolBar(0)
{
}
@@ -57,16 +56,8 @@ void MNavigationBarViewPrivate::init()
applicationMenuButton = new MApplicationMenuButton(controller);
applicationMenuButton->setObjectName("NavigationBarMenuButton");
- layout->addItem(applicationMenuButton, 0, 0);
- layout->setAlignment(applicationMenuButton, Qt::AlignVCenter);
-
- // panel for placing toolbar
- toolbarPlaceholder = new MWidget(controller);
- layout->addItem(toolbarPlaceholder, 0, 1);
-
- toolbarPlaceholderLayout = new QGraphicsLinearLayout(toolbarPlaceholder);
- toolbarPlaceholderLayout->setContentsMargins(0, 0, 0, 0);
- toolbarPlaceholder->setLayout(toolbarPlaceholderLayout);
+ layout->addItem(applicationMenuButton);
+ layout->setAlignment(applicationMenuButton, Qt::AlignCenter);
// Connects button signals
QObject::connect(applicationMenuButton, SIGNAL(clicked()), controller, SIGNAL(viewmenuTriggered()));
@@ -77,7 +68,7 @@ void MNavigationBarViewPrivate::setMenuButtonwidth()
{
Q_Q(MNavigationBarView);
- /* FIXME: Its there because the UI specs contains the following forumla:
+ /* FIXME: Its there because the UI specs contains the following formula:
width of view menu button = width of portrait view - width of home button - width of close button.
This needs to be removed when there exists support for reading CSS constants in the code
*/
@@ -99,16 +90,16 @@ void MNavigationBarViewPrivate::toolBarChanged()
MToolBar *nextToolBar = q->model()->toolBar();
- // Make sure the last toolbar is deleted first...
+ // Make sure the last toolbar is removed first...
if (toolBar) {
if (nextToolBar == toolBar) return;
- toolbarPlaceholderLayout->removeAt(0);
+ layout->removeAt(1);
toolBar->setParentItem(NULL);
}
if (nextToolBar) {
- toolbarPlaceholderLayout->addItem(nextToolBar);
+ layout->addItem(nextToolBar);
nextToolBar->show();
}
toolBar = nextToolBar;
diff --git a/src/views/mnavigationbarview_p.h b/src/views/mnavigationbarview_p.h
index a3b29afd..da987f9c 100644
--- a/src/views/mnavigationbarview_p.h
+++ b/src/views/mnavigationbarview_p.h
@@ -46,11 +46,9 @@ public:
void notificationFlagChanged();
void toolBarChanged();
- QGraphicsGridLayout *layout;
- QGraphicsLinearLayout *toolbarPlaceholderLayout;
+ QGraphicsLinearLayout *layout;
MApplicationMenuButton *applicationMenuButton;
- MWidget *toolbarPlaceholder;
MToolBar *toolBar;
};
diff --git a/src/views/mobjectmenuview.cpp b/src/views/mobjectmenuview.cpp
index fc951f23..cc827737 100644
--- a/src/views/mobjectmenuview.cpp
+++ b/src/views/mobjectmenuview.cpp
@@ -102,8 +102,8 @@ void MObjectMenuView::actionAdded(MAction *action)
// create button for this action
MButton *button = new MButton(action->iconID(), action->text(), d->controller);
- QObject::connect(button, SIGNAL(clicked(bool)), action, SIGNAL(triggered()));
d->controller->connect(button, SIGNAL(clicked(bool)), SLOT(dismiss()));
+ QObject::connect(button, SIGNAL(clicked(bool)), action, SIGNAL(triggered()));
button->setEnabled(action->isEnabled());
d->layout->addItem(button);
diff --git a/src/views/mscenelayereffectdimview.cpp b/src/views/mscenelayereffectdimview.cpp
index 041563ab..41ba6d47 100644
--- a/src/views/mscenelayereffectdimview.cpp
+++ b/src/views/mscenelayereffectdimview.cpp
@@ -17,8 +17,6 @@
**
****************************************************************************/
-#include <QPropertyAnimation>
-
#include "mscenelayereffectdimview.h"
#include "mscenewindowview_p.h"
@@ -31,7 +29,6 @@ class MSceneLayerEffectDimViewPrivate : public MSceneWindowViewPrivate
{
public:
MSceneLayerEffect *controller;
- QPropertyAnimation *animation;
};
//! \internal_end
@@ -41,9 +38,6 @@ MSceneLayerEffectDimView::MSceneLayerEffectDimView(MSceneLayerEffect *controller
Q_D(MSceneLayerEffectDimView);
d->controller = controller;
d->controller->setFlag(QGraphicsItem::ItemDoesntPropagateOpacityToChildren, true);
-
- d->animation = new QPropertyAnimation(d->controller, "opacity", this);
- d->animation->setStartValue(0.0f);
}
MSceneLayerEffectDimView::~MSceneLayerEffectDimView()
@@ -64,26 +58,11 @@ QRectF MSceneLayerEffectDimView::boundingRect() const
return QRectF(QPointF(0, 0), d->controller->size());
}
-void MSceneLayerEffectDimView::updateData(const QList<const char *>& modifications)
+void MSceneLayerEffectDimView::applyStyle()
{
Q_D(MSceneLayerEffectDimView);
- MSceneWindowView::updateData(modifications);
- const char *member;
- foreach(member, modifications) {
- if (member == MSceneLayerEffectModel::Enabled) {
- if (model()->enabled()) {
- d->animation->setDuration(style()->fadeDuration());
- d->animation->setEasingCurve(style()->easingCurve());
- d->animation->setEndValue(style()->opacity());
- d->animation->start();
- } else {
- d->animation->setStartValue(d->controller->opacity());
- d->animation->setEndValue(0.0f);
- d->animation->start();
- }
- }
- }
+ d->controller->setOpacity(style()->opacity());
}
M_REGISTER_VIEW_NEW(MSceneLayerEffectDimView, MSceneLayerEffect)
diff --git a/src/views/mscenelayereffectdimview.h b/src/views/mscenelayereffectdimview.h
index e9016040..00f5ea69 100644
--- a/src/views/mscenelayereffectdimview.h
+++ b/src/views/mscenelayereffectdimview.h
@@ -42,7 +42,7 @@ public:
protected Q_SLOTS:
//! \reimp
- virtual void updateData(const QList<const char *>& modifications);
+ virtual void applyStyle();
//! \reimp_end
private:
diff --git a/src/views/mscenewindowview.cpp b/src/views/mscenewindowview.cpp
index d5dda8e3..ad2a6bb2 100644
--- a/src/views/mscenewindowview.cpp
+++ b/src/views/mscenewindowview.cpp
@@ -59,6 +59,10 @@ MSceneWindowView::~MSceneWindowView()
void MSceneWindowView::applyStyle()
{
+ /*!
+ * Setuping disapearTimeout, by default= 0
+ */
+ model()->setDisappearTimeout(style()->disappearTimeout());
MWidgetView::applyStyle();
emit geometryAttributesChanged();
diff --git a/src/views/msliderview.cpp b/src/views/msliderview.cpp
index 1b7c3495..121aecb3 100644
--- a/src/views/msliderview.cpp
+++ b/src/views/msliderview.cpp
@@ -27,7 +27,6 @@
#include <QSizeF>
#include <QApplication>
#include <QGraphicsAnchorLayout>
-#include <QGraphicsGridLayout>
#include <QPropertyAnimation>
#include <limits>
@@ -91,7 +90,6 @@ void MSliderHandle::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
Q_UNUSED(widget);
QRect handleRect = rect().toRect();
-
if (sliderState == MSliderModel::Pressed) {
if (orientation == Qt::Horizontal)
painter->drawPixmap((handleRect.width() - handlePressedPixmap->width()) / 2,
@@ -444,23 +442,31 @@ int MSliderGroove::screenPointToValue(const QPointF &point) const
if (orientation == Qt::Vertical)
coordinate = handlePoint.y();
+ int range = maximum - minimum;
int offset = 0;
if (minimum != maximum) {
- QRectF clickableRect = clickableArea();
+ QRectF valueRangeRect = rect();
if (orientation == Qt::Horizontal) {
- coordinate = qBound(clickableRect.left(), coordinate, clickableRect.right());
+ qreal hAdjustment = sliderHandle->rect().width() / 2;
+
+ valueRangeRect.adjust(hAdjustment, 0, -hAdjustment, 0);
+ coordinate = qBound(valueRangeRect.left(), coordinate, valueRangeRect.right());
if (!reverse)
- offset = qRound(((coordinate - clickableRect.left()) * (maximum - minimum)) / clickableRect.width());
+ offset = qRound(((coordinate - valueRangeRect.left()) * range) / valueRangeRect.width());
else
- offset = qRound(((clickableRect.right() - coordinate) * (maximum - minimum)) / clickableRect.width());
+ offset = qRound(((valueRangeRect.right() - coordinate) * range) / valueRangeRect.width());
}
if (orientation == Qt::Vertical) {
- coordinate = qBound(clickableRect.top(), coordinate, clickableRect.bottom());
- offset = qRound(((clickableRect.bottom() - coordinate) * (maximum - minimum)) / clickableRect.height());
+ qreal vAdjustment = sliderHandle->rect().height() / 2;
+
+ valueRangeRect.adjust(0, vAdjustment, 0, -vAdjustment);
+ coordinate = qBound(valueRangeRect.top(), coordinate, valueRangeRect.bottom());
+
+ offset = qRound(((valueRangeRect.bottom() - coordinate) * range) / valueRangeRect.height());
}
}
@@ -476,31 +482,19 @@ QRectF MSliderGroove::clickableArea() const
return grooveRect;
if (orientation == Qt::Horizontal) {
- qreal hLeftAdjustment = sliderHandle->rect().width() / 2;
- qreal hRightAdjustment = hLeftAdjustment;
+ qreal hAdjustment = (sliderHandle->rect().width() - grooveThickness) / 2;
+ if (hAdjustment < 0)
+ hAdjustment = 0;
- if (backgroundBaseImage) {
- int left, right, top, bottom;
- backgroundBaseImage->borders(&left, &right, &top, &bottom);
-
- hLeftAdjustment = qMax(hLeftAdjustment, qreal(left));
- hRightAdjustment = qMax(hRightAdjustment, qreal(right));
- }
- grooveRect.adjust(hLeftAdjustment, 0, -hRightAdjustment, 0);
+ grooveRect.adjust(hAdjustment, 0, -hAdjustment, 0);
}
if (orientation == Qt::Vertical) {
- qreal vTopAdjustment = sliderHandle->rect().height() / 2;
- qreal vBottomAdjustment = vTopAdjustment;
+ qreal vAdjustment = (sliderHandle->rect().height() - grooveThickness) / 2;
+ if (vAdjustment < 0)
+ vAdjustment = 0;
- if (backgroundVerticalBaseImage) {
- int left, right, top, bottom;
- backgroundVerticalBaseImage->borders(&left, &right, &top, &bottom);
-
- vTopAdjustment = qMax(vTopAdjustment, qreal(top));
- vBottomAdjustment = qMax(vBottomAdjustment, qreal(bottom));
- }
- grooveRect.adjust(0, vTopAdjustment, 0, -vBottomAdjustment);
+ grooveRect.adjust(0, vAdjustment, 0, -vAdjustment);
}
return grooveRect;
@@ -560,28 +554,30 @@ void MSliderGroove::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
if (!grooveRect.isValid())
return;
- int left, right, top, bottom;
+ int left = 0;
+ int right = 0;
+ int top = 0;
+ int bottom = 0;
- if (orientation == Qt::Horizontal) {
- qreal hLeftAdjustment = 0;
- qreal hRightAdjustment = 0;
+ int horizontalMargins = 0;
+ int verticalMargins = 0;
+ if (orientation == Qt::Horizontal) {
if (backgroundBaseImage) {
backgroundBaseImage->borders(&left, &right, &top, &bottom);
-
- qreal semiWidth = sliderHandle->rect().width() / 2;
-
- if (semiWidth > left)
- hLeftAdjustment = semiWidth;
- if (semiWidth > right)
- hRightAdjustment = semiWidth;
+ horizontalMargins = left + right;
}
+ qreal hAdjustment = (sliderHandle->rect().width() - grooveThickness) / 2;
+ if (hAdjustment < 0)
+ hAdjustment = 0;
+
qreal vAdjustment = (grooveRect.height() - grooveThickness) / 2;
- grooveRect.adjust(hLeftAdjustment, vAdjustment, -hRightAdjustment, -vAdjustment);
+
+ grooveRect.adjust(hAdjustment, vAdjustment, -hAdjustment, -vAdjustment);
if (backgroundBaseImage) {
- if (grooveRect.width() >= qreal(backgroundBaseImage->pixmap()->width()))
+ if (grooveRect.width() >= qreal(horizontalMargins))
backgroundBaseImage->draw(grooveRect.toRect(), painter);
}
@@ -607,7 +603,7 @@ void MSliderGroove::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
receivedRect.setLeft(grooveRect.left());
}
- if (receivedRect.width() >= qreal(backgroundReceivedImage->pixmap()->width()))
+ if (receivedRect.width() >= qreal(horizontalMargins))
backgroundReceivedImage->draw(receivedRect.toRect(), painter);
}
}
@@ -615,36 +611,36 @@ void MSliderGroove::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
if (backgroundElapsedImage) {
QRectF elapsedRect = grooveRect;
- if (!reverse)
- elapsedRect.setRight(valueToScreenCoordinate(value));
- else
- elapsedRect.setLeft(valueToScreenCoordinate(value));
+ if (!reverse) {
+ if (value < maximum)
+ elapsedRect.setRight(valueToScreenCoordinate(value));
+ }
+ else {
+ if (value < maximum)
+ elapsedRect.setLeft(valueToScreenCoordinate(value));
+ }
- if (elapsedRect.width() >= qreal(backgroundElapsedImage->pixmap()->width()))
+ if (elapsedRect.width() >= qreal(horizontalMargins))
backgroundElapsedImage->draw(elapsedRect.toRect(), painter);
}
}
if (orientation == Qt::Vertical) {
- qreal vTopAdjustment = 0;
- qreal vBottomAdjustment = 0;
-
if (backgroundVerticalBaseImage) {
backgroundVerticalBaseImage->borders(&left, &right, &top, &bottom);
-
- qreal semiHeight = sliderHandle->rect().height() / 2;
-
- if (semiHeight > top)
- vTopAdjustment = semiHeight;
- if (semiHeight > bottom)
- vBottomAdjustment = semiHeight;
+ verticalMargins = top + bottom;
}
+ qreal vAdjustment = (sliderHandle->rect().width() - grooveThickness) / 2;
+ if (vAdjustment < 0)
+ vAdjustment = 0;
+
qreal hAdjustment = (grooveRect.width() - grooveThickness) / 2;
- grooveRect.adjust(hAdjustment, vTopAdjustment, -hAdjustment, -vBottomAdjustment);
+
+ grooveRect.adjust(hAdjustment, vAdjustment, -hAdjustment, -vAdjustment);
if (backgroundVerticalBaseImage) {
- if (grooveRect.height() >= qreal(backgroundVerticalBaseImage->pixmap()->height()))
+ if (grooveRect.width() >= qreal(verticalMargins))
backgroundVerticalBaseImage->draw(grooveRect.toRect(), painter);
}
@@ -660,7 +656,7 @@ void MSliderGroove::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
if (loadedContentMaximum == maximum)
receivedRect.setTop(grooveRect.top());
- if (receivedRect.height() >= qreal(backgroundVerticalReceivedImage->pixmap()->height()))
+ if (receivedRect.height() >= qreal(verticalMargins))
backgroundVerticalReceivedImage->draw(receivedRect.toRect(), painter);
}
}
@@ -668,9 +664,11 @@ void MSliderGroove::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
if (backgroundVerticalElapsedImage) {
QRectF elapsedRect = grooveRect;
- elapsedRect.setTop(valueToScreenCoordinate(value));
+ if (value < maximum) {
+ elapsedRect.setTop(valueToScreenCoordinate(value));
+ }
- if (elapsedRect.height() >= qreal(backgroundVerticalElapsedImage->pixmap()->height()))
+ if (elapsedRect.height() >= qreal(verticalMargins))
backgroundVerticalElapsedImage->draw(elapsedRect.toRect(), painter);
}
}
@@ -701,21 +699,28 @@ QSizeF MSliderGroove::sizeHint(Qt::SizeHint which, const QSizeF &constraint) con
return QSizeF(minimumLength, sliderHandle->sizeHint(Qt::PreferredSize).height());
if (orientation == Qt::Vertical)
return QSizeF(sliderHandle->sizeHint(Qt::PreferredSize).width(), minimumLength);
+
+ break;
}
case Qt::PreferredSize: {
if (orientation == Qt::Horizontal)
return QSizeF(preferredLength, sliderHandle->sizeHint(Qt::PreferredSize).height());
if (orientation == Qt::Vertical)
return QSizeF(sliderHandle->sizeHint(Qt::PreferredSize).width(), preferredLength);
+
+ break;
}
case Qt::MaximumSize: {
if (orientation == Qt::Horizontal)
return QSizeF(maximumLength, sliderHandle->sizeHint(Qt::PreferredSize).height());
if (orientation == Qt::Vertical)
return QSizeF(sliderHandle->sizeHint(Qt::PreferredSize).width(), maximumLength);
+
+ break;
}
default:
mWarning("MSliderView") << "MSliderView::sizeHint() don't know how to handle the value of 'which' ";
+ break;
}
return QSizeF(0, 0);
@@ -762,6 +767,11 @@ void MSliderGroove::updateHandleIndicatorPos()
if (!controller)
return;
+ //slider handle indicator position will not be updated
+ //if it is not visible
+ if (!sliderHandleIndicator->isVisible())
+ return;
+
bool reverse = qApp->isRightToLeft();
QPointF handleIndicatorPos = sliderHandle->pos();
@@ -827,22 +837,30 @@ qreal MSliderGroove::valueToScreenCoordinate(int value) const
bool reverse = qApp->isRightToLeft();
qreal beginning = 0;
- if (orientation == Qt::Horizontal)
- beginning = clickableArea().left();
- if (orientation == Qt::Vertical)
- beginning = clickableArea().top();
-
+ int range = maximum - minimum;
qreal offset = 0;
+ QRectF valueRangeRect = rect();
+
if (minimum != maximum) {
if (orientation == Qt::Horizontal) {
+ qreal hAdjustment = sliderHandle->rect().width() / 2;
+
+ valueRangeRect.adjust(hAdjustment, 0, -hAdjustment, 0);
+ beginning = valueRangeRect.left();
+
if (!reverse)
- offset = (value - minimum) * clickableArea().width() / (maximum - minimum);
+ offset = (value - minimum) * valueRangeRect.width() / range;
else
- offset = (maximum - value) * clickableArea().width() / (maximum - minimum);
+ offset = (maximum - value) * valueRangeRect.width() / range;
}
if (orientation == Qt::Vertical) {
- offset = (maximum - value) * clickableArea().height() / (maximum - minimum);
+ qreal vAdjustment = sliderHandle->rect().height() / 2;
+
+ valueRangeRect.adjust(0, vAdjustment, 0, -vAdjustment);
+ beginning = valueRangeRect.top();
+
+ offset = (maximum - value) * valueRangeRect.height() / range;
}
}
@@ -1065,7 +1083,7 @@ void MSliderViewPrivate::updateValue(QGraphicsSceneMouseEvent *event)
{
if (valueAnimation == 0) {
valueAnimation = new QPropertyAnimation(controller, "value", controller);
- valueAnimation->setDuration(150);
+ valueAnimation->setDuration(50);
valueAnimation->setEasingCurve(QEasingCurve::OutSine);
}
@@ -1106,6 +1124,8 @@ MSliderView::MSliderView(MSlider *controller):
Q_D(MSliderView);
d->q_ptr = this;
d->init(controller);
+
+ connect(controller, SIGNAL(displayExited()), this, SLOT(lowerSliderHandleIndicator()));
}
MSliderView::~MSliderView()
@@ -1247,7 +1267,6 @@ void MSliderView::cancelEvent(MCancelEvent *event)
Q_D(MSliderView);
d->controller->setState(MSliderModel::Released);
-
if (d->pressTimerId) {
killTimer(d->pressTimerId);
d->pressTimerId = 0;
@@ -1261,17 +1280,16 @@ void MSliderView::cancelEvent(MCancelEvent *event)
void MSliderView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(MSliderView);
- if (d->isCollision(event) || model()->state() == MSliderModel::Pressed) {
- d->controller->setState(MSliderModel::Released);
- d->updateValue(event);
- if (d->pressTimerId) {
- killTimer(d->pressTimerId);
- d->pressTimerId = 0;
- }
+ d->controller->setState(MSliderModel::Released);
+ d->updateValue(event);
- d->sliderGroove->lowerHandleIndicator();
+ if (d->pressTimerId) {
+ killTimer(d->pressTimerId);
+ d->pressTimerId = 0;
}
+
+ d->sliderGroove->lowerHandleIndicator();
}
void MSliderView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
@@ -1283,7 +1301,7 @@ void MSliderView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
if (model()->handleLabelVisible())
d->sliderGroove->raiseHandleIndicator();
- } else if (model()->state() == MSliderModel::Pressed) {
+ } else {
d->controller->setState(MSliderModel::Released);
d->updateValue(event);
d->sliderGroove->lowerHandleIndicator();
@@ -1307,14 +1325,20 @@ void MSliderView::hideEvent(QHideEvent* event)
{
Q_UNUSED(event);
+ lowerSliderHandleIndicator();
+}
+
+void MSliderView::lowerSliderHandleIndicator()
+{
Q_D(MSliderView);
+
d->controller->setState(MSliderModel::Released);
-
+
if (d->pressTimerId) {
killTimer(d->pressTimerId);
d->pressTimerId = 0;
}
-
+
d->sliderGroove->lowerHandleIndicator();
}
diff --git a/src/views/msliderview.h b/src/views/msliderview.h
index e45415ae..f5bb05cf 100644
--- a/src/views/msliderview.h
+++ b/src/views/msliderview.h
@@ -151,6 +151,12 @@ private:
Q_DISABLE_COPY(MSliderView)
Q_DECLARE_PRIVATE(MSliderView)
+private Q_SLOTS:
+ /*!
+ \brief Lowers slider handle indicator
+ */
+ void lowerSliderHandleIndicator();
+
#ifdef UNIT_TEST
//! Test unit is defined as a friend of production code to access private members
friend class Ut_MSliderView;
diff --git a/src/views/mtexteditview.cpp b/src/views/mtexteditview.cpp
index 1088a275..f27ec56c 100644
--- a/src/views/mtexteditview.cpp
+++ b/src/views/mtexteditview.cpp
@@ -852,15 +852,100 @@ void MTextEditView::updateCursorPosition(QGraphicsSceneMouseEvent *event, const
QSizeF MTextEditView::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_D(const MTextEditView);
-
- QSizeF hint = MWidgetView::sizeHint(which, constraint);
- qreal minHeight = d->documentHeight + style()->paddingTop() + style()->paddingBottom();
-
- if (hint.height() < minHeight || model()->line() == MTextEditModel::SingleLine) {
- hint.setHeight(minHeight);
+ // sizeHint follows below rules:
+ // Qt::MinimumSize:
+ // Returns the size given by style system if it is valid. Otherwise returns a size, which
+ // width is the width of one character, the height is the minimum height of one line.
+ // Qt::PreferredSize:
+ // Returns the size given by style system or constraint if it is valid. If there are both
+ // valid style perferredSize and constraint, takes the smaller one.
+ // Otherwise uses the valid width/height from style system/constraint. Correct the invalid
+ // one to:
+ // SingleLine:
+ // the width is the width of the document, the height is the minimum height of one line.
+ // MultiLine:
+ // Has valid constraint width(from style or constraint):
+ // Resizes the current document to the given constraint's width.
+ // Stores that document height. Resizes current document back to old size.
+ // Uses the stored height (including padding).
+ // No valid constraint width:
+ // the width and height are from the size of the document (including padding).
+ // Qt::MaximumSize:
+ // Returns the size given by style system if it is valid. Otherwise returns QWIDGETSIZE_MAX
+
+ QSizeF hint;
+ const QTextBlock block = d->textDocument->firstBlock();
+ const QTextLayout *layout = block.layout();
+ QTextLine line = layout->lineAt(0);
+ qreal minLineHeight = line.height() + style()->paddingTop() + style()->paddingBottom()
+ + 2 * d->textDocument->documentMargin();
+
+ switch (which) {
+ case Qt::MinimumSize:
+ hint = style()->minimumSize();
+ if (hint.width() < 0) {
+ QFontMetrics fm(style()->font());
+ qreal minWidth = fm.width('x') + style()->paddingLeft() + style()->paddingRight()
+ + 2 * d->textDocument->documentMargin();
+ hint.setWidth(minWidth);
+ }
+ if (hint.height() < 0) {
+ hint.setHeight(minLineHeight);
+ }
+ break;
+ case Qt::PreferredSize:
+ {
+ qreal preferredWidth = hint.width();
+ qreal preferredHeight = hint.height();
+ if (constraint.width() >= 0 && (preferredWidth < 0 || constraint.width() < preferredWidth))
+ preferredWidth = constraint.width();
+ if (constraint.height() >= 0 && (preferredHeight < 0 || constraint.height() < preferredHeight))
+ preferredHeight = constraint.height();
+
+ if (preferredWidth < 0 || preferredHeight < 0 ) {
+ if (model()->line() == MTextEditModel::SingleLine) {
+ if (preferredWidth < 0) {
+ preferredWidth = d->textDocument->size().width() +
+ style()->paddingLeft() + style()->paddingRight();
+ }
+ if (preferredHeight < 0) {
+ preferredHeight = minLineHeight;
+ }
+ } else {
+ // multi line
+ if (preferredWidth > 0) {
+ qreal oldWidth = d->textDocument->textWidth();
+ d->textDocument->setTextWidth(preferredWidth);
+ preferredHeight = d->textDocument->size().height() +
+ style()->paddingTop() + style()->paddingBottom();
+ d->textDocument->setTextWidth(oldWidth);
+ } else {
+ preferredWidth = d->textDocument->size().width() +
+ style()->paddingLeft() + style()->paddingRight();
+ if (preferredHeight < 0)
+ preferredHeight = d->textDocument->size().height() +
+ style()->paddingTop() + style()->paddingBottom();
+ }
+ }
+ }
+ hint = QSizeF(preferredWidth, preferredHeight);
+ }
+ break;
+ case Qt::MaximumSize:
+ hint = style()->maximumSize();
+ if (hint.width() < 0) {
+ hint.setWidth(QWIDGETSIZE_MAX);
+ }
+ if (hint.height() < 0) {
+ hint.setHeight(QWIDGETSIZE_MAX);
+ }
+ break;
+ default:
+ qWarning("MTextEditView::sizeHint() don't know how to handle the value of 'which' ");
+ hint = MWidgetView::sizeHint(which, constraint);
+ break;
}
- // FIXME: apply constraint?
return hint;
}
diff --git a/src/views/mtoolbartabview.cpp b/src/views/mtoolbartabview.cpp
index 628bf8b3..c38b4bd8 100644
--- a/src/views/mtoolbartabview.cpp
+++ b/src/views/mtoolbartabview.cpp
@@ -36,499 +36,30 @@
#include "mtoolbartabview.h"
#include "mtoolbartabview_p.h"
-
-const int MToolbarTabViewPrivate::maxWidgets = 4;
-
-MToolbarTabViewPrivate::MToolbarTabViewPrivate(MToolBar *controller)
- : QObject(),
- q_ptr(0),
- widgetsContainer(0),
- layout(0),
- landscapePolicy(0),
- portraitPolicy(0),
- tabButtons()
-{
- this->controller = controller;
- controller->installEventFilter(this);
-}
-
-
-MToolbarTabViewPrivate::~MToolbarTabViewPrivate()
-{
- clearWidgets(tabButtons);
- controller->removeEventFilter(this);
- QGraphicsLinearLayout *controllerlayout = (QGraphicsLinearLayout *)(controller->layout());
- controllerlayout->removeItem(widgetsContainer);
- delete widgetsContainer;
-}
-
-void MToolbarTabViewPrivate::init()
+MToolbarTabViewPrivate::MToolbarTabViewPrivate(MToolBar *controller) : MToolBarViewPrivate(controller)
{
- widgetsContainer = new MWidget();
- widgetsContainer->setObjectName("toolbarTabContainer");
-
- layout = new MLayout(widgetsContainer);
- layout->setContentsMargins(0, 0, 0, 0);
-
- createPolicy(M::Landscape);
- createPolicy(M::Portrait);
-
- QGraphicsLinearLayout *controllerlayout = (QGraphicsLinearLayout *)(controller->layout());
- controllerlayout->addItem(widgetsContainer);
-
buttonGroup = new MButtonGroup(controller);
buttonGroup->setExclusive(true);
-
- addActions();
-}
-
-void MToolbarTabViewPrivate::createPolicy(M::Orientation orientation)
-{
- MLinearLayoutPolicy *policy = new MLinearLayoutPolicy(layout, Qt::Horizontal);
- policy->setSpacing(0);
- policy->setContentsMargins(0, 0, 0, 0);
- if (orientation == M::Landscape) {
- landscapePolicy = policy;
- layout->setLandscapePolicy(landscapePolicy);
- landscapeData.reset();
- } else {
- portraitPolicy = policy;
- layout->setPortraitPolicy(portraitPolicy);
- portraitData.reset();
- }
-}
-
-void MToolbarTabViewPrivate::add(QAction *action, QAction *before, bool refreshSpacer)
-{
- bool validLocation = (isLocationValid(action, MAction::ToolBarLandscapeLocation) ||
- isLocationValid(action, MAction::ToolBarPortraitLocation));
- if (!action || !validLocation || !action->isCheckable()) {
- return;
- }
-
- bool added = false;
- MWidget *w = createWidget(action);
- // add to policies only if the action is visible
- if (action->isVisible()) {
- bool addToLandscape = refreshPolicyData(action,
- MAction::ToolBarLandscapeLocation,
- landscapeData);
- bool addToPortrait = refreshPolicyData(action,
- MAction::ToolBarPortraitLocation,
- portraitData);
- if (addToLandscape || addToPortrait) {
- if (addToLandscape) {
- landscapePolicy->insertItem(getItemIndex(landscapePolicy, before), w);
- }
- if (addToPortrait) {
- portraitPolicy->insertItem(getItemIndex(portraitPolicy, before), w);
- }
- if (refreshSpacer) {
- refreshSpacers();
- }
- added = true;
- }
- }
-
- if (!added && w) {
- w->setVisible(false);
- }
-}
-
-void MToolbarTabViewPrivate::remove(QAction *action, bool refreshPolicies)
-{
- Q_Q(MToolbarTabView);
- MButton *widget = (MButton*)tabButtons.value(action);
-
- if (widget) {
- removeAction(landscapePolicy, landscapeData, action, widget);
- removeAction(portraitPolicy, portraitData, action, widget);
-
- layout->removeItem(widget);
- tabButtons.remove(action);
- buttonGroup->removeButton(widget);
- delete widget;
- widget = 0;
- action->disconnect(q);
- }
-
- if (refreshPolicies) {
- clearPolicy(landscapePolicy, landscapeData);
- clearPolicy(portraitPolicy, portraitData);
- addActions();
- }
-}
-
-void MToolbarTabViewPrivate::change(QAction *action)
-{
- if (changedLocation(action) || changedVisibility(action)) {
- clearPolicy(landscapePolicy, landscapeData);
- clearPolicy(portraitPolicy, portraitData);
- MButton *widget = (MButton*)tabButtons.value(action);
- buttonGroup->removeButton(widget);
- addActions();
- }
- changedData(action);
-}
-
-void MToolbarTabViewPrivate::_q_groupButtonClicked(bool)
-{
- Q_Q(MToolbarTabView);
- MButton *button = qobject_cast<MButton *>(q->sender());
- if (button) {
- button->setChecked(true);
- }
- updateActionChecked();
-}
-
-void MToolbarTabViewPrivate::_q_groupActionToggled(bool checked)
-{
- Q_Q(MToolbarTabView);
- QAction* action = qobject_cast<QAction *>(q->sender());
- MButton *button = qobject_cast<MButton *>(tabButtons.value(action));
- if (button) {
- button->setChecked(checked);
- }
- updateActionChecked();
-}
-
-bool MToolbarTabViewPrivate::eventFilter(QObject *obj, QEvent *e)
-{
- QActionEvent *actionEvent = dynamic_cast<QActionEvent *>(e);
-
- if (actionEvent) {
- switch (e->type()) {
- case QEvent::ActionRemoved: {
- remove(actionEvent->action(), true);
- break;
- }
- case QEvent::ActionAdded: {
- add(actionEvent->action(), actionEvent->before(), true);
- break;
- }
- case QEvent::ActionChanged: {
- change(actionEvent->action());
- break;
- }
- default: {
- break;
- }
- }
- updateActionChecked();
- }
-
-
- return QObject::eventFilter(obj, e);
-}
-
-void MToolbarTabViewPrivate::addActions()
-{
- QList<QAction *> acts = controller->actions();
- int count = acts.count();
- for (int i = 0; i < count; ++i) {
- add(acts.at(i), 0, false);
- }
- refreshSpacers();
- updateActionChecked();
}
-MWidget *MToolbarTabViewPrivate::createWidget(QAction *action)
-{
- // If widget is not already created then create it
- MWidget *widget = tabButtons.value(action);
- if (!widget) {
- widget = createTabButton(action);
- tabButtons.insert(action, widget);
- }
- widget->setVisible(true);
- widget->setEnabled(action->isEnabled());
- buttonGroup->addButton((MButton *)widget);
-
- return widget;
-}
-
-MButton *MToolbarTabViewPrivate::createTabButton(QAction *action)
-{
- Q_Q(MToolbarTabView);
-
- MButton *button = new MButton();
- MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- button->setIconID(mAction->iconID());
- }
- QObject::connect(button, SIGNAL(clicked(bool)), action, SIGNAL(triggered()));
- QObject::connect(button, SIGNAL(clicked(bool)), q, SLOT(_q_groupButtonClicked(bool)));
- QObject::connect(action, SIGNAL(toggled(bool)), q, SLOT(_q_groupActionToggled(bool)));
-
- button->setViewType("toolbartab");
- button->setCheckable(true);
- button->setChecked(action->isChecked());
-
- return button;
-}
-
-bool MToolbarTabViewPrivate::isLocationValid(QAction *action, MAction::Location loc)
-{
- bool valid = true; //any QAction is valid to place on toolbar
- MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- valid = mAction->location().testFlag(loc);
- }
- return valid;
-}
-
-bool MToolbarTabViewPrivate::isVisible(QAction *action)
-{
- return action &&
- action->isVisible();
-}
-void MToolbarTabViewPrivate::updateActionChecked()
-{
- Q_Q(MToolbarTabView);
-
- controller->removeEventFilter(this);
-
- // remove invisible actions from button group as this can update the checked button
- QHashIterator<QAction *, MWidget *> iterator(tabButtons);
- while (iterator.hasNext()) {
- iterator.next();
- MButton *button = qobject_cast<MButton *>(iterator.value());
- QAction* action = iterator.key();
- if (!action->isVisible()) {
- buttonGroup->removeButton(button);
- button->setChecked(false);
- }
- }
-
- iterator.toFront();
- while (iterator.hasNext()) {
- iterator.next();
- MButton *button = qobject_cast<MButton *>(iterator.value());
- QAction* action = iterator.key();
- bool butChecked = button->isChecked();
- if (button && butChecked != action->isChecked()) {
- QObject::disconnect(action, SIGNAL(toggled(bool)), q, SLOT(_q_groupActionToggled(bool)));
- action->setChecked(butChecked);
- QObject::connect(action, SIGNAL(toggled(bool)), q, SLOT(_q_groupActionToggled(bool)));
- }
- }
-
- controller->installEventFilter(this);
-}
-
-void MToolbarTabViewPrivate::clearWidgets(QHash<QAction *, MWidget *>& widgets)
-{
- qDeleteAll(widgets);
- widgets.clear();
-}
-
-void MToolbarTabViewPrivate::removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action)
-{
- MWidget *widget = tabButtons.value(action);
- removeAction(policy, policyData, action, widget);
-}
-
-void MToolbarTabViewPrivate::removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action,
- MWidget *widget)
-{
- Q_UNUSED(action);
- int index = policy->indexOf(widget);
- if (index >= 0) {
- policyData.placedActions--;
- policy->removeAt(index);
- }
-}
-
-bool MToolbarTabViewPrivate::hasAction(QAction *action)
-{
- return (tabButtons.contains(action));
-}
-
-int MToolbarTabViewPrivate::getItemIndex(MLinearLayoutPolicy *policy, QAction *before)
-{
- int index = policy->count();
- MWidget *w = getWidget(before);
- if (w) {
- int beforeIndex = -1;
- if ((beforeIndex = policy->indexOf(w)) >= 0) {
- index = beforeIndex;
- }
- }
- return index;
-}
-
-MWidget *MToolbarTabViewPrivate::getWidget(QAction *action)
-{
- return tabButtons.value(action);
-}
-
-bool MToolbarTabViewPrivate::changedLocation(QAction *action)
-{
- // If the location of an action gets changed, then remove it from the toolbar
- bool validInLandscape = isLocationValid(action, MAction::ToolBarLandscapeLocation);
- bool validInPortrait = isLocationValid(action, MAction::ToolBarPortraitLocation);
- if (!validInLandscape && !validInPortrait) {
- remove(action, false);
- }
-
- return true;
-}
-
-void MToolbarTabViewPrivate::changedData(QAction *action)
-{
- MWidget *widget = tabButtons.value(action);
- MButton *button = qobject_cast<MButton *>(widget);
- if (button) {
- // Update button data accordingly
- button->setEnabled(action->isEnabled());
- button->setCheckable(action->isCheckable());
- button->setChecked(action->isChecked());
- MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- button->setIconID(mAction->iconID());
- }
- }
-}
-
-bool MToolbarTabViewPrivate::changedVisibility(QAction *action)
-{
- MWidget *widget = getWidget(action);
- if (widget) {
- bool wasVisible = (landscapePolicy->indexOf(widget) >= 0) ||
- (portraitPolicy->indexOf(widget) >= 0);
- //Check if visibility has been changed
- return (!action->isVisible() && wasVisible) ||
- (action->isVisible() && !wasVisible);
- }
- return false;
-}
-
-void MToolbarTabViewPrivate::clearPolicy(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData)
-{
- while (policy->count()) {
- policy->removeAt(0);
- }
- policyData.reset();
-}
-
-void MToolbarTabViewPrivate::refreshSpacers()
-{
- retrieveSpacers(landscapePolicy);
- retrieveSpacers(portraitPolicy);
-
- insertSpacers(landscapePolicy);
- insertSpacers(portraitPolicy);
-}
-
-void MToolbarTabViewPrivate::retrieveSpacers(MLinearLayoutPolicy *policy)
-{
- QGraphicsLayoutItem *item = 0;
- int count = policy->count();
- for (int i = count-1; i >= 0; --i) {
- item = policy->itemAt(i);
- if (isItemSpacer(item)) {
- policy->removeAt(i);
- freeSpacers.append((QGraphicsWidget *)item);
- }
- }
-}
-
-void MToolbarTabViewPrivate::insertSpacers(MLinearLayoutPolicy *policy)
-{
- // Add spacer(s) only if there are some/ actions in the policy
- int count = policy->count();
- if (count <= 0)
- return;
-
- // In landscape, spacer need to be added for right alignment
- if (policy == landscapePolicy) {
- if (count < maxWidgets)
- insertSpacer(policy, 0);
- return;
- }
-
- // In portrait, spacer(s) need to be added if portrait actions
- // are less then max actions OR in case of maximum actions,
- // no spacers in the start and in the end
- int spacersCount = count + 1;
- for (int i = 0; i < spacersCount; ++i) {
- if (count < maxWidgets) {
- insertSpacer(policy, i << 1); //indices are multiples of 2 i.e 0,2,4,6(if max=4)
- } else if ((i >= 0) && (i < (count - 1))) {
- insertSpacer(policy, (i << 1) + 1); //indices are 1,3,5 (if max=4)
- }
- }
-
-}
-
-void MToolbarTabViewPrivate::insertSpacer(MLinearLayoutPolicy *policy,
- int insertIndex)
-{
- QGraphicsWidget *item = 0;
- if (freeSpacers.count() > 0) { //use existing spacer, if any
- item = freeSpacers.at(0);
- freeSpacers.removeAt(0);
- } else {
- item = createSpacer();
- }
- policy->insertItem(insertIndex, item);
-}
-
-QGraphicsWidget *MToolbarTabViewPrivate::createSpacer()
-{
- QGraphicsWidget *spacer = new QGraphicsWidget(widgetsContainer);
- spacer->setMinimumSize(0, 0);
- spacer->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
- return spacer;
-}
-
-bool MToolbarTabViewPrivate::isItemSpacer(QGraphicsLayoutItem *item)
-{
- // Since spacers are QGraphicsWidget object and if casting of widget
- // to MWidget fails, then its a policy specific spacer.
- QGraphicsWidget *widget = (QGraphicsWidget *)item;
- MWidget *mWidget = qobject_cast<MWidget *>(widget);
- return (!mWidget && (widget->parentItem() == widgetsContainer));
-}
-
-bool MToolbarTabViewPrivate::refreshPolicyData(QAction *action, MAction::Location location, ActionPlacementData &policyData)
+MToolbarTabViewPrivate::~MToolbarTabViewPrivate()
{
- bool add = false;
- if ((policyData.placedActions < maxWidgets) && isLocationValid(action, location)) {
- policyData.placedActions++;
- add = true;
- }
- return add;
+ //buttonGroup deleted by MToolBarView
}
MToolbarTabView::MToolbarTabView(MToolBar *controller) :
- MWidgetView(controller),
- d_ptr(new MToolbarTabViewPrivate(controller))
+ MToolBarView(*(new MToolbarTabViewPrivate(controller)), controller)
{
- Q_D(MToolbarTabView);
- d->q_ptr = this;
- d->init();
}
MToolbarTabView::MToolbarTabView(MToolbarTabViewPrivate &dd, MToolBar *controller) :
- MWidgetView(controller),
- d_ptr(&dd)
+ MToolBarView(dd, controller)
{
- Q_D(MToolbarTabView);
- d->q_ptr = this;
- d->controller = controller;
- d->init();
}
MToolbarTabView::~MToolbarTabView()
{
- delete d_ptr;
}
// bind view and controller together
diff --git a/src/views/mtoolbartabview.h b/src/views/mtoolbartabview.h
index 2534bb8a..3e3e4608 100644
--- a/src/views/mtoolbartabview.h
+++ b/src/views/mtoolbartabview.h
@@ -20,7 +20,7 @@
#ifndef MTOOLBARTABVIEW_H
#define MTOOLBARTABVIEW_H
-#include "mwidgetview.h"
+#include "mtoolbarview.h"
#include <mwidgetmodel.h>
#include <mtoolbartabstyle.h>
#include <mnamespace.h>
@@ -52,10 +52,11 @@ class MToolbarTabViewPrivate;
\sa MToolBar MToolbarTabStyle
*/
-class M_EXPORT MToolbarTabView : public MWidgetView
+class M_EXPORT MToolbarTabView : public MToolBarView
{
Q_OBJECT
M_VIEW(MWidgetModel, MToolbarTabStyle)
+ Q_DECLARE_PRIVATE(MToolbarTabView)
public:
@@ -77,14 +78,10 @@ protected:
\param controller The controller associated with the view.
*/
MToolbarTabView(MToolbarTabViewPrivate &dd, MToolBar *controller);
- MToolbarTabViewPrivate *const d_ptr;
private:
Q_DISABLE_COPY(MToolbarTabView)
- Q_DECLARE_PRIVATE(MToolbarTabView)
- Q_PRIVATE_SLOT(d_func(), void _q_groupButtonClicked(bool))
- Q_PRIVATE_SLOT(d_func(), void _q_groupActionToggled(bool))
#ifdef UNIT_TEST
friend class Ut_MToolbarTabView;
#endif
diff --git a/src/views/mtoolbartabview_p.h b/src/views/mtoolbartabview_p.h
index e4c35fdf..c6f8dc64 100644
--- a/src/views/mtoolbartabview_p.h
+++ b/src/views/mtoolbartabview_p.h
@@ -20,104 +20,19 @@
#ifndef MTOOLBARTABVIEW_P_H
#define MTOOLBARTABVIEW_P_H
-#include <QObject>
-#include <QHash>
+#include "mtoolbarview_p.h"
+
-#include "maction.h"
-#include "mnamespace.h"
class MToolBar;
-class MWidget;
-class MLinearLayoutPolicy;
-class QEvent;
-class MToolbarTabView;
-class QAction;
-class MButton;
-class MWidgetAction;
-class MLayout;
-class QGraphicsLayoutItem;
-class QGraphicsWidget;
-class MButtonGroup;
-class MToolbarTabViewPrivate : public QObject
+class MToolbarTabViewPrivate : public MToolBarViewPrivate
{
Q_DECLARE_PUBLIC(MToolbarTabView)
-protected:
- MToolbarTabView *q_ptr;
- MToolBar *controller;
-
public:
MToolbarTabViewPrivate(MToolBar *controller);
virtual ~MToolbarTabViewPrivate();
-
- virtual void init();
- virtual void createPolicy(M::Orientation o);
-
- virtual void add(QAction *action, QAction *before, bool refreshSpacer);
- virtual void remove(QAction *action, bool refreshPolicies);
- virtual void change(QAction *action);
-
- void _q_groupButtonClicked(bool);
- void _q_groupActionToggled(bool);
-
-protected:
- virtual bool eventFilter(QObject *obj, QEvent *event);
- virtual void addActions();
- MWidget *createWidget(QAction *action);
- MButton *createTabButton(QAction *action);
- bool isLocationValid(QAction *action, MAction::Location loc);
- bool isVisible(QAction *action);
- void updateActionChecked();
- void clearWidgets(QHash<QAction *, MWidget *>& widgets);
- bool hasAction(QAction *action);
- int getItemIndex(MLinearLayoutPolicy *policy, QAction *before);
- MWidget *getWidget(QAction *action);
- bool changedLocation(QAction *action);
- void changedData(QAction *action);
- bool changedVisibility(QAction *action);
- void refreshSpacers();
-
-protected:
- MWidget * widgetsContainer;
- MLayout *layout;
- MLinearLayoutPolicy *landscapePolicy;
- MLinearLayoutPolicy *portraitPolicy;
- QHash<QAction *, MWidget *> tabButtons;
- QList<QGraphicsWidget *> freeSpacers;
- MButtonGroup * buttonGroup;
-
- static const int maxWidgets;
-
-private:
- class ActionPlacementData
- {
- public:
- void reset() {
- placedActions = 0;
- }
- int placedActions;
- };
-
- ActionPlacementData landscapeData;
- ActionPlacementData portraitData;
-
- void removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action);
- void removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action,
- MWidget *widget);
- void clearPolicy(MLinearLayoutPolicy *policy, ActionPlacementData &policyData);
- void retrieveSpacers(MLinearLayoutPolicy *policy);
- void insertSpacers(MLinearLayoutPolicy *policy);
- void insertSpacer(MLinearLayoutPolicy *policy, int insertIndex);
- QGraphicsWidget *createSpacer();
- bool isItemSpacer(QGraphicsLayoutItem *item);
- bool refreshPolicyData(QAction *action,
- MAction::Location location,
- ActionPlacementData &policyData);
};
#endif
diff --git a/src/views/mtoolbarview.cpp b/src/views/mtoolbarview.cpp
index e56c4dfa..56f5141e 100644
--- a/src/views/mtoolbarview.cpp
+++ b/src/views/mtoolbarview.cpp
@@ -23,11 +23,9 @@
#include "mtheme.h"
#include "mbutton.h"
-#include "mviewcreator.h"
+#include "mbuttongroup.h"
#include "mwidgetaction.h"
#include "private/mwidgetview_p.h"
-#include "mapplication.h"
-#include "mapplicationwindow.h"
#include "mlayout.h"
#include "mlinearlayoutpolicy.h"
@@ -37,15 +35,70 @@
const int MToolBarViewPrivate::maxWidgets = 4;
+/* Make a layout policy for aligning widgets nicely by
+ * adding spacers.
+ * This is a very crude policy, and doesn't support most
+ * of the functions of MLinearLayoutPolicy */
+class ToolBarLayoutPolicy : public MLinearLayoutPolicy
+{
+public:
+ explicit ToolBarLayoutPolicy(MLayout *layout) :
+ MLinearLayoutPolicy(layout, Qt::Horizontal) {
+ insertSpacer(0);
+ }
+ ~ToolBarLayoutPolicy() {
+ for(int i = count()-1; i >= 0; i--)
+ removeAt(i);
+ QGraphicsLayoutItem *item = MLinearLayoutPolicy::itemAt(0);
+ MLinearLayoutPolicy::removeAt(0);
+ delete item;
+ }
+ virtual void insertItem(int index, QGraphicsLayoutItem *item)
+ {
+ Q_ASSERT(item);
+ Q_ASSERT(MLinearLayoutPolicy::count() % 2);
+ Q_ASSERT(MLinearLayoutPolicy::count() > index*2);
+
+ //Add an item and a spacer after the item
+ MLinearLayoutPolicy::insertItem(1 + index*2, item);
+ insertSpacer(2+index*2);
+ Q_ASSERT(MLinearLayoutPolicy::count() % 2);
+ }
+ virtual void removeAt(int index)
+ {
+ Q_ASSERT(MLinearLayoutPolicy::count() % 2);
+ Q_ASSERT(MLinearLayoutPolicy::count() > 2+index*2);
+
+ //Remove the item first
+ QGraphicsLayoutItem *item = MLinearLayoutPolicy::itemAt(2+index*2);
+ MLinearLayoutPolicy::removeAt(2+index*2);
+ MLinearLayoutPolicy::removeAt(1+index*2);
+ layout()->removeItem(item);
+ }
+ virtual int count() const
+ {
+ return (MLinearLayoutPolicy::count()-1)/2;
+ }
+ virtual QGraphicsLayoutItem *itemAt(int index) const
+ {
+ return MLinearLayoutPolicy::itemAt(1+index*2);
+ }
+
+private:
+ void insertSpacer(int position) {
+ QGraphicsWidget *item = new QGraphicsWidget;
+ item->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
+ MLinearLayoutPolicy::insertItem(position, item);
+ }
+};
+
MToolBarViewPrivate::MToolBarViewPrivate(MToolBar *controller)
: QObject(),
q_ptr(0),
- widgetsContainer(0),
layout(0),
landscapePolicy(0),
portraitPolicy(0),
- leasedWidgets(),
- buttons()
+ buttonGroup(0)
{
this->controller = controller;
controller->installEventFilter(this);
@@ -54,227 +107,263 @@ MToolBarViewPrivate::MToolBarViewPrivate(MToolBar *controller)
MToolBarViewPrivate::~MToolBarViewPrivate()
{
- clearWidgets(leasedWidgets);
- clearWidgets(buttons);
removeEventFilter(controller);
- QGraphicsLinearLayout *controllerlayout = (QGraphicsLinearLayout *)(controller->layout());
- controllerlayout->removeItem(widgetsContainer);
- delete widgetsContainer;
+ if(buttonGroup) {
+ foreach(MButton *button, buttonGroup->buttons())
+ buttonGroup->removeButton(button);
+ delete buttonGroup;
+ buttonGroup = NULL;
+ }
+ QHashIterator<QAction *, MWidget *> iterator(leasedWidgets);
+ while (iterator.hasNext()) {
+ iterator.next();
+
+ if (!releaseWidget(iterator.key(), iterator.value()))
+ delete iterator.value(); //Is this the right thing to do ?
+ }
+ qDeleteAll(buttons);
+ delete layout;
+ layout = NULL;
}
void MToolBarViewPrivate::init()
{
- widgetsContainer = new MWidget();
- widgetsContainer->setObjectName("toolbarContainer");
-
- layout = new MLayout(widgetsContainer);
+ layout = new MLayout;
layout->setAnimation(NULL);
layout->setContentsMargins(0, 0, 0, 0);
- createPolicy(M::Landscape);
- createPolicy(M::Portrait);
+ landscapePolicy = new ToolBarLayoutPolicy(layout);
+ landscapePolicy->setSpacing(0);
+ layout->setLandscapePolicy(landscapePolicy);
- QGraphicsLinearLayout *controllerlayout = (QGraphicsLinearLayout *)(controller->layout());
- controllerlayout->addItem(widgetsContainer);
+ portraitPolicy = new ToolBarLayoutPolicy(layout);
+ portraitPolicy->setSpacing(0);
+ layout->setPortraitPolicy(portraitPolicy);
- addActions();
-}
+ QGraphicsLinearLayout *controllerlayout = (QGraphicsLinearLayout *)(controller->layout());
+ controllerlayout->addItem(layout);
-void MToolBarViewPrivate::createPolicy(M::Orientation orientation)
-{
- MLinearLayoutPolicy *policy = new MLinearLayoutPolicy(layout, Qt::Horizontal);
- policy->setSpacing(0);
- policy->setContentsMargins(0, 0, 0, 0);
- if (orientation == M::Landscape) {
- landscapePolicy = policy;
- layout->setLandscapePolicy(landscapePolicy);
- landscapeData.reset();
- } else {
- portraitPolicy = policy;
- layout->setPortraitPolicy(portraitPolicy);
- portraitData.reset();
+ //Add any existing actions now
+ foreach(QAction *action, controller->actions()) {
+ add(action);
}
}
-void MToolBarViewPrivate::add(QAction *action, QAction *before, bool refreshSpacer)
-{
- bool validLocation = (isLocationValid(action, MAction::ToolBarLandscapeLocation) ||
- isLocationValid(action, MAction::ToolBarPortraitLocation));
- if (!action || !validLocation ||
- (hasWidget(action) && !isWidgetUsable(action))) {
- return;
- }
-
- bool added = false;
- MWidget *w = createWidget(action);
- // add to policies only if the action is visible
- if (action->isVisible()) {
- bool addToLandscape = refreshPolicyData(action,
- MAction::ToolBarLandscapeLocation,
- landscapeData);
- bool addToPortrait = refreshPolicyData(action,
- MAction::ToolBarPortraitLocation,
- portraitData);
- if (addToLandscape || addToPortrait) {
- if (addToLandscape) {
- landscapePolicy->insertItem(getItemIndex(landscapePolicy, before), w);
- }
- if (addToPortrait) {
- portraitPolicy->insertItem(getItemIndex(portraitPolicy, before), w);
- }
- if (refreshSpacer) {
- refreshSpacers();
- }
- added = true;
+int MToolBarViewPrivate::policyIndexForAddingAction(QAction *action, MLinearLayoutPolicy *policy) const {
+ Q_Q(const MToolBarView);
+ //We need to add the action's given widget to the policy
+ //This is a bit complicated because we ideally want to add it in the right place,
+ //preserving the same order as in the controller->actions()
+ QList< QAction *> actions = controller->actions();
+ int parentIndex = actions.indexOf(action)+1;
+ while(parentIndex < actions.size()) {
+ MWidget *w = q->getWidget(actions.at(parentIndex));
+ if(!w) {
+ int policyIndex = policy->indexOf(w);
+ if(policyIndex >= 0)
+ return policyIndex;
}
+ parentIndex++;
}
-
- if (!added && w) {
- w->setVisible(false);
- }
+ return policy->count(); //Add it to the end
}
-void MToolBarViewPrivate::remove(QAction *action, bool refreshPolicies)
+void MToolBarViewPrivate::add(QAction *action)
{
- MWidget *button = buttons.value(action);
+ if (!action || !action->isVisible() || hasUnusableWidget(action))
+ return; //Cancel adding action
+
+ // add to policies only if the action is visible
+ bool addToLandscape = isLocationValid(action, MAction::ToolBarLandscapeLocation) &&
+ reserveSpaceForAction(action, landscapeData);
+ bool addToPortrait = isLocationValid(action, MAction::ToolBarPortraitLocation) &&
+ reserveSpaceForAction(action, portraitData);
+ if (!addToLandscape && !addToPortrait)
+ return; //Cancel adding action
+ MWidget *widget = createWidget(action);
+ Q_ASSERT(widget);
+ if (addToLandscape)
+ landscapePolicy->insertItem( policyIndexForAddingAction(action, landscapePolicy), widget );
+ if (addToPortrait)
+ portraitPolicy->insertItem( policyIndexForAddingAction(action, portraitPolicy), widget );
+ updateWidgetFromAction(widget, action);
+}
+
+void MToolBarViewPrivate::remove(QAction *action)
+{
+ MButton *button = buttons.value(action);
MWidget *leased = leasedWidgets.value(action);
MWidget *widget = (button != 0) ? button : leased;
- if (widget) {
- removeAction(landscapePolicy, landscapeData, action, widget);
- removeAction(portraitPolicy, portraitData, action, widget);
- layout->removeItem(widget);
+ if(!widget)
+ return; //Action already removed
+ bool isTextEditWidget = hasTextEditWidget(action);
+ if(landscapePolicy->indexOf(widget) >= 0) {
+ if(isTextEditWidget) {
+ landscapeData.hasTextEditor = false;
+ //one text-edit widget takes space of two buttons
+ landscapeData.placedActions -= 2;
+ } else
+ landscapeData.placedActions--;
+ }
+ if(portraitPolicy->indexOf(widget) >= 0) {
+ if(isTextEditWidget) {
+ portraitData.hasTextEditor = false;
+ //one text-edit widget takes space of two buttons
+ portraitData.placedActions -= 2;
+ } else
+ portraitData.placedActions--;
}
+ layout->removeItem(widget);
+
if (button) {
buttons.remove(action);
+ if(buttonGroup)
+ buttonGroup->removeButton(button);
delete button;
- } else if (leased) {
+ } else {
releaseWidget(action, leased);
leasedWidgets.remove(action);
}
- if (refreshPolicies) {
- clearPolicy(landscapePolicy, landscapeData);
- clearPolicy(portraitPolicy, portraitData);
- addActions();
+
+ //There might be space now any actions not already added. Signal a change action which
+ //will check if an item now has room to be shown
+ foreach(QAction *action, controller->actions()) {
+ change(action);
}
}
void MToolBarViewPrivate::change(QAction *action)
{
- if (changeLocation(action) || changeVisibility(action)) {
- clearPolicy(landscapePolicy, landscapeData);
- clearPolicy(portraitPolicy, portraitData);
- addActions();
+ Q_Q(MToolBarView);
+ if(hasUnusableWidget(action))
+ return;
+ if(!action->isVisible()) {
+ remove(action);
+ return;
+ }
+ bool validInLandscape = isLocationValid(action, MAction::ToolBarLandscapeLocation);
+ bool validInPortrait = isLocationValid(action, MAction::ToolBarPortraitLocation);
+ if (!validInLandscape && !validInPortrait) {
+ remove(action);
+ return;
+ }
+
+ //Check that the widget is in the controller actions
+ QList< QAction *> actions = controller->actions();
+ int indexOfAction = actions.indexOf(action);
+ if(indexOfAction == -1) {
+ remove(action); // I don't think this is possible
+ return;
+ }
+
+ MWidget *widget = q->getWidget(action);
+ if (!widget) {
+ //We need to add the action
+ add(action);
+ return;
+ }
+
+ //We have now an action and a widget for it
+ int landscapeIndex = landscapePolicy->indexOf(widget);
+ int portraitIndex = portraitPolicy->indexOf(widget);
+ if(!validInLandscape && landscapeIndex >= 0) {
+ //We are showing it in landscape view but should not be
+ landscapePolicy->removeAt(landscapeIndex);
+ }
+ if(!validInPortrait && portraitIndex >= 0) {
+ //We are showing it in portrait view but should not be
+ portraitPolicy->removeAt(portraitIndex);
+ }
+ if(validInLandscape && landscapeIndex == -1) {
+ if( reserveSpaceForAction(action, landscapeData) )
+ landscapePolicy->insertItem( policyIndexForAddingAction(action, landscapePolicy), widget );
+ }
+ if(validInPortrait && portraitIndex == -1) {
+ if( reserveSpaceForAction(action, portraitData) )
+ portraitPolicy->insertItem( policyIndexForAddingAction(action, portraitPolicy), widget );
+ }
+
+ updateWidgetFromAction(widget, action);
+}
+
+void MToolBarViewPrivate::updateWidgetFromAction(MWidget *widget, QAction *action) const
+{
+ widget->setEnabled(action->isEnabled());
+ MButton *button = qobject_cast<MButton *>(widget);
+ if (button) {
+ // Update button data accordingly
+ button->setText(action->text());
+ button->setCheckable(action->isCheckable());
+ button->setChecked(action->isChecked());
+ MAction *mAction = qobject_cast<MAction *>(action);
+ if (mAction)
+ button->setIconID(mAction->iconID());
}
- changeData(action);
}
bool MToolBarViewPrivate::eventFilter(QObject *obj, QEvent *e)
{
- QActionEvent *actionEvent = dynamic_cast<QActionEvent *>(e);
-
- if (actionEvent) {
- switch (e->type()) {
- case QEvent::ActionRemoved: {
- remove(actionEvent->action(), true);
+ switch (e->type()) {
+ case QEvent::ActionRemoved:
+ remove(static_cast<QActionEvent *>(e)->action());
break;
- }
- case QEvent::ActionAdded: {
- add(actionEvent->action(), actionEvent->before(), true);
+ case QEvent::ActionAdded:
+ add(static_cast<QActionEvent *>(e)->action());
break;
- }
- case QEvent::ActionChanged: {
- change(actionEvent->action());
+ case QEvent::ActionChanged:
+ change(static_cast<QActionEvent *>(e)->action());
break;
- }
- default: {
+ default:
break;
- }
- }
}
-
return QObject::eventFilter(obj, e);
}
-void MToolBarViewPrivate::addActions()
-{
- QList<QAction *> acts = controller->actions();
- int count = acts.count();
- for (int i = 0; i < count; ++i) {
- add(acts.at(i), 0, false);
- }
- refreshSpacers();
-}
-
MWidget *MToolBarViewPrivate::createWidget(QAction *action)
{
+ Q_Q(MToolBarView);
// If widget is not already created then create it
MWidget *widget = buttons.value(action);
- if (!widget) {
+ if (!widget)
widget = leasedWidgets.value(action);
- }
if (!widget) {
MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
if (widgetAction) {
- widget = requestWidget(widgetAction);
+ widget = widgetAction->requestWidget(NULL);
leasedWidgets.insert(action, widget);
+ widget->show();
} else {
- widget = createButton(action);
- buttons.insert(action, widget);
+ MButton *button = new MButton;
+ if(buttonGroup) {
+ button->setViewType("toolbartab");
+ button->setCheckable(action->isCheckable());
+ //We can't set button->checked until we've added it to the scene
+ buttonGroup->addButton(button);
+ connect(button, SIGNAL(toggled(bool)), q, SLOT(_q_groupButtonClicked(bool)));
+ connect(action, SIGNAL(toggled(bool)), q, SLOT(_q_groupActionToggled(bool)));
+ } else {
+ button->setViewType("toolbar");
+ }
+ connect(button, SIGNAL(clicked(bool)), action, SIGNAL(triggered()));
+
+ buttons.insert(action, button);
+ widget = button;
}
}
- widget->setVisible(true);
- widget->setEnabled(action->isEnabled());
+ Q_ASSERT(widget);
return widget;
}
-
-MButton *MToolBarViewPrivate::createButton(QAction *action)
+bool MToolBarViewPrivate::isLocationValid(QAction *action, MAction::Location loc) const
{
- MButton *button = new MButton(action->text());
MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- button->setIconID(mAction->iconID());
- }
- connect(button, SIGNAL(clicked(bool)), action, SIGNAL(triggered()));
- button->setViewType("toolbar");
- return button;
-}
-
-bool MToolBarViewPrivate::isLocationValid(QAction *action, MAction::Location loc)
-{
- bool valid = true; //any QAction is valid to place on toolbar
- MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- valid = mAction->location().testFlag(loc);
- }
- return valid;
-}
-
-bool MToolBarViewPrivate::isVisible(QAction *action)
-{
- return action &&
- action->isVisible();
-}
-
-void MToolBarViewPrivate::clearWidgets(QHash<QAction *, MWidget *>& widgets)
-{
- QHashIterator<QAction *, MWidget *> iterator(widgets);
- while (iterator.hasNext()) {
- iterator.next();
- deleteWidget(iterator.key(), iterator.value());
- }
- widgets.clear();
+ if(!mAction)
+ return true; //A normal QAction is valid to place on toolbar
+ return mAction->location().testFlag(loc);
}
-void MToolBarViewPrivate::deleteWidget(QAction *action, MWidget *widget)
-{
- if (!releaseWidget(action, widget)) {
- delete widget;
- }
-}
-
-bool MToolBarViewPrivate::releaseWidget(QAction *action, MWidget *widget)
+bool MToolBarViewPrivate::releaseWidget(QAction *action, MWidget *widget) const
{
MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
if (widgetAction) {
@@ -283,34 +372,7 @@ bool MToolBarViewPrivate::releaseWidget(QAction *action, MWidget *widget)
return (widgetAction != 0);
}
-MWidget *MToolBarViewPrivate::requestWidget(MAction *action)
-{
- MWidget *widget = 0;
- MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
- if (widgetAction) {
- widget = widgetAction->requestWidget(widgetsContainer);
- }
- return widget;
-}
-
-bool MToolBarViewPrivate::isWidgetInUseByView(MWidgetAction *widgetAction)
-{
- return (buttons.contains(widgetAction) || leasedWidgets.contains(widgetAction));
-}
-
-bool MToolBarViewPrivate::isWidgetUsable(QAction *action)
-{
- MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
- return(widgetAction && isWidgetUsable(widgetAction));
-}
-
-bool MToolBarViewPrivate::hasWidget(QAction *action)
-{
- MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
- return(widgetAction && widgetAction->widget());
-}
-
-bool MToolBarViewPrivate::hasTextEditWidget(QAction *action)
+bool MToolBarViewPrivate::hasTextEditWidget(QAction *action) const
{
MTextEdit *textEditWidget = 0;
MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
@@ -320,232 +382,64 @@ bool MToolBarViewPrivate::hasTextEditWidget(QAction *action)
return (textEditWidget != 0);
}
-void MToolBarViewPrivate::removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action)
+bool MToolBarViewPrivate::hasUnusableWidget(QAction *action) const
{
- MWidget *button = buttons.value(action);
- MWidget *leased = leasedWidgets.value(action);
- MWidget *widget = (button != 0) ? button : leased;
-
- removeAction(policy, policyData, action, widget);
-}
-
-void MToolBarViewPrivate::removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action,
- MWidget *widget)
-{
- bool hasTextEdit = hasTextEditWidget(action);
- int index = policy->indexOf(widget);
- if (index >= 0) {
- policyData.placedActions--;
- if (hasTextEdit) {
- policyData.hasTextEditor = false;
- policyData.placedActions--;
- }
- policy->removeAt(index);
- }
-}
-
-bool MToolBarViewPrivate::isWidgetUsable(MWidgetAction *widgetAction)
-{
- return (!widgetAction->isWidgetInUse() || isWidgetInUseByView(widgetAction));
-}
-
-bool MToolBarViewPrivate::hasAction(QAction *action)
-{
- return (buttons.contains(action) || leasedWidgets.contains(action));
-}
-
-int MToolBarViewPrivate::getItemIndex(MLinearLayoutPolicy *policy, QAction *before)
-{
- int index = policy->count();
- MWidget *w = getWidget(before);
- if (w) {
- int beforeIndex = -1;
- if ((beforeIndex = policy->indexOf(w)) >= 0) {
- index = beforeIndex;
- }
- }
- return index;
+ if( buttons.contains(action) || leasedWidgets.contains(action) )
+ return false; //If we are already using it, it must be usable
+ MWidgetAction *widgetAction = qobject_cast<MWidgetAction *>(action);
+ if(!widgetAction || !widgetAction->widget())
+ return false; //We can create a button for it
+ return widgetAction->isWidgetInUse();
}
-MWidget *MToolBarViewPrivate::getWidget(QAction *action)
+MWidget *MToolBarView::getWidget(QAction *action) const
{
- MWidget *button = buttons.value(action);
- MWidget *leased = leasedWidgets.value(action);
- return (button != 0) ? button : leased;
+ Q_D(const MToolBarView);
+ MWidget *button = d->buttons.value(action);
+ if( button )
+ return button;
+ return d->leasedWidgets.value(action);
}
-bool MToolBarViewPrivate::changeLocation(QAction *action)
+bool MToolBarViewPrivate::reserveSpaceForAction(QAction *action, ActionPlacementData &policyData)
{
- // If the location of an action gets changed, then remove it from the toolbar
- bool validInLandscape = isLocationValid(action, MAction::ToolBarLandscapeLocation);
- bool validInPortrait = isLocationValid(action, MAction::ToolBarPortraitLocation);
- if (!validInLandscape && !validInPortrait) {
- remove(action, false);
+ if(hasTextEditWidget(action)) {
+ if (policyData.hasTextEditor || policyData.placedActions > maxWidgets)
+ return false; //We can't add two text edits, and there must be two spaces available for a text edit
+ policyData.hasTextEditor = true;
+ //one text-edit widget takes space of two buttons
+ policyData.placedActions += 2;
+ } else {
+ if (policyData.placedActions >= maxWidgets)
+ return false; //no more room
+ policyData.placedActions += 1;
}
-
return true;
}
-void MToolBarViewPrivate::changeData(QAction *action)
-{
- MWidget *widget = buttons.value(action);
- MButton *button = qobject_cast<MButton *>(widget);
- if (button) {
- // Update button data accordingly
- button->setText(action->text());
- button->setEnabled(action->isEnabled());
- button->setCheckable(action->isCheckable());
- button->setChecked(action->isChecked());
- MAction *mAction = qobject_cast<MAction *>(action);
- if (mAction) {
- button->setIconID(mAction->iconID());
- }
- }
-}
-
-bool MToolBarViewPrivate::changeVisibility(QAction *action)
-{
- MWidget *widget = getWidget(action);
- if (widget) {
- bool wasVisible = (landscapePolicy->indexOf(widget) >= 0) ||
- (portraitPolicy->indexOf(widget) >= 0);
- //Check if visibility has been changed
- return (!action->isVisible() && wasVisible) ||
- (action->isVisible() && !wasVisible);
- }
- return false;
-}
-
-void MToolBarViewPrivate::clearPolicy(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData)
+void MToolBarViewPrivate::_q_groupButtonClicked(bool checked)
{
- while (policy->count()) {
- policy->removeAt(0);
- }
- policyData.reset();
-}
+ Q_Q(MToolBarView);
+ MButton *button = qobject_cast<MButton *>(q->sender());
+ if(!button)
+ return; //impossible?
-void MToolBarViewPrivate::refreshSpacers()
-{
- retrieveSpacers(landscapePolicy, landscapeData);
- retrieveSpacers(portraitPolicy, portraitData);
+ button->setChecked(checked);
- insertSpacers(landscapePolicy, landscapeData);
- insertSpacers(portraitPolicy, portraitData);
+ QAction *action = buttons.key(button);
+ if(action->isChecked() != checked)
+ action->setChecked(checked);
}
-void MToolBarViewPrivate::retrieveSpacers(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData)
+void MToolBarViewPrivate::_q_groupActionToggled(bool checked)
{
- policyData.mode = Managed;
- QGraphicsLayoutItem *item = 0;
- int count = policy->count();
- for (int i = count - 1; i >= 0; --i) {
- item = policy->itemAt(i);
- if (isItemSpacer(item)) {
- policy->removeAt(i);
- freeSpacers.append((QGraphicsWidget *)item);
- } else {
- MWidget *widget = (MWidget *)item;
- QAction *action = leasedWidgets.key(widget);
- if (action && !hasTextEditWidget(action)) {
- policyData.mode = Unmanaged;
- }
- }
- }
-}
-
-void MToolBarViewPrivate::insertSpacers(MLinearLayoutPolicy *policy,
- const ActionPlacementData &policyData)
-{
- // Add spacer(s) only if there is no text-editor action placed or
- // the widgets are not placed in unmanaged way or there are some
- // actions in the policy
- int count = policy->count();
- if (policyData.mode == Unmanaged || policyData.hasTextEditor || count <= 0)
- return;
-
- // In landscape, spacer need to be added for right alignment
- if (policy == landscapePolicy) {
- if (count < maxWidgets)
- insertSpacer(policy, 0);
- return;
- }
-
- // In portrait, spacer(s) need to be added if portrait actions
- // are less then max actions OR in case of maximum actions,
- // no spacers in the start and in the end
- int spacersCount = count + 1;
- for (int i = 0; i < spacersCount; ++i) {
- if (count < maxWidgets) {
- insertSpacer(policy, i << 1); //indices are multiples of 2 i.e 0,2,4,6(if max=4)
- } else if ((i >= 0) && (i < (count - 1))) {
- insertSpacer(policy, (i << 1) + 1); //indices are 1,3,5 (if max=4)
- }
- }
-
-}
-
-void MToolBarViewPrivate::insertSpacer(MLinearLayoutPolicy *policy,
- int insertIndex)
-{
- QGraphicsWidget *item = 0;
- if (freeSpacers.count() > 0) { //use existing spacer, if any
- item = freeSpacers.at(0);
- freeSpacers.removeAt(0);
- } else {
- item = createSpacer();
- }
- policy->insertItem(insertIndex, item);
-}
-
-QGraphicsWidget *MToolBarViewPrivate::createSpacer()
-{
- QGraphicsWidget *spacer = new QGraphicsWidget(widgetsContainer);
- spacer->setMinimumSize(0, 0);
- spacer->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
- return spacer;
-}
-
-bool MToolBarViewPrivate::isItemSpacer(QGraphicsLayoutItem *item)
-{
- // Since spacers are QGraphicsWidget object and if casting of widget
- // to MWidget fails, then its a policy specific spacer.
- QGraphicsWidget *widget = (QGraphicsWidget *)item;
- MWidget *mWidget = qobject_cast<MWidget *>(widget);
- return (!mWidget && (widget->parentItem() == widgetsContainer));
-}
-
-bool MToolBarViewPrivate::refreshPolicyData(QAction *action,
- MAction::Location location,
- ActionPlacementData &policyData)
-{
- bool add = false;
- if ((policyData.placedActions < maxWidgets) && isLocationValid(action, location)) {
- bool hasTextEdit = hasTextEditWidget(action);
- // The action is not added if it has a text-edit widget and the toolbar location
- // has already a text-edit widget placed or there is no space for new text-edit widget
- // as text-edit widget takes space of two buttons
- if (!hasTextEdit || (!policyData.hasTextEditor && (policyData.placedActions < maxWidgets - 1))) {
- add = true;
- if (hasTextEdit) {
- //one text-edit widget takes space of two buttons
- policyData.placedActions++;
- policyData.hasTextEditor = true;
- }
- // If there is a widget that is usable and is not text-entry widget, then the widgets
- // are placed as it is i.e. in unmanaged way.
- if (hasWidget(action) && !hasTextEdit) {
- policyData.mode = Unmanaged;
- }
- }
+ Q_Q(MToolBarView);
+ QAction* action = qobject_cast<QAction *>(q->sender());
+ Q_ASSERT(action);
+ MButton *button = buttons.value(action);
+ if (button) {
+ button->setChecked(checked);
}
- policyData.placedActions += add;
- return add;
}
MToolBarView::MToolBarView(MToolBar *controller) :
diff --git a/src/views/mtoolbarview.h b/src/views/mtoolbarview.h
index 58d01c1a..8cf6f409 100644
--- a/src/views/mtoolbarview.h
+++ b/src/views/mtoolbarview.h
@@ -72,6 +72,7 @@ public:
*/
virtual ~MToolBarView();
+ MWidget *getWidget(QAction *action) const;
protected:
/*!
\brief protected constructor
@@ -85,6 +86,9 @@ private:
Q_DISABLE_COPY(MToolBarView)
Q_DECLARE_PRIVATE(MToolBarView)
+ Q_PRIVATE_SLOT(d_func(), void _q_groupButtonClicked(bool))
+ Q_PRIVATE_SLOT(d_func(), void _q_groupActionToggled(bool))
+
#ifdef UNIT_TEST
friend class Ut_MToolBarView;
#endif
diff --git a/src/views/mtoolbarview_p.h b/src/views/mtoolbarview_p.h
index 376f7cee..88705336 100644
--- a/src/views/mtoolbarview_p.h
+++ b/src/views/mtoolbarview_p.h
@@ -46,37 +46,26 @@ public:
MToolBarViewPrivate(MToolBar *controller);
virtual ~MToolBarViewPrivate();
- virtual void init();
- virtual void createPolicy(M::Orientation o);
+ void init();
- virtual void add(QAction *action, QAction *before, bool refreshSpacer);
- virtual void remove(QAction *action, bool refreshPolicies);
- virtual void change(QAction *action);
+ void add(QAction *action);
+ void remove(QAction *action);
+ void change(QAction *action);
protected:
- virtual bool eventFilter(QObject *obj, QEvent *event);
- virtual void addActions();
+ bool eventFilter(QObject *obj, QEvent *event);
MWidget *createWidget(QAction *action);
- MButton *createButton(QAction *action);
- bool isLocationValid(QAction *action, MAction::Location loc);
- bool isVisible(QAction *action);
- void clearWidgets(QHash<QAction *, MWidget *>& widgets);
- void deleteWidget(QAction *action, MWidget *widget);
- bool releaseWidget(QAction *action, MWidget *widget);
- MWidget *requestWidget(MAction *action);
- bool isWidgetInUseByView(MWidgetAction *widgetAction);
- bool hasWidget(QAction *action);
- bool hasTextEditWidget(QAction *action);
- bool isWidgetUsable(QAction *action);
- bool isWidgetUsable(MWidgetAction *widgetAction);
- bool hasAction(QAction *action);
- int getItemIndex(MLinearLayoutPolicy *policy, QAction *before);
- MWidget *getWidget(QAction *action);
- bool changeLocation(QAction *action);
- void changeData(QAction *action);
- bool changeVisibility(QAction *action);
- void refreshSpacers();
+ int policyIndexForAddingAction(QAction *action, MLinearLayoutPolicy *policy) const;
+ bool isLocationValid(QAction *action, MAction::Location loc) const;
+ bool releaseWidget(QAction *action, MWidget *widget) const;
+ bool hasTextEditWidget(QAction *action) const;
+ bool hasUnusableWidget(QAction *action) const;
+ void updateWidgetFromAction(MWidget *widget, QAction *action) const;
+ MWidget *getWidget(QAction *action) const;
+
+ void _q_groupButtonClicked(bool);
+ void _q_groupActionToggled(bool);
protected:
MToolBarView *q_ptr;
MToolBar *controller;
@@ -85,49 +74,30 @@ protected:
MLinearLayoutPolicy *landscapePolicy;
MLinearLayoutPolicy *portraitPolicy;
QHash<QAction *, MWidget *> leasedWidgets;
- QHash<QAction *, MWidget *> buttons;
- QList<QGraphicsWidget *> freeSpacers;
+ QHash<QAction *, MButton *> buttons;
+ /* If this is non-null, created buttons will be placed in this group */
+ MButtonGroup * buttonGroup;
static const int maxWidgets;
-private:
enum PlacementMode {
Managed = 0,
Unmanaged
};
- class ActionPlacementData
+ struct ActionPlacementData
{
- public:
- void reset() {
- mode = Managed;
+ ActionPlacementData() {
hasTextEditor = false;
placedActions = 0;
}
- PlacementMode mode;
bool hasTextEditor;
int placedActions;
};
ActionPlacementData landscapeData;
ActionPlacementData portraitData;
-
- void removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action);
- void removeAction(MLinearLayoutPolicy *policy,
- ActionPlacementData &policyData,
- QAction *action,
- MWidget *widget);
- void clearPolicy(MLinearLayoutPolicy *policy, ActionPlacementData &policyData);
- void retrieveSpacers(MLinearLayoutPolicy *policy, ActionPlacementData &policyData);
- void insertSpacers(MLinearLayoutPolicy *policy, const ActionPlacementData &policyData);
- void insertSpacer(MLinearLayoutPolicy *policy, int insertIndex);
- QGraphicsWidget *createSpacer();
- bool isItemSpacer(QGraphicsLayoutItem *item);
- bool refreshPolicyData(QAction *action,
- MAction::Location location,
- ActionPlacementData &policyData);
+ bool reserveSpaceForAction(QAction *action, ActionPlacementData &policyData);
};
#endif
diff --git a/src/corelib/animation/scene/mscenefadeanimation_p.h b/src/views/style/mrichtexteditstyle.h
index d6f9d96c..5da00ec4 100644..100755
--- a/src/corelib/animation/scene/mscenefadeanimation_p.h
+++ b/src/views/style/mrichtexteditstyle.h
@@ -17,18 +17,25 @@
**
****************************************************************************/
-#ifndef MSCENEFADEANIMATION_P_H
-#define MSCENEFADEANIMATION_P_H
+#ifndef MRICHTEXTEDITSTYLE_H
+#define MRICHTEXTEDITSTYLE_H
-#include "mscenewindowanimation_p.h"
-class MWidgetAnimation;
+#include <QFont>
+#include <QColor>
+#include <QString>
+#include <mwidgetstyle.h>
+#include "mtexteditstyle.h"
-class MSceneFadeAnimationPrivate : public MSceneWindowAnimationPrivate
+class M_EXPORT MRichTextEditStyle : public MTextEditStyle
{
- Q_DECLARE_PUBLIC(MSceneFadeAnimation)
+ Q_OBJECT
+ M_STYLE(MRichTextEditStyle)
+};
-public:
- MWidgetAnimation *animation;
+class M_EXPORT MRichTextEditStyleContainer : public MTextEditStyleContainer
+{
+ M_STYLE_CONTAINER(MRichTextEditStyle)
};
#endif
+
diff --git a/src/views/style/mscenewindowstyle.h b/src/views/style/mscenewindowstyle.h
index 0e251e8f..f909a48f 100644
--- a/src/views/style/mscenewindowstyle.h
+++ b/src/views/style/mscenewindowstyle.h
@@ -31,6 +31,7 @@ class M_EXPORT MSceneWindowStyle : public MWidgetStyle
M_STYLE_ATTRIBUTE(Qt::Alignment, horizontalAlign, HorizontalAlign)
M_STYLE_ATTRIBUTE(Qt::Alignment, verticalAlign, VerticalAlign)
M_STYLE_ATTRIBUTE(QPointF, offset, Offset)
+ M_STYLE_ATTRIBUTE(int, disappearTimeout, DisappearTimeout)
};
class M_EXPORT MSceneWindowStyleContainer : public MWidgetStyleContainer
diff --git a/src/corelib/style/mwidgetfadeoutanimationstyle.h b/src/views/style/mwarpanimationstyle.h
index 8843a589..7d34e376 100644
--- a/src/corelib/style/mwidgetfadeoutanimationstyle.h
+++ b/src/views/style/mwarpanimationstyle.h
@@ -17,27 +17,31 @@
**
****************************************************************************/
-#ifndef MWIDGETFADEOUTANIMATIONSTYLE_H
-#define MWIDGETFADEOUTANIMATIONSTYLE_H
+#ifndef MWARPANIMATIONSTYLE_H
+#define MWARPANIMATIONSTYLE_H
-#include <mabstractwidgetanimationstyle.h>
+#include <manimationstyle.h>
#include <QEasingCurve>
//! \internal
-class M_EXPORT MWidgetFadeOutAnimationStyle : public MAbstractWidgetAnimationStyle
+class MWarpAnimationStyle : public MAnimationStyle
{
Q_OBJECT
- M_STYLE_INTERNAL(MWidgetFadeOutAnimationStyle)
+ M_STYLE(MWarpAnimationStyle)
- M_STYLE_ATTRIBUTE(qreal, opacity, Opacity)
- M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
+ M_STYLE_ATTRIBUTE(int, warpDuration, WarpDuration)
+ M_STYLE_ATTRIBUTE(int, warpDistance, WarpDistance)
+
+ M_STYLE_ATTRIBUTE(int, warpInDelay, WarpInDelay)
+
+ M_STYLE_ATTRIBUTE(QEasingCurve, warpInCurve, WarpInCurve)
+ M_STYLE_ATTRIBUTE(QEasingCurve, warpOutCurve, WarpOutCurve)
};
-class MWidgetFadeOutAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
+class MWarpAnimationStyleContainer : public MAnimationStyleContainer
{
- M_STYLE_CONTAINER_INTERNAL(MWidgetFadeOutAnimationStyle)
+ M_STYLE_CONTAINER(MWarpAnimationStyle)
};
//! \internal_end
#endif
-
diff --git a/src/views/style/style.pri b/src/views/style/style.pri
index ba8b3176..d6a7e0b4 100644
--- a/src/views/style/style.pri
+++ b/src/views/style/style.pri
@@ -33,6 +33,7 @@ MGEN_STYLE_HEADERS += \
$$STYLE_SRC_DIR/mpopupliststyle.h \
$$STYLE_SRC_DIR/mpositionindicatorstyle.h \
$$STYLE_SRC_DIR/mprogressindicatorstyle.h \
+ $$STYLE_SRC_DIR/mrichtexteditstyle.h \
$$STYLE_SRC_DIR/mscenewindowstyle.h \
$$STYLE_SRC_DIR/mseparatorstyle.h \
$$STYLE_SRC_DIR/msliderstyle.h \
@@ -46,6 +47,7 @@ MGEN_STYLE_HEADERS += \
$$STYLE_SRC_DIR/mcontentitemstyle.h \
$$STYLE_SRC_DIR/mvideowidgetstyle.h \
$$STYLE_SRC_DIR/mlistindexstyle.h \
+ $$STYLE_SRC_DIR/mwarpanimationstyle.h \
PUBLIC_HEADERS += \
$$MGEN_STYLE_HEADERS \
diff --git a/src/views/video/mgstvideo.cpp b/src/views/video/mgstvideo.cpp
index 811dc20d..7b7b3b55 100644
--- a/src/views/video/mgstvideo.cpp
+++ b/src/views/video/mgstvideo.cpp
@@ -14,8 +14,8 @@ MGstVideo::MGstVideo()
gst_elem_source(NULL),
gst_elem_decoder(NULL),
gst_elem_volume(NULL),
- gst_elem_videosink(NULL),
gst_elem_audiosink(NULL),
+ gst_elem_videosink(NULL),
gst_elem_xvimagesink(NULL),
gst_messagebus(NULL),
gst_buffer(NULL),
@@ -30,7 +30,8 @@ MGstVideo::MGstVideo()
m_storedState(MVideo::NotReady),
m_storedPosition(0),
m_winId(0),
- m_colorKey(Qt::black)
+ m_colorKey(Qt::black),
+ m_forceAspectRatio(true)
{
GError* error = NULL;
if(!gst_init_check(NULL, NULL, &error)) {
@@ -62,7 +63,6 @@ bool MGstVideo::open(const QString& filename)
return false;
}
- //construct new video pipeline
return constructPipeline();
}
@@ -195,11 +195,10 @@ qreal MGstVideo::volume() const
QSize MGstVideo::resolution() const
{
- if( gst_elem_videosink )
+ if( m_renderTarget == MSink && gst_elem_videosink )
return QSize(M_GST_VIDEO_SINK(gst_elem_videosink)->w, M_GST_VIDEO_SINK(gst_elem_videosink)->h);
- else if( gst_elem_xvimagesink ) {
+ else if( gst_elem_xvimagesink )
return QSize(GST_VIDEO_SINK_WIDTH(gst_elem_xvimagesink), GST_VIDEO_SINK_HEIGHT(gst_elem_xvimagesink));
- }
else
return QSize(0,0);
}
@@ -225,25 +224,62 @@ void MGstVideo::unlockFrameData()
}
void MGstVideo::setRenderTarget(MGstVideo::RenderTarget targetSink)
-{
- if( targetSink != m_renderTarget ) {
- m_renderTarget = targetSink;
+{
+ //check if the change of the sink on fly is needed
+ if( targetSink != m_renderTarget && isReady() ) {
+ GstElement* videobin = gst_bin_get_by_name(GST_BIN_CAST(gst_elem_pipeline), "video bin");
+ if( videobin ) {
+ //stop playback of video bin to be able to make changes
+ gst_element_set_locked_state(videobin, true);
+ gst_element_set_state(videobin, GST_STATE_READY);
+
+ //remove the currently active sink from video bin
+ GstElement* active = activeSink();
+ gst_object_ref(GST_OBJECT(active));
+ gst_bin_remove(GST_BIN_CAST(videobin), active);
+
+ //get colorspace element
+ GstElement* colorspace = gst_bin_get_by_name(GST_BIN_CAST(videobin), "ffmpegcolorspace");
+ if( colorspace ) {
+
+ //change the sink to the wanted target, if there is no support
+ //for xv rendering force texture rendering
+ if( !gst_elem_xvimagesink )
+ m_renderTarget = MSink;
+ else
+ m_renderTarget = targetSink;
+
+
+ active = activeSink();
+
+ if( active == gst_elem_xvimagesink ) {
+ g_object_set(gst_elem_xvimagesink,
+ "autopaint-colorkey", FALSE,
+ "colorkey", m_colorKey.rgba() & 0x00FFFFFF,
+ "force-aspect-ratio", m_forceAspectRatio,
+ "draw-borders", TRUE,
+ (void*) 0);
+ gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(gst_elem_xvimagesink), m_winId);
+ expose();
+ }
- //a video already been opened, we need to change the target on fly
- if( isReady() ) {
- //if the video is in paused or playing state store the position and state information,
- //when the render target is succesfully changed apply the stored position and state
- if( m_state == MVideo::Paused || m_state == MVideo::Playing ) {
- m_storedState = m_state;
- m_storedPosition = position();
- } else {
- m_storedState = MVideo::NotReady;
- m_storedPosition = 0;
+ //link the new active sink with the colorspace element
+ gst_bin_add(GST_BIN_CAST(videobin), active);
+ gst_element_link_pads(colorspace, "src", active, "sink");
+
+ //sync the state of videobin again with it's parent, sync the clock and
+ //position manually as well because for some reason they do not
+ //get automatically synced during runtime target switch
+ gst_element_set_locked_state(videobin, false);
+ gst_element_set_clock(videobin, gst_element_get_clock(gst_elem_pipeline));
+ gst_element_sync_state_with_parent(videobin);
+ gst_element_seek_simple(videobin, GST_FORMAT_TIME,
+ (GstSeekFlags)(GST_SEEK_FLAG_FLUSH),
+ position() * GST_MSECOND);
}
-
- constructPipeline();
}
- }
+ } else
+ m_renderTarget = targetSink;
}
MGstVideo::RenderTarget MGstVideo::renderTarget()
@@ -253,8 +289,7 @@ MGstVideo::RenderTarget MGstVideo::renderTarget()
void MGstVideo::expose()
{
- if( gst_elem_xvimagesink ) {
- gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(gst_elem_xvimagesink), m_winId);
+ if( gst_elem_xvimagesink && m_renderTarget == XvSink ) {
gst_x_overlay_expose(GST_X_OVERLAY(gst_elem_xvimagesink));
}
}
@@ -279,7 +314,6 @@ void MGstVideo::setColorKey(const QColor& key)
g_object_set(gst_elem_xvimagesink,
"autopaint-colorkey", FALSE,
"colorkey", m_colorKey.rgba() & 0x00FFFFFF,
- //"force-aspect-ratio", FALSE,
(void*) 0);
}
}
@@ -289,6 +323,17 @@ QColor MGstVideo::colorKey()
return m_colorKey;
}
+void MGstVideo::forceAspectRatio(bool forceAspectRatio)
+{
+ m_forceAspectRatio = forceAspectRatio;
+ if( gst_elem_xvimagesink ) {
+ g_object_set(gst_elem_xvimagesink,
+ "force-aspect-ratio", m_forceAspectRatio,
+ (void*) 0);
+ }
+}
+
+
/*
* Gstreamer message callback for catching general
* messages and errors in stream.
@@ -297,8 +342,6 @@ gboolean MGstVideo::bus_cb(GstBus *bus, GstMessage *message, void *data)
{
Q_UNUSED(bus);
- //mDebug("MGstVideo::bus_cb()") << gst_message_type_get_name(GST_MESSAGE_TYPE(message));
-
MGstVideo* gstVideo = (MGstVideo*) data;
// video stream has reached end
@@ -330,11 +373,6 @@ gboolean MGstVideo::bus_cb(GstBus *bus, GstMessage *message, void *data)
GstState oldState, newState, pendingState;
gst_message_parse_state_changed(message, &oldState, &newState, &pendingState);
-
- //GstPipeline* pipeline = GST_PIPELINE(message->src);
- //mDebug("MGstVideo::bus_cb()") << "src =" << pipeline << "gst_elem_pipeline=" << gstVideo->gst_elem_pipeline;
- //mDebug("MGstVideo::bus_cb()") << "oldState =" << oldState << "newState =" << newState << "pendingState =" << pendingState;
-
if( oldState == GST_STATE_READY && newState == GST_STATE_PAUSED ) {
video_ready_cb(data);
}
@@ -355,8 +393,6 @@ void MGstVideo::video_ready_cb(void* user_data)
gstVideo->checkSeekable();
if( gstVideo->m_storedState != MVideo::NotReady ) {
- //mDebug("MGstVideo::video_ready_cb()") << gstVideo->m_storedState << gstVideo->m_storedPosition;
-
//restore the stored state information
gstVideo->seek(gstVideo->m_storedPosition);
gstVideo->setVideoState(gstVideo->m_storedState);
@@ -391,17 +427,15 @@ void MGstVideo::unknownpad_cb(GstElement*/*bin*/,
can be decoded to raw data automatically
*/
void MGstVideo::newpad_cb(GstElement *decodebin,
- GstPad *pad,
- gboolean last,
- MGstVideo *w)
+ GstPad *pad,
+ gboolean last,
+ MGstVideo *w)
{
GstPad *sinkpad;
GstCaps *caps;
GstElement *sink;
GstStructure *type;
GstElement *bin;
- GstPad *pad2;
- GstCaps *caps2;
Q_UNUSED(decodebin);
Q_UNUSED(last);
@@ -411,9 +445,6 @@ void MGstVideo::newpad_cb(GstElement *decodebin,
QString typeString = gst_structure_get_name(type);
- //mDebug("MGstVideo::newpad_cb()") << typeString;
- //mDebug("MGstVideo::newpad_cb()") << gst_caps_to_string(caps);
-
//FIXME
//Find compatible pads more accurately, add more error checking.
if (g_strrstr(gst_structure_get_name(type), "video")) {
@@ -421,25 +452,14 @@ void MGstVideo::newpad_cb(GstElement *decodebin,
if (g_strrstr(gst_structure_get_name(type), "yuv"))
yuv = true;
- sink = w->makeSink(yuv);
- //mDebug("MGstVideo::newpad_cb()") << "YUV=" << yuv;
+ sink = w->makeSinks(yuv);
w->m_format = yuv ? YUV : RGB;
- pad2 = gst_element_get_compatible_pad(sink, pad, NULL);
- if( pad2 ) {
- caps2 = gst_pad_get_caps(pad2);
- //mDebug("MGstVideo::newpad_cb()") << gst_caps_to_string(caps2);
- }
- //if( pad2 )
- // mDebug("MGstVideo::newpad_cb()") << "COMPATIBLE pad!";
- //else
- // mDebug("MGstVideo::newpad_cb()") << "INCOMPATIBLE pad!";
-
//FIXME:
//Add ffmpegcolorspace plugin only when necessary
if ( /*!yuv*//*!pad2*/true) {
bin = gst_bin_new("video bin");
- GstElement *colorspace = gst_element_factory_make("ffmpegcolorspace", NULL);
+ GstElement *colorspace = gst_element_factory_make("ffmpegcolorspace", "ffmpegcolorspace");
gst_bin_add(GST_BIN(bin), colorspace);
gst_bin_add(GST_BIN(bin), sink);
@@ -480,9 +500,8 @@ void MGstVideo::newpad_cb(GstElement *decodebin,
gst_caps_unref(caps);
gst_bin_add(GST_BIN_CAST(w->gst_elem_pipeline), sink);
gst_element_set_state(sink, GST_STATE_PAUSED);
-
+
sinkpad = gst_element_get_compatible_pad(sink, pad, NULL);//gst_element_get_pad(sink, "sink");
-
if (sinkpad) {
gst_pad_link(pad, sinkpad);
gst_object_unref(sinkpad);
@@ -497,11 +516,10 @@ void MGstVideo::newpad_cb(GstElement *decodebin,
void MGstVideo::render_frame_cb(void* pointer, void* user_data)
{
if( user_data ) {
- MGstVideo* gstVideo = (MGstVideo*) user_data;
-
//try to lock the mutex, if the we cannot lock it
//a new frame is currently being rendered so no need
//to create new one
+ MGstVideo* gstVideo = (MGstVideo*) user_data;
if( !gstVideo->lockFrameData() ) {
mWarning("MGstVideo::render_frame_cb()") << "MUTEX LOCK CONFLICT!";
gst_buffer_unref(GST_BUFFER(pointer));
@@ -521,69 +539,47 @@ void MGstVideo::render_frame_cb(void* pointer, void* user_data)
}
}
-GstElement* MGstVideo::makeSink(bool yuv)
+GstElement* MGstVideo::makeSinks(bool yuv)
{
if( gst_elem_videosink || gst_elem_xvimagesink ) {
mWarning("MGstVideo::makeSink()") << "Sink already initialized. Call destroyPipeline() before initializing new sink.";
return NULL;
}
- //HW overlay rendering using xvimagesink
- if( m_renderTarget == MGstVideo::XvSink ) {
- //try to create xvimagesink, if it fails fallback to msink rendering
- gst_elem_xvimagesink = gst_element_factory_make("xvimagesink", "xvsink");
- if( gst_elem_xvimagesink && GST_IS_ELEMENT(gst_elem_xvimagesink) ) {
- //the order of the follwing steps is important
- //otherwise the overlaying does not work
-
- //1. set the needed xvimagesink properties
- g_object_set(gst_elem_xvimagesink,
- "autopaint-colorkey", FALSE,
- "colorkey", m_colorKey.rgba() & 0x00FFFFFF,
- //"force-aspect-ratio", TRUE,
- //"draw-borders", TRUE,
- (void*) 0);
-
- //2. set the overlay to wanted window
- gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(gst_elem_xvimagesink),
- m_winId);
-
- //3. check that the colorkey and autopaint really works, if not fallback to msink rendering
- GValueArray* colorkey = gst_property_probe_get_values_name(GST_PROPERTY_PROBE(gst_elem_xvimagesink), "colorkey");
- GValueArray* autopaint = gst_property_probe_get_values_name(GST_PROPERTY_PROBE(gst_elem_xvimagesink), "autopaint-colorkey");
- if( colorkey && autopaint ) {
- g_value_array_free(colorkey);
- g_value_array_free(autopaint);
- return gst_elem_xvimagesink;
- } else {
- if( colorkey )
- g_value_array_free(colorkey);
- if( autopaint )
- g_value_array_free(autopaint);
-
- if( gst_elem_xvimagesink ) {
- gst_object_unref(GST_OBJECT(gst_elem_xvimagesink));
- gst_elem_xvimagesink = NULL;
- }
-
- mWarning("MGstVideo::makeSink()") << "\"colorkey\" (" << colorkey
- << ") or \"autopaint-colorkey\" (" << autopaint
- <<") properties not found, falling back to texture rendering with msink.";
- }
- }else {
- mWarning("MGstVideo::makeSink()") << "xvimagesink doest not exist, falling back to texture rendering with msink.";
- }
+ //try to create xvimagesink, if it fails fallback to msink rendering
+ gst_elem_xvimagesink = gst_element_factory_make("xvimagesink", "xvsink");
+ if( gst_elem_xvimagesink && GST_IS_ELEMENT(gst_elem_xvimagesink) && m_renderTarget == XvSink ) {
+ g_object_set(gst_elem_xvimagesink,
+ "autopaint-colorkey", FALSE,
+ "colorkey", m_colorKey.rgba() & 0x00FFFFFF,
+ "force-aspect-ratio", m_forceAspectRatio,
+ "draw-borders", TRUE,
+ (void*) 0);
+ gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(gst_elem_xvimagesink), m_winId);
+ }else {
+ mWarning("MGstVideo::makeSink()") << "xvimagesink doest not exist, falling back to texture rendering with msink.";
}
//setup textured video rendering using msink
- m_renderTarget = MGstVideo::MSink;
gst_elem_videosink = yuv ? m_gst_video_sink_yuv_new() : m_gst_video_sink_new();
MGstVideoSink *msink = M_GST_VIDEO_SINK(gst_elem_videosink);
msink->user_data = this;
msink->frame_cb = render_frame_cb;
msink->ready_cb = video_ready_cb;
- return gst_elem_videosink;
+ return activeSink();
+}
+
+GstElement* MGstVideo::activeSink()
+{
+ if( m_renderTarget == XvSink && gst_elem_xvimagesink ) {
+ m_renderTarget = XvSink;
+ return gst_elem_xvimagesink;
+ }
+ else {
+ m_renderTarget = MSink;
+ return gst_elem_videosink;
+ }
}
GstElement* MGstVideo::makeVolume()
@@ -665,6 +661,13 @@ void MGstVideo::destroyPipeline()
if( gst_elem_pipeline ) {
gst_element_set_state(gst_elem_pipeline, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(gst_elem_pipeline));
+
+ if( activeSink() == gst_elem_xvimagesink ) {
+ if( gst_elem_videosink )
+ gst_object_unref(GST_OBJECT(gst_elem_videosink));
+ }
+ else if( gst_elem_xvimagesink )
+ gst_object_unref(GST_OBJECT(gst_elem_xvimagesink));
}
//TODO should some of these be destroyed as well?
diff --git a/src/views/video/mgstvideo.h b/src/views/video/mgstvideo.h
index e01b88cf..0b4c6207 100644
--- a/src/views/video/mgstvideo.h
+++ b/src/views/video/mgstvideo.h
@@ -70,15 +70,19 @@ public:
bool lockFrameData();
void unlockFrameData();
+ //gst and xv specific methods
void setRenderTarget(MGstVideo::RenderTarget targetSink);
MGstVideo::RenderTarget renderTarget();
-
+
void expose();
void setWinId(unsigned long id);
unsigned long winId();
+
void setColorKey(const QColor& key);
QColor colorKey();
+ void forceAspectRatio(bool forceAspectRatio);
+
private:
static gboolean bus_cb(GstBus *bus, GstMessage *message, void *data);
@@ -93,7 +97,9 @@ private:
MGstVideo* w);
static void render_frame_cb(void* pointer, void* user_data);
- GstElement* makeSink(bool yuv);
+ GstElement* makeSinks(bool yuv);
+ GstElement* activeSink();
+
GstElement* makeVolume();
bool constructPipeline();
@@ -106,9 +112,9 @@ private:
GstElement* gst_elem_decoder;
GstElement* gst_elem_volume;
- GstElement* gst_elem_videosink;
GstElement* gst_elem_audiosink;
+ GstElement* gst_elem_videosink;
GstElement* gst_elem_xvimagesink;
GstBus* gst_messagebus;
@@ -131,6 +137,8 @@ private:
unsigned long m_winId;
QColor m_colorKey;
+
+ bool m_forceAspectRatio;
};
//! \internal_end
diff --git a/src/views/video/mvideowidgetview.cpp b/src/views/video/mvideowidgetview.cpp
index 63e5ac1c..db5cbe4a 100644
--- a/src/views/video/mvideowidgetview.cpp
+++ b/src/views/video/mvideowidgetview.cpp
@@ -39,8 +39,14 @@ MVideoWidgetViewPrivate::MVideoWidgetViewPrivate()
scaleOffsets(NULL),
m_needFillBg(false),
m_fullscreen(false),
- m_gstVideo(new MGstVideo())
+ m_gstVideo(new MGstVideo()),
+ yuv1(NULL),
+ yuv3(NULL)
{
+ m_textures[0] = 0;
+ m_textures[1] = 0;
+ m_textures[2] = 0;
+
qRegisterMetaType< QList<const char*> >("QList<const char*>");
#ifdef M_USE_OPENGL
MGLES2Renderer* r = MGLES2Renderer::instance();
@@ -509,8 +515,7 @@ void MVideoWidgetView::drawContents(QPainter* painter, const QStyleOptionGraphic
}
} else {
painter->fillRect(boundingRect(), style()->colorKey());
- //QCoreApplication::flush();
- //d->m_gstVideo->expose();
+ d->m_gstVideo->expose();
}
}
@@ -541,16 +546,14 @@ void MVideoWidgetView::applyStyle()
if( model()->fullscreen() ) {
style().setModeFullscreen();
+ d->m_gstVideo->setColorKey(style()->colorKey());
}
else {
style().setModeDefault();
}
-
- d->m_gstVideo->setColorKey(style()->colorKey());
+
MWidgetView::applyStyle();
- //d->refreshStyleMode();
-
update();
}
@@ -599,6 +602,8 @@ void MVideoWidgetView::updateData(const QList<const char*>& modifications)
d->m_gstVideo->setVolume(model()->volume());
}
else if( member == MVideoWidgetModel::Fullscreen ) {
+ applyStyle();
+
if( model()->fullscreen() ) {
d->m_gstVideo->setWinId(MApplication::activeApplicationWindow()->viewport()->winId());
d->m_gstVideo->setRenderTarget(MGstVideo::XvSink);
@@ -607,10 +612,18 @@ void MVideoWidgetView::updateData(const QList<const char*>& modifications)
d->m_gstVideo->setRenderTarget(MGstVideo::MSink);
}
- applyStyle();
updateGeometry();
update();
}
+ else if( member == MVideoWidgetModel::ScaleMode ) {
+ d->updateVideoGeometry();
+ update();
+ }
+ else if( member == MVideoWidgetModel::AspectRatioMode ) {
+ d->m_gstVideo->forceAspectRatio(model()->aspectRatioMode() == MVideoWidgetModel::AspectRatioOriginal);
+ d->updateVideoGeometry();
+ update();
+ }
}
}
@@ -619,6 +632,9 @@ void MVideoWidgetView::setupModel()
MWidgetView::setupModel();
Q_D(MVideoWidgetView);
+
+ applyStyle();
+
if( model()->fullscreen() ) {
d->m_gstVideo->setWinId(MApplication::activeApplicationWindow()->viewport()->winId());
d->m_gstVideo->setRenderTarget(MGstVideo::XvSink);
@@ -627,10 +643,11 @@ void MVideoWidgetView::setupModel()
d->m_gstVideo->setRenderTarget(MGstVideo::MSink);
}
+ d->m_gstVideo->forceAspectRatio(model()->aspectRatioMode() == MVideoWidgetModel::AspectRatioOriginal);
+
d->m_gstVideo->setLooping(model()->looping());
d->m_gstVideo->open(model()->filename());
- applyStyle();
updateGeometry();
update();
}
diff --git a/src/views/views.pro b/src/views/views.pro
index f791a52d..99c8cc61 100644
--- a/src/views/views.pro
+++ b/src/views/views.pro
@@ -15,6 +15,7 @@ INCLUDEPATH += \
include(views.pri)
include(widgets/widgets.pri)
+include(animations/animations.pri)
include(style/style.pri)
include(video/video.pri)
diff --git a/tests/ft_localedata/ft_localedata.pro b/tests/ft_localedata/ft_localedata.pro
index 19c420f8..45df96ca 100644
--- a/tests/ft_localedata/ft_localedata.pro
+++ b/tests/ft_localedata/ft_localedata.pro
@@ -17,7 +17,7 @@ HEADERS += ft_localedata.h
SOURCES += ft_localedata.cpp
GENRB_FILES = fi_FI.txt
-ICUDATADIR = icudt42l
+ICUDATADIR = $$system(icu-config --icudata)
genrb.name = generating resource bundle files
genrb.input = GENRB_FILES
genrb.output = ${QMAKE_FILE_PATH}/$${ICUDATADIR}/${QMAKE_FILE_BASE}.res
diff --git a/tests/ft_locales/ft_locales-test-input-icu-4.2.1.txt b/tests/ft_locales/ft_locales-test-input-icu-4.2.1.txt
new file mode 100644
index 00000000..a10a3e4c
--- /dev/null
+++ b/tests/ft_locales/ft_locales-test-input-icu-4.2.1.txt
@@ -0,0 +1,7228 @@
+ar Language endonym العربية
+ar Country endonym
+ar Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar Currency value € ١٬٢٣٤٫٥٦
+ar Negative Currency value € ١٬٢٣٤٫٥٦-
+ar Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Name of month 01 (Gregorian Calendar) يناير
+ar Name of month 02 (Gregorian Calendar) فبراير
+ar Name of month 03 (Gregorian Calendar) مارس
+ar Name of month 04 (Gregorian Calendar) أبريل
+ar Name of month 05 (Gregorian Calendar) مايو
+ar Name of month 06 (Gregorian Calendar) يونيو
+ar Name of month 07 (Gregorian Calendar) يوليو
+ar Name of month 08 (Gregorian Calendar) أغسطس
+ar Name of month 09 (Gregorian Calendar) سبتمبر
+ar Name of month 10 (Gregorian Calendar) أكتوبر
+ar Name of month 11 (Gregorian Calendar) نوفمبر
+ar Name of month 12 (Gregorian Calendar) ديسمبر
+ar Name of month 01 (Islamic Calendar) محرم
+ar Name of month 02 (Islamic Calendar) صفر
+ar Name of month 03 (Islamic Calendar) ربيع الأول
+ar Name of month 04 (Islamic Calendar) ربيع الآخر
+ar Name of month 05 (Islamic Calendar) جمادى الأولى
+ar Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar Name of month 07 (Islamic Calendar) رجب
+ar Name of month 08 (Islamic Calendar) شعبان
+ar Name of month 09 (Islamic Calendar) رمضان
+ar Name of month 10 (Islamic Calendar) شوال
+ar Name of month 11 (Islamic Calendar) ذو القعدة
+ar Name of month 12 (Islamic Calendar) ذو الحجة
+ar Name of weekday 01 (Gregorian Calendar) الإثنين
+ar Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar Name of weekday 04 (Gregorian Calendar) الخميس
+ar Name of weekday 05 (Gregorian Calendar) الجمعة
+ar Name of weekday 06 (Gregorian Calendar) السبت
+ar Name of weekday 07 (Gregorian Calendar) الأحد
+ar Name of weekday 01 (Islamic Calendar) الإثنين
+ar Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar Name of weekday 03 (Islamic Calendar) الأربعاء
+ar Name of weekday 04 (Islamic Calendar) الخميس
+ar Name of weekday 05 (Islamic Calendar) الجمعة
+ar Name of weekday 06 (Islamic Calendar) السبت
+ar Name of weekday 07 (Islamic Calendar) الأحد
+ar_AE Language endonym العربية
+ar_AE Country endonym الامارات العربية المتحدة
+ar_AE Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_AE Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_AE Currency value € ١٬٢٣٤٫٥٦
+ar_AE Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_AE Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_AE Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_AE Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_AE Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_AE Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Name of month 01 (Gregorian Calendar) يناير
+ar_AE Name of month 02 (Gregorian Calendar) فبراير
+ar_AE Name of month 03 (Gregorian Calendar) مارس
+ar_AE Name of month 04 (Gregorian Calendar) أبريل
+ar_AE Name of month 05 (Gregorian Calendar) مايو
+ar_AE Name of month 06 (Gregorian Calendar) يونيو
+ar_AE Name of month 07 (Gregorian Calendar) يوليو
+ar_AE Name of month 08 (Gregorian Calendar) أغسطس
+ar_AE Name of month 09 (Gregorian Calendar) سبتمبر
+ar_AE Name of month 10 (Gregorian Calendar) أكتوبر
+ar_AE Name of month 11 (Gregorian Calendar) نوفمبر
+ar_AE Name of month 12 (Gregorian Calendar) ديسمبر
+ar_AE Name of month 01 (Islamic Calendar) محرم
+ar_AE Name of month 02 (Islamic Calendar) صفر
+ar_AE Name of month 03 (Islamic Calendar) ربيع الأول
+ar_AE Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_AE Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_AE Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_AE Name of month 07 (Islamic Calendar) رجب
+ar_AE Name of month 08 (Islamic Calendar) شعبان
+ar_AE Name of month 09 (Islamic Calendar) رمضان
+ar_AE Name of month 10 (Islamic Calendar) شوال
+ar_AE Name of month 11 (Islamic Calendar) ذو القعدة
+ar_AE Name of month 12 (Islamic Calendar) ذو الحجة
+ar_AE Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_AE Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_AE Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_AE Name of weekday 04 (Gregorian Calendar) الخميس
+ar_AE Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_AE Name of weekday 06 (Gregorian Calendar) السبت
+ar_AE Name of weekday 07 (Gregorian Calendar) الأحد
+ar_AE Name of weekday 01 (Islamic Calendar) الإثنين
+ar_AE Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_AE Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_AE Name of weekday 04 (Islamic Calendar) الخميس
+ar_AE Name of weekday 05 (Islamic Calendar) الجمعة
+ar_AE Name of weekday 06 (Islamic Calendar) السبت
+ar_AE Name of weekday 07 (Islamic Calendar) الأحد
+ar_BH Language endonym العربية
+ar_BH Country endonym البحرين
+ar_BH Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_BH Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_BH Currency value € ١٬٢٣٤٫٥٦
+ar_BH Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_BH Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_BH Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_BH Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_BH Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_BH Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Name of month 01 (Gregorian Calendar) يناير
+ar_BH Name of month 02 (Gregorian Calendar) فبراير
+ar_BH Name of month 03 (Gregorian Calendar) مارس
+ar_BH Name of month 04 (Gregorian Calendar) أبريل
+ar_BH Name of month 05 (Gregorian Calendar) مايو
+ar_BH Name of month 06 (Gregorian Calendar) يونيو
+ar_BH Name of month 07 (Gregorian Calendar) يوليو
+ar_BH Name of month 08 (Gregorian Calendar) أغسطس
+ar_BH Name of month 09 (Gregorian Calendar) سبتمبر
+ar_BH Name of month 10 (Gregorian Calendar) أكتوبر
+ar_BH Name of month 11 (Gregorian Calendar) نوفمبر
+ar_BH Name of month 12 (Gregorian Calendar) ديسمبر
+ar_BH Name of month 01 (Islamic Calendar) محرم
+ar_BH Name of month 02 (Islamic Calendar) صفر
+ar_BH Name of month 03 (Islamic Calendar) ربيع الأول
+ar_BH Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_BH Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_BH Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_BH Name of month 07 (Islamic Calendar) رجب
+ar_BH Name of month 08 (Islamic Calendar) شعبان
+ar_BH Name of month 09 (Islamic Calendar) رمضان
+ar_BH Name of month 10 (Islamic Calendar) شوال
+ar_BH Name of month 11 (Islamic Calendar) ذو القعدة
+ar_BH Name of month 12 (Islamic Calendar) ذو الحجة
+ar_BH Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_BH Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_BH Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_BH Name of weekday 04 (Gregorian Calendar) الخميس
+ar_BH Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_BH Name of weekday 06 (Gregorian Calendar) السبت
+ar_BH Name of weekday 07 (Gregorian Calendar) الأحد
+ar_BH Name of weekday 01 (Islamic Calendar) الإثنين
+ar_BH Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_BH Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_BH Name of weekday 04 (Islamic Calendar) الخميس
+ar_BH Name of weekday 05 (Islamic Calendar) الجمعة
+ar_BH Name of weekday 06 (Islamic Calendar) السبت
+ar_BH Name of weekday 07 (Islamic Calendar) الأحد
+ar_DZ Language endonym العربية
+ar_DZ Country endonym الجزائر
+ar_DZ Floating Point Number 123.456.789,012-
+ar_DZ Percent value -1.234,5679%
+ar_DZ Currency value € 1.234,56
+ar_DZ Negative Currency value € 1.234,56-
+ar_DZ Date and time short (Gregorian Calendar) 21‏/7‏/2008 12:31 م
+ar_DZ Date and time medium (Gregorian Calendar) 21‏/07‏/2008 12:31:00 م
+ar_DZ Date and time long (Gregorian Calendar) 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_DZ Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_DZ Date and time short (Islamic Calendar) 18‏/7‏/1429 12:31 م
+ar_DZ Date and time medium (Islamic Calendar) 18‏/07‏/1429 12:31:00 م
+ar_DZ Date and time long (Islamic Calendar) 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_DZ Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_DZ Name of month 01 (Gregorian Calendar) يناير
+ar_DZ Name of month 02 (Gregorian Calendar) فبراير
+ar_DZ Name of month 03 (Gregorian Calendar) مارس
+ar_DZ Name of month 04 (Gregorian Calendar) أبريل
+ar_DZ Name of month 05 (Gregorian Calendar) مايو
+ar_DZ Name of month 06 (Gregorian Calendar) يونيو
+ar_DZ Name of month 07 (Gregorian Calendar) يوليو
+ar_DZ Name of month 08 (Gregorian Calendar) أغسطس
+ar_DZ Name of month 09 (Gregorian Calendar) سبتمبر
+ar_DZ Name of month 10 (Gregorian Calendar) أكتوبر
+ar_DZ Name of month 11 (Gregorian Calendar) نوفمبر
+ar_DZ Name of month 12 (Gregorian Calendar) ديسمبر
+ar_DZ Name of month 01 (Islamic Calendar) محرم
+ar_DZ Name of month 02 (Islamic Calendar) صفر
+ar_DZ Name of month 03 (Islamic Calendar) ربيع الأول
+ar_DZ Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_DZ Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_DZ Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_DZ Name of month 07 (Islamic Calendar) رجب
+ar_DZ Name of month 08 (Islamic Calendar) شعبان
+ar_DZ Name of month 09 (Islamic Calendar) رمضان
+ar_DZ Name of month 10 (Islamic Calendar) شوال
+ar_DZ Name of month 11 (Islamic Calendar) ذو القعدة
+ar_DZ Name of month 12 (Islamic Calendar) ذو الحجة
+ar_DZ Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_DZ Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_DZ Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_DZ Name of weekday 04 (Gregorian Calendar) الخميس
+ar_DZ Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_DZ Name of weekday 06 (Gregorian Calendar) السبت
+ar_DZ Name of weekday 07 (Gregorian Calendar) الأحد
+ar_DZ Name of weekday 01 (Islamic Calendar) الإثنين
+ar_DZ Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_DZ Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_DZ Name of weekday 04 (Islamic Calendar) الخميس
+ar_DZ Name of weekday 05 (Islamic Calendar) الجمعة
+ar_DZ Name of weekday 06 (Islamic Calendar) السبت
+ar_DZ Name of weekday 07 (Islamic Calendar) الأحد
+ar_EG Language endonym العربية
+ar_EG Country endonym مصر
+ar_EG Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_EG Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_EG Currency value € ١٬٢٣٤٫٥٦
+ar_EG Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_EG Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_EG Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_EG Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_EG Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_EG Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Name of month 01 (Gregorian Calendar) يناير
+ar_EG Name of month 02 (Gregorian Calendar) فبراير
+ar_EG Name of month 03 (Gregorian Calendar) مارس
+ar_EG Name of month 04 (Gregorian Calendar) أبريل
+ar_EG Name of month 05 (Gregorian Calendar) مايو
+ar_EG Name of month 06 (Gregorian Calendar) يونيو
+ar_EG Name of month 07 (Gregorian Calendar) يوليو
+ar_EG Name of month 08 (Gregorian Calendar) أغسطس
+ar_EG Name of month 09 (Gregorian Calendar) سبتمبر
+ar_EG Name of month 10 (Gregorian Calendar) أكتوبر
+ar_EG Name of month 11 (Gregorian Calendar) نوفمبر
+ar_EG Name of month 12 (Gregorian Calendar) ديسمبر
+ar_EG Name of month 01 (Islamic Calendar) محرم
+ar_EG Name of month 02 (Islamic Calendar) صفر
+ar_EG Name of month 03 (Islamic Calendar) ربيع الأول
+ar_EG Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_EG Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_EG Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_EG Name of month 07 (Islamic Calendar) رجب
+ar_EG Name of month 08 (Islamic Calendar) شعبان
+ar_EG Name of month 09 (Islamic Calendar) رمضان
+ar_EG Name of month 10 (Islamic Calendar) شوال
+ar_EG Name of month 11 (Islamic Calendar) ذو القعدة
+ar_EG Name of month 12 (Islamic Calendar) ذو الحجة
+ar_EG Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_EG Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_EG Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_EG Name of weekday 04 (Gregorian Calendar) الخميس
+ar_EG Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_EG Name of weekday 06 (Gregorian Calendar) السبت
+ar_EG Name of weekday 07 (Gregorian Calendar) الأحد
+ar_EG Name of weekday 01 (Islamic Calendar) الإثنين
+ar_EG Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_EG Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_EG Name of weekday 04 (Islamic Calendar) الخميس
+ar_EG Name of weekday 05 (Islamic Calendar) الجمعة
+ar_EG Name of weekday 06 (Islamic Calendar) السبت
+ar_EG Name of weekday 07 (Islamic Calendar) الأحد
+ar_IQ Language endonym العربية
+ar_IQ Country endonym العراق
+ar_IQ Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_IQ Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_IQ Currency value € ١٬٢٣٤٫٥٦
+ar_IQ Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_IQ Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_IQ Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_IQ Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_IQ Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_IQ Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Name of month 01 (Gregorian Calendar) يناير
+ar_IQ Name of month 02 (Gregorian Calendar) فبراير
+ar_IQ Name of month 03 (Gregorian Calendar) مارس
+ar_IQ Name of month 04 (Gregorian Calendar) أبريل
+ar_IQ Name of month 05 (Gregorian Calendar) مايو
+ar_IQ Name of month 06 (Gregorian Calendar) يونيو
+ar_IQ Name of month 07 (Gregorian Calendar) يوليو
+ar_IQ Name of month 08 (Gregorian Calendar) أغسطس
+ar_IQ Name of month 09 (Gregorian Calendar) سبتمبر
+ar_IQ Name of month 10 (Gregorian Calendar) أكتوبر
+ar_IQ Name of month 11 (Gregorian Calendar) نوفمبر
+ar_IQ Name of month 12 (Gregorian Calendar) ديسمبر
+ar_IQ Name of month 01 (Islamic Calendar) محرم
+ar_IQ Name of month 02 (Islamic Calendar) صفر
+ar_IQ Name of month 03 (Islamic Calendar) ربيع الأول
+ar_IQ Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_IQ Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_IQ Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_IQ Name of month 07 (Islamic Calendar) رجب
+ar_IQ Name of month 08 (Islamic Calendar) شعبان
+ar_IQ Name of month 09 (Islamic Calendar) رمضان
+ar_IQ Name of month 10 (Islamic Calendar) شوال
+ar_IQ Name of month 11 (Islamic Calendar) ذو القعدة
+ar_IQ Name of month 12 (Islamic Calendar) ذو الحجة
+ar_IQ Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_IQ Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_IQ Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_IQ Name of weekday 04 (Gregorian Calendar) الخميس
+ar_IQ Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_IQ Name of weekday 06 (Gregorian Calendar) السبت
+ar_IQ Name of weekday 07 (Gregorian Calendar) الأحد
+ar_IQ Name of weekday 01 (Islamic Calendar) الإثنين
+ar_IQ Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_IQ Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_IQ Name of weekday 04 (Islamic Calendar) الخميس
+ar_IQ Name of weekday 05 (Islamic Calendar) الجمعة
+ar_IQ Name of weekday 06 (Islamic Calendar) السبت
+ar_IQ Name of weekday 07 (Islamic Calendar) الأحد
+ar_JO Language endonym العربية
+ar_JO Country endonym الأردن
+ar_JO Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_JO Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_JO Currency value € ١٬٢٣٤٫٥٦
+ar_JO Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_JO Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_JO Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_JO Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_JO Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_JO Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_JO Name of month 02 (Gregorian Calendar) شباط
+ar_JO Name of month 03 (Gregorian Calendar) آذار
+ar_JO Name of month 04 (Gregorian Calendar) نيسان
+ar_JO Name of month 05 (Gregorian Calendar) أيار
+ar_JO Name of month 06 (Gregorian Calendar) حزيران
+ar_JO Name of month 07 (Gregorian Calendar) تموز
+ar_JO Name of month 08 (Gregorian Calendar) آب
+ar_JO Name of month 09 (Gregorian Calendar) أيلول
+ar_JO Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_JO Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_JO Name of month 12 (Gregorian Calendar) كانون الأول
+ar_JO Name of month 01 (Islamic Calendar) محرم
+ar_JO Name of month 02 (Islamic Calendar) صفر
+ar_JO Name of month 03 (Islamic Calendar) ربيع الأول
+ar_JO Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_JO Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_JO Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_JO Name of month 07 (Islamic Calendar) رجب
+ar_JO Name of month 08 (Islamic Calendar) شعبان
+ar_JO Name of month 09 (Islamic Calendar) رمضان
+ar_JO Name of month 10 (Islamic Calendar) شوال
+ar_JO Name of month 11 (Islamic Calendar) ذو القعدة
+ar_JO Name of month 12 (Islamic Calendar) ذو الحجة
+ar_JO Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_JO Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_JO Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_JO Name of weekday 04 (Gregorian Calendar) الخميس
+ar_JO Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_JO Name of weekday 06 (Gregorian Calendar) السبت
+ar_JO Name of weekday 07 (Gregorian Calendar) الأحد
+ar_JO Name of weekday 01 (Islamic Calendar) الإثنين
+ar_JO Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_JO Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_JO Name of weekday 04 (Islamic Calendar) الخميس
+ar_JO Name of weekday 05 (Islamic Calendar) الجمعة
+ar_JO Name of weekday 06 (Islamic Calendar) السبت
+ar_JO Name of weekday 07 (Islamic Calendar) الأحد
+ar_KW Language endonym العربية
+ar_KW Country endonym الكويت
+ar_KW Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_KW Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_KW Currency value € ١٬٢٣٤٫٥٦
+ar_KW Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_KW Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_KW Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_KW Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_KW Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_KW Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Name of month 01 (Gregorian Calendar) يناير
+ar_KW Name of month 02 (Gregorian Calendar) فبراير
+ar_KW Name of month 03 (Gregorian Calendar) مارس
+ar_KW Name of month 04 (Gregorian Calendar) أبريل
+ar_KW Name of month 05 (Gregorian Calendar) مايو
+ar_KW Name of month 06 (Gregorian Calendar) يونيو
+ar_KW Name of month 07 (Gregorian Calendar) يوليو
+ar_KW Name of month 08 (Gregorian Calendar) أغسطس
+ar_KW Name of month 09 (Gregorian Calendar) سبتمبر
+ar_KW Name of month 10 (Gregorian Calendar) أكتوبر
+ar_KW Name of month 11 (Gregorian Calendar) نوفمبر
+ar_KW Name of month 12 (Gregorian Calendar) ديسمبر
+ar_KW Name of month 01 (Islamic Calendar) محرم
+ar_KW Name of month 02 (Islamic Calendar) صفر
+ar_KW Name of month 03 (Islamic Calendar) ربيع الأول
+ar_KW Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_KW Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_KW Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_KW Name of month 07 (Islamic Calendar) رجب
+ar_KW Name of month 08 (Islamic Calendar) شعبان
+ar_KW Name of month 09 (Islamic Calendar) رمضان
+ar_KW Name of month 10 (Islamic Calendar) شوال
+ar_KW Name of month 11 (Islamic Calendar) ذو القعدة
+ar_KW Name of month 12 (Islamic Calendar) ذو الحجة
+ar_KW Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_KW Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_KW Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_KW Name of weekday 04 (Gregorian Calendar) الخميس
+ar_KW Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_KW Name of weekday 06 (Gregorian Calendar) السبت
+ar_KW Name of weekday 07 (Gregorian Calendar) الأحد
+ar_KW Name of weekday 01 (Islamic Calendar) الإثنين
+ar_KW Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_KW Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_KW Name of weekday 04 (Islamic Calendar) الخميس
+ar_KW Name of weekday 05 (Islamic Calendar) الجمعة
+ar_KW Name of weekday 06 (Islamic Calendar) السبت
+ar_KW Name of weekday 07 (Islamic Calendar) الأحد
+ar_LB Language endonym العربية
+ar_LB Country endonym لبنان
+ar_LB Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_LB Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_LB Currency value € ١٬٢٣٤٫٥٦
+ar_LB Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_LB Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_LB Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_LB Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_LB Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_LB Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_LB Name of month 02 (Gregorian Calendar) شباط
+ar_LB Name of month 03 (Gregorian Calendar) آذار
+ar_LB Name of month 04 (Gregorian Calendar) نيسان
+ar_LB Name of month 05 (Gregorian Calendar) نوار
+ar_LB Name of month 06 (Gregorian Calendar) حزيران
+ar_LB Name of month 07 (Gregorian Calendar) تموز
+ar_LB Name of month 08 (Gregorian Calendar) آب
+ar_LB Name of month 09 (Gregorian Calendar) أيلول
+ar_LB Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_LB Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_LB Name of month 12 (Gregorian Calendar) كانون الأول
+ar_LB Name of month 01 (Islamic Calendar) محرم
+ar_LB Name of month 02 (Islamic Calendar) صفر
+ar_LB Name of month 03 (Islamic Calendar) ربيع الأول
+ar_LB Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_LB Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_LB Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_LB Name of month 07 (Islamic Calendar) رجب
+ar_LB Name of month 08 (Islamic Calendar) شعبان
+ar_LB Name of month 09 (Islamic Calendar) رمضان
+ar_LB Name of month 10 (Islamic Calendar) شوال
+ar_LB Name of month 11 (Islamic Calendar) ذو القعدة
+ar_LB Name of month 12 (Islamic Calendar) ذو الحجة
+ar_LB Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_LB Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_LB Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_LB Name of weekday 04 (Gregorian Calendar) الخميس
+ar_LB Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_LB Name of weekday 06 (Gregorian Calendar) السبت
+ar_LB Name of weekday 07 (Gregorian Calendar) الأحد
+ar_LB Name of weekday 01 (Islamic Calendar) الإثنين
+ar_LB Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_LB Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_LB Name of weekday 04 (Islamic Calendar) الخميس
+ar_LB Name of weekday 05 (Islamic Calendar) الجمعة
+ar_LB Name of weekday 06 (Islamic Calendar) السبت
+ar_LB Name of weekday 07 (Islamic Calendar) الأحد
+ar_LY Language endonym العربية
+ar_LY Country endonym ليبيا
+ar_LY Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_LY Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_LY Currency value € ١٬٢٣٤٫٥٦
+ar_LY Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_LY Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_LY Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_LY Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_LY Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_LY Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Name of month 01 (Gregorian Calendar) يناير
+ar_LY Name of month 02 (Gregorian Calendar) فبراير
+ar_LY Name of month 03 (Gregorian Calendar) مارس
+ar_LY Name of month 04 (Gregorian Calendar) أبريل
+ar_LY Name of month 05 (Gregorian Calendar) مايو
+ar_LY Name of month 06 (Gregorian Calendar) يونيو
+ar_LY Name of month 07 (Gregorian Calendar) يوليو
+ar_LY Name of month 08 (Gregorian Calendar) أغسطس
+ar_LY Name of month 09 (Gregorian Calendar) سبتمبر
+ar_LY Name of month 10 (Gregorian Calendar) أكتوبر
+ar_LY Name of month 11 (Gregorian Calendar) نوفمبر
+ar_LY Name of month 12 (Gregorian Calendar) ديسمبر
+ar_LY Name of month 01 (Islamic Calendar) محرم
+ar_LY Name of month 02 (Islamic Calendar) صفر
+ar_LY Name of month 03 (Islamic Calendar) ربيع الأول
+ar_LY Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_LY Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_LY Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_LY Name of month 07 (Islamic Calendar) رجب
+ar_LY Name of month 08 (Islamic Calendar) شعبان
+ar_LY Name of month 09 (Islamic Calendar) رمضان
+ar_LY Name of month 10 (Islamic Calendar) شوال
+ar_LY Name of month 11 (Islamic Calendar) ذو القعدة
+ar_LY Name of month 12 (Islamic Calendar) ذو الحجة
+ar_LY Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_LY Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_LY Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_LY Name of weekday 04 (Gregorian Calendar) الخميس
+ar_LY Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_LY Name of weekday 06 (Gregorian Calendar) السبت
+ar_LY Name of weekday 07 (Gregorian Calendar) الأحد
+ar_LY Name of weekday 01 (Islamic Calendar) الإثنين
+ar_LY Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_LY Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_LY Name of weekday 04 (Islamic Calendar) الخميس
+ar_LY Name of weekday 05 (Islamic Calendar) الجمعة
+ar_LY Name of weekday 06 (Islamic Calendar) السبت
+ar_LY Name of weekday 07 (Islamic Calendar) الأحد
+ar_MA Language endonym العربية
+ar_MA Country endonym المغرب
+ar_MA Floating Point Number 123.456.789,012-
+ar_MA Percent value -1.234,5679%
+ar_MA Currency value € 1.234,56
+ar_MA Negative Currency value € 1.234,56-
+ar_MA Date and time short (Gregorian Calendar) 21‏/7‏/2008 12:31 م
+ar_MA Date and time medium (Gregorian Calendar) 21‏/07‏/2008 12:31:00 م
+ar_MA Date and time long (Gregorian Calendar) 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_MA Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_MA Date and time short (Islamic Calendar) 18‏/7‏/1429 12:31 م
+ar_MA Date and time medium (Islamic Calendar) 18‏/07‏/1429 12:31:00 م
+ar_MA Date and time long (Islamic Calendar) 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_MA Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_MA Name of month 01 (Gregorian Calendar) يناير
+ar_MA Name of month 02 (Gregorian Calendar) فبراير
+ar_MA Name of month 03 (Gregorian Calendar) مارس
+ar_MA Name of month 04 (Gregorian Calendar) أبريل
+ar_MA Name of month 05 (Gregorian Calendar) مايو
+ar_MA Name of month 06 (Gregorian Calendar) يونيو
+ar_MA Name of month 07 (Gregorian Calendar) يوليو
+ar_MA Name of month 08 (Gregorian Calendar) أغسطس
+ar_MA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_MA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_MA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_MA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_MA Name of month 01 (Islamic Calendar) محرم
+ar_MA Name of month 02 (Islamic Calendar) صفر
+ar_MA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_MA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_MA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_MA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_MA Name of month 07 (Islamic Calendar) رجب
+ar_MA Name of month 08 (Islamic Calendar) شعبان
+ar_MA Name of month 09 (Islamic Calendar) رمضان
+ar_MA Name of month 10 (Islamic Calendar) شوال
+ar_MA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_MA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_MA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_MA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_MA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_MA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_MA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_MA Name of weekday 06 (Gregorian Calendar) السبت
+ar_MA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_MA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_MA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_MA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_MA Name of weekday 04 (Islamic Calendar) الخميس
+ar_MA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_MA Name of weekday 06 (Islamic Calendar) السبت
+ar_MA Name of weekday 07 (Islamic Calendar) الأحد
+ar_OM Language endonym العربية
+ar_OM Country endonym عمان
+ar_OM Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_OM Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_OM Currency value € ١٬٢٣٤٫٥٦
+ar_OM Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_OM Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_OM Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_OM Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_OM Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_OM Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Name of month 01 (Gregorian Calendar) يناير
+ar_OM Name of month 02 (Gregorian Calendar) فبراير
+ar_OM Name of month 03 (Gregorian Calendar) مارس
+ar_OM Name of month 04 (Gregorian Calendar) أبريل
+ar_OM Name of month 05 (Gregorian Calendar) مايو
+ar_OM Name of month 06 (Gregorian Calendar) يونيو
+ar_OM Name of month 07 (Gregorian Calendar) يوليو
+ar_OM Name of month 08 (Gregorian Calendar) أغسطس
+ar_OM Name of month 09 (Gregorian Calendar) سبتمبر
+ar_OM Name of month 10 (Gregorian Calendar) أكتوبر
+ar_OM Name of month 11 (Gregorian Calendar) نوفمبر
+ar_OM Name of month 12 (Gregorian Calendar) ديسمبر
+ar_OM Name of month 01 (Islamic Calendar) محرم
+ar_OM Name of month 02 (Islamic Calendar) صفر
+ar_OM Name of month 03 (Islamic Calendar) ربيع الأول
+ar_OM Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_OM Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_OM Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_OM Name of month 07 (Islamic Calendar) رجب
+ar_OM Name of month 08 (Islamic Calendar) شعبان
+ar_OM Name of month 09 (Islamic Calendar) رمضان
+ar_OM Name of month 10 (Islamic Calendar) شوال
+ar_OM Name of month 11 (Islamic Calendar) ذو القعدة
+ar_OM Name of month 12 (Islamic Calendar) ذو الحجة
+ar_OM Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_OM Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_OM Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_OM Name of weekday 04 (Gregorian Calendar) الخميس
+ar_OM Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_OM Name of weekday 06 (Gregorian Calendar) السبت
+ar_OM Name of weekday 07 (Gregorian Calendar) الأحد
+ar_OM Name of weekday 01 (Islamic Calendar) الإثنين
+ar_OM Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_OM Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_OM Name of weekday 04 (Islamic Calendar) الخميس
+ar_OM Name of weekday 05 (Islamic Calendar) الجمعة
+ar_OM Name of weekday 06 (Islamic Calendar) السبت
+ar_OM Name of weekday 07 (Islamic Calendar) الأحد
+ar_QA Language endonym العربية
+ar_QA Country endonym قطر
+ar_QA Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_QA Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_QA Currency value €١٢٣٤٫٥٦
+ar_QA Negative Currency value -€١٢٣٤٫٥٦
+ar_QA Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_QA Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_QA Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_QA Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_QA Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Name of month 01 (Gregorian Calendar) يناير
+ar_QA Name of month 02 (Gregorian Calendar) فبراير
+ar_QA Name of month 03 (Gregorian Calendar) مارس
+ar_QA Name of month 04 (Gregorian Calendar) أبريل
+ar_QA Name of month 05 (Gregorian Calendar) مايو
+ar_QA Name of month 06 (Gregorian Calendar) يونيو
+ar_QA Name of month 07 (Gregorian Calendar) يوليو
+ar_QA Name of month 08 (Gregorian Calendar) أغسطس
+ar_QA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_QA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_QA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_QA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_QA Name of month 01 (Islamic Calendar) محرم
+ar_QA Name of month 02 (Islamic Calendar) صفر
+ar_QA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_QA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_QA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_QA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_QA Name of month 07 (Islamic Calendar) رجب
+ar_QA Name of month 08 (Islamic Calendar) شعبان
+ar_QA Name of month 09 (Islamic Calendar) رمضان
+ar_QA Name of month 10 (Islamic Calendar) شوال
+ar_QA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_QA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_QA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_QA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_QA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_QA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_QA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_QA Name of weekday 06 (Gregorian Calendar) السبت
+ar_QA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_QA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_QA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_QA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_QA Name of weekday 04 (Islamic Calendar) الخميس
+ar_QA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_QA Name of weekday 06 (Islamic Calendar) السبت
+ar_QA Name of weekday 07 (Islamic Calendar) الأحد
+ar_SA Language endonym العربية
+ar_SA Country endonym المملكة العربية السعودية
+ar_SA Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_SA Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SA Currency value €١٢٣٤٫٥٦
+ar_SA Negative Currency value -€١٢٣٤٫٥٦
+ar_SA Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SA Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SA Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SA Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SA Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Name of month 01 (Gregorian Calendar) يناير
+ar_SA Name of month 02 (Gregorian Calendar) فبراير
+ar_SA Name of month 03 (Gregorian Calendar) مارس
+ar_SA Name of month 04 (Gregorian Calendar) أبريل
+ar_SA Name of month 05 (Gregorian Calendar) مايو
+ar_SA Name of month 06 (Gregorian Calendar) يونيو
+ar_SA Name of month 07 (Gregorian Calendar) يوليو
+ar_SA Name of month 08 (Gregorian Calendar) أغسطس
+ar_SA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_SA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_SA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_SA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_SA Name of month 01 (Islamic Calendar) محرم
+ar_SA Name of month 02 (Islamic Calendar) صفر
+ar_SA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SA Name of month 07 (Islamic Calendar) رجب
+ar_SA Name of month 08 (Islamic Calendar) شعبان
+ar_SA Name of month 09 (Islamic Calendar) رمضان
+ar_SA Name of month 10 (Islamic Calendar) شوال
+ar_SA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SA Name of weekday 06 (Gregorian Calendar) السبت
+ar_SA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SA Name of weekday 04 (Islamic Calendar) الخميس
+ar_SA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SA Name of weekday 06 (Islamic Calendar) السبت
+ar_SA Name of weekday 07 (Islamic Calendar) الأحد
+ar_SD Language endonym العربية
+ar_SD Country endonym السودان
+ar_SD Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_SD Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SD Currency value € ١٬٢٣٤٫٥٦
+ar_SD Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_SD Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SD Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SD Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SD Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SD Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Name of month 01 (Gregorian Calendar) يناير
+ar_SD Name of month 02 (Gregorian Calendar) فبراير
+ar_SD Name of month 03 (Gregorian Calendar) مارس
+ar_SD Name of month 04 (Gregorian Calendar) أبريل
+ar_SD Name of month 05 (Gregorian Calendar) مايو
+ar_SD Name of month 06 (Gregorian Calendar) يونيو
+ar_SD Name of month 07 (Gregorian Calendar) يوليو
+ar_SD Name of month 08 (Gregorian Calendar) أغسطس
+ar_SD Name of month 09 (Gregorian Calendar) سبتمبر
+ar_SD Name of month 10 (Gregorian Calendar) أكتوبر
+ar_SD Name of month 11 (Gregorian Calendar) نوفمبر
+ar_SD Name of month 12 (Gregorian Calendar) ديسمبر
+ar_SD Name of month 01 (Islamic Calendar) محرم
+ar_SD Name of month 02 (Islamic Calendar) صفر
+ar_SD Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SD Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SD Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SD Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SD Name of month 07 (Islamic Calendar) رجب
+ar_SD Name of month 08 (Islamic Calendar) شعبان
+ar_SD Name of month 09 (Islamic Calendar) رمضان
+ar_SD Name of month 10 (Islamic Calendar) شوال
+ar_SD Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SD Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SD Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SD Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SD Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SD Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SD Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SD Name of weekday 06 (Gregorian Calendar) السبت
+ar_SD Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SD Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SD Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SD Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SD Name of weekday 04 (Islamic Calendar) الخميس
+ar_SD Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SD Name of weekday 06 (Islamic Calendar) السبت
+ar_SD Name of weekday 07 (Islamic Calendar) الأحد
+ar_SY Language endonym العربية
+ar_SY Country endonym سوريا
+ar_SY Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_SY Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SY Currency value €١٢٣٤٫٥٦
+ar_SY Negative Currency value -€١٢٣٤٫٥٦
+ar_SY Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SY Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SY Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SY Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SY Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_SY Name of month 02 (Gregorian Calendar) شباط
+ar_SY Name of month 03 (Gregorian Calendar) آذار
+ar_SY Name of month 04 (Gregorian Calendar) نيسان
+ar_SY Name of month 05 (Gregorian Calendar) نوار
+ar_SY Name of month 06 (Gregorian Calendar) حزيران
+ar_SY Name of month 07 (Gregorian Calendar) تموز
+ar_SY Name of month 08 (Gregorian Calendar) آب
+ar_SY Name of month 09 (Gregorian Calendar) أيلول
+ar_SY Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_SY Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_SY Name of month 12 (Gregorian Calendar) كانون الأول
+ar_SY Name of month 01 (Islamic Calendar) محرم
+ar_SY Name of month 02 (Islamic Calendar) صفر
+ar_SY Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SY Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SY Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SY Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SY Name of month 07 (Islamic Calendar) رجب
+ar_SY Name of month 08 (Islamic Calendar) شعبان
+ar_SY Name of month 09 (Islamic Calendar) رمضان
+ar_SY Name of month 10 (Islamic Calendar) شوال
+ar_SY Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SY Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SY Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SY Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SY Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SY Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SY Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SY Name of weekday 06 (Gregorian Calendar) السبت
+ar_SY Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SY Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SY Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SY Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SY Name of weekday 04 (Islamic Calendar) الخميس
+ar_SY Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SY Name of weekday 06 (Islamic Calendar) السبت
+ar_SY Name of weekday 07 (Islamic Calendar) الأحد
+ar_TN Language endonym العربية
+ar_TN Country endonym تونس
+ar_TN Floating Point Number 123456789,012-
+ar_TN Percent value -1.234,5679%
+ar_TN Currency value €1234,56
+ar_TN Negative Currency value -€1234,56
+ar_TN Date and time short (Gregorian Calendar) 21‏/7‏/2008 12:31 م
+ar_TN Date and time medium (Gregorian Calendar) 21‏/07‏/2008 12:31:00 م
+ar_TN Date and time long (Gregorian Calendar) 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_TN Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 GMT+00:00 12:31:00 م
+ar_TN Date and time short (Islamic Calendar) 18‏/7‏/1429 12:31 م
+ar_TN Date and time medium (Islamic Calendar) 18‏/07‏/1429 12:31:00 م
+ar_TN Date and time long (Islamic Calendar) 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_TN Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 GMT+00:00 12:31:00 م
+ar_TN Name of month 01 (Gregorian Calendar) يناير
+ar_TN Name of month 02 (Gregorian Calendar) فبراير
+ar_TN Name of month 03 (Gregorian Calendar) مارس
+ar_TN Name of month 04 (Gregorian Calendar) أبريل
+ar_TN Name of month 05 (Gregorian Calendar) مايو
+ar_TN Name of month 06 (Gregorian Calendar) يونيو
+ar_TN Name of month 07 (Gregorian Calendar) يوليو
+ar_TN Name of month 08 (Gregorian Calendar) أغسطس
+ar_TN Name of month 09 (Gregorian Calendar) سبتمبر
+ar_TN Name of month 10 (Gregorian Calendar) أكتوبر
+ar_TN Name of month 11 (Gregorian Calendar) نوفمبر
+ar_TN Name of month 12 (Gregorian Calendar) ديسمبر
+ar_TN Name of month 01 (Islamic Calendar) محرم
+ar_TN Name of month 02 (Islamic Calendar) صفر
+ar_TN Name of month 03 (Islamic Calendar) ربيع الأول
+ar_TN Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_TN Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_TN Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_TN Name of month 07 (Islamic Calendar) رجب
+ar_TN Name of month 08 (Islamic Calendar) شعبان
+ar_TN Name of month 09 (Islamic Calendar) رمضان
+ar_TN Name of month 10 (Islamic Calendar) شوال
+ar_TN Name of month 11 (Islamic Calendar) ذو القعدة
+ar_TN Name of month 12 (Islamic Calendar) ذو الحجة
+ar_TN Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_TN Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_TN Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_TN Name of weekday 04 (Gregorian Calendar) الخميس
+ar_TN Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_TN Name of weekday 06 (Gregorian Calendar) السبت
+ar_TN Name of weekday 07 (Gregorian Calendar) الأحد
+ar_TN Name of weekday 01 (Islamic Calendar) الإثنين
+ar_TN Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_TN Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_TN Name of weekday 04 (Islamic Calendar) الخميس
+ar_TN Name of weekday 05 (Islamic Calendar) الجمعة
+ar_TN Name of weekday 06 (Islamic Calendar) السبت
+ar_TN Name of weekday 07 (Islamic Calendar) الأحد
+ar_YE Language endonym العربية
+ar_YE Country endonym اليمن
+ar_YE Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_YE Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_YE Currency value €١٢٣٤٫٥٦
+ar_YE Negative Currency value -€١٢٣٤٫٥٦
+ar_YE Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_YE Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_YE Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_YE Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_YE Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ GMT+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Name of month 01 (Gregorian Calendar) يناير
+ar_YE Name of month 02 (Gregorian Calendar) فبراير
+ar_YE Name of month 03 (Gregorian Calendar) مارس
+ar_YE Name of month 04 (Gregorian Calendar) أبريل
+ar_YE Name of month 05 (Gregorian Calendar) مايو
+ar_YE Name of month 06 (Gregorian Calendar) يونيو
+ar_YE Name of month 07 (Gregorian Calendar) يوليو
+ar_YE Name of month 08 (Gregorian Calendar) أغسطس
+ar_YE Name of month 09 (Gregorian Calendar) سبتمبر
+ar_YE Name of month 10 (Gregorian Calendar) أكتوبر
+ar_YE Name of month 11 (Gregorian Calendar) نوفمبر
+ar_YE Name of month 12 (Gregorian Calendar) ديسمبر
+ar_YE Name of month 01 (Islamic Calendar) محرم
+ar_YE Name of month 02 (Islamic Calendar) صفر
+ar_YE Name of month 03 (Islamic Calendar) ربيع الأول
+ar_YE Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_YE Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_YE Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_YE Name of month 07 (Islamic Calendar) رجب
+ar_YE Name of month 08 (Islamic Calendar) شعبان
+ar_YE Name of month 09 (Islamic Calendar) رمضان
+ar_YE Name of month 10 (Islamic Calendar) شوال
+ar_YE Name of month 11 (Islamic Calendar) ذو القعدة
+ar_YE Name of month 12 (Islamic Calendar) ذو الحجة
+ar_YE Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_YE Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_YE Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_YE Name of weekday 04 (Gregorian Calendar) الخميس
+ar_YE Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_YE Name of weekday 06 (Gregorian Calendar) السبت
+ar_YE Name of weekday 07 (Gregorian Calendar) الأحد
+ar_YE Name of weekday 01 (Islamic Calendar) الإثنين
+ar_YE Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_YE Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_YE Name of weekday 04 (Islamic Calendar) الخميس
+ar_YE Name of weekday 05 (Islamic Calendar) الجمعة
+ar_YE Name of weekday 06 (Islamic Calendar) السبت
+ar_YE Name of weekday 07 (Islamic Calendar) الأحد
+ca Language endonym català
+ca Country endonym
+ca Floating Point Number -123.456.789,012
+ca Percent value -1.234,5679%
+ca Currency value 1.234,56 €
+ca Negative Currency value -1.234,56 €
+ca Date and time short (Gregorian Calendar) 21/07/08 12:31
+ca Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+ca Date and time long (Gregorian Calendar) 21 de juliol de 2008 12:31:00 GMT+00:00
+ca Date and time full (Gregorian Calendar) dilluns 21 de juliol de 2008 12:31:00 GMT+00:00
+ca Date and time short (Islamic Calendar) 18/07/29 12:31
+ca Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+ca Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+ca Date and time full (Islamic Calendar) dilluns 18 de Rajab de 1429 12:31:00 GMT+00:00
+ca Name of month 01 (Gregorian Calendar) gener
+ca Name of month 02 (Gregorian Calendar) febrer
+ca Name of month 03 (Gregorian Calendar) març
+ca Name of month 04 (Gregorian Calendar) abril
+ca Name of month 05 (Gregorian Calendar) maig
+ca Name of month 06 (Gregorian Calendar) juny
+ca Name of month 07 (Gregorian Calendar) juliol
+ca Name of month 08 (Gregorian Calendar) agost
+ca Name of month 09 (Gregorian Calendar) setembre
+ca Name of month 10 (Gregorian Calendar) octubre
+ca Name of month 11 (Gregorian Calendar) novembre
+ca Name of month 12 (Gregorian Calendar) desembre
+ca Name of month 01 (Islamic Calendar) Muharram
+ca Name of month 02 (Islamic Calendar) Safar
+ca Name of month 03 (Islamic Calendar) Rabiʻ I
+ca Name of month 04 (Islamic Calendar) Rabiʻ II
+ca Name of month 05 (Islamic Calendar) Jumada I
+ca Name of month 06 (Islamic Calendar) Jumada II
+ca Name of month 07 (Islamic Calendar) Rajab
+ca Name of month 08 (Islamic Calendar) Shaʻban
+ca Name of month 09 (Islamic Calendar) Ramadan
+ca Name of month 10 (Islamic Calendar) Shawwal
+ca Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ca Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ca Name of weekday 01 (Gregorian Calendar) dilluns
+ca Name of weekday 02 (Gregorian Calendar) dimarts
+ca Name of weekday 03 (Gregorian Calendar) dimecres
+ca Name of weekday 04 (Gregorian Calendar) dijous
+ca Name of weekday 05 (Gregorian Calendar) divendres
+ca Name of weekday 06 (Gregorian Calendar) dissabte
+ca Name of weekday 07 (Gregorian Calendar) diumenge
+ca Name of weekday 01 (Islamic Calendar) dilluns
+ca Name of weekday 02 (Islamic Calendar) dimarts
+ca Name of weekday 03 (Islamic Calendar) dimecres
+ca Name of weekday 04 (Islamic Calendar) dijous
+ca Name of weekday 05 (Islamic Calendar) divendres
+ca Name of weekday 06 (Islamic Calendar) dissabte
+ca Name of weekday 07 (Islamic Calendar) diumenge
+ca_ES Language endonym català
+ca_ES Country endonym Espanya
+ca_ES Floating Point Number -123.456.789,012
+ca_ES Percent value -1.234,5679%
+ca_ES Currency value 1.234,56 €
+ca_ES Negative Currency value -1.234,56 €
+ca_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+ca_ES Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+ca_ES Date and time long (Gregorian Calendar) 21 de juliol de 2008 12:31:00 GMT+00:00
+ca_ES Date and time full (Gregorian Calendar) dilluns 21 de juliol de 2008 12:31:00 GMT+00:00
+ca_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+ca_ES Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+ca_ES Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+ca_ES Date and time full (Islamic Calendar) dilluns 18 de Rajab de 1429 12:31:00 GMT+00:00
+ca_ES Name of month 01 (Gregorian Calendar) gener
+ca_ES Name of month 02 (Gregorian Calendar) febrer
+ca_ES Name of month 03 (Gregorian Calendar) març
+ca_ES Name of month 04 (Gregorian Calendar) abril
+ca_ES Name of month 05 (Gregorian Calendar) maig
+ca_ES Name of month 06 (Gregorian Calendar) juny
+ca_ES Name of month 07 (Gregorian Calendar) juliol
+ca_ES Name of month 08 (Gregorian Calendar) agost
+ca_ES Name of month 09 (Gregorian Calendar) setembre
+ca_ES Name of month 10 (Gregorian Calendar) octubre
+ca_ES Name of month 11 (Gregorian Calendar) novembre
+ca_ES Name of month 12 (Gregorian Calendar) desembre
+ca_ES Name of month 01 (Islamic Calendar) Muharram
+ca_ES Name of month 02 (Islamic Calendar) Safar
+ca_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+ca_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+ca_ES Name of month 05 (Islamic Calendar) Jumada I
+ca_ES Name of month 06 (Islamic Calendar) Jumada II
+ca_ES Name of month 07 (Islamic Calendar) Rajab
+ca_ES Name of month 08 (Islamic Calendar) Shaʻban
+ca_ES Name of month 09 (Islamic Calendar) Ramadan
+ca_ES Name of month 10 (Islamic Calendar) Shawwal
+ca_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ca_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ca_ES Name of weekday 01 (Gregorian Calendar) dilluns
+ca_ES Name of weekday 02 (Gregorian Calendar) dimarts
+ca_ES Name of weekday 03 (Gregorian Calendar) dimecres
+ca_ES Name of weekday 04 (Gregorian Calendar) dijous
+ca_ES Name of weekday 05 (Gregorian Calendar) divendres
+ca_ES Name of weekday 06 (Gregorian Calendar) dissabte
+ca_ES Name of weekday 07 (Gregorian Calendar) diumenge
+ca_ES Name of weekday 01 (Islamic Calendar) dilluns
+ca_ES Name of weekday 02 (Islamic Calendar) dimarts
+ca_ES Name of weekday 03 (Islamic Calendar) dimecres
+ca_ES Name of weekday 04 (Islamic Calendar) dijous
+ca_ES Name of weekday 05 (Islamic Calendar) divendres
+ca_ES Name of weekday 06 (Islamic Calendar) dissabte
+ca_ES Name of weekday 07 (Islamic Calendar) diumenge
+da Language endonym dansk
+da Country endonym
+da Floating Point Number -123.456.789,012
+da Percent value -1.234,5679 %
+da Currency value 1.234,56 €
+da Negative Currency value -1.234,56 €
+da Date and time short (Gregorian Calendar) 21/07/08 12.31
+da Date and time medium (Gregorian Calendar) 21/07/2008 12.31.00
+da Date and time long (Gregorian Calendar) 21. jul. 2008 12:31:00 GMT+00.00
+da Date and time full (Gregorian Calendar) mandag den 21. juli 2008 12.31.00 GMT+00.00
+da Date and time short (Islamic Calendar) 18/07/29 12.31
+da Date and time medium (Islamic Calendar) 18/07/1429 12.31.00
+da Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00.00
+da Date and time full (Islamic Calendar) mandag den 18. Rajab 1429 12.31.00 GMT+00.00
+da Name of month 01 (Gregorian Calendar) januar
+da Name of month 02 (Gregorian Calendar) februar
+da Name of month 03 (Gregorian Calendar) marts
+da Name of month 04 (Gregorian Calendar) april
+da Name of month 05 (Gregorian Calendar) maj
+da Name of month 06 (Gregorian Calendar) juni
+da Name of month 07 (Gregorian Calendar) juli
+da Name of month 08 (Gregorian Calendar) august
+da Name of month 09 (Gregorian Calendar) september
+da Name of month 10 (Gregorian Calendar) oktober
+da Name of month 11 (Gregorian Calendar) november
+da Name of month 12 (Gregorian Calendar) december
+da Name of month 01 (Islamic Calendar) Muharram
+da Name of month 02 (Islamic Calendar) Safar
+da Name of month 03 (Islamic Calendar) Rabiʻ I
+da Name of month 04 (Islamic Calendar) Rabiʻ II
+da Name of month 05 (Islamic Calendar) Jumada I
+da Name of month 06 (Islamic Calendar) Jumada II
+da Name of month 07 (Islamic Calendar) Rajab
+da Name of month 08 (Islamic Calendar) Shaʻban
+da Name of month 09 (Islamic Calendar) Ramadan
+da Name of month 10 (Islamic Calendar) Shawwal
+da Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+da Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+da Name of weekday 01 (Gregorian Calendar) mandag
+da Name of weekday 02 (Gregorian Calendar) tirsdag
+da Name of weekday 03 (Gregorian Calendar) onsdag
+da Name of weekday 04 (Gregorian Calendar) torsdag
+da Name of weekday 05 (Gregorian Calendar) fredag
+da Name of weekday 06 (Gregorian Calendar) lørdag
+da Name of weekday 07 (Gregorian Calendar) søndag
+da Name of weekday 01 (Islamic Calendar) mandag
+da Name of weekday 02 (Islamic Calendar) tirsdag
+da Name of weekday 03 (Islamic Calendar) onsdag
+da Name of weekday 04 (Islamic Calendar) torsdag
+da Name of weekday 05 (Islamic Calendar) fredag
+da Name of weekday 06 (Islamic Calendar) lørdag
+da Name of weekday 07 (Islamic Calendar) søndag
+da_DK Language endonym dansk
+da_DK Country endonym Danmark
+da_DK Floating Point Number -123.456.789,012
+da_DK Percent value -1.234,5679 %
+da_DK Currency value 1.234,56 €
+da_DK Negative Currency value -1.234,56 €
+da_DK Date and time short (Gregorian Calendar) 21/07/08 12.31
+da_DK Date and time medium (Gregorian Calendar) 21/07/2008 12.31.00
+da_DK Date and time long (Gregorian Calendar) 21. jul. 2008 12:31:00 GMT+00.00
+da_DK Date and time full (Gregorian Calendar) mandag den 21. juli 2008 12.31.00 GMT+00.00
+da_DK Date and time short (Islamic Calendar) 18/07/29 12.31
+da_DK Date and time medium (Islamic Calendar) 18/07/1429 12.31.00
+da_DK Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00.00
+da_DK Date and time full (Islamic Calendar) mandag den 18. Rajab 1429 12.31.00 GMT+00.00
+da_DK Name of month 01 (Gregorian Calendar) januar
+da_DK Name of month 02 (Gregorian Calendar) februar
+da_DK Name of month 03 (Gregorian Calendar) marts
+da_DK Name of month 04 (Gregorian Calendar) april
+da_DK Name of month 05 (Gregorian Calendar) maj
+da_DK Name of month 06 (Gregorian Calendar) juni
+da_DK Name of month 07 (Gregorian Calendar) juli
+da_DK Name of month 08 (Gregorian Calendar) august
+da_DK Name of month 09 (Gregorian Calendar) september
+da_DK Name of month 10 (Gregorian Calendar) oktober
+da_DK Name of month 11 (Gregorian Calendar) november
+da_DK Name of month 12 (Gregorian Calendar) december
+da_DK Name of month 01 (Islamic Calendar) Muharram
+da_DK Name of month 02 (Islamic Calendar) Safar
+da_DK Name of month 03 (Islamic Calendar) Rabiʻ I
+da_DK Name of month 04 (Islamic Calendar) Rabiʻ II
+da_DK Name of month 05 (Islamic Calendar) Jumada I
+da_DK Name of month 06 (Islamic Calendar) Jumada II
+da_DK Name of month 07 (Islamic Calendar) Rajab
+da_DK Name of month 08 (Islamic Calendar) Shaʻban
+da_DK Name of month 09 (Islamic Calendar) Ramadan
+da_DK Name of month 10 (Islamic Calendar) Shawwal
+da_DK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+da_DK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+da_DK Name of weekday 01 (Gregorian Calendar) mandag
+da_DK Name of weekday 02 (Gregorian Calendar) tirsdag
+da_DK Name of weekday 03 (Gregorian Calendar) onsdag
+da_DK Name of weekday 04 (Gregorian Calendar) torsdag
+da_DK Name of weekday 05 (Gregorian Calendar) fredag
+da_DK Name of weekday 06 (Gregorian Calendar) lørdag
+da_DK Name of weekday 07 (Gregorian Calendar) søndag
+da_DK Name of weekday 01 (Islamic Calendar) mandag
+da_DK Name of weekday 02 (Islamic Calendar) tirsdag
+da_DK Name of weekday 03 (Islamic Calendar) onsdag
+da_DK Name of weekday 04 (Islamic Calendar) torsdag
+da_DK Name of weekday 05 (Islamic Calendar) fredag
+da_DK Name of weekday 06 (Islamic Calendar) lørdag
+da_DK Name of weekday 07 (Islamic Calendar) søndag
+de Language endonym Deutsch
+de Country endonym
+de Floating Point Number -123.456.789,012
+de Percent value -1.234,5679 %
+de Currency value 1.234,56 €
+de Negative Currency value -1.234,56 €
+de Date and time short (Gregorian Calendar) 21.07.08 12:31
+de Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de Date and time short (Islamic Calendar) 18.07.29 12:31
+de Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de Name of month 01 (Gregorian Calendar) Januar
+de Name of month 02 (Gregorian Calendar) Februar
+de Name of month 03 (Gregorian Calendar) März
+de Name of month 04 (Gregorian Calendar) April
+de Name of month 05 (Gregorian Calendar) Mai
+de Name of month 06 (Gregorian Calendar) Juni
+de Name of month 07 (Gregorian Calendar) Juli
+de Name of month 08 (Gregorian Calendar) August
+de Name of month 09 (Gregorian Calendar) September
+de Name of month 10 (Gregorian Calendar) Oktober
+de Name of month 11 (Gregorian Calendar) November
+de Name of month 12 (Gregorian Calendar) Dezember
+de Name of month 01 (Islamic Calendar) Muharram
+de Name of month 02 (Islamic Calendar) Safar
+de Name of month 03 (Islamic Calendar) Rabiʻ I
+de Name of month 04 (Islamic Calendar) Rabiʻ II
+de Name of month 05 (Islamic Calendar) Jumada I
+de Name of month 06 (Islamic Calendar) Jumada II
+de Name of month 07 (Islamic Calendar) Rajab
+de Name of month 08 (Islamic Calendar) Shaʻban
+de Name of month 09 (Islamic Calendar) Ramadan
+de Name of month 10 (Islamic Calendar) Shawwal
+de Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de Name of weekday 01 (Gregorian Calendar) Montag
+de Name of weekday 02 (Gregorian Calendar) Dienstag
+de Name of weekday 03 (Gregorian Calendar) Mittwoch
+de Name of weekday 04 (Gregorian Calendar) Donnerstag
+de Name of weekday 05 (Gregorian Calendar) Freitag
+de Name of weekday 06 (Gregorian Calendar) Samstag
+de Name of weekday 07 (Gregorian Calendar) Sonntag
+de Name of weekday 01 (Islamic Calendar) Montag
+de Name of weekday 02 (Islamic Calendar) Dienstag
+de Name of weekday 03 (Islamic Calendar) Mittwoch
+de Name of weekday 04 (Islamic Calendar) Donnerstag
+de Name of weekday 05 (Islamic Calendar) Freitag
+de Name of weekday 06 (Islamic Calendar) Samstag
+de Name of weekday 07 (Islamic Calendar) Sonntag
+de_AT Language endonym Deutsch
+de_AT Country endonym Österreich
+de_AT Floating Point Number -123.456.789,012
+de_AT Percent value -1.234,5679 %
+de_AT Currency value € 1.234,56
+de_AT Negative Currency value -€ 1.234,56
+de_AT Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_AT Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_AT Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_AT Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_AT Date and time short (Islamic Calendar) 18.07.29 12:31
+de_AT Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_AT Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_AT Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_AT Name of month 01 (Gregorian Calendar) Jänner
+de_AT Name of month 02 (Gregorian Calendar) Februar
+de_AT Name of month 03 (Gregorian Calendar) März
+de_AT Name of month 04 (Gregorian Calendar) April
+de_AT Name of month 05 (Gregorian Calendar) Mai
+de_AT Name of month 06 (Gregorian Calendar) Juni
+de_AT Name of month 07 (Gregorian Calendar) Juli
+de_AT Name of month 08 (Gregorian Calendar) August
+de_AT Name of month 09 (Gregorian Calendar) September
+de_AT Name of month 10 (Gregorian Calendar) Oktober
+de_AT Name of month 11 (Gregorian Calendar) November
+de_AT Name of month 12 (Gregorian Calendar) Dezember
+de_AT Name of month 01 (Islamic Calendar) Muharram
+de_AT Name of month 02 (Islamic Calendar) Safar
+de_AT Name of month 03 (Islamic Calendar) Rabiʻ I
+de_AT Name of month 04 (Islamic Calendar) Rabiʻ II
+de_AT Name of month 05 (Islamic Calendar) Jumada I
+de_AT Name of month 06 (Islamic Calendar) Jumada II
+de_AT Name of month 07 (Islamic Calendar) Rajab
+de_AT Name of month 08 (Islamic Calendar) Shaʻban
+de_AT Name of month 09 (Islamic Calendar) Ramadan
+de_AT Name of month 10 (Islamic Calendar) Shawwal
+de_AT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_AT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_AT Name of weekday 01 (Gregorian Calendar) Montag
+de_AT Name of weekday 02 (Gregorian Calendar) Dienstag
+de_AT Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_AT Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_AT Name of weekday 05 (Gregorian Calendar) Freitag
+de_AT Name of weekday 06 (Gregorian Calendar) Samstag
+de_AT Name of weekday 07 (Gregorian Calendar) Sonntag
+de_AT Name of weekday 01 (Islamic Calendar) Montag
+de_AT Name of weekday 02 (Islamic Calendar) Dienstag
+de_AT Name of weekday 03 (Islamic Calendar) Mittwoch
+de_AT Name of weekday 04 (Islamic Calendar) Donnerstag
+de_AT Name of weekday 05 (Islamic Calendar) Freitag
+de_AT Name of weekday 06 (Islamic Calendar) Samstag
+de_AT Name of weekday 07 (Islamic Calendar) Sonntag
+de_BE Language endonym Deutsch
+de_BE Country endonym Belgien
+de_BE Floating Point Number -123.456.789,012
+de_BE Percent value -1.234,5679 %
+de_BE Currency value 1.234,56 €
+de_BE Negative Currency value -1.234,56 €
+de_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+de_BE Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_BE Date and time long (Gregorian Calendar) 21 Juli 2008 12:31:00 GMT+00:00
+de_BE Date and time full (Gregorian Calendar) Montag 21 Juli 2008 12 h 31 min 00 s GMT+00:00
+de_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+de_BE Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_BE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+de_BE Date and time full (Islamic Calendar) Montag 18 Rajab 1429 12 h 31 min 00 s GMT+00:00
+de_BE Name of month 01 (Gregorian Calendar) Januar
+de_BE Name of month 02 (Gregorian Calendar) Februar
+de_BE Name of month 03 (Gregorian Calendar) März
+de_BE Name of month 04 (Gregorian Calendar) April
+de_BE Name of month 05 (Gregorian Calendar) Mai
+de_BE Name of month 06 (Gregorian Calendar) Juni
+de_BE Name of month 07 (Gregorian Calendar) Juli
+de_BE Name of month 08 (Gregorian Calendar) August
+de_BE Name of month 09 (Gregorian Calendar) September
+de_BE Name of month 10 (Gregorian Calendar) Oktober
+de_BE Name of month 11 (Gregorian Calendar) November
+de_BE Name of month 12 (Gregorian Calendar) Dezember
+de_BE Name of month 01 (Islamic Calendar) Muharram
+de_BE Name of month 02 (Islamic Calendar) Safar
+de_BE Name of month 03 (Islamic Calendar) Rabiʻ I
+de_BE Name of month 04 (Islamic Calendar) Rabiʻ II
+de_BE Name of month 05 (Islamic Calendar) Jumada I
+de_BE Name of month 06 (Islamic Calendar) Jumada II
+de_BE Name of month 07 (Islamic Calendar) Rajab
+de_BE Name of month 08 (Islamic Calendar) Shaʻban
+de_BE Name of month 09 (Islamic Calendar) Ramadan
+de_BE Name of month 10 (Islamic Calendar) Shawwal
+de_BE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_BE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_BE Name of weekday 01 (Gregorian Calendar) Montag
+de_BE Name of weekday 02 (Gregorian Calendar) Dienstag
+de_BE Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_BE Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_BE Name of weekday 05 (Gregorian Calendar) Freitag
+de_BE Name of weekday 06 (Gregorian Calendar) Samstag
+de_BE Name of weekday 07 (Gregorian Calendar) Sonntag
+de_BE Name of weekday 01 (Islamic Calendar) Montag
+de_BE Name of weekday 02 (Islamic Calendar) Dienstag
+de_BE Name of weekday 03 (Islamic Calendar) Mittwoch
+de_BE Name of weekday 04 (Islamic Calendar) Donnerstag
+de_BE Name of weekday 05 (Islamic Calendar) Freitag
+de_BE Name of weekday 06 (Islamic Calendar) Samstag
+de_BE Name of weekday 07 (Islamic Calendar) Sonntag
+de_CH Language endonym de
+de_CH Country endonym CH
+de_CH Floating Point Number -123'456'789.012
+de_CH Percent value -1'234.5679 %
+de_CH Currency value € 1'234.56
+de_CH Negative Currency value €-1'234.56
+de_CH Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_CH Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_CH Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_CH Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_CH Date and time short (Islamic Calendar) 18.07.29 12:31
+de_CH Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_CH Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_CH Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_CH Name of month 01 (Gregorian Calendar) Januar
+de_CH Name of month 02 (Gregorian Calendar) Februar
+de_CH Name of month 03 (Gregorian Calendar) März
+de_CH Name of month 04 (Gregorian Calendar) April
+de_CH Name of month 05 (Gregorian Calendar) Mai
+de_CH Name of month 06 (Gregorian Calendar) Juni
+de_CH Name of month 07 (Gregorian Calendar) Juli
+de_CH Name of month 08 (Gregorian Calendar) August
+de_CH Name of month 09 (Gregorian Calendar) September
+de_CH Name of month 10 (Gregorian Calendar) Oktober
+de_CH Name of month 11 (Gregorian Calendar) November
+de_CH Name of month 12 (Gregorian Calendar) Dezember
+de_CH Name of month 01 (Islamic Calendar) Muharram
+de_CH Name of month 02 (Islamic Calendar) Safar
+de_CH Name of month 03 (Islamic Calendar) Rabiʻ I
+de_CH Name of month 04 (Islamic Calendar) Rabiʻ II
+de_CH Name of month 05 (Islamic Calendar) Jumada I
+de_CH Name of month 06 (Islamic Calendar) Jumada II
+de_CH Name of month 07 (Islamic Calendar) Rajab
+de_CH Name of month 08 (Islamic Calendar) Shaʻban
+de_CH Name of month 09 (Islamic Calendar) Ramadan
+de_CH Name of month 10 (Islamic Calendar) Shawwal
+de_CH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_CH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_CH Name of weekday 01 (Gregorian Calendar) Montag
+de_CH Name of weekday 02 (Gregorian Calendar) Dienstag
+de_CH Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_CH Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_CH Name of weekday 05 (Gregorian Calendar) Freitag
+de_CH Name of weekday 06 (Gregorian Calendar) Samstag
+de_CH Name of weekday 07 (Gregorian Calendar) Sonntag
+de_CH Name of weekday 01 (Islamic Calendar) Montag
+de_CH Name of weekday 02 (Islamic Calendar) Dienstag
+de_CH Name of weekday 03 (Islamic Calendar) Mittwoch
+de_CH Name of weekday 04 (Islamic Calendar) Donnerstag
+de_CH Name of weekday 05 (Islamic Calendar) Freitag
+de_CH Name of weekday 06 (Islamic Calendar) Samstag
+de_CH Name of weekday 07 (Islamic Calendar) Sonntag
+de_DE Language endonym Deutsch
+de_DE Country endonym Deutschland
+de_DE Floating Point Number -123.456.789,012
+de_DE Percent value -1.234,5679 %
+de_DE Currency value 1.234,56 €
+de_DE Negative Currency value -1.234,56 €
+de_DE Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_DE Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_DE Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_DE Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_DE Date and time short (Islamic Calendar) 18.07.29 12:31
+de_DE Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_DE Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_DE Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_DE Name of month 01 (Gregorian Calendar) Januar
+de_DE Name of month 02 (Gregorian Calendar) Februar
+de_DE Name of month 03 (Gregorian Calendar) März
+de_DE Name of month 04 (Gregorian Calendar) April
+de_DE Name of month 05 (Gregorian Calendar) Mai
+de_DE Name of month 06 (Gregorian Calendar) Juni
+de_DE Name of month 07 (Gregorian Calendar) Juli
+de_DE Name of month 08 (Gregorian Calendar) August
+de_DE Name of month 09 (Gregorian Calendar) September
+de_DE Name of month 10 (Gregorian Calendar) Oktober
+de_DE Name of month 11 (Gregorian Calendar) November
+de_DE Name of month 12 (Gregorian Calendar) Dezember
+de_DE Name of month 01 (Islamic Calendar) Muharram
+de_DE Name of month 02 (Islamic Calendar) Safar
+de_DE Name of month 03 (Islamic Calendar) Rabiʻ I
+de_DE Name of month 04 (Islamic Calendar) Rabiʻ II
+de_DE Name of month 05 (Islamic Calendar) Jumada I
+de_DE Name of month 06 (Islamic Calendar) Jumada II
+de_DE Name of month 07 (Islamic Calendar) Rajab
+de_DE Name of month 08 (Islamic Calendar) Shaʻban
+de_DE Name of month 09 (Islamic Calendar) Ramadan
+de_DE Name of month 10 (Islamic Calendar) Shawwal
+de_DE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_DE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_DE Name of weekday 01 (Gregorian Calendar) Montag
+de_DE Name of weekday 02 (Gregorian Calendar) Dienstag
+de_DE Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_DE Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_DE Name of weekday 05 (Gregorian Calendar) Freitag
+de_DE Name of weekday 06 (Gregorian Calendar) Samstag
+de_DE Name of weekday 07 (Gregorian Calendar) Sonntag
+de_DE Name of weekday 01 (Islamic Calendar) Montag
+de_DE Name of weekday 02 (Islamic Calendar) Dienstag
+de_DE Name of weekday 03 (Islamic Calendar) Mittwoch
+de_DE Name of weekday 04 (Islamic Calendar) Donnerstag
+de_DE Name of weekday 05 (Islamic Calendar) Freitag
+de_DE Name of weekday 06 (Islamic Calendar) Samstag
+de_DE Name of weekday 07 (Islamic Calendar) Sonntag
+de_LI Language endonym Deutsch
+de_LI Country endonym Liechtenstein
+de_LI Floating Point Number -123'456'789.012
+de_LI Percent value -1'234.5679 %
+de_LI Currency value € 1'234.56
+de_LI Negative Currency value -€ 1'234.56
+de_LI Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_LI Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_LI Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_LI Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_LI Date and time short (Islamic Calendar) 18.07.29 12:31
+de_LI Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_LI Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_LI Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_LI Name of month 01 (Gregorian Calendar) Januar
+de_LI Name of month 02 (Gregorian Calendar) Februar
+de_LI Name of month 03 (Gregorian Calendar) März
+de_LI Name of month 04 (Gregorian Calendar) April
+de_LI Name of month 05 (Gregorian Calendar) Mai
+de_LI Name of month 06 (Gregorian Calendar) Juni
+de_LI Name of month 07 (Gregorian Calendar) Juli
+de_LI Name of month 08 (Gregorian Calendar) August
+de_LI Name of month 09 (Gregorian Calendar) September
+de_LI Name of month 10 (Gregorian Calendar) Oktober
+de_LI Name of month 11 (Gregorian Calendar) November
+de_LI Name of month 12 (Gregorian Calendar) Dezember
+de_LI Name of month 01 (Islamic Calendar) Muharram
+de_LI Name of month 02 (Islamic Calendar) Safar
+de_LI Name of month 03 (Islamic Calendar) Rabiʻ I
+de_LI Name of month 04 (Islamic Calendar) Rabiʻ II
+de_LI Name of month 05 (Islamic Calendar) Jumada I
+de_LI Name of month 06 (Islamic Calendar) Jumada II
+de_LI Name of month 07 (Islamic Calendar) Rajab
+de_LI Name of month 08 (Islamic Calendar) Shaʻban
+de_LI Name of month 09 (Islamic Calendar) Ramadan
+de_LI Name of month 10 (Islamic Calendar) Shawwal
+de_LI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_LI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_LI Name of weekday 01 (Gregorian Calendar) Montag
+de_LI Name of weekday 02 (Gregorian Calendar) Dienstag
+de_LI Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_LI Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_LI Name of weekday 05 (Gregorian Calendar) Freitag
+de_LI Name of weekday 06 (Gregorian Calendar) Samstag
+de_LI Name of weekday 07 (Gregorian Calendar) Sonntag
+de_LI Name of weekday 01 (Islamic Calendar) Montag
+de_LI Name of weekday 02 (Islamic Calendar) Dienstag
+de_LI Name of weekday 03 (Islamic Calendar) Mittwoch
+de_LI Name of weekday 04 (Islamic Calendar) Donnerstag
+de_LI Name of weekday 05 (Islamic Calendar) Freitag
+de_LI Name of weekday 06 (Islamic Calendar) Samstag
+de_LI Name of weekday 07 (Islamic Calendar) Sonntag
+de_LU Language endonym Deutsch
+de_LU Country endonym Luxemburg
+de_LU Floating Point Number -123.456.789,012
+de_LU Percent value -1.234,5679 %
+de_LU Currency value 1.234,56 €
+de_LU Negative Currency value -1.234,56 €
+de_LU Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_LU Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_LU Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_LU Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_LU Date and time short (Islamic Calendar) 18.07.29 12:31
+de_LU Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_LU Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_LU Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_LU Name of month 01 (Gregorian Calendar) Januar
+de_LU Name of month 02 (Gregorian Calendar) Februar
+de_LU Name of month 03 (Gregorian Calendar) März
+de_LU Name of month 04 (Gregorian Calendar) April
+de_LU Name of month 05 (Gregorian Calendar) Mai
+de_LU Name of month 06 (Gregorian Calendar) Juni
+de_LU Name of month 07 (Gregorian Calendar) Juli
+de_LU Name of month 08 (Gregorian Calendar) August
+de_LU Name of month 09 (Gregorian Calendar) September
+de_LU Name of month 10 (Gregorian Calendar) Oktober
+de_LU Name of month 11 (Gregorian Calendar) November
+de_LU Name of month 12 (Gregorian Calendar) Dezember
+de_LU Name of month 01 (Islamic Calendar) Muharram
+de_LU Name of month 02 (Islamic Calendar) Safar
+de_LU Name of month 03 (Islamic Calendar) Rabiʻ I
+de_LU Name of month 04 (Islamic Calendar) Rabiʻ II
+de_LU Name of month 05 (Islamic Calendar) Jumada I
+de_LU Name of month 06 (Islamic Calendar) Jumada II
+de_LU Name of month 07 (Islamic Calendar) Rajab
+de_LU Name of month 08 (Islamic Calendar) Shaʻban
+de_LU Name of month 09 (Islamic Calendar) Ramadan
+de_LU Name of month 10 (Islamic Calendar) Shawwal
+de_LU Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_LU Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_LU Name of weekday 01 (Gregorian Calendar) Montag
+de_LU Name of weekday 02 (Gregorian Calendar) Dienstag
+de_LU Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_LU Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_LU Name of weekday 05 (Gregorian Calendar) Freitag
+de_LU Name of weekday 06 (Gregorian Calendar) Samstag
+de_LU Name of weekday 07 (Gregorian Calendar) Sonntag
+de_LU Name of weekday 01 (Islamic Calendar) Montag
+de_LU Name of weekday 02 (Islamic Calendar) Dienstag
+de_LU Name of weekday 03 (Islamic Calendar) Mittwoch
+de_LU Name of weekday 04 (Islamic Calendar) Donnerstag
+de_LU Name of weekday 05 (Islamic Calendar) Freitag
+de_LU Name of weekday 06 (Islamic Calendar) Samstag
+de_LU Name of weekday 07 (Islamic Calendar) Sonntag
+el Language endonym Ελληνικά
+el Country endonym
+el Floating Point Number -123.456.789,012
+el Percent value -1.234,5679%
+el Currency value 1.234,56 €
+el Negative Currency value -1.234,56 €
+el Date and time short (Gregorian Calendar) 21/07/2008 12:31 μ.μ.
+el Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el Date and time short (Islamic Calendar) 18/07/1429 12:31 μ.μ.
+el Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ.
+el Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el Name of month 03 (Gregorian Calendar) Μαρτίου
+el Name of month 04 (Gregorian Calendar) Απριλίου
+el Name of month 05 (Gregorian Calendar) Μαΐου
+el Name of month 06 (Gregorian Calendar) Ιουνίου
+el Name of month 07 (Gregorian Calendar) Ιουλίου
+el Name of month 08 (Gregorian Calendar) Αυγούστου
+el Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el Name of month 01 (Islamic Calendar) Muharram
+el Name of month 02 (Islamic Calendar) Safar
+el Name of month 03 (Islamic Calendar) Rabiʻ I
+el Name of month 04 (Islamic Calendar) Rabiʻ II
+el Name of month 05 (Islamic Calendar) Jumada I
+el Name of month 06 (Islamic Calendar) Jumada II
+el Name of month 07 (Islamic Calendar) Rajab
+el Name of month 08 (Islamic Calendar) Shaʻban
+el Name of month 09 (Islamic Calendar) Ramadan
+el Name of month 10 (Islamic Calendar) Shawwal
+el Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el Name of weekday 02 (Gregorian Calendar) Τρίτη
+el Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el Name of weekday 06 (Gregorian Calendar) Σάββατο
+el Name of weekday 07 (Gregorian Calendar) Κυριακή
+el Name of weekday 01 (Islamic Calendar) Δευτέρα
+el Name of weekday 02 (Islamic Calendar) Τρίτη
+el Name of weekday 03 (Islamic Calendar) Τετάρτη
+el Name of weekday 04 (Islamic Calendar) Πέμπτη
+el Name of weekday 05 (Islamic Calendar) Παρασκευή
+el Name of weekday 06 (Islamic Calendar) Σάββατο
+el Name of weekday 07 (Islamic Calendar) Κυριακή
+el_CY Language endonym Ελληνικά
+el_CY Country endonym Κύπρος
+el_CY Floating Point Number -123.456.789,012
+el_CY Percent value -1.234,5679%
+el_CY Currency value €1.234,56
+el_CY Negative Currency value -€1.234,56
+el_CY Date and time short (Gregorian Calendar) 21/07/2008 12:31 μ.μ.
+el_CY Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el_CY Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el_CY Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el_CY Date and time short (Islamic Calendar) 18/07/1429 12:31 μ.μ.
+el_CY Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ.
+el_CY Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el_CY Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el_CY Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el_CY Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el_CY Name of month 03 (Gregorian Calendar) Μαρτίου
+el_CY Name of month 04 (Gregorian Calendar) Απριλίου
+el_CY Name of month 05 (Gregorian Calendar) Μαΐου
+el_CY Name of month 06 (Gregorian Calendar) Ιουνίου
+el_CY Name of month 07 (Gregorian Calendar) Ιουλίου
+el_CY Name of month 08 (Gregorian Calendar) Αυγούστου
+el_CY Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el_CY Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el_CY Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el_CY Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el_CY Name of month 01 (Islamic Calendar) Muharram
+el_CY Name of month 02 (Islamic Calendar) Safar
+el_CY Name of month 03 (Islamic Calendar) Rabiʻ I
+el_CY Name of month 04 (Islamic Calendar) Rabiʻ II
+el_CY Name of month 05 (Islamic Calendar) Jumada I
+el_CY Name of month 06 (Islamic Calendar) Jumada II
+el_CY Name of month 07 (Islamic Calendar) Rajab
+el_CY Name of month 08 (Islamic Calendar) Shaʻban
+el_CY Name of month 09 (Islamic Calendar) Ramadan
+el_CY Name of month 10 (Islamic Calendar) Shawwal
+el_CY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el_CY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el_CY Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el_CY Name of weekday 02 (Gregorian Calendar) Τρίτη
+el_CY Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el_CY Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el_CY Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el_CY Name of weekday 06 (Gregorian Calendar) Σάββατο
+el_CY Name of weekday 07 (Gregorian Calendar) Κυριακή
+el_CY Name of weekday 01 (Islamic Calendar) Δευτέρα
+el_CY Name of weekday 02 (Islamic Calendar) Τρίτη
+el_CY Name of weekday 03 (Islamic Calendar) Τετάρτη
+el_CY Name of weekday 04 (Islamic Calendar) Πέμπτη
+el_CY Name of weekday 05 (Islamic Calendar) Παρασκευή
+el_CY Name of weekday 06 (Islamic Calendar) Σάββατο
+el_CY Name of weekday 07 (Islamic Calendar) Κυριακή
+el_GR Language endonym Ελληνικά
+el_GR Country endonym Ελλάδα
+el_GR Floating Point Number -123.456.789,012
+el_GR Percent value -1.234,5679%
+el_GR Currency value 1.234,56 €
+el_GR Negative Currency value -1.234,56 €
+el_GR Date and time short (Gregorian Calendar) 21/07/2008 12:31 μ.μ.
+el_GR Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el_GR Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el_GR Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+0000
+el_GR Date and time short (Islamic Calendar) 18/07/1429 12:31 μ.μ.
+el_GR Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ.
+el_GR Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el_GR Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+0000
+el_GR Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el_GR Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el_GR Name of month 03 (Gregorian Calendar) Μαρτίου
+el_GR Name of month 04 (Gregorian Calendar) Απριλίου
+el_GR Name of month 05 (Gregorian Calendar) Μαΐου
+el_GR Name of month 06 (Gregorian Calendar) Ιουνίου
+el_GR Name of month 07 (Gregorian Calendar) Ιουλίου
+el_GR Name of month 08 (Gregorian Calendar) Αυγούστου
+el_GR Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el_GR Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el_GR Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el_GR Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el_GR Name of month 01 (Islamic Calendar) Muharram
+el_GR Name of month 02 (Islamic Calendar) Safar
+el_GR Name of month 03 (Islamic Calendar) Rabiʻ I
+el_GR Name of month 04 (Islamic Calendar) Rabiʻ II
+el_GR Name of month 05 (Islamic Calendar) Jumada I
+el_GR Name of month 06 (Islamic Calendar) Jumada II
+el_GR Name of month 07 (Islamic Calendar) Rajab
+el_GR Name of month 08 (Islamic Calendar) Shaʻban
+el_GR Name of month 09 (Islamic Calendar) Ramadan
+el_GR Name of month 10 (Islamic Calendar) Shawwal
+el_GR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el_GR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el_GR Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el_GR Name of weekday 02 (Gregorian Calendar) Τρίτη
+el_GR Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el_GR Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el_GR Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el_GR Name of weekday 06 (Gregorian Calendar) Σάββατο
+el_GR Name of weekday 07 (Gregorian Calendar) Κυριακή
+el_GR Name of weekday 01 (Islamic Calendar) Δευτέρα
+el_GR Name of weekday 02 (Islamic Calendar) Τρίτη
+el_GR Name of weekday 03 (Islamic Calendar) Τετάρτη
+el_GR Name of weekday 04 (Islamic Calendar) Πέμπτη
+el_GR Name of weekday 05 (Islamic Calendar) Παρασκευή
+el_GR Name of weekday 06 (Islamic Calendar) Σάββατο
+el_GR Name of weekday 07 (Islamic Calendar) Κυριακή
+en Language endonym English
+en Country endonym
+en Floating Point Number -123,456,789.012
+en Percent value -1,234.5679%
+en Currency value €1,234.56
+en Negative Currency value (€1,234.56)
+en Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en Name of month 01 (Gregorian Calendar) January
+en Name of month 02 (Gregorian Calendar) February
+en Name of month 03 (Gregorian Calendar) March
+en Name of month 04 (Gregorian Calendar) April
+en Name of month 05 (Gregorian Calendar) May
+en Name of month 06 (Gregorian Calendar) June
+en Name of month 07 (Gregorian Calendar) July
+en Name of month 08 (Gregorian Calendar) August
+en Name of month 09 (Gregorian Calendar) September
+en Name of month 10 (Gregorian Calendar) October
+en Name of month 11 (Gregorian Calendar) November
+en Name of month 12 (Gregorian Calendar) December
+en Name of month 01 (Islamic Calendar) Muharram
+en Name of month 02 (Islamic Calendar) Safar
+en Name of month 03 (Islamic Calendar) Rabiʻ I
+en Name of month 04 (Islamic Calendar) Rabiʻ II
+en Name of month 05 (Islamic Calendar) Jumada I
+en Name of month 06 (Islamic Calendar) Jumada II
+en Name of month 07 (Islamic Calendar) Rajab
+en Name of month 08 (Islamic Calendar) Shaʻban
+en Name of month 09 (Islamic Calendar) Ramadan
+en Name of month 10 (Islamic Calendar) Shawwal
+en Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en Name of weekday 01 (Gregorian Calendar) Monday
+en Name of weekday 02 (Gregorian Calendar) Tuesday
+en Name of weekday 03 (Gregorian Calendar) Wednesday
+en Name of weekday 04 (Gregorian Calendar) Thursday
+en Name of weekday 05 (Gregorian Calendar) Friday
+en Name of weekday 06 (Gregorian Calendar) Saturday
+en Name of weekday 07 (Gregorian Calendar) Sunday
+en Name of weekday 01 (Islamic Calendar) Monday
+en Name of weekday 02 (Islamic Calendar) Tuesday
+en Name of weekday 03 (Islamic Calendar) Wednesday
+en Name of weekday 04 (Islamic Calendar) Thursday
+en Name of weekday 05 (Islamic Calendar) Friday
+en Name of weekday 06 (Islamic Calendar) Saturday
+en Name of weekday 07 (Islamic Calendar) Sunday
+en_AU Language endonym English
+en_AU Country endonym Australia
+en_AU Floating Point Number -123,456,789.012
+en_AU Percent value -1,234.5679%
+en_AU Currency value €1,234.56
+en_AU Negative Currency value -€1,234.56
+en_AU Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_AU Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00 PM
+en_AU Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_AU Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 PM GMT+00:00
+en_AU Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_AU Date and time medium (Islamic Calendar) 18/07/1429 12:31:00 PM
+en_AU Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_AU Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_AU Name of month 01 (Gregorian Calendar) January
+en_AU Name of month 02 (Gregorian Calendar) February
+en_AU Name of month 03 (Gregorian Calendar) March
+en_AU Name of month 04 (Gregorian Calendar) April
+en_AU Name of month 05 (Gregorian Calendar) May
+en_AU Name of month 06 (Gregorian Calendar) June
+en_AU Name of month 07 (Gregorian Calendar) July
+en_AU Name of month 08 (Gregorian Calendar) August
+en_AU Name of month 09 (Gregorian Calendar) September
+en_AU Name of month 10 (Gregorian Calendar) October
+en_AU Name of month 11 (Gregorian Calendar) November
+en_AU Name of month 12 (Gregorian Calendar) December
+en_AU Name of month 01 (Islamic Calendar) Muharram
+en_AU Name of month 02 (Islamic Calendar) Safar
+en_AU Name of month 03 (Islamic Calendar) Rabiʻ I
+en_AU Name of month 04 (Islamic Calendar) Rabiʻ II
+en_AU Name of month 05 (Islamic Calendar) Jumada I
+en_AU Name of month 06 (Islamic Calendar) Jumada II
+en_AU Name of month 07 (Islamic Calendar) Rajab
+en_AU Name of month 08 (Islamic Calendar) Shaʻban
+en_AU Name of month 09 (Islamic Calendar) Ramadan
+en_AU Name of month 10 (Islamic Calendar) Shawwal
+en_AU Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_AU Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_AU Name of weekday 01 (Gregorian Calendar) Monday
+en_AU Name of weekday 02 (Gregorian Calendar) Tuesday
+en_AU Name of weekday 03 (Gregorian Calendar) Wednesday
+en_AU Name of weekday 04 (Gregorian Calendar) Thursday
+en_AU Name of weekday 05 (Gregorian Calendar) Friday
+en_AU Name of weekday 06 (Gregorian Calendar) Saturday
+en_AU Name of weekday 07 (Gregorian Calendar) Sunday
+en_AU Name of weekday 01 (Islamic Calendar) Monday
+en_AU Name of weekday 02 (Islamic Calendar) Tuesday
+en_AU Name of weekday 03 (Islamic Calendar) Wednesday
+en_AU Name of weekday 04 (Islamic Calendar) Thursday
+en_AU Name of weekday 05 (Islamic Calendar) Friday
+en_AU Name of weekday 06 (Islamic Calendar) Saturday
+en_AU Name of weekday 07 (Islamic Calendar) Sunday
+en_BE Language endonym English
+en_BE Country endonym Belgium
+en_BE Floating Point Number -123.456.789,012
+en_BE Percent value -1.234,5679%
+en_BE Currency value 1.234,56 €
+en_BE Negative Currency value -1.234,56 €
+en_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+en_BE Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_BE Date and time long (Gregorian Calendar) 21 Jul 2008 12:31:00 GMT+00:00
+en_BE Date and time full (Gregorian Calendar) Monday 21 July 2008 12 h 31 min 00 s GMT+00:00
+en_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+en_BE Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+en_BE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_BE Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12 h 31 min 00 s GMT+00:00
+en_BE Name of month 01 (Gregorian Calendar) January
+en_BE Name of month 02 (Gregorian Calendar) February
+en_BE Name of month 03 (Gregorian Calendar) March
+en_BE Name of month 04 (Gregorian Calendar) April
+en_BE Name of month 05 (Gregorian Calendar) May
+en_BE Name of month 06 (Gregorian Calendar) June
+en_BE Name of month 07 (Gregorian Calendar) July
+en_BE Name of month 08 (Gregorian Calendar) August
+en_BE Name of month 09 (Gregorian Calendar) September
+en_BE Name of month 10 (Gregorian Calendar) October
+en_BE Name of month 11 (Gregorian Calendar) November
+en_BE Name of month 12 (Gregorian Calendar) December
+en_BE Name of month 01 (Islamic Calendar) Muharram
+en_BE Name of month 02 (Islamic Calendar) Safar
+en_BE Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BE Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BE Name of month 05 (Islamic Calendar) Jumada I
+en_BE Name of month 06 (Islamic Calendar) Jumada II
+en_BE Name of month 07 (Islamic Calendar) Rajab
+en_BE Name of month 08 (Islamic Calendar) Shaʻban
+en_BE Name of month 09 (Islamic Calendar) Ramadan
+en_BE Name of month 10 (Islamic Calendar) Shawwal
+en_BE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BE Name of weekday 01 (Gregorian Calendar) Monday
+en_BE Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BE Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BE Name of weekday 04 (Gregorian Calendar) Thursday
+en_BE Name of weekday 05 (Gregorian Calendar) Friday
+en_BE Name of weekday 06 (Gregorian Calendar) Saturday
+en_BE Name of weekday 07 (Gregorian Calendar) Sunday
+en_BE Name of weekday 01 (Islamic Calendar) Monday
+en_BE Name of weekday 02 (Islamic Calendar) Tuesday
+en_BE Name of weekday 03 (Islamic Calendar) Wednesday
+en_BE Name of weekday 04 (Islamic Calendar) Thursday
+en_BE Name of weekday 05 (Islamic Calendar) Friday
+en_BE Name of weekday 06 (Islamic Calendar) Saturday
+en_BE Name of weekday 07 (Islamic Calendar) Sunday
+en_BW Language endonym English
+en_BW Country endonym Botswana
+en_BW Floating Point Number -123,456,789.012
+en_BW Percent value -1,234.5679%
+en_BW Currency value €1,234.56
+en_BW Negative Currency value -€1,234.56
+en_BW Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_BW Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_BW Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_BW Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_BW Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_BW Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_BW Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_BW Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_BW Name of month 01 (Gregorian Calendar) January
+en_BW Name of month 02 (Gregorian Calendar) February
+en_BW Name of month 03 (Gregorian Calendar) March
+en_BW Name of month 04 (Gregorian Calendar) April
+en_BW Name of month 05 (Gregorian Calendar) May
+en_BW Name of month 06 (Gregorian Calendar) June
+en_BW Name of month 07 (Gregorian Calendar) July
+en_BW Name of month 08 (Gregorian Calendar) August
+en_BW Name of month 09 (Gregorian Calendar) September
+en_BW Name of month 10 (Gregorian Calendar) October
+en_BW Name of month 11 (Gregorian Calendar) November
+en_BW Name of month 12 (Gregorian Calendar) December
+en_BW Name of month 01 (Islamic Calendar) Muharram
+en_BW Name of month 02 (Islamic Calendar) Safar
+en_BW Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BW Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BW Name of month 05 (Islamic Calendar) Jumada I
+en_BW Name of month 06 (Islamic Calendar) Jumada II
+en_BW Name of month 07 (Islamic Calendar) Rajab
+en_BW Name of month 08 (Islamic Calendar) Shaʻban
+en_BW Name of month 09 (Islamic Calendar) Ramadan
+en_BW Name of month 10 (Islamic Calendar) Shawwal
+en_BW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BW Name of weekday 01 (Gregorian Calendar) Monday
+en_BW Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BW Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BW Name of weekday 04 (Gregorian Calendar) Thursday
+en_BW Name of weekday 05 (Gregorian Calendar) Friday
+en_BW Name of weekday 06 (Gregorian Calendar) Saturday
+en_BW Name of weekday 07 (Gregorian Calendar) Sunday
+en_BW Name of weekday 01 (Islamic Calendar) Monday
+en_BW Name of weekday 02 (Islamic Calendar) Tuesday
+en_BW Name of weekday 03 (Islamic Calendar) Wednesday
+en_BW Name of weekday 04 (Islamic Calendar) Thursday
+en_BW Name of weekday 05 (Islamic Calendar) Friday
+en_BW Name of weekday 06 (Islamic Calendar) Saturday
+en_BW Name of weekday 07 (Islamic Calendar) Sunday
+en_BZ Language endonym English
+en_BZ Country endonym Belize
+en_BZ Floating Point Number -123,456,789.012
+en_BZ Percent value -1,234.5679%
+en_BZ Currency value €1,234.56
+en_BZ Negative Currency value -€1,234.56
+en_BZ Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_BZ Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_BZ Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_BZ Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_BZ Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_BZ Date and time medium (Islamic Calendar) 18-Rajab-1429 12:31:00 PM
+en_BZ Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_BZ Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_BZ Name of month 01 (Gregorian Calendar) January
+en_BZ Name of month 02 (Gregorian Calendar) February
+en_BZ Name of month 03 (Gregorian Calendar) March
+en_BZ Name of month 04 (Gregorian Calendar) April
+en_BZ Name of month 05 (Gregorian Calendar) May
+en_BZ Name of month 06 (Gregorian Calendar) June
+en_BZ Name of month 07 (Gregorian Calendar) July
+en_BZ Name of month 08 (Gregorian Calendar) August
+en_BZ Name of month 09 (Gregorian Calendar) September
+en_BZ Name of month 10 (Gregorian Calendar) October
+en_BZ Name of month 11 (Gregorian Calendar) November
+en_BZ Name of month 12 (Gregorian Calendar) December
+en_BZ Name of month 01 (Islamic Calendar) Muharram
+en_BZ Name of month 02 (Islamic Calendar) Safar
+en_BZ Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BZ Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BZ Name of month 05 (Islamic Calendar) Jumada I
+en_BZ Name of month 06 (Islamic Calendar) Jumada II
+en_BZ Name of month 07 (Islamic Calendar) Rajab
+en_BZ Name of month 08 (Islamic Calendar) Shaʻban
+en_BZ Name of month 09 (Islamic Calendar) Ramadan
+en_BZ Name of month 10 (Islamic Calendar) Shawwal
+en_BZ Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BZ Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BZ Name of weekday 01 (Gregorian Calendar) Monday
+en_BZ Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BZ Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BZ Name of weekday 04 (Gregorian Calendar) Thursday
+en_BZ Name of weekday 05 (Gregorian Calendar) Friday
+en_BZ Name of weekday 06 (Gregorian Calendar) Saturday
+en_BZ Name of weekday 07 (Gregorian Calendar) Sunday
+en_BZ Name of weekday 01 (Islamic Calendar) Monday
+en_BZ Name of weekday 02 (Islamic Calendar) Tuesday
+en_BZ Name of weekday 03 (Islamic Calendar) Wednesday
+en_BZ Name of weekday 04 (Islamic Calendar) Thursday
+en_BZ Name of weekday 05 (Islamic Calendar) Friday
+en_BZ Name of weekday 06 (Islamic Calendar) Saturday
+en_BZ Name of weekday 07 (Islamic Calendar) Sunday
+en_CA Language endonym English
+en_CA Country endonym Canada
+en_CA Floating Point Number -123,456,789.012
+en_CA Percent value -1,234.5679%
+en_CA Currency value €1,234.56
+en_CA Negative Currency value (€1,234.56)
+en_CA Date and time short (Gregorian Calendar) 08-07-21 12:31 PM
+en_CA Date and time medium (Gregorian Calendar) 2008-07-21 12:31:00 PM
+en_CA Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_CA Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_CA Date and time short (Islamic Calendar) 29-07-18 12:31 PM
+en_CA Date and time medium (Islamic Calendar) 1429-07-18 12:31:00 PM
+en_CA Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_CA Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_CA Name of month 01 (Gregorian Calendar) January
+en_CA Name of month 02 (Gregorian Calendar) February
+en_CA Name of month 03 (Gregorian Calendar) March
+en_CA Name of month 04 (Gregorian Calendar) April
+en_CA Name of month 05 (Gregorian Calendar) May
+en_CA Name of month 06 (Gregorian Calendar) June
+en_CA Name of month 07 (Gregorian Calendar) July
+en_CA Name of month 08 (Gregorian Calendar) August
+en_CA Name of month 09 (Gregorian Calendar) September
+en_CA Name of month 10 (Gregorian Calendar) October
+en_CA Name of month 11 (Gregorian Calendar) November
+en_CA Name of month 12 (Gregorian Calendar) December
+en_CA Name of month 01 (Islamic Calendar) Muharram
+en_CA Name of month 02 (Islamic Calendar) Safar
+en_CA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_CA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_CA Name of month 05 (Islamic Calendar) Jumada I
+en_CA Name of month 06 (Islamic Calendar) Jumada II
+en_CA Name of month 07 (Islamic Calendar) Rajab
+en_CA Name of month 08 (Islamic Calendar) Shaʻban
+en_CA Name of month 09 (Islamic Calendar) Ramadan
+en_CA Name of month 10 (Islamic Calendar) Shawwal
+en_CA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_CA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_CA Name of weekday 01 (Gregorian Calendar) Monday
+en_CA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_CA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_CA Name of weekday 04 (Gregorian Calendar) Thursday
+en_CA Name of weekday 05 (Gregorian Calendar) Friday
+en_CA Name of weekday 06 (Gregorian Calendar) Saturday
+en_CA Name of weekday 07 (Gregorian Calendar) Sunday
+en_CA Name of weekday 01 (Islamic Calendar) Monday
+en_CA Name of weekday 02 (Islamic Calendar) Tuesday
+en_CA Name of weekday 03 (Islamic Calendar) Wednesday
+en_CA Name of weekday 04 (Islamic Calendar) Thursday
+en_CA Name of weekday 05 (Islamic Calendar) Friday
+en_CA Name of weekday 06 (Islamic Calendar) Saturday
+en_CA Name of weekday 07 (Islamic Calendar) Sunday
+en_GB Language endonym English
+en_GB Country endonym United Kingdom
+en_GB Floating Point Number -123,456,789.012
+en_GB Percent value -1,234.5679%
+en_GB Currency value €1,234.56
+en_GB Negative Currency value -€1,234.56
+en_GB Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_GB Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_GB Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_GB Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 GMT+00:00
+en_GB Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_GB Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+en_GB Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_GB Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 GMT+00:00
+en_GB Name of month 01 (Gregorian Calendar) January
+en_GB Name of month 02 (Gregorian Calendar) February
+en_GB Name of month 03 (Gregorian Calendar) March
+en_GB Name of month 04 (Gregorian Calendar) April
+en_GB Name of month 05 (Gregorian Calendar) May
+en_GB Name of month 06 (Gregorian Calendar) June
+en_GB Name of month 07 (Gregorian Calendar) July
+en_GB Name of month 08 (Gregorian Calendar) August
+en_GB Name of month 09 (Gregorian Calendar) September
+en_GB Name of month 10 (Gregorian Calendar) October
+en_GB Name of month 11 (Gregorian Calendar) November
+en_GB Name of month 12 (Gregorian Calendar) December
+en_GB Name of month 01 (Islamic Calendar) Muharram
+en_GB Name of month 02 (Islamic Calendar) Safar
+en_GB Name of month 03 (Islamic Calendar) Rabiʻ I
+en_GB Name of month 04 (Islamic Calendar) Rabiʻ II
+en_GB Name of month 05 (Islamic Calendar) Jumada I
+en_GB Name of month 06 (Islamic Calendar) Jumada II
+en_GB Name of month 07 (Islamic Calendar) Rajab
+en_GB Name of month 08 (Islamic Calendar) Shaʻban
+en_GB Name of month 09 (Islamic Calendar) Ramadan
+en_GB Name of month 10 (Islamic Calendar) Shawwal
+en_GB Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_GB Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_GB Name of weekday 01 (Gregorian Calendar) Monday
+en_GB Name of weekday 02 (Gregorian Calendar) Tuesday
+en_GB Name of weekday 03 (Gregorian Calendar) Wednesday
+en_GB Name of weekday 04 (Gregorian Calendar) Thursday
+en_GB Name of weekday 05 (Gregorian Calendar) Friday
+en_GB Name of weekday 06 (Gregorian Calendar) Saturday
+en_GB Name of weekday 07 (Gregorian Calendar) Sunday
+en_GB Name of weekday 01 (Islamic Calendar) Monday
+en_GB Name of weekday 02 (Islamic Calendar) Tuesday
+en_GB Name of weekday 03 (Islamic Calendar) Wednesday
+en_GB Name of weekday 04 (Islamic Calendar) Thursday
+en_GB Name of weekday 05 (Islamic Calendar) Friday
+en_GB Name of weekday 06 (Islamic Calendar) Saturday
+en_GB Name of weekday 07 (Islamic Calendar) Sunday
+en_HK Language endonym English
+en_HK Country endonym Hong Kong SAR China
+en_HK Floating Point Number -123,456,789.012
+en_HK Percent value -1,234.5679%
+en_HK Currency value €1,234.56
+en_HK Negative Currency value (€1,234.56)
+en_HK Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_HK Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_HK Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_HK Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_HK Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_HK Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_HK Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_HK Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_HK Name of month 01 (Gregorian Calendar) January
+en_HK Name of month 02 (Gregorian Calendar) February
+en_HK Name of month 03 (Gregorian Calendar) March
+en_HK Name of month 04 (Gregorian Calendar) April
+en_HK Name of month 05 (Gregorian Calendar) May
+en_HK Name of month 06 (Gregorian Calendar) June
+en_HK Name of month 07 (Gregorian Calendar) July
+en_HK Name of month 08 (Gregorian Calendar) August
+en_HK Name of month 09 (Gregorian Calendar) September
+en_HK Name of month 10 (Gregorian Calendar) October
+en_HK Name of month 11 (Gregorian Calendar) November
+en_HK Name of month 12 (Gregorian Calendar) December
+en_HK Name of month 01 (Islamic Calendar) Muharram
+en_HK Name of month 02 (Islamic Calendar) Safar
+en_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+en_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+en_HK Name of month 05 (Islamic Calendar) Jumada I
+en_HK Name of month 06 (Islamic Calendar) Jumada II
+en_HK Name of month 07 (Islamic Calendar) Rajab
+en_HK Name of month 08 (Islamic Calendar) Shaʻban
+en_HK Name of month 09 (Islamic Calendar) Ramadan
+en_HK Name of month 10 (Islamic Calendar) Shawwal
+en_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_HK Name of weekday 01 (Gregorian Calendar) Monday
+en_HK Name of weekday 02 (Gregorian Calendar) Tuesday
+en_HK Name of weekday 03 (Gregorian Calendar) Wednesday
+en_HK Name of weekday 04 (Gregorian Calendar) Thursday
+en_HK Name of weekday 05 (Gregorian Calendar) Friday
+en_HK Name of weekday 06 (Gregorian Calendar) Saturday
+en_HK Name of weekday 07 (Gregorian Calendar) Sunday
+en_HK Name of weekday 01 (Islamic Calendar) Monday
+en_HK Name of weekday 02 (Islamic Calendar) Tuesday
+en_HK Name of weekday 03 (Islamic Calendar) Wednesday
+en_HK Name of weekday 04 (Islamic Calendar) Thursday
+en_HK Name of weekday 05 (Islamic Calendar) Friday
+en_HK Name of weekday 06 (Islamic Calendar) Saturday
+en_HK Name of weekday 07 (Islamic Calendar) Sunday
+en_IE Language endonym English
+en_IE Country endonym Ireland
+en_IE Floating Point Number -123,456,789.012
+en_IE Percent value -1,234.5679%
+en_IE Currency value €1,234.56
+en_IE Negative Currency value -€1,234.56
+en_IE Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_IE Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_IE Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_IE Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 GMT+00:00
+en_IE Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_IE Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+en_IE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_IE Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 GMT+00:00
+en_IE Name of month 01 (Gregorian Calendar) January
+en_IE Name of month 02 (Gregorian Calendar) February
+en_IE Name of month 03 (Gregorian Calendar) March
+en_IE Name of month 04 (Gregorian Calendar) April
+en_IE Name of month 05 (Gregorian Calendar) May
+en_IE Name of month 06 (Gregorian Calendar) June
+en_IE Name of month 07 (Gregorian Calendar) July
+en_IE Name of month 08 (Gregorian Calendar) August
+en_IE Name of month 09 (Gregorian Calendar) September
+en_IE Name of month 10 (Gregorian Calendar) October
+en_IE Name of month 11 (Gregorian Calendar) November
+en_IE Name of month 12 (Gregorian Calendar) December
+en_IE Name of month 01 (Islamic Calendar) Muharram
+en_IE Name of month 02 (Islamic Calendar) Safar
+en_IE Name of month 03 (Islamic Calendar) Rabiʻ I
+en_IE Name of month 04 (Islamic Calendar) Rabiʻ II
+en_IE Name of month 05 (Islamic Calendar) Jumada I
+en_IE Name of month 06 (Islamic Calendar) Jumada II
+en_IE Name of month 07 (Islamic Calendar) Rajab
+en_IE Name of month 08 (Islamic Calendar) Shaʻban
+en_IE Name of month 09 (Islamic Calendar) Ramadan
+en_IE Name of month 10 (Islamic Calendar) Shawwal
+en_IE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_IE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_IE Name of weekday 01 (Gregorian Calendar) Monday
+en_IE Name of weekday 02 (Gregorian Calendar) Tuesday
+en_IE Name of weekday 03 (Gregorian Calendar) Wednesday
+en_IE Name of weekday 04 (Gregorian Calendar) Thursday
+en_IE Name of weekday 05 (Gregorian Calendar) Friday
+en_IE Name of weekday 06 (Gregorian Calendar) Saturday
+en_IE Name of weekday 07 (Gregorian Calendar) Sunday
+en_IE Name of weekday 01 (Islamic Calendar) Monday
+en_IE Name of weekday 02 (Islamic Calendar) Tuesday
+en_IE Name of weekday 03 (Islamic Calendar) Wednesday
+en_IE Name of weekday 04 (Islamic Calendar) Thursday
+en_IE Name of weekday 05 (Islamic Calendar) Friday
+en_IE Name of weekday 06 (Islamic Calendar) Saturday
+en_IE Name of weekday 07 (Islamic Calendar) Sunday
+en_IN Language endonym English
+en_IN Country endonym India
+en_IN Floating Point Number -12,34,56,789.012
+en_IN Percent value -1,234.5679%
+en_IN Currency value € 1,234.56
+en_IN Negative Currency value -€ 1,234.56
+en_IN Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_IN Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_IN Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_IN Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_IN Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_IN Date and time medium (Islamic Calendar) 18-Rajab-1429 12:31:00 PM
+en_IN Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_IN Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_IN Name of month 01 (Gregorian Calendar) January
+en_IN Name of month 02 (Gregorian Calendar) February
+en_IN Name of month 03 (Gregorian Calendar) March
+en_IN Name of month 04 (Gregorian Calendar) April
+en_IN Name of month 05 (Gregorian Calendar) May
+en_IN Name of month 06 (Gregorian Calendar) June
+en_IN Name of month 07 (Gregorian Calendar) July
+en_IN Name of month 08 (Gregorian Calendar) August
+en_IN Name of month 09 (Gregorian Calendar) September
+en_IN Name of month 10 (Gregorian Calendar) October
+en_IN Name of month 11 (Gregorian Calendar) November
+en_IN Name of month 12 (Gregorian Calendar) December
+en_IN Name of month 01 (Islamic Calendar) Muharram
+en_IN Name of month 02 (Islamic Calendar) Safar
+en_IN Name of month 03 (Islamic Calendar) Rabiʻ I
+en_IN Name of month 04 (Islamic Calendar) Rabiʻ II
+en_IN Name of month 05 (Islamic Calendar) Jumada I
+en_IN Name of month 06 (Islamic Calendar) Jumada II
+en_IN Name of month 07 (Islamic Calendar) Rajab
+en_IN Name of month 08 (Islamic Calendar) Shaʻban
+en_IN Name of month 09 (Islamic Calendar) Ramadan
+en_IN Name of month 10 (Islamic Calendar) Shawwal
+en_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_IN Name of weekday 01 (Gregorian Calendar) Monday
+en_IN Name of weekday 02 (Gregorian Calendar) Tuesday
+en_IN Name of weekday 03 (Gregorian Calendar) Wednesday
+en_IN Name of weekday 04 (Gregorian Calendar) Thursday
+en_IN Name of weekday 05 (Gregorian Calendar) Friday
+en_IN Name of weekday 06 (Gregorian Calendar) Saturday
+en_IN Name of weekday 07 (Gregorian Calendar) Sunday
+en_IN Name of weekday 01 (Islamic Calendar) Monday
+en_IN Name of weekday 02 (Islamic Calendar) Tuesday
+en_IN Name of weekday 03 (Islamic Calendar) Wednesday
+en_IN Name of weekday 04 (Islamic Calendar) Thursday
+en_IN Name of weekday 05 (Islamic Calendar) Friday
+en_IN Name of weekday 06 (Islamic Calendar) Saturday
+en_IN Name of weekday 07 (Islamic Calendar) Sunday
+en_JM Language endonym English
+en_JM Country endonym Jamaica
+en_JM Floating Point Number -123,456,789.012
+en_JM Percent value -1,234.5679%
+en_JM Currency value €1,234.56
+en_JM Negative Currency value -€1,234.56
+en_JM Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_JM Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_JM Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_JM Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_JM Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_JM Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_JM Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_JM Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_JM Name of month 01 (Gregorian Calendar) January
+en_JM Name of month 02 (Gregorian Calendar) February
+en_JM Name of month 03 (Gregorian Calendar) March
+en_JM Name of month 04 (Gregorian Calendar) April
+en_JM Name of month 05 (Gregorian Calendar) May
+en_JM Name of month 06 (Gregorian Calendar) June
+en_JM Name of month 07 (Gregorian Calendar) July
+en_JM Name of month 08 (Gregorian Calendar) August
+en_JM Name of month 09 (Gregorian Calendar) September
+en_JM Name of month 10 (Gregorian Calendar) October
+en_JM Name of month 11 (Gregorian Calendar) November
+en_JM Name of month 12 (Gregorian Calendar) December
+en_JM Name of month 01 (Islamic Calendar) Muharram
+en_JM Name of month 02 (Islamic Calendar) Safar
+en_JM Name of month 03 (Islamic Calendar) Rabiʻ I
+en_JM Name of month 04 (Islamic Calendar) Rabiʻ II
+en_JM Name of month 05 (Islamic Calendar) Jumada I
+en_JM Name of month 06 (Islamic Calendar) Jumada II
+en_JM Name of month 07 (Islamic Calendar) Rajab
+en_JM Name of month 08 (Islamic Calendar) Shaʻban
+en_JM Name of month 09 (Islamic Calendar) Ramadan
+en_JM Name of month 10 (Islamic Calendar) Shawwal
+en_JM Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_JM Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_JM Name of weekday 01 (Gregorian Calendar) Monday
+en_JM Name of weekday 02 (Gregorian Calendar) Tuesday
+en_JM Name of weekday 03 (Gregorian Calendar) Wednesday
+en_JM Name of weekday 04 (Gregorian Calendar) Thursday
+en_JM Name of weekday 05 (Gregorian Calendar) Friday
+en_JM Name of weekday 06 (Gregorian Calendar) Saturday
+en_JM Name of weekday 07 (Gregorian Calendar) Sunday
+en_JM Name of weekday 01 (Islamic Calendar) Monday
+en_JM Name of weekday 02 (Islamic Calendar) Tuesday
+en_JM Name of weekday 03 (Islamic Calendar) Wednesday
+en_JM Name of weekday 04 (Islamic Calendar) Thursday
+en_JM Name of weekday 05 (Islamic Calendar) Friday
+en_JM Name of weekday 06 (Islamic Calendar) Saturday
+en_JM Name of weekday 07 (Islamic Calendar) Sunday
+en_MH Language endonym English
+en_MH Country endonym Marshall Islands
+en_MH Floating Point Number -123,456,789.012
+en_MH Percent value -1,234.5679%
+en_MH Currency value €1,234.56
+en_MH Negative Currency value (€1,234.56)
+en_MH Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_MH Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_MH Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_MH Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_MH Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_MH Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_MH Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_MH Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_MH Name of month 01 (Gregorian Calendar) January
+en_MH Name of month 02 (Gregorian Calendar) February
+en_MH Name of month 03 (Gregorian Calendar) March
+en_MH Name of month 04 (Gregorian Calendar) April
+en_MH Name of month 05 (Gregorian Calendar) May
+en_MH Name of month 06 (Gregorian Calendar) June
+en_MH Name of month 07 (Gregorian Calendar) July
+en_MH Name of month 08 (Gregorian Calendar) August
+en_MH Name of month 09 (Gregorian Calendar) September
+en_MH Name of month 10 (Gregorian Calendar) October
+en_MH Name of month 11 (Gregorian Calendar) November
+en_MH Name of month 12 (Gregorian Calendar) December
+en_MH Name of month 01 (Islamic Calendar) Muharram
+en_MH Name of month 02 (Islamic Calendar) Safar
+en_MH Name of month 03 (Islamic Calendar) Rabiʻ I
+en_MH Name of month 04 (Islamic Calendar) Rabiʻ II
+en_MH Name of month 05 (Islamic Calendar) Jumada I
+en_MH Name of month 06 (Islamic Calendar) Jumada II
+en_MH Name of month 07 (Islamic Calendar) Rajab
+en_MH Name of month 08 (Islamic Calendar) Shaʻban
+en_MH Name of month 09 (Islamic Calendar) Ramadan
+en_MH Name of month 10 (Islamic Calendar) Shawwal
+en_MH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_MH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_MH Name of weekday 01 (Gregorian Calendar) Monday
+en_MH Name of weekday 02 (Gregorian Calendar) Tuesday
+en_MH Name of weekday 03 (Gregorian Calendar) Wednesday
+en_MH Name of weekday 04 (Gregorian Calendar) Thursday
+en_MH Name of weekday 05 (Gregorian Calendar) Friday
+en_MH Name of weekday 06 (Gregorian Calendar) Saturday
+en_MH Name of weekday 07 (Gregorian Calendar) Sunday
+en_MH Name of weekday 01 (Islamic Calendar) Monday
+en_MH Name of weekday 02 (Islamic Calendar) Tuesday
+en_MH Name of weekday 03 (Islamic Calendar) Wednesday
+en_MH Name of weekday 04 (Islamic Calendar) Thursday
+en_MH Name of weekday 05 (Islamic Calendar) Friday
+en_MH Name of weekday 06 (Islamic Calendar) Saturday
+en_MH Name of weekday 07 (Islamic Calendar) Sunday
+en_MT Language endonym English
+en_MT Country endonym Malta
+en_MT Floating Point Number -123,456,789.012
+en_MT Percent value -1,234.5679%
+en_MT Currency value €1,234.56
+en_MT Negative Currency value -€1,234.56
+en_MT Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_MT Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_MT Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_MT Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 GMT+00:00
+en_MT Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_MT Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+en_MT Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_MT Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 GMT+00:00
+en_MT Name of month 01 (Gregorian Calendar) January
+en_MT Name of month 02 (Gregorian Calendar) February
+en_MT Name of month 03 (Gregorian Calendar) March
+en_MT Name of month 04 (Gregorian Calendar) April
+en_MT Name of month 05 (Gregorian Calendar) May
+en_MT Name of month 06 (Gregorian Calendar) June
+en_MT Name of month 07 (Gregorian Calendar) July
+en_MT Name of month 08 (Gregorian Calendar) August
+en_MT Name of month 09 (Gregorian Calendar) September
+en_MT Name of month 10 (Gregorian Calendar) October
+en_MT Name of month 11 (Gregorian Calendar) November
+en_MT Name of month 12 (Gregorian Calendar) December
+en_MT Name of month 01 (Islamic Calendar) Muharram
+en_MT Name of month 02 (Islamic Calendar) Safar
+en_MT Name of month 03 (Islamic Calendar) Rabiʻ I
+en_MT Name of month 04 (Islamic Calendar) Rabiʻ II
+en_MT Name of month 05 (Islamic Calendar) Jumada I
+en_MT Name of month 06 (Islamic Calendar) Jumada II
+en_MT Name of month 07 (Islamic Calendar) Rajab
+en_MT Name of month 08 (Islamic Calendar) Shaʻban
+en_MT Name of month 09 (Islamic Calendar) Ramadan
+en_MT Name of month 10 (Islamic Calendar) Shawwal
+en_MT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_MT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_MT Name of weekday 01 (Gregorian Calendar) Monday
+en_MT Name of weekday 02 (Gregorian Calendar) Tuesday
+en_MT Name of weekday 03 (Gregorian Calendar) Wednesday
+en_MT Name of weekday 04 (Gregorian Calendar) Thursday
+en_MT Name of weekday 05 (Gregorian Calendar) Friday
+en_MT Name of weekday 06 (Gregorian Calendar) Saturday
+en_MT Name of weekday 07 (Gregorian Calendar) Sunday
+en_MT Name of weekday 01 (Islamic Calendar) Monday
+en_MT Name of weekday 02 (Islamic Calendar) Tuesday
+en_MT Name of weekday 03 (Islamic Calendar) Wednesday
+en_MT Name of weekday 04 (Islamic Calendar) Thursday
+en_MT Name of weekday 05 (Islamic Calendar) Friday
+en_MT Name of weekday 06 (Islamic Calendar) Saturday
+en_MT Name of weekday 07 (Islamic Calendar) Sunday
+en_NA Language endonym English
+en_NA Country endonym Namibia
+en_NA Floating Point Number -123,456,789.012
+en_NA Percent value -1,234.5679%
+en_NA Currency value €1,234.56
+en_NA Negative Currency value -€1,234.56
+en_NA Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_NA Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_NA Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_NA Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_NA Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_NA Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_NA Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_NA Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_NA Name of month 01 (Gregorian Calendar) January
+en_NA Name of month 02 (Gregorian Calendar) February
+en_NA Name of month 03 (Gregorian Calendar) March
+en_NA Name of month 04 (Gregorian Calendar) April
+en_NA Name of month 05 (Gregorian Calendar) May
+en_NA Name of month 06 (Gregorian Calendar) June
+en_NA Name of month 07 (Gregorian Calendar) July
+en_NA Name of month 08 (Gregorian Calendar) August
+en_NA Name of month 09 (Gregorian Calendar) September
+en_NA Name of month 10 (Gregorian Calendar) October
+en_NA Name of month 11 (Gregorian Calendar) November
+en_NA Name of month 12 (Gregorian Calendar) December
+en_NA Name of month 01 (Islamic Calendar) Muharram
+en_NA Name of month 02 (Islamic Calendar) Safar
+en_NA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_NA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_NA Name of month 05 (Islamic Calendar) Jumada I
+en_NA Name of month 06 (Islamic Calendar) Jumada II
+en_NA Name of month 07 (Islamic Calendar) Rajab
+en_NA Name of month 08 (Islamic Calendar) Shaʻban
+en_NA Name of month 09 (Islamic Calendar) Ramadan
+en_NA Name of month 10 (Islamic Calendar) Shawwal
+en_NA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_NA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_NA Name of weekday 01 (Gregorian Calendar) Monday
+en_NA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_NA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_NA Name of weekday 04 (Gregorian Calendar) Thursday
+en_NA Name of weekday 05 (Gregorian Calendar) Friday
+en_NA Name of weekday 06 (Gregorian Calendar) Saturday
+en_NA Name of weekday 07 (Gregorian Calendar) Sunday
+en_NA Name of weekday 01 (Islamic Calendar) Monday
+en_NA Name of weekday 02 (Islamic Calendar) Tuesday
+en_NA Name of weekday 03 (Islamic Calendar) Wednesday
+en_NA Name of weekday 04 (Islamic Calendar) Thursday
+en_NA Name of weekday 05 (Islamic Calendar) Friday
+en_NA Name of weekday 06 (Islamic Calendar) Saturday
+en_NA Name of weekday 07 (Islamic Calendar) Sunday
+en_NZ Language endonym English
+en_NZ Country endonym New Zealand
+en_NZ Floating Point Number -123,456,789.012
+en_NZ Percent value -1,234.5679%
+en_NZ Currency value €1,234.56
+en_NZ Negative Currency value -€1,234.56
+en_NZ Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_NZ Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00 PM
+en_NZ Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_NZ Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 PM GMT+00:00
+en_NZ Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_NZ Date and time medium (Islamic Calendar) 18/07/1429 12:31:00 PM
+en_NZ Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_NZ Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_NZ Name of month 01 (Gregorian Calendar) January
+en_NZ Name of month 02 (Gregorian Calendar) February
+en_NZ Name of month 03 (Gregorian Calendar) March
+en_NZ Name of month 04 (Gregorian Calendar) April
+en_NZ Name of month 05 (Gregorian Calendar) May
+en_NZ Name of month 06 (Gregorian Calendar) June
+en_NZ Name of month 07 (Gregorian Calendar) July
+en_NZ Name of month 08 (Gregorian Calendar) August
+en_NZ Name of month 09 (Gregorian Calendar) September
+en_NZ Name of month 10 (Gregorian Calendar) October
+en_NZ Name of month 11 (Gregorian Calendar) November
+en_NZ Name of month 12 (Gregorian Calendar) December
+en_NZ Name of month 01 (Islamic Calendar) Muharram
+en_NZ Name of month 02 (Islamic Calendar) Safar
+en_NZ Name of month 03 (Islamic Calendar) Rabiʻ I
+en_NZ Name of month 04 (Islamic Calendar) Rabiʻ II
+en_NZ Name of month 05 (Islamic Calendar) Jumada I
+en_NZ Name of month 06 (Islamic Calendar) Jumada II
+en_NZ Name of month 07 (Islamic Calendar) Rajab
+en_NZ Name of month 08 (Islamic Calendar) Shaʻban
+en_NZ Name of month 09 (Islamic Calendar) Ramadan
+en_NZ Name of month 10 (Islamic Calendar) Shawwal
+en_NZ Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_NZ Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_NZ Name of weekday 01 (Gregorian Calendar) Monday
+en_NZ Name of weekday 02 (Gregorian Calendar) Tuesday
+en_NZ Name of weekday 03 (Gregorian Calendar) Wednesday
+en_NZ Name of weekday 04 (Gregorian Calendar) Thursday
+en_NZ Name of weekday 05 (Gregorian Calendar) Friday
+en_NZ Name of weekday 06 (Gregorian Calendar) Saturday
+en_NZ Name of weekday 07 (Gregorian Calendar) Sunday
+en_NZ Name of weekday 01 (Islamic Calendar) Monday
+en_NZ Name of weekday 02 (Islamic Calendar) Tuesday
+en_NZ Name of weekday 03 (Islamic Calendar) Wednesday
+en_NZ Name of weekday 04 (Islamic Calendar) Thursday
+en_NZ Name of weekday 05 (Islamic Calendar) Friday
+en_NZ Name of weekday 06 (Islamic Calendar) Saturday
+en_NZ Name of weekday 07 (Islamic Calendar) Sunday
+en_PH Language endonym English
+en_PH Country endonym Philippines
+en_PH Floating Point Number -123,456,789.012
+en_PH Percent value -1,234.5679%
+en_PH Currency value €1,234.56
+en_PH Negative Currency value (€1,234.56)
+en_PH Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_PH Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_PH Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_PH Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_PH Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_PH Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_PH Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PH Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PH Name of month 01 (Gregorian Calendar) January
+en_PH Name of month 02 (Gregorian Calendar) February
+en_PH Name of month 03 (Gregorian Calendar) March
+en_PH Name of month 04 (Gregorian Calendar) April
+en_PH Name of month 05 (Gregorian Calendar) May
+en_PH Name of month 06 (Gregorian Calendar) June
+en_PH Name of month 07 (Gregorian Calendar) July
+en_PH Name of month 08 (Gregorian Calendar) August
+en_PH Name of month 09 (Gregorian Calendar) September
+en_PH Name of month 10 (Gregorian Calendar) October
+en_PH Name of month 11 (Gregorian Calendar) November
+en_PH Name of month 12 (Gregorian Calendar) December
+en_PH Name of month 01 (Islamic Calendar) Muharram
+en_PH Name of month 02 (Islamic Calendar) Safar
+en_PH Name of month 03 (Islamic Calendar) Rabiʻ I
+en_PH Name of month 04 (Islamic Calendar) Rabiʻ II
+en_PH Name of month 05 (Islamic Calendar) Jumada I
+en_PH Name of month 06 (Islamic Calendar) Jumada II
+en_PH Name of month 07 (Islamic Calendar) Rajab
+en_PH Name of month 08 (Islamic Calendar) Shaʻban
+en_PH Name of month 09 (Islamic Calendar) Ramadan
+en_PH Name of month 10 (Islamic Calendar) Shawwal
+en_PH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_PH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_PH Name of weekday 01 (Gregorian Calendar) Monday
+en_PH Name of weekday 02 (Gregorian Calendar) Tuesday
+en_PH Name of weekday 03 (Gregorian Calendar) Wednesday
+en_PH Name of weekday 04 (Gregorian Calendar) Thursday
+en_PH Name of weekday 05 (Gregorian Calendar) Friday
+en_PH Name of weekday 06 (Gregorian Calendar) Saturday
+en_PH Name of weekday 07 (Gregorian Calendar) Sunday
+en_PH Name of weekday 01 (Islamic Calendar) Monday
+en_PH Name of weekday 02 (Islamic Calendar) Tuesday
+en_PH Name of weekday 03 (Islamic Calendar) Wednesday
+en_PH Name of weekday 04 (Islamic Calendar) Thursday
+en_PH Name of weekday 05 (Islamic Calendar) Friday
+en_PH Name of weekday 06 (Islamic Calendar) Saturday
+en_PH Name of weekday 07 (Islamic Calendar) Sunday
+en_PK Language endonym English
+en_PK Country endonym Pakistan
+en_PK Floating Point Number -123,456,789.012
+en_PK Percent value -1,234.5679%
+en_PK Currency value €1,234.56
+en_PK Negative Currency value (€1,234.56)
+en_PK Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_PK Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_PK Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_PK Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_PK Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_PK Date and time medium (Islamic Calendar) 18-Rajab-1429 12:31:00 PM
+en_PK Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PK Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PK Name of month 01 (Gregorian Calendar) January
+en_PK Name of month 02 (Gregorian Calendar) February
+en_PK Name of month 03 (Gregorian Calendar) March
+en_PK Name of month 04 (Gregorian Calendar) April
+en_PK Name of month 05 (Gregorian Calendar) May
+en_PK Name of month 06 (Gregorian Calendar) June
+en_PK Name of month 07 (Gregorian Calendar) July
+en_PK Name of month 08 (Gregorian Calendar) August
+en_PK Name of month 09 (Gregorian Calendar) September
+en_PK Name of month 10 (Gregorian Calendar) October
+en_PK Name of month 11 (Gregorian Calendar) November
+en_PK Name of month 12 (Gregorian Calendar) December
+en_PK Name of month 01 (Islamic Calendar) Muharram
+en_PK Name of month 02 (Islamic Calendar) Safar
+en_PK Name of month 03 (Islamic Calendar) Rabiʻ I
+en_PK Name of month 04 (Islamic Calendar) Rabiʻ II
+en_PK Name of month 05 (Islamic Calendar) Jumada I
+en_PK Name of month 06 (Islamic Calendar) Jumada II
+en_PK Name of month 07 (Islamic Calendar) Rajab
+en_PK Name of month 08 (Islamic Calendar) Shaʻban
+en_PK Name of month 09 (Islamic Calendar) Ramadan
+en_PK Name of month 10 (Islamic Calendar) Shawwal
+en_PK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_PK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_PK Name of weekday 01 (Gregorian Calendar) Monday
+en_PK Name of weekday 02 (Gregorian Calendar) Tuesday
+en_PK Name of weekday 03 (Gregorian Calendar) Wednesday
+en_PK Name of weekday 04 (Gregorian Calendar) Thursday
+en_PK Name of weekday 05 (Gregorian Calendar) Friday
+en_PK Name of weekday 06 (Gregorian Calendar) Saturday
+en_PK Name of weekday 07 (Gregorian Calendar) Sunday
+en_PK Name of weekday 01 (Islamic Calendar) Monday
+en_PK Name of weekday 02 (Islamic Calendar) Tuesday
+en_PK Name of weekday 03 (Islamic Calendar) Wednesday
+en_PK Name of weekday 04 (Islamic Calendar) Thursday
+en_PK Name of weekday 05 (Islamic Calendar) Friday
+en_PK Name of weekday 06 (Islamic Calendar) Saturday
+en_PK Name of weekday 07 (Islamic Calendar) Sunday
+en_SG Language endonym English
+en_SG Country endonym Singapore
+en_SG Floating Point Number -123,456,789.012
+en_SG Percent value -1,234.5679%
+en_SG Currency value €1,234.56
+en_SG Negative Currency value (€1,234.56)
+en_SG Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_SG Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_SG Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_SG Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_SG Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_SG Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_SG Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_SG Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_SG Name of month 01 (Gregorian Calendar) January
+en_SG Name of month 02 (Gregorian Calendar) February
+en_SG Name of month 03 (Gregorian Calendar) March
+en_SG Name of month 04 (Gregorian Calendar) April
+en_SG Name of month 05 (Gregorian Calendar) May
+en_SG Name of month 06 (Gregorian Calendar) June
+en_SG Name of month 07 (Gregorian Calendar) July
+en_SG Name of month 08 (Gregorian Calendar) August
+en_SG Name of month 09 (Gregorian Calendar) September
+en_SG Name of month 10 (Gregorian Calendar) October
+en_SG Name of month 11 (Gregorian Calendar) November
+en_SG Name of month 12 (Gregorian Calendar) December
+en_SG Name of month 01 (Islamic Calendar) Muharram
+en_SG Name of month 02 (Islamic Calendar) Safar
+en_SG Name of month 03 (Islamic Calendar) Rabiʻ I
+en_SG Name of month 04 (Islamic Calendar) Rabiʻ II
+en_SG Name of month 05 (Islamic Calendar) Jumada I
+en_SG Name of month 06 (Islamic Calendar) Jumada II
+en_SG Name of month 07 (Islamic Calendar) Rajab
+en_SG Name of month 08 (Islamic Calendar) Shaʻban
+en_SG Name of month 09 (Islamic Calendar) Ramadan
+en_SG Name of month 10 (Islamic Calendar) Shawwal
+en_SG Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_SG Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_SG Name of weekday 01 (Gregorian Calendar) Monday
+en_SG Name of weekday 02 (Gregorian Calendar) Tuesday
+en_SG Name of weekday 03 (Gregorian Calendar) Wednesday
+en_SG Name of weekday 04 (Gregorian Calendar) Thursday
+en_SG Name of weekday 05 (Gregorian Calendar) Friday
+en_SG Name of weekday 06 (Gregorian Calendar) Saturday
+en_SG Name of weekday 07 (Gregorian Calendar) Sunday
+en_SG Name of weekday 01 (Islamic Calendar) Monday
+en_SG Name of weekday 02 (Islamic Calendar) Tuesday
+en_SG Name of weekday 03 (Islamic Calendar) Wednesday
+en_SG Name of weekday 04 (Islamic Calendar) Thursday
+en_SG Name of weekday 05 (Islamic Calendar) Friday
+en_SG Name of weekday 06 (Islamic Calendar) Saturday
+en_SG Name of weekday 07 (Islamic Calendar) Sunday
+en_TT Language endonym English
+en_TT Country endonym Trinidad and Tobago
+en_TT Floating Point Number -123,456,789.012
+en_TT Percent value -1,234.5679%
+en_TT Currency value €1,234.56
+en_TT Negative Currency value -€1,234.56
+en_TT Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_TT Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_TT Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_TT Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_TT Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_TT Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_TT Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_TT Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_TT Name of month 01 (Gregorian Calendar) January
+en_TT Name of month 02 (Gregorian Calendar) February
+en_TT Name of month 03 (Gregorian Calendar) March
+en_TT Name of month 04 (Gregorian Calendar) April
+en_TT Name of month 05 (Gregorian Calendar) May
+en_TT Name of month 06 (Gregorian Calendar) June
+en_TT Name of month 07 (Gregorian Calendar) July
+en_TT Name of month 08 (Gregorian Calendar) August
+en_TT Name of month 09 (Gregorian Calendar) September
+en_TT Name of month 10 (Gregorian Calendar) October
+en_TT Name of month 11 (Gregorian Calendar) November
+en_TT Name of month 12 (Gregorian Calendar) December
+en_TT Name of month 01 (Islamic Calendar) Muharram
+en_TT Name of month 02 (Islamic Calendar) Safar
+en_TT Name of month 03 (Islamic Calendar) Rabiʻ I
+en_TT Name of month 04 (Islamic Calendar) Rabiʻ II
+en_TT Name of month 05 (Islamic Calendar) Jumada I
+en_TT Name of month 06 (Islamic Calendar) Jumada II
+en_TT Name of month 07 (Islamic Calendar) Rajab
+en_TT Name of month 08 (Islamic Calendar) Shaʻban
+en_TT Name of month 09 (Islamic Calendar) Ramadan
+en_TT Name of month 10 (Islamic Calendar) Shawwal
+en_TT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_TT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_TT Name of weekday 01 (Gregorian Calendar) Monday
+en_TT Name of weekday 02 (Gregorian Calendar) Tuesday
+en_TT Name of weekday 03 (Gregorian Calendar) Wednesday
+en_TT Name of weekday 04 (Gregorian Calendar) Thursday
+en_TT Name of weekday 05 (Gregorian Calendar) Friday
+en_TT Name of weekday 06 (Gregorian Calendar) Saturday
+en_TT Name of weekday 07 (Gregorian Calendar) Sunday
+en_TT Name of weekday 01 (Islamic Calendar) Monday
+en_TT Name of weekday 02 (Islamic Calendar) Tuesday
+en_TT Name of weekday 03 (Islamic Calendar) Wednesday
+en_TT Name of weekday 04 (Islamic Calendar) Thursday
+en_TT Name of weekday 05 (Islamic Calendar) Friday
+en_TT Name of weekday 06 (Islamic Calendar) Saturday
+en_TT Name of weekday 07 (Islamic Calendar) Sunday
+en_US Language endonym English
+en_US Country endonym United States
+en_US Floating Point Number -123,456,789.012
+en_US Percent value -1,234.5679%
+en_US Currency value €1,234.56
+en_US Negative Currency value (€1,234.56)
+en_US Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_US Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_US Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_US Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_US Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_US Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_US Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US Name of month 01 (Gregorian Calendar) January
+en_US Name of month 02 (Gregorian Calendar) February
+en_US Name of month 03 (Gregorian Calendar) March
+en_US Name of month 04 (Gregorian Calendar) April
+en_US Name of month 05 (Gregorian Calendar) May
+en_US Name of month 06 (Gregorian Calendar) June
+en_US Name of month 07 (Gregorian Calendar) July
+en_US Name of month 08 (Gregorian Calendar) August
+en_US Name of month 09 (Gregorian Calendar) September
+en_US Name of month 10 (Gregorian Calendar) October
+en_US Name of month 11 (Gregorian Calendar) November
+en_US Name of month 12 (Gregorian Calendar) December
+en_US Name of month 01 (Islamic Calendar) Muharram
+en_US Name of month 02 (Islamic Calendar) Safar
+en_US Name of month 03 (Islamic Calendar) Rabiʻ I
+en_US Name of month 04 (Islamic Calendar) Rabiʻ II
+en_US Name of month 05 (Islamic Calendar) Jumada I
+en_US Name of month 06 (Islamic Calendar) Jumada II
+en_US Name of month 07 (Islamic Calendar) Rajab
+en_US Name of month 08 (Islamic Calendar) Shaʻban
+en_US Name of month 09 (Islamic Calendar) Ramadan
+en_US Name of month 10 (Islamic Calendar) Shawwal
+en_US Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_US Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_US Name of weekday 01 (Gregorian Calendar) Monday
+en_US Name of weekday 02 (Gregorian Calendar) Tuesday
+en_US Name of weekday 03 (Gregorian Calendar) Wednesday
+en_US Name of weekday 04 (Gregorian Calendar) Thursday
+en_US Name of weekday 05 (Gregorian Calendar) Friday
+en_US Name of weekday 06 (Gregorian Calendar) Saturday
+en_US Name of weekday 07 (Gregorian Calendar) Sunday
+en_US Name of weekday 01 (Islamic Calendar) Monday
+en_US Name of weekday 02 (Islamic Calendar) Tuesday
+en_US Name of weekday 03 (Islamic Calendar) Wednesday
+en_US Name of weekday 04 (Islamic Calendar) Thursday
+en_US Name of weekday 05 (Islamic Calendar) Friday
+en_US Name of weekday 06 (Islamic Calendar) Saturday
+en_US Name of weekday 07 (Islamic Calendar) Sunday
+en_US_POSIX Language endonym English
+en_US_POSIX Country endonym United States
+en_US_POSIX Floating Point Number -123456789.01234
+en_US_POSIX Percent value -1234.5679%
+en_US_POSIX Currency value € 1234.56
+en_US_POSIX Negative Currency value -€ 1234.56
+en_US_POSIX Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_US_POSIX Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_US_POSIX Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_US_POSIX Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_US_POSIX Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US_POSIX Name of month 01 (Gregorian Calendar) January
+en_US_POSIX Name of month 02 (Gregorian Calendar) February
+en_US_POSIX Name of month 03 (Gregorian Calendar) March
+en_US_POSIX Name of month 04 (Gregorian Calendar) April
+en_US_POSIX Name of month 05 (Gregorian Calendar) May
+en_US_POSIX Name of month 06 (Gregorian Calendar) June
+en_US_POSIX Name of month 07 (Gregorian Calendar) July
+en_US_POSIX Name of month 08 (Gregorian Calendar) August
+en_US_POSIX Name of month 09 (Gregorian Calendar) September
+en_US_POSIX Name of month 10 (Gregorian Calendar) October
+en_US_POSIX Name of month 11 (Gregorian Calendar) November
+en_US_POSIX Name of month 12 (Gregorian Calendar) December
+en_US_POSIX Name of month 01 (Islamic Calendar) Muharram
+en_US_POSIX Name of month 02 (Islamic Calendar) Safar
+en_US_POSIX Name of month 03 (Islamic Calendar) Rabiʻ I
+en_US_POSIX Name of month 04 (Islamic Calendar) Rabiʻ II
+en_US_POSIX Name of month 05 (Islamic Calendar) Jumada I
+en_US_POSIX Name of month 06 (Islamic Calendar) Jumada II
+en_US_POSIX Name of month 07 (Islamic Calendar) Rajab
+en_US_POSIX Name of month 08 (Islamic Calendar) Shaʻban
+en_US_POSIX Name of month 09 (Islamic Calendar) Ramadan
+en_US_POSIX Name of month 10 (Islamic Calendar) Shawwal
+en_US_POSIX Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_US_POSIX Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_US_POSIX Name of weekday 01 (Gregorian Calendar) Monday
+en_US_POSIX Name of weekday 02 (Gregorian Calendar) Tuesday
+en_US_POSIX Name of weekday 03 (Gregorian Calendar) Wednesday
+en_US_POSIX Name of weekday 04 (Gregorian Calendar) Thursday
+en_US_POSIX Name of weekday 05 (Gregorian Calendar) Friday
+en_US_POSIX Name of weekday 06 (Gregorian Calendar) Saturday
+en_US_POSIX Name of weekday 07 (Gregorian Calendar) Sunday
+en_US_POSIX Name of weekday 01 (Islamic Calendar) Monday
+en_US_POSIX Name of weekday 02 (Islamic Calendar) Tuesday
+en_US_POSIX Name of weekday 03 (Islamic Calendar) Wednesday
+en_US_POSIX Name of weekday 04 (Islamic Calendar) Thursday
+en_US_POSIX Name of weekday 05 (Islamic Calendar) Friday
+en_US_POSIX Name of weekday 06 (Islamic Calendar) Saturday
+en_US_POSIX Name of weekday 07 (Islamic Calendar) Sunday
+en_VI Language endonym English
+en_VI Country endonym U.S. Virgin Islands
+en_VI Floating Point Number -123,456,789.012
+en_VI Percent value -1,234.5679%
+en_VI Currency value €1,234.56
+en_VI Negative Currency value (€1,234.56)
+en_VI Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_VI Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_VI Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_VI Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_VI Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_VI Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+en_VI Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_VI Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_VI Name of month 01 (Gregorian Calendar) January
+en_VI Name of month 02 (Gregorian Calendar) February
+en_VI Name of month 03 (Gregorian Calendar) March
+en_VI Name of month 04 (Gregorian Calendar) April
+en_VI Name of month 05 (Gregorian Calendar) May
+en_VI Name of month 06 (Gregorian Calendar) June
+en_VI Name of month 07 (Gregorian Calendar) July
+en_VI Name of month 08 (Gregorian Calendar) August
+en_VI Name of month 09 (Gregorian Calendar) September
+en_VI Name of month 10 (Gregorian Calendar) October
+en_VI Name of month 11 (Gregorian Calendar) November
+en_VI Name of month 12 (Gregorian Calendar) December
+en_VI Name of month 01 (Islamic Calendar) Muharram
+en_VI Name of month 02 (Islamic Calendar) Safar
+en_VI Name of month 03 (Islamic Calendar) Rabiʻ I
+en_VI Name of month 04 (Islamic Calendar) Rabiʻ II
+en_VI Name of month 05 (Islamic Calendar) Jumada I
+en_VI Name of month 06 (Islamic Calendar) Jumada II
+en_VI Name of month 07 (Islamic Calendar) Rajab
+en_VI Name of month 08 (Islamic Calendar) Shaʻban
+en_VI Name of month 09 (Islamic Calendar) Ramadan
+en_VI Name of month 10 (Islamic Calendar) Shawwal
+en_VI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_VI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_VI Name of weekday 01 (Gregorian Calendar) Monday
+en_VI Name of weekday 02 (Gregorian Calendar) Tuesday
+en_VI Name of weekday 03 (Gregorian Calendar) Wednesday
+en_VI Name of weekday 04 (Gregorian Calendar) Thursday
+en_VI Name of weekday 05 (Gregorian Calendar) Friday
+en_VI Name of weekday 06 (Gregorian Calendar) Saturday
+en_VI Name of weekday 07 (Gregorian Calendar) Sunday
+en_VI Name of weekday 01 (Islamic Calendar) Monday
+en_VI Name of weekday 02 (Islamic Calendar) Tuesday
+en_VI Name of weekday 03 (Islamic Calendar) Wednesday
+en_VI Name of weekday 04 (Islamic Calendar) Thursday
+en_VI Name of weekday 05 (Islamic Calendar) Friday
+en_VI Name of weekday 06 (Islamic Calendar) Saturday
+en_VI Name of weekday 07 (Islamic Calendar) Sunday
+en_ZA Language endonym English
+en_ZA Country endonym South Africa
+en_ZA Floating Point Number -123 456 789,012
+en_ZA Percent value -1 234,5679%
+en_ZA Currency value €1 234,56
+en_ZA Negative Currency value -€1 234,56
+en_ZA Date and time short (Gregorian Calendar) 2008/07/21 12:31 PM
+en_ZA Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00 PM
+en_ZA Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_ZA Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_ZA Date and time short (Islamic Calendar) 1429/07/18 12:31 PM
+en_ZA Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00 PM
+en_ZA Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZA Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZA Name of month 01 (Gregorian Calendar) January
+en_ZA Name of month 02 (Gregorian Calendar) February
+en_ZA Name of month 03 (Gregorian Calendar) March
+en_ZA Name of month 04 (Gregorian Calendar) April
+en_ZA Name of month 05 (Gregorian Calendar) May
+en_ZA Name of month 06 (Gregorian Calendar) June
+en_ZA Name of month 07 (Gregorian Calendar) July
+en_ZA Name of month 08 (Gregorian Calendar) August
+en_ZA Name of month 09 (Gregorian Calendar) September
+en_ZA Name of month 10 (Gregorian Calendar) October
+en_ZA Name of month 11 (Gregorian Calendar) November
+en_ZA Name of month 12 (Gregorian Calendar) December
+en_ZA Name of month 01 (Islamic Calendar) Muharram
+en_ZA Name of month 02 (Islamic Calendar) Safar
+en_ZA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_ZA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_ZA Name of month 05 (Islamic Calendar) Jumada I
+en_ZA Name of month 06 (Islamic Calendar) Jumada II
+en_ZA Name of month 07 (Islamic Calendar) Rajab
+en_ZA Name of month 08 (Islamic Calendar) Shaʻban
+en_ZA Name of month 09 (Islamic Calendar) Ramadan
+en_ZA Name of month 10 (Islamic Calendar) Shawwal
+en_ZA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_ZA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_ZA Name of weekday 01 (Gregorian Calendar) Monday
+en_ZA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_ZA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_ZA Name of weekday 04 (Gregorian Calendar) Thursday
+en_ZA Name of weekday 05 (Gregorian Calendar) Friday
+en_ZA Name of weekday 06 (Gregorian Calendar) Saturday
+en_ZA Name of weekday 07 (Gregorian Calendar) Sunday
+en_ZA Name of weekday 01 (Islamic Calendar) Monday
+en_ZA Name of weekday 02 (Islamic Calendar) Tuesday
+en_ZA Name of weekday 03 (Islamic Calendar) Wednesday
+en_ZA Name of weekday 04 (Islamic Calendar) Thursday
+en_ZA Name of weekday 05 (Islamic Calendar) Friday
+en_ZA Name of weekday 06 (Islamic Calendar) Saturday
+en_ZA Name of weekday 07 (Islamic Calendar) Sunday
+en_ZW Language endonym English
+en_ZW Country endonym Zimbabwe
+en_ZW Floating Point Number -123,456,789.012
+en_ZW Percent value -1,234.5679%
+en_ZW Currency value €1,234.56
+en_ZW Negative Currency value -€1,234.56
+en_ZW Date and time short (Gregorian Calendar) 21/7/2008 12:31 PM
+en_ZW Date and time medium (Gregorian Calendar) 21 Jul,2008 12:31:00 PM
+en_ZW Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_ZW Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_ZW Date and time short (Islamic Calendar) 18/7/1429 12:31 PM
+en_ZW Date and time medium (Islamic Calendar) 18 Rajab,1429 12:31:00 PM
+en_ZW Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZW Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZW Name of month 01 (Gregorian Calendar) January
+en_ZW Name of month 02 (Gregorian Calendar) February
+en_ZW Name of month 03 (Gregorian Calendar) March
+en_ZW Name of month 04 (Gregorian Calendar) April
+en_ZW Name of month 05 (Gregorian Calendar) May
+en_ZW Name of month 06 (Gregorian Calendar) June
+en_ZW Name of month 07 (Gregorian Calendar) July
+en_ZW Name of month 08 (Gregorian Calendar) August
+en_ZW Name of month 09 (Gregorian Calendar) September
+en_ZW Name of month 10 (Gregorian Calendar) October
+en_ZW Name of month 11 (Gregorian Calendar) November
+en_ZW Name of month 12 (Gregorian Calendar) December
+en_ZW Name of month 01 (Islamic Calendar) Muharram
+en_ZW Name of month 02 (Islamic Calendar) Safar
+en_ZW Name of month 03 (Islamic Calendar) Rabiʻ I
+en_ZW Name of month 04 (Islamic Calendar) Rabiʻ II
+en_ZW Name of month 05 (Islamic Calendar) Jumada I
+en_ZW Name of month 06 (Islamic Calendar) Jumada II
+en_ZW Name of month 07 (Islamic Calendar) Rajab
+en_ZW Name of month 08 (Islamic Calendar) Shaʻban
+en_ZW Name of month 09 (Islamic Calendar) Ramadan
+en_ZW Name of month 10 (Islamic Calendar) Shawwal
+en_ZW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_ZW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_ZW Name of weekday 01 (Gregorian Calendar) Monday
+en_ZW Name of weekday 02 (Gregorian Calendar) Tuesday
+en_ZW Name of weekday 03 (Gregorian Calendar) Wednesday
+en_ZW Name of weekday 04 (Gregorian Calendar) Thursday
+en_ZW Name of weekday 05 (Gregorian Calendar) Friday
+en_ZW Name of weekday 06 (Gregorian Calendar) Saturday
+en_ZW Name of weekday 07 (Gregorian Calendar) Sunday
+en_ZW Name of weekday 01 (Islamic Calendar) Monday
+en_ZW Name of weekday 02 (Islamic Calendar) Tuesday
+en_ZW Name of weekday 03 (Islamic Calendar) Wednesday
+en_ZW Name of weekday 04 (Islamic Calendar) Thursday
+en_ZW Name of weekday 05 (Islamic Calendar) Friday
+en_ZW Name of weekday 06 (Islamic Calendar) Saturday
+en_ZW Name of weekday 07 (Islamic Calendar) Sunday
+es Language endonym español
+es Country endonym
+es Floating Point Number -123.456.789,012
+es Percent value -1.234,5679%
+es Currency value € 1.234,56
+es Negative Currency value -€ 1.234,56
+es Date and time short (Gregorian Calendar) 21/07/08 12:31
+es Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es Date and time short (Islamic Calendar) 18/07/29 12:31
+es Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es Name of month 01 (Gregorian Calendar) enero
+es Name of month 02 (Gregorian Calendar) febrero
+es Name of month 03 (Gregorian Calendar) marzo
+es Name of month 04 (Gregorian Calendar) abril
+es Name of month 05 (Gregorian Calendar) mayo
+es Name of month 06 (Gregorian Calendar) junio
+es Name of month 07 (Gregorian Calendar) julio
+es Name of month 08 (Gregorian Calendar) agosto
+es Name of month 09 (Gregorian Calendar) septiembre
+es Name of month 10 (Gregorian Calendar) octubre
+es Name of month 11 (Gregorian Calendar) noviembre
+es Name of month 12 (Gregorian Calendar) diciembre
+es Name of month 01 (Islamic Calendar) Muharram
+es Name of month 02 (Islamic Calendar) Safar
+es Name of month 03 (Islamic Calendar) Rabiʻ I
+es Name of month 04 (Islamic Calendar) Rabiʻ II
+es Name of month 05 (Islamic Calendar) Jumada I
+es Name of month 06 (Islamic Calendar) Jumada II
+es Name of month 07 (Islamic Calendar) Rajab
+es Name of month 08 (Islamic Calendar) Shaʻban
+es Name of month 09 (Islamic Calendar) Ramadan
+es Name of month 10 (Islamic Calendar) Shawwal
+es Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es Name of weekday 01 (Gregorian Calendar) lunes
+es Name of weekday 02 (Gregorian Calendar) martes
+es Name of weekday 03 (Gregorian Calendar) miércoles
+es Name of weekday 04 (Gregorian Calendar) jueves
+es Name of weekday 05 (Gregorian Calendar) viernes
+es Name of weekday 06 (Gregorian Calendar) sábado
+es Name of weekday 07 (Gregorian Calendar) domingo
+es Name of weekday 01 (Islamic Calendar) lunes
+es Name of weekday 02 (Islamic Calendar) martes
+es Name of weekday 03 (Islamic Calendar) miércoles
+es Name of weekday 04 (Islamic Calendar) jueves
+es Name of weekday 05 (Islamic Calendar) viernes
+es Name of weekday 06 (Islamic Calendar) sábado
+es Name of weekday 07 (Islamic Calendar) domingo
+es_AR Language endonym español
+es_AR Country endonym Argentina
+es_AR Floating Point Number -123.456.789,012
+es_AR Percent value -1.234,5679%
+es_AR Currency value € 1.234,56
+es_AR Negative Currency value -€ 1.234,56
+es_AR Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_AR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_AR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_AR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12h'31:00 GMT+00:00
+es_AR Date and time short (Islamic Calendar) 18/07/29 12:31
+es_AR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_AR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_AR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12h'31:00 GMT+00:00
+es_AR Name of month 01 (Gregorian Calendar) enero
+es_AR Name of month 02 (Gregorian Calendar) febrero
+es_AR Name of month 03 (Gregorian Calendar) marzo
+es_AR Name of month 04 (Gregorian Calendar) abril
+es_AR Name of month 05 (Gregorian Calendar) mayo
+es_AR Name of month 06 (Gregorian Calendar) junio
+es_AR Name of month 07 (Gregorian Calendar) julio
+es_AR Name of month 08 (Gregorian Calendar) agosto
+es_AR Name of month 09 (Gregorian Calendar) septiembre
+es_AR Name of month 10 (Gregorian Calendar) octubre
+es_AR Name of month 11 (Gregorian Calendar) noviembre
+es_AR Name of month 12 (Gregorian Calendar) diciembre
+es_AR Name of month 01 (Islamic Calendar) Muharram
+es_AR Name of month 02 (Islamic Calendar) Safar
+es_AR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_AR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_AR Name of month 05 (Islamic Calendar) Jumada I
+es_AR Name of month 06 (Islamic Calendar) Jumada II
+es_AR Name of month 07 (Islamic Calendar) Rajab
+es_AR Name of month 08 (Islamic Calendar) Shaʻban
+es_AR Name of month 09 (Islamic Calendar) Ramadan
+es_AR Name of month 10 (Islamic Calendar) Shawwal
+es_AR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_AR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_AR Name of weekday 01 (Gregorian Calendar) lunes
+es_AR Name of weekday 02 (Gregorian Calendar) martes
+es_AR Name of weekday 03 (Gregorian Calendar) miércoles
+es_AR Name of weekday 04 (Gregorian Calendar) jueves
+es_AR Name of weekday 05 (Gregorian Calendar) viernes
+es_AR Name of weekday 06 (Gregorian Calendar) sábado
+es_AR Name of weekday 07 (Gregorian Calendar) domingo
+es_AR Name of weekday 01 (Islamic Calendar) lunes
+es_AR Name of weekday 02 (Islamic Calendar) martes
+es_AR Name of weekday 03 (Islamic Calendar) miércoles
+es_AR Name of weekday 04 (Islamic Calendar) jueves
+es_AR Name of weekday 05 (Islamic Calendar) viernes
+es_AR Name of weekday 06 (Islamic Calendar) sábado
+es_AR Name of weekday 07 (Islamic Calendar) domingo
+es_BO Language endonym español
+es_BO Country endonym Bolivia
+es_BO Floating Point Number -123.456.789,012
+es_BO Percent value -1.234,5679%
+es_BO Currency value € 1.234,56
+es_BO Negative Currency value -€ 1.234,56
+es_BO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_BO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_BO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_BO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_BO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_BO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_BO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_BO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_BO Name of month 01 (Gregorian Calendar) enero
+es_BO Name of month 02 (Gregorian Calendar) febrero
+es_BO Name of month 03 (Gregorian Calendar) marzo
+es_BO Name of month 04 (Gregorian Calendar) abril
+es_BO Name of month 05 (Gregorian Calendar) mayo
+es_BO Name of month 06 (Gregorian Calendar) junio
+es_BO Name of month 07 (Gregorian Calendar) julio
+es_BO Name of month 08 (Gregorian Calendar) agosto
+es_BO Name of month 09 (Gregorian Calendar) septiembre
+es_BO Name of month 10 (Gregorian Calendar) octubre
+es_BO Name of month 11 (Gregorian Calendar) noviembre
+es_BO Name of month 12 (Gregorian Calendar) diciembre
+es_BO Name of month 01 (Islamic Calendar) Muharram
+es_BO Name of month 02 (Islamic Calendar) Safar
+es_BO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_BO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_BO Name of month 05 (Islamic Calendar) Jumada I
+es_BO Name of month 06 (Islamic Calendar) Jumada II
+es_BO Name of month 07 (Islamic Calendar) Rajab
+es_BO Name of month 08 (Islamic Calendar) Shaʻban
+es_BO Name of month 09 (Islamic Calendar) Ramadan
+es_BO Name of month 10 (Islamic Calendar) Shawwal
+es_BO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_BO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_BO Name of weekday 01 (Gregorian Calendar) lunes
+es_BO Name of weekday 02 (Gregorian Calendar) martes
+es_BO Name of weekday 03 (Gregorian Calendar) miércoles
+es_BO Name of weekday 04 (Gregorian Calendar) jueves
+es_BO Name of weekday 05 (Gregorian Calendar) viernes
+es_BO Name of weekday 06 (Gregorian Calendar) sábado
+es_BO Name of weekday 07 (Gregorian Calendar) domingo
+es_BO Name of weekday 01 (Islamic Calendar) lunes
+es_BO Name of weekday 02 (Islamic Calendar) martes
+es_BO Name of weekday 03 (Islamic Calendar) miércoles
+es_BO Name of weekday 04 (Islamic Calendar) jueves
+es_BO Name of weekday 05 (Islamic Calendar) viernes
+es_BO Name of weekday 06 (Islamic Calendar) sábado
+es_BO Name of weekday 07 (Islamic Calendar) domingo
+es_CL Language endonym español
+es_CL Country endonym CL
+es_CL Floating Point Number -123.456.789,012
+es_CL Percent value -1.234,5679%
+es_CL Currency value €1.234,56
+es_CL Negative Currency value €-1.234,56
+es_CL Date and time short (Gregorian Calendar) 21-07-08 12:31
+es_CL Date and time medium (Gregorian Calendar) 21-07-2008 12:31:00
+es_CL Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CL Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CL Date and time short (Islamic Calendar) 18-07-29 12:31
+es_CL Date and time medium (Islamic Calendar) 18-07-1429 12:31:00
+es_CL Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CL Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CL Name of month 01 (Gregorian Calendar) enero
+es_CL Name of month 02 (Gregorian Calendar) febrero
+es_CL Name of month 03 (Gregorian Calendar) marzo
+es_CL Name of month 04 (Gregorian Calendar) abril
+es_CL Name of month 05 (Gregorian Calendar) mayo
+es_CL Name of month 06 (Gregorian Calendar) junio
+es_CL Name of month 07 (Gregorian Calendar) julio
+es_CL Name of month 08 (Gregorian Calendar) agosto
+es_CL Name of month 09 (Gregorian Calendar) septiembre
+es_CL Name of month 10 (Gregorian Calendar) octubre
+es_CL Name of month 11 (Gregorian Calendar) noviembre
+es_CL Name of month 12 (Gregorian Calendar) diciembre
+es_CL Name of month 01 (Islamic Calendar) Muharram
+es_CL Name of month 02 (Islamic Calendar) Safar
+es_CL Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CL Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CL Name of month 05 (Islamic Calendar) Jumada I
+es_CL Name of month 06 (Islamic Calendar) Jumada II
+es_CL Name of month 07 (Islamic Calendar) Rajab
+es_CL Name of month 08 (Islamic Calendar) Shaʻban
+es_CL Name of month 09 (Islamic Calendar) Ramadan
+es_CL Name of month 10 (Islamic Calendar) Shawwal
+es_CL Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CL Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CL Name of weekday 01 (Gregorian Calendar) lunes
+es_CL Name of weekday 02 (Gregorian Calendar) martes
+es_CL Name of weekday 03 (Gregorian Calendar) miércoles
+es_CL Name of weekday 04 (Gregorian Calendar) jueves
+es_CL Name of weekday 05 (Gregorian Calendar) viernes
+es_CL Name of weekday 06 (Gregorian Calendar) sábado
+es_CL Name of weekday 07 (Gregorian Calendar) domingo
+es_CL Name of weekday 01 (Islamic Calendar) lunes
+es_CL Name of weekday 02 (Islamic Calendar) martes
+es_CL Name of weekday 03 (Islamic Calendar) miércoles
+es_CL Name of weekday 04 (Islamic Calendar) jueves
+es_CL Name of weekday 05 (Islamic Calendar) viernes
+es_CL Name of weekday 06 (Islamic Calendar) sábado
+es_CL Name of weekday 07 (Islamic Calendar) domingo
+es_CO Language endonym español
+es_CO Country endonym Colombia
+es_CO Floating Point Number -123.456.789,012
+es_CO Percent value -1.234,5679%
+es_CO Currency value € 1.234,56
+es_CO Negative Currency value -€ 1.234,56
+es_CO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_CO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_CO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_CO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_CO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CO Name of month 01 (Gregorian Calendar) enero
+es_CO Name of month 02 (Gregorian Calendar) febrero
+es_CO Name of month 03 (Gregorian Calendar) marzo
+es_CO Name of month 04 (Gregorian Calendar) abril
+es_CO Name of month 05 (Gregorian Calendar) mayo
+es_CO Name of month 06 (Gregorian Calendar) junio
+es_CO Name of month 07 (Gregorian Calendar) julio
+es_CO Name of month 08 (Gregorian Calendar) agosto
+es_CO Name of month 09 (Gregorian Calendar) septiembre
+es_CO Name of month 10 (Gregorian Calendar) octubre
+es_CO Name of month 11 (Gregorian Calendar) noviembre
+es_CO Name of month 12 (Gregorian Calendar) diciembre
+es_CO Name of month 01 (Islamic Calendar) Muharram
+es_CO Name of month 02 (Islamic Calendar) Safar
+es_CO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CO Name of month 05 (Islamic Calendar) Jumada I
+es_CO Name of month 06 (Islamic Calendar) Jumada II
+es_CO Name of month 07 (Islamic Calendar) Rajab
+es_CO Name of month 08 (Islamic Calendar) Shaʻban
+es_CO Name of month 09 (Islamic Calendar) Ramadan
+es_CO Name of month 10 (Islamic Calendar) Shawwal
+es_CO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CO Name of weekday 01 (Gregorian Calendar) lunes
+es_CO Name of weekday 02 (Gregorian Calendar) martes
+es_CO Name of weekday 03 (Gregorian Calendar) miércoles
+es_CO Name of weekday 04 (Gregorian Calendar) jueves
+es_CO Name of weekday 05 (Gregorian Calendar) viernes
+es_CO Name of weekday 06 (Gregorian Calendar) sábado
+es_CO Name of weekday 07 (Gregorian Calendar) domingo
+es_CO Name of weekday 01 (Islamic Calendar) lunes
+es_CO Name of weekday 02 (Islamic Calendar) martes
+es_CO Name of weekday 03 (Islamic Calendar) miércoles
+es_CO Name of weekday 04 (Islamic Calendar) jueves
+es_CO Name of weekday 05 (Islamic Calendar) viernes
+es_CO Name of weekday 06 (Islamic Calendar) sábado
+es_CO Name of weekday 07 (Islamic Calendar) domingo
+es_CR Language endonym español
+es_CR Country endonym Costa Rica
+es_CR Floating Point Number -123.456.789,012
+es_CR Percent value -1.234,5679%
+es_CR Currency value € 1.234,56
+es_CR Negative Currency value -€ 1.234,56
+es_CR Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_CR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_CR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CR Date and time short (Islamic Calendar) 18/07/29 12:31
+es_CR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_CR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CR Name of month 01 (Gregorian Calendar) enero
+es_CR Name of month 02 (Gregorian Calendar) febrero
+es_CR Name of month 03 (Gregorian Calendar) marzo
+es_CR Name of month 04 (Gregorian Calendar) abril
+es_CR Name of month 05 (Gregorian Calendar) mayo
+es_CR Name of month 06 (Gregorian Calendar) junio
+es_CR Name of month 07 (Gregorian Calendar) julio
+es_CR Name of month 08 (Gregorian Calendar) agosto
+es_CR Name of month 09 (Gregorian Calendar) septiembre
+es_CR Name of month 10 (Gregorian Calendar) octubre
+es_CR Name of month 11 (Gregorian Calendar) noviembre
+es_CR Name of month 12 (Gregorian Calendar) diciembre
+es_CR Name of month 01 (Islamic Calendar) Muharram
+es_CR Name of month 02 (Islamic Calendar) Safar
+es_CR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CR Name of month 05 (Islamic Calendar) Jumada I
+es_CR Name of month 06 (Islamic Calendar) Jumada II
+es_CR Name of month 07 (Islamic Calendar) Rajab
+es_CR Name of month 08 (Islamic Calendar) Shaʻban
+es_CR Name of month 09 (Islamic Calendar) Ramadan
+es_CR Name of month 10 (Islamic Calendar) Shawwal
+es_CR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CR Name of weekday 01 (Gregorian Calendar) lunes
+es_CR Name of weekday 02 (Gregorian Calendar) martes
+es_CR Name of weekday 03 (Gregorian Calendar) miércoles
+es_CR Name of weekday 04 (Gregorian Calendar) jueves
+es_CR Name of weekday 05 (Gregorian Calendar) viernes
+es_CR Name of weekday 06 (Gregorian Calendar) sábado
+es_CR Name of weekday 07 (Gregorian Calendar) domingo
+es_CR Name of weekday 01 (Islamic Calendar) lunes
+es_CR Name of weekday 02 (Islamic Calendar) martes
+es_CR Name of weekday 03 (Islamic Calendar) miércoles
+es_CR Name of weekday 04 (Islamic Calendar) jueves
+es_CR Name of weekday 05 (Islamic Calendar) viernes
+es_CR Name of weekday 06 (Islamic Calendar) sábado
+es_CR Name of weekday 07 (Islamic Calendar) domingo
+es_DO Language endonym español
+es_DO Country endonym República Dominicana
+es_DO Floating Point Number -123,456,789.012
+es_DO Percent value -1,234.5679%
+es_DO Currency value € 1,234.56
+es_DO Negative Currency value -€ 1,234.56
+es_DO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_DO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_DO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_DO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_DO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_DO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_DO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_DO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_DO Name of month 01 (Gregorian Calendar) enero
+es_DO Name of month 02 (Gregorian Calendar) febrero
+es_DO Name of month 03 (Gregorian Calendar) marzo
+es_DO Name of month 04 (Gregorian Calendar) abril
+es_DO Name of month 05 (Gregorian Calendar) mayo
+es_DO Name of month 06 (Gregorian Calendar) junio
+es_DO Name of month 07 (Gregorian Calendar) julio
+es_DO Name of month 08 (Gregorian Calendar) agosto
+es_DO Name of month 09 (Gregorian Calendar) septiembre
+es_DO Name of month 10 (Gregorian Calendar) octubre
+es_DO Name of month 11 (Gregorian Calendar) noviembre
+es_DO Name of month 12 (Gregorian Calendar) diciembre
+es_DO Name of month 01 (Islamic Calendar) Muharram
+es_DO Name of month 02 (Islamic Calendar) Safar
+es_DO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_DO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_DO Name of month 05 (Islamic Calendar) Jumada I
+es_DO Name of month 06 (Islamic Calendar) Jumada II
+es_DO Name of month 07 (Islamic Calendar) Rajab
+es_DO Name of month 08 (Islamic Calendar) Shaʻban
+es_DO Name of month 09 (Islamic Calendar) Ramadan
+es_DO Name of month 10 (Islamic Calendar) Shawwal
+es_DO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_DO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_DO Name of weekday 01 (Gregorian Calendar) lunes
+es_DO Name of weekday 02 (Gregorian Calendar) martes
+es_DO Name of weekday 03 (Gregorian Calendar) miércoles
+es_DO Name of weekday 04 (Gregorian Calendar) jueves
+es_DO Name of weekday 05 (Gregorian Calendar) viernes
+es_DO Name of weekday 06 (Gregorian Calendar) sábado
+es_DO Name of weekday 07 (Gregorian Calendar) domingo
+es_DO Name of weekday 01 (Islamic Calendar) lunes
+es_DO Name of weekday 02 (Islamic Calendar) martes
+es_DO Name of weekday 03 (Islamic Calendar) miércoles
+es_DO Name of weekday 04 (Islamic Calendar) jueves
+es_DO Name of weekday 05 (Islamic Calendar) viernes
+es_DO Name of weekday 06 (Islamic Calendar) sábado
+es_DO Name of weekday 07 (Islamic Calendar) domingo
+es_EC Language endonym español
+es_EC Country endonym Ecuador
+es_EC Floating Point Number -123.456.789,012
+es_EC Percent value -1.234,5679%
+es_EC Currency value €1.234,56
+es_EC Negative Currency value €-1.234,56
+es_EC Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_EC Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_EC Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_EC Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_EC Date and time short (Islamic Calendar) 18/07/29 12:31
+es_EC Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_EC Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_EC Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_EC Name of month 01 (Gregorian Calendar) enero
+es_EC Name of month 02 (Gregorian Calendar) febrero
+es_EC Name of month 03 (Gregorian Calendar) marzo
+es_EC Name of month 04 (Gregorian Calendar) abril
+es_EC Name of month 05 (Gregorian Calendar) mayo
+es_EC Name of month 06 (Gregorian Calendar) junio
+es_EC Name of month 07 (Gregorian Calendar) julio
+es_EC Name of month 08 (Gregorian Calendar) agosto
+es_EC Name of month 09 (Gregorian Calendar) septiembre
+es_EC Name of month 10 (Gregorian Calendar) octubre
+es_EC Name of month 11 (Gregorian Calendar) noviembre
+es_EC Name of month 12 (Gregorian Calendar) diciembre
+es_EC Name of month 01 (Islamic Calendar) Muharram
+es_EC Name of month 02 (Islamic Calendar) Safar
+es_EC Name of month 03 (Islamic Calendar) Rabiʻ I
+es_EC Name of month 04 (Islamic Calendar) Rabiʻ II
+es_EC Name of month 05 (Islamic Calendar) Jumada I
+es_EC Name of month 06 (Islamic Calendar) Jumada II
+es_EC Name of month 07 (Islamic Calendar) Rajab
+es_EC Name of month 08 (Islamic Calendar) Shaʻban
+es_EC Name of month 09 (Islamic Calendar) Ramadan
+es_EC Name of month 10 (Islamic Calendar) Shawwal
+es_EC Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_EC Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_EC Name of weekday 01 (Gregorian Calendar) lunes
+es_EC Name of weekday 02 (Gregorian Calendar) martes
+es_EC Name of weekday 03 (Gregorian Calendar) miércoles
+es_EC Name of weekday 04 (Gregorian Calendar) jueves
+es_EC Name of weekday 05 (Gregorian Calendar) viernes
+es_EC Name of weekday 06 (Gregorian Calendar) sábado
+es_EC Name of weekday 07 (Gregorian Calendar) domingo
+es_EC Name of weekday 01 (Islamic Calendar) lunes
+es_EC Name of weekday 02 (Islamic Calendar) martes
+es_EC Name of weekday 03 (Islamic Calendar) miércoles
+es_EC Name of weekday 04 (Islamic Calendar) jueves
+es_EC Name of weekday 05 (Islamic Calendar) viernes
+es_EC Name of weekday 06 (Islamic Calendar) sábado
+es_EC Name of weekday 07 (Islamic Calendar) domingo
+es_ES Language endonym español
+es_ES Country endonym España
+es_ES Floating Point Number -123.456.789,012
+es_ES Percent value -1.234,5679%
+es_ES Currency value € 1.234,56
+es_ES Negative Currency value -€ 1.234,56
+es_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_ES Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_ES Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_ES Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+es_ES Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_ES Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_ES Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_ES Name of month 01 (Gregorian Calendar) enero
+es_ES Name of month 02 (Gregorian Calendar) febrero
+es_ES Name of month 03 (Gregorian Calendar) marzo
+es_ES Name of month 04 (Gregorian Calendar) abril
+es_ES Name of month 05 (Gregorian Calendar) mayo
+es_ES Name of month 06 (Gregorian Calendar) junio
+es_ES Name of month 07 (Gregorian Calendar) julio
+es_ES Name of month 08 (Gregorian Calendar) agosto
+es_ES Name of month 09 (Gregorian Calendar) septiembre
+es_ES Name of month 10 (Gregorian Calendar) octubre
+es_ES Name of month 11 (Gregorian Calendar) noviembre
+es_ES Name of month 12 (Gregorian Calendar) diciembre
+es_ES Name of month 01 (Islamic Calendar) Muharram
+es_ES Name of month 02 (Islamic Calendar) Safar
+es_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+es_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+es_ES Name of month 05 (Islamic Calendar) Jumada I
+es_ES Name of month 06 (Islamic Calendar) Jumada II
+es_ES Name of month 07 (Islamic Calendar) Rajab
+es_ES Name of month 08 (Islamic Calendar) Shaʻban
+es_ES Name of month 09 (Islamic Calendar) Ramadan
+es_ES Name of month 10 (Islamic Calendar) Shawwal
+es_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_ES Name of weekday 01 (Gregorian Calendar) lunes
+es_ES Name of weekday 02 (Gregorian Calendar) martes
+es_ES Name of weekday 03 (Gregorian Calendar) miércoles
+es_ES Name of weekday 04 (Gregorian Calendar) jueves
+es_ES Name of weekday 05 (Gregorian Calendar) viernes
+es_ES Name of weekday 06 (Gregorian Calendar) sábado
+es_ES Name of weekday 07 (Gregorian Calendar) domingo
+es_ES Name of weekday 01 (Islamic Calendar) lunes
+es_ES Name of weekday 02 (Islamic Calendar) martes
+es_ES Name of weekday 03 (Islamic Calendar) miércoles
+es_ES Name of weekday 04 (Islamic Calendar) jueves
+es_ES Name of weekday 05 (Islamic Calendar) viernes
+es_ES Name of weekday 06 (Islamic Calendar) sábado
+es_ES Name of weekday 07 (Islamic Calendar) domingo
+es_GT Language endonym español
+es_GT Country endonym Guatemala
+es_GT Floating Point Number -123,456,789.012
+es_GT Percent value -1,234.5679%
+es_GT Currency value € 1,234.56
+es_GT Negative Currency value -€ 1,234.56
+es_GT Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_GT Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_GT Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_GT Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_GT Date and time short (Islamic Calendar) 18/07/29 12:31
+es_GT Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_GT Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_GT Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_GT Name of month 01 (Gregorian Calendar) enero
+es_GT Name of month 02 (Gregorian Calendar) febrero
+es_GT Name of month 03 (Gregorian Calendar) marzo
+es_GT Name of month 04 (Gregorian Calendar) abril
+es_GT Name of month 05 (Gregorian Calendar) mayo
+es_GT Name of month 06 (Gregorian Calendar) junio
+es_GT Name of month 07 (Gregorian Calendar) julio
+es_GT Name of month 08 (Gregorian Calendar) agosto
+es_GT Name of month 09 (Gregorian Calendar) septiembre
+es_GT Name of month 10 (Gregorian Calendar) octubre
+es_GT Name of month 11 (Gregorian Calendar) noviembre
+es_GT Name of month 12 (Gregorian Calendar) diciembre
+es_GT Name of month 01 (Islamic Calendar) Muharram
+es_GT Name of month 02 (Islamic Calendar) Safar
+es_GT Name of month 03 (Islamic Calendar) Rabiʻ I
+es_GT Name of month 04 (Islamic Calendar) Rabiʻ II
+es_GT Name of month 05 (Islamic Calendar) Jumada I
+es_GT Name of month 06 (Islamic Calendar) Jumada II
+es_GT Name of month 07 (Islamic Calendar) Rajab
+es_GT Name of month 08 (Islamic Calendar) Shaʻban
+es_GT Name of month 09 (Islamic Calendar) Ramadan
+es_GT Name of month 10 (Islamic Calendar) Shawwal
+es_GT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_GT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_GT Name of weekday 01 (Gregorian Calendar) lunes
+es_GT Name of weekday 02 (Gregorian Calendar) martes
+es_GT Name of weekday 03 (Gregorian Calendar) miércoles
+es_GT Name of weekday 04 (Gregorian Calendar) jueves
+es_GT Name of weekday 05 (Gregorian Calendar) viernes
+es_GT Name of weekday 06 (Gregorian Calendar) sábado
+es_GT Name of weekday 07 (Gregorian Calendar) domingo
+es_GT Name of weekday 01 (Islamic Calendar) lunes
+es_GT Name of weekday 02 (Islamic Calendar) martes
+es_GT Name of weekday 03 (Islamic Calendar) miércoles
+es_GT Name of weekday 04 (Islamic Calendar) jueves
+es_GT Name of weekday 05 (Islamic Calendar) viernes
+es_GT Name of weekday 06 (Islamic Calendar) sábado
+es_GT Name of weekday 07 (Islamic Calendar) domingo
+es_HN Language endonym español
+es_HN Country endonym Honduras
+es_HN Floating Point Number -123,456,789.012
+es_HN Percent value -1,234.5679%
+es_HN Currency value € 1,234.56
+es_HN Negative Currency value -€ 1,234.56
+es_HN Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_HN Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_HN Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_HN Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_HN Date and time short (Islamic Calendar) 18/07/29 12:31
+es_HN Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_HN Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_HN Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_HN Name of month 01 (Gregorian Calendar) enero
+es_HN Name of month 02 (Gregorian Calendar) febrero
+es_HN Name of month 03 (Gregorian Calendar) marzo
+es_HN Name of month 04 (Gregorian Calendar) abril
+es_HN Name of month 05 (Gregorian Calendar) mayo
+es_HN Name of month 06 (Gregorian Calendar) junio
+es_HN Name of month 07 (Gregorian Calendar) julio
+es_HN Name of month 08 (Gregorian Calendar) agosto
+es_HN Name of month 09 (Gregorian Calendar) septiembre
+es_HN Name of month 10 (Gregorian Calendar) octubre
+es_HN Name of month 11 (Gregorian Calendar) noviembre
+es_HN Name of month 12 (Gregorian Calendar) diciembre
+es_HN Name of month 01 (Islamic Calendar) Muharram
+es_HN Name of month 02 (Islamic Calendar) Safar
+es_HN Name of month 03 (Islamic Calendar) Rabiʻ I
+es_HN Name of month 04 (Islamic Calendar) Rabiʻ II
+es_HN Name of month 05 (Islamic Calendar) Jumada I
+es_HN Name of month 06 (Islamic Calendar) Jumada II
+es_HN Name of month 07 (Islamic Calendar) Rajab
+es_HN Name of month 08 (Islamic Calendar) Shaʻban
+es_HN Name of month 09 (Islamic Calendar) Ramadan
+es_HN Name of month 10 (Islamic Calendar) Shawwal
+es_HN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_HN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_HN Name of weekday 01 (Gregorian Calendar) lunes
+es_HN Name of weekday 02 (Gregorian Calendar) martes
+es_HN Name of weekday 03 (Gregorian Calendar) miércoles
+es_HN Name of weekday 04 (Gregorian Calendar) jueves
+es_HN Name of weekday 05 (Gregorian Calendar) viernes
+es_HN Name of weekday 06 (Gregorian Calendar) sábado
+es_HN Name of weekday 07 (Gregorian Calendar) domingo
+es_HN Name of weekday 01 (Islamic Calendar) lunes
+es_HN Name of weekday 02 (Islamic Calendar) martes
+es_HN Name of weekday 03 (Islamic Calendar) miércoles
+es_HN Name of weekday 04 (Islamic Calendar) jueves
+es_HN Name of weekday 05 (Islamic Calendar) viernes
+es_HN Name of weekday 06 (Islamic Calendar) sábado
+es_HN Name of weekday 07 (Islamic Calendar) domingo
+es_MX Language endonym español
+es_MX Country endonym México
+es_MX Floating Point Number -123,456,789.012
+es_MX Percent value -1,234.5679%
+es_MX Currency value € 1,234.56
+es_MX Negative Currency value -€ 1,234.56
+es_MX Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_MX Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_MX Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_MX Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_MX Date and time short (Islamic Calendar) 18/07/29 12:31
+es_MX Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_MX Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_MX Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_MX Name of month 01 (Gregorian Calendar) enero
+es_MX Name of month 02 (Gregorian Calendar) febrero
+es_MX Name of month 03 (Gregorian Calendar) marzo
+es_MX Name of month 04 (Gregorian Calendar) abril
+es_MX Name of month 05 (Gregorian Calendar) mayo
+es_MX Name of month 06 (Gregorian Calendar) junio
+es_MX Name of month 07 (Gregorian Calendar) julio
+es_MX Name of month 08 (Gregorian Calendar) agosto
+es_MX Name of month 09 (Gregorian Calendar) septiembre
+es_MX Name of month 10 (Gregorian Calendar) octubre
+es_MX Name of month 11 (Gregorian Calendar) noviembre
+es_MX Name of month 12 (Gregorian Calendar) diciembre
+es_MX Name of month 01 (Islamic Calendar) Muharram
+es_MX Name of month 02 (Islamic Calendar) Safar
+es_MX Name of month 03 (Islamic Calendar) Rabiʻ I
+es_MX Name of month 04 (Islamic Calendar) Rabiʻ II
+es_MX Name of month 05 (Islamic Calendar) Jumada I
+es_MX Name of month 06 (Islamic Calendar) Jumada II
+es_MX Name of month 07 (Islamic Calendar) Rajab
+es_MX Name of month 08 (Islamic Calendar) Shaʻban
+es_MX Name of month 09 (Islamic Calendar) Ramadan
+es_MX Name of month 10 (Islamic Calendar) Shawwal
+es_MX Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_MX Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_MX Name of weekday 01 (Gregorian Calendar) lunes
+es_MX Name of weekday 02 (Gregorian Calendar) martes
+es_MX Name of weekday 03 (Gregorian Calendar) miércoles
+es_MX Name of weekday 04 (Gregorian Calendar) jueves
+es_MX Name of weekday 05 (Gregorian Calendar) viernes
+es_MX Name of weekday 06 (Gregorian Calendar) sábado
+es_MX Name of weekday 07 (Gregorian Calendar) domingo
+es_MX Name of weekday 01 (Islamic Calendar) lunes
+es_MX Name of weekday 02 (Islamic Calendar) martes
+es_MX Name of weekday 03 (Islamic Calendar) miércoles
+es_MX Name of weekday 04 (Islamic Calendar) jueves
+es_MX Name of weekday 05 (Islamic Calendar) viernes
+es_MX Name of weekday 06 (Islamic Calendar) sábado
+es_MX Name of weekday 07 (Islamic Calendar) domingo
+es_NI Language endonym español
+es_NI Country endonym Nicaragua
+es_NI Floating Point Number -123,456,789.012
+es_NI Percent value -1,234.5679%
+es_NI Currency value € 1,234.56
+es_NI Negative Currency value -€ 1,234.56
+es_NI Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_NI Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_NI Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_NI Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_NI Date and time short (Islamic Calendar) 18/07/29 12:31
+es_NI Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_NI Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_NI Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_NI Name of month 01 (Gregorian Calendar) enero
+es_NI Name of month 02 (Gregorian Calendar) febrero
+es_NI Name of month 03 (Gregorian Calendar) marzo
+es_NI Name of month 04 (Gregorian Calendar) abril
+es_NI Name of month 05 (Gregorian Calendar) mayo
+es_NI Name of month 06 (Gregorian Calendar) junio
+es_NI Name of month 07 (Gregorian Calendar) julio
+es_NI Name of month 08 (Gregorian Calendar) agosto
+es_NI Name of month 09 (Gregorian Calendar) septiembre
+es_NI Name of month 10 (Gregorian Calendar) octubre
+es_NI Name of month 11 (Gregorian Calendar) noviembre
+es_NI Name of month 12 (Gregorian Calendar) diciembre
+es_NI Name of month 01 (Islamic Calendar) Muharram
+es_NI Name of month 02 (Islamic Calendar) Safar
+es_NI Name of month 03 (Islamic Calendar) Rabiʻ I
+es_NI Name of month 04 (Islamic Calendar) Rabiʻ II
+es_NI Name of month 05 (Islamic Calendar) Jumada I
+es_NI Name of month 06 (Islamic Calendar) Jumada II
+es_NI Name of month 07 (Islamic Calendar) Rajab
+es_NI Name of month 08 (Islamic Calendar) Shaʻban
+es_NI Name of month 09 (Islamic Calendar) Ramadan
+es_NI Name of month 10 (Islamic Calendar) Shawwal
+es_NI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_NI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_NI Name of weekday 01 (Gregorian Calendar) lunes
+es_NI Name of weekday 02 (Gregorian Calendar) martes
+es_NI Name of weekday 03 (Gregorian Calendar) miércoles
+es_NI Name of weekday 04 (Gregorian Calendar) jueves
+es_NI Name of weekday 05 (Gregorian Calendar) viernes
+es_NI Name of weekday 06 (Gregorian Calendar) sábado
+es_NI Name of weekday 07 (Gregorian Calendar) domingo
+es_NI Name of weekday 01 (Islamic Calendar) lunes
+es_NI Name of weekday 02 (Islamic Calendar) martes
+es_NI Name of weekday 03 (Islamic Calendar) miércoles
+es_NI Name of weekday 04 (Islamic Calendar) jueves
+es_NI Name of weekday 05 (Islamic Calendar) viernes
+es_NI Name of weekday 06 (Islamic Calendar) sábado
+es_NI Name of weekday 07 (Islamic Calendar) domingo
+es_PA Language endonym español
+es_PA Country endonym Panamá
+es_PA Floating Point Number -123,456,789.012
+es_PA Percent value -1,234.5679%
+es_PA Currency value € 1,234.56
+es_PA Negative Currency value -€ 1,234.56
+es_PA Date and time short (Gregorian Calendar) 07/21/08 12:31
+es_PA Date and time medium (Gregorian Calendar) 07/21/2008 12:31:00
+es_PA Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PA Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PA Date and time short (Islamic Calendar) 07/18/29 12:31
+es_PA Date and time medium (Islamic Calendar) 07/18/1429 12:31:00
+es_PA Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PA Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PA Name of month 01 (Gregorian Calendar) enero
+es_PA Name of month 02 (Gregorian Calendar) febrero
+es_PA Name of month 03 (Gregorian Calendar) marzo
+es_PA Name of month 04 (Gregorian Calendar) abril
+es_PA Name of month 05 (Gregorian Calendar) mayo
+es_PA Name of month 06 (Gregorian Calendar) junio
+es_PA Name of month 07 (Gregorian Calendar) julio
+es_PA Name of month 08 (Gregorian Calendar) agosto
+es_PA Name of month 09 (Gregorian Calendar) septiembre
+es_PA Name of month 10 (Gregorian Calendar) octubre
+es_PA Name of month 11 (Gregorian Calendar) noviembre
+es_PA Name of month 12 (Gregorian Calendar) diciembre
+es_PA Name of month 01 (Islamic Calendar) Muharram
+es_PA Name of month 02 (Islamic Calendar) Safar
+es_PA Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PA Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PA Name of month 05 (Islamic Calendar) Jumada I
+es_PA Name of month 06 (Islamic Calendar) Jumada II
+es_PA Name of month 07 (Islamic Calendar) Rajab
+es_PA Name of month 08 (Islamic Calendar) Shaʻban
+es_PA Name of month 09 (Islamic Calendar) Ramadan
+es_PA Name of month 10 (Islamic Calendar) Shawwal
+es_PA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PA Name of weekday 01 (Gregorian Calendar) lunes
+es_PA Name of weekday 02 (Gregorian Calendar) martes
+es_PA Name of weekday 03 (Gregorian Calendar) miércoles
+es_PA Name of weekday 04 (Gregorian Calendar) jueves
+es_PA Name of weekday 05 (Gregorian Calendar) viernes
+es_PA Name of weekday 06 (Gregorian Calendar) sábado
+es_PA Name of weekday 07 (Gregorian Calendar) domingo
+es_PA Name of weekday 01 (Islamic Calendar) lunes
+es_PA Name of weekday 02 (Islamic Calendar) martes
+es_PA Name of weekday 03 (Islamic Calendar) miércoles
+es_PA Name of weekday 04 (Islamic Calendar) jueves
+es_PA Name of weekday 05 (Islamic Calendar) viernes
+es_PA Name of weekday 06 (Islamic Calendar) sábado
+es_PA Name of weekday 07 (Islamic Calendar) domingo
+es_PE Language endonym español
+es_PE Country endonym Perú
+es_PE Floating Point Number -123,456,789.012
+es_PE Percent value -1,234.5679%
+es_PE Currency value € 1,234.56
+es_PE Negative Currency value -€ 1,234.56
+es_PE Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_PE Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_PE Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PE Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12H31'00" GMT+00:00
+es_PE Date and time short (Islamic Calendar) 18/07/29 12:31
+es_PE Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_PE Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PE Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12H31'00" GMT+00:00
+es_PE Name of month 01 (Gregorian Calendar) enero
+es_PE Name of month 02 (Gregorian Calendar) febrero
+es_PE Name of month 03 (Gregorian Calendar) marzo
+es_PE Name of month 04 (Gregorian Calendar) abril
+es_PE Name of month 05 (Gregorian Calendar) mayo
+es_PE Name of month 06 (Gregorian Calendar) junio
+es_PE Name of month 07 (Gregorian Calendar) julio
+es_PE Name of month 08 (Gregorian Calendar) agosto
+es_PE Name of month 09 (Gregorian Calendar) septiembre
+es_PE Name of month 10 (Gregorian Calendar) octubre
+es_PE Name of month 11 (Gregorian Calendar) noviembre
+es_PE Name of month 12 (Gregorian Calendar) diciembre
+es_PE Name of month 01 (Islamic Calendar) Muharram
+es_PE Name of month 02 (Islamic Calendar) Safar
+es_PE Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PE Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PE Name of month 05 (Islamic Calendar) Jumada I
+es_PE Name of month 06 (Islamic Calendar) Jumada II
+es_PE Name of month 07 (Islamic Calendar) Rajab
+es_PE Name of month 08 (Islamic Calendar) Shaʻban
+es_PE Name of month 09 (Islamic Calendar) Ramadan
+es_PE Name of month 10 (Islamic Calendar) Shawwal
+es_PE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PE Name of weekday 01 (Gregorian Calendar) lunes
+es_PE Name of weekday 02 (Gregorian Calendar) martes
+es_PE Name of weekday 03 (Gregorian Calendar) miércoles
+es_PE Name of weekday 04 (Gregorian Calendar) jueves
+es_PE Name of weekday 05 (Gregorian Calendar) viernes
+es_PE Name of weekday 06 (Gregorian Calendar) sábado
+es_PE Name of weekday 07 (Gregorian Calendar) domingo
+es_PE Name of weekday 01 (Islamic Calendar) lunes
+es_PE Name of weekday 02 (Islamic Calendar) martes
+es_PE Name of weekday 03 (Islamic Calendar) miércoles
+es_PE Name of weekday 04 (Islamic Calendar) jueves
+es_PE Name of weekday 05 (Islamic Calendar) viernes
+es_PE Name of weekday 06 (Islamic Calendar) sábado
+es_PE Name of weekday 07 (Islamic Calendar) domingo
+es_PR Language endonym español
+es_PR Country endonym Puerto Rico
+es_PR Floating Point Number -123,456,789.012
+es_PR Percent value -1,234.5679%
+es_PR Currency value € 1,234.56
+es_PR Negative Currency value -€ 1,234.56
+es_PR Date and time short (Gregorian Calendar) 07/21/08 12:31
+es_PR Date and time medium (Gregorian Calendar) 07/21/2008 12:31:00
+es_PR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PR Date and time short (Islamic Calendar) 07/18/29 12:31
+es_PR Date and time medium (Islamic Calendar) 07/18/1429 12:31:00
+es_PR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PR Name of month 01 (Gregorian Calendar) enero
+es_PR Name of month 02 (Gregorian Calendar) febrero
+es_PR Name of month 03 (Gregorian Calendar) marzo
+es_PR Name of month 04 (Gregorian Calendar) abril
+es_PR Name of month 05 (Gregorian Calendar) mayo
+es_PR Name of month 06 (Gregorian Calendar) junio
+es_PR Name of month 07 (Gregorian Calendar) julio
+es_PR Name of month 08 (Gregorian Calendar) agosto
+es_PR Name of month 09 (Gregorian Calendar) septiembre
+es_PR Name of month 10 (Gregorian Calendar) octubre
+es_PR Name of month 11 (Gregorian Calendar) noviembre
+es_PR Name of month 12 (Gregorian Calendar) diciembre
+es_PR Name of month 01 (Islamic Calendar) Muharram
+es_PR Name of month 02 (Islamic Calendar) Safar
+es_PR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PR Name of month 05 (Islamic Calendar) Jumada I
+es_PR Name of month 06 (Islamic Calendar) Jumada II
+es_PR Name of month 07 (Islamic Calendar) Rajab
+es_PR Name of month 08 (Islamic Calendar) Shaʻban
+es_PR Name of month 09 (Islamic Calendar) Ramadan
+es_PR Name of month 10 (Islamic Calendar) Shawwal
+es_PR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PR Name of weekday 01 (Gregorian Calendar) lunes
+es_PR Name of weekday 02 (Gregorian Calendar) martes
+es_PR Name of weekday 03 (Gregorian Calendar) miércoles
+es_PR Name of weekday 04 (Gregorian Calendar) jueves
+es_PR Name of weekday 05 (Gregorian Calendar) viernes
+es_PR Name of weekday 06 (Gregorian Calendar) sábado
+es_PR Name of weekday 07 (Gregorian Calendar) domingo
+es_PR Name of weekday 01 (Islamic Calendar) lunes
+es_PR Name of weekday 02 (Islamic Calendar) martes
+es_PR Name of weekday 03 (Islamic Calendar) miércoles
+es_PR Name of weekday 04 (Islamic Calendar) jueves
+es_PR Name of weekday 05 (Islamic Calendar) viernes
+es_PR Name of weekday 06 (Islamic Calendar) sábado
+es_PR Name of weekday 07 (Islamic Calendar) domingo
+es_PY Language endonym español
+es_PY Country endonym Paraguay
+es_PY Floating Point Number -123.456.789,012
+es_PY Percent value -1.234,5679%
+es_PY Currency value € 1.234,56
+es_PY Negative Currency value € -1.234,56
+es_PY Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_PY Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_PY Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PY Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PY Date and time short (Islamic Calendar) 18/07/29 12:31
+es_PY Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_PY Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PY Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PY Name of month 01 (Gregorian Calendar) enero
+es_PY Name of month 02 (Gregorian Calendar) febrero
+es_PY Name of month 03 (Gregorian Calendar) marzo
+es_PY Name of month 04 (Gregorian Calendar) abril
+es_PY Name of month 05 (Gregorian Calendar) mayo
+es_PY Name of month 06 (Gregorian Calendar) junio
+es_PY Name of month 07 (Gregorian Calendar) julio
+es_PY Name of month 08 (Gregorian Calendar) agosto
+es_PY Name of month 09 (Gregorian Calendar) septiembre
+es_PY Name of month 10 (Gregorian Calendar) octubre
+es_PY Name of month 11 (Gregorian Calendar) noviembre
+es_PY Name of month 12 (Gregorian Calendar) diciembre
+es_PY Name of month 01 (Islamic Calendar) Muharram
+es_PY Name of month 02 (Islamic Calendar) Safar
+es_PY Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PY Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PY Name of month 05 (Islamic Calendar) Jumada I
+es_PY Name of month 06 (Islamic Calendar) Jumada II
+es_PY Name of month 07 (Islamic Calendar) Rajab
+es_PY Name of month 08 (Islamic Calendar) Shaʻban
+es_PY Name of month 09 (Islamic Calendar) Ramadan
+es_PY Name of month 10 (Islamic Calendar) Shawwal
+es_PY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PY Name of weekday 01 (Gregorian Calendar) lunes
+es_PY Name of weekday 02 (Gregorian Calendar) martes
+es_PY Name of weekday 03 (Gregorian Calendar) miércoles
+es_PY Name of weekday 04 (Gregorian Calendar) jueves
+es_PY Name of weekday 05 (Gregorian Calendar) viernes
+es_PY Name of weekday 06 (Gregorian Calendar) sábado
+es_PY Name of weekday 07 (Gregorian Calendar) domingo
+es_PY Name of weekday 01 (Islamic Calendar) lunes
+es_PY Name of weekday 02 (Islamic Calendar) martes
+es_PY Name of weekday 03 (Islamic Calendar) miércoles
+es_PY Name of weekday 04 (Islamic Calendar) jueves
+es_PY Name of weekday 05 (Islamic Calendar) viernes
+es_PY Name of weekday 06 (Islamic Calendar) sábado
+es_PY Name of weekday 07 (Islamic Calendar) domingo
+es_SV Language endonym español
+es_SV Country endonym El Salvador
+es_SV Floating Point Number -123,456,789.012
+es_SV Percent value -1,234.5679%
+es_SV Currency value € 1,234.56
+es_SV Negative Currency value -€ 1,234.56
+es_SV Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_SV Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_SV Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_SV Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_SV Date and time short (Islamic Calendar) 18/07/29 12:31
+es_SV Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_SV Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_SV Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_SV Name of month 01 (Gregorian Calendar) enero
+es_SV Name of month 02 (Gregorian Calendar) febrero
+es_SV Name of month 03 (Gregorian Calendar) marzo
+es_SV Name of month 04 (Gregorian Calendar) abril
+es_SV Name of month 05 (Gregorian Calendar) mayo
+es_SV Name of month 06 (Gregorian Calendar) junio
+es_SV Name of month 07 (Gregorian Calendar) julio
+es_SV Name of month 08 (Gregorian Calendar) agosto
+es_SV Name of month 09 (Gregorian Calendar) septiembre
+es_SV Name of month 10 (Gregorian Calendar) octubre
+es_SV Name of month 11 (Gregorian Calendar) noviembre
+es_SV Name of month 12 (Gregorian Calendar) diciembre
+es_SV Name of month 01 (Islamic Calendar) Muharram
+es_SV Name of month 02 (Islamic Calendar) Safar
+es_SV Name of month 03 (Islamic Calendar) Rabiʻ I
+es_SV Name of month 04 (Islamic Calendar) Rabiʻ II
+es_SV Name of month 05 (Islamic Calendar) Jumada I
+es_SV Name of month 06 (Islamic Calendar) Jumada II
+es_SV Name of month 07 (Islamic Calendar) Rajab
+es_SV Name of month 08 (Islamic Calendar) Shaʻban
+es_SV Name of month 09 (Islamic Calendar) Ramadan
+es_SV Name of month 10 (Islamic Calendar) Shawwal
+es_SV Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_SV Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_SV Name of weekday 01 (Gregorian Calendar) lunes
+es_SV Name of weekday 02 (Gregorian Calendar) martes
+es_SV Name of weekday 03 (Gregorian Calendar) miércoles
+es_SV Name of weekday 04 (Gregorian Calendar) jueves
+es_SV Name of weekday 05 (Gregorian Calendar) viernes
+es_SV Name of weekday 06 (Gregorian Calendar) sábado
+es_SV Name of weekday 07 (Gregorian Calendar) domingo
+es_SV Name of weekday 01 (Islamic Calendar) lunes
+es_SV Name of weekday 02 (Islamic Calendar) martes
+es_SV Name of weekday 03 (Islamic Calendar) miércoles
+es_SV Name of weekday 04 (Islamic Calendar) jueves
+es_SV Name of weekday 05 (Islamic Calendar) viernes
+es_SV Name of weekday 06 (Islamic Calendar) sábado
+es_SV Name of weekday 07 (Islamic Calendar) domingo
+es_US Language endonym español
+es_US Country endonym Estados Unidos
+es_US Floating Point Number -123,456,789.012
+es_US Percent value -1,234.5679%
+es_US Currency value € 1,234.56
+es_US Negative Currency value -€ 1,234.56
+es_US Date and time short (Gregorian Calendar) 7/21/08 12:31 p.m.
+es_US Date and time medium (Gregorian Calendar) jul 21, 2008 12:31:00 p.m.
+es_US Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 p.m. GMT+00:00
+es_US Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 p.m. GMT+00:00
+es_US Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+es_US Date and time medium (Islamic Calendar) Rajab 18, 1429 12:31:00 PM
+es_US Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 PM GMT+00:00
+es_US Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 PM GMT+00:00
+es_US Name of month 01 (Gregorian Calendar) enero
+es_US Name of month 02 (Gregorian Calendar) febrero
+es_US Name of month 03 (Gregorian Calendar) marzo
+es_US Name of month 04 (Gregorian Calendar) abril
+es_US Name of month 05 (Gregorian Calendar) mayo
+es_US Name of month 06 (Gregorian Calendar) junio
+es_US Name of month 07 (Gregorian Calendar) julio
+es_US Name of month 08 (Gregorian Calendar) agosto
+es_US Name of month 09 (Gregorian Calendar) septiembre
+es_US Name of month 10 (Gregorian Calendar) octubre
+es_US Name of month 11 (Gregorian Calendar) noviembre
+es_US Name of month 12 (Gregorian Calendar) diciembre
+es_US Name of month 01 (Islamic Calendar) Muharram
+es_US Name of month 02 (Islamic Calendar) Safar
+es_US Name of month 03 (Islamic Calendar) Rabiʻ I
+es_US Name of month 04 (Islamic Calendar) Rabiʻ II
+es_US Name of month 05 (Islamic Calendar) Jumada I
+es_US Name of month 06 (Islamic Calendar) Jumada II
+es_US Name of month 07 (Islamic Calendar) Rajab
+es_US Name of month 08 (Islamic Calendar) Shaʻban
+es_US Name of month 09 (Islamic Calendar) Ramadan
+es_US Name of month 10 (Islamic Calendar) Shawwal
+es_US Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_US Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_US Name of weekday 01 (Gregorian Calendar) lunes
+es_US Name of weekday 02 (Gregorian Calendar) martes
+es_US Name of weekday 03 (Gregorian Calendar) miércoles
+es_US Name of weekday 04 (Gregorian Calendar) jueves
+es_US Name of weekday 05 (Gregorian Calendar) viernes
+es_US Name of weekday 06 (Gregorian Calendar) sábado
+es_US Name of weekday 07 (Gregorian Calendar) domingo
+es_US Name of weekday 01 (Islamic Calendar) lunes
+es_US Name of weekday 02 (Islamic Calendar) martes
+es_US Name of weekday 03 (Islamic Calendar) miércoles
+es_US Name of weekday 04 (Islamic Calendar) jueves
+es_US Name of weekday 05 (Islamic Calendar) viernes
+es_US Name of weekday 06 (Islamic Calendar) sábado
+es_US Name of weekday 07 (Islamic Calendar) domingo
+es_UY Language endonym español
+es_UY Country endonym Uruguay
+es_UY Floating Point Number -123.456.789,012
+es_UY Percent value -1.234,5679%
+es_UY Currency value € 1.234,56
+es_UY Negative Currency value (€ 1.234,56)
+es_UY Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_UY Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_UY Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_UY Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_UY Date and time short (Islamic Calendar) 18/07/29 12:31
+es_UY Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_UY Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_UY Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_UY Name of month 01 (Gregorian Calendar) enero
+es_UY Name of month 02 (Gregorian Calendar) febrero
+es_UY Name of month 03 (Gregorian Calendar) marzo
+es_UY Name of month 04 (Gregorian Calendar) abril
+es_UY Name of month 05 (Gregorian Calendar) mayo
+es_UY Name of month 06 (Gregorian Calendar) junio
+es_UY Name of month 07 (Gregorian Calendar) julio
+es_UY Name of month 08 (Gregorian Calendar) agosto
+es_UY Name of month 09 (Gregorian Calendar) septiembre
+es_UY Name of month 10 (Gregorian Calendar) octubre
+es_UY Name of month 11 (Gregorian Calendar) noviembre
+es_UY Name of month 12 (Gregorian Calendar) diciembre
+es_UY Name of month 01 (Islamic Calendar) Muharram
+es_UY Name of month 02 (Islamic Calendar) Safar
+es_UY Name of month 03 (Islamic Calendar) Rabiʻ I
+es_UY Name of month 04 (Islamic Calendar) Rabiʻ II
+es_UY Name of month 05 (Islamic Calendar) Jumada I
+es_UY Name of month 06 (Islamic Calendar) Jumada II
+es_UY Name of month 07 (Islamic Calendar) Rajab
+es_UY Name of month 08 (Islamic Calendar) Shaʻban
+es_UY Name of month 09 (Islamic Calendar) Ramadan
+es_UY Name of month 10 (Islamic Calendar) Shawwal
+es_UY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_UY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_UY Name of weekday 01 (Gregorian Calendar) lunes
+es_UY Name of weekday 02 (Gregorian Calendar) martes
+es_UY Name of weekday 03 (Gregorian Calendar) miércoles
+es_UY Name of weekday 04 (Gregorian Calendar) jueves
+es_UY Name of weekday 05 (Gregorian Calendar) viernes
+es_UY Name of weekday 06 (Gregorian Calendar) sábado
+es_UY Name of weekday 07 (Gregorian Calendar) domingo
+es_UY Name of weekday 01 (Islamic Calendar) lunes
+es_UY Name of weekday 02 (Islamic Calendar) martes
+es_UY Name of weekday 03 (Islamic Calendar) miércoles
+es_UY Name of weekday 04 (Islamic Calendar) jueves
+es_UY Name of weekday 05 (Islamic Calendar) viernes
+es_UY Name of weekday 06 (Islamic Calendar) sábado
+es_UY Name of weekday 07 (Islamic Calendar) domingo
+es_VE Language endonym español
+es_VE Country endonym Venezuela
+es_VE Floating Point Number -123.456.789,012
+es_VE Percent value -1.234,5679%
+es_VE Currency value €1.234,56
+es_VE Negative Currency value €-1.234,56
+es_VE Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_VE Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_VE Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_VE Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_VE Date and time short (Islamic Calendar) 18/07/29 12:31
+es_VE Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_VE Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_VE Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_VE Name of month 01 (Gregorian Calendar) enero
+es_VE Name of month 02 (Gregorian Calendar) febrero
+es_VE Name of month 03 (Gregorian Calendar) marzo
+es_VE Name of month 04 (Gregorian Calendar) abril
+es_VE Name of month 05 (Gregorian Calendar) mayo
+es_VE Name of month 06 (Gregorian Calendar) junio
+es_VE Name of month 07 (Gregorian Calendar) julio
+es_VE Name of month 08 (Gregorian Calendar) agosto
+es_VE Name of month 09 (Gregorian Calendar) septiembre
+es_VE Name of month 10 (Gregorian Calendar) octubre
+es_VE Name of month 11 (Gregorian Calendar) noviembre
+es_VE Name of month 12 (Gregorian Calendar) diciembre
+es_VE Name of month 01 (Islamic Calendar) Muharram
+es_VE Name of month 02 (Islamic Calendar) Safar
+es_VE Name of month 03 (Islamic Calendar) Rabiʻ I
+es_VE Name of month 04 (Islamic Calendar) Rabiʻ II
+es_VE Name of month 05 (Islamic Calendar) Jumada I
+es_VE Name of month 06 (Islamic Calendar) Jumada II
+es_VE Name of month 07 (Islamic Calendar) Rajab
+es_VE Name of month 08 (Islamic Calendar) Shaʻban
+es_VE Name of month 09 (Islamic Calendar) Ramadan
+es_VE Name of month 10 (Islamic Calendar) Shawwal
+es_VE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_VE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_VE Name of weekday 01 (Gregorian Calendar) lunes
+es_VE Name of weekday 02 (Gregorian Calendar) martes
+es_VE Name of weekday 03 (Gregorian Calendar) miércoles
+es_VE Name of weekday 04 (Gregorian Calendar) jueves
+es_VE Name of weekday 05 (Gregorian Calendar) viernes
+es_VE Name of weekday 06 (Gregorian Calendar) sábado
+es_VE Name of weekday 07 (Gregorian Calendar) domingo
+es_VE Name of weekday 01 (Islamic Calendar) lunes
+es_VE Name of weekday 02 (Islamic Calendar) martes
+es_VE Name of weekday 03 (Islamic Calendar) miércoles
+es_VE Name of weekday 04 (Islamic Calendar) jueves
+es_VE Name of weekday 05 (Islamic Calendar) viernes
+es_VE Name of weekday 06 (Islamic Calendar) sábado
+es_VE Name of weekday 07 (Islamic Calendar) domingo
+eu Language endonym euskara
+eu Country endonym
+eu Floating Point Number -123.456.789,012
+eu Percent value -1.234,5679%
+eu Currency value 1.234,56 €
+eu Negative Currency value -1.234,56 €
+eu Date and time short (Gregorian Calendar) 2008-07-21 12:31
+eu Date and time medium (Gregorian Calendar) 2008 uzt 21 12:31:00
+eu Date and time long (Gregorian Calendar) 2008eko uztren 21a 12:31:00 GMT+00:00
+eu Date and time full (Gregorian Calendar) astelehena, 2008eko uztailaren 21a 12:31:00 GMT+00:00
+eu Date and time short (Islamic Calendar) 1429-07-18 12:31
+eu Date and time medium (Islamic Calendar) 1429 Rajab 18 12:31:00
+eu Date and time long (Islamic Calendar) 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu Date and time full (Islamic Calendar) astelehena, 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu Name of month 01 (Gregorian Calendar) urtarrila
+eu Name of month 02 (Gregorian Calendar) otsaila
+eu Name of month 03 (Gregorian Calendar) martxoa
+eu Name of month 04 (Gregorian Calendar) apirila
+eu Name of month 05 (Gregorian Calendar) maiatza
+eu Name of month 06 (Gregorian Calendar) ekaina
+eu Name of month 07 (Gregorian Calendar) uztaila
+eu Name of month 08 (Gregorian Calendar) abuztua
+eu Name of month 09 (Gregorian Calendar) iraila
+eu Name of month 10 (Gregorian Calendar) urria
+eu Name of month 11 (Gregorian Calendar) azaroa
+eu Name of month 12 (Gregorian Calendar) abendua
+eu Name of month 01 (Islamic Calendar) Muharram
+eu Name of month 02 (Islamic Calendar) Safar
+eu Name of month 03 (Islamic Calendar) Rabiʻ I
+eu Name of month 04 (Islamic Calendar) Rabiʻ II
+eu Name of month 05 (Islamic Calendar) Jumada I
+eu Name of month 06 (Islamic Calendar) Jumada II
+eu Name of month 07 (Islamic Calendar) Rajab
+eu Name of month 08 (Islamic Calendar) Shaʻban
+eu Name of month 09 (Islamic Calendar) Ramadan
+eu Name of month 10 (Islamic Calendar) Shawwal
+eu Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+eu Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+eu Name of weekday 01 (Gregorian Calendar) astelehena
+eu Name of weekday 02 (Gregorian Calendar) asteartea
+eu Name of weekday 03 (Gregorian Calendar) asteazkena
+eu Name of weekday 04 (Gregorian Calendar) osteguna
+eu Name of weekday 05 (Gregorian Calendar) ostirala
+eu Name of weekday 06 (Gregorian Calendar) larunbata
+eu Name of weekday 07 (Gregorian Calendar) igandea
+eu Name of weekday 01 (Islamic Calendar) astelehena
+eu Name of weekday 02 (Islamic Calendar) asteartea
+eu Name of weekday 03 (Islamic Calendar) asteazkena
+eu Name of weekday 04 (Islamic Calendar) osteguna
+eu Name of weekday 05 (Islamic Calendar) ostirala
+eu Name of weekday 06 (Islamic Calendar) larunbata
+eu Name of weekday 07 (Islamic Calendar) igandea
+eu_ES Language endonym euskara
+eu_ES Country endonym Espainia
+eu_ES Floating Point Number -123.456.789,012
+eu_ES Percent value -1.234,5679%
+eu_ES Currency value 1.234,56 €
+eu_ES Negative Currency value -1.234,56 €
+eu_ES Date and time short (Gregorian Calendar) 2008-07-21 12:31
+eu_ES Date and time medium (Gregorian Calendar) 2008 uzt 21 12:31:00
+eu_ES Date and time long (Gregorian Calendar) 2008eko uztren 21a 12:31:00 GMT+00:00
+eu_ES Date and time full (Gregorian Calendar) astelehena, 2008eko uztailaren 21a 12:31:00 GMT+00:00
+eu_ES Date and time short (Islamic Calendar) 1429-07-18 12:31
+eu_ES Date and time medium (Islamic Calendar) 1429 Rajab 18 12:31:00
+eu_ES Date and time long (Islamic Calendar) 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu_ES Date and time full (Islamic Calendar) astelehena, 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu_ES Name of month 01 (Gregorian Calendar) urtarrila
+eu_ES Name of month 02 (Gregorian Calendar) otsaila
+eu_ES Name of month 03 (Gregorian Calendar) martxoa
+eu_ES Name of month 04 (Gregorian Calendar) apirila
+eu_ES Name of month 05 (Gregorian Calendar) maiatza
+eu_ES Name of month 06 (Gregorian Calendar) ekaina
+eu_ES Name of month 07 (Gregorian Calendar) uztaila
+eu_ES Name of month 08 (Gregorian Calendar) abuztua
+eu_ES Name of month 09 (Gregorian Calendar) iraila
+eu_ES Name of month 10 (Gregorian Calendar) urria
+eu_ES Name of month 11 (Gregorian Calendar) azaroa
+eu_ES Name of month 12 (Gregorian Calendar) abendua
+eu_ES Name of month 01 (Islamic Calendar) Muharram
+eu_ES Name of month 02 (Islamic Calendar) Safar
+eu_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+eu_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+eu_ES Name of month 05 (Islamic Calendar) Jumada I
+eu_ES Name of month 06 (Islamic Calendar) Jumada II
+eu_ES Name of month 07 (Islamic Calendar) Rajab
+eu_ES Name of month 08 (Islamic Calendar) Shaʻban
+eu_ES Name of month 09 (Islamic Calendar) Ramadan
+eu_ES Name of month 10 (Islamic Calendar) Shawwal
+eu_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+eu_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+eu_ES Name of weekday 01 (Gregorian Calendar) astelehena
+eu_ES Name of weekday 02 (Gregorian Calendar) asteartea
+eu_ES Name of weekday 03 (Gregorian Calendar) asteazkena
+eu_ES Name of weekday 04 (Gregorian Calendar) osteguna
+eu_ES Name of weekday 05 (Gregorian Calendar) ostirala
+eu_ES Name of weekday 06 (Gregorian Calendar) larunbata
+eu_ES Name of weekday 07 (Gregorian Calendar) igandea
+eu_ES Name of weekday 01 (Islamic Calendar) astelehena
+eu_ES Name of weekday 02 (Islamic Calendar) asteartea
+eu_ES Name of weekday 03 (Islamic Calendar) asteazkena
+eu_ES Name of weekday 04 (Islamic Calendar) osteguna
+eu_ES Name of weekday 05 (Islamic Calendar) ostirala
+eu_ES Name of weekday 06 (Islamic Calendar) larunbata
+eu_ES Name of weekday 07 (Islamic Calendar) igandea
+fa Language endonym فارسی
+fa Country endonym
+fa Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa Percent value −‪٪۱٬۲۳۴٫۵۶۷۹‬
+fa Currency value ۱٬۲۳۴٫۵۶ €
+fa Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa Date and time short (Gregorian Calendar) ۰۸/۷/۲۱،‏ ۱۲:۳۱
+fa Date and time medium (Gregorian Calendar) ۲۰۰۸/۷/۲۱،‏ ۱۲:۳۱:۰۰
+fa Date and time long (Gregorian Calendar) ۲۱ ژوئیهٔ ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time full (Gregorian Calendar) دوشنبه ۲۱ ژوئیهٔ ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Name of month 01 (Gregorian Calendar) ژانویهٔ
+fa Name of month 02 (Gregorian Calendar) فوریهٔ
+fa Name of month 03 (Gregorian Calendar) مارس
+fa Name of month 04 (Gregorian Calendar) آوریل
+fa Name of month 05 (Gregorian Calendar) مهٔ
+fa Name of month 06 (Gregorian Calendar) ژوئن
+fa Name of month 07 (Gregorian Calendar) ژوئیهٔ
+fa Name of month 08 (Gregorian Calendar) اوت
+fa Name of month 09 (Gregorian Calendar) سپتامبر
+fa Name of month 10 (Gregorian Calendar) اکتبر
+fa Name of month 11 (Gregorian Calendar) نوامبر
+fa Name of month 12 (Gregorian Calendar) دسامبر
+fa Name of month 01 (Islamic Calendar) محرم
+fa Name of month 02 (Islamic Calendar) صفر
+fa Name of month 03 (Islamic Calendar) ربیع الاول
+fa Name of month 04 (Islamic Calendar) ربیع الثانی
+fa Name of month 05 (Islamic Calendar) جمادی الاول
+fa Name of month 06 (Islamic Calendar) جمادی الثانی
+fa Name of month 07 (Islamic Calendar) رجب
+fa Name of month 08 (Islamic Calendar) شعبان
+fa Name of month 09 (Islamic Calendar) رمضان
+fa Name of month 10 (Islamic Calendar) شوال
+fa Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa Name of weekday 05 (Gregorian Calendar) جمعه
+fa Name of weekday 06 (Gregorian Calendar) شنبه
+fa Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa Name of weekday 01 (Islamic Calendar) دوشنبه
+fa Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa Name of weekday 05 (Islamic Calendar) جمعه
+fa Name of weekday 06 (Islamic Calendar) شنبه
+fa Name of weekday 07 (Islamic Calendar) یکشنبه
+fa_AF Language endonym دری
+fa_AF Country endonym AF
+fa_AF Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa_AF Percent value −‪۱٬۲۳۴٫۵۶۷۹٪‬
+fa_AF Currency value ۱٬۲۳۴٫۵۶ €
+fa_AF Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa_AF Date and time short (Gregorian Calendar) ۰۸/۷/۲۱،‏ ۱۲:۳۱
+fa_AF Date and time medium (Gregorian Calendar) ۲۰۰۸/۷/۲۱،‏ ۱۲:۳۱:۰۰
+fa_AF Date and time long (Gregorian Calendar) ۲۱ جولای ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time full (Gregorian Calendar) دوشنبه ۲۱ جولای ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa_AF Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa_AF Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Name of month 01 (Gregorian Calendar) جنوری
+fa_AF Name of month 02 (Gregorian Calendar) فبروری
+fa_AF Name of month 03 (Gregorian Calendar) مارچ
+fa_AF Name of month 04 (Gregorian Calendar) اپریل
+fa_AF Name of month 05 (Gregorian Calendar) می
+fa_AF Name of month 06 (Gregorian Calendar) جون
+fa_AF Name of month 07 (Gregorian Calendar) جولای
+fa_AF Name of month 08 (Gregorian Calendar) اگست
+fa_AF Name of month 09 (Gregorian Calendar) سپتمبر
+fa_AF Name of month 10 (Gregorian Calendar) اکتوبر
+fa_AF Name of month 11 (Gregorian Calendar) نومبر
+fa_AF Name of month 12 (Gregorian Calendar) دسمبر
+fa_AF Name of month 01 (Islamic Calendar) محرم
+fa_AF Name of month 02 (Islamic Calendar) صفر
+fa_AF Name of month 03 (Islamic Calendar) ربیع الاول
+fa_AF Name of month 04 (Islamic Calendar) ربیع الثانی
+fa_AF Name of month 05 (Islamic Calendar) جمادی الاول
+fa_AF Name of month 06 (Islamic Calendar) جمادی الثانی
+fa_AF Name of month 07 (Islamic Calendar) رجب
+fa_AF Name of month 08 (Islamic Calendar) شعبان
+fa_AF Name of month 09 (Islamic Calendar) رمضان
+fa_AF Name of month 10 (Islamic Calendar) شوال
+fa_AF Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa_AF Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa_AF Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa_AF Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa_AF Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa_AF Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa_AF Name of weekday 05 (Gregorian Calendar) جمعه
+fa_AF Name of weekday 06 (Gregorian Calendar) شنبه
+fa_AF Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa_AF Name of weekday 01 (Islamic Calendar) دوشنبه
+fa_AF Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa_AF Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa_AF Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa_AF Name of weekday 05 (Islamic Calendar) جمعه
+fa_AF Name of weekday 06 (Islamic Calendar) شنبه
+fa_AF Name of weekday 07 (Islamic Calendar) یکشنبه
+fa_IR Language endonym فارسی
+fa_IR Country endonym ایران
+fa_IR Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa_IR Percent value −‪٪۱٬۲۳۴٫۵۶۷۹‬
+fa_IR Currency value ۱٬۲۳۴٫۵۶ €
+fa_IR Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa_IR Date and time short (Gregorian Calendar) ۰۸/۷/۲۱،‏ ۱۲:۳۱
+fa_IR Date and time medium (Gregorian Calendar) ۲۰۰۸/۷/۲۱،‏ ۱۲:۳۱:۰۰
+fa_IR Date and time long (Gregorian Calendar) ۲۱ ژوئیهٔ ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time full (Gregorian Calendar) دوشنبه ۲۱ ژوئیهٔ ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa_IR Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa_IR Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Name of month 01 (Gregorian Calendar) ژانویهٔ
+fa_IR Name of month 02 (Gregorian Calendar) فوریهٔ
+fa_IR Name of month 03 (Gregorian Calendar) مارس
+fa_IR Name of month 04 (Gregorian Calendar) آوریل
+fa_IR Name of month 05 (Gregorian Calendar) مهٔ
+fa_IR Name of month 06 (Gregorian Calendar) ژوئن
+fa_IR Name of month 07 (Gregorian Calendar) ژوئیهٔ
+fa_IR Name of month 08 (Gregorian Calendar) اوت
+fa_IR Name of month 09 (Gregorian Calendar) سپتامبر
+fa_IR Name of month 10 (Gregorian Calendar) اکتبر
+fa_IR Name of month 11 (Gregorian Calendar) نوامبر
+fa_IR Name of month 12 (Gregorian Calendar) دسامبر
+fa_IR Name of month 01 (Islamic Calendar) محرم
+fa_IR Name of month 02 (Islamic Calendar) صفر
+fa_IR Name of month 03 (Islamic Calendar) ربیع الاول
+fa_IR Name of month 04 (Islamic Calendar) ربیع الثانی
+fa_IR Name of month 05 (Islamic Calendar) جمادی الاول
+fa_IR Name of month 06 (Islamic Calendar) جمادی الثانی
+fa_IR Name of month 07 (Islamic Calendar) رجب
+fa_IR Name of month 08 (Islamic Calendar) شعبان
+fa_IR Name of month 09 (Islamic Calendar) رمضان
+fa_IR Name of month 10 (Islamic Calendar) شوال
+fa_IR Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa_IR Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa_IR Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa_IR Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa_IR Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa_IR Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa_IR Name of weekday 05 (Gregorian Calendar) جمعه
+fa_IR Name of weekday 06 (Gregorian Calendar) شنبه
+fa_IR Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa_IR Name of weekday 01 (Islamic Calendar) دوشنبه
+fa_IR Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa_IR Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa_IR Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa_IR Name of weekday 05 (Islamic Calendar) جمعه
+fa_IR Name of weekday 06 (Islamic Calendar) شنبه
+fa_IR Name of weekday 07 (Islamic Calendar) یکشنبه
+fi Language endonym suomi
+fi Country endonym
+fi Floating Point Number -123 456 789,012
+fi Percent value -1 234,5679 %
+fi Currency value 1 234,56 €
+fi Negative Currency value -1 234,56 €
+fi Date and time short (Gregorian Calendar) 21.7.2008 12.31
+fi Date and time medium (Gregorian Calendar) 21.7.2008 12.31.00
+fi Date and time long (Gregorian Calendar) 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi Date and time full (Gregorian Calendar) maanantaina 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi Date and time short (Islamic Calendar) 18.7.1429 12.31
+fi Date and time medium (Islamic Calendar) 18.7.1429 12.31.00
+fi Date and time long (Islamic Calendar) 18. radžab 1429 12.31.00 UTC+0.00
+fi Date and time full (Islamic Calendar) maanantaina 18. radžab 1429 12.31.00 UTC+0.00
+fi Name of month 01 (Gregorian Calendar) tammikuuta
+fi Name of month 02 (Gregorian Calendar) helmikuuta
+fi Name of month 03 (Gregorian Calendar) maaliskuuta
+fi Name of month 04 (Gregorian Calendar) huhtikuuta
+fi Name of month 05 (Gregorian Calendar) toukokuuta
+fi Name of month 06 (Gregorian Calendar) kesäkuuta
+fi Name of month 07 (Gregorian Calendar) heinäkuuta
+fi Name of month 08 (Gregorian Calendar) elokuuta
+fi Name of month 09 (Gregorian Calendar) syyskuuta
+fi Name of month 10 (Gregorian Calendar) lokakuuta
+fi Name of month 11 (Gregorian Calendar) marraskuuta
+fi Name of month 12 (Gregorian Calendar) joulukuuta
+fi Name of month 01 (Islamic Calendar) muharram
+fi Name of month 02 (Islamic Calendar) safar
+fi Name of month 03 (Islamic Calendar) rabi’ al-awwal
+fi Name of month 04 (Islamic Calendar) rabi’ al-akhir
+fi Name of month 05 (Islamic Calendar) džumada-l-ula
+fi Name of month 06 (Islamic Calendar) džumada-l-akhira
+fi Name of month 07 (Islamic Calendar) radžab
+fi Name of month 08 (Islamic Calendar) ša’ban
+fi Name of month 09 (Islamic Calendar) ramadan
+fi Name of month 10 (Islamic Calendar) šawwal
+fi Name of month 11 (Islamic Calendar) dhu-l-qa’da
+fi Name of month 12 (Islamic Calendar) dhu-l-hiddža
+fi Name of weekday 01 (Gregorian Calendar) maanantaina
+fi Name of weekday 02 (Gregorian Calendar) tiistaina
+fi Name of weekday 03 (Gregorian Calendar) keskiviikkona
+fi Name of weekday 04 (Gregorian Calendar) torstaina
+fi Name of weekday 05 (Gregorian Calendar) perjantaina
+fi Name of weekday 06 (Gregorian Calendar) lauantaina
+fi Name of weekday 07 (Gregorian Calendar) sunnuntaina
+fi Name of weekday 01 (Islamic Calendar) maanantaina
+fi Name of weekday 02 (Islamic Calendar) tiistaina
+fi Name of weekday 03 (Islamic Calendar) keskiviikkona
+fi Name of weekday 04 (Islamic Calendar) torstaina
+fi Name of weekday 05 (Islamic Calendar) perjantaina
+fi Name of weekday 06 (Islamic Calendar) lauantaina
+fi Name of weekday 07 (Islamic Calendar) sunnuntaina
+fi_FI Language endonym suomi
+fi_FI Country endonym Suomi
+fi_FI Floating Point Number -123 456 789,012
+fi_FI Percent value -1 234,5679 %
+fi_FI Currency value 1 234,56 €
+fi_FI Negative Currency value -1 234,56 €
+fi_FI Date and time short (Gregorian Calendar) 21.7.2008 12.31
+fi_FI Date and time medium (Gregorian Calendar) 21.7.2008 12.31.00
+fi_FI Date and time long (Gregorian Calendar) 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi_FI Date and time full (Gregorian Calendar) maanantaina 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi_FI Date and time short (Islamic Calendar) 18.7.1429 12.31
+fi_FI Date and time medium (Islamic Calendar) 18.7.1429 12.31.00
+fi_FI Date and time long (Islamic Calendar) 18. radžab 1429 12.31.00 UTC+0.00
+fi_FI Date and time full (Islamic Calendar) maanantaina 18. radžab 1429 12.31.00 UTC+0.00
+fi_FI Name of month 01 (Gregorian Calendar) tammikuuta
+fi_FI Name of month 02 (Gregorian Calendar) helmikuuta
+fi_FI Name of month 03 (Gregorian Calendar) maaliskuuta
+fi_FI Name of month 04 (Gregorian Calendar) huhtikuuta
+fi_FI Name of month 05 (Gregorian Calendar) toukokuuta
+fi_FI Name of month 06 (Gregorian Calendar) kesäkuuta
+fi_FI Name of month 07 (Gregorian Calendar) heinäkuuta
+fi_FI Name of month 08 (Gregorian Calendar) elokuuta
+fi_FI Name of month 09 (Gregorian Calendar) syyskuuta
+fi_FI Name of month 10 (Gregorian Calendar) lokakuuta
+fi_FI Name of month 11 (Gregorian Calendar) marraskuuta
+fi_FI Name of month 12 (Gregorian Calendar) joulukuuta
+fi_FI Name of month 01 (Islamic Calendar) muharram
+fi_FI Name of month 02 (Islamic Calendar) safar
+fi_FI Name of month 03 (Islamic Calendar) rabi’ al-awwal
+fi_FI Name of month 04 (Islamic Calendar) rabi’ al-akhir
+fi_FI Name of month 05 (Islamic Calendar) džumada-l-ula
+fi_FI Name of month 06 (Islamic Calendar) džumada-l-akhira
+fi_FI Name of month 07 (Islamic Calendar) radžab
+fi_FI Name of month 08 (Islamic Calendar) ša’ban
+fi_FI Name of month 09 (Islamic Calendar) ramadan
+fi_FI Name of month 10 (Islamic Calendar) šawwal
+fi_FI Name of month 11 (Islamic Calendar) dhu-l-qa’da
+fi_FI Name of month 12 (Islamic Calendar) dhu-l-hiddža
+fi_FI Name of weekday 01 (Gregorian Calendar) maanantaina
+fi_FI Name of weekday 02 (Gregorian Calendar) tiistaina
+fi_FI Name of weekday 03 (Gregorian Calendar) keskiviikkona
+fi_FI Name of weekday 04 (Gregorian Calendar) torstaina
+fi_FI Name of weekday 05 (Gregorian Calendar) perjantaina
+fi_FI Name of weekday 06 (Gregorian Calendar) lauantaina
+fi_FI Name of weekday 07 (Gregorian Calendar) sunnuntaina
+fi_FI Name of weekday 01 (Islamic Calendar) maanantaina
+fi_FI Name of weekday 02 (Islamic Calendar) tiistaina
+fi_FI Name of weekday 03 (Islamic Calendar) keskiviikkona
+fi_FI Name of weekday 04 (Islamic Calendar) torstaina
+fi_FI Name of weekday 05 (Islamic Calendar) perjantaina
+fi_FI Name of weekday 06 (Islamic Calendar) lauantaina
+fi_FI Name of weekday 07 (Islamic Calendar) sunnuntaina
+fr Language endonym français
+fr Country endonym
+fr Floating Point Number -123 456 789,012
+fr Percent value -1 234,5679 %
+fr Currency value 1 234,56 €
+fr Negative Currency value -1 234,56 €
+fr Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr Date and time short (Islamic Calendar) 18/07/29 12:31
+fr Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr Name of month 01 (Gregorian Calendar) janvier
+fr Name of month 02 (Gregorian Calendar) février
+fr Name of month 03 (Gregorian Calendar) mars
+fr Name of month 04 (Gregorian Calendar) avril
+fr Name of month 05 (Gregorian Calendar) mai
+fr Name of month 06 (Gregorian Calendar) juin
+fr Name of month 07 (Gregorian Calendar) juillet
+fr Name of month 08 (Gregorian Calendar) août
+fr Name of month 09 (Gregorian Calendar) septembre
+fr Name of month 10 (Gregorian Calendar) octobre
+fr Name of month 11 (Gregorian Calendar) novembre
+fr Name of month 12 (Gregorian Calendar) décembre
+fr Name of month 01 (Islamic Calendar) Mouharram
+fr Name of month 02 (Islamic Calendar) Safar
+fr Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr Name of month 07 (Islamic Calendar) Radjab
+fr Name of month 08 (Islamic Calendar) Chaʻban
+fr Name of month 09 (Islamic Calendar) Ramadan
+fr Name of month 10 (Islamic Calendar) Chaououal
+fr Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr Name of weekday 01 (Gregorian Calendar) lundi
+fr Name of weekday 02 (Gregorian Calendar) mardi
+fr Name of weekday 03 (Gregorian Calendar) mercredi
+fr Name of weekday 04 (Gregorian Calendar) jeudi
+fr Name of weekday 05 (Gregorian Calendar) vendredi
+fr Name of weekday 06 (Gregorian Calendar) samedi
+fr Name of weekday 07 (Gregorian Calendar) dimanche
+fr Name of weekday 01 (Islamic Calendar) lundi
+fr Name of weekday 02 (Islamic Calendar) mardi
+fr Name of weekday 03 (Islamic Calendar) mercredi
+fr Name of weekday 04 (Islamic Calendar) jeudi
+fr Name of weekday 05 (Islamic Calendar) vendredi
+fr Name of weekday 06 (Islamic Calendar) samedi
+fr Name of weekday 07 (Islamic Calendar) dimanche
+fr_BE Language endonym français
+fr_BE Country endonym Belgique
+fr_BE Floating Point Number -123.456.789,012
+fr_BE Percent value -1.234,5679 %
+fr_BE Currency value 1.234,56 €
+fr_BE Negative Currency value -1.234,56 €
+fr_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_BE Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_BE Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_BE Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12 h 31 min 00 s UTC+00:00
+fr_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_BE Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_BE Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_BE Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12 h 31 min 00 s UTC+00:00
+fr_BE Name of month 01 (Gregorian Calendar) janvier
+fr_BE Name of month 02 (Gregorian Calendar) février
+fr_BE Name of month 03 (Gregorian Calendar) mars
+fr_BE Name of month 04 (Gregorian Calendar) avril
+fr_BE Name of month 05 (Gregorian Calendar) mai
+fr_BE Name of month 06 (Gregorian Calendar) juin
+fr_BE Name of month 07 (Gregorian Calendar) juillet
+fr_BE Name of month 08 (Gregorian Calendar) août
+fr_BE Name of month 09 (Gregorian Calendar) septembre
+fr_BE Name of month 10 (Gregorian Calendar) octobre
+fr_BE Name of month 11 (Gregorian Calendar) novembre
+fr_BE Name of month 12 (Gregorian Calendar) décembre
+fr_BE Name of month 01 (Islamic Calendar) Mouharram
+fr_BE Name of month 02 (Islamic Calendar) Safar
+fr_BE Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_BE Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_BE Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_BE Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_BE Name of month 07 (Islamic Calendar) Radjab
+fr_BE Name of month 08 (Islamic Calendar) Chaʻban
+fr_BE Name of month 09 (Islamic Calendar) Ramadan
+fr_BE Name of month 10 (Islamic Calendar) Chaououal
+fr_BE Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_BE Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_BE Name of weekday 01 (Gregorian Calendar) lundi
+fr_BE Name of weekday 02 (Gregorian Calendar) mardi
+fr_BE Name of weekday 03 (Gregorian Calendar) mercredi
+fr_BE Name of weekday 04 (Gregorian Calendar) jeudi
+fr_BE Name of weekday 05 (Gregorian Calendar) vendredi
+fr_BE Name of weekday 06 (Gregorian Calendar) samedi
+fr_BE Name of weekday 07 (Gregorian Calendar) dimanche
+fr_BE Name of weekday 01 (Islamic Calendar) lundi
+fr_BE Name of weekday 02 (Islamic Calendar) mardi
+fr_BE Name of weekday 03 (Islamic Calendar) mercredi
+fr_BE Name of weekday 04 (Islamic Calendar) jeudi
+fr_BE Name of weekday 05 (Islamic Calendar) vendredi
+fr_BE Name of weekday 06 (Islamic Calendar) samedi
+fr_BE Name of weekday 07 (Islamic Calendar) dimanche
+fr_CA Language endonym français
+fr_CA Country endonym Canada
+fr_CA Floating Point Number -123 456 789,012
+fr_CA Percent value -1 234,5679 %
+fr_CA Currency value 1 234,56 €
+fr_CA Negative Currency value (1 234,56 €)
+fr_CA Date and time short (Gregorian Calendar) 08-07-21 12:31
+fr_CA Date and time medium (Gregorian Calendar) 2008-07-21 12:31:00
+fr_CA Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_CA Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12 h 31 min 00 s UTC+00:00
+fr_CA Date and time short (Islamic Calendar) 29-07-18 12:31
+fr_CA Date and time medium (Islamic Calendar) 1429-07-18 12:31:00
+fr_CA Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_CA Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12 h 31 min 00 s UTC+00:00
+fr_CA Name of month 01 (Gregorian Calendar) janvier
+fr_CA Name of month 02 (Gregorian Calendar) février
+fr_CA Name of month 03 (Gregorian Calendar) mars
+fr_CA Name of month 04 (Gregorian Calendar) avril
+fr_CA Name of month 05 (Gregorian Calendar) mai
+fr_CA Name of month 06 (Gregorian Calendar) juin
+fr_CA Name of month 07 (Gregorian Calendar) juillet
+fr_CA Name of month 08 (Gregorian Calendar) août
+fr_CA Name of month 09 (Gregorian Calendar) septembre
+fr_CA Name of month 10 (Gregorian Calendar) octobre
+fr_CA Name of month 11 (Gregorian Calendar) novembre
+fr_CA Name of month 12 (Gregorian Calendar) décembre
+fr_CA Name of month 01 (Islamic Calendar) Mouharram
+fr_CA Name of month 02 (Islamic Calendar) Safar
+fr_CA Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_CA Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_CA Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_CA Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_CA Name of month 07 (Islamic Calendar) Radjab
+fr_CA Name of month 08 (Islamic Calendar) Chaʻban
+fr_CA Name of month 09 (Islamic Calendar) Ramadan
+fr_CA Name of month 10 (Islamic Calendar) Chaououal
+fr_CA Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_CA Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_CA Name of weekday 01 (Gregorian Calendar) lundi
+fr_CA Name of weekday 02 (Gregorian Calendar) mardi
+fr_CA Name of weekday 03 (Gregorian Calendar) mercredi
+fr_CA Name of weekday 04 (Gregorian Calendar) jeudi
+fr_CA Name of weekday 05 (Gregorian Calendar) vendredi
+fr_CA Name of weekday 06 (Gregorian Calendar) samedi
+fr_CA Name of weekday 07 (Gregorian Calendar) dimanche
+fr_CA Name of weekday 01 (Islamic Calendar) lundi
+fr_CA Name of weekday 02 (Islamic Calendar) mardi
+fr_CA Name of weekday 03 (Islamic Calendar) mercredi
+fr_CA Name of weekday 04 (Islamic Calendar) jeudi
+fr_CA Name of weekday 05 (Islamic Calendar) vendredi
+fr_CA Name of weekday 06 (Islamic Calendar) samedi
+fr_CA Name of weekday 07 (Islamic Calendar) dimanche
+fr_CH Language endonym français
+fr_CH Country endonym Suisse
+fr_CH Floating Point Number -123'456'789.012
+fr_CH Percent value -1'234.5679 %
+fr_CH Currency value € 1'234.56
+fr_CH Negative Currency value €-1'234.56
+fr_CH Date and time short (Gregorian Calendar) 21.07.08 12:31
+fr_CH Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_CH Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_CH Date and time full (Gregorian Calendar) lundi, 21 juillet 2008 12.31:00 h UTC+00:00
+fr_CH Date and time short (Islamic Calendar) 18.07.29 12:31
+fr_CH Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_CH Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_CH Date and time full (Islamic Calendar) lundi, 18 Radjab 1429 12.31:00 h UTC+00:00
+fr_CH Name of month 01 (Gregorian Calendar) janvier
+fr_CH Name of month 02 (Gregorian Calendar) février
+fr_CH Name of month 03 (Gregorian Calendar) mars
+fr_CH Name of month 04 (Gregorian Calendar) avril
+fr_CH Name of month 05 (Gregorian Calendar) mai
+fr_CH Name of month 06 (Gregorian Calendar) juin
+fr_CH Name of month 07 (Gregorian Calendar) juillet
+fr_CH Name of month 08 (Gregorian Calendar) août
+fr_CH Name of month 09 (Gregorian Calendar) septembre
+fr_CH Name of month 10 (Gregorian Calendar) octobre
+fr_CH Name of month 11 (Gregorian Calendar) novembre
+fr_CH Name of month 12 (Gregorian Calendar) décembre
+fr_CH Name of month 01 (Islamic Calendar) Mouharram
+fr_CH Name of month 02 (Islamic Calendar) Safar
+fr_CH Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_CH Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_CH Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_CH Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_CH Name of month 07 (Islamic Calendar) Radjab
+fr_CH Name of month 08 (Islamic Calendar) Chaʻban
+fr_CH Name of month 09 (Islamic Calendar) Ramadan
+fr_CH Name of month 10 (Islamic Calendar) Chaououal
+fr_CH Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_CH Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_CH Name of weekday 01 (Gregorian Calendar) lundi
+fr_CH Name of weekday 02 (Gregorian Calendar) mardi
+fr_CH Name of weekday 03 (Gregorian Calendar) mercredi
+fr_CH Name of weekday 04 (Gregorian Calendar) jeudi
+fr_CH Name of weekday 05 (Gregorian Calendar) vendredi
+fr_CH Name of weekday 06 (Gregorian Calendar) samedi
+fr_CH Name of weekday 07 (Gregorian Calendar) dimanche
+fr_CH Name of weekday 01 (Islamic Calendar) lundi
+fr_CH Name of weekday 02 (Islamic Calendar) mardi
+fr_CH Name of weekday 03 (Islamic Calendar) mercredi
+fr_CH Name of weekday 04 (Islamic Calendar) jeudi
+fr_CH Name of weekday 05 (Islamic Calendar) vendredi
+fr_CH Name of weekday 06 (Islamic Calendar) samedi
+fr_CH Name of weekday 07 (Islamic Calendar) dimanche
+fr_FR Language endonym français
+fr_FR Country endonym France
+fr_FR Floating Point Number -123 456 789,012
+fr_FR Percent value -1 234,5679 %
+fr_FR Currency value 1 234,56 €
+fr_FR Negative Currency value -1 234,56 €
+fr_FR Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_FR Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_FR Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_FR Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_FR Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_FR Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_FR Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_FR Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_FR Name of month 01 (Gregorian Calendar) janvier
+fr_FR Name of month 02 (Gregorian Calendar) février
+fr_FR Name of month 03 (Gregorian Calendar) mars
+fr_FR Name of month 04 (Gregorian Calendar) avril
+fr_FR Name of month 05 (Gregorian Calendar) mai
+fr_FR Name of month 06 (Gregorian Calendar) juin
+fr_FR Name of month 07 (Gregorian Calendar) juillet
+fr_FR Name of month 08 (Gregorian Calendar) août
+fr_FR Name of month 09 (Gregorian Calendar) septembre
+fr_FR Name of month 10 (Gregorian Calendar) octobre
+fr_FR Name of month 11 (Gregorian Calendar) novembre
+fr_FR Name of month 12 (Gregorian Calendar) décembre
+fr_FR Name of month 01 (Islamic Calendar) Mouharram
+fr_FR Name of month 02 (Islamic Calendar) Safar
+fr_FR Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_FR Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_FR Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_FR Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_FR Name of month 07 (Islamic Calendar) Radjab
+fr_FR Name of month 08 (Islamic Calendar) Chaʻban
+fr_FR Name of month 09 (Islamic Calendar) Ramadan
+fr_FR Name of month 10 (Islamic Calendar) Chaououal
+fr_FR Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_FR Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_FR Name of weekday 01 (Gregorian Calendar) lundi
+fr_FR Name of weekday 02 (Gregorian Calendar) mardi
+fr_FR Name of weekday 03 (Gregorian Calendar) mercredi
+fr_FR Name of weekday 04 (Gregorian Calendar) jeudi
+fr_FR Name of weekday 05 (Gregorian Calendar) vendredi
+fr_FR Name of weekday 06 (Gregorian Calendar) samedi
+fr_FR Name of weekday 07 (Gregorian Calendar) dimanche
+fr_FR Name of weekday 01 (Islamic Calendar) lundi
+fr_FR Name of weekday 02 (Islamic Calendar) mardi
+fr_FR Name of weekday 03 (Islamic Calendar) mercredi
+fr_FR Name of weekday 04 (Islamic Calendar) jeudi
+fr_FR Name of weekday 05 (Islamic Calendar) vendredi
+fr_FR Name of weekday 06 (Islamic Calendar) samedi
+fr_FR Name of weekday 07 (Islamic Calendar) dimanche
+fr_LU Language endonym français
+fr_LU Country endonym Luxembourg
+fr_LU Floating Point Number -123.456.789,012
+fr_LU Percent value -1.234,5679 %
+fr_LU Currency value 1.234,56 €
+fr_LU Negative Currency value -1.234,56 €
+fr_LU Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_LU Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_LU Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_LU Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_LU Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_LU Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_LU Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_LU Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_LU Name of month 01 (Gregorian Calendar) janvier
+fr_LU Name of month 02 (Gregorian Calendar) février
+fr_LU Name of month 03 (Gregorian Calendar) mars
+fr_LU Name of month 04 (Gregorian Calendar) avril
+fr_LU Name of month 05 (Gregorian Calendar) mai
+fr_LU Name of month 06 (Gregorian Calendar) juin
+fr_LU Name of month 07 (Gregorian Calendar) juillet
+fr_LU Name of month 08 (Gregorian Calendar) août
+fr_LU Name of month 09 (Gregorian Calendar) septembre
+fr_LU Name of month 10 (Gregorian Calendar) octobre
+fr_LU Name of month 11 (Gregorian Calendar) novembre
+fr_LU Name of month 12 (Gregorian Calendar) décembre
+fr_LU Name of month 01 (Islamic Calendar) Mouharram
+fr_LU Name of month 02 (Islamic Calendar) Safar
+fr_LU Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_LU Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_LU Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_LU Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_LU Name of month 07 (Islamic Calendar) Radjab
+fr_LU Name of month 08 (Islamic Calendar) Chaʻban
+fr_LU Name of month 09 (Islamic Calendar) Ramadan
+fr_LU Name of month 10 (Islamic Calendar) Chaououal
+fr_LU Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_LU Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_LU Name of weekday 01 (Gregorian Calendar) lundi
+fr_LU Name of weekday 02 (Gregorian Calendar) mardi
+fr_LU Name of weekday 03 (Gregorian Calendar) mercredi
+fr_LU Name of weekday 04 (Gregorian Calendar) jeudi
+fr_LU Name of weekday 05 (Gregorian Calendar) vendredi
+fr_LU Name of weekday 06 (Gregorian Calendar) samedi
+fr_LU Name of weekday 07 (Gregorian Calendar) dimanche
+fr_LU Name of weekday 01 (Islamic Calendar) lundi
+fr_LU Name of weekday 02 (Islamic Calendar) mardi
+fr_LU Name of weekday 03 (Islamic Calendar) mercredi
+fr_LU Name of weekday 04 (Islamic Calendar) jeudi
+fr_LU Name of weekday 05 (Islamic Calendar) vendredi
+fr_LU Name of weekday 06 (Islamic Calendar) samedi
+fr_LU Name of weekday 07 (Islamic Calendar) dimanche
+fr_MC Language endonym français
+fr_MC Country endonym Monaco
+fr_MC Floating Point Number -123 456 789,012
+fr_MC Percent value -1 234,5679 %
+fr_MC Currency value 1 234,56 €
+fr_MC Negative Currency value -1 234,56 €
+fr_MC Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_MC Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_MC Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_MC Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_MC Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_MC Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_MC Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_MC Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_MC Name of month 01 (Gregorian Calendar) janvier
+fr_MC Name of month 02 (Gregorian Calendar) février
+fr_MC Name of month 03 (Gregorian Calendar) mars
+fr_MC Name of month 04 (Gregorian Calendar) avril
+fr_MC Name of month 05 (Gregorian Calendar) mai
+fr_MC Name of month 06 (Gregorian Calendar) juin
+fr_MC Name of month 07 (Gregorian Calendar) juillet
+fr_MC Name of month 08 (Gregorian Calendar) août
+fr_MC Name of month 09 (Gregorian Calendar) septembre
+fr_MC Name of month 10 (Gregorian Calendar) octobre
+fr_MC Name of month 11 (Gregorian Calendar) novembre
+fr_MC Name of month 12 (Gregorian Calendar) décembre
+fr_MC Name of month 01 (Islamic Calendar) Mouharram
+fr_MC Name of month 02 (Islamic Calendar) Safar
+fr_MC Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_MC Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_MC Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_MC Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_MC Name of month 07 (Islamic Calendar) Radjab
+fr_MC Name of month 08 (Islamic Calendar) Chaʻban
+fr_MC Name of month 09 (Islamic Calendar) Ramadan
+fr_MC Name of month 10 (Islamic Calendar) Chaououal
+fr_MC Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_MC Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_MC Name of weekday 01 (Gregorian Calendar) lundi
+fr_MC Name of weekday 02 (Gregorian Calendar) mardi
+fr_MC Name of weekday 03 (Gregorian Calendar) mercredi
+fr_MC Name of weekday 04 (Gregorian Calendar) jeudi
+fr_MC Name of weekday 05 (Gregorian Calendar) vendredi
+fr_MC Name of weekday 06 (Gregorian Calendar) samedi
+fr_MC Name of weekday 07 (Gregorian Calendar) dimanche
+fr_MC Name of weekday 01 (Islamic Calendar) lundi
+fr_MC Name of weekday 02 (Islamic Calendar) mardi
+fr_MC Name of weekday 03 (Islamic Calendar) mercredi
+fr_MC Name of weekday 04 (Islamic Calendar) jeudi
+fr_MC Name of weekday 05 (Islamic Calendar) vendredi
+fr_MC Name of weekday 06 (Islamic Calendar) samedi
+fr_MC Name of weekday 07 (Islamic Calendar) dimanche
+fr_SN Language endonym français
+fr_SN Country endonym Sénégal
+fr_SN Floating Point Number -123 456 789,012
+fr_SN Percent value -1 234,5679 %
+fr_SN Currency value 1 234,56 €
+fr_SN Negative Currency value -1 234,56 €
+fr_SN Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_SN Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_SN Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_SN Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_SN Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_SN Date and time medium (Islamic Calendar) 18 Radjab 1429 12:31:00
+fr_SN Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_SN Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_SN Name of month 01 (Gregorian Calendar) janvier
+fr_SN Name of month 02 (Gregorian Calendar) février
+fr_SN Name of month 03 (Gregorian Calendar) mars
+fr_SN Name of month 04 (Gregorian Calendar) avril
+fr_SN Name of month 05 (Gregorian Calendar) mai
+fr_SN Name of month 06 (Gregorian Calendar) juin
+fr_SN Name of month 07 (Gregorian Calendar) juillet
+fr_SN Name of month 08 (Gregorian Calendar) août
+fr_SN Name of month 09 (Gregorian Calendar) septembre
+fr_SN Name of month 10 (Gregorian Calendar) octobre
+fr_SN Name of month 11 (Gregorian Calendar) novembre
+fr_SN Name of month 12 (Gregorian Calendar) décembre
+fr_SN Name of month 01 (Islamic Calendar) Mouharram
+fr_SN Name of month 02 (Islamic Calendar) Safar
+fr_SN Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_SN Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_SN Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_SN Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_SN Name of month 07 (Islamic Calendar) Radjab
+fr_SN Name of month 08 (Islamic Calendar) Chaʻban
+fr_SN Name of month 09 (Islamic Calendar) Ramadan
+fr_SN Name of month 10 (Islamic Calendar) Chaououal
+fr_SN Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_SN Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_SN Name of weekday 01 (Gregorian Calendar) lundi
+fr_SN Name of weekday 02 (Gregorian Calendar) mardi
+fr_SN Name of weekday 03 (Gregorian Calendar) mercredi
+fr_SN Name of weekday 04 (Gregorian Calendar) jeudi
+fr_SN Name of weekday 05 (Gregorian Calendar) vendredi
+fr_SN Name of weekday 06 (Gregorian Calendar) samedi
+fr_SN Name of weekday 07 (Gregorian Calendar) dimanche
+fr_SN Name of weekday 01 (Islamic Calendar) lundi
+fr_SN Name of weekday 02 (Islamic Calendar) mardi
+fr_SN Name of weekday 03 (Islamic Calendar) mercredi
+fr_SN Name of weekday 04 (Islamic Calendar) jeudi
+fr_SN Name of weekday 05 (Islamic Calendar) vendredi
+fr_SN Name of weekday 06 (Islamic Calendar) samedi
+fr_SN Name of weekday 07 (Islamic Calendar) dimanche
+gl Language endonym galego
+gl Country endonym
+gl Floating Point Number -123.456.789,012
+gl Percent value -1.234,5679%
+gl Currency value 1.234,56 €
+gl Negative Currency value -1.234,56 €
+gl Date and time short (Gregorian Calendar) 21/07/08 12:31
+gl Date and time medium (Gregorian Calendar) 21 Xul, 2008 12:31:00
+gl Date and time long (Gregorian Calendar) 21 Xullo 2008 12:31:00 GMT+00:00
+gl Date and time full (Gregorian Calendar) Luns 21 Xullo 2008 12:31:00 GMT+00:00
+gl Date and time short (Islamic Calendar) 18/07/29 12:31
+gl Date and time medium (Islamic Calendar) 18 Rajab, 1429 12:31:00
+gl Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+gl Date and time full (Islamic Calendar) Luns 18 Rajab 1429 12:31:00 GMT+00:00
+gl Name of month 01 (Gregorian Calendar) Xaneiro
+gl Name of month 02 (Gregorian Calendar) Febreiro
+gl Name of month 03 (Gregorian Calendar) Marzo
+gl Name of month 04 (Gregorian Calendar) Abril
+gl Name of month 05 (Gregorian Calendar) Maio
+gl Name of month 06 (Gregorian Calendar) Xuño
+gl Name of month 07 (Gregorian Calendar) Xullo
+gl Name of month 08 (Gregorian Calendar) Agosto
+gl Name of month 09 (Gregorian Calendar) Setembro
+gl Name of month 10 (Gregorian Calendar) Outubro
+gl Name of month 11 (Gregorian Calendar) Novembro
+gl Name of month 12 (Gregorian Calendar) Decembro
+gl Name of month 01 (Islamic Calendar) Muharram
+gl Name of month 02 (Islamic Calendar) Safar
+gl Name of month 03 (Islamic Calendar) Rabiʻ I
+gl Name of month 04 (Islamic Calendar) Rabiʻ II
+gl Name of month 05 (Islamic Calendar) Jumada I
+gl Name of month 06 (Islamic Calendar) Jumada II
+gl Name of month 07 (Islamic Calendar) Rajab
+gl Name of month 08 (Islamic Calendar) Shaʻban
+gl Name of month 09 (Islamic Calendar) Ramadan
+gl Name of month 10 (Islamic Calendar) Shawwal
+gl Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+gl Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+gl Name of weekday 01 (Gregorian Calendar) Luns
+gl Name of weekday 02 (Gregorian Calendar) Martes
+gl Name of weekday 03 (Gregorian Calendar) Mércores
+gl Name of weekday 04 (Gregorian Calendar) Xoves
+gl Name of weekday 05 (Gregorian Calendar) Venres
+gl Name of weekday 06 (Gregorian Calendar) Sábado
+gl Name of weekday 07 (Gregorian Calendar) Domingo
+gl Name of weekday 01 (Islamic Calendar) Luns
+gl Name of weekday 02 (Islamic Calendar) Martes
+gl Name of weekday 03 (Islamic Calendar) Mércores
+gl Name of weekday 04 (Islamic Calendar) Xoves
+gl Name of weekday 05 (Islamic Calendar) Venres
+gl Name of weekday 06 (Islamic Calendar) Sábado
+gl Name of weekday 07 (Islamic Calendar) Domingo
+gl_ES Language endonym galego
+gl_ES Country endonym España
+gl_ES Floating Point Number -123.456.789,012
+gl_ES Percent value -1.234,5679%
+gl_ES Currency value 1.234,56 €
+gl_ES Negative Currency value -1.234,56 €
+gl_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+gl_ES Date and time medium (Gregorian Calendar) 21 Xul, 2008 12:31:00
+gl_ES Date and time long (Gregorian Calendar) 21 Xullo 2008 12:31:00 GMT+00:00
+gl_ES Date and time full (Gregorian Calendar) Luns 21 Xullo 2008 12:31:00 GMT+00:00
+gl_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+gl_ES Date and time medium (Islamic Calendar) 18 Rajab, 1429 12:31:00
+gl_ES Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+gl_ES Date and time full (Islamic Calendar) Luns 18 Rajab 1429 12:31:00 GMT+00:00
+gl_ES Name of month 01 (Gregorian Calendar) Xaneiro
+gl_ES Name of month 02 (Gregorian Calendar) Febreiro
+gl_ES Name of month 03 (Gregorian Calendar) Marzo
+gl_ES Name of month 04 (Gregorian Calendar) Abril
+gl_ES Name of month 05 (Gregorian Calendar) Maio
+gl_ES Name of month 06 (Gregorian Calendar) Xuño
+gl_ES Name of month 07 (Gregorian Calendar) Xullo
+gl_ES Name of month 08 (Gregorian Calendar) Agosto
+gl_ES Name of month 09 (Gregorian Calendar) Setembro
+gl_ES Name of month 10 (Gregorian Calendar) Outubro
+gl_ES Name of month 11 (Gregorian Calendar) Novembro
+gl_ES Name of month 12 (Gregorian Calendar) Decembro
+gl_ES Name of month 01 (Islamic Calendar) Muharram
+gl_ES Name of month 02 (Islamic Calendar) Safar
+gl_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+gl_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+gl_ES Name of month 05 (Islamic Calendar) Jumada I
+gl_ES Name of month 06 (Islamic Calendar) Jumada II
+gl_ES Name of month 07 (Islamic Calendar) Rajab
+gl_ES Name of month 08 (Islamic Calendar) Shaʻban
+gl_ES Name of month 09 (Islamic Calendar) Ramadan
+gl_ES Name of month 10 (Islamic Calendar) Shawwal
+gl_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+gl_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+gl_ES Name of weekday 01 (Gregorian Calendar) Luns
+gl_ES Name of weekday 02 (Gregorian Calendar) Martes
+gl_ES Name of weekday 03 (Gregorian Calendar) Mércores
+gl_ES Name of weekday 04 (Gregorian Calendar) Xoves
+gl_ES Name of weekday 05 (Gregorian Calendar) Venres
+gl_ES Name of weekday 06 (Gregorian Calendar) Sábado
+gl_ES Name of weekday 07 (Gregorian Calendar) Domingo
+gl_ES Name of weekday 01 (Islamic Calendar) Luns
+gl_ES Name of weekday 02 (Islamic Calendar) Martes
+gl_ES Name of weekday 03 (Islamic Calendar) Mércores
+gl_ES Name of weekday 04 (Islamic Calendar) Xoves
+gl_ES Name of weekday 05 (Islamic Calendar) Venres
+gl_ES Name of weekday 06 (Islamic Calendar) Sábado
+gl_ES Name of weekday 07 (Islamic Calendar) Domingo
+hi Language endonym हिन्दी
+hi Country endonym
+hi Floating Point Number -१२,३४,५६,७८९.०१२
+hi Percent value -१,२३४.५६७९%
+hi Currency value € १,२३४.५६
+hi Negative Currency value -€ १,२३४.५६
+hi Date and time short (Gregorian Calendar) २१-७-०८ १२:३१ PM
+hi Date and time medium (Gregorian Calendar) २१-०७-२००८ १२:३१:०० PM
+hi Date and time long (Gregorian Calendar) २१ जुलाई २००८ १२:३१:०० PM GMT+००:००
+hi Date and time full (Gregorian Calendar) सोमवार, २१ जुलाई २००८ १२:३१:०० PM GMT+००:००
+hi Date and time short (Islamic Calendar) १८-७-२९ १२:३१ PM
+hi Date and time medium (Islamic Calendar) १८-०७-१४२९ १२:३१:०० PM
+hi Date and time long (Islamic Calendar) १८ रजब १४२९ १२:३१:०० PM GMT+००:००
+hi Date and time full (Islamic Calendar) सोमवार, १८ रजब १४२९ १२:३१:०० PM GMT+००:००
+hi Name of month 01 (Gregorian Calendar) जनवरी
+hi Name of month 02 (Gregorian Calendar) फरवरी
+hi Name of month 03 (Gregorian Calendar) मार्च
+hi Name of month 04 (Gregorian Calendar) अप्रैल
+hi Name of month 05 (Gregorian Calendar) मई
+hi Name of month 06 (Gregorian Calendar) जून
+hi Name of month 07 (Gregorian Calendar) जुलाई
+hi Name of month 08 (Gregorian Calendar) अगस्त
+hi Name of month 09 (Gregorian Calendar) सितम्बर
+hi Name of month 10 (Gregorian Calendar) अक्तूबर
+hi Name of month 11 (Gregorian Calendar) नवम्बर
+hi Name of month 12 (Gregorian Calendar) दिसम्बर
+hi Name of month 01 (Islamic Calendar) मुहर्रम
+hi Name of month 02 (Islamic Calendar) सफर
+hi Name of month 03 (Islamic Calendar) राबी प्रथम
+hi Name of month 04 (Islamic Calendar) राबी द्वितीय
+hi Name of month 05 (Islamic Calendar) जुम्डा प्रथम
+hi Name of month 06 (Islamic Calendar) जुम्डा द्वितीय
+hi Name of month 07 (Islamic Calendar) रजब
+hi Name of month 08 (Islamic Calendar) शावन
+hi Name of month 09 (Islamic Calendar) रमजान
+hi Name of month 10 (Islamic Calendar) शव्व्ल
+hi Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+hi Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+hi Name of weekday 01 (Gregorian Calendar) सोमवार
+hi Name of weekday 02 (Gregorian Calendar) मंगलवार
+hi Name of weekday 03 (Gregorian Calendar) बुधवार
+hi Name of weekday 04 (Gregorian Calendar) गुरुवार
+hi Name of weekday 05 (Gregorian Calendar) शुक्रवार
+hi Name of weekday 06 (Gregorian Calendar) शनिवार
+hi Name of weekday 07 (Gregorian Calendar) रविवार
+hi Name of weekday 01 (Islamic Calendar) सोमवार
+hi Name of weekday 02 (Islamic Calendar) मंगलवार
+hi Name of weekday 03 (Islamic Calendar) बुधवार
+hi Name of weekday 04 (Islamic Calendar) गुरुवार
+hi Name of weekday 05 (Islamic Calendar) शुक्रवार
+hi Name of weekday 06 (Islamic Calendar) शनिवार
+hi Name of weekday 07 (Islamic Calendar) रविवार
+hi_IN Language endonym हिन्दी
+hi_IN Country endonym भारत
+hi_IN Floating Point Number -१२,३४,५६,७८९.०१२
+hi_IN Percent value -१,२३४.५६७९%
+hi_IN Currency value € १,२३४.५६
+hi_IN Negative Currency value -€ १,२३४.५६
+hi_IN Date and time short (Gregorian Calendar) २१-७-०८ १२:३१ PM
+hi_IN Date and time medium (Gregorian Calendar) २१-०७-२००८ १२:३१:०० PM
+hi_IN Date and time long (Gregorian Calendar) २१ जुलाई २००८ १२:३१:०० PM GMT+००:००
+hi_IN Date and time full (Gregorian Calendar) सोमवार, २१ जुलाई २००८ १२:३१:०० PM GMT+००:००
+hi_IN Date and time short (Islamic Calendar) १८-७-२९ १२:३१ PM
+hi_IN Date and time medium (Islamic Calendar) १८-०७-१४२९ १२:३१:०० PM
+hi_IN Date and time long (Islamic Calendar) १८ रजब १४२९ १२:३१:०० PM GMT+००:००
+hi_IN Date and time full (Islamic Calendar) सोमवार, १८ रजब १४२९ १२:३१:०० PM GMT+००:००
+hi_IN Name of month 01 (Gregorian Calendar) जनवरी
+hi_IN Name of month 02 (Gregorian Calendar) फरवरी
+hi_IN Name of month 03 (Gregorian Calendar) मार्च
+hi_IN Name of month 04 (Gregorian Calendar) अप्रैल
+hi_IN Name of month 05 (Gregorian Calendar) मई
+hi_IN Name of month 06 (Gregorian Calendar) जून
+hi_IN Name of month 07 (Gregorian Calendar) जुलाई
+hi_IN Name of month 08 (Gregorian Calendar) अगस्त
+hi_IN Name of month 09 (Gregorian Calendar) सितम्बर
+hi_IN Name of month 10 (Gregorian Calendar) अक्तूबर
+hi_IN Name of month 11 (Gregorian Calendar) नवम्बर
+hi_IN Name of month 12 (Gregorian Calendar) दिसम्बर
+hi_IN Name of month 01 (Islamic Calendar) मुहर्रम
+hi_IN Name of month 02 (Islamic Calendar) सफर
+hi_IN Name of month 03 (Islamic Calendar) राबी प्रथम
+hi_IN Name of month 04 (Islamic Calendar) राबी द्वितीय
+hi_IN Name of month 05 (Islamic Calendar) जुम्डा प्रथम
+hi_IN Name of month 06 (Islamic Calendar) जुम्डा द्वितीय
+hi_IN Name of month 07 (Islamic Calendar) रजब
+hi_IN Name of month 08 (Islamic Calendar) शावन
+hi_IN Name of month 09 (Islamic Calendar) रमजान
+hi_IN Name of month 10 (Islamic Calendar) शव्व्ल
+hi_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+hi_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+hi_IN Name of weekday 01 (Gregorian Calendar) सोमवार
+hi_IN Name of weekday 02 (Gregorian Calendar) मंगलवार
+hi_IN Name of weekday 03 (Gregorian Calendar) बुधवार
+hi_IN Name of weekday 04 (Gregorian Calendar) गुरुवार
+hi_IN Name of weekday 05 (Gregorian Calendar) शुक्रवार
+hi_IN Name of weekday 06 (Gregorian Calendar) शनिवार
+hi_IN Name of weekday 07 (Gregorian Calendar) रविवार
+hi_IN Name of weekday 01 (Islamic Calendar) सोमवार
+hi_IN Name of weekday 02 (Islamic Calendar) मंगलवार
+hi_IN Name of weekday 03 (Islamic Calendar) बुधवार
+hi_IN Name of weekday 04 (Islamic Calendar) गुरुवार
+hi_IN Name of weekday 05 (Islamic Calendar) शुक्रवार
+hi_IN Name of weekday 06 (Islamic Calendar) शनिवार
+hi_IN Name of weekday 07 (Islamic Calendar) रविवार
+it Language endonym italiano
+it Country endonym
+it Floating Point Number -123.456.789,012
+it Percent value -1.234,5679%
+it Currency value € 1.234,56
+it Negative Currency value -€ 1.234,56
+it Date and time short (Gregorian Calendar) 21/07/08 12.31
+it Date and time medium (Gregorian Calendar) 21/lug/2008 12.31.00
+it Date and time long (Gregorian Calendar) 21 luglio 2008 12.31.00 GMT+00.00
+it Date and time full (Gregorian Calendar) lunedì 21 luglio 2008 12.31.00 GMT+00.00
+it Date and time short (Islamic Calendar) 18/07/29 12.31
+it Date and time medium (Islamic Calendar) 18/Rajab/1429 12.31.00
+it Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+it Date and time full (Islamic Calendar) lunedì 18 Rajab 1429 12.31.00 GMT+00.00
+it Name of month 01 (Gregorian Calendar) gennaio
+it Name of month 02 (Gregorian Calendar) febbraio
+it Name of month 03 (Gregorian Calendar) marzo
+it Name of month 04 (Gregorian Calendar) aprile
+it Name of month 05 (Gregorian Calendar) maggio
+it Name of month 06 (Gregorian Calendar) giugno
+it Name of month 07 (Gregorian Calendar) luglio
+it Name of month 08 (Gregorian Calendar) agosto
+it Name of month 09 (Gregorian Calendar) settembre
+it Name of month 10 (Gregorian Calendar) ottobre
+it Name of month 11 (Gregorian Calendar) novembre
+it Name of month 12 (Gregorian Calendar) dicembre
+it Name of month 01 (Islamic Calendar) Muharram
+it Name of month 02 (Islamic Calendar) Safar
+it Name of month 03 (Islamic Calendar) Rabiʻ I
+it Name of month 04 (Islamic Calendar) Rabiʻ II
+it Name of month 05 (Islamic Calendar) Jumada I
+it Name of month 06 (Islamic Calendar) Jumada II
+it Name of month 07 (Islamic Calendar) Rajab
+it Name of month 08 (Islamic Calendar) Shaʻban
+it Name of month 09 (Islamic Calendar) Ramadan
+it Name of month 10 (Islamic Calendar) Shawwal
+it Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it Name of weekday 01 (Gregorian Calendar) lunedì
+it Name of weekday 02 (Gregorian Calendar) martedì
+it Name of weekday 03 (Gregorian Calendar) mercoledì
+it Name of weekday 04 (Gregorian Calendar) giovedì
+it Name of weekday 05 (Gregorian Calendar) venerdì
+it Name of weekday 06 (Gregorian Calendar) sabato
+it Name of weekday 07 (Gregorian Calendar) domenica
+it Name of weekday 01 (Islamic Calendar) lunedì
+it Name of weekday 02 (Islamic Calendar) martedì
+it Name of weekday 03 (Islamic Calendar) mercoledì
+it Name of weekday 04 (Islamic Calendar) giovedì
+it Name of weekday 05 (Islamic Calendar) venerdì
+it Name of weekday 06 (Islamic Calendar) sabato
+it Name of weekday 07 (Islamic Calendar) domenica
+it_CH Language endonym italiano
+it_CH Country endonym Svizzera
+it_CH Floating Point Number -123'456'789.012
+it_CH Percent value -1'234.5679%
+it_CH Currency value € 1'234.56
+it_CH Negative Currency value €-1'234.56
+it_CH Date and time short (Gregorian Calendar) 21.07.08 12.31
+it_CH Date and time medium (Gregorian Calendar) 21-lug-2008 12.31.00
+it_CH Date and time long (Gregorian Calendar) 21 luglio 2008 12.31.00 GMT+00.00
+it_CH Date and time full (Gregorian Calendar) lunedì, 21 luglio 2008 12.31:00 h GMT+00.00
+it_CH Date and time short (Islamic Calendar) 18.07.29 12.31
+it_CH Date and time medium (Islamic Calendar) 18-Rajab-1429 12.31.00
+it_CH Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+it_CH Date and time full (Islamic Calendar) lunedì, 18 Rajab 1429 12.31:00 h GMT+00.00
+it_CH Name of month 01 (Gregorian Calendar) gennaio
+it_CH Name of month 02 (Gregorian Calendar) febbraio
+it_CH Name of month 03 (Gregorian Calendar) marzo
+it_CH Name of month 04 (Gregorian Calendar) aprile
+it_CH Name of month 05 (Gregorian Calendar) maggio
+it_CH Name of month 06 (Gregorian Calendar) giugno
+it_CH Name of month 07 (Gregorian Calendar) luglio
+it_CH Name of month 08 (Gregorian Calendar) agosto
+it_CH Name of month 09 (Gregorian Calendar) settembre
+it_CH Name of month 10 (Gregorian Calendar) ottobre
+it_CH Name of month 11 (Gregorian Calendar) novembre
+it_CH Name of month 12 (Gregorian Calendar) dicembre
+it_CH Name of month 01 (Islamic Calendar) Muharram
+it_CH Name of month 02 (Islamic Calendar) Safar
+it_CH Name of month 03 (Islamic Calendar) Rabiʻ I
+it_CH Name of month 04 (Islamic Calendar) Rabiʻ II
+it_CH Name of month 05 (Islamic Calendar) Jumada I
+it_CH Name of month 06 (Islamic Calendar) Jumada II
+it_CH Name of month 07 (Islamic Calendar) Rajab
+it_CH Name of month 08 (Islamic Calendar) Shaʻban
+it_CH Name of month 09 (Islamic Calendar) Ramadan
+it_CH Name of month 10 (Islamic Calendar) Shawwal
+it_CH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it_CH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it_CH Name of weekday 01 (Gregorian Calendar) lunedì
+it_CH Name of weekday 02 (Gregorian Calendar) martedì
+it_CH Name of weekday 03 (Gregorian Calendar) mercoledì
+it_CH Name of weekday 04 (Gregorian Calendar) giovedì
+it_CH Name of weekday 05 (Gregorian Calendar) venerdì
+it_CH Name of weekday 06 (Gregorian Calendar) sabato
+it_CH Name of weekday 07 (Gregorian Calendar) domenica
+it_CH Name of weekday 01 (Islamic Calendar) lunedì
+it_CH Name of weekday 02 (Islamic Calendar) martedì
+it_CH Name of weekday 03 (Islamic Calendar) mercoledì
+it_CH Name of weekday 04 (Islamic Calendar) giovedì
+it_CH Name of weekday 05 (Islamic Calendar) venerdì
+it_CH Name of weekday 06 (Islamic Calendar) sabato
+it_CH Name of weekday 07 (Islamic Calendar) domenica
+it_IT Language endonym italiano
+it_IT Country endonym Italia
+it_IT Floating Point Number -123.456.789,012
+it_IT Percent value -1.234,5679%
+it_IT Currency value € 1.234,56
+it_IT Negative Currency value -€ 1.234,56
+it_IT Date and time short (Gregorian Calendar) 21/07/08 12.31
+it_IT Date and time medium (Gregorian Calendar) 21/lug/2008 12.31.00
+it_IT Date and time long (Gregorian Calendar) 21 luglio 2008 12.31.00 GMT+00.00
+it_IT Date and time full (Gregorian Calendar) lunedì 21 luglio 2008 12.31.00 GMT+00.00
+it_IT Date and time short (Islamic Calendar) 18/07/29 12.31
+it_IT Date and time medium (Islamic Calendar) 18/Rajab/1429 12.31.00
+it_IT Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+it_IT Date and time full (Islamic Calendar) lunedì 18 Rajab 1429 12.31.00 GMT+00.00
+it_IT Name of month 01 (Gregorian Calendar) gennaio
+it_IT Name of month 02 (Gregorian Calendar) febbraio
+it_IT Name of month 03 (Gregorian Calendar) marzo
+it_IT Name of month 04 (Gregorian Calendar) aprile
+it_IT Name of month 05 (Gregorian Calendar) maggio
+it_IT Name of month 06 (Gregorian Calendar) giugno
+it_IT Name of month 07 (Gregorian Calendar) luglio
+it_IT Name of month 08 (Gregorian Calendar) agosto
+it_IT Name of month 09 (Gregorian Calendar) settembre
+it_IT Name of month 10 (Gregorian Calendar) ottobre
+it_IT Name of month 11 (Gregorian Calendar) novembre
+it_IT Name of month 12 (Gregorian Calendar) dicembre
+it_IT Name of month 01 (Islamic Calendar) Muharram
+it_IT Name of month 02 (Islamic Calendar) Safar
+it_IT Name of month 03 (Islamic Calendar) Rabiʻ I
+it_IT Name of month 04 (Islamic Calendar) Rabiʻ II
+it_IT Name of month 05 (Islamic Calendar) Jumada I
+it_IT Name of month 06 (Islamic Calendar) Jumada II
+it_IT Name of month 07 (Islamic Calendar) Rajab
+it_IT Name of month 08 (Islamic Calendar) Shaʻban
+it_IT Name of month 09 (Islamic Calendar) Ramadan
+it_IT Name of month 10 (Islamic Calendar) Shawwal
+it_IT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it_IT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it_IT Name of weekday 01 (Gregorian Calendar) lunedì
+it_IT Name of weekday 02 (Gregorian Calendar) martedì
+it_IT Name of weekday 03 (Gregorian Calendar) mercoledì
+it_IT Name of weekday 04 (Gregorian Calendar) giovedì
+it_IT Name of weekday 05 (Gregorian Calendar) venerdì
+it_IT Name of weekday 06 (Gregorian Calendar) sabato
+it_IT Name of weekday 07 (Gregorian Calendar) domenica
+it_IT Name of weekday 01 (Islamic Calendar) lunedì
+it_IT Name of weekday 02 (Islamic Calendar) martedì
+it_IT Name of weekday 03 (Islamic Calendar) mercoledì
+it_IT Name of weekday 04 (Islamic Calendar) giovedì
+it_IT Name of weekday 05 (Islamic Calendar) venerdì
+it_IT Name of weekday 06 (Islamic Calendar) sabato
+it_IT Name of weekday 07 (Islamic Calendar) domenica
+ja Language endonym 日本語
+ja Country endonym
+ja Floating Point Number -123,456,789.012
+ja Percent value -1,234.5679%
+ja Currency value €1,234.56
+ja Negative Currency value -€1,234.56
+ja Date and time short (Gregorian Calendar) 08/07/21 12:31
+ja Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00
+ja Date and time long (Gregorian Calendar) 2008年7月21日12:31:00 GMT+00:00
+ja Date and time full (Gregorian Calendar) 2008年7月21日月曜日12時31分00秒 GMT+00:00
+ja Date and time short (Islamic Calendar) 29/07/18 12:31
+ja Date and time medium (Islamic Calendar) 1429/07/18 12:31:00
+ja Date and time long (Islamic Calendar) 1429年7月18日12:31:00 GMT+00:00
+ja Date and time full (Islamic Calendar) 1429年7月18日月曜日12時31分00秒 GMT+00:00
+ja Name of month 01 (Gregorian Calendar) 1月
+ja Name of month 02 (Gregorian Calendar) 2月
+ja Name of month 03 (Gregorian Calendar) 3月
+ja Name of month 04 (Gregorian Calendar) 4月
+ja Name of month 05 (Gregorian Calendar) 5月
+ja Name of month 06 (Gregorian Calendar) 6月
+ja Name of month 07 (Gregorian Calendar) 7月
+ja Name of month 08 (Gregorian Calendar) 8月
+ja Name of month 09 (Gregorian Calendar) 9月
+ja Name of month 10 (Gregorian Calendar) 10月
+ja Name of month 11 (Gregorian Calendar) 11月
+ja Name of month 12 (Gregorian Calendar) 12月
+ja Name of month 01 (Islamic Calendar) Muharram
+ja Name of month 02 (Islamic Calendar) Safar
+ja Name of month 03 (Islamic Calendar) Rabiʻ I
+ja Name of month 04 (Islamic Calendar) Rabiʻ II
+ja Name of month 05 (Islamic Calendar) Jumada I
+ja Name of month 06 (Islamic Calendar) Jumada II
+ja Name of month 07 (Islamic Calendar) Rajab
+ja Name of month 08 (Islamic Calendar) Shaʻban
+ja Name of month 09 (Islamic Calendar) Ramadan
+ja Name of month 10 (Islamic Calendar) Shawwal
+ja Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ja Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ja Name of weekday 01 (Gregorian Calendar) 月曜日
+ja Name of weekday 02 (Gregorian Calendar) 火曜日
+ja Name of weekday 03 (Gregorian Calendar) 水曜日
+ja Name of weekday 04 (Gregorian Calendar) 木曜日
+ja Name of weekday 05 (Gregorian Calendar) 金曜日
+ja Name of weekday 06 (Gregorian Calendar) 土曜日
+ja Name of weekday 07 (Gregorian Calendar) 日曜日
+ja Name of weekday 01 (Islamic Calendar) 月曜日
+ja Name of weekday 02 (Islamic Calendar) 火曜日
+ja Name of weekday 03 (Islamic Calendar) 水曜日
+ja Name of weekday 04 (Islamic Calendar) 木曜日
+ja Name of weekday 05 (Islamic Calendar) 金曜日
+ja Name of weekday 06 (Islamic Calendar) 土曜日
+ja Name of weekday 07 (Islamic Calendar) 日曜日
+ja_JP Language endonym 日本語
+ja_JP Country endonym 日本
+ja_JP Floating Point Number -123,456,789.012
+ja_JP Percent value -1,234.5679%
+ja_JP Currency value €1,234.56
+ja_JP Negative Currency value -€1,234.56
+ja_JP Date and time short (Gregorian Calendar) 08/07/21 12:31
+ja_JP Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00
+ja_JP Date and time long (Gregorian Calendar) 2008年7月21日12:31:00 GMT+00:00
+ja_JP Date and time full (Gregorian Calendar) 2008年7月21日月曜日12時31分00秒 GMT+00:00
+ja_JP Date and time short (Islamic Calendar) 29/07/18 12:31
+ja_JP Date and time medium (Islamic Calendar) 1429/07/18 12:31:00
+ja_JP Date and time long (Islamic Calendar) 1429年7月18日12:31:00 GMT+00:00
+ja_JP Date and time full (Islamic Calendar) 1429年7月18日月曜日12時31分00秒 GMT+00:00
+ja_JP Name of month 01 (Gregorian Calendar) 1月
+ja_JP Name of month 02 (Gregorian Calendar) 2月
+ja_JP Name of month 03 (Gregorian Calendar) 3月
+ja_JP Name of month 04 (Gregorian Calendar) 4月
+ja_JP Name of month 05 (Gregorian Calendar) 5月
+ja_JP Name of month 06 (Gregorian Calendar) 6月
+ja_JP Name of month 07 (Gregorian Calendar) 7月
+ja_JP Name of month 08 (Gregorian Calendar) 8月
+ja_JP Name of month 09 (Gregorian Calendar) 9月
+ja_JP Name of month 10 (Gregorian Calendar) 10月
+ja_JP Name of month 11 (Gregorian Calendar) 11月
+ja_JP Name of month 12 (Gregorian Calendar) 12月
+ja_JP Name of month 01 (Islamic Calendar) Muharram
+ja_JP Name of month 02 (Islamic Calendar) Safar
+ja_JP Name of month 03 (Islamic Calendar) Rabiʻ I
+ja_JP Name of month 04 (Islamic Calendar) Rabiʻ II
+ja_JP Name of month 05 (Islamic Calendar) Jumada I
+ja_JP Name of month 06 (Islamic Calendar) Jumada II
+ja_JP Name of month 07 (Islamic Calendar) Rajab
+ja_JP Name of month 08 (Islamic Calendar) Shaʻban
+ja_JP Name of month 09 (Islamic Calendar) Ramadan
+ja_JP Name of month 10 (Islamic Calendar) Shawwal
+ja_JP Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ja_JP Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ja_JP Name of weekday 01 (Gregorian Calendar) 月曜日
+ja_JP Name of weekday 02 (Gregorian Calendar) 火曜日
+ja_JP Name of weekday 03 (Gregorian Calendar) 水曜日
+ja_JP Name of weekday 04 (Gregorian Calendar) 木曜日
+ja_JP Name of weekday 05 (Gregorian Calendar) 金曜日
+ja_JP Name of weekday 06 (Gregorian Calendar) 土曜日
+ja_JP Name of weekday 07 (Gregorian Calendar) 日曜日
+ja_JP Name of weekday 01 (Islamic Calendar) 月曜日
+ja_JP Name of weekday 02 (Islamic Calendar) 火曜日
+ja_JP Name of weekday 03 (Islamic Calendar) 水曜日
+ja_JP Name of weekday 04 (Islamic Calendar) 木曜日
+ja_JP Name of weekday 05 (Islamic Calendar) 金曜日
+ja_JP Name of weekday 06 (Islamic Calendar) 土曜日
+ja_JP Name of weekday 07 (Islamic Calendar) 日曜日
+nb Language endonym norsk bokmål
+nb Country endonym
+nb Floating Point Number -123 456 789,012
+nb Percent value -1 234,5679 %
+nb Currency value EUR 1 234,56
+nb Negative Currency value -EUR 1 234,56
+nb Date and time short (Gregorian Calendar) 21.07.08 12.31
+nb Date and time medium (Gregorian Calendar) 21. juli 2008 12.31.00
+nb Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+nb Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12.31.00 GMT+00.00
+nb Date and time short (Islamic Calendar) 18.07.29 12.31
+nb Date and time medium (Islamic Calendar) 18. Rajab 1429 12.31.00
+nb Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+nb Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+nb Name of month 01 (Gregorian Calendar) januar
+nb Name of month 02 (Gregorian Calendar) februar
+nb Name of month 03 (Gregorian Calendar) mars
+nb Name of month 04 (Gregorian Calendar) april
+nb Name of month 05 (Gregorian Calendar) mai
+nb Name of month 06 (Gregorian Calendar) juni
+nb Name of month 07 (Gregorian Calendar) juli
+nb Name of month 08 (Gregorian Calendar) august
+nb Name of month 09 (Gregorian Calendar) september
+nb Name of month 10 (Gregorian Calendar) oktober
+nb Name of month 11 (Gregorian Calendar) november
+nb Name of month 12 (Gregorian Calendar) desember
+nb Name of month 01 (Islamic Calendar) Muharram
+nb Name of month 02 (Islamic Calendar) Safar
+nb Name of month 03 (Islamic Calendar) Rabiʻ I
+nb Name of month 04 (Islamic Calendar) Rabiʻ II
+nb Name of month 05 (Islamic Calendar) Jumada I
+nb Name of month 06 (Islamic Calendar) Jumada II
+nb Name of month 07 (Islamic Calendar) Rajab
+nb Name of month 08 (Islamic Calendar) Shaʻban
+nb Name of month 09 (Islamic Calendar) Ramadan
+nb Name of month 10 (Islamic Calendar) Shawwal
+nb Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nb Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nb Name of weekday 01 (Gregorian Calendar) mandag
+nb Name of weekday 02 (Gregorian Calendar) tirsdag
+nb Name of weekday 03 (Gregorian Calendar) onsdag
+nb Name of weekday 04 (Gregorian Calendar) torsdag
+nb Name of weekday 05 (Gregorian Calendar) fredag
+nb Name of weekday 06 (Gregorian Calendar) lørdag
+nb Name of weekday 07 (Gregorian Calendar) søndag
+nb Name of weekday 01 (Islamic Calendar) mandag
+nb Name of weekday 02 (Islamic Calendar) tirsdag
+nb Name of weekday 03 (Islamic Calendar) onsdag
+nb Name of weekday 04 (Islamic Calendar) torsdag
+nb Name of weekday 05 (Islamic Calendar) fredag
+nb Name of weekday 06 (Islamic Calendar) lørdag
+nb Name of weekday 07 (Islamic Calendar) søndag
+nb_NO Language endonym norsk bokmål
+nb_NO Country endonym Norge
+nb_NO Floating Point Number -123 456 789,012
+nb_NO Percent value -1 234,5679 %
+nb_NO Currency value EUR 1 234,56
+nb_NO Negative Currency value -EUR 1 234,56
+nb_NO Date and time short (Gregorian Calendar) 21.07.08 12.31
+nb_NO Date and time medium (Gregorian Calendar) 21. juli 2008 12.31.00
+nb_NO Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+nb_NO Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12.31.00 GMT+00.00
+nb_NO Date and time short (Islamic Calendar) 18.07.29 12.31
+nb_NO Date and time medium (Islamic Calendar) 18. Rajab 1429 12.31.00
+nb_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+nb_NO Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+nb_NO Name of month 01 (Gregorian Calendar) januar
+nb_NO Name of month 02 (Gregorian Calendar) februar
+nb_NO Name of month 03 (Gregorian Calendar) mars
+nb_NO Name of month 04 (Gregorian Calendar) april
+nb_NO Name of month 05 (Gregorian Calendar) mai
+nb_NO Name of month 06 (Gregorian Calendar) juni
+nb_NO Name of month 07 (Gregorian Calendar) juli
+nb_NO Name of month 08 (Gregorian Calendar) august
+nb_NO Name of month 09 (Gregorian Calendar) september
+nb_NO Name of month 10 (Gregorian Calendar) oktober
+nb_NO Name of month 11 (Gregorian Calendar) november
+nb_NO Name of month 12 (Gregorian Calendar) desember
+nb_NO Name of month 01 (Islamic Calendar) Muharram
+nb_NO Name of month 02 (Islamic Calendar) Safar
+nb_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+nb_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+nb_NO Name of month 05 (Islamic Calendar) Jumada I
+nb_NO Name of month 06 (Islamic Calendar) Jumada II
+nb_NO Name of month 07 (Islamic Calendar) Rajab
+nb_NO Name of month 08 (Islamic Calendar) Shaʻban
+nb_NO Name of month 09 (Islamic Calendar) Ramadan
+nb_NO Name of month 10 (Islamic Calendar) Shawwal
+nb_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nb_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nb_NO Name of weekday 01 (Gregorian Calendar) mandag
+nb_NO Name of weekday 02 (Gregorian Calendar) tirsdag
+nb_NO Name of weekday 03 (Gregorian Calendar) onsdag
+nb_NO Name of weekday 04 (Gregorian Calendar) torsdag
+nb_NO Name of weekday 05 (Gregorian Calendar) fredag
+nb_NO Name of weekday 06 (Gregorian Calendar) lørdag
+nb_NO Name of weekday 07 (Gregorian Calendar) søndag
+nb_NO Name of weekday 01 (Islamic Calendar) mandag
+nb_NO Name of weekday 02 (Islamic Calendar) tirsdag
+nb_NO Name of weekday 03 (Islamic Calendar) onsdag
+nb_NO Name of weekday 04 (Islamic Calendar) torsdag
+nb_NO Name of weekday 05 (Islamic Calendar) fredag
+nb_NO Name of weekday 06 (Islamic Calendar) lørdag
+nb_NO Name of weekday 07 (Islamic Calendar) søndag
+nl Language endonym Nederlands
+nl Country endonym
+nl Floating Point Number -123.456.789,012
+nl Percent value -1.234,5679%
+nl Currency value € 1.234,56
+nl Negative Currency value € 1.234,56-
+nl Date and time short (Gregorian Calendar) 21-07-08 12:31
+nl Date and time medium (Gregorian Calendar) 21 jul. 2008 12:31:00
+nl Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl Date and time short (Islamic Calendar) 18-07-29 12:31
+nl Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+nl Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl Name of month 01 (Gregorian Calendar) januari
+nl Name of month 02 (Gregorian Calendar) februari
+nl Name of month 03 (Gregorian Calendar) maart
+nl Name of month 04 (Gregorian Calendar) april
+nl Name of month 05 (Gregorian Calendar) mei
+nl Name of month 06 (Gregorian Calendar) juni
+nl Name of month 07 (Gregorian Calendar) juli
+nl Name of month 08 (Gregorian Calendar) augustus
+nl Name of month 09 (Gregorian Calendar) september
+nl Name of month 10 (Gregorian Calendar) oktober
+nl Name of month 11 (Gregorian Calendar) november
+nl Name of month 12 (Gregorian Calendar) december
+nl Name of month 01 (Islamic Calendar) Moeharram
+nl Name of month 02 (Islamic Calendar) Safar
+nl Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl Name of month 07 (Islamic Calendar) Rajab
+nl Name of month 08 (Islamic Calendar) Sjaʻaban
+nl Name of month 09 (Islamic Calendar) Ramadan
+nl Name of month 10 (Islamic Calendar) Sjawal
+nl Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl Name of month 12 (Islamic Calendar) Doe al hizja
+nl Name of weekday 01 (Gregorian Calendar) maandag
+nl Name of weekday 02 (Gregorian Calendar) dinsdag
+nl Name of weekday 03 (Gregorian Calendar) woensdag
+nl Name of weekday 04 (Gregorian Calendar) donderdag
+nl Name of weekday 05 (Gregorian Calendar) vrijdag
+nl Name of weekday 06 (Gregorian Calendar) zaterdag
+nl Name of weekday 07 (Gregorian Calendar) zondag
+nl Name of weekday 01 (Islamic Calendar) maandag
+nl Name of weekday 02 (Islamic Calendar) dinsdag
+nl Name of weekday 03 (Islamic Calendar) woensdag
+nl Name of weekday 04 (Islamic Calendar) donderdag
+nl Name of weekday 05 (Islamic Calendar) vrijdag
+nl Name of weekday 06 (Islamic Calendar) zaterdag
+nl Name of weekday 07 (Islamic Calendar) zondag
+nl_BE Language endonym nl
+nl_BE Country endonym BE
+nl_BE Floating Point Number -123.456.789,012
+nl_BE Percent value -1.234,5679%
+nl_BE Currency value 1.234,56 €
+nl_BE Negative Currency value -1.234,56 €
+nl_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+nl_BE Date and time medium (Gregorian Calendar) 21-jul.-2008 12:31:00
+nl_BE Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl_BE Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+nl_BE Date and time medium (Islamic Calendar) 18-Rajab-1429 12:31:00
+nl_BE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl_BE Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl_BE Name of month 01 (Gregorian Calendar) januari
+nl_BE Name of month 02 (Gregorian Calendar) februari
+nl_BE Name of month 03 (Gregorian Calendar) maart
+nl_BE Name of month 04 (Gregorian Calendar) april
+nl_BE Name of month 05 (Gregorian Calendar) mei
+nl_BE Name of month 06 (Gregorian Calendar) juni
+nl_BE Name of month 07 (Gregorian Calendar) juli
+nl_BE Name of month 08 (Gregorian Calendar) augustus
+nl_BE Name of month 09 (Gregorian Calendar) september
+nl_BE Name of month 10 (Gregorian Calendar) oktober
+nl_BE Name of month 11 (Gregorian Calendar) november
+nl_BE Name of month 12 (Gregorian Calendar) december
+nl_BE Name of month 01 (Islamic Calendar) Moeharram
+nl_BE Name of month 02 (Islamic Calendar) Safar
+nl_BE Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl_BE Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl_BE Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl_BE Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl_BE Name of month 07 (Islamic Calendar) Rajab
+nl_BE Name of month 08 (Islamic Calendar) Sjaʻaban
+nl_BE Name of month 09 (Islamic Calendar) Ramadan
+nl_BE Name of month 10 (Islamic Calendar) Sjawal
+nl_BE Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl_BE Name of month 12 (Islamic Calendar) Doe al hizja
+nl_BE Name of weekday 01 (Gregorian Calendar) maandag
+nl_BE Name of weekday 02 (Gregorian Calendar) dinsdag
+nl_BE Name of weekday 03 (Gregorian Calendar) woensdag
+nl_BE Name of weekday 04 (Gregorian Calendar) donderdag
+nl_BE Name of weekday 05 (Gregorian Calendar) vrijdag
+nl_BE Name of weekday 06 (Gregorian Calendar) zaterdag
+nl_BE Name of weekday 07 (Gregorian Calendar) zondag
+nl_BE Name of weekday 01 (Islamic Calendar) maandag
+nl_BE Name of weekday 02 (Islamic Calendar) dinsdag
+nl_BE Name of weekday 03 (Islamic Calendar) woensdag
+nl_BE Name of weekday 04 (Islamic Calendar) donderdag
+nl_BE Name of weekday 05 (Islamic Calendar) vrijdag
+nl_BE Name of weekday 06 (Islamic Calendar) zaterdag
+nl_BE Name of weekday 07 (Islamic Calendar) zondag
+nl_NL Language endonym Nederlands
+nl_NL Country endonym Nederland
+nl_NL Floating Point Number -123.456.789,012
+nl_NL Percent value -1.234,5679%
+nl_NL Currency value € 1.234,56
+nl_NL Negative Currency value € 1.234,56-
+nl_NL Date and time short (Gregorian Calendar) 21-07-08 12:31
+nl_NL Date and time medium (Gregorian Calendar) 21 jul. 2008 12:31:00
+nl_NL Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl_NL Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl_NL Date and time short (Islamic Calendar) 18-07-29 12:31
+nl_NL Date and time medium (Islamic Calendar) 18 Rajab 1429 12:31:00
+nl_NL Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl_NL Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl_NL Name of month 01 (Gregorian Calendar) januari
+nl_NL Name of month 02 (Gregorian Calendar) februari
+nl_NL Name of month 03 (Gregorian Calendar) maart
+nl_NL Name of month 04 (Gregorian Calendar) april
+nl_NL Name of month 05 (Gregorian Calendar) mei
+nl_NL Name of month 06 (Gregorian Calendar) juni
+nl_NL Name of month 07 (Gregorian Calendar) juli
+nl_NL Name of month 08 (Gregorian Calendar) augustus
+nl_NL Name of month 09 (Gregorian Calendar) september
+nl_NL Name of month 10 (Gregorian Calendar) oktober
+nl_NL Name of month 11 (Gregorian Calendar) november
+nl_NL Name of month 12 (Gregorian Calendar) december
+nl_NL Name of month 01 (Islamic Calendar) Moeharram
+nl_NL Name of month 02 (Islamic Calendar) Safar
+nl_NL Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl_NL Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl_NL Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl_NL Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl_NL Name of month 07 (Islamic Calendar) Rajab
+nl_NL Name of month 08 (Islamic Calendar) Sjaʻaban
+nl_NL Name of month 09 (Islamic Calendar) Ramadan
+nl_NL Name of month 10 (Islamic Calendar) Sjawal
+nl_NL Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl_NL Name of month 12 (Islamic Calendar) Doe al hizja
+nl_NL Name of weekday 01 (Gregorian Calendar) maandag
+nl_NL Name of weekday 02 (Gregorian Calendar) dinsdag
+nl_NL Name of weekday 03 (Gregorian Calendar) woensdag
+nl_NL Name of weekday 04 (Gregorian Calendar) donderdag
+nl_NL Name of weekday 05 (Gregorian Calendar) vrijdag
+nl_NL Name of weekday 06 (Gregorian Calendar) zaterdag
+nl_NL Name of weekday 07 (Gregorian Calendar) zondag
+nl_NL Name of weekday 01 (Islamic Calendar) maandag
+nl_NL Name of weekday 02 (Islamic Calendar) dinsdag
+nl_NL Name of weekday 03 (Islamic Calendar) woensdag
+nl_NL Name of weekday 04 (Islamic Calendar) donderdag
+nl_NL Name of weekday 05 (Islamic Calendar) vrijdag
+nl_NL Name of weekday 06 (Islamic Calendar) zaterdag
+nl_NL Name of weekday 07 (Islamic Calendar) zondag
+nn Language endonym nynorsk
+nn Country endonym
+nn Floating Point Number −123 456 789,012
+nn Percent value −1 234,5679 %
+nn Currency value 1 234,56 EUR
+nn Negative Currency value −1 234,56 EUR
+nn Date and time short (Gregorian Calendar) 21.07.08 12.31
+nn Date and time medium (Gregorian Calendar) 21. jul. 2008 12.31.00
+nn Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+nn Date and time full (Gregorian Calendar) måndag 21. juli 2008 kl. 12.31.00 GMT+00.00
+nn Date and time short (Islamic Calendar) 18.07.29 12.31
+nn Date and time medium (Islamic Calendar) 18. Rajab. 1429 12.31.00
+nn Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+nn Date and time full (Islamic Calendar) måndag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+nn Name of month 01 (Gregorian Calendar) januar
+nn Name of month 02 (Gregorian Calendar) februar
+nn Name of month 03 (Gregorian Calendar) mars
+nn Name of month 04 (Gregorian Calendar) april
+nn Name of month 05 (Gregorian Calendar) mai
+nn Name of month 06 (Gregorian Calendar) juni
+nn Name of month 07 (Gregorian Calendar) juli
+nn Name of month 08 (Gregorian Calendar) august
+nn Name of month 09 (Gregorian Calendar) september
+nn Name of month 10 (Gregorian Calendar) oktober
+nn Name of month 11 (Gregorian Calendar) november
+nn Name of month 12 (Gregorian Calendar) desember
+nn Name of month 01 (Islamic Calendar) Muharram
+nn Name of month 02 (Islamic Calendar) Safar
+nn Name of month 03 (Islamic Calendar) Rabiʻ I
+nn Name of month 04 (Islamic Calendar) Rabiʻ II
+nn Name of month 05 (Islamic Calendar) Jumada I
+nn Name of month 06 (Islamic Calendar) Jumada II
+nn Name of month 07 (Islamic Calendar) Rajab
+nn Name of month 08 (Islamic Calendar) Shaʻban
+nn Name of month 09 (Islamic Calendar) Ramadan
+nn Name of month 10 (Islamic Calendar) Shawwal
+nn Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nn Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nn Name of weekday 01 (Gregorian Calendar) måndag
+nn Name of weekday 02 (Gregorian Calendar) tysdag
+nn Name of weekday 03 (Gregorian Calendar) onsdag
+nn Name of weekday 04 (Gregorian Calendar) torsdag
+nn Name of weekday 05 (Gregorian Calendar) fredag
+nn Name of weekday 06 (Gregorian Calendar) laurdag
+nn Name of weekday 07 (Gregorian Calendar) søndag
+nn Name of weekday 01 (Islamic Calendar) måndag
+nn Name of weekday 02 (Islamic Calendar) tysdag
+nn Name of weekday 03 (Islamic Calendar) onsdag
+nn Name of weekday 04 (Islamic Calendar) torsdag
+nn Name of weekday 05 (Islamic Calendar) fredag
+nn Name of weekday 06 (Islamic Calendar) laurdag
+nn Name of weekday 07 (Islamic Calendar) søndag
+nn_NO Language endonym nynorsk
+nn_NO Country endonym Noreg
+nn_NO Floating Point Number −123 456 789,012
+nn_NO Percent value −1 234,5679 %
+nn_NO Currency value 1 234,56 EUR
+nn_NO Negative Currency value −1 234,56 EUR
+nn_NO Date and time short (Gregorian Calendar) 21.07.08 12.31
+nn_NO Date and time medium (Gregorian Calendar) 21. jul. 2008 12.31.00
+nn_NO Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+nn_NO Date and time full (Gregorian Calendar) måndag 21. juli 2008 kl. 12.31.00 GMT+00.00
+nn_NO Date and time short (Islamic Calendar) 18.07.29 12.31
+nn_NO Date and time medium (Islamic Calendar) 18. Rajab. 1429 12.31.00
+nn_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+nn_NO Date and time full (Islamic Calendar) måndag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+nn_NO Name of month 01 (Gregorian Calendar) januar
+nn_NO Name of month 02 (Gregorian Calendar) februar
+nn_NO Name of month 03 (Gregorian Calendar) mars
+nn_NO Name of month 04 (Gregorian Calendar) april
+nn_NO Name of month 05 (Gregorian Calendar) mai
+nn_NO Name of month 06 (Gregorian Calendar) juni
+nn_NO Name of month 07 (Gregorian Calendar) juli
+nn_NO Name of month 08 (Gregorian Calendar) august
+nn_NO Name of month 09 (Gregorian Calendar) september
+nn_NO Name of month 10 (Gregorian Calendar) oktober
+nn_NO Name of month 11 (Gregorian Calendar) november
+nn_NO Name of month 12 (Gregorian Calendar) desember
+nn_NO Name of month 01 (Islamic Calendar) Muharram
+nn_NO Name of month 02 (Islamic Calendar) Safar
+nn_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+nn_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+nn_NO Name of month 05 (Islamic Calendar) Jumada I
+nn_NO Name of month 06 (Islamic Calendar) Jumada II
+nn_NO Name of month 07 (Islamic Calendar) Rajab
+nn_NO Name of month 08 (Islamic Calendar) Shaʻban
+nn_NO Name of month 09 (Islamic Calendar) Ramadan
+nn_NO Name of month 10 (Islamic Calendar) Shawwal
+nn_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nn_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nn_NO Name of weekday 01 (Gregorian Calendar) måndag
+nn_NO Name of weekday 02 (Gregorian Calendar) tysdag
+nn_NO Name of weekday 03 (Gregorian Calendar) onsdag
+nn_NO Name of weekday 04 (Gregorian Calendar) torsdag
+nn_NO Name of weekday 05 (Gregorian Calendar) fredag
+nn_NO Name of weekday 06 (Gregorian Calendar) laurdag
+nn_NO Name of weekday 07 (Gregorian Calendar) søndag
+nn_NO Name of weekday 01 (Islamic Calendar) måndag
+nn_NO Name of weekday 02 (Islamic Calendar) tysdag
+nn_NO Name of weekday 03 (Islamic Calendar) onsdag
+nn_NO Name of weekday 04 (Islamic Calendar) torsdag
+nn_NO Name of weekday 05 (Islamic Calendar) fredag
+nn_NO Name of weekday 06 (Islamic Calendar) laurdag
+nn_NO Name of weekday 07 (Islamic Calendar) søndag
+pt Language endonym português
+pt Country endonym
+pt Floating Point Number -123.456.789,012
+pt Percent value -1.234,5679%
+pt Currency value €1.234,56
+pt Negative Currency value (€1.234,56)
+pt Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+pt Date and time long (Gregorian Calendar) 21 de julho de 2008 12h31min00s GMT+00:00
+pt Date and time full (Gregorian Calendar) segunda-feira, 21 de julho de 2008 12h31min00s GMT+00:00
+pt Date and time short (Islamic Calendar) 18/07/29 12:31
+pt Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+pt Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt Date and time full (Islamic Calendar) segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt Name of month 01 (Gregorian Calendar) janeiro
+pt Name of month 02 (Gregorian Calendar) fevereiro
+pt Name of month 03 (Gregorian Calendar) março
+pt Name of month 04 (Gregorian Calendar) abril
+pt Name of month 05 (Gregorian Calendar) maio
+pt Name of month 06 (Gregorian Calendar) junho
+pt Name of month 07 (Gregorian Calendar) julho
+pt Name of month 08 (Gregorian Calendar) agosto
+pt Name of month 09 (Gregorian Calendar) setembro
+pt Name of month 10 (Gregorian Calendar) outubro
+pt Name of month 11 (Gregorian Calendar) novembro
+pt Name of month 12 (Gregorian Calendar) dezembro
+pt Name of month 01 (Islamic Calendar) Muharram
+pt Name of month 02 (Islamic Calendar) Safar
+pt Name of month 03 (Islamic Calendar) Rabiʻ I
+pt Name of month 04 (Islamic Calendar) Rabiʻ II
+pt Name of month 05 (Islamic Calendar) Jumada I
+pt Name of month 06 (Islamic Calendar) Jumada II
+pt Name of month 07 (Islamic Calendar) Rajab
+pt Name of month 08 (Islamic Calendar) Shaʻban
+pt Name of month 09 (Islamic Calendar) Ramadan
+pt Name of month 10 (Islamic Calendar) Shawwal
+pt Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt Name of weekday 01 (Gregorian Calendar) segunda-feira
+pt Name of weekday 02 (Gregorian Calendar) terça-feira
+pt Name of weekday 03 (Gregorian Calendar) quarta-feira
+pt Name of weekday 04 (Gregorian Calendar) quinta-feira
+pt Name of weekday 05 (Gregorian Calendar) sexta-feira
+pt Name of weekday 06 (Gregorian Calendar) sábado
+pt Name of weekday 07 (Gregorian Calendar) domingo
+pt Name of weekday 01 (Islamic Calendar) segunda-feira
+pt Name of weekday 02 (Islamic Calendar) terça-feira
+pt Name of weekday 03 (Islamic Calendar) quarta-feira
+pt Name of weekday 04 (Islamic Calendar) quinta-feira
+pt Name of weekday 05 (Islamic Calendar) sexta-feira
+pt Name of weekday 06 (Islamic Calendar) sábado
+pt Name of weekday 07 (Islamic Calendar) domingo
+pt_BR Language endonym português
+pt_BR Country endonym Brasil
+pt_BR Floating Point Number -123.456.789,012
+pt_BR Percent value -1.234,5679%
+pt_BR Currency value €1.234,56
+pt_BR Negative Currency value (€1.234,56)
+pt_BR Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt_BR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+pt_BR Date and time long (Gregorian Calendar) 21 de julho de 2008 12h31min00s GMT+00:00
+pt_BR Date and time full (Gregorian Calendar) segunda-feira, 21 de julho de 2008 12h31min00s GMT+00:00
+pt_BR Date and time short (Islamic Calendar) 18/07/29 12:31
+pt_BR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+pt_BR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_BR Date and time full (Islamic Calendar) segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_BR Name of month 01 (Gregorian Calendar) janeiro
+pt_BR Name of month 02 (Gregorian Calendar) fevereiro
+pt_BR Name of month 03 (Gregorian Calendar) março
+pt_BR Name of month 04 (Gregorian Calendar) abril
+pt_BR Name of month 05 (Gregorian Calendar) maio
+pt_BR Name of month 06 (Gregorian Calendar) junho
+pt_BR Name of month 07 (Gregorian Calendar) julho
+pt_BR Name of month 08 (Gregorian Calendar) agosto
+pt_BR Name of month 09 (Gregorian Calendar) setembro
+pt_BR Name of month 10 (Gregorian Calendar) outubro
+pt_BR Name of month 11 (Gregorian Calendar) novembro
+pt_BR Name of month 12 (Gregorian Calendar) dezembro
+pt_BR Name of month 01 (Islamic Calendar) Muharram
+pt_BR Name of month 02 (Islamic Calendar) Safar
+pt_BR Name of month 03 (Islamic Calendar) Rabiʻ I
+pt_BR Name of month 04 (Islamic Calendar) Rabiʻ II
+pt_BR Name of month 05 (Islamic Calendar) Jumada I
+pt_BR Name of month 06 (Islamic Calendar) Jumada II
+pt_BR Name of month 07 (Islamic Calendar) Rajab
+pt_BR Name of month 08 (Islamic Calendar) Shaʻban
+pt_BR Name of month 09 (Islamic Calendar) Ramadan
+pt_BR Name of month 10 (Islamic Calendar) Shawwal
+pt_BR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt_BR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt_BR Name of weekday 01 (Gregorian Calendar) segunda-feira
+pt_BR Name of weekday 02 (Gregorian Calendar) terça-feira
+pt_BR Name of weekday 03 (Gregorian Calendar) quarta-feira
+pt_BR Name of weekday 04 (Gregorian Calendar) quinta-feira
+pt_BR Name of weekday 05 (Gregorian Calendar) sexta-feira
+pt_BR Name of weekday 06 (Gregorian Calendar) sábado
+pt_BR Name of weekday 07 (Gregorian Calendar) domingo
+pt_BR Name of weekday 01 (Islamic Calendar) segunda-feira
+pt_BR Name of weekday 02 (Islamic Calendar) terça-feira
+pt_BR Name of weekday 03 (Islamic Calendar) quarta-feira
+pt_BR Name of weekday 04 (Islamic Calendar) quinta-feira
+pt_BR Name of weekday 05 (Islamic Calendar) sexta-feira
+pt_BR Name of weekday 06 (Islamic Calendar) sábado
+pt_BR Name of weekday 07 (Islamic Calendar) domingo
+pt_PT Language endonym pt
+pt_PT Country endonym PT
+pt_PT Floating Point Number -123 456 789,012
+pt_PT Percent value -1 234,5679%
+pt_PT Currency value 1 234,56 €
+pt_PT Negative Currency value -1 234,56 €
+pt_PT Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt_PT Date and time medium (Gregorian Calendar) 21 de Jul de 2008 12:31:00
+pt_PT Date and time long (Gregorian Calendar) 21 de Julho de 2008 12h31min00s GMT+00:00
+pt_PT Date and time full (Gregorian Calendar) segunda-feira, 21 de Julho de 2008 12h31min00s GMT+00:00
+pt_PT Date and time short (Islamic Calendar) 18/07/29 12:31
+pt_PT Date and time medium (Islamic Calendar) 18 de Rajab de 1429 12:31:00
+pt_PT Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_PT Date and time full (Islamic Calendar) segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_PT Name of month 01 (Gregorian Calendar) Janeiro
+pt_PT Name of month 02 (Gregorian Calendar) Fevereiro
+pt_PT Name of month 03 (Gregorian Calendar) Março
+pt_PT Name of month 04 (Gregorian Calendar) Abril
+pt_PT Name of month 05 (Gregorian Calendar) Maio
+pt_PT Name of month 06 (Gregorian Calendar) Junho
+pt_PT Name of month 07 (Gregorian Calendar) Julho
+pt_PT Name of month 08 (Gregorian Calendar) Agosto
+pt_PT Name of month 09 (Gregorian Calendar) Setembro
+pt_PT Name of month 10 (Gregorian Calendar) Outubro
+pt_PT Name of month 11 (Gregorian Calendar) Novembro
+pt_PT Name of month 12 (Gregorian Calendar) Dezembro
+pt_PT Name of month 01 (Islamic Calendar) Muharram
+pt_PT Name of month 02 (Islamic Calendar) Safar
+pt_PT Name of month 03 (Islamic Calendar) Rabiʻ I
+pt_PT Name of month 04 (Islamic Calendar) Rabiʻ II
+pt_PT Name of month 05 (Islamic Calendar) Jumada I
+pt_PT Name of month 06 (Islamic Calendar) Jumada II
+pt_PT Name of month 07 (Islamic Calendar) Rajab
+pt_PT Name of month 08 (Islamic Calendar) Shaʻban
+pt_PT Name of month 09 (Islamic Calendar) Ramadan
+pt_PT Name of month 10 (Islamic Calendar) Shawwal
+pt_PT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt_PT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt_PT Name of weekday 01 (Gregorian Calendar) segunda-feira
+pt_PT Name of weekday 02 (Gregorian Calendar) terça-feira
+pt_PT Name of weekday 03 (Gregorian Calendar) quarta-feira
+pt_PT Name of weekday 04 (Gregorian Calendar) quinta-feira
+pt_PT Name of weekday 05 (Gregorian Calendar) sexta-feira
+pt_PT Name of weekday 06 (Gregorian Calendar) sábado
+pt_PT Name of weekday 07 (Gregorian Calendar) domingo
+pt_PT Name of weekday 01 (Islamic Calendar) segunda-feira
+pt_PT Name of weekday 02 (Islamic Calendar) terça-feira
+pt_PT Name of weekday 03 (Islamic Calendar) quarta-feira
+pt_PT Name of weekday 04 (Islamic Calendar) quinta-feira
+pt_PT Name of weekday 05 (Islamic Calendar) sexta-feira
+pt_PT Name of weekday 06 (Islamic Calendar) sábado
+pt_PT Name of weekday 07 (Islamic Calendar) domingo
+ru Language endonym русский
+ru Country endonym
+ru Floating Point Number -123 456 789,012
+ru Percent value -1 234,5679 %
+ru Currency value 1 234,56 €
+ru Negative Currency value -1 234,56 €
+ru Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+ru Date and time long (Gregorian Calendar) 21 июля 2008 г. 12:31:00 GMT+00:00
+ru Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru Date and time short (Islamic Calendar) 18.07.29 12:31
+ru Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+ru Date and time long (Islamic Calendar) 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru Name of month 01 (Gregorian Calendar) января
+ru Name of month 02 (Gregorian Calendar) февраля
+ru Name of month 03 (Gregorian Calendar) марта
+ru Name of month 04 (Gregorian Calendar) апреля
+ru Name of month 05 (Gregorian Calendar) мая
+ru Name of month 06 (Gregorian Calendar) июня
+ru Name of month 07 (Gregorian Calendar) июля
+ru Name of month 08 (Gregorian Calendar) августа
+ru Name of month 09 (Gregorian Calendar) сентября
+ru Name of month 10 (Gregorian Calendar) октября
+ru Name of month 11 (Gregorian Calendar) ноября
+ru Name of month 12 (Gregorian Calendar) декабря
+ru Name of month 01 (Islamic Calendar) Мухаррам
+ru Name of month 02 (Islamic Calendar) Сафар
+ru Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru Name of month 07 (Islamic Calendar) Раджаб
+ru Name of month 08 (Islamic Calendar) Шаабан
+ru Name of month 09 (Islamic Calendar) Рамадан
+ru Name of month 10 (Islamic Calendar) Шавваль
+ru Name of month 11 (Islamic Calendar) Зуль-Каада
+ru Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru Name of weekday 01 (Gregorian Calendar) понедельник
+ru Name of weekday 02 (Gregorian Calendar) вторник
+ru Name of weekday 03 (Gregorian Calendar) среда
+ru Name of weekday 04 (Gregorian Calendar) четверг
+ru Name of weekday 05 (Gregorian Calendar) пятница
+ru Name of weekday 06 (Gregorian Calendar) суббота
+ru Name of weekday 07 (Gregorian Calendar) воскресенье
+ru Name of weekday 01 (Islamic Calendar) понедельник
+ru Name of weekday 02 (Islamic Calendar) вторник
+ru Name of weekday 03 (Islamic Calendar) среда
+ru Name of weekday 04 (Islamic Calendar) четверг
+ru Name of weekday 05 (Islamic Calendar) пятница
+ru Name of weekday 06 (Islamic Calendar) суббота
+ru Name of weekday 07 (Islamic Calendar) воскресенье
+ru_RU Language endonym русский
+ru_RU Country endonym Россия
+ru_RU Floating Point Number -123 456 789,012
+ru_RU Percent value -1 234,5679 %
+ru_RU Currency value 1 234,56 €
+ru_RU Negative Currency value -1 234,56 €
+ru_RU Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru_RU Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+ru_RU Date and time long (Gregorian Calendar) 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_RU Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_RU Date and time short (Islamic Calendar) 18.07.29 12:31
+ru_RU Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+ru_RU Date and time long (Islamic Calendar) 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_RU Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_RU Name of month 01 (Gregorian Calendar) января
+ru_RU Name of month 02 (Gregorian Calendar) февраля
+ru_RU Name of month 03 (Gregorian Calendar) марта
+ru_RU Name of month 04 (Gregorian Calendar) апреля
+ru_RU Name of month 05 (Gregorian Calendar) мая
+ru_RU Name of month 06 (Gregorian Calendar) июня
+ru_RU Name of month 07 (Gregorian Calendar) июля
+ru_RU Name of month 08 (Gregorian Calendar) августа
+ru_RU Name of month 09 (Gregorian Calendar) сентября
+ru_RU Name of month 10 (Gregorian Calendar) октября
+ru_RU Name of month 11 (Gregorian Calendar) ноября
+ru_RU Name of month 12 (Gregorian Calendar) декабря
+ru_RU Name of month 01 (Islamic Calendar) Мухаррам
+ru_RU Name of month 02 (Islamic Calendar) Сафар
+ru_RU Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru_RU Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru_RU Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru_RU Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru_RU Name of month 07 (Islamic Calendar) Раджаб
+ru_RU Name of month 08 (Islamic Calendar) Шаабан
+ru_RU Name of month 09 (Islamic Calendar) Рамадан
+ru_RU Name of month 10 (Islamic Calendar) Шавваль
+ru_RU Name of month 11 (Islamic Calendar) Зуль-Каада
+ru_RU Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru_RU Name of weekday 01 (Gregorian Calendar) понедельник
+ru_RU Name of weekday 02 (Gregorian Calendar) вторник
+ru_RU Name of weekday 03 (Gregorian Calendar) среда
+ru_RU Name of weekday 04 (Gregorian Calendar) четверг
+ru_RU Name of weekday 05 (Gregorian Calendar) пятница
+ru_RU Name of weekday 06 (Gregorian Calendar) суббота
+ru_RU Name of weekday 07 (Gregorian Calendar) воскресенье
+ru_RU Name of weekday 01 (Islamic Calendar) понедельник
+ru_RU Name of weekday 02 (Islamic Calendar) вторник
+ru_RU Name of weekday 03 (Islamic Calendar) среда
+ru_RU Name of weekday 04 (Islamic Calendar) четверг
+ru_RU Name of weekday 05 (Islamic Calendar) пятница
+ru_RU Name of weekday 06 (Islamic Calendar) суббота
+ru_RU Name of weekday 07 (Islamic Calendar) воскресенье
+ru_UA Language endonym ru
+ru_UA Country endonym Украина
+ru_UA Floating Point Number -123 456 789,012
+ru_UA Percent value -1 234,5679 %
+ru_UA Currency value 1 234,56 €
+ru_UA Negative Currency value -1 234,56 €
+ru_UA Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru_UA Date and time medium (Gregorian Calendar) 21 июля 2008 12:31:00
+ru_UA Date and time long (Gregorian Calendar) 21 июля 2008 12:31:00 GMT+00:00
+ru_UA Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_UA Date and time short (Islamic Calendar) 18.07.29 12:31
+ru_UA Date and time medium (Islamic Calendar) 18 Раджаб 1429 12:31:00
+ru_UA Date and time long (Islamic Calendar) 18 Раджаб 1429 12:31:00 GMT+00:00
+ru_UA Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_UA Name of month 01 (Gregorian Calendar) января
+ru_UA Name of month 02 (Gregorian Calendar) февраля
+ru_UA Name of month 03 (Gregorian Calendar) марта
+ru_UA Name of month 04 (Gregorian Calendar) апреля
+ru_UA Name of month 05 (Gregorian Calendar) мая
+ru_UA Name of month 06 (Gregorian Calendar) июня
+ru_UA Name of month 07 (Gregorian Calendar) июля
+ru_UA Name of month 08 (Gregorian Calendar) августа
+ru_UA Name of month 09 (Gregorian Calendar) сентября
+ru_UA Name of month 10 (Gregorian Calendar) октября
+ru_UA Name of month 11 (Gregorian Calendar) ноября
+ru_UA Name of month 12 (Gregorian Calendar) декабря
+ru_UA Name of month 01 (Islamic Calendar) Мухаррам
+ru_UA Name of month 02 (Islamic Calendar) Сафар
+ru_UA Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru_UA Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru_UA Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru_UA Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru_UA Name of month 07 (Islamic Calendar) Раджаб
+ru_UA Name of month 08 (Islamic Calendar) Шаабан
+ru_UA Name of month 09 (Islamic Calendar) Рамадан
+ru_UA Name of month 10 (Islamic Calendar) Шавваль
+ru_UA Name of month 11 (Islamic Calendar) Зуль-Каада
+ru_UA Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru_UA Name of weekday 01 (Gregorian Calendar) понедельник
+ru_UA Name of weekday 02 (Gregorian Calendar) вторник
+ru_UA Name of weekday 03 (Gregorian Calendar) среда
+ru_UA Name of weekday 04 (Gregorian Calendar) четверг
+ru_UA Name of weekday 05 (Gregorian Calendar) пятница
+ru_UA Name of weekday 06 (Gregorian Calendar) суббота
+ru_UA Name of weekday 07 (Gregorian Calendar) воскресенье
+ru_UA Name of weekday 01 (Islamic Calendar) понедельник
+ru_UA Name of weekday 02 (Islamic Calendar) вторник
+ru_UA Name of weekday 03 (Islamic Calendar) среда
+ru_UA Name of weekday 04 (Islamic Calendar) четверг
+ru_UA Name of weekday 05 (Islamic Calendar) пятница
+ru_UA Name of weekday 06 (Islamic Calendar) суббота
+ru_UA Name of weekday 07 (Islamic Calendar) воскресенье
+sv Language endonym svenska
+sv Country endonym
+sv Floating Point Number −123 456 789,012
+sv Percent value −1 234,5679 %
+sv Currency value 1 234,56 €
+sv Negative Currency value −1 234,56 €
+sv Date and time short (Gregorian Calendar) 2008-07-21 12.31
+sv Date and time medium (Gregorian Calendar) 21 jul 2008 12.31.00
+sv Date and time long (Gregorian Calendar) 21 juli 2008 12.31.00 GMT+00.00
+sv Date and time full (Gregorian Calendar) måndag 21 juli 2008 kl. 12.31.00 GMT+00.00
+sv Date and time short (Islamic Calendar) 1429-07-18 12.31
+sv Date and time medium (Islamic Calendar) 18 Rajab 1429 12.31.00
+sv Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+sv Date and time full (Islamic Calendar) måndag 18 Rajab 1429 kl. 12.31.00 GMT+00.00
+sv Name of month 01 (Gregorian Calendar) januari
+sv Name of month 02 (Gregorian Calendar) februari
+sv Name of month 03 (Gregorian Calendar) mars
+sv Name of month 04 (Gregorian Calendar) april
+sv Name of month 05 (Gregorian Calendar) maj
+sv Name of month 06 (Gregorian Calendar) juni
+sv Name of month 07 (Gregorian Calendar) juli
+sv Name of month 08 (Gregorian Calendar) augusti
+sv Name of month 09 (Gregorian Calendar) september
+sv Name of month 10 (Gregorian Calendar) oktober
+sv Name of month 11 (Gregorian Calendar) november
+sv Name of month 12 (Gregorian Calendar) december
+sv Name of month 01 (Islamic Calendar) Muharram
+sv Name of month 02 (Islamic Calendar) Safar
+sv Name of month 03 (Islamic Calendar) Rabiʻ I
+sv Name of month 04 (Islamic Calendar) Rabiʻ II
+sv Name of month 05 (Islamic Calendar) Jumada I
+sv Name of month 06 (Islamic Calendar) Jumada II
+sv Name of month 07 (Islamic Calendar) Rajab
+sv Name of month 08 (Islamic Calendar) Shaʻban
+sv Name of month 09 (Islamic Calendar) Ramadan
+sv Name of month 10 (Islamic Calendar) Shawwal
+sv Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv Name of weekday 01 (Gregorian Calendar) måndag
+sv Name of weekday 02 (Gregorian Calendar) tisdag
+sv Name of weekday 03 (Gregorian Calendar) onsdag
+sv Name of weekday 04 (Gregorian Calendar) torsdag
+sv Name of weekday 05 (Gregorian Calendar) fredag
+sv Name of weekday 06 (Gregorian Calendar) lördag
+sv Name of weekday 07 (Gregorian Calendar) söndag
+sv Name of weekday 01 (Islamic Calendar) måndag
+sv Name of weekday 02 (Islamic Calendar) tisdag
+sv Name of weekday 03 (Islamic Calendar) onsdag
+sv Name of weekday 04 (Islamic Calendar) torsdag
+sv Name of weekday 05 (Islamic Calendar) fredag
+sv Name of weekday 06 (Islamic Calendar) lördag
+sv Name of weekday 07 (Islamic Calendar) söndag
+sv_FI Language endonym svenska
+sv_FI Country endonym FI
+sv_FI Floating Point Number −123 456 789,012
+sv_FI Percent value −1 234,5679 %
+sv_FI Currency value 1 234,56 €
+sv_FI Negative Currency value −1 234,56 €
+sv_FI Date and time short (Gregorian Calendar) 2008-07-21 12.31
+sv_FI Date and time medium (Gregorian Calendar) 21 jul 2008 12.31.00
+sv_FI Date and time long (Gregorian Calendar) 21 juli 2008 12.31.00 GMT+00.00
+sv_FI Date and time full (Gregorian Calendar) måndag 21 juli 2008 kl. 12.31.00 GMT+00.00
+sv_FI Date and time short (Islamic Calendar) 1429-07-18 12.31
+sv_FI Date and time medium (Islamic Calendar) 18 Rajab 1429 12.31.00
+sv_FI Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+sv_FI Date and time full (Islamic Calendar) måndag 18 Rajab 1429 kl. 12.31.00 GMT+00.00
+sv_FI Name of month 01 (Gregorian Calendar) januari
+sv_FI Name of month 02 (Gregorian Calendar) februari
+sv_FI Name of month 03 (Gregorian Calendar) mars
+sv_FI Name of month 04 (Gregorian Calendar) april
+sv_FI Name of month 05 (Gregorian Calendar) maj
+sv_FI Name of month 06 (Gregorian Calendar) juni
+sv_FI Name of month 07 (Gregorian Calendar) juli
+sv_FI Name of month 08 (Gregorian Calendar) augusti
+sv_FI Name of month 09 (Gregorian Calendar) september
+sv_FI Name of month 10 (Gregorian Calendar) oktober
+sv_FI Name of month 11 (Gregorian Calendar) november
+sv_FI Name of month 12 (Gregorian Calendar) december
+sv_FI Name of month 01 (Islamic Calendar) Muharram
+sv_FI Name of month 02 (Islamic Calendar) Safar
+sv_FI Name of month 03 (Islamic Calendar) Rabiʻ I
+sv_FI Name of month 04 (Islamic Calendar) Rabiʻ II
+sv_FI Name of month 05 (Islamic Calendar) Jumada I
+sv_FI Name of month 06 (Islamic Calendar) Jumada II
+sv_FI Name of month 07 (Islamic Calendar) Rajab
+sv_FI Name of month 08 (Islamic Calendar) Shaʻban
+sv_FI Name of month 09 (Islamic Calendar) Ramadan
+sv_FI Name of month 10 (Islamic Calendar) Shawwal
+sv_FI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv_FI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv_FI Name of weekday 01 (Gregorian Calendar) måndag
+sv_FI Name of weekday 02 (Gregorian Calendar) tisdag
+sv_FI Name of weekday 03 (Gregorian Calendar) onsdag
+sv_FI Name of weekday 04 (Gregorian Calendar) torsdag
+sv_FI Name of weekday 05 (Gregorian Calendar) fredag
+sv_FI Name of weekday 06 (Gregorian Calendar) lördag
+sv_FI Name of weekday 07 (Gregorian Calendar) söndag
+sv_FI Name of weekday 01 (Islamic Calendar) måndag
+sv_FI Name of weekday 02 (Islamic Calendar) tisdag
+sv_FI Name of weekday 03 (Islamic Calendar) onsdag
+sv_FI Name of weekday 04 (Islamic Calendar) torsdag
+sv_FI Name of weekday 05 (Islamic Calendar) fredag
+sv_FI Name of weekday 06 (Islamic Calendar) lördag
+sv_FI Name of weekday 07 (Islamic Calendar) söndag
+sv_SE Language endonym svenska
+sv_SE Country endonym Sverige
+sv_SE Floating Point Number −123 456 789,012
+sv_SE Percent value −1 234,5679 %
+sv_SE Currency value 1 234,56 €
+sv_SE Negative Currency value −1 234,56 €
+sv_SE Date and time short (Gregorian Calendar) 2008-07-21 12.31
+sv_SE Date and time medium (Gregorian Calendar) 21 jul 2008 12.31.00
+sv_SE Date and time long (Gregorian Calendar) 21 juli 2008 12.31.00 GMT+00.00
+sv_SE Date and time full (Gregorian Calendar) måndag 21 juli 2008 kl. 12.31.00 GMT+00.00
+sv_SE Date and time short (Islamic Calendar) 1429-07-18 12.31
+sv_SE Date and time medium (Islamic Calendar) 18 Rajab 1429 12.31.00
+sv_SE Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+sv_SE Date and time full (Islamic Calendar) måndag 18 Rajab 1429 kl. 12.31.00 GMT+00.00
+sv_SE Name of month 01 (Gregorian Calendar) januari
+sv_SE Name of month 02 (Gregorian Calendar) februari
+sv_SE Name of month 03 (Gregorian Calendar) mars
+sv_SE Name of month 04 (Gregorian Calendar) april
+sv_SE Name of month 05 (Gregorian Calendar) maj
+sv_SE Name of month 06 (Gregorian Calendar) juni
+sv_SE Name of month 07 (Gregorian Calendar) juli
+sv_SE Name of month 08 (Gregorian Calendar) augusti
+sv_SE Name of month 09 (Gregorian Calendar) september
+sv_SE Name of month 10 (Gregorian Calendar) oktober
+sv_SE Name of month 11 (Gregorian Calendar) november
+sv_SE Name of month 12 (Gregorian Calendar) december
+sv_SE Name of month 01 (Islamic Calendar) Muharram
+sv_SE Name of month 02 (Islamic Calendar) Safar
+sv_SE Name of month 03 (Islamic Calendar) Rabiʻ I
+sv_SE Name of month 04 (Islamic Calendar) Rabiʻ II
+sv_SE Name of month 05 (Islamic Calendar) Jumada I
+sv_SE Name of month 06 (Islamic Calendar) Jumada II
+sv_SE Name of month 07 (Islamic Calendar) Rajab
+sv_SE Name of month 08 (Islamic Calendar) Shaʻban
+sv_SE Name of month 09 (Islamic Calendar) Ramadan
+sv_SE Name of month 10 (Islamic Calendar) Shawwal
+sv_SE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv_SE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv_SE Name of weekday 01 (Gregorian Calendar) måndag
+sv_SE Name of weekday 02 (Gregorian Calendar) tisdag
+sv_SE Name of weekday 03 (Gregorian Calendar) onsdag
+sv_SE Name of weekday 04 (Gregorian Calendar) torsdag
+sv_SE Name of weekday 05 (Gregorian Calendar) fredag
+sv_SE Name of weekday 06 (Gregorian Calendar) lördag
+sv_SE Name of weekday 07 (Gregorian Calendar) söndag
+sv_SE Name of weekday 01 (Islamic Calendar) måndag
+sv_SE Name of weekday 02 (Islamic Calendar) tisdag
+sv_SE Name of weekday 03 (Islamic Calendar) onsdag
+sv_SE Name of weekday 04 (Islamic Calendar) torsdag
+sv_SE Name of weekday 05 (Islamic Calendar) fredag
+sv_SE Name of weekday 06 (Islamic Calendar) lördag
+sv_SE Name of weekday 07 (Islamic Calendar) söndag
+th Language endonym ไทย
+th Country endonym
+th Floating Point Number -123,456,789.012
+th Percent value -1,234.5679%
+th Currency value €1,234.56
+th Negative Currency value €-1,234.56
+th Date and time short (Gregorian Calendar) 21/7/2008, 12:31
+th Date and time medium (Gregorian Calendar) 21 ก.ค. 2008, 12:31:00
+th Date and time long (Gregorian Calendar) 21 กรกฎาคม 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time full (Gregorian Calendar) วันจันทร์ที่ 21 กรกฎาคม ค.ศ. 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time short (Islamic Calendar) 18/7/1429, 12:31
+th Date and time medium (Islamic Calendar) 18 รอจับ 1429, 12:31:00
+th Date and time long (Islamic Calendar) 18 รอจับ 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time full (Islamic Calendar) วันจันทร์ที่ 18 รอจับ ฮ.ศ. 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Name of month 01 (Gregorian Calendar) มกราคม
+th Name of month 02 (Gregorian Calendar) กุมภาพันธ์
+th Name of month 03 (Gregorian Calendar) มีนาคม
+th Name of month 04 (Gregorian Calendar) เมษายน
+th Name of month 05 (Gregorian Calendar) พฤษภาคม
+th Name of month 06 (Gregorian Calendar) มิถุนายน
+th Name of month 07 (Gregorian Calendar) กรกฎาคม
+th Name of month 08 (Gregorian Calendar) สิงหาคม
+th Name of month 09 (Gregorian Calendar) กันยายน
+th Name of month 10 (Gregorian Calendar) ตุลาคม
+th Name of month 11 (Gregorian Calendar) พฤศจิกายน
+th Name of month 12 (Gregorian Calendar) ธันวาคม
+th Name of month 01 (Islamic Calendar) มุฮะร์รอม
+th Name of month 02 (Islamic Calendar) ซอฟาร์
+th Name of month 03 (Islamic Calendar) รอบี I
+th Name of month 04 (Islamic Calendar) รอบี II
+th Name of month 05 (Islamic Calendar) จุมาดา I
+th Name of month 06 (Islamic Calendar) จุมาดา II
+th Name of month 07 (Islamic Calendar) รอจับ
+th Name of month 08 (Islamic Calendar) ชะอะบาน
+th Name of month 09 (Islamic Calendar) รอมะดอน
+th Name of month 10 (Islamic Calendar) เชาวัล
+th Name of month 11 (Islamic Calendar) ดฮุุอัลกิดะห์
+th Name of month 12 (Islamic Calendar) ดฮุอัลฮิจจะห์
+th Name of weekday 01 (Gregorian Calendar) วันจันทร์
+th Name of weekday 02 (Gregorian Calendar) วันอังคาร
+th Name of weekday 03 (Gregorian Calendar) วันพุธ
+th Name of weekday 04 (Gregorian Calendar) วันพฤหัสบดี
+th Name of weekday 05 (Gregorian Calendar) วันศุกร์
+th Name of weekday 06 (Gregorian Calendar) วันเสาร์
+th Name of weekday 07 (Gregorian Calendar) วันอาทิตย์
+th Name of weekday 01 (Islamic Calendar) วันจันทร์
+th Name of weekday 02 (Islamic Calendar) วันอังคาร
+th Name of weekday 03 (Islamic Calendar) วันพุธ
+th Name of weekday 04 (Islamic Calendar) วันพฤหัสบดี
+th Name of weekday 05 (Islamic Calendar) วันศุกร์
+th Name of weekday 06 (Islamic Calendar) วันเสาร์
+th Name of weekday 07 (Islamic Calendar) วันอาทิตย์
+th_TH Language endonym ไทย
+th_TH Country endonym ไทย
+th_TH Floating Point Number -123,456,789.012
+th_TH Percent value -1,234.5679%
+th_TH Currency value €1,234.56
+th_TH Negative Currency value €-1,234.56
+th_TH Date and time short (Gregorian Calendar) 21/7/2008, 12:31
+th_TH Date and time medium (Gregorian Calendar) 21 ก.ค. 2008, 12:31:00
+th_TH Date and time long (Gregorian Calendar) 21 กรกฎาคม 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time full (Gregorian Calendar) วันจันทร์ที่ 21 กรกฎาคม ค.ศ. 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time short (Islamic Calendar) 18/7/1429, 12:31
+th_TH Date and time medium (Islamic Calendar) 18 รอจับ 1429, 12:31:00
+th_TH Date and time long (Islamic Calendar) 18 รอจับ 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time full (Islamic Calendar) วันจันทร์ที่ 18 รอจับ ฮ.ศ. 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Name of month 01 (Gregorian Calendar) มกราคม
+th_TH Name of month 02 (Gregorian Calendar) กุมภาพันธ์
+th_TH Name of month 03 (Gregorian Calendar) มีนาคม
+th_TH Name of month 04 (Gregorian Calendar) เมษายน
+th_TH Name of month 05 (Gregorian Calendar) พฤษภาคม
+th_TH Name of month 06 (Gregorian Calendar) มิถุนายน
+th_TH Name of month 07 (Gregorian Calendar) กรกฎาคม
+th_TH Name of month 08 (Gregorian Calendar) สิงหาคม
+th_TH Name of month 09 (Gregorian Calendar) กันยายน
+th_TH Name of month 10 (Gregorian Calendar) ตุลาคม
+th_TH Name of month 11 (Gregorian Calendar) พฤศจิกายน
+th_TH Name of month 12 (Gregorian Calendar) ธันวาคม
+th_TH Name of month 01 (Islamic Calendar) มุฮะร์รอม
+th_TH Name of month 02 (Islamic Calendar) ซอฟาร์
+th_TH Name of month 03 (Islamic Calendar) รอบี I
+th_TH Name of month 04 (Islamic Calendar) รอบี II
+th_TH Name of month 05 (Islamic Calendar) จุมาดา I
+th_TH Name of month 06 (Islamic Calendar) จุมาดา II
+th_TH Name of month 07 (Islamic Calendar) รอจับ
+th_TH Name of month 08 (Islamic Calendar) ชะอะบาน
+th_TH Name of month 09 (Islamic Calendar) รอมะดอน
+th_TH Name of month 10 (Islamic Calendar) เชาวัล
+th_TH Name of month 11 (Islamic Calendar) ดฮุุอัลกิดะห์
+th_TH Name of month 12 (Islamic Calendar) ดฮุอัลฮิจจะห์
+th_TH Name of weekday 01 (Gregorian Calendar) วันจันทร์
+th_TH Name of weekday 02 (Gregorian Calendar) วันอังคาร
+th_TH Name of weekday 03 (Gregorian Calendar) วันพุธ
+th_TH Name of weekday 04 (Gregorian Calendar) วันพฤหัสบดี
+th_TH Name of weekday 05 (Gregorian Calendar) วันศุกร์
+th_TH Name of weekday 06 (Gregorian Calendar) วันเสาร์
+th_TH Name of weekday 07 (Gregorian Calendar) วันอาทิตย์
+th_TH Name of weekday 01 (Islamic Calendar) วันจันทร์
+th_TH Name of weekday 02 (Islamic Calendar) วันอังคาร
+th_TH Name of weekday 03 (Islamic Calendar) วันพุธ
+th_TH Name of weekday 04 (Islamic Calendar) วันพฤหัสบดี
+th_TH Name of weekday 05 (Islamic Calendar) วันศุกร์
+th_TH Name of weekday 06 (Islamic Calendar) วันเสาร์
+th_TH Name of weekday 07 (Islamic Calendar) วันอาทิตย์
+tr Language endonym Türkçe
+tr Country endonym
+tr Floating Point Number -123.456.789,012
+tr Percent value -% 1.234,5679
+tr Currency value 1.234,56 €
+tr Negative Currency value -1.234,56 €
+tr Date and time short (Gregorian Calendar) 21.07.2008 12:31
+tr Date and time medium (Gregorian Calendar) 21 Tem 2008 12:31:00
+tr Date and time long (Gregorian Calendar) 21 Temmuz 2008 12:31:00 GMT+00:00
+tr Date and time full (Gregorian Calendar) 21 Temmuz 2008 Pazartesi 12:31:00 GMT+00:00
+tr Date and time short (Islamic Calendar) 18.07.1429 12:31
+tr Date and time medium (Islamic Calendar) 18 Recep 1429 12:31:00
+tr Date and time long (Islamic Calendar) 18 Recep 1429 12:31:00 GMT+00:00
+tr Date and time full (Islamic Calendar) 18 Recep 1429 Pazartesi 12:31:00 GMT+00:00
+tr Name of month 01 (Gregorian Calendar) Ocak
+tr Name of month 02 (Gregorian Calendar) Şubat
+tr Name of month 03 (Gregorian Calendar) Mart
+tr Name of month 04 (Gregorian Calendar) Nisan
+tr Name of month 05 (Gregorian Calendar) Mayıs
+tr Name of month 06 (Gregorian Calendar) Haziran
+tr Name of month 07 (Gregorian Calendar) Temmuz
+tr Name of month 08 (Gregorian Calendar) Ağustos
+tr Name of month 09 (Gregorian Calendar) Eylül
+tr Name of month 10 (Gregorian Calendar) Ekim
+tr Name of month 11 (Gregorian Calendar) Kasım
+tr Name of month 12 (Gregorian Calendar) Aralık
+tr Name of month 01 (Islamic Calendar) Muharrem
+tr Name of month 02 (Islamic Calendar) Safer
+tr Name of month 03 (Islamic Calendar) Rebiülevvel
+tr Name of month 04 (Islamic Calendar) Rebiülahir
+tr Name of month 05 (Islamic Calendar) Cemaziyelevvel
+tr Name of month 06 (Islamic Calendar) Cemaziyelahir
+tr Name of month 07 (Islamic Calendar) Recep
+tr Name of month 08 (Islamic Calendar) Şaban
+tr Name of month 09 (Islamic Calendar) Ramazan
+tr Name of month 10 (Islamic Calendar) Şevval
+tr Name of month 11 (Islamic Calendar) Zilkade
+tr Name of month 12 (Islamic Calendar) Zilhicce
+tr Name of weekday 01 (Gregorian Calendar) Pazartesi
+tr Name of weekday 02 (Gregorian Calendar) Salı
+tr Name of weekday 03 (Gregorian Calendar) Çarşamba
+tr Name of weekday 04 (Gregorian Calendar) Perşembe
+tr Name of weekday 05 (Gregorian Calendar) Cuma
+tr Name of weekday 06 (Gregorian Calendar) Cumartesi
+tr Name of weekday 07 (Gregorian Calendar) Pazar
+tr Name of weekday 01 (Islamic Calendar) Pazartesi
+tr Name of weekday 02 (Islamic Calendar) Salı
+tr Name of weekday 03 (Islamic Calendar) Çarşamba
+tr Name of weekday 04 (Islamic Calendar) Perşembe
+tr Name of weekday 05 (Islamic Calendar) Cuma
+tr Name of weekday 06 (Islamic Calendar) Cumartesi
+tr Name of weekday 07 (Islamic Calendar) Pazar
+tr_TR Language endonym Türkçe
+tr_TR Country endonym Türkiye
+tr_TR Floating Point Number -123.456.789,012
+tr_TR Percent value -% 1.234,5679
+tr_TR Currency value 1.234,56 €
+tr_TR Negative Currency value -1.234,56 €
+tr_TR Date and time short (Gregorian Calendar) 21.07.2008 12:31
+tr_TR Date and time medium (Gregorian Calendar) 21 Tem 2008 12:31:00
+tr_TR Date and time long (Gregorian Calendar) 21 Temmuz 2008 12:31:00 GMT+00:00
+tr_TR Date and time full (Gregorian Calendar) 21 Temmuz 2008 Pazartesi 12:31:00 GMT+00:00
+tr_TR Date and time short (Islamic Calendar) 18.07.1429 12:31
+tr_TR Date and time medium (Islamic Calendar) 18 Recep 1429 12:31:00
+tr_TR Date and time long (Islamic Calendar) 18 Recep 1429 12:31:00 GMT+00:00
+tr_TR Date and time full (Islamic Calendar) 18 Recep 1429 Pazartesi 12:31:00 GMT+00:00
+tr_TR Name of month 01 (Gregorian Calendar) Ocak
+tr_TR Name of month 02 (Gregorian Calendar) Şubat
+tr_TR Name of month 03 (Gregorian Calendar) Mart
+tr_TR Name of month 04 (Gregorian Calendar) Nisan
+tr_TR Name of month 05 (Gregorian Calendar) Mayıs
+tr_TR Name of month 06 (Gregorian Calendar) Haziran
+tr_TR Name of month 07 (Gregorian Calendar) Temmuz
+tr_TR Name of month 08 (Gregorian Calendar) Ağustos
+tr_TR Name of month 09 (Gregorian Calendar) Eylül
+tr_TR Name of month 10 (Gregorian Calendar) Ekim
+tr_TR Name of month 11 (Gregorian Calendar) Kasım
+tr_TR Name of month 12 (Gregorian Calendar) Aralık
+tr_TR Name of month 01 (Islamic Calendar) Muharrem
+tr_TR Name of month 02 (Islamic Calendar) Safer
+tr_TR Name of month 03 (Islamic Calendar) Rebiülevvel
+tr_TR Name of month 04 (Islamic Calendar) Rebiülahir
+tr_TR Name of month 05 (Islamic Calendar) Cemaziyelevvel
+tr_TR Name of month 06 (Islamic Calendar) Cemaziyelahir
+tr_TR Name of month 07 (Islamic Calendar) Recep
+tr_TR Name of month 08 (Islamic Calendar) Şaban
+tr_TR Name of month 09 (Islamic Calendar) Ramazan
+tr_TR Name of month 10 (Islamic Calendar) Şevval
+tr_TR Name of month 11 (Islamic Calendar) Zilkade
+tr_TR Name of month 12 (Islamic Calendar) Zilhicce
+tr_TR Name of weekday 01 (Gregorian Calendar) Pazartesi
+tr_TR Name of weekday 02 (Gregorian Calendar) Salı
+tr_TR Name of weekday 03 (Gregorian Calendar) Çarşamba
+tr_TR Name of weekday 04 (Gregorian Calendar) Perşembe
+tr_TR Name of weekday 05 (Gregorian Calendar) Cuma
+tr_TR Name of weekday 06 (Gregorian Calendar) Cumartesi
+tr_TR Name of weekday 07 (Gregorian Calendar) Pazar
+tr_TR Name of weekday 01 (Islamic Calendar) Pazartesi
+tr_TR Name of weekday 02 (Islamic Calendar) Salı
+tr_TR Name of weekday 03 (Islamic Calendar) Çarşamba
+tr_TR Name of weekday 04 (Islamic Calendar) Perşembe
+tr_TR Name of weekday 05 (Islamic Calendar) Cuma
+tr_TR Name of weekday 06 (Islamic Calendar) Cumartesi
+tr_TR Name of weekday 07 (Islamic Calendar) Pazar
+uk Language endonym українська
+uk Country endonym
+uk Floating Point Number -123 456 789,012
+uk Percent value -1 234,5679%
+uk Currency value 1 234,56 €
+uk Negative Currency value -1 234,56 €
+uk Date and time short (Gregorian Calendar) 21.07.08 12:31
+uk Date and time medium (Gregorian Calendar) 21 лип. 2008 12:31:00
+uk Date and time long (Gregorian Calendar) 21 липня 2008 р. 12:31:00 GMT+00:00
+uk Date and time full (Gregorian Calendar) Понеділок, 21 липня 2008 р. 12:31:00 GMT+00:00
+uk Date and time short (Islamic Calendar) 18.07.29 12:31
+uk Date and time medium (Islamic Calendar) 18 Раджаб 1429 12:31:00
+uk Date and time long (Islamic Calendar) 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk Date and time full (Islamic Calendar) Понеділок, 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk Name of month 01 (Gregorian Calendar) січня
+uk Name of month 02 (Gregorian Calendar) лютого
+uk Name of month 03 (Gregorian Calendar) березня
+uk Name of month 04 (Gregorian Calendar) квітня
+uk Name of month 05 (Gregorian Calendar) травня
+uk Name of month 06 (Gregorian Calendar) червня
+uk Name of month 07 (Gregorian Calendar) липня
+uk Name of month 08 (Gregorian Calendar) серпня
+uk Name of month 09 (Gregorian Calendar) вересня
+uk Name of month 10 (Gregorian Calendar) жовтня
+uk Name of month 11 (Gregorian Calendar) листопада
+uk Name of month 12 (Gregorian Calendar) грудня
+uk Name of month 01 (Islamic Calendar) Мухаррам
+uk Name of month 02 (Islamic Calendar) Сафар
+uk Name of month 03 (Islamic Calendar) Рабі I
+uk Name of month 04 (Islamic Calendar) Рабі II
+uk Name of month 05 (Islamic Calendar) Джумада I
+uk Name of month 06 (Islamic Calendar) Джумада II
+uk Name of month 07 (Islamic Calendar) Раджаб
+uk Name of month 08 (Islamic Calendar) Шаабан
+uk Name of month 09 (Islamic Calendar) Рамадан
+uk Name of month 10 (Islamic Calendar) Даввал
+uk Name of month 11 (Islamic Calendar) Зу-ль-каада
+uk Name of month 12 (Islamic Calendar) Зу-ль-хіджа
+uk Name of weekday 01 (Gregorian Calendar) Понеділок
+uk Name of weekday 02 (Gregorian Calendar) Вівторок
+uk Name of weekday 03 (Gregorian Calendar) Середа
+uk Name of weekday 04 (Gregorian Calendar) Четвер
+uk Name of weekday 05 (Gregorian Calendar) Пʼятниця
+uk Name of weekday 06 (Gregorian Calendar) Субота
+uk Name of weekday 07 (Gregorian Calendar) Неділя
+uk Name of weekday 01 (Islamic Calendar) Понеділок
+uk Name of weekday 02 (Islamic Calendar) Вівторок
+uk Name of weekday 03 (Islamic Calendar) Середа
+uk Name of weekday 04 (Islamic Calendar) Четвер
+uk Name of weekday 05 (Islamic Calendar) Пʼятниця
+uk Name of weekday 06 (Islamic Calendar) Субота
+uk Name of weekday 07 (Islamic Calendar) Неділя
+uk_UA Language endonym українська
+uk_UA Country endonym Україна
+uk_UA Floating Point Number -123 456 789,012
+uk_UA Percent value -1 234,5679%
+uk_UA Currency value 1 234,56 €
+uk_UA Negative Currency value -1 234,56 €
+uk_UA Date and time short (Gregorian Calendar) 21.07.08 12:31
+uk_UA Date and time medium (Gregorian Calendar) 21 лип. 2008 12:31:00
+uk_UA Date and time long (Gregorian Calendar) 21 липня 2008 р. 12:31:00 GMT+00:00
+uk_UA Date and time full (Gregorian Calendar) Понеділок, 21 липня 2008 р. 12:31:00 GMT+00:00
+uk_UA Date and time short (Islamic Calendar) 18.07.29 12:31
+uk_UA Date and time medium (Islamic Calendar) 18 Раджаб 1429 12:31:00
+uk_UA Date and time long (Islamic Calendar) 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk_UA Date and time full (Islamic Calendar) Понеділок, 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk_UA Name of month 01 (Gregorian Calendar) січня
+uk_UA Name of month 02 (Gregorian Calendar) лютого
+uk_UA Name of month 03 (Gregorian Calendar) березня
+uk_UA Name of month 04 (Gregorian Calendar) квітня
+uk_UA Name of month 05 (Gregorian Calendar) травня
+uk_UA Name of month 06 (Gregorian Calendar) червня
+uk_UA Name of month 07 (Gregorian Calendar) липня
+uk_UA Name of month 08 (Gregorian Calendar) серпня
+uk_UA Name of month 09 (Gregorian Calendar) вересня
+uk_UA Name of month 10 (Gregorian Calendar) жовтня
+uk_UA Name of month 11 (Gregorian Calendar) листопада
+uk_UA Name of month 12 (Gregorian Calendar) грудня
+uk_UA Name of month 01 (Islamic Calendar) Мухаррам
+uk_UA Name of month 02 (Islamic Calendar) Сафар
+uk_UA Name of month 03 (Islamic Calendar) Рабі I
+uk_UA Name of month 04 (Islamic Calendar) Рабі II
+uk_UA Name of month 05 (Islamic Calendar) Джумада I
+uk_UA Name of month 06 (Islamic Calendar) Джумада II
+uk_UA Name of month 07 (Islamic Calendar) Раджаб
+uk_UA Name of month 08 (Islamic Calendar) Шаабан
+uk_UA Name of month 09 (Islamic Calendar) Рамадан
+uk_UA Name of month 10 (Islamic Calendar) Даввал
+uk_UA Name of month 11 (Islamic Calendar) Зу-ль-каада
+uk_UA Name of month 12 (Islamic Calendar) Зу-ль-хіджа
+uk_UA Name of weekday 01 (Gregorian Calendar) Понеділок
+uk_UA Name of weekday 02 (Gregorian Calendar) Вівторок
+uk_UA Name of weekday 03 (Gregorian Calendar) Середа
+uk_UA Name of weekday 04 (Gregorian Calendar) Четвер
+uk_UA Name of weekday 05 (Gregorian Calendar) Пʼятниця
+uk_UA Name of weekday 06 (Gregorian Calendar) Субота
+uk_UA Name of weekday 07 (Gregorian Calendar) Неділя
+uk_UA Name of weekday 01 (Islamic Calendar) Понеділок
+uk_UA Name of weekday 02 (Islamic Calendar) Вівторок
+uk_UA Name of weekday 03 (Islamic Calendar) Середа
+uk_UA Name of weekday 04 (Islamic Calendar) Четвер
+uk_UA Name of weekday 05 (Islamic Calendar) Пʼятниця
+uk_UA Name of weekday 06 (Islamic Calendar) Субота
+uk_UA Name of weekday 07 (Islamic Calendar) Неділя
+ur Language endonym اردو
+ur Country endonym
+ur Floating Point Number -123,456,789.012
+ur Percent value -1,234.5679%
+ur Currency value €1,234.56
+ur Negative Currency value -€1,234.56
+ur Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur Date and time medium (Islamic Calendar) 18, رجب 1429 12:31:00 PM
+ur Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur Name of month 01 (Gregorian Calendar) جنوری
+ur Name of month 02 (Gregorian Calendar) فروری
+ur Name of month 03 (Gregorian Calendar) مار چ
+ur Name of month 04 (Gregorian Calendar) اپريل
+ur Name of month 05 (Gregorian Calendar) مئ
+ur Name of month 06 (Gregorian Calendar) جون
+ur Name of month 07 (Gregorian Calendar) جولائ
+ur Name of month 08 (Gregorian Calendar) اگست
+ur Name of month 09 (Gregorian Calendar) ستمبر
+ur Name of month 10 (Gregorian Calendar) اکتوبر
+ur Name of month 11 (Gregorian Calendar) نومبر
+ur Name of month 12 (Gregorian Calendar) دسمبر
+ur Name of month 01 (Islamic Calendar) محرم
+ur Name of month 02 (Islamic Calendar) صفر
+ur Name of month 03 (Islamic Calendar) ر بيع الاول
+ur Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur Name of month 05 (Islamic Calendar) جمادی الاول
+ur Name of month 06 (Islamic Calendar) جمادی الثانی
+ur Name of month 07 (Islamic Calendar) رجب
+ur Name of month 08 (Islamic Calendar) شعبان
+ur Name of month 09 (Islamic Calendar) رمضان
+ur Name of month 10 (Islamic Calendar) شوال
+ur Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur Name of weekday 01 (Gregorian Calendar) پير
+ur Name of weekday 02 (Gregorian Calendar) منگل
+ur Name of weekday 03 (Gregorian Calendar) بده
+ur Name of weekday 04 (Gregorian Calendar) جمعرات
+ur Name of weekday 05 (Gregorian Calendar) جمعہ
+ur Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur Name of weekday 07 (Gregorian Calendar) اتوار
+ur Name of weekday 01 (Islamic Calendar) پير
+ur Name of weekday 02 (Islamic Calendar) منگل
+ur Name of weekday 03 (Islamic Calendar) بده
+ur Name of weekday 04 (Islamic Calendar) جمعرات
+ur Name of weekday 05 (Islamic Calendar) جمعہ
+ur Name of weekday 06 (Islamic Calendar) ہفتہ
+ur Name of weekday 07 (Islamic Calendar) اتوار
+ur_IN Language endonym اردو
+ur_IN Country endonym بھارت
+ur_IN Floating Point Number -12,34,56,789.012
+ur_IN Percent value -1,234.5679%
+ur_IN Currency value € 1,234.56
+ur_IN Negative Currency value -€ 1,234.56
+ur_IN Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur_IN Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur_IN Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_IN Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_IN Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur_IN Date and time medium (Islamic Calendar) 18, رجب 1429 12:31:00 PM
+ur_IN Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_IN Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_IN Name of month 01 (Gregorian Calendar) جنوری
+ur_IN Name of month 02 (Gregorian Calendar) فروری
+ur_IN Name of month 03 (Gregorian Calendar) مار چ
+ur_IN Name of month 04 (Gregorian Calendar) اپريل
+ur_IN Name of month 05 (Gregorian Calendar) مئ
+ur_IN Name of month 06 (Gregorian Calendar) جون
+ur_IN Name of month 07 (Gregorian Calendar) جولائ
+ur_IN Name of month 08 (Gregorian Calendar) اگست
+ur_IN Name of month 09 (Gregorian Calendar) ستمبر
+ur_IN Name of month 10 (Gregorian Calendar) اکتوبر
+ur_IN Name of month 11 (Gregorian Calendar) نومبر
+ur_IN Name of month 12 (Gregorian Calendar) دسمبر
+ur_IN Name of month 01 (Islamic Calendar) محرم
+ur_IN Name of month 02 (Islamic Calendar) صفر
+ur_IN Name of month 03 (Islamic Calendar) ر بيع الاول
+ur_IN Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur_IN Name of month 05 (Islamic Calendar) جمادی الاول
+ur_IN Name of month 06 (Islamic Calendar) جمادی الثانی
+ur_IN Name of month 07 (Islamic Calendar) رجب
+ur_IN Name of month 08 (Islamic Calendar) شعبان
+ur_IN Name of month 09 (Islamic Calendar) رمضان
+ur_IN Name of month 10 (Islamic Calendar) شوال
+ur_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur_IN Name of weekday 01 (Gregorian Calendar) پير
+ur_IN Name of weekday 02 (Gregorian Calendar) منگل
+ur_IN Name of weekday 03 (Gregorian Calendar) بده
+ur_IN Name of weekday 04 (Gregorian Calendar) جمعرات
+ur_IN Name of weekday 05 (Gregorian Calendar) جمعہ
+ur_IN Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur_IN Name of weekday 07 (Gregorian Calendar) اتوار
+ur_IN Name of weekday 01 (Islamic Calendar) پير
+ur_IN Name of weekday 02 (Islamic Calendar) منگل
+ur_IN Name of weekday 03 (Islamic Calendar) بده
+ur_IN Name of weekday 04 (Islamic Calendar) جمعرات
+ur_IN Name of weekday 05 (Islamic Calendar) جمعہ
+ur_IN Name of weekday 06 (Islamic Calendar) ہفتہ
+ur_IN Name of weekday 07 (Islamic Calendar) اتوار
+ur_PK Language endonym اردو
+ur_PK Country endonym پاکستان
+ur_PK Floating Point Number -123,456,789.012
+ur_PK Percent value -1,234.5679%
+ur_PK Currency value €1,234.56
+ur_PK Negative Currency value -€1,234.56
+ur_PK Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur_PK Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur_PK Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_PK Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_PK Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur_PK Date and time medium (Islamic Calendar) 18, رجب 1429 12:31:00 PM
+ur_PK Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_PK Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_PK Name of month 01 (Gregorian Calendar) جنوری
+ur_PK Name of month 02 (Gregorian Calendar) فروری
+ur_PK Name of month 03 (Gregorian Calendar) مار چ
+ur_PK Name of month 04 (Gregorian Calendar) اپريل
+ur_PK Name of month 05 (Gregorian Calendar) مئ
+ur_PK Name of month 06 (Gregorian Calendar) جون
+ur_PK Name of month 07 (Gregorian Calendar) جولائ
+ur_PK Name of month 08 (Gregorian Calendar) اگست
+ur_PK Name of month 09 (Gregorian Calendar) ستمبر
+ur_PK Name of month 10 (Gregorian Calendar) اکتوبر
+ur_PK Name of month 11 (Gregorian Calendar) نومبر
+ur_PK Name of month 12 (Gregorian Calendar) دسمبر
+ur_PK Name of month 01 (Islamic Calendar) محرم
+ur_PK Name of month 02 (Islamic Calendar) صفر
+ur_PK Name of month 03 (Islamic Calendar) ر بيع الاول
+ur_PK Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur_PK Name of month 05 (Islamic Calendar) جمادی الاول
+ur_PK Name of month 06 (Islamic Calendar) جمادی الثانی
+ur_PK Name of month 07 (Islamic Calendar) رجب
+ur_PK Name of month 08 (Islamic Calendar) شعبان
+ur_PK Name of month 09 (Islamic Calendar) رمضان
+ur_PK Name of month 10 (Islamic Calendar) شوال
+ur_PK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur_PK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur_PK Name of weekday 01 (Gregorian Calendar) پير
+ur_PK Name of weekday 02 (Gregorian Calendar) منگل
+ur_PK Name of weekday 03 (Gregorian Calendar) بده
+ur_PK Name of weekday 04 (Gregorian Calendar) جمعرات
+ur_PK Name of weekday 05 (Gregorian Calendar) جمعہ
+ur_PK Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur_PK Name of weekday 07 (Gregorian Calendar) اتوار
+ur_PK Name of weekday 01 (Islamic Calendar) پير
+ur_PK Name of weekday 02 (Islamic Calendar) منگل
+ur_PK Name of weekday 03 (Islamic Calendar) بده
+ur_PK Name of weekday 04 (Islamic Calendar) جمعرات
+ur_PK Name of weekday 05 (Islamic Calendar) جمعہ
+ur_PK Name of weekday 06 (Islamic Calendar) ہفتہ
+ur_PK Name of weekday 07 (Islamic Calendar) اتوار
+zh Language endonym 中文
+zh Country endonym
+zh Floating Point Number -123,456,789.012
+zh Percent value -1,234.5679%
+zh Currency value €1,234.56
+zh Negative Currency value -€1,234.56
+zh Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh Date and time short (Islamic Calendar) 29-7-18 PM12:31
+zh Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000PM12时31分00秒
+zh Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh Name of month 01 (Gregorian Calendar) 1月
+zh Name of month 02 (Gregorian Calendar) 2月
+zh Name of month 03 (Gregorian Calendar) 3月
+zh Name of month 04 (Gregorian Calendar) 4月
+zh Name of month 05 (Gregorian Calendar) 5月
+zh Name of month 06 (Gregorian Calendar) 6月
+zh Name of month 07 (Gregorian Calendar) 7月
+zh Name of month 08 (Gregorian Calendar) 8月
+zh Name of month 09 (Gregorian Calendar) 9月
+zh Name of month 10 (Gregorian Calendar) 10月
+zh Name of month 11 (Gregorian Calendar) 11月
+zh Name of month 12 (Gregorian Calendar) 12月
+zh Name of month 01 (Islamic Calendar) Muharram
+zh Name of month 02 (Islamic Calendar) Safar
+zh Name of month 03 (Islamic Calendar) Rabiʻ I
+zh Name of month 04 (Islamic Calendar) Rabiʻ II
+zh Name of month 05 (Islamic Calendar) Jumada I
+zh Name of month 06 (Islamic Calendar) Jumada II
+zh Name of month 07 (Islamic Calendar) Rajab
+zh Name of month 08 (Islamic Calendar) Shaʻban
+zh Name of month 09 (Islamic Calendar) Ramadan
+zh Name of month 10 (Islamic Calendar) Shawwal
+zh Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh Name of weekday 01 (Gregorian Calendar) 星期一
+zh Name of weekday 02 (Gregorian Calendar) 星期二
+zh Name of weekday 03 (Gregorian Calendar) 星期三
+zh Name of weekday 04 (Gregorian Calendar) 星期四
+zh Name of weekday 05 (Gregorian Calendar) 星期五
+zh Name of weekday 06 (Gregorian Calendar) 星期六
+zh Name of weekday 07 (Gregorian Calendar) 星期日
+zh Name of weekday 01 (Islamic Calendar) 星期一
+zh Name of weekday 02 (Islamic Calendar) 星期二
+zh Name of weekday 03 (Islamic Calendar) 星期三
+zh Name of weekday 04 (Islamic Calendar) 星期四
+zh Name of weekday 05 (Islamic Calendar) 星期五
+zh Name of weekday 06 (Islamic Calendar) 星期六
+zh Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans Language endonym 中文
+zh_Hans Country endonym
+zh_Hans Floating Point Number -123,456,789.012
+zh_Hans Percent value -1,234.5679%
+zh_Hans Currency value €1,234.56
+zh_Hans Negative Currency value -€1,234.56
+zh_Hans Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Date and time short (Islamic Calendar) 29-7-18 PM12:31
+zh_Hans Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh_Hans Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000PM12时31分00秒
+zh_Hans Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh_Hans Name of month 01 (Gregorian Calendar) 1月
+zh_Hans Name of month 02 (Gregorian Calendar) 2月
+zh_Hans Name of month 03 (Gregorian Calendar) 3月
+zh_Hans Name of month 04 (Gregorian Calendar) 4月
+zh_Hans Name of month 05 (Gregorian Calendar) 5月
+zh_Hans Name of month 06 (Gregorian Calendar) 6月
+zh_Hans Name of month 07 (Gregorian Calendar) 7月
+zh_Hans Name of month 08 (Gregorian Calendar) 8月
+zh_Hans Name of month 09 (Gregorian Calendar) 9月
+zh_Hans Name of month 10 (Gregorian Calendar) 10月
+zh_Hans Name of month 11 (Gregorian Calendar) 11月
+zh_Hans Name of month 12 (Gregorian Calendar) 12月
+zh_Hans Name of month 01 (Islamic Calendar) Muharram
+zh_Hans Name of month 02 (Islamic Calendar) Safar
+zh_Hans Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans Name of month 07 (Islamic Calendar) Rajab
+zh_Hans Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_CN Language endonym 中文
+zh_Hans_CN Country endonym 中国
+zh_Hans_CN Floating Point Number -123,456,789.012
+zh_Hans_CN Percent value -1,234.5679%
+zh_Hans_CN Currency value €1,234.56
+zh_Hans_CN Negative Currency value -€1,234.56
+zh_Hans_CN Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_CN Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_CN Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Date and time short (Islamic Calendar) 29-7-18 PM12:31
+zh_Hans_CN Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh_Hans_CN Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_CN Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_CN Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_CN Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_CN Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_CN Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_CN Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_CN Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_CN Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_CN Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_CN Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_CN Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_CN Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_CN Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_CN Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_CN Name of month 02 (Islamic Calendar) Safar
+zh_Hans_CN Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_CN Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_CN Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_CN Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_CN Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_CN Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_CN Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_CN Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_CN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_CN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_CN Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_CN Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_CN Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_CN Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_CN Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_CN Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_CN Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_CN Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_CN Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_CN Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_CN Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_CN Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_CN Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_CN Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_HK Language endonym 中文
+zh_Hans_HK Country endonym 中国香港特别行政区
+zh_Hans_HK Floating Point Number -123,456,789.012
+zh_Hans_HK Percent value -1,234.5679%
+zh_Hans_HK Currency value €1,234.56
+zh_Hans_HK Negative Currency value -€1,234.56
+zh_Hans_HK Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_HK Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_HK Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Date and time short (Islamic Calendar) 29-7-18 PM12:31
+zh_Hans_HK Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh_Hans_HK Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_HK Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_HK Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_HK Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_HK Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_HK Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_HK Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_HK Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_HK Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_HK Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_HK Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_HK Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_HK Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_HK Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_HK Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_HK Name of month 02 (Islamic Calendar) Safar
+zh_Hans_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_HK Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_HK Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_HK Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_HK Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_HK Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_HK Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_HK Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_HK Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_HK Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_HK Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_HK Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_HK Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_HK Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_HK Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_HK Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_HK Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_HK Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_HK Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_HK Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_HK Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_MO Language endonym 中文
+zh_Hans_MO Country endonym 中国澳门特别行政区
+zh_Hans_MO Floating Point Number -123,456,789.012
+zh_Hans_MO Percent value -1,234.5679%
+zh_Hans_MO Currency value €1,234.56
+zh_Hans_MO Negative Currency value -€1,234.56
+zh_Hans_MO Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_MO Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_MO Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Date and time short (Islamic Calendar) 29-7-18 PM12:31
+zh_Hans_MO Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh_Hans_MO Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_MO Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_MO Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_MO Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_MO Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_MO Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_MO Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_MO Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_MO Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_MO Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_MO Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_MO Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_MO Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_MO Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_MO Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_MO Name of month 02 (Islamic Calendar) Safar
+zh_Hans_MO Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_MO Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_MO Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_MO Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_MO Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_MO Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_MO Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_MO Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_MO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_MO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_MO Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_MO Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_MO Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_MO Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_MO Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_MO Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_MO Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_MO Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_MO Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_MO Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_MO Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_MO Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_MO Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_MO Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_SG Language endonym 中文
+zh_Hans_SG Country endonym 新加坡
+zh_Hans_SG Floating Point Number -123,456,789.012
+zh_Hans_SG Percent value -1,234.5679%
+zh_Hans_SG Currency value €1,234.56
+zh_Hans_SG Negative Currency value -€1,234.56
+zh_Hans_SG Date and time short (Gregorian Calendar) 21/07/08 下午12:31
+zh_Hans_SG Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_SG Date and time long (Gregorian Calendar) 2008年7月21日下午12:31:00格林尼治标准时间+0000
+zh_Hans_SG Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_SG Date and time short (Islamic Calendar) 18/07/29 PM12:31
+zh_Hans_SG Date and time medium (Islamic Calendar) 1429-7-18 PM12:31:00
+zh_Hans_SG Date and time long (Islamic Calendar) 1429年7月18日PM12:31:00格林尼治标准时间+0000
+zh_Hans_SG Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000PM12时31分00秒
+zh_Hans_SG Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_SG Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_SG Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_SG Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_SG Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_SG Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_SG Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_SG Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_SG Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_SG Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_SG Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_SG Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_SG Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_SG Name of month 02 (Islamic Calendar) Safar
+zh_Hans_SG Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_SG Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_SG Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_SG Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_SG Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_SG Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_SG Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_SG Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_SG Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_SG Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_SG Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_SG Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_SG Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_SG Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_SG Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_SG Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_SG Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_SG Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_SG Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_SG Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_SG Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_SG Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_SG Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_SG Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant Language endonym zh
+zh_Hant Country endonym
+zh_Hant Floating Point Number -123,456,789.012
+zh_Hant Percent value -1,234.5679%
+zh_Hant Currency value €1,234.56
+zh_Hant Negative Currency value -€1,234.56
+zh_Hant Date and time short (Gregorian Calendar) 08/7/21 下午12:31
+zh_Hant Date and time medium (Gregorian Calendar) 2008/7/21 下午12:31:00
+zh_Hant Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant Date and time short (Islamic Calendar) 29/7/18 PM12:31
+zh_Hant Date and time medium (Islamic Calendar) 1429/7/18 PM12:31:00
+zh_Hant Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00PM12時31分00秒
+zh_Hant Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00PM12時31分00秒
+zh_Hant Name of month 01 (Gregorian Calendar) 1月
+zh_Hant Name of month 02 (Gregorian Calendar) 2月
+zh_Hant Name of month 03 (Gregorian Calendar) 3月
+zh_Hant Name of month 04 (Gregorian Calendar) 4月
+zh_Hant Name of month 05 (Gregorian Calendar) 5月
+zh_Hant Name of month 06 (Gregorian Calendar) 6月
+zh_Hant Name of month 07 (Gregorian Calendar) 7月
+zh_Hant Name of month 08 (Gregorian Calendar) 8月
+zh_Hant Name of month 09 (Gregorian Calendar) 9月
+zh_Hant Name of month 10 (Gregorian Calendar) 10月
+zh_Hant Name of month 11 (Gregorian Calendar) 11月
+zh_Hant Name of month 12 (Gregorian Calendar) 12月
+zh_Hant Name of month 01 (Islamic Calendar) Muharram
+zh_Hant Name of month 02 (Islamic Calendar) Safar
+zh_Hant Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant Name of month 07 (Islamic Calendar) Rajab
+zh_Hant Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_HK Language endonym zh
+zh_Hant_HK Country endonym 中華人民共和國香港特別行政區
+zh_Hant_HK Floating Point Number -123,456,789.012
+zh_Hant_HK Percent value -1,234.5679%
+zh_Hant_HK Currency value €1,234.56
+zh_Hant_HK Negative Currency value (€1,234.56)
+zh_Hant_HK Date and time short (Gregorian Calendar) 08年7月21日下午12:31
+zh_Hant_HK Date and time medium (Gregorian Calendar) 2008年7月21日下午12:31:00
+zh_Hant_HK Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant_HK Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_HK Date and time short (Islamic Calendar) 29年7月18日PM12:31
+zh_Hant_HK Date and time medium (Islamic Calendar) 1429年7月18日PM12:31:00
+zh_Hant_HK Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00PM12時31分00秒
+zh_Hant_HK Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00PM12時31分00秒
+zh_Hant_HK Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_HK Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_HK Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_HK Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_HK Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_HK Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_HK Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_HK Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_HK Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_HK Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_HK Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_HK Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_HK Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_HK Name of month 02 (Islamic Calendar) Safar
+zh_Hant_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_HK Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_HK Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_HK Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_HK Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_HK Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_HK Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_HK Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_HK Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_HK Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_HK Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_HK Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_HK Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_HK Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_HK Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_HK Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_HK Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_HK Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_HK Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_HK Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_HK Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_MO Language endonym zh
+zh_Hant_MO Country endonym 中華人民共和國澳門特別行政區
+zh_Hant_MO Floating Point Number -123,456,789.012
+zh_Hant_MO Percent value -1,234.5679%
+zh_Hant_MO Currency value €1,234.56
+zh_Hant_MO Negative Currency value -€1,234.56
+zh_Hant_MO Date and time short (Gregorian Calendar) 08年7月21日 下午12:31
+zh_Hant_MO Date and time medium (Gregorian Calendar) 2008年7月21日 下午12:31:00
+zh_Hant_MO Date and time long (Gregorian Calendar) 2008年07月21日GMT+00:00下午12時31分00秒
+zh_Hant_MO Date and time full (Gregorian Calendar) 2008年07月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_MO Date and time short (Islamic Calendar) 29年7月18日 PM12:31
+zh_Hant_MO Date and time medium (Islamic Calendar) 1429年7月18日 PM12:31:00
+zh_Hant_MO Date and time long (Islamic Calendar) 1429年07月18日GMT+00:00PM12時31分00秒
+zh_Hant_MO Date and time full (Islamic Calendar) 1429年07月18日星期一GMT+00:00PM12時31分00秒
+zh_Hant_MO Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_MO Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_MO Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_MO Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_MO Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_MO Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_MO Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_MO Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_MO Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_MO Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_MO Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_MO Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_MO Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_MO Name of month 02 (Islamic Calendar) Safar
+zh_Hant_MO Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_MO Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_MO Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_MO Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_MO Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_MO Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_MO Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_MO Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_MO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_MO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_MO Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_MO Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_MO Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_MO Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_MO Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_MO Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_MO Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_MO Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_MO Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_MO Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_MO Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_MO Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_MO Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_MO Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_TW Language endonym zh
+zh_Hant_TW Country endonym 台灣
+zh_Hant_TW Floating Point Number -123,456,789.012
+zh_Hant_TW Percent value -1,234.5679%
+zh_Hant_TW Currency value €1,234.56
+zh_Hant_TW Negative Currency value -€1,234.56
+zh_Hant_TW Date and time short (Gregorian Calendar) 08/7/21 下午12:31
+zh_Hant_TW Date and time medium (Gregorian Calendar) 2008/7/21 下午12:31:00
+zh_Hant_TW Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant_TW Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_TW Date and time short (Islamic Calendar) 29/7/18 PM12:31
+zh_Hant_TW Date and time medium (Islamic Calendar) 1429/7/18 PM12:31:00
+zh_Hant_TW Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00PM12時31分00秒
+zh_Hant_TW Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00PM12時31分00秒
+zh_Hant_TW Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_TW Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_TW Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_TW Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_TW Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_TW Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_TW Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_TW Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_TW Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_TW Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_TW Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_TW Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_TW Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_TW Name of month 02 (Islamic Calendar) Safar
+zh_Hant_TW Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_TW Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_TW Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_TW Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_TW Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_TW Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_TW Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_TW Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_TW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_TW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_TW Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_TW Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_TW Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_TW Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_TW Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_TW Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_TW Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_TW Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_TW Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_TW Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_TW Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_TW Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_TW Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_TW Name of weekday 07 (Islamic Calendar) 星期日
+no Language endonym norsk
+no Country endonym
+no Floating Point Number -123 456 789,012
+no Percent value -1 234,5679 %
+no Currency value EUR 1 234,56
+no Negative Currency value -EUR 1 234,56
+no Date and time short (Gregorian Calendar) 21.07.08 12.31
+no Date and time medium (Gregorian Calendar) 21. juli 2008 12.31.00
+no Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+no Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12.31.00 GMT+00.00
+no Date and time short (Islamic Calendar) 18.07.29 12.31
+no Date and time medium (Islamic Calendar) 18. Rajab 1429 12.31.00
+no Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+no Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+no Name of month 01 (Gregorian Calendar) januar
+no Name of month 02 (Gregorian Calendar) februar
+no Name of month 03 (Gregorian Calendar) mars
+no Name of month 04 (Gregorian Calendar) april
+no Name of month 05 (Gregorian Calendar) mai
+no Name of month 06 (Gregorian Calendar) juni
+no Name of month 07 (Gregorian Calendar) juli
+no Name of month 08 (Gregorian Calendar) august
+no Name of month 09 (Gregorian Calendar) september
+no Name of month 10 (Gregorian Calendar) oktober
+no Name of month 11 (Gregorian Calendar) november
+no Name of month 12 (Gregorian Calendar) desember
+no Name of month 01 (Islamic Calendar) Muharram
+no Name of month 02 (Islamic Calendar) Safar
+no Name of month 03 (Islamic Calendar) Rabiʻ I
+no Name of month 04 (Islamic Calendar) Rabiʻ II
+no Name of month 05 (Islamic Calendar) Jumada I
+no Name of month 06 (Islamic Calendar) Jumada II
+no Name of month 07 (Islamic Calendar) Rajab
+no Name of month 08 (Islamic Calendar) Shaʻban
+no Name of month 09 (Islamic Calendar) Ramadan
+no Name of month 10 (Islamic Calendar) Shawwal
+no Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+no Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+no Name of weekday 01 (Gregorian Calendar) mandag
+no Name of weekday 02 (Gregorian Calendar) tirsdag
+no Name of weekday 03 (Gregorian Calendar) onsdag
+no Name of weekday 04 (Gregorian Calendar) torsdag
+no Name of weekday 05 (Gregorian Calendar) fredag
+no Name of weekday 06 (Gregorian Calendar) lørdag
+no Name of weekday 07 (Gregorian Calendar) søndag
+no Name of weekday 01 (Islamic Calendar) mandag
+no Name of weekday 02 (Islamic Calendar) tirsdag
+no Name of weekday 03 (Islamic Calendar) onsdag
+no Name of weekday 04 (Islamic Calendar) torsdag
+no Name of weekday 05 (Islamic Calendar) fredag
+no Name of weekday 06 (Islamic Calendar) lørdag
+no Name of weekday 07 (Islamic Calendar) søndag
+no_NO Language endonym norsk
+no_NO Country endonym Norge
+no_NO Floating Point Number -123 456 789,012
+no_NO Percent value -1 234,5679 %
+no_NO Currency value EUR 1 234,56
+no_NO Negative Currency value -EUR 1 234,56
+no_NO Date and time short (Gregorian Calendar) 21.07.08 12.31
+no_NO Date and time medium (Gregorian Calendar) 21. juli 2008 12.31.00
+no_NO Date and time long (Gregorian Calendar) 21. juli 2008 12.31.00 GMT+00.00
+no_NO Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12.31.00 GMT+00.00
+no_NO Date and time short (Islamic Calendar) 18.07.29 12.31
+no_NO Date and time medium (Islamic Calendar) 18. Rajab 1429 12.31.00
+no_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12.31.00 GMT+00.00
+no_NO Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12.31.00 GMT+00.00
+no_NO Name of month 01 (Gregorian Calendar) januar
+no_NO Name of month 02 (Gregorian Calendar) februar
+no_NO Name of month 03 (Gregorian Calendar) mars
+no_NO Name of month 04 (Gregorian Calendar) april
+no_NO Name of month 05 (Gregorian Calendar) mai
+no_NO Name of month 06 (Gregorian Calendar) juni
+no_NO Name of month 07 (Gregorian Calendar) juli
+no_NO Name of month 08 (Gregorian Calendar) august
+no_NO Name of month 09 (Gregorian Calendar) september
+no_NO Name of month 10 (Gregorian Calendar) oktober
+no_NO Name of month 11 (Gregorian Calendar) november
+no_NO Name of month 12 (Gregorian Calendar) desember
+no_NO Name of month 01 (Islamic Calendar) Muharram
+no_NO Name of month 02 (Islamic Calendar) Safar
+no_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+no_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+no_NO Name of month 05 (Islamic Calendar) Jumada I
+no_NO Name of month 06 (Islamic Calendar) Jumada II
+no_NO Name of month 07 (Islamic Calendar) Rajab
+no_NO Name of month 08 (Islamic Calendar) Shaʻban
+no_NO Name of month 09 (Islamic Calendar) Ramadan
+no_NO Name of month 10 (Islamic Calendar) Shawwal
+no_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+no_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+no_NO Name of weekday 01 (Gregorian Calendar) mandag
+no_NO Name of weekday 02 (Gregorian Calendar) tirsdag
+no_NO Name of weekday 03 (Gregorian Calendar) onsdag
+no_NO Name of weekday 04 (Gregorian Calendar) torsdag
+no_NO Name of weekday 05 (Gregorian Calendar) fredag
+no_NO Name of weekday 06 (Gregorian Calendar) lørdag
+no_NO Name of weekday 07 (Gregorian Calendar) søndag
+no_NO Name of weekday 01 (Islamic Calendar) mandag
+no_NO Name of weekday 02 (Islamic Calendar) tirsdag
+no_NO Name of weekday 03 (Islamic Calendar) onsdag
+no_NO Name of weekday 04 (Islamic Calendar) torsdag
+no_NO Name of weekday 05 (Islamic Calendar) fredag
+no_NO Name of weekday 06 (Islamic Calendar) lørdag
+no_NO Name of weekday 07 (Islamic Calendar) søndag
+es_419 Language endonym español
+es_419 Country endonym Latinoamérica y el Caribe
+es_419 Floating Point Number -123.456.789,012
+es_419 Percent value -1.234,5679%
+es_419 Currency value € 1.234,56
+es_419 Negative Currency value -€ 1.234,56
+es_419 Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_419 Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_419 Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_419 Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_419 Date and time short (Islamic Calendar) 18/07/29 12:31
+es_419 Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_419 Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_419 Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_419 Name of month 01 (Gregorian Calendar) enero
+es_419 Name of month 02 (Gregorian Calendar) febrero
+es_419 Name of month 03 (Gregorian Calendar) marzo
+es_419 Name of month 04 (Gregorian Calendar) abril
+es_419 Name of month 05 (Gregorian Calendar) mayo
+es_419 Name of month 06 (Gregorian Calendar) junio
+es_419 Name of month 07 (Gregorian Calendar) julio
+es_419 Name of month 08 (Gregorian Calendar) agosto
+es_419 Name of month 09 (Gregorian Calendar) septiembre
+es_419 Name of month 10 (Gregorian Calendar) octubre
+es_419 Name of month 11 (Gregorian Calendar) noviembre
+es_419 Name of month 12 (Gregorian Calendar) diciembre
+es_419 Name of month 01 (Islamic Calendar) Muharram
+es_419 Name of month 02 (Islamic Calendar) Safar
+es_419 Name of month 03 (Islamic Calendar) Rabiʻ I
+es_419 Name of month 04 (Islamic Calendar) Rabiʻ II
+es_419 Name of month 05 (Islamic Calendar) Jumada I
+es_419 Name of month 06 (Islamic Calendar) Jumada II
+es_419 Name of month 07 (Islamic Calendar) Rajab
+es_419 Name of month 08 (Islamic Calendar) Shaʻban
+es_419 Name of month 09 (Islamic Calendar) Ramadan
+es_419 Name of month 10 (Islamic Calendar) Shawwal
+es_419 Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_419 Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_419 Name of weekday 01 (Gregorian Calendar) lunes
+es_419 Name of weekday 02 (Gregorian Calendar) martes
+es_419 Name of weekday 03 (Gregorian Calendar) miércoles
+es_419 Name of weekday 04 (Gregorian Calendar) jueves
+es_419 Name of weekday 05 (Gregorian Calendar) viernes
+es_419 Name of weekday 06 (Gregorian Calendar) sábado
+es_419 Name of weekday 07 (Gregorian Calendar) domingo
+es_419 Name of weekday 01 (Islamic Calendar) lunes
+es_419 Name of weekday 02 (Islamic Calendar) martes
+es_419 Name of weekday 03 (Islamic Calendar) miércoles
+es_419 Name of weekday 04 (Islamic Calendar) jueves
+es_419 Name of weekday 05 (Islamic Calendar) viernes
+es_419 Name of weekday 06 (Islamic Calendar) sábado
+es_419 Name of weekday 07 (Islamic Calendar) domingo
diff --git a/tests/ft_locales/ft_locales-test-input-icu-4.4.1.txt b/tests/ft_locales/ft_locales-test-input-icu-4.4.1.txt
new file mode 100644
index 00000000..9279b5b1
--- /dev/null
+++ b/tests/ft_locales/ft_locales-test-input-icu-4.4.1.txt
@@ -0,0 +1,7592 @@
+ar Language endonym العربية
+ar Country endonym
+ar Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar Currency value € ١٬٢٣٤٫٥٦
+ar Negative Currency value € ١٬٢٣٤٫٥٦-
+ar Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar Name of month 01 (Gregorian Calendar) يناير
+ar Name of month 02 (Gregorian Calendar) فبراير
+ar Name of month 03 (Gregorian Calendar) مارس
+ar Name of month 04 (Gregorian Calendar) أبريل
+ar Name of month 05 (Gregorian Calendar) مايو
+ar Name of month 06 (Gregorian Calendar) يونيو
+ar Name of month 07 (Gregorian Calendar) يوليو
+ar Name of month 08 (Gregorian Calendar) أغسطس
+ar Name of month 09 (Gregorian Calendar) سبتمبر
+ar Name of month 10 (Gregorian Calendar) أكتوبر
+ar Name of month 11 (Gregorian Calendar) نوفمبر
+ar Name of month 12 (Gregorian Calendar) ديسمبر
+ar Name of month 01 (Islamic Calendar) محرم
+ar Name of month 02 (Islamic Calendar) صفر
+ar Name of month 03 (Islamic Calendar) ربيع الأول
+ar Name of month 04 (Islamic Calendar) ربيع الآخر
+ar Name of month 05 (Islamic Calendar) جمادى الأولى
+ar Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar Name of month 07 (Islamic Calendar) رجب
+ar Name of month 08 (Islamic Calendar) شعبان
+ar Name of month 09 (Islamic Calendar) رمضان
+ar Name of month 10 (Islamic Calendar) شوال
+ar Name of month 11 (Islamic Calendar) ذو القعدة
+ar Name of month 12 (Islamic Calendar) ذو الحجة
+ar Name of weekday 01 (Gregorian Calendar) الإثنين
+ar Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar Name of weekday 04 (Gregorian Calendar) الخميس
+ar Name of weekday 05 (Gregorian Calendar) الجمعة
+ar Name of weekday 06 (Gregorian Calendar) السبت
+ar Name of weekday 07 (Gregorian Calendar) الأحد
+ar Name of weekday 01 (Islamic Calendar) الإثنين
+ar Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar Name of weekday 03 (Islamic Calendar) الأربعاء
+ar Name of weekday 04 (Islamic Calendar) الخميس
+ar Name of weekday 05 (Islamic Calendar) الجمعة
+ar Name of weekday 06 (Islamic Calendar) السبت
+ar Name of weekday 07 (Islamic Calendar) الأحد
+ar_AE Language endonym العربية
+ar_AE Country endonym الامارات العربية المتحدة
+ar_AE Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_AE Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_AE Currency value € ١٬٢٣٤٫٥٦
+ar_AE Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_AE Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_AE Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_AE Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_AE Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_AE Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_AE Name of month 01 (Gregorian Calendar) يناير
+ar_AE Name of month 02 (Gregorian Calendar) فبراير
+ar_AE Name of month 03 (Gregorian Calendar) مارس
+ar_AE Name of month 04 (Gregorian Calendar) أبريل
+ar_AE Name of month 05 (Gregorian Calendar) مايو
+ar_AE Name of month 06 (Gregorian Calendar) يونيو
+ar_AE Name of month 07 (Gregorian Calendar) يوليو
+ar_AE Name of month 08 (Gregorian Calendar) أغسطس
+ar_AE Name of month 09 (Gregorian Calendar) سبتمبر
+ar_AE Name of month 10 (Gregorian Calendar) أكتوبر
+ar_AE Name of month 11 (Gregorian Calendar) نوفمبر
+ar_AE Name of month 12 (Gregorian Calendar) ديسمبر
+ar_AE Name of month 01 (Islamic Calendar) محرم
+ar_AE Name of month 02 (Islamic Calendar) صفر
+ar_AE Name of month 03 (Islamic Calendar) ربيع الأول
+ar_AE Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_AE Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_AE Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_AE Name of month 07 (Islamic Calendar) رجب
+ar_AE Name of month 08 (Islamic Calendar) شعبان
+ar_AE Name of month 09 (Islamic Calendar) رمضان
+ar_AE Name of month 10 (Islamic Calendar) شوال
+ar_AE Name of month 11 (Islamic Calendar) ذو القعدة
+ar_AE Name of month 12 (Islamic Calendar) ذو الحجة
+ar_AE Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_AE Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_AE Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_AE Name of weekday 04 (Gregorian Calendar) الخميس
+ar_AE Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_AE Name of weekday 06 (Gregorian Calendar) السبت
+ar_AE Name of weekday 07 (Gregorian Calendar) الأحد
+ar_AE Name of weekday 01 (Islamic Calendar) الإثنين
+ar_AE Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_AE Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_AE Name of weekday 04 (Islamic Calendar) الخميس
+ar_AE Name of weekday 05 (Islamic Calendar) الجمعة
+ar_AE Name of weekday 06 (Islamic Calendar) السبت
+ar_AE Name of weekday 07 (Islamic Calendar) الأحد
+ar_BH Language endonym العربية
+ar_BH Country endonym البحرين
+ar_BH Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_BH Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_BH Currency value € ١٬٢٣٤٫٥٦
+ar_BH Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_BH Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_BH Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_BH Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_BH Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_BH Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_BH Name of month 01 (Gregorian Calendar) يناير
+ar_BH Name of month 02 (Gregorian Calendar) فبراير
+ar_BH Name of month 03 (Gregorian Calendar) مارس
+ar_BH Name of month 04 (Gregorian Calendar) أبريل
+ar_BH Name of month 05 (Gregorian Calendar) مايو
+ar_BH Name of month 06 (Gregorian Calendar) يونيو
+ar_BH Name of month 07 (Gregorian Calendar) يوليو
+ar_BH Name of month 08 (Gregorian Calendar) أغسطس
+ar_BH Name of month 09 (Gregorian Calendar) سبتمبر
+ar_BH Name of month 10 (Gregorian Calendar) أكتوبر
+ar_BH Name of month 11 (Gregorian Calendar) نوفمبر
+ar_BH Name of month 12 (Gregorian Calendar) ديسمبر
+ar_BH Name of month 01 (Islamic Calendar) محرم
+ar_BH Name of month 02 (Islamic Calendar) صفر
+ar_BH Name of month 03 (Islamic Calendar) ربيع الأول
+ar_BH Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_BH Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_BH Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_BH Name of month 07 (Islamic Calendar) رجب
+ar_BH Name of month 08 (Islamic Calendar) شعبان
+ar_BH Name of month 09 (Islamic Calendar) رمضان
+ar_BH Name of month 10 (Islamic Calendar) شوال
+ar_BH Name of month 11 (Islamic Calendar) ذو القعدة
+ar_BH Name of month 12 (Islamic Calendar) ذو الحجة
+ar_BH Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_BH Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_BH Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_BH Name of weekday 04 (Gregorian Calendar) الخميس
+ar_BH Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_BH Name of weekday 06 (Gregorian Calendar) السبت
+ar_BH Name of weekday 07 (Gregorian Calendar) الأحد
+ar_BH Name of weekday 01 (Islamic Calendar) الإثنين
+ar_BH Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_BH Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_BH Name of weekday 04 (Islamic Calendar) الخميس
+ar_BH Name of weekday 05 (Islamic Calendar) الجمعة
+ar_BH Name of weekday 06 (Islamic Calendar) السبت
+ar_BH Name of weekday 07 (Islamic Calendar) الأحد
+ar_DZ Language endonym العربية
+ar_DZ Country endonym الجزائر
+ar_DZ Floating Point Number 123٬456٬789٫012-
+ar_DZ Percent value -1٬234٫5679٪
+ar_DZ Currency value € 1٬234٫56
+ar_DZ Negative Currency value € 1٬234٫56-
+ar_DZ Date and time short (Gregorian Calendar) 2008/7/21 12:31 م
+ar_DZ Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00 م
+ar_DZ Date and time long (Gregorian Calendar) 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_DZ Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_DZ Date and time short (Islamic Calendar) 1429/7/18 12:31 م
+ar_DZ Date and time medium (Islamic Calendar) 1429/07/18 12:31:00 م
+ar_DZ Date and time long (Islamic Calendar) 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_DZ Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_DZ Name of month 01 (Gregorian Calendar) يناير
+ar_DZ Name of month 02 (Gregorian Calendar) فبراير
+ar_DZ Name of month 03 (Gregorian Calendar) مارس
+ar_DZ Name of month 04 (Gregorian Calendar) أبريل
+ar_DZ Name of month 05 (Gregorian Calendar) مايو
+ar_DZ Name of month 06 (Gregorian Calendar) يونيو
+ar_DZ Name of month 07 (Gregorian Calendar) يوليو
+ar_DZ Name of month 08 (Gregorian Calendar) أغسطس
+ar_DZ Name of month 09 (Gregorian Calendar) سبتمبر
+ar_DZ Name of month 10 (Gregorian Calendar) أكتوبر
+ar_DZ Name of month 11 (Gregorian Calendar) نوفمبر
+ar_DZ Name of month 12 (Gregorian Calendar) ديسمبر
+ar_DZ Name of month 01 (Islamic Calendar) محرم
+ar_DZ Name of month 02 (Islamic Calendar) صفر
+ar_DZ Name of month 03 (Islamic Calendar) ربيع الأول
+ar_DZ Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_DZ Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_DZ Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_DZ Name of month 07 (Islamic Calendar) رجب
+ar_DZ Name of month 08 (Islamic Calendar) شعبان
+ar_DZ Name of month 09 (Islamic Calendar) رمضان
+ar_DZ Name of month 10 (Islamic Calendar) شوال
+ar_DZ Name of month 11 (Islamic Calendar) ذو القعدة
+ar_DZ Name of month 12 (Islamic Calendar) ذو الحجة
+ar_DZ Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_DZ Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_DZ Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_DZ Name of weekday 04 (Gregorian Calendar) الخميس
+ar_DZ Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_DZ Name of weekday 06 (Gregorian Calendar) السبت
+ar_DZ Name of weekday 07 (Gregorian Calendar) الأحد
+ar_DZ Name of weekday 01 (Islamic Calendar) الإثنين
+ar_DZ Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_DZ Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_DZ Name of weekday 04 (Islamic Calendar) الخميس
+ar_DZ Name of weekday 05 (Islamic Calendar) الجمعة
+ar_DZ Name of weekday 06 (Islamic Calendar) السبت
+ar_DZ Name of weekday 07 (Islamic Calendar) الأحد
+ar_EG Language endonym العربية
+ar_EG Country endonym مصر
+ar_EG Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_EG Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_EG Currency value € ١٬٢٣٤٫٥٦
+ar_EG Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_EG Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_EG Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_EG Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_EG Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_EG Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_EG Name of month 01 (Gregorian Calendar) يناير
+ar_EG Name of month 02 (Gregorian Calendar) فبراير
+ar_EG Name of month 03 (Gregorian Calendar) مارس
+ar_EG Name of month 04 (Gregorian Calendar) أبريل
+ar_EG Name of month 05 (Gregorian Calendar) مايو
+ar_EG Name of month 06 (Gregorian Calendar) يونيو
+ar_EG Name of month 07 (Gregorian Calendar) يوليو
+ar_EG Name of month 08 (Gregorian Calendar) أغسطس
+ar_EG Name of month 09 (Gregorian Calendar) سبتمبر
+ar_EG Name of month 10 (Gregorian Calendar) أكتوبر
+ar_EG Name of month 11 (Gregorian Calendar) نوفمبر
+ar_EG Name of month 12 (Gregorian Calendar) ديسمبر
+ar_EG Name of month 01 (Islamic Calendar) محرم
+ar_EG Name of month 02 (Islamic Calendar) صفر
+ar_EG Name of month 03 (Islamic Calendar) ربيع الأول
+ar_EG Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_EG Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_EG Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_EG Name of month 07 (Islamic Calendar) رجب
+ar_EG Name of month 08 (Islamic Calendar) شعبان
+ar_EG Name of month 09 (Islamic Calendar) رمضان
+ar_EG Name of month 10 (Islamic Calendar) شوال
+ar_EG Name of month 11 (Islamic Calendar) ذو القعدة
+ar_EG Name of month 12 (Islamic Calendar) ذو الحجة
+ar_EG Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_EG Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_EG Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_EG Name of weekday 04 (Gregorian Calendar) الخميس
+ar_EG Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_EG Name of weekday 06 (Gregorian Calendar) السبت
+ar_EG Name of weekday 07 (Gregorian Calendar) الأحد
+ar_EG Name of weekday 01 (Islamic Calendar) الإثنين
+ar_EG Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_EG Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_EG Name of weekday 04 (Islamic Calendar) الخميس
+ar_EG Name of weekday 05 (Islamic Calendar) الجمعة
+ar_EG Name of weekday 06 (Islamic Calendar) السبت
+ar_EG Name of weekday 07 (Islamic Calendar) الأحد
+ar_IQ Language endonym العربية
+ar_IQ Country endonym العراق
+ar_IQ Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_IQ Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_IQ Currency value € ١٬٢٣٤٫٥٦
+ar_IQ Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_IQ Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_IQ Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_IQ Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_IQ Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_IQ Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_IQ Name of month 01 (Gregorian Calendar) يناير
+ar_IQ Name of month 02 (Gregorian Calendar) فبراير
+ar_IQ Name of month 03 (Gregorian Calendar) مارس
+ar_IQ Name of month 04 (Gregorian Calendar) أبريل
+ar_IQ Name of month 05 (Gregorian Calendar) مايو
+ar_IQ Name of month 06 (Gregorian Calendar) يونيو
+ar_IQ Name of month 07 (Gregorian Calendar) يوليو
+ar_IQ Name of month 08 (Gregorian Calendar) أغسطس
+ar_IQ Name of month 09 (Gregorian Calendar) سبتمبر
+ar_IQ Name of month 10 (Gregorian Calendar) أكتوبر
+ar_IQ Name of month 11 (Gregorian Calendar) نوفمبر
+ar_IQ Name of month 12 (Gregorian Calendar) ديسمبر
+ar_IQ Name of month 01 (Islamic Calendar) محرم
+ar_IQ Name of month 02 (Islamic Calendar) صفر
+ar_IQ Name of month 03 (Islamic Calendar) ربيع الأول
+ar_IQ Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_IQ Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_IQ Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_IQ Name of month 07 (Islamic Calendar) رجب
+ar_IQ Name of month 08 (Islamic Calendar) شعبان
+ar_IQ Name of month 09 (Islamic Calendar) رمضان
+ar_IQ Name of month 10 (Islamic Calendar) شوال
+ar_IQ Name of month 11 (Islamic Calendar) ذو القعدة
+ar_IQ Name of month 12 (Islamic Calendar) ذو الحجة
+ar_IQ Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_IQ Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_IQ Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_IQ Name of weekday 04 (Gregorian Calendar) الخميس
+ar_IQ Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_IQ Name of weekday 06 (Gregorian Calendar) السبت
+ar_IQ Name of weekday 07 (Gregorian Calendar) الأحد
+ar_IQ Name of weekday 01 (Islamic Calendar) الإثنين
+ar_IQ Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_IQ Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_IQ Name of weekday 04 (Islamic Calendar) الخميس
+ar_IQ Name of weekday 05 (Islamic Calendar) الجمعة
+ar_IQ Name of weekday 06 (Islamic Calendar) السبت
+ar_IQ Name of weekday 07 (Islamic Calendar) الأحد
+ar_JO Language endonym العربية
+ar_JO Country endonym الأردن
+ar_JO Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_JO Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_JO Currency value € ١٬٢٣٤٫٥٦
+ar_JO Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_JO Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_JO Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_JO Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_JO Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_JO Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_JO Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_JO Name of month 02 (Gregorian Calendar) شباط
+ar_JO Name of month 03 (Gregorian Calendar) آذار
+ar_JO Name of month 04 (Gregorian Calendar) نيسان
+ar_JO Name of month 05 (Gregorian Calendar) أيار
+ar_JO Name of month 06 (Gregorian Calendar) حزيران
+ar_JO Name of month 07 (Gregorian Calendar) تموز
+ar_JO Name of month 08 (Gregorian Calendar) آب
+ar_JO Name of month 09 (Gregorian Calendar) أيلول
+ar_JO Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_JO Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_JO Name of month 12 (Gregorian Calendar) كانون الأول
+ar_JO Name of month 01 (Islamic Calendar) محرم
+ar_JO Name of month 02 (Islamic Calendar) صفر
+ar_JO Name of month 03 (Islamic Calendar) ربيع الأول
+ar_JO Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_JO Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_JO Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_JO Name of month 07 (Islamic Calendar) رجب
+ar_JO Name of month 08 (Islamic Calendar) شعبان
+ar_JO Name of month 09 (Islamic Calendar) رمضان
+ar_JO Name of month 10 (Islamic Calendar) شوال
+ar_JO Name of month 11 (Islamic Calendar) ذو القعدة
+ar_JO Name of month 12 (Islamic Calendar) ذو الحجة
+ar_JO Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_JO Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_JO Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_JO Name of weekday 04 (Gregorian Calendar) الخميس
+ar_JO Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_JO Name of weekday 06 (Gregorian Calendar) السبت
+ar_JO Name of weekday 07 (Gregorian Calendar) الأحد
+ar_JO Name of weekday 01 (Islamic Calendar) الإثنين
+ar_JO Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_JO Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_JO Name of weekday 04 (Islamic Calendar) الخميس
+ar_JO Name of weekday 05 (Islamic Calendar) الجمعة
+ar_JO Name of weekday 06 (Islamic Calendar) السبت
+ar_JO Name of weekday 07 (Islamic Calendar) الأحد
+ar_KW Language endonym العربية
+ar_KW Country endonym الكويت
+ar_KW Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_KW Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_KW Currency value € ١٬٢٣٤٫٥٦
+ar_KW Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_KW Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_KW Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_KW Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_KW Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_KW Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_KW Name of month 01 (Gregorian Calendar) يناير
+ar_KW Name of month 02 (Gregorian Calendar) فبراير
+ar_KW Name of month 03 (Gregorian Calendar) مارس
+ar_KW Name of month 04 (Gregorian Calendar) أبريل
+ar_KW Name of month 05 (Gregorian Calendar) مايو
+ar_KW Name of month 06 (Gregorian Calendar) يونيو
+ar_KW Name of month 07 (Gregorian Calendar) يوليو
+ar_KW Name of month 08 (Gregorian Calendar) أغسطس
+ar_KW Name of month 09 (Gregorian Calendar) سبتمبر
+ar_KW Name of month 10 (Gregorian Calendar) أكتوبر
+ar_KW Name of month 11 (Gregorian Calendar) نوفمبر
+ar_KW Name of month 12 (Gregorian Calendar) ديسمبر
+ar_KW Name of month 01 (Islamic Calendar) محرم
+ar_KW Name of month 02 (Islamic Calendar) صفر
+ar_KW Name of month 03 (Islamic Calendar) ربيع الأول
+ar_KW Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_KW Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_KW Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_KW Name of month 07 (Islamic Calendar) رجب
+ar_KW Name of month 08 (Islamic Calendar) شعبان
+ar_KW Name of month 09 (Islamic Calendar) رمضان
+ar_KW Name of month 10 (Islamic Calendar) شوال
+ar_KW Name of month 11 (Islamic Calendar) ذو القعدة
+ar_KW Name of month 12 (Islamic Calendar) ذو الحجة
+ar_KW Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_KW Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_KW Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_KW Name of weekday 04 (Gregorian Calendar) الخميس
+ar_KW Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_KW Name of weekday 06 (Gregorian Calendar) السبت
+ar_KW Name of weekday 07 (Gregorian Calendar) الأحد
+ar_KW Name of weekday 01 (Islamic Calendar) الإثنين
+ar_KW Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_KW Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_KW Name of weekday 04 (Islamic Calendar) الخميس
+ar_KW Name of weekday 05 (Islamic Calendar) الجمعة
+ar_KW Name of weekday 06 (Islamic Calendar) السبت
+ar_KW Name of weekday 07 (Islamic Calendar) الأحد
+ar_LB Language endonym العربية
+ar_LB Country endonym لبنان
+ar_LB Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_LB Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_LB Currency value € ١٬٢٣٤٫٥٦
+ar_LB Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_LB Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_LB Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_LB Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_LB Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_LB Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LB Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_LB Name of month 02 (Gregorian Calendar) شباط
+ar_LB Name of month 03 (Gregorian Calendar) آذار
+ar_LB Name of month 04 (Gregorian Calendar) نيسان
+ar_LB Name of month 05 (Gregorian Calendar) نوار
+ar_LB Name of month 06 (Gregorian Calendar) حزيران
+ar_LB Name of month 07 (Gregorian Calendar) تموز
+ar_LB Name of month 08 (Gregorian Calendar) آب
+ar_LB Name of month 09 (Gregorian Calendar) أيلول
+ar_LB Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_LB Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_LB Name of month 12 (Gregorian Calendar) كانون الأول
+ar_LB Name of month 01 (Islamic Calendar) محرم
+ar_LB Name of month 02 (Islamic Calendar) صفر
+ar_LB Name of month 03 (Islamic Calendar) ربيع الأول
+ar_LB Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_LB Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_LB Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_LB Name of month 07 (Islamic Calendar) رجب
+ar_LB Name of month 08 (Islamic Calendar) شعبان
+ar_LB Name of month 09 (Islamic Calendar) رمضان
+ar_LB Name of month 10 (Islamic Calendar) شوال
+ar_LB Name of month 11 (Islamic Calendar) ذو القعدة
+ar_LB Name of month 12 (Islamic Calendar) ذو الحجة
+ar_LB Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_LB Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_LB Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_LB Name of weekday 04 (Gregorian Calendar) الخميس
+ar_LB Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_LB Name of weekday 06 (Gregorian Calendar) السبت
+ar_LB Name of weekday 07 (Gregorian Calendar) الأحد
+ar_LB Name of weekday 01 (Islamic Calendar) الإثنين
+ar_LB Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_LB Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_LB Name of weekday 04 (Islamic Calendar) الخميس
+ar_LB Name of weekday 05 (Islamic Calendar) الجمعة
+ar_LB Name of weekday 06 (Islamic Calendar) السبت
+ar_LB Name of weekday 07 (Islamic Calendar) الأحد
+ar_LY Language endonym العربية
+ar_LY Country endonym ليبيا
+ar_LY Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_LY Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_LY Currency value € ١٬٢٣٤٫٥٦
+ar_LY Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_LY Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_LY Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_LY Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_LY Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_LY Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_LY Name of month 01 (Gregorian Calendar) يناير
+ar_LY Name of month 02 (Gregorian Calendar) فبراير
+ar_LY Name of month 03 (Gregorian Calendar) مارس
+ar_LY Name of month 04 (Gregorian Calendar) أبريل
+ar_LY Name of month 05 (Gregorian Calendar) مايو
+ar_LY Name of month 06 (Gregorian Calendar) يونيو
+ar_LY Name of month 07 (Gregorian Calendar) يوليو
+ar_LY Name of month 08 (Gregorian Calendar) أغسطس
+ar_LY Name of month 09 (Gregorian Calendar) سبتمبر
+ar_LY Name of month 10 (Gregorian Calendar) أكتوبر
+ar_LY Name of month 11 (Gregorian Calendar) نوفمبر
+ar_LY Name of month 12 (Gregorian Calendar) ديسمبر
+ar_LY Name of month 01 (Islamic Calendar) محرم
+ar_LY Name of month 02 (Islamic Calendar) صفر
+ar_LY Name of month 03 (Islamic Calendar) ربيع الأول
+ar_LY Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_LY Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_LY Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_LY Name of month 07 (Islamic Calendar) رجب
+ar_LY Name of month 08 (Islamic Calendar) شعبان
+ar_LY Name of month 09 (Islamic Calendar) رمضان
+ar_LY Name of month 10 (Islamic Calendar) شوال
+ar_LY Name of month 11 (Islamic Calendar) ذو القعدة
+ar_LY Name of month 12 (Islamic Calendar) ذو الحجة
+ar_LY Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_LY Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_LY Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_LY Name of weekday 04 (Gregorian Calendar) الخميس
+ar_LY Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_LY Name of weekday 06 (Gregorian Calendar) السبت
+ar_LY Name of weekday 07 (Gregorian Calendar) الأحد
+ar_LY Name of weekday 01 (Islamic Calendar) الإثنين
+ar_LY Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_LY Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_LY Name of weekday 04 (Islamic Calendar) الخميس
+ar_LY Name of weekday 05 (Islamic Calendar) الجمعة
+ar_LY Name of weekday 06 (Islamic Calendar) السبت
+ar_LY Name of weekday 07 (Islamic Calendar) الأحد
+ar_MA Language endonym العربية
+ar_MA Country endonym المغرب
+ar_MA Floating Point Number 123٬456٬789٫012-
+ar_MA Percent value -1٬234٫5679٪
+ar_MA Currency value € 1٬234٫56
+ar_MA Negative Currency value € 1٬234٫56-
+ar_MA Date and time short (Gregorian Calendar) 2008/7/21 12:31 م
+ar_MA Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00 م
+ar_MA Date and time long (Gregorian Calendar) 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_MA Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_MA Date and time short (Islamic Calendar) 1429/7/18 12:31 م
+ar_MA Date and time medium (Islamic Calendar) 1429/07/18 12:31:00 م
+ar_MA Date and time long (Islamic Calendar) 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_MA Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_MA Name of month 01 (Gregorian Calendar) يناير
+ar_MA Name of month 02 (Gregorian Calendar) فبراير
+ar_MA Name of month 03 (Gregorian Calendar) مارس
+ar_MA Name of month 04 (Gregorian Calendar) أبريل
+ar_MA Name of month 05 (Gregorian Calendar) مايو
+ar_MA Name of month 06 (Gregorian Calendar) يونيو
+ar_MA Name of month 07 (Gregorian Calendar) يوليو
+ar_MA Name of month 08 (Gregorian Calendar) أغسطس
+ar_MA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_MA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_MA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_MA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_MA Name of month 01 (Islamic Calendar) محرم
+ar_MA Name of month 02 (Islamic Calendar) صفر
+ar_MA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_MA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_MA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_MA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_MA Name of month 07 (Islamic Calendar) رجب
+ar_MA Name of month 08 (Islamic Calendar) شعبان
+ar_MA Name of month 09 (Islamic Calendar) رمضان
+ar_MA Name of month 10 (Islamic Calendar) شوال
+ar_MA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_MA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_MA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_MA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_MA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_MA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_MA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_MA Name of weekday 06 (Gregorian Calendar) السبت
+ar_MA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_MA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_MA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_MA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_MA Name of weekday 04 (Islamic Calendar) الخميس
+ar_MA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_MA Name of weekday 06 (Islamic Calendar) السبت
+ar_MA Name of weekday 07 (Islamic Calendar) الأحد
+ar_OM Language endonym العربية
+ar_OM Country endonym عُمان
+ar_OM Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_OM Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_OM Currency value € ١٬٢٣٤٫٥٦
+ar_OM Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_OM Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_OM Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_OM Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_OM Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_OM Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_OM Name of month 01 (Gregorian Calendar) يناير
+ar_OM Name of month 02 (Gregorian Calendar) فبراير
+ar_OM Name of month 03 (Gregorian Calendar) مارس
+ar_OM Name of month 04 (Gregorian Calendar) أبريل
+ar_OM Name of month 05 (Gregorian Calendar) مايو
+ar_OM Name of month 06 (Gregorian Calendar) يونيو
+ar_OM Name of month 07 (Gregorian Calendar) يوليو
+ar_OM Name of month 08 (Gregorian Calendar) أغسطس
+ar_OM Name of month 09 (Gregorian Calendar) سبتمبر
+ar_OM Name of month 10 (Gregorian Calendar) أكتوبر
+ar_OM Name of month 11 (Gregorian Calendar) نوفمبر
+ar_OM Name of month 12 (Gregorian Calendar) ديسمبر
+ar_OM Name of month 01 (Islamic Calendar) محرم
+ar_OM Name of month 02 (Islamic Calendar) صفر
+ar_OM Name of month 03 (Islamic Calendar) ربيع الأول
+ar_OM Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_OM Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_OM Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_OM Name of month 07 (Islamic Calendar) رجب
+ar_OM Name of month 08 (Islamic Calendar) شعبان
+ar_OM Name of month 09 (Islamic Calendar) رمضان
+ar_OM Name of month 10 (Islamic Calendar) شوال
+ar_OM Name of month 11 (Islamic Calendar) ذو القعدة
+ar_OM Name of month 12 (Islamic Calendar) ذو الحجة
+ar_OM Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_OM Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_OM Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_OM Name of weekday 04 (Gregorian Calendar) الخميس
+ar_OM Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_OM Name of weekday 06 (Gregorian Calendar) السبت
+ar_OM Name of weekday 07 (Gregorian Calendar) الأحد
+ar_OM Name of weekday 01 (Islamic Calendar) الإثنين
+ar_OM Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_OM Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_OM Name of weekday 04 (Islamic Calendar) الخميس
+ar_OM Name of weekday 05 (Islamic Calendar) الجمعة
+ar_OM Name of weekday 06 (Islamic Calendar) السبت
+ar_OM Name of weekday 07 (Islamic Calendar) الأحد
+ar_QA Language endonym العربية
+ar_QA Country endonym قطر
+ar_QA Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_QA Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_QA Currency value €١٢٣٤٫٥٦
+ar_QA Negative Currency value -€١٢٣٤٫٥٦
+ar_QA Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_QA Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_QA Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_QA Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_QA Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_QA Name of month 01 (Gregorian Calendar) يناير
+ar_QA Name of month 02 (Gregorian Calendar) فبراير
+ar_QA Name of month 03 (Gregorian Calendar) مارس
+ar_QA Name of month 04 (Gregorian Calendar) أبريل
+ar_QA Name of month 05 (Gregorian Calendar) مايو
+ar_QA Name of month 06 (Gregorian Calendar) يونيو
+ar_QA Name of month 07 (Gregorian Calendar) يوليو
+ar_QA Name of month 08 (Gregorian Calendar) أغسطس
+ar_QA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_QA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_QA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_QA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_QA Name of month 01 (Islamic Calendar) محرم
+ar_QA Name of month 02 (Islamic Calendar) صفر
+ar_QA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_QA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_QA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_QA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_QA Name of month 07 (Islamic Calendar) رجب
+ar_QA Name of month 08 (Islamic Calendar) شعبان
+ar_QA Name of month 09 (Islamic Calendar) رمضان
+ar_QA Name of month 10 (Islamic Calendar) شوال
+ar_QA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_QA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_QA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_QA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_QA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_QA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_QA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_QA Name of weekday 06 (Gregorian Calendar) السبت
+ar_QA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_QA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_QA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_QA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_QA Name of weekday 04 (Islamic Calendar) الخميس
+ar_QA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_QA Name of weekday 06 (Islamic Calendar) السبت
+ar_QA Name of weekday 07 (Islamic Calendar) الأحد
+ar_SA Language endonym العربية
+ar_SA Country endonym المملكة العربية السعودية
+ar_SA Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_SA Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SA Currency value €١٢٣٤٫٥٦
+ar_SA Negative Currency value -€١٢٣٤٫٥٦
+ar_SA Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SA Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SA Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SA Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SA Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SA Name of month 01 (Gregorian Calendar) يناير
+ar_SA Name of month 02 (Gregorian Calendar) فبراير
+ar_SA Name of month 03 (Gregorian Calendar) مارس
+ar_SA Name of month 04 (Gregorian Calendar) أبريل
+ar_SA Name of month 05 (Gregorian Calendar) مايو
+ar_SA Name of month 06 (Gregorian Calendar) يونيو
+ar_SA Name of month 07 (Gregorian Calendar) يوليو
+ar_SA Name of month 08 (Gregorian Calendar) أغسطس
+ar_SA Name of month 09 (Gregorian Calendar) سبتمبر
+ar_SA Name of month 10 (Gregorian Calendar) أكتوبر
+ar_SA Name of month 11 (Gregorian Calendar) نوفمبر
+ar_SA Name of month 12 (Gregorian Calendar) ديسمبر
+ar_SA Name of month 01 (Islamic Calendar) محرم
+ar_SA Name of month 02 (Islamic Calendar) صفر
+ar_SA Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SA Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SA Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SA Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SA Name of month 07 (Islamic Calendar) رجب
+ar_SA Name of month 08 (Islamic Calendar) شعبان
+ar_SA Name of month 09 (Islamic Calendar) رمضان
+ar_SA Name of month 10 (Islamic Calendar) شوال
+ar_SA Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SA Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SA Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SA Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SA Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SA Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SA Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SA Name of weekday 06 (Gregorian Calendar) السبت
+ar_SA Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SA Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SA Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SA Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SA Name of weekday 04 (Islamic Calendar) الخميس
+ar_SA Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SA Name of weekday 06 (Islamic Calendar) السبت
+ar_SA Name of weekday 07 (Islamic Calendar) الأحد
+ar_SD Language endonym العربية
+ar_SD Country endonym السودان
+ar_SD Floating Point Number ١٢٣٬٤٥٦٬٧٨٩٫٠١٢-
+ar_SD Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SD Currency value € ١٬٢٣٤٫٥٦
+ar_SD Negative Currency value € ١٬٢٣٤٫٥٦-
+ar_SD Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SD Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SD Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SD Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SD Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SD Name of month 01 (Gregorian Calendar) يناير
+ar_SD Name of month 02 (Gregorian Calendar) فبراير
+ar_SD Name of month 03 (Gregorian Calendar) مارس
+ar_SD Name of month 04 (Gregorian Calendar) أبريل
+ar_SD Name of month 05 (Gregorian Calendar) مايو
+ar_SD Name of month 06 (Gregorian Calendar) يونيو
+ar_SD Name of month 07 (Gregorian Calendar) يوليو
+ar_SD Name of month 08 (Gregorian Calendar) أغسطس
+ar_SD Name of month 09 (Gregorian Calendar) سبتمبر
+ar_SD Name of month 10 (Gregorian Calendar) أكتوبر
+ar_SD Name of month 11 (Gregorian Calendar) نوفمبر
+ar_SD Name of month 12 (Gregorian Calendar) ديسمبر
+ar_SD Name of month 01 (Islamic Calendar) محرم
+ar_SD Name of month 02 (Islamic Calendar) صفر
+ar_SD Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SD Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SD Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SD Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SD Name of month 07 (Islamic Calendar) رجب
+ar_SD Name of month 08 (Islamic Calendar) شعبان
+ar_SD Name of month 09 (Islamic Calendar) رمضان
+ar_SD Name of month 10 (Islamic Calendar) شوال
+ar_SD Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SD Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SD Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SD Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SD Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SD Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SD Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SD Name of weekday 06 (Gregorian Calendar) السبت
+ar_SD Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SD Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SD Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SD Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SD Name of weekday 04 (Islamic Calendar) الخميس
+ar_SD Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SD Name of weekday 06 (Islamic Calendar) السبت
+ar_SD Name of weekday 07 (Islamic Calendar) الأحد
+ar_SY Language endonym العربية
+ar_SY Country endonym سوريا
+ar_SY Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_SY Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_SY Currency value €١٢٣٤٫٥٦
+ar_SY Negative Currency value -€١٢٣٤٫٥٦
+ar_SY Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_SY Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_SY Date and time long (Gregorian Calendar) ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time full (Gregorian Calendar) الإثنين، ٢١ تموز، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_SY Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_SY Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_SY Name of month 01 (Gregorian Calendar) كانون الثاني
+ar_SY Name of month 02 (Gregorian Calendar) شباط
+ar_SY Name of month 03 (Gregorian Calendar) آذار
+ar_SY Name of month 04 (Gregorian Calendar) نيسان
+ar_SY Name of month 05 (Gregorian Calendar) نوار
+ar_SY Name of month 06 (Gregorian Calendar) حزيران
+ar_SY Name of month 07 (Gregorian Calendar) تموز
+ar_SY Name of month 08 (Gregorian Calendar) آب
+ar_SY Name of month 09 (Gregorian Calendar) أيلول
+ar_SY Name of month 10 (Gregorian Calendar) تشرين الأول
+ar_SY Name of month 11 (Gregorian Calendar) تشرين الثاني
+ar_SY Name of month 12 (Gregorian Calendar) كانون الأول
+ar_SY Name of month 01 (Islamic Calendar) محرم
+ar_SY Name of month 02 (Islamic Calendar) صفر
+ar_SY Name of month 03 (Islamic Calendar) ربيع الأول
+ar_SY Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_SY Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_SY Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_SY Name of month 07 (Islamic Calendar) رجب
+ar_SY Name of month 08 (Islamic Calendar) شعبان
+ar_SY Name of month 09 (Islamic Calendar) رمضان
+ar_SY Name of month 10 (Islamic Calendar) شوال
+ar_SY Name of month 11 (Islamic Calendar) ذو القعدة
+ar_SY Name of month 12 (Islamic Calendar) ذو الحجة
+ar_SY Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_SY Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_SY Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_SY Name of weekday 04 (Gregorian Calendar) الخميس
+ar_SY Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_SY Name of weekday 06 (Gregorian Calendar) السبت
+ar_SY Name of weekday 07 (Gregorian Calendar) الأحد
+ar_SY Name of weekday 01 (Islamic Calendar) الإثنين
+ar_SY Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_SY Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_SY Name of weekday 04 (Islamic Calendar) الخميس
+ar_SY Name of weekday 05 (Islamic Calendar) الجمعة
+ar_SY Name of weekday 06 (Islamic Calendar) السبت
+ar_SY Name of weekday 07 (Islamic Calendar) الأحد
+ar_TN Language endonym العربية
+ar_TN Country endonym تونس
+ar_TN Floating Point Number 123456789٫012-
+ar_TN Percent value -1٬234٫5679٪
+ar_TN Currency value €1234٫56
+ar_TN Negative Currency value -€1234٫56
+ar_TN Date and time short (Gregorian Calendar) 2008/7/21 12:31 م
+ar_TN Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00 م
+ar_TN Date and time long (Gregorian Calendar) 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_TN Date and time full (Gregorian Calendar) الإثنين، 21 يوليو، 2008 جرينتش+00:00 12:31:00 م
+ar_TN Date and time short (Islamic Calendar) 1429/7/18 12:31 م
+ar_TN Date and time medium (Islamic Calendar) 1429/07/18 12:31:00 م
+ar_TN Date and time long (Islamic Calendar) 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_TN Date and time full (Islamic Calendar) الإثنين، 18 رجب، 1429 جرينتش+00:00 12:31:00 م
+ar_TN Name of month 01 (Gregorian Calendar) يناير
+ar_TN Name of month 02 (Gregorian Calendar) فبراير
+ar_TN Name of month 03 (Gregorian Calendar) مارس
+ar_TN Name of month 04 (Gregorian Calendar) أبريل
+ar_TN Name of month 05 (Gregorian Calendar) مايو
+ar_TN Name of month 06 (Gregorian Calendar) يونيو
+ar_TN Name of month 07 (Gregorian Calendar) يوليو
+ar_TN Name of month 08 (Gregorian Calendar) أغسطس
+ar_TN Name of month 09 (Gregorian Calendar) سبتمبر
+ar_TN Name of month 10 (Gregorian Calendar) أكتوبر
+ar_TN Name of month 11 (Gregorian Calendar) نوفمبر
+ar_TN Name of month 12 (Gregorian Calendar) ديسمبر
+ar_TN Name of month 01 (Islamic Calendar) محرم
+ar_TN Name of month 02 (Islamic Calendar) صفر
+ar_TN Name of month 03 (Islamic Calendar) ربيع الأول
+ar_TN Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_TN Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_TN Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_TN Name of month 07 (Islamic Calendar) رجب
+ar_TN Name of month 08 (Islamic Calendar) شعبان
+ar_TN Name of month 09 (Islamic Calendar) رمضان
+ar_TN Name of month 10 (Islamic Calendar) شوال
+ar_TN Name of month 11 (Islamic Calendar) ذو القعدة
+ar_TN Name of month 12 (Islamic Calendar) ذو الحجة
+ar_TN Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_TN Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_TN Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_TN Name of weekday 04 (Gregorian Calendar) الخميس
+ar_TN Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_TN Name of weekday 06 (Gregorian Calendar) السبت
+ar_TN Name of weekday 07 (Gregorian Calendar) الأحد
+ar_TN Name of weekday 01 (Islamic Calendar) الإثنين
+ar_TN Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_TN Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_TN Name of weekday 04 (Islamic Calendar) الخميس
+ar_TN Name of weekday 05 (Islamic Calendar) الجمعة
+ar_TN Name of weekday 06 (Islamic Calendar) السبت
+ar_TN Name of weekday 07 (Islamic Calendar) الأحد
+ar_YE Language endonym العربية
+ar_YE Country endonym اليمن
+ar_YE Floating Point Number ١٢٣٤٥٦٧٨٩٫٠١٢-
+ar_YE Percent value -١٬٢٣٤٫٥٦٧٩٪
+ar_YE Currency value €١٢٣٤٫٥٦
+ar_YE Negative Currency value -€١٢٣٤٫٥٦
+ar_YE Date and time short (Gregorian Calendar) ٢١‏/٧‏/٢٠٠٨ ١٢:٣١ م
+ar_YE Date and time medium (Gregorian Calendar) ٢١‏/٠٧‏/٢٠٠٨ ١٢:٣١:٠٠ م
+ar_YE Date and time long (Gregorian Calendar) ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time full (Gregorian Calendar) الإثنين، ٢١ يوليو، ٢٠٠٨ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time short (Islamic Calendar) ١٨‏/٧‏/١٤٢٩ ١٢:٣١ م
+ar_YE Date and time medium (Islamic Calendar) ١٨‏/٠٧‏/١٤٢٩ ١٢:٣١:٠٠ م
+ar_YE Date and time long (Islamic Calendar) ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Date and time full (Islamic Calendar) الإثنين، ١٨ رجب، ١٤٢٩ جرينتش+٠٠:٠٠ ١٢:٣١:٠٠ م
+ar_YE Name of month 01 (Gregorian Calendar) يناير
+ar_YE Name of month 02 (Gregorian Calendar) فبراير
+ar_YE Name of month 03 (Gregorian Calendar) مارس
+ar_YE Name of month 04 (Gregorian Calendar) أبريل
+ar_YE Name of month 05 (Gregorian Calendar) مايو
+ar_YE Name of month 06 (Gregorian Calendar) يونيو
+ar_YE Name of month 07 (Gregorian Calendar) يوليو
+ar_YE Name of month 08 (Gregorian Calendar) أغسطس
+ar_YE Name of month 09 (Gregorian Calendar) سبتمبر
+ar_YE Name of month 10 (Gregorian Calendar) أكتوبر
+ar_YE Name of month 11 (Gregorian Calendar) نوفمبر
+ar_YE Name of month 12 (Gregorian Calendar) ديسمبر
+ar_YE Name of month 01 (Islamic Calendar) محرم
+ar_YE Name of month 02 (Islamic Calendar) صفر
+ar_YE Name of month 03 (Islamic Calendar) ربيع الأول
+ar_YE Name of month 04 (Islamic Calendar) ربيع الآخر
+ar_YE Name of month 05 (Islamic Calendar) جمادى الأولى
+ar_YE Name of month 06 (Islamic Calendar) جمادى الآخرة
+ar_YE Name of month 07 (Islamic Calendar) رجب
+ar_YE Name of month 08 (Islamic Calendar) شعبان
+ar_YE Name of month 09 (Islamic Calendar) رمضان
+ar_YE Name of month 10 (Islamic Calendar) شوال
+ar_YE Name of month 11 (Islamic Calendar) ذو القعدة
+ar_YE Name of month 12 (Islamic Calendar) ذو الحجة
+ar_YE Name of weekday 01 (Gregorian Calendar) الإثنين
+ar_YE Name of weekday 02 (Gregorian Calendar) الثلاثاء
+ar_YE Name of weekday 03 (Gregorian Calendar) الأربعاء
+ar_YE Name of weekday 04 (Gregorian Calendar) الخميس
+ar_YE Name of weekday 05 (Gregorian Calendar) الجمعة
+ar_YE Name of weekday 06 (Gregorian Calendar) السبت
+ar_YE Name of weekday 07 (Gregorian Calendar) الأحد
+ar_YE Name of weekday 01 (Islamic Calendar) الإثنين
+ar_YE Name of weekday 02 (Islamic Calendar) الثلاثاء
+ar_YE Name of weekday 03 (Islamic Calendar) الأربعاء
+ar_YE Name of weekday 04 (Islamic Calendar) الخميس
+ar_YE Name of weekday 05 (Islamic Calendar) الجمعة
+ar_YE Name of weekday 06 (Islamic Calendar) السبت
+ar_YE Name of weekday 07 (Islamic Calendar) الأحد
+ca Language endonym català
+ca Country endonym
+ca Floating Point Number -123.456.789,012
+ca Percent value -1.234,5679%
+ca Currency value 1.234,56 €
+ca Negative Currency value -1.234,56 €
+ca Date and time short (Gregorian Calendar) 21/07/08 12:31
+ca Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+ca Date and time long (Gregorian Calendar) 21 de juliol de 2008 12:31:00 GMT+00:00
+ca Date and time full (Gregorian Calendar) dilluns 21 de juliol de 2008 12:31:00 GMT+00:00
+ca Date and time short (Islamic Calendar) 18/07/29 12:31
+ca Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+ca Date and time long (Islamic Calendar) 18 Rajab de 1429 12:31:00 GMT+00:00
+ca Date and time full (Islamic Calendar) dilluns 18 Rajab de 1429 12:31:00 GMT+00:00
+ca Name of month 01 (Gregorian Calendar) de gener
+ca Name of month 02 (Gregorian Calendar) de febrer
+ca Name of month 03 (Gregorian Calendar) de març
+ca Name of month 04 (Gregorian Calendar) d’abril
+ca Name of month 05 (Gregorian Calendar) de maig
+ca Name of month 06 (Gregorian Calendar) de juny
+ca Name of month 07 (Gregorian Calendar) de juliol
+ca Name of month 08 (Gregorian Calendar) d’agost
+ca Name of month 09 (Gregorian Calendar) de setembre
+ca Name of month 10 (Gregorian Calendar) d’octubre
+ca Name of month 11 (Gregorian Calendar) de novembre
+ca Name of month 12 (Gregorian Calendar) de desembre
+ca Name of month 01 (Islamic Calendar) Muharram
+ca Name of month 02 (Islamic Calendar) Safar
+ca Name of month 03 (Islamic Calendar) Rabiʻ I
+ca Name of month 04 (Islamic Calendar) Rabiʻ II
+ca Name of month 05 (Islamic Calendar) Jumada I
+ca Name of month 06 (Islamic Calendar) Jumada II
+ca Name of month 07 (Islamic Calendar) Rajab
+ca Name of month 08 (Islamic Calendar) Shaʻban
+ca Name of month 09 (Islamic Calendar) Ramadan
+ca Name of month 10 (Islamic Calendar) Shawwal
+ca Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ca Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ca Name of weekday 01 (Gregorian Calendar) dilluns
+ca Name of weekday 02 (Gregorian Calendar) dimarts
+ca Name of weekday 03 (Gregorian Calendar) dimecres
+ca Name of weekday 04 (Gregorian Calendar) dijous
+ca Name of weekday 05 (Gregorian Calendar) divendres
+ca Name of weekday 06 (Gregorian Calendar) dissabte
+ca Name of weekday 07 (Gregorian Calendar) diumenge
+ca Name of weekday 01 (Islamic Calendar) dilluns
+ca Name of weekday 02 (Islamic Calendar) dimarts
+ca Name of weekday 03 (Islamic Calendar) dimecres
+ca Name of weekday 04 (Islamic Calendar) dijous
+ca Name of weekday 05 (Islamic Calendar) divendres
+ca Name of weekday 06 (Islamic Calendar) dissabte
+ca Name of weekday 07 (Islamic Calendar) diumenge
+ca_ES Language endonym català
+ca_ES Country endonym Espanya
+ca_ES Floating Point Number -123.456.789,012
+ca_ES Percent value -1.234,5679%
+ca_ES Currency value 1.234,56 €
+ca_ES Negative Currency value -1.234,56 €
+ca_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+ca_ES Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+ca_ES Date and time long (Gregorian Calendar) 21 de juliol de 2008 12:31:00 GMT+00:00
+ca_ES Date and time full (Gregorian Calendar) dilluns 21 de juliol de 2008 12:31:00 GMT+00:00
+ca_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+ca_ES Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+ca_ES Date and time long (Islamic Calendar) 18 Rajab de 1429 12:31:00 GMT+00:00
+ca_ES Date and time full (Islamic Calendar) dilluns 18 Rajab de 1429 12:31:00 GMT+00:00
+ca_ES Name of month 01 (Gregorian Calendar) de gener
+ca_ES Name of month 02 (Gregorian Calendar) de febrer
+ca_ES Name of month 03 (Gregorian Calendar) de març
+ca_ES Name of month 04 (Gregorian Calendar) d’abril
+ca_ES Name of month 05 (Gregorian Calendar) de maig
+ca_ES Name of month 06 (Gregorian Calendar) de juny
+ca_ES Name of month 07 (Gregorian Calendar) de juliol
+ca_ES Name of month 08 (Gregorian Calendar) d’agost
+ca_ES Name of month 09 (Gregorian Calendar) de setembre
+ca_ES Name of month 10 (Gregorian Calendar) d’octubre
+ca_ES Name of month 11 (Gregorian Calendar) de novembre
+ca_ES Name of month 12 (Gregorian Calendar) de desembre
+ca_ES Name of month 01 (Islamic Calendar) Muharram
+ca_ES Name of month 02 (Islamic Calendar) Safar
+ca_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+ca_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+ca_ES Name of month 05 (Islamic Calendar) Jumada I
+ca_ES Name of month 06 (Islamic Calendar) Jumada II
+ca_ES Name of month 07 (Islamic Calendar) Rajab
+ca_ES Name of month 08 (Islamic Calendar) Shaʻban
+ca_ES Name of month 09 (Islamic Calendar) Ramadan
+ca_ES Name of month 10 (Islamic Calendar) Shawwal
+ca_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ca_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ca_ES Name of weekday 01 (Gregorian Calendar) dilluns
+ca_ES Name of weekday 02 (Gregorian Calendar) dimarts
+ca_ES Name of weekday 03 (Gregorian Calendar) dimecres
+ca_ES Name of weekday 04 (Gregorian Calendar) dijous
+ca_ES Name of weekday 05 (Gregorian Calendar) divendres
+ca_ES Name of weekday 06 (Gregorian Calendar) dissabte
+ca_ES Name of weekday 07 (Gregorian Calendar) diumenge
+ca_ES Name of weekday 01 (Islamic Calendar) dilluns
+ca_ES Name of weekday 02 (Islamic Calendar) dimarts
+ca_ES Name of weekday 03 (Islamic Calendar) dimecres
+ca_ES Name of weekday 04 (Islamic Calendar) dijous
+ca_ES Name of weekday 05 (Islamic Calendar) divendres
+ca_ES Name of weekday 06 (Islamic Calendar) dissabte
+ca_ES Name of weekday 07 (Islamic Calendar) diumenge
+da Language endonym dansk
+da Country endonym
+da Floating Point Number -123.456.789,012
+da Percent value -1.234,5679 %
+da Currency value 1.234,56 €
+da Negative Currency value -1.234,56 €
+da Date and time short (Gregorian Calendar) 21/07/08 12.31
+da Date and time medium (Gregorian Calendar) 21/07/2008 12.31.00
+da Date and time long (Gregorian Calendar) 21. jul. 2008 12.31.00 GMT+00.00
+da Date and time full (Gregorian Calendar) mandag den 21. juli 2008 12.31.00 GMT+00.00
+da Date and time short (Islamic Calendar) 18/07/29 12.31
+da Date and time medium (Islamic Calendar) 18/07/1429 12.31.00
+da Date and time long (Islamic Calendar) 18. Raj. 1429 12.31.00 GMT+00.00
+da Date and time full (Islamic Calendar) mandag den 18. Rajab 1429 12.31.00 GMT+00.00
+da Name of month 01 (Gregorian Calendar) januar
+da Name of month 02 (Gregorian Calendar) februar
+da Name of month 03 (Gregorian Calendar) marts
+da Name of month 04 (Gregorian Calendar) april
+da Name of month 05 (Gregorian Calendar) maj
+da Name of month 06 (Gregorian Calendar) juni
+da Name of month 07 (Gregorian Calendar) juli
+da Name of month 08 (Gregorian Calendar) august
+da Name of month 09 (Gregorian Calendar) september
+da Name of month 10 (Gregorian Calendar) oktober
+da Name of month 11 (Gregorian Calendar) november
+da Name of month 12 (Gregorian Calendar) december
+da Name of month 01 (Islamic Calendar) Muharram
+da Name of month 02 (Islamic Calendar) Safar
+da Name of month 03 (Islamic Calendar) Rabiʻ I
+da Name of month 04 (Islamic Calendar) Rabiʻ II
+da Name of month 05 (Islamic Calendar) Jumada I
+da Name of month 06 (Islamic Calendar) Jumada II
+da Name of month 07 (Islamic Calendar) Rajab
+da Name of month 08 (Islamic Calendar) Shaʻban
+da Name of month 09 (Islamic Calendar) Ramadan
+da Name of month 10 (Islamic Calendar) Shawwal
+da Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+da Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+da Name of weekday 01 (Gregorian Calendar) mandag
+da Name of weekday 02 (Gregorian Calendar) tirsdag
+da Name of weekday 03 (Gregorian Calendar) onsdag
+da Name of weekday 04 (Gregorian Calendar) torsdag
+da Name of weekday 05 (Gregorian Calendar) fredag
+da Name of weekday 06 (Gregorian Calendar) lørdag
+da Name of weekday 07 (Gregorian Calendar) søndag
+da Name of weekday 01 (Islamic Calendar) mandag
+da Name of weekday 02 (Islamic Calendar) tirsdag
+da Name of weekday 03 (Islamic Calendar) onsdag
+da Name of weekday 04 (Islamic Calendar) torsdag
+da Name of weekday 05 (Islamic Calendar) fredag
+da Name of weekday 06 (Islamic Calendar) lørdag
+da Name of weekday 07 (Islamic Calendar) søndag
+da_DK Language endonym dansk
+da_DK Country endonym Danmark
+da_DK Floating Point Number -123.456.789,012
+da_DK Percent value -1.234,5679 %
+da_DK Currency value 1.234,56 €
+da_DK Negative Currency value -1.234,56 €
+da_DK Date and time short (Gregorian Calendar) 21/07/08 12.31
+da_DK Date and time medium (Gregorian Calendar) 21/07/2008 12.31.00
+da_DK Date and time long (Gregorian Calendar) 21. jul. 2008 12.31.00 GMT+00.00
+da_DK Date and time full (Gregorian Calendar) mandag den 21. juli 2008 12.31.00 GMT+00.00
+da_DK Date and time short (Islamic Calendar) 18/07/29 12.31
+da_DK Date and time medium (Islamic Calendar) 18/07/1429 12.31.00
+da_DK Date and time long (Islamic Calendar) 18. Raj. 1429 12.31.00 GMT+00.00
+da_DK Date and time full (Islamic Calendar) mandag den 18. Rajab 1429 12.31.00 GMT+00.00
+da_DK Name of month 01 (Gregorian Calendar) januar
+da_DK Name of month 02 (Gregorian Calendar) februar
+da_DK Name of month 03 (Gregorian Calendar) marts
+da_DK Name of month 04 (Gregorian Calendar) april
+da_DK Name of month 05 (Gregorian Calendar) maj
+da_DK Name of month 06 (Gregorian Calendar) juni
+da_DK Name of month 07 (Gregorian Calendar) juli
+da_DK Name of month 08 (Gregorian Calendar) august
+da_DK Name of month 09 (Gregorian Calendar) september
+da_DK Name of month 10 (Gregorian Calendar) oktober
+da_DK Name of month 11 (Gregorian Calendar) november
+da_DK Name of month 12 (Gregorian Calendar) december
+da_DK Name of month 01 (Islamic Calendar) Muharram
+da_DK Name of month 02 (Islamic Calendar) Safar
+da_DK Name of month 03 (Islamic Calendar) Rabiʻ I
+da_DK Name of month 04 (Islamic Calendar) Rabiʻ II
+da_DK Name of month 05 (Islamic Calendar) Jumada I
+da_DK Name of month 06 (Islamic Calendar) Jumada II
+da_DK Name of month 07 (Islamic Calendar) Rajab
+da_DK Name of month 08 (Islamic Calendar) Shaʻban
+da_DK Name of month 09 (Islamic Calendar) Ramadan
+da_DK Name of month 10 (Islamic Calendar) Shawwal
+da_DK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+da_DK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+da_DK Name of weekday 01 (Gregorian Calendar) mandag
+da_DK Name of weekday 02 (Gregorian Calendar) tirsdag
+da_DK Name of weekday 03 (Gregorian Calendar) onsdag
+da_DK Name of weekday 04 (Gregorian Calendar) torsdag
+da_DK Name of weekday 05 (Gregorian Calendar) fredag
+da_DK Name of weekday 06 (Gregorian Calendar) lørdag
+da_DK Name of weekday 07 (Gregorian Calendar) søndag
+da_DK Name of weekday 01 (Islamic Calendar) mandag
+da_DK Name of weekday 02 (Islamic Calendar) tirsdag
+da_DK Name of weekday 03 (Islamic Calendar) onsdag
+da_DK Name of weekday 04 (Islamic Calendar) torsdag
+da_DK Name of weekday 05 (Islamic Calendar) fredag
+da_DK Name of weekday 06 (Islamic Calendar) lørdag
+da_DK Name of weekday 07 (Islamic Calendar) søndag
+de Language endonym Deutsch
+de Country endonym
+de Floating Point Number -123.456.789,012
+de Percent value -1.234,5679 %
+de Currency value 1.234,56 €
+de Negative Currency value -1.234,56 €
+de Date and time short (Gregorian Calendar) 21.07.08 12:31
+de Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de Date and time short (Islamic Calendar) 18.07.29 12:31
+de Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de Name of month 01 (Gregorian Calendar) Januar
+de Name of month 02 (Gregorian Calendar) Februar
+de Name of month 03 (Gregorian Calendar) März
+de Name of month 04 (Gregorian Calendar) April
+de Name of month 05 (Gregorian Calendar) Mai
+de Name of month 06 (Gregorian Calendar) Juni
+de Name of month 07 (Gregorian Calendar) Juli
+de Name of month 08 (Gregorian Calendar) August
+de Name of month 09 (Gregorian Calendar) September
+de Name of month 10 (Gregorian Calendar) Oktober
+de Name of month 11 (Gregorian Calendar) November
+de Name of month 12 (Gregorian Calendar) Dezember
+de Name of month 01 (Islamic Calendar) Muharram
+de Name of month 02 (Islamic Calendar) Safar
+de Name of month 03 (Islamic Calendar) Rabiʻ I
+de Name of month 04 (Islamic Calendar) Rabiʻ II
+de Name of month 05 (Islamic Calendar) Jumada I
+de Name of month 06 (Islamic Calendar) Jumada II
+de Name of month 07 (Islamic Calendar) Rajab
+de Name of month 08 (Islamic Calendar) Shaʻban
+de Name of month 09 (Islamic Calendar) Ramadan
+de Name of month 10 (Islamic Calendar) Shawwal
+de Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de Name of weekday 01 (Gregorian Calendar) Montag
+de Name of weekday 02 (Gregorian Calendar) Dienstag
+de Name of weekday 03 (Gregorian Calendar) Mittwoch
+de Name of weekday 04 (Gregorian Calendar) Donnerstag
+de Name of weekday 05 (Gregorian Calendar) Freitag
+de Name of weekday 06 (Gregorian Calendar) Samstag
+de Name of weekday 07 (Gregorian Calendar) Sonntag
+de Name of weekday 01 (Islamic Calendar) Montag
+de Name of weekday 02 (Islamic Calendar) Dienstag
+de Name of weekday 03 (Islamic Calendar) Mittwoch
+de Name of weekday 04 (Islamic Calendar) Donnerstag
+de Name of weekday 05 (Islamic Calendar) Freitag
+de Name of weekday 06 (Islamic Calendar) Samstag
+de Name of weekday 07 (Islamic Calendar) Sonntag
+de_AT Language endonym Deutsch
+de_AT Country endonym Österreich
+de_AT Floating Point Number -123.456.789,012
+de_AT Percent value -1.234,5679 %
+de_AT Currency value € 1.234,56
+de_AT Negative Currency value -€ 1.234,56
+de_AT Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_AT Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_AT Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_AT Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_AT Date and time short (Islamic Calendar) 18.07.29 12:31
+de_AT Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_AT Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_AT Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_AT Name of month 01 (Gregorian Calendar) Jänner
+de_AT Name of month 02 (Gregorian Calendar) Februar
+de_AT Name of month 03 (Gregorian Calendar) März
+de_AT Name of month 04 (Gregorian Calendar) April
+de_AT Name of month 05 (Gregorian Calendar) Mai
+de_AT Name of month 06 (Gregorian Calendar) Juni
+de_AT Name of month 07 (Gregorian Calendar) Juli
+de_AT Name of month 08 (Gregorian Calendar) August
+de_AT Name of month 09 (Gregorian Calendar) September
+de_AT Name of month 10 (Gregorian Calendar) Oktober
+de_AT Name of month 11 (Gregorian Calendar) November
+de_AT Name of month 12 (Gregorian Calendar) Dezember
+de_AT Name of month 01 (Islamic Calendar) Muharram
+de_AT Name of month 02 (Islamic Calendar) Safar
+de_AT Name of month 03 (Islamic Calendar) Rabiʻ I
+de_AT Name of month 04 (Islamic Calendar) Rabiʻ II
+de_AT Name of month 05 (Islamic Calendar) Jumada I
+de_AT Name of month 06 (Islamic Calendar) Jumada II
+de_AT Name of month 07 (Islamic Calendar) Rajab
+de_AT Name of month 08 (Islamic Calendar) Shaʻban
+de_AT Name of month 09 (Islamic Calendar) Ramadan
+de_AT Name of month 10 (Islamic Calendar) Shawwal
+de_AT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_AT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_AT Name of weekday 01 (Gregorian Calendar) Montag
+de_AT Name of weekday 02 (Gregorian Calendar) Dienstag
+de_AT Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_AT Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_AT Name of weekday 05 (Gregorian Calendar) Freitag
+de_AT Name of weekday 06 (Gregorian Calendar) Samstag
+de_AT Name of weekday 07 (Gregorian Calendar) Sonntag
+de_AT Name of weekday 01 (Islamic Calendar) Montag
+de_AT Name of weekday 02 (Islamic Calendar) Dienstag
+de_AT Name of weekday 03 (Islamic Calendar) Mittwoch
+de_AT Name of weekday 04 (Islamic Calendar) Donnerstag
+de_AT Name of weekday 05 (Islamic Calendar) Freitag
+de_AT Name of weekday 06 (Islamic Calendar) Samstag
+de_AT Name of weekday 07 (Islamic Calendar) Sonntag
+de_BE Language endonym Deutsch
+de_BE Country endonym Belgien
+de_BE Floating Point Number -123.456.789,012
+de_BE Percent value -1.234,5679 %
+de_BE Currency value 1.234,56 €
+de_BE Negative Currency value -1.234,56 €
+de_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+de_BE Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_BE Date and time long (Gregorian Calendar) 21 Juli 2008 12:31:00 GMT+00:00
+de_BE Date and time full (Gregorian Calendar) Montag 21 Juli 2008 12 h 31 min 00 s GMT+00:00
+de_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+de_BE Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_BE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+de_BE Date and time full (Islamic Calendar) Montag 18 Rajab 1429 12 h 31 min 00 s GMT+00:00
+de_BE Name of month 01 (Gregorian Calendar) Januar
+de_BE Name of month 02 (Gregorian Calendar) Februar
+de_BE Name of month 03 (Gregorian Calendar) März
+de_BE Name of month 04 (Gregorian Calendar) April
+de_BE Name of month 05 (Gregorian Calendar) Mai
+de_BE Name of month 06 (Gregorian Calendar) Juni
+de_BE Name of month 07 (Gregorian Calendar) Juli
+de_BE Name of month 08 (Gregorian Calendar) August
+de_BE Name of month 09 (Gregorian Calendar) September
+de_BE Name of month 10 (Gregorian Calendar) Oktober
+de_BE Name of month 11 (Gregorian Calendar) November
+de_BE Name of month 12 (Gregorian Calendar) Dezember
+de_BE Name of month 01 (Islamic Calendar) Muharram
+de_BE Name of month 02 (Islamic Calendar) Safar
+de_BE Name of month 03 (Islamic Calendar) Rabiʻ I
+de_BE Name of month 04 (Islamic Calendar) Rabiʻ II
+de_BE Name of month 05 (Islamic Calendar) Jumada I
+de_BE Name of month 06 (Islamic Calendar) Jumada II
+de_BE Name of month 07 (Islamic Calendar) Rajab
+de_BE Name of month 08 (Islamic Calendar) Shaʻban
+de_BE Name of month 09 (Islamic Calendar) Ramadan
+de_BE Name of month 10 (Islamic Calendar) Shawwal
+de_BE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_BE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_BE Name of weekday 01 (Gregorian Calendar) Montag
+de_BE Name of weekday 02 (Gregorian Calendar) Dienstag
+de_BE Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_BE Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_BE Name of weekday 05 (Gregorian Calendar) Freitag
+de_BE Name of weekday 06 (Gregorian Calendar) Samstag
+de_BE Name of weekday 07 (Gregorian Calendar) Sonntag
+de_BE Name of weekday 01 (Islamic Calendar) Montag
+de_BE Name of weekday 02 (Islamic Calendar) Dienstag
+de_BE Name of weekday 03 (Islamic Calendar) Mittwoch
+de_BE Name of weekday 04 (Islamic Calendar) Donnerstag
+de_BE Name of weekday 05 (Islamic Calendar) Freitag
+de_BE Name of weekday 06 (Islamic Calendar) Samstag
+de_BE Name of weekday 07 (Islamic Calendar) Sonntag
+de_CH Language endonym de
+de_CH Country endonym CH
+de_CH Floating Point Number -123'456'789.012
+de_CH Percent value -1'234.5679 %
+de_CH Currency value € 1'234.56
+de_CH Negative Currency value €-1'234.56
+de_CH Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_CH Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_CH Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_CH Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_CH Date and time short (Islamic Calendar) 18.07.29 12:31
+de_CH Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_CH Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_CH Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_CH Name of month 01 (Gregorian Calendar) Januar
+de_CH Name of month 02 (Gregorian Calendar) Februar
+de_CH Name of month 03 (Gregorian Calendar) März
+de_CH Name of month 04 (Gregorian Calendar) April
+de_CH Name of month 05 (Gregorian Calendar) Mai
+de_CH Name of month 06 (Gregorian Calendar) Juni
+de_CH Name of month 07 (Gregorian Calendar) Juli
+de_CH Name of month 08 (Gregorian Calendar) August
+de_CH Name of month 09 (Gregorian Calendar) September
+de_CH Name of month 10 (Gregorian Calendar) Oktober
+de_CH Name of month 11 (Gregorian Calendar) November
+de_CH Name of month 12 (Gregorian Calendar) Dezember
+de_CH Name of month 01 (Islamic Calendar) Muharram
+de_CH Name of month 02 (Islamic Calendar) Safar
+de_CH Name of month 03 (Islamic Calendar) Rabiʻ I
+de_CH Name of month 04 (Islamic Calendar) Rabiʻ II
+de_CH Name of month 05 (Islamic Calendar) Jumada I
+de_CH Name of month 06 (Islamic Calendar) Jumada II
+de_CH Name of month 07 (Islamic Calendar) Rajab
+de_CH Name of month 08 (Islamic Calendar) Shaʻban
+de_CH Name of month 09 (Islamic Calendar) Ramadan
+de_CH Name of month 10 (Islamic Calendar) Shawwal
+de_CH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_CH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_CH Name of weekday 01 (Gregorian Calendar) Montag
+de_CH Name of weekday 02 (Gregorian Calendar) Dienstag
+de_CH Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_CH Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_CH Name of weekday 05 (Gregorian Calendar) Freitag
+de_CH Name of weekday 06 (Gregorian Calendar) Samstag
+de_CH Name of weekday 07 (Gregorian Calendar) Sonntag
+de_CH Name of weekday 01 (Islamic Calendar) Montag
+de_CH Name of weekday 02 (Islamic Calendar) Dienstag
+de_CH Name of weekday 03 (Islamic Calendar) Mittwoch
+de_CH Name of weekday 04 (Islamic Calendar) Donnerstag
+de_CH Name of weekday 05 (Islamic Calendar) Freitag
+de_CH Name of weekday 06 (Islamic Calendar) Samstag
+de_CH Name of weekday 07 (Islamic Calendar) Sonntag
+de_DE Language endonym Deutsch
+de_DE Country endonym Deutschland
+de_DE Floating Point Number -123.456.789,012
+de_DE Percent value -1.234,5679 %
+de_DE Currency value 1.234,56 €
+de_DE Negative Currency value -1.234,56 €
+de_DE Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_DE Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_DE Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_DE Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_DE Date and time short (Islamic Calendar) 18.07.29 12:31
+de_DE Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_DE Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_DE Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_DE Name of month 01 (Gregorian Calendar) Januar
+de_DE Name of month 02 (Gregorian Calendar) Februar
+de_DE Name of month 03 (Gregorian Calendar) März
+de_DE Name of month 04 (Gregorian Calendar) April
+de_DE Name of month 05 (Gregorian Calendar) Mai
+de_DE Name of month 06 (Gregorian Calendar) Juni
+de_DE Name of month 07 (Gregorian Calendar) Juli
+de_DE Name of month 08 (Gregorian Calendar) August
+de_DE Name of month 09 (Gregorian Calendar) September
+de_DE Name of month 10 (Gregorian Calendar) Oktober
+de_DE Name of month 11 (Gregorian Calendar) November
+de_DE Name of month 12 (Gregorian Calendar) Dezember
+de_DE Name of month 01 (Islamic Calendar) Muharram
+de_DE Name of month 02 (Islamic Calendar) Safar
+de_DE Name of month 03 (Islamic Calendar) Rabiʻ I
+de_DE Name of month 04 (Islamic Calendar) Rabiʻ II
+de_DE Name of month 05 (Islamic Calendar) Jumada I
+de_DE Name of month 06 (Islamic Calendar) Jumada II
+de_DE Name of month 07 (Islamic Calendar) Rajab
+de_DE Name of month 08 (Islamic Calendar) Shaʻban
+de_DE Name of month 09 (Islamic Calendar) Ramadan
+de_DE Name of month 10 (Islamic Calendar) Shawwal
+de_DE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_DE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_DE Name of weekday 01 (Gregorian Calendar) Montag
+de_DE Name of weekday 02 (Gregorian Calendar) Dienstag
+de_DE Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_DE Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_DE Name of weekday 05 (Gregorian Calendar) Freitag
+de_DE Name of weekday 06 (Gregorian Calendar) Samstag
+de_DE Name of weekday 07 (Gregorian Calendar) Sonntag
+de_DE Name of weekday 01 (Islamic Calendar) Montag
+de_DE Name of weekday 02 (Islamic Calendar) Dienstag
+de_DE Name of weekday 03 (Islamic Calendar) Mittwoch
+de_DE Name of weekday 04 (Islamic Calendar) Donnerstag
+de_DE Name of weekday 05 (Islamic Calendar) Freitag
+de_DE Name of weekday 06 (Islamic Calendar) Samstag
+de_DE Name of weekday 07 (Islamic Calendar) Sonntag
+de_LI Language endonym Deutsch
+de_LI Country endonym Liechtenstein
+de_LI Floating Point Number -123'456'789.012
+de_LI Percent value -1'234.5679 %
+de_LI Currency value € 1'234.56
+de_LI Negative Currency value -€ 1'234.56
+de_LI Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_LI Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_LI Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_LI Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_LI Date and time short (Islamic Calendar) 18.07.29 12:31
+de_LI Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_LI Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_LI Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_LI Name of month 01 (Gregorian Calendar) Januar
+de_LI Name of month 02 (Gregorian Calendar) Februar
+de_LI Name of month 03 (Gregorian Calendar) März
+de_LI Name of month 04 (Gregorian Calendar) April
+de_LI Name of month 05 (Gregorian Calendar) Mai
+de_LI Name of month 06 (Gregorian Calendar) Juni
+de_LI Name of month 07 (Gregorian Calendar) Juli
+de_LI Name of month 08 (Gregorian Calendar) August
+de_LI Name of month 09 (Gregorian Calendar) September
+de_LI Name of month 10 (Gregorian Calendar) Oktober
+de_LI Name of month 11 (Gregorian Calendar) November
+de_LI Name of month 12 (Gregorian Calendar) Dezember
+de_LI Name of month 01 (Islamic Calendar) Muharram
+de_LI Name of month 02 (Islamic Calendar) Safar
+de_LI Name of month 03 (Islamic Calendar) Rabiʻ I
+de_LI Name of month 04 (Islamic Calendar) Rabiʻ II
+de_LI Name of month 05 (Islamic Calendar) Jumada I
+de_LI Name of month 06 (Islamic Calendar) Jumada II
+de_LI Name of month 07 (Islamic Calendar) Rajab
+de_LI Name of month 08 (Islamic Calendar) Shaʻban
+de_LI Name of month 09 (Islamic Calendar) Ramadan
+de_LI Name of month 10 (Islamic Calendar) Shawwal
+de_LI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_LI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_LI Name of weekday 01 (Gregorian Calendar) Montag
+de_LI Name of weekday 02 (Gregorian Calendar) Dienstag
+de_LI Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_LI Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_LI Name of weekday 05 (Gregorian Calendar) Freitag
+de_LI Name of weekday 06 (Gregorian Calendar) Samstag
+de_LI Name of weekday 07 (Gregorian Calendar) Sonntag
+de_LI Name of weekday 01 (Islamic Calendar) Montag
+de_LI Name of weekday 02 (Islamic Calendar) Dienstag
+de_LI Name of weekday 03 (Islamic Calendar) Mittwoch
+de_LI Name of weekday 04 (Islamic Calendar) Donnerstag
+de_LI Name of weekday 05 (Islamic Calendar) Freitag
+de_LI Name of weekday 06 (Islamic Calendar) Samstag
+de_LI Name of weekday 07 (Islamic Calendar) Sonntag
+de_LU Language endonym Deutsch
+de_LU Country endonym Luxemburg
+de_LU Floating Point Number -123.456.789,012
+de_LU Percent value -1.234,5679 %
+de_LU Currency value 1.234,56 €
+de_LU Negative Currency value -1.234,56 €
+de_LU Date and time short (Gregorian Calendar) 21.07.08 12:31
+de_LU Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+de_LU Date and time long (Gregorian Calendar) 21. Juli 2008 12:31:00 GMT+00:00
+de_LU Date and time full (Gregorian Calendar) Montag, 21. Juli 2008 12:31:00 GMT+00:00
+de_LU Date and time short (Islamic Calendar) 18.07.29 12:31
+de_LU Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+de_LU Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+de_LU Date and time full (Islamic Calendar) Montag, 18. Rajab 1429 12:31:00 GMT+00:00
+de_LU Name of month 01 (Gregorian Calendar) Januar
+de_LU Name of month 02 (Gregorian Calendar) Februar
+de_LU Name of month 03 (Gregorian Calendar) März
+de_LU Name of month 04 (Gregorian Calendar) April
+de_LU Name of month 05 (Gregorian Calendar) Mai
+de_LU Name of month 06 (Gregorian Calendar) Juni
+de_LU Name of month 07 (Gregorian Calendar) Juli
+de_LU Name of month 08 (Gregorian Calendar) August
+de_LU Name of month 09 (Gregorian Calendar) September
+de_LU Name of month 10 (Gregorian Calendar) Oktober
+de_LU Name of month 11 (Gregorian Calendar) November
+de_LU Name of month 12 (Gregorian Calendar) Dezember
+de_LU Name of month 01 (Islamic Calendar) Muharram
+de_LU Name of month 02 (Islamic Calendar) Safar
+de_LU Name of month 03 (Islamic Calendar) Rabiʻ I
+de_LU Name of month 04 (Islamic Calendar) Rabiʻ II
+de_LU Name of month 05 (Islamic Calendar) Jumada I
+de_LU Name of month 06 (Islamic Calendar) Jumada II
+de_LU Name of month 07 (Islamic Calendar) Rajab
+de_LU Name of month 08 (Islamic Calendar) Shaʻban
+de_LU Name of month 09 (Islamic Calendar) Ramadan
+de_LU Name of month 10 (Islamic Calendar) Shawwal
+de_LU Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+de_LU Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+de_LU Name of weekday 01 (Gregorian Calendar) Montag
+de_LU Name of weekday 02 (Gregorian Calendar) Dienstag
+de_LU Name of weekday 03 (Gregorian Calendar) Mittwoch
+de_LU Name of weekday 04 (Gregorian Calendar) Donnerstag
+de_LU Name of weekday 05 (Gregorian Calendar) Freitag
+de_LU Name of weekday 06 (Gregorian Calendar) Samstag
+de_LU Name of weekday 07 (Gregorian Calendar) Sonntag
+de_LU Name of weekday 01 (Islamic Calendar) Montag
+de_LU Name of weekday 02 (Islamic Calendar) Dienstag
+de_LU Name of weekday 03 (Islamic Calendar) Mittwoch
+de_LU Name of weekday 04 (Islamic Calendar) Donnerstag
+de_LU Name of weekday 05 (Islamic Calendar) Freitag
+de_LU Name of weekday 06 (Islamic Calendar) Samstag
+de_LU Name of weekday 07 (Islamic Calendar) Sonntag
+el Language endonym Ελληνικά
+el Country endonym
+el Floating Point Number -123.456.789,012
+el Percent value -1.234,5679%
+el Currency value 1.234,56 €
+el Negative Currency value -1.234,56 €
+el Date and time short (Gregorian Calendar) 21/7/08 12:31 μ.μ.
+el Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el Date and time short (Islamic Calendar) 18/7/29 12:31 μ.μ.
+el Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00 μ.μ.
+el Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el Name of month 03 (Gregorian Calendar) Μαρτίου
+el Name of month 04 (Gregorian Calendar) Απριλίου
+el Name of month 05 (Gregorian Calendar) Μαΐου
+el Name of month 06 (Gregorian Calendar) Ιουνίου
+el Name of month 07 (Gregorian Calendar) Ιουλίου
+el Name of month 08 (Gregorian Calendar) Αυγούστου
+el Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el Name of month 01 (Islamic Calendar) Muharram
+el Name of month 02 (Islamic Calendar) Safar
+el Name of month 03 (Islamic Calendar) Rabiʻ I
+el Name of month 04 (Islamic Calendar) Rabiʻ II
+el Name of month 05 (Islamic Calendar) Jumada I
+el Name of month 06 (Islamic Calendar) Jumada II
+el Name of month 07 (Islamic Calendar) Rajab
+el Name of month 08 (Islamic Calendar) Shaʻban
+el Name of month 09 (Islamic Calendar) Ramadan
+el Name of month 10 (Islamic Calendar) Shawwal
+el Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el Name of weekday 02 (Gregorian Calendar) Τρίτη
+el Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el Name of weekday 06 (Gregorian Calendar) Σάββατο
+el Name of weekday 07 (Gregorian Calendar) Κυριακή
+el Name of weekday 01 (Islamic Calendar) Δευτέρα
+el Name of weekday 02 (Islamic Calendar) Τρίτη
+el Name of weekday 03 (Islamic Calendar) Τετάρτη
+el Name of weekday 04 (Islamic Calendar) Πέμπτη
+el Name of weekday 05 (Islamic Calendar) Παρασκευή
+el Name of weekday 06 (Islamic Calendar) Σάββατο
+el Name of weekday 07 (Islamic Calendar) Κυριακή
+el_CY Language endonym Ελληνικά
+el_CY Country endonym Κύπρος
+el_CY Floating Point Number -123.456.789,012
+el_CY Percent value -1.234,5679%
+el_CY Currency value €1.234,56
+el_CY Negative Currency value -€1.234,56
+el_CY Date and time short (Gregorian Calendar) 21/7/08 12:31 μ.μ.
+el_CY Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el_CY Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el_CY Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el_CY Date and time short (Islamic Calendar) 18/7/29 12:31 μ.μ.
+el_CY Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00 μ.μ.
+el_CY Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el_CY Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el_CY Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el_CY Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el_CY Name of month 03 (Gregorian Calendar) Μαρτίου
+el_CY Name of month 04 (Gregorian Calendar) Απριλίου
+el_CY Name of month 05 (Gregorian Calendar) Μαΐου
+el_CY Name of month 06 (Gregorian Calendar) Ιουνίου
+el_CY Name of month 07 (Gregorian Calendar) Ιουλίου
+el_CY Name of month 08 (Gregorian Calendar) Αυγούστου
+el_CY Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el_CY Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el_CY Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el_CY Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el_CY Name of month 01 (Islamic Calendar) Muharram
+el_CY Name of month 02 (Islamic Calendar) Safar
+el_CY Name of month 03 (Islamic Calendar) Rabiʻ I
+el_CY Name of month 04 (Islamic Calendar) Rabiʻ II
+el_CY Name of month 05 (Islamic Calendar) Jumada I
+el_CY Name of month 06 (Islamic Calendar) Jumada II
+el_CY Name of month 07 (Islamic Calendar) Rajab
+el_CY Name of month 08 (Islamic Calendar) Shaʻban
+el_CY Name of month 09 (Islamic Calendar) Ramadan
+el_CY Name of month 10 (Islamic Calendar) Shawwal
+el_CY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el_CY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el_CY Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el_CY Name of weekday 02 (Gregorian Calendar) Τρίτη
+el_CY Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el_CY Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el_CY Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el_CY Name of weekday 06 (Gregorian Calendar) Σάββατο
+el_CY Name of weekday 07 (Gregorian Calendar) Κυριακή
+el_CY Name of weekday 01 (Islamic Calendar) Δευτέρα
+el_CY Name of weekday 02 (Islamic Calendar) Τρίτη
+el_CY Name of weekday 03 (Islamic Calendar) Τετάρτη
+el_CY Name of weekday 04 (Islamic Calendar) Πέμπτη
+el_CY Name of weekday 05 (Islamic Calendar) Παρασκευή
+el_CY Name of weekday 06 (Islamic Calendar) Σάββατο
+el_CY Name of weekday 07 (Islamic Calendar) Κυριακή
+el_GR Language endonym Ελληνικά
+el_GR Country endonym Ελλάδα
+el_GR Floating Point Number -123.456.789,012
+el_GR Percent value -1.234,5679%
+el_GR Currency value 1.234,56 €
+el_GR Negative Currency value -1.234,56 €
+el_GR Date and time short (Gregorian Calendar) 21/7/08 12:31 μ.μ.
+el_GR Date and time medium (Gregorian Calendar) 21 Ιουλ 2008 12:31:00 μ.μ.
+el_GR Date and time long (Gregorian Calendar) 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el_GR Date and time full (Gregorian Calendar) Δευτέρα, 21 Ιουλίου 2008 12:31:00 μ.μ. GMT+00:00
+el_GR Date and time short (Islamic Calendar) 18/7/29 12:31 μ.μ.
+el_GR Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00 μ.μ.
+el_GR Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el_GR Date and time full (Islamic Calendar) Δευτέρα, 18 Rajab 1429 12:31:00 μ.μ. GMT+00:00
+el_GR Name of month 01 (Gregorian Calendar) Ιανουαρίου
+el_GR Name of month 02 (Gregorian Calendar) Φεβρουαρίου
+el_GR Name of month 03 (Gregorian Calendar) Μαρτίου
+el_GR Name of month 04 (Gregorian Calendar) Απριλίου
+el_GR Name of month 05 (Gregorian Calendar) Μαΐου
+el_GR Name of month 06 (Gregorian Calendar) Ιουνίου
+el_GR Name of month 07 (Gregorian Calendar) Ιουλίου
+el_GR Name of month 08 (Gregorian Calendar) Αυγούστου
+el_GR Name of month 09 (Gregorian Calendar) Σεπτεμβρίου
+el_GR Name of month 10 (Gregorian Calendar) Οκτωβρίου
+el_GR Name of month 11 (Gregorian Calendar) Νοεμβρίου
+el_GR Name of month 12 (Gregorian Calendar) Δεκεμβρίου
+el_GR Name of month 01 (Islamic Calendar) Muharram
+el_GR Name of month 02 (Islamic Calendar) Safar
+el_GR Name of month 03 (Islamic Calendar) Rabiʻ I
+el_GR Name of month 04 (Islamic Calendar) Rabiʻ II
+el_GR Name of month 05 (Islamic Calendar) Jumada I
+el_GR Name of month 06 (Islamic Calendar) Jumada II
+el_GR Name of month 07 (Islamic Calendar) Rajab
+el_GR Name of month 08 (Islamic Calendar) Shaʻban
+el_GR Name of month 09 (Islamic Calendar) Ramadan
+el_GR Name of month 10 (Islamic Calendar) Shawwal
+el_GR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+el_GR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+el_GR Name of weekday 01 (Gregorian Calendar) Δευτέρα
+el_GR Name of weekday 02 (Gregorian Calendar) Τρίτη
+el_GR Name of weekday 03 (Gregorian Calendar) Τετάρτη
+el_GR Name of weekday 04 (Gregorian Calendar) Πέμπτη
+el_GR Name of weekday 05 (Gregorian Calendar) Παρασκευή
+el_GR Name of weekday 06 (Gregorian Calendar) Σάββατο
+el_GR Name of weekday 07 (Gregorian Calendar) Κυριακή
+el_GR Name of weekday 01 (Islamic Calendar) Δευτέρα
+el_GR Name of weekday 02 (Islamic Calendar) Τρίτη
+el_GR Name of weekday 03 (Islamic Calendar) Τετάρτη
+el_GR Name of weekday 04 (Islamic Calendar) Πέμπτη
+el_GR Name of weekday 05 (Islamic Calendar) Παρασκευή
+el_GR Name of weekday 06 (Islamic Calendar) Σάββατο
+el_GR Name of weekday 07 (Islamic Calendar) Κυριακή
+en Language endonym English
+en Country endonym
+en Floating Point Number -123,456,789.012
+en Percent value -1,234.5679%
+en Currency value €1,234.56
+en Negative Currency value (€1,234.56)
+en Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en Name of month 01 (Gregorian Calendar) January
+en Name of month 02 (Gregorian Calendar) February
+en Name of month 03 (Gregorian Calendar) March
+en Name of month 04 (Gregorian Calendar) April
+en Name of month 05 (Gregorian Calendar) May
+en Name of month 06 (Gregorian Calendar) June
+en Name of month 07 (Gregorian Calendar) July
+en Name of month 08 (Gregorian Calendar) August
+en Name of month 09 (Gregorian Calendar) September
+en Name of month 10 (Gregorian Calendar) October
+en Name of month 11 (Gregorian Calendar) November
+en Name of month 12 (Gregorian Calendar) December
+en Name of month 01 (Islamic Calendar) Muharram
+en Name of month 02 (Islamic Calendar) Safar
+en Name of month 03 (Islamic Calendar) Rabiʻ I
+en Name of month 04 (Islamic Calendar) Rabiʻ II
+en Name of month 05 (Islamic Calendar) Jumada I
+en Name of month 06 (Islamic Calendar) Jumada II
+en Name of month 07 (Islamic Calendar) Rajab
+en Name of month 08 (Islamic Calendar) Shaʻban
+en Name of month 09 (Islamic Calendar) Ramadan
+en Name of month 10 (Islamic Calendar) Shawwal
+en Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en Name of weekday 01 (Gregorian Calendar) Monday
+en Name of weekday 02 (Gregorian Calendar) Tuesday
+en Name of weekday 03 (Gregorian Calendar) Wednesday
+en Name of weekday 04 (Gregorian Calendar) Thursday
+en Name of weekday 05 (Gregorian Calendar) Friday
+en Name of weekday 06 (Gregorian Calendar) Saturday
+en Name of weekday 07 (Gregorian Calendar) Sunday
+en Name of weekday 01 (Islamic Calendar) Monday
+en Name of weekday 02 (Islamic Calendar) Tuesday
+en Name of weekday 03 (Islamic Calendar) Wednesday
+en Name of weekday 04 (Islamic Calendar) Thursday
+en Name of weekday 05 (Islamic Calendar) Friday
+en Name of weekday 06 (Islamic Calendar) Saturday
+en Name of weekday 07 (Islamic Calendar) Sunday
+en_AU Language endonym English
+en_AU Country endonym Australia
+en_AU Floating Point Number -123,456,789.012
+en_AU Percent value -1,234.5679%
+en_AU Currency value €1,234.56
+en_AU Negative Currency value -€1,234.56
+en_AU Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_AU Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00 PM
+en_AU Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_AU Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 PM GMT+00:00
+en_AU Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_AU Date and time medium (Islamic Calendar) 18/07/1429 12:31:00 PM
+en_AU Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_AU Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_AU Name of month 01 (Gregorian Calendar) January
+en_AU Name of month 02 (Gregorian Calendar) February
+en_AU Name of month 03 (Gregorian Calendar) March
+en_AU Name of month 04 (Gregorian Calendar) April
+en_AU Name of month 05 (Gregorian Calendar) May
+en_AU Name of month 06 (Gregorian Calendar) June
+en_AU Name of month 07 (Gregorian Calendar) July
+en_AU Name of month 08 (Gregorian Calendar) August
+en_AU Name of month 09 (Gregorian Calendar) September
+en_AU Name of month 10 (Gregorian Calendar) October
+en_AU Name of month 11 (Gregorian Calendar) November
+en_AU Name of month 12 (Gregorian Calendar) December
+en_AU Name of month 01 (Islamic Calendar) Muharram
+en_AU Name of month 02 (Islamic Calendar) Safar
+en_AU Name of month 03 (Islamic Calendar) Rabiʻ I
+en_AU Name of month 04 (Islamic Calendar) Rabiʻ II
+en_AU Name of month 05 (Islamic Calendar) Jumada I
+en_AU Name of month 06 (Islamic Calendar) Jumada II
+en_AU Name of month 07 (Islamic Calendar) Rajab
+en_AU Name of month 08 (Islamic Calendar) Shaʻban
+en_AU Name of month 09 (Islamic Calendar) Ramadan
+en_AU Name of month 10 (Islamic Calendar) Shawwal
+en_AU Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_AU Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_AU Name of weekday 01 (Gregorian Calendar) Monday
+en_AU Name of weekday 02 (Gregorian Calendar) Tuesday
+en_AU Name of weekday 03 (Gregorian Calendar) Wednesday
+en_AU Name of weekday 04 (Gregorian Calendar) Thursday
+en_AU Name of weekday 05 (Gregorian Calendar) Friday
+en_AU Name of weekday 06 (Gregorian Calendar) Saturday
+en_AU Name of weekday 07 (Gregorian Calendar) Sunday
+en_AU Name of weekday 01 (Islamic Calendar) Monday
+en_AU Name of weekday 02 (Islamic Calendar) Tuesday
+en_AU Name of weekday 03 (Islamic Calendar) Wednesday
+en_AU Name of weekday 04 (Islamic Calendar) Thursday
+en_AU Name of weekday 05 (Islamic Calendar) Friday
+en_AU Name of weekday 06 (Islamic Calendar) Saturday
+en_AU Name of weekday 07 (Islamic Calendar) Sunday
+en_BE Language endonym English
+en_BE Country endonym Belgium
+en_BE Floating Point Number -123.456.789,012
+en_BE Percent value -1.234,5679%
+en_BE Currency value 1.234,56 €
+en_BE Negative Currency value -1.234,56 €
+en_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+en_BE Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_BE Date and time long (Gregorian Calendar) 21 Jul 2008 12:31:00 GMT+00:00
+en_BE Date and time full (Gregorian Calendar) Monday 21 July 2008 12 h 31 min 00 s GMT+00:00
+en_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+en_BE Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+en_BE Date and time long (Islamic Calendar) 18 Raj. 1429 12:31:00 GMT+00:00
+en_BE Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12 h 31 min 00 s GMT+00:00
+en_BE Name of month 01 (Gregorian Calendar) January
+en_BE Name of month 02 (Gregorian Calendar) February
+en_BE Name of month 03 (Gregorian Calendar) March
+en_BE Name of month 04 (Gregorian Calendar) April
+en_BE Name of month 05 (Gregorian Calendar) May
+en_BE Name of month 06 (Gregorian Calendar) June
+en_BE Name of month 07 (Gregorian Calendar) July
+en_BE Name of month 08 (Gregorian Calendar) August
+en_BE Name of month 09 (Gregorian Calendar) September
+en_BE Name of month 10 (Gregorian Calendar) October
+en_BE Name of month 11 (Gregorian Calendar) November
+en_BE Name of month 12 (Gregorian Calendar) December
+en_BE Name of month 01 (Islamic Calendar) Muharram
+en_BE Name of month 02 (Islamic Calendar) Safar
+en_BE Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BE Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BE Name of month 05 (Islamic Calendar) Jumada I
+en_BE Name of month 06 (Islamic Calendar) Jumada II
+en_BE Name of month 07 (Islamic Calendar) Rajab
+en_BE Name of month 08 (Islamic Calendar) Shaʻban
+en_BE Name of month 09 (Islamic Calendar) Ramadan
+en_BE Name of month 10 (Islamic Calendar) Shawwal
+en_BE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BE Name of weekday 01 (Gregorian Calendar) Monday
+en_BE Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BE Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BE Name of weekday 04 (Gregorian Calendar) Thursday
+en_BE Name of weekday 05 (Gregorian Calendar) Friday
+en_BE Name of weekday 06 (Gregorian Calendar) Saturday
+en_BE Name of weekday 07 (Gregorian Calendar) Sunday
+en_BE Name of weekday 01 (Islamic Calendar) Monday
+en_BE Name of weekday 02 (Islamic Calendar) Tuesday
+en_BE Name of weekday 03 (Islamic Calendar) Wednesday
+en_BE Name of weekday 04 (Islamic Calendar) Thursday
+en_BE Name of weekday 05 (Islamic Calendar) Friday
+en_BE Name of weekday 06 (Islamic Calendar) Saturday
+en_BE Name of weekday 07 (Islamic Calendar) Sunday
+en_BW Language endonym English
+en_BW Country endonym Botswana
+en_BW Floating Point Number -123,456,789.012
+en_BW Percent value -1,234.5679%
+en_BW Currency value €1,234.56
+en_BW Negative Currency value -€1,234.56
+en_BW Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_BW Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_BW Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_BW Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_BW Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_BW Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_BW Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_BW Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_BW Name of month 01 (Gregorian Calendar) January
+en_BW Name of month 02 (Gregorian Calendar) February
+en_BW Name of month 03 (Gregorian Calendar) March
+en_BW Name of month 04 (Gregorian Calendar) April
+en_BW Name of month 05 (Gregorian Calendar) May
+en_BW Name of month 06 (Gregorian Calendar) June
+en_BW Name of month 07 (Gregorian Calendar) July
+en_BW Name of month 08 (Gregorian Calendar) August
+en_BW Name of month 09 (Gregorian Calendar) September
+en_BW Name of month 10 (Gregorian Calendar) October
+en_BW Name of month 11 (Gregorian Calendar) November
+en_BW Name of month 12 (Gregorian Calendar) December
+en_BW Name of month 01 (Islamic Calendar) Muharram
+en_BW Name of month 02 (Islamic Calendar) Safar
+en_BW Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BW Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BW Name of month 05 (Islamic Calendar) Jumada I
+en_BW Name of month 06 (Islamic Calendar) Jumada II
+en_BW Name of month 07 (Islamic Calendar) Rajab
+en_BW Name of month 08 (Islamic Calendar) Shaʻban
+en_BW Name of month 09 (Islamic Calendar) Ramadan
+en_BW Name of month 10 (Islamic Calendar) Shawwal
+en_BW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BW Name of weekday 01 (Gregorian Calendar) Monday
+en_BW Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BW Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BW Name of weekday 04 (Gregorian Calendar) Thursday
+en_BW Name of weekday 05 (Gregorian Calendar) Friday
+en_BW Name of weekday 06 (Gregorian Calendar) Saturday
+en_BW Name of weekday 07 (Gregorian Calendar) Sunday
+en_BW Name of weekday 01 (Islamic Calendar) Monday
+en_BW Name of weekday 02 (Islamic Calendar) Tuesday
+en_BW Name of weekday 03 (Islamic Calendar) Wednesday
+en_BW Name of weekday 04 (Islamic Calendar) Thursday
+en_BW Name of weekday 05 (Islamic Calendar) Friday
+en_BW Name of weekday 06 (Islamic Calendar) Saturday
+en_BW Name of weekday 07 (Islamic Calendar) Sunday
+en_BZ Language endonym English
+en_BZ Country endonym Belize
+en_BZ Floating Point Number -123,456,789.012
+en_BZ Percent value -1,234.5679%
+en_BZ Currency value €1,234.56
+en_BZ Negative Currency value -€1,234.56
+en_BZ Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_BZ Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_BZ Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_BZ Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_BZ Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_BZ Date and time medium (Islamic Calendar) 18-Raj.-1429 12:31:00 PM
+en_BZ Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_BZ Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_BZ Name of month 01 (Gregorian Calendar) January
+en_BZ Name of month 02 (Gregorian Calendar) February
+en_BZ Name of month 03 (Gregorian Calendar) March
+en_BZ Name of month 04 (Gregorian Calendar) April
+en_BZ Name of month 05 (Gregorian Calendar) May
+en_BZ Name of month 06 (Gregorian Calendar) June
+en_BZ Name of month 07 (Gregorian Calendar) July
+en_BZ Name of month 08 (Gregorian Calendar) August
+en_BZ Name of month 09 (Gregorian Calendar) September
+en_BZ Name of month 10 (Gregorian Calendar) October
+en_BZ Name of month 11 (Gregorian Calendar) November
+en_BZ Name of month 12 (Gregorian Calendar) December
+en_BZ Name of month 01 (Islamic Calendar) Muharram
+en_BZ Name of month 02 (Islamic Calendar) Safar
+en_BZ Name of month 03 (Islamic Calendar) Rabiʻ I
+en_BZ Name of month 04 (Islamic Calendar) Rabiʻ II
+en_BZ Name of month 05 (Islamic Calendar) Jumada I
+en_BZ Name of month 06 (Islamic Calendar) Jumada II
+en_BZ Name of month 07 (Islamic Calendar) Rajab
+en_BZ Name of month 08 (Islamic Calendar) Shaʻban
+en_BZ Name of month 09 (Islamic Calendar) Ramadan
+en_BZ Name of month 10 (Islamic Calendar) Shawwal
+en_BZ Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_BZ Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_BZ Name of weekday 01 (Gregorian Calendar) Monday
+en_BZ Name of weekday 02 (Gregorian Calendar) Tuesday
+en_BZ Name of weekday 03 (Gregorian Calendar) Wednesday
+en_BZ Name of weekday 04 (Gregorian Calendar) Thursday
+en_BZ Name of weekday 05 (Gregorian Calendar) Friday
+en_BZ Name of weekday 06 (Gregorian Calendar) Saturday
+en_BZ Name of weekday 07 (Gregorian Calendar) Sunday
+en_BZ Name of weekday 01 (Islamic Calendar) Monday
+en_BZ Name of weekday 02 (Islamic Calendar) Tuesday
+en_BZ Name of weekday 03 (Islamic Calendar) Wednesday
+en_BZ Name of weekday 04 (Islamic Calendar) Thursday
+en_BZ Name of weekday 05 (Islamic Calendar) Friday
+en_BZ Name of weekday 06 (Islamic Calendar) Saturday
+en_BZ Name of weekday 07 (Islamic Calendar) Sunday
+en_CA Language endonym English
+en_CA Country endonym Canada
+en_CA Floating Point Number -123,456,789.012
+en_CA Percent value -1,234.5679%
+en_CA Currency value €1,234.56
+en_CA Negative Currency value (€1,234.56)
+en_CA Date and time short (Gregorian Calendar) 08-07-21 12:31 PM
+en_CA Date and time medium (Gregorian Calendar) 2008-07-21 12:31:00 PM
+en_CA Date and time long (Gregorian Calendar) 21 July, 2008 12:31:00 PM GMT+00:00
+en_CA Date and time full (Gregorian Calendar) Monday, 21 July, 2008 12:31:00 PM GMT+00:00
+en_CA Date and time short (Islamic Calendar) 29-07-18 12:31 PM
+en_CA Date and time medium (Islamic Calendar) 1429-07-18 12:31:00 PM
+en_CA Date and time long (Islamic Calendar) 18 Rajab, 1429 12:31:00 PM GMT+00:00
+en_CA Date and time full (Islamic Calendar) Monday, 18 Rajab, 1429 12:31:00 PM GMT+00:00
+en_CA Name of month 01 (Gregorian Calendar) January
+en_CA Name of month 02 (Gregorian Calendar) February
+en_CA Name of month 03 (Gregorian Calendar) March
+en_CA Name of month 04 (Gregorian Calendar) April
+en_CA Name of month 05 (Gregorian Calendar) May
+en_CA Name of month 06 (Gregorian Calendar) June
+en_CA Name of month 07 (Gregorian Calendar) July
+en_CA Name of month 08 (Gregorian Calendar) August
+en_CA Name of month 09 (Gregorian Calendar) September
+en_CA Name of month 10 (Gregorian Calendar) October
+en_CA Name of month 11 (Gregorian Calendar) November
+en_CA Name of month 12 (Gregorian Calendar) December
+en_CA Name of month 01 (Islamic Calendar) Muharram
+en_CA Name of month 02 (Islamic Calendar) Safar
+en_CA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_CA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_CA Name of month 05 (Islamic Calendar) Jumada I
+en_CA Name of month 06 (Islamic Calendar) Jumada II
+en_CA Name of month 07 (Islamic Calendar) Rajab
+en_CA Name of month 08 (Islamic Calendar) Shaʻban
+en_CA Name of month 09 (Islamic Calendar) Ramadan
+en_CA Name of month 10 (Islamic Calendar) Shawwal
+en_CA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_CA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_CA Name of weekday 01 (Gregorian Calendar) Monday
+en_CA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_CA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_CA Name of weekday 04 (Gregorian Calendar) Thursday
+en_CA Name of weekday 05 (Gregorian Calendar) Friday
+en_CA Name of weekday 06 (Gregorian Calendar) Saturday
+en_CA Name of weekday 07 (Gregorian Calendar) Sunday
+en_CA Name of weekday 01 (Islamic Calendar) Monday
+en_CA Name of weekday 02 (Islamic Calendar) Tuesday
+en_CA Name of weekday 03 (Islamic Calendar) Wednesday
+en_CA Name of weekday 04 (Islamic Calendar) Thursday
+en_CA Name of weekday 05 (Islamic Calendar) Friday
+en_CA Name of weekday 06 (Islamic Calendar) Saturday
+en_CA Name of weekday 07 (Islamic Calendar) Sunday
+en_GB Language endonym English
+en_GB Country endonym United Kingdom
+en_GB Floating Point Number -123,456,789.012
+en_GB Percent value -1,234.5679%
+en_GB Currency value €1,234.56
+en_GB Negative Currency value -€1,234.56
+en_GB Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_GB Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_GB Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_GB Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 GMT+00:00
+en_GB Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_GB Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+en_GB Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_GB Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 GMT+00:00
+en_GB Name of month 01 (Gregorian Calendar) January
+en_GB Name of month 02 (Gregorian Calendar) February
+en_GB Name of month 03 (Gregorian Calendar) March
+en_GB Name of month 04 (Gregorian Calendar) April
+en_GB Name of month 05 (Gregorian Calendar) May
+en_GB Name of month 06 (Gregorian Calendar) June
+en_GB Name of month 07 (Gregorian Calendar) July
+en_GB Name of month 08 (Gregorian Calendar) August
+en_GB Name of month 09 (Gregorian Calendar) September
+en_GB Name of month 10 (Gregorian Calendar) October
+en_GB Name of month 11 (Gregorian Calendar) November
+en_GB Name of month 12 (Gregorian Calendar) December
+en_GB Name of month 01 (Islamic Calendar) Muharram
+en_GB Name of month 02 (Islamic Calendar) Safar
+en_GB Name of month 03 (Islamic Calendar) Rabiʻ I
+en_GB Name of month 04 (Islamic Calendar) Rabiʻ II
+en_GB Name of month 05 (Islamic Calendar) Jumada I
+en_GB Name of month 06 (Islamic Calendar) Jumada II
+en_GB Name of month 07 (Islamic Calendar) Rajab
+en_GB Name of month 08 (Islamic Calendar) Shaʻban
+en_GB Name of month 09 (Islamic Calendar) Ramadan
+en_GB Name of month 10 (Islamic Calendar) Shawwal
+en_GB Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_GB Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_GB Name of weekday 01 (Gregorian Calendar) Monday
+en_GB Name of weekday 02 (Gregorian Calendar) Tuesday
+en_GB Name of weekday 03 (Gregorian Calendar) Wednesday
+en_GB Name of weekday 04 (Gregorian Calendar) Thursday
+en_GB Name of weekday 05 (Gregorian Calendar) Friday
+en_GB Name of weekday 06 (Gregorian Calendar) Saturday
+en_GB Name of weekday 07 (Gregorian Calendar) Sunday
+en_GB Name of weekday 01 (Islamic Calendar) Monday
+en_GB Name of weekday 02 (Islamic Calendar) Tuesday
+en_GB Name of weekday 03 (Islamic Calendar) Wednesday
+en_GB Name of weekday 04 (Islamic Calendar) Thursday
+en_GB Name of weekday 05 (Islamic Calendar) Friday
+en_GB Name of weekday 06 (Islamic Calendar) Saturday
+en_GB Name of weekday 07 (Islamic Calendar) Sunday
+en_HK Language endonym English
+en_HK Country endonym Hong Kong SAR China
+en_HK Floating Point Number -123,456,789.012
+en_HK Percent value -1,234.5679%
+en_HK Currency value €1,234.56
+en_HK Negative Currency value (€1,234.56)
+en_HK Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+en_HK Date and time medium (Gregorian Calendar) 21 Jul, 2008 12:31:00 PM
+en_HK Date and time long (Gregorian Calendar) 21 July, 2008 12:31:00 PM GMT+00:00
+en_HK Date and time full (Gregorian Calendar) Monday, 21 July, 2008 12:31:00 PM GMT+00:00
+en_HK Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+en_HK Date and time medium (Islamic Calendar) 18 Raj., 1429 12:31:00 PM
+en_HK Date and time long (Islamic Calendar) 18 Rajab, 1429 12:31:00 PM GMT+00:00
+en_HK Date and time full (Islamic Calendar) Monday, 18 Rajab, 1429 12:31:00 PM GMT+00:00
+en_HK Name of month 01 (Gregorian Calendar) January
+en_HK Name of month 02 (Gregorian Calendar) February
+en_HK Name of month 03 (Gregorian Calendar) March
+en_HK Name of month 04 (Gregorian Calendar) April
+en_HK Name of month 05 (Gregorian Calendar) May
+en_HK Name of month 06 (Gregorian Calendar) June
+en_HK Name of month 07 (Gregorian Calendar) July
+en_HK Name of month 08 (Gregorian Calendar) August
+en_HK Name of month 09 (Gregorian Calendar) September
+en_HK Name of month 10 (Gregorian Calendar) October
+en_HK Name of month 11 (Gregorian Calendar) November
+en_HK Name of month 12 (Gregorian Calendar) December
+en_HK Name of month 01 (Islamic Calendar) Muharram
+en_HK Name of month 02 (Islamic Calendar) Safar
+en_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+en_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+en_HK Name of month 05 (Islamic Calendar) Jumada I
+en_HK Name of month 06 (Islamic Calendar) Jumada II
+en_HK Name of month 07 (Islamic Calendar) Rajab
+en_HK Name of month 08 (Islamic Calendar) Shaʻban
+en_HK Name of month 09 (Islamic Calendar) Ramadan
+en_HK Name of month 10 (Islamic Calendar) Shawwal
+en_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_HK Name of weekday 01 (Gregorian Calendar) Monday
+en_HK Name of weekday 02 (Gregorian Calendar) Tuesday
+en_HK Name of weekday 03 (Gregorian Calendar) Wednesday
+en_HK Name of weekday 04 (Gregorian Calendar) Thursday
+en_HK Name of weekday 05 (Gregorian Calendar) Friday
+en_HK Name of weekday 06 (Gregorian Calendar) Saturday
+en_HK Name of weekday 07 (Gregorian Calendar) Sunday
+en_HK Name of weekday 01 (Islamic Calendar) Monday
+en_HK Name of weekday 02 (Islamic Calendar) Tuesday
+en_HK Name of weekday 03 (Islamic Calendar) Wednesday
+en_HK Name of weekday 04 (Islamic Calendar) Thursday
+en_HK Name of weekday 05 (Islamic Calendar) Friday
+en_HK Name of weekday 06 (Islamic Calendar) Saturday
+en_HK Name of weekday 07 (Islamic Calendar) Sunday
+en_IE Language endonym English
+en_IE Country endonym Ireland
+en_IE Floating Point Number -123,456,789.012
+en_IE Percent value -1,234.5679%
+en_IE Currency value €1,234.56
+en_IE Negative Currency value -€1,234.56
+en_IE Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_IE Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_IE Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_IE Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 GMT+00:00
+en_IE Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_IE Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+en_IE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_IE Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 GMT+00:00
+en_IE Name of month 01 (Gregorian Calendar) January
+en_IE Name of month 02 (Gregorian Calendar) February
+en_IE Name of month 03 (Gregorian Calendar) March
+en_IE Name of month 04 (Gregorian Calendar) April
+en_IE Name of month 05 (Gregorian Calendar) May
+en_IE Name of month 06 (Gregorian Calendar) June
+en_IE Name of month 07 (Gregorian Calendar) July
+en_IE Name of month 08 (Gregorian Calendar) August
+en_IE Name of month 09 (Gregorian Calendar) September
+en_IE Name of month 10 (Gregorian Calendar) October
+en_IE Name of month 11 (Gregorian Calendar) November
+en_IE Name of month 12 (Gregorian Calendar) December
+en_IE Name of month 01 (Islamic Calendar) Muharram
+en_IE Name of month 02 (Islamic Calendar) Safar
+en_IE Name of month 03 (Islamic Calendar) Rabiʻ I
+en_IE Name of month 04 (Islamic Calendar) Rabiʻ II
+en_IE Name of month 05 (Islamic Calendar) Jumada I
+en_IE Name of month 06 (Islamic Calendar) Jumada II
+en_IE Name of month 07 (Islamic Calendar) Rajab
+en_IE Name of month 08 (Islamic Calendar) Shaʻban
+en_IE Name of month 09 (Islamic Calendar) Ramadan
+en_IE Name of month 10 (Islamic Calendar) Shawwal
+en_IE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_IE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_IE Name of weekday 01 (Gregorian Calendar) Monday
+en_IE Name of weekday 02 (Gregorian Calendar) Tuesday
+en_IE Name of weekday 03 (Gregorian Calendar) Wednesday
+en_IE Name of weekday 04 (Gregorian Calendar) Thursday
+en_IE Name of weekday 05 (Gregorian Calendar) Friday
+en_IE Name of weekday 06 (Gregorian Calendar) Saturday
+en_IE Name of weekday 07 (Gregorian Calendar) Sunday
+en_IE Name of weekday 01 (Islamic Calendar) Monday
+en_IE Name of weekday 02 (Islamic Calendar) Tuesday
+en_IE Name of weekday 03 (Islamic Calendar) Wednesday
+en_IE Name of weekday 04 (Islamic Calendar) Thursday
+en_IE Name of weekday 05 (Islamic Calendar) Friday
+en_IE Name of weekday 06 (Islamic Calendar) Saturday
+en_IE Name of weekday 07 (Islamic Calendar) Sunday
+en_IN Language endonym English
+en_IN Country endonym India
+en_IN Floating Point Number -12,34,56,789.012
+en_IN Percent value -1,234.5679%
+en_IN Currency value € 1,234.56
+en_IN Negative Currency value -€ 1,234.56
+en_IN Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_IN Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_IN Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_IN Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_IN Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_IN Date and time medium (Islamic Calendar) 18-Raj.-1429 12:31:00 PM
+en_IN Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_IN Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_IN Name of month 01 (Gregorian Calendar) January
+en_IN Name of month 02 (Gregorian Calendar) February
+en_IN Name of month 03 (Gregorian Calendar) March
+en_IN Name of month 04 (Gregorian Calendar) April
+en_IN Name of month 05 (Gregorian Calendar) May
+en_IN Name of month 06 (Gregorian Calendar) June
+en_IN Name of month 07 (Gregorian Calendar) July
+en_IN Name of month 08 (Gregorian Calendar) August
+en_IN Name of month 09 (Gregorian Calendar) September
+en_IN Name of month 10 (Gregorian Calendar) October
+en_IN Name of month 11 (Gregorian Calendar) November
+en_IN Name of month 12 (Gregorian Calendar) December
+en_IN Name of month 01 (Islamic Calendar) Muharram
+en_IN Name of month 02 (Islamic Calendar) Safar
+en_IN Name of month 03 (Islamic Calendar) Rabiʻ I
+en_IN Name of month 04 (Islamic Calendar) Rabiʻ II
+en_IN Name of month 05 (Islamic Calendar) Jumada I
+en_IN Name of month 06 (Islamic Calendar) Jumada II
+en_IN Name of month 07 (Islamic Calendar) Rajab
+en_IN Name of month 08 (Islamic Calendar) Shaʻban
+en_IN Name of month 09 (Islamic Calendar) Ramadan
+en_IN Name of month 10 (Islamic Calendar) Shawwal
+en_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_IN Name of weekday 01 (Gregorian Calendar) Monday
+en_IN Name of weekday 02 (Gregorian Calendar) Tuesday
+en_IN Name of weekday 03 (Gregorian Calendar) Wednesday
+en_IN Name of weekday 04 (Gregorian Calendar) Thursday
+en_IN Name of weekday 05 (Gregorian Calendar) Friday
+en_IN Name of weekday 06 (Gregorian Calendar) Saturday
+en_IN Name of weekday 07 (Gregorian Calendar) Sunday
+en_IN Name of weekday 01 (Islamic Calendar) Monday
+en_IN Name of weekday 02 (Islamic Calendar) Tuesday
+en_IN Name of weekday 03 (Islamic Calendar) Wednesday
+en_IN Name of weekday 04 (Islamic Calendar) Thursday
+en_IN Name of weekday 05 (Islamic Calendar) Friday
+en_IN Name of weekday 06 (Islamic Calendar) Saturday
+en_IN Name of weekday 07 (Islamic Calendar) Sunday
+en_JM Language endonym English
+en_JM Country endonym Jamaica
+en_JM Floating Point Number -123,456,789.012
+en_JM Percent value -1,234.5679%
+en_JM Currency value €1,234.56
+en_JM Negative Currency value -€1,234.56
+en_JM Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_JM Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_JM Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_JM Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_JM Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_JM Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_JM Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_JM Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_JM Name of month 01 (Gregorian Calendar) January
+en_JM Name of month 02 (Gregorian Calendar) February
+en_JM Name of month 03 (Gregorian Calendar) March
+en_JM Name of month 04 (Gregorian Calendar) April
+en_JM Name of month 05 (Gregorian Calendar) May
+en_JM Name of month 06 (Gregorian Calendar) June
+en_JM Name of month 07 (Gregorian Calendar) July
+en_JM Name of month 08 (Gregorian Calendar) August
+en_JM Name of month 09 (Gregorian Calendar) September
+en_JM Name of month 10 (Gregorian Calendar) October
+en_JM Name of month 11 (Gregorian Calendar) November
+en_JM Name of month 12 (Gregorian Calendar) December
+en_JM Name of month 01 (Islamic Calendar) Muharram
+en_JM Name of month 02 (Islamic Calendar) Safar
+en_JM Name of month 03 (Islamic Calendar) Rabiʻ I
+en_JM Name of month 04 (Islamic Calendar) Rabiʻ II
+en_JM Name of month 05 (Islamic Calendar) Jumada I
+en_JM Name of month 06 (Islamic Calendar) Jumada II
+en_JM Name of month 07 (Islamic Calendar) Rajab
+en_JM Name of month 08 (Islamic Calendar) Shaʻban
+en_JM Name of month 09 (Islamic Calendar) Ramadan
+en_JM Name of month 10 (Islamic Calendar) Shawwal
+en_JM Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_JM Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_JM Name of weekday 01 (Gregorian Calendar) Monday
+en_JM Name of weekday 02 (Gregorian Calendar) Tuesday
+en_JM Name of weekday 03 (Gregorian Calendar) Wednesday
+en_JM Name of weekday 04 (Gregorian Calendar) Thursday
+en_JM Name of weekday 05 (Gregorian Calendar) Friday
+en_JM Name of weekday 06 (Gregorian Calendar) Saturday
+en_JM Name of weekday 07 (Gregorian Calendar) Sunday
+en_JM Name of weekday 01 (Islamic Calendar) Monday
+en_JM Name of weekday 02 (Islamic Calendar) Tuesday
+en_JM Name of weekday 03 (Islamic Calendar) Wednesday
+en_JM Name of weekday 04 (Islamic Calendar) Thursday
+en_JM Name of weekday 05 (Islamic Calendar) Friday
+en_JM Name of weekday 06 (Islamic Calendar) Saturday
+en_JM Name of weekday 07 (Islamic Calendar) Sunday
+en_MH Language endonym English
+en_MH Country endonym Marshall Islands
+en_MH Floating Point Number -123,456,789.012
+en_MH Percent value -1,234.5679%
+en_MH Currency value €1,234.56
+en_MH Negative Currency value (€1,234.56)
+en_MH Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_MH Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_MH Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_MH Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_MH Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_MH Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_MH Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_MH Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_MH Name of month 01 (Gregorian Calendar) January
+en_MH Name of month 02 (Gregorian Calendar) February
+en_MH Name of month 03 (Gregorian Calendar) March
+en_MH Name of month 04 (Gregorian Calendar) April
+en_MH Name of month 05 (Gregorian Calendar) May
+en_MH Name of month 06 (Gregorian Calendar) June
+en_MH Name of month 07 (Gregorian Calendar) July
+en_MH Name of month 08 (Gregorian Calendar) August
+en_MH Name of month 09 (Gregorian Calendar) September
+en_MH Name of month 10 (Gregorian Calendar) October
+en_MH Name of month 11 (Gregorian Calendar) November
+en_MH Name of month 12 (Gregorian Calendar) December
+en_MH Name of month 01 (Islamic Calendar) Muharram
+en_MH Name of month 02 (Islamic Calendar) Safar
+en_MH Name of month 03 (Islamic Calendar) Rabiʻ I
+en_MH Name of month 04 (Islamic Calendar) Rabiʻ II
+en_MH Name of month 05 (Islamic Calendar) Jumada I
+en_MH Name of month 06 (Islamic Calendar) Jumada II
+en_MH Name of month 07 (Islamic Calendar) Rajab
+en_MH Name of month 08 (Islamic Calendar) Shaʻban
+en_MH Name of month 09 (Islamic Calendar) Ramadan
+en_MH Name of month 10 (Islamic Calendar) Shawwal
+en_MH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_MH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_MH Name of weekday 01 (Gregorian Calendar) Monday
+en_MH Name of weekday 02 (Gregorian Calendar) Tuesday
+en_MH Name of weekday 03 (Gregorian Calendar) Wednesday
+en_MH Name of weekday 04 (Gregorian Calendar) Thursday
+en_MH Name of weekday 05 (Gregorian Calendar) Friday
+en_MH Name of weekday 06 (Gregorian Calendar) Saturday
+en_MH Name of weekday 07 (Gregorian Calendar) Sunday
+en_MH Name of weekday 01 (Islamic Calendar) Monday
+en_MH Name of weekday 02 (Islamic Calendar) Tuesday
+en_MH Name of weekday 03 (Islamic Calendar) Wednesday
+en_MH Name of weekday 04 (Islamic Calendar) Thursday
+en_MH Name of weekday 05 (Islamic Calendar) Friday
+en_MH Name of weekday 06 (Islamic Calendar) Saturday
+en_MH Name of weekday 07 (Islamic Calendar) Sunday
+en_MT Language endonym English
+en_MT Country endonym Malta
+en_MT Floating Point Number -123,456,789.012
+en_MT Percent value -1,234.5679%
+en_MT Currency value €1,234.56
+en_MT Negative Currency value -€1,234.56
+en_MT Date and time short (Gregorian Calendar) 21/07/2008 12:31
+en_MT Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00
+en_MT Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 GMT+00:00
+en_MT Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 GMT+00:00
+en_MT Date and time short (Islamic Calendar) 18/07/1429 12:31
+en_MT Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+en_MT Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+en_MT Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 GMT+00:00
+en_MT Name of month 01 (Gregorian Calendar) January
+en_MT Name of month 02 (Gregorian Calendar) February
+en_MT Name of month 03 (Gregorian Calendar) March
+en_MT Name of month 04 (Gregorian Calendar) April
+en_MT Name of month 05 (Gregorian Calendar) May
+en_MT Name of month 06 (Gregorian Calendar) June
+en_MT Name of month 07 (Gregorian Calendar) July
+en_MT Name of month 08 (Gregorian Calendar) August
+en_MT Name of month 09 (Gregorian Calendar) September
+en_MT Name of month 10 (Gregorian Calendar) October
+en_MT Name of month 11 (Gregorian Calendar) November
+en_MT Name of month 12 (Gregorian Calendar) December
+en_MT Name of month 01 (Islamic Calendar) Muharram
+en_MT Name of month 02 (Islamic Calendar) Safar
+en_MT Name of month 03 (Islamic Calendar) Rabiʻ I
+en_MT Name of month 04 (Islamic Calendar) Rabiʻ II
+en_MT Name of month 05 (Islamic Calendar) Jumada I
+en_MT Name of month 06 (Islamic Calendar) Jumada II
+en_MT Name of month 07 (Islamic Calendar) Rajab
+en_MT Name of month 08 (Islamic Calendar) Shaʻban
+en_MT Name of month 09 (Islamic Calendar) Ramadan
+en_MT Name of month 10 (Islamic Calendar) Shawwal
+en_MT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_MT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_MT Name of weekday 01 (Gregorian Calendar) Monday
+en_MT Name of weekday 02 (Gregorian Calendar) Tuesday
+en_MT Name of weekday 03 (Gregorian Calendar) Wednesday
+en_MT Name of weekday 04 (Gregorian Calendar) Thursday
+en_MT Name of weekday 05 (Gregorian Calendar) Friday
+en_MT Name of weekday 06 (Gregorian Calendar) Saturday
+en_MT Name of weekday 07 (Gregorian Calendar) Sunday
+en_MT Name of weekday 01 (Islamic Calendar) Monday
+en_MT Name of weekday 02 (Islamic Calendar) Tuesday
+en_MT Name of weekday 03 (Islamic Calendar) Wednesday
+en_MT Name of weekday 04 (Islamic Calendar) Thursday
+en_MT Name of weekday 05 (Islamic Calendar) Friday
+en_MT Name of weekday 06 (Islamic Calendar) Saturday
+en_MT Name of weekday 07 (Islamic Calendar) Sunday
+en_NA Language endonym English
+en_NA Country endonym Namibia
+en_NA Floating Point Number -123,456,789.012
+en_NA Percent value -1,234.5679%
+en_NA Currency value €1,234.56
+en_NA Negative Currency value -€1,234.56
+en_NA Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_NA Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_NA Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_NA Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_NA Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_NA Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_NA Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_NA Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_NA Name of month 01 (Gregorian Calendar) January
+en_NA Name of month 02 (Gregorian Calendar) February
+en_NA Name of month 03 (Gregorian Calendar) March
+en_NA Name of month 04 (Gregorian Calendar) April
+en_NA Name of month 05 (Gregorian Calendar) May
+en_NA Name of month 06 (Gregorian Calendar) June
+en_NA Name of month 07 (Gregorian Calendar) July
+en_NA Name of month 08 (Gregorian Calendar) August
+en_NA Name of month 09 (Gregorian Calendar) September
+en_NA Name of month 10 (Gregorian Calendar) October
+en_NA Name of month 11 (Gregorian Calendar) November
+en_NA Name of month 12 (Gregorian Calendar) December
+en_NA Name of month 01 (Islamic Calendar) Muharram
+en_NA Name of month 02 (Islamic Calendar) Safar
+en_NA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_NA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_NA Name of month 05 (Islamic Calendar) Jumada I
+en_NA Name of month 06 (Islamic Calendar) Jumada II
+en_NA Name of month 07 (Islamic Calendar) Rajab
+en_NA Name of month 08 (Islamic Calendar) Shaʻban
+en_NA Name of month 09 (Islamic Calendar) Ramadan
+en_NA Name of month 10 (Islamic Calendar) Shawwal
+en_NA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_NA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_NA Name of weekday 01 (Gregorian Calendar) Monday
+en_NA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_NA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_NA Name of weekday 04 (Gregorian Calendar) Thursday
+en_NA Name of weekday 05 (Gregorian Calendar) Friday
+en_NA Name of weekday 06 (Gregorian Calendar) Saturday
+en_NA Name of weekday 07 (Gregorian Calendar) Sunday
+en_NA Name of weekday 01 (Islamic Calendar) Monday
+en_NA Name of weekday 02 (Islamic Calendar) Tuesday
+en_NA Name of weekday 03 (Islamic Calendar) Wednesday
+en_NA Name of weekday 04 (Islamic Calendar) Thursday
+en_NA Name of weekday 05 (Islamic Calendar) Friday
+en_NA Name of weekday 06 (Islamic Calendar) Saturday
+en_NA Name of weekday 07 (Islamic Calendar) Sunday
+en_NZ Language endonym English
+en_NZ Country endonym New Zealand
+en_NZ Floating Point Number -123,456,789.012
+en_NZ Percent value -1,234.5679%
+en_NZ Currency value €1,234.56
+en_NZ Negative Currency value -€1,234.56
+en_NZ Date and time short (Gregorian Calendar) 21/07/08 12:31 PM
+en_NZ Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00 PM
+en_NZ Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_NZ Date and time full (Gregorian Calendar) Monday, 21 July 2008 12:31:00 PM GMT+00:00
+en_NZ Date and time short (Islamic Calendar) 18/07/29 12:31 PM
+en_NZ Date and time medium (Islamic Calendar) 18/07/1429 12:31:00 PM
+en_NZ Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_NZ Date and time full (Islamic Calendar) Monday, 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_NZ Name of month 01 (Gregorian Calendar) January
+en_NZ Name of month 02 (Gregorian Calendar) February
+en_NZ Name of month 03 (Gregorian Calendar) March
+en_NZ Name of month 04 (Gregorian Calendar) April
+en_NZ Name of month 05 (Gregorian Calendar) May
+en_NZ Name of month 06 (Gregorian Calendar) June
+en_NZ Name of month 07 (Gregorian Calendar) July
+en_NZ Name of month 08 (Gregorian Calendar) August
+en_NZ Name of month 09 (Gregorian Calendar) September
+en_NZ Name of month 10 (Gregorian Calendar) October
+en_NZ Name of month 11 (Gregorian Calendar) November
+en_NZ Name of month 12 (Gregorian Calendar) December
+en_NZ Name of month 01 (Islamic Calendar) Muharram
+en_NZ Name of month 02 (Islamic Calendar) Safar
+en_NZ Name of month 03 (Islamic Calendar) Rabiʻ I
+en_NZ Name of month 04 (Islamic Calendar) Rabiʻ II
+en_NZ Name of month 05 (Islamic Calendar) Jumada I
+en_NZ Name of month 06 (Islamic Calendar) Jumada II
+en_NZ Name of month 07 (Islamic Calendar) Rajab
+en_NZ Name of month 08 (Islamic Calendar) Shaʻban
+en_NZ Name of month 09 (Islamic Calendar) Ramadan
+en_NZ Name of month 10 (Islamic Calendar) Shawwal
+en_NZ Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_NZ Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_NZ Name of weekday 01 (Gregorian Calendar) Monday
+en_NZ Name of weekday 02 (Gregorian Calendar) Tuesday
+en_NZ Name of weekday 03 (Gregorian Calendar) Wednesday
+en_NZ Name of weekday 04 (Gregorian Calendar) Thursday
+en_NZ Name of weekday 05 (Gregorian Calendar) Friday
+en_NZ Name of weekday 06 (Gregorian Calendar) Saturday
+en_NZ Name of weekday 07 (Gregorian Calendar) Sunday
+en_NZ Name of weekday 01 (Islamic Calendar) Monday
+en_NZ Name of weekday 02 (Islamic Calendar) Tuesday
+en_NZ Name of weekday 03 (Islamic Calendar) Wednesday
+en_NZ Name of weekday 04 (Islamic Calendar) Thursday
+en_NZ Name of weekday 05 (Islamic Calendar) Friday
+en_NZ Name of weekday 06 (Islamic Calendar) Saturday
+en_NZ Name of weekday 07 (Islamic Calendar) Sunday
+en_PH Language endonym English
+en_PH Country endonym Philippines
+en_PH Floating Point Number -123,456,789.012
+en_PH Percent value -1,234.5679%
+en_PH Currency value €1,234.56
+en_PH Negative Currency value (€1,234.56)
+en_PH Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_PH Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_PH Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_PH Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_PH Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_PH Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_PH Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PH Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PH Name of month 01 (Gregorian Calendar) January
+en_PH Name of month 02 (Gregorian Calendar) February
+en_PH Name of month 03 (Gregorian Calendar) March
+en_PH Name of month 04 (Gregorian Calendar) April
+en_PH Name of month 05 (Gregorian Calendar) May
+en_PH Name of month 06 (Gregorian Calendar) June
+en_PH Name of month 07 (Gregorian Calendar) July
+en_PH Name of month 08 (Gregorian Calendar) August
+en_PH Name of month 09 (Gregorian Calendar) September
+en_PH Name of month 10 (Gregorian Calendar) October
+en_PH Name of month 11 (Gregorian Calendar) November
+en_PH Name of month 12 (Gregorian Calendar) December
+en_PH Name of month 01 (Islamic Calendar) Muharram
+en_PH Name of month 02 (Islamic Calendar) Safar
+en_PH Name of month 03 (Islamic Calendar) Rabiʻ I
+en_PH Name of month 04 (Islamic Calendar) Rabiʻ II
+en_PH Name of month 05 (Islamic Calendar) Jumada I
+en_PH Name of month 06 (Islamic Calendar) Jumada II
+en_PH Name of month 07 (Islamic Calendar) Rajab
+en_PH Name of month 08 (Islamic Calendar) Shaʻban
+en_PH Name of month 09 (Islamic Calendar) Ramadan
+en_PH Name of month 10 (Islamic Calendar) Shawwal
+en_PH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_PH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_PH Name of weekday 01 (Gregorian Calendar) Monday
+en_PH Name of weekday 02 (Gregorian Calendar) Tuesday
+en_PH Name of weekday 03 (Gregorian Calendar) Wednesday
+en_PH Name of weekday 04 (Gregorian Calendar) Thursday
+en_PH Name of weekday 05 (Gregorian Calendar) Friday
+en_PH Name of weekday 06 (Gregorian Calendar) Saturday
+en_PH Name of weekday 07 (Gregorian Calendar) Sunday
+en_PH Name of weekday 01 (Islamic Calendar) Monday
+en_PH Name of weekday 02 (Islamic Calendar) Tuesday
+en_PH Name of weekday 03 (Islamic Calendar) Wednesday
+en_PH Name of weekday 04 (Islamic Calendar) Thursday
+en_PH Name of weekday 05 (Islamic Calendar) Friday
+en_PH Name of weekday 06 (Islamic Calendar) Saturday
+en_PH Name of weekday 07 (Islamic Calendar) Sunday
+en_PK Language endonym English
+en_PK Country endonym Pakistan
+en_PK Floating Point Number -123,456,789.012
+en_PK Percent value -1,234.5679%
+en_PK Currency value €1,234.56
+en_PK Negative Currency value (€1,234.56)
+en_PK Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_PK Date and time medium (Gregorian Calendar) 21-Jul-2008 12:31:00 PM
+en_PK Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_PK Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_PK Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_PK Date and time medium (Islamic Calendar) 18-Raj.-1429 12:31:00 PM
+en_PK Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PK Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_PK Name of month 01 (Gregorian Calendar) January
+en_PK Name of month 02 (Gregorian Calendar) February
+en_PK Name of month 03 (Gregorian Calendar) March
+en_PK Name of month 04 (Gregorian Calendar) April
+en_PK Name of month 05 (Gregorian Calendar) May
+en_PK Name of month 06 (Gregorian Calendar) June
+en_PK Name of month 07 (Gregorian Calendar) July
+en_PK Name of month 08 (Gregorian Calendar) August
+en_PK Name of month 09 (Gregorian Calendar) September
+en_PK Name of month 10 (Gregorian Calendar) October
+en_PK Name of month 11 (Gregorian Calendar) November
+en_PK Name of month 12 (Gregorian Calendar) December
+en_PK Name of month 01 (Islamic Calendar) Muharram
+en_PK Name of month 02 (Islamic Calendar) Safar
+en_PK Name of month 03 (Islamic Calendar) Rabiʻ I
+en_PK Name of month 04 (Islamic Calendar) Rabiʻ II
+en_PK Name of month 05 (Islamic Calendar) Jumada I
+en_PK Name of month 06 (Islamic Calendar) Jumada II
+en_PK Name of month 07 (Islamic Calendar) Rajab
+en_PK Name of month 08 (Islamic Calendar) Shaʻban
+en_PK Name of month 09 (Islamic Calendar) Ramadan
+en_PK Name of month 10 (Islamic Calendar) Shawwal
+en_PK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_PK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_PK Name of weekday 01 (Gregorian Calendar) Monday
+en_PK Name of weekday 02 (Gregorian Calendar) Tuesday
+en_PK Name of weekday 03 (Gregorian Calendar) Wednesday
+en_PK Name of weekday 04 (Gregorian Calendar) Thursday
+en_PK Name of weekday 05 (Gregorian Calendar) Friday
+en_PK Name of weekday 06 (Gregorian Calendar) Saturday
+en_PK Name of weekday 07 (Gregorian Calendar) Sunday
+en_PK Name of weekday 01 (Islamic Calendar) Monday
+en_PK Name of weekday 02 (Islamic Calendar) Tuesday
+en_PK Name of weekday 03 (Islamic Calendar) Wednesday
+en_PK Name of weekday 04 (Islamic Calendar) Thursday
+en_PK Name of weekday 05 (Islamic Calendar) Friday
+en_PK Name of weekday 06 (Islamic Calendar) Saturday
+en_PK Name of weekday 07 (Islamic Calendar) Sunday
+en_SG Language endonym English
+en_SG Country endonym Singapore
+en_SG Floating Point Number -123,456,789.012
+en_SG Percent value -1,234.5679%
+en_SG Currency value €1,234.56
+en_SG Negative Currency value (€1,234.56)
+en_SG Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+en_SG Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_SG Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_SG Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_SG Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+en_SG Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_SG Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_SG Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_SG Name of month 01 (Gregorian Calendar) January
+en_SG Name of month 02 (Gregorian Calendar) February
+en_SG Name of month 03 (Gregorian Calendar) March
+en_SG Name of month 04 (Gregorian Calendar) April
+en_SG Name of month 05 (Gregorian Calendar) May
+en_SG Name of month 06 (Gregorian Calendar) June
+en_SG Name of month 07 (Gregorian Calendar) July
+en_SG Name of month 08 (Gregorian Calendar) August
+en_SG Name of month 09 (Gregorian Calendar) September
+en_SG Name of month 10 (Gregorian Calendar) October
+en_SG Name of month 11 (Gregorian Calendar) November
+en_SG Name of month 12 (Gregorian Calendar) December
+en_SG Name of month 01 (Islamic Calendar) Muharram
+en_SG Name of month 02 (Islamic Calendar) Safar
+en_SG Name of month 03 (Islamic Calendar) Rabiʻ I
+en_SG Name of month 04 (Islamic Calendar) Rabiʻ II
+en_SG Name of month 05 (Islamic Calendar) Jumada I
+en_SG Name of month 06 (Islamic Calendar) Jumada II
+en_SG Name of month 07 (Islamic Calendar) Rajab
+en_SG Name of month 08 (Islamic Calendar) Shaʻban
+en_SG Name of month 09 (Islamic Calendar) Ramadan
+en_SG Name of month 10 (Islamic Calendar) Shawwal
+en_SG Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_SG Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_SG Name of weekday 01 (Gregorian Calendar) Monday
+en_SG Name of weekday 02 (Gregorian Calendar) Tuesday
+en_SG Name of weekday 03 (Gregorian Calendar) Wednesday
+en_SG Name of weekday 04 (Gregorian Calendar) Thursday
+en_SG Name of weekday 05 (Gregorian Calendar) Friday
+en_SG Name of weekday 06 (Gregorian Calendar) Saturday
+en_SG Name of weekday 07 (Gregorian Calendar) Sunday
+en_SG Name of weekday 01 (Islamic Calendar) Monday
+en_SG Name of weekday 02 (Islamic Calendar) Tuesday
+en_SG Name of weekday 03 (Islamic Calendar) Wednesday
+en_SG Name of weekday 04 (Islamic Calendar) Thursday
+en_SG Name of weekday 05 (Islamic Calendar) Friday
+en_SG Name of weekday 06 (Islamic Calendar) Saturday
+en_SG Name of weekday 07 (Islamic Calendar) Sunday
+en_TT Language endonym English
+en_TT Country endonym Trinidad and Tobago
+en_TT Floating Point Number -123,456,789.012
+en_TT Percent value -1,234.5679%
+en_TT Currency value €1,234.56
+en_TT Negative Currency value -€1,234.56
+en_TT Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_TT Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_TT Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_TT Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_TT Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_TT Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_TT Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_TT Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_TT Name of month 01 (Gregorian Calendar) January
+en_TT Name of month 02 (Gregorian Calendar) February
+en_TT Name of month 03 (Gregorian Calendar) March
+en_TT Name of month 04 (Gregorian Calendar) April
+en_TT Name of month 05 (Gregorian Calendar) May
+en_TT Name of month 06 (Gregorian Calendar) June
+en_TT Name of month 07 (Gregorian Calendar) July
+en_TT Name of month 08 (Gregorian Calendar) August
+en_TT Name of month 09 (Gregorian Calendar) September
+en_TT Name of month 10 (Gregorian Calendar) October
+en_TT Name of month 11 (Gregorian Calendar) November
+en_TT Name of month 12 (Gregorian Calendar) December
+en_TT Name of month 01 (Islamic Calendar) Muharram
+en_TT Name of month 02 (Islamic Calendar) Safar
+en_TT Name of month 03 (Islamic Calendar) Rabiʻ I
+en_TT Name of month 04 (Islamic Calendar) Rabiʻ II
+en_TT Name of month 05 (Islamic Calendar) Jumada I
+en_TT Name of month 06 (Islamic Calendar) Jumada II
+en_TT Name of month 07 (Islamic Calendar) Rajab
+en_TT Name of month 08 (Islamic Calendar) Shaʻban
+en_TT Name of month 09 (Islamic Calendar) Ramadan
+en_TT Name of month 10 (Islamic Calendar) Shawwal
+en_TT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_TT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_TT Name of weekday 01 (Gregorian Calendar) Monday
+en_TT Name of weekday 02 (Gregorian Calendar) Tuesday
+en_TT Name of weekday 03 (Gregorian Calendar) Wednesday
+en_TT Name of weekday 04 (Gregorian Calendar) Thursday
+en_TT Name of weekday 05 (Gregorian Calendar) Friday
+en_TT Name of weekday 06 (Gregorian Calendar) Saturday
+en_TT Name of weekday 07 (Gregorian Calendar) Sunday
+en_TT Name of weekday 01 (Islamic Calendar) Monday
+en_TT Name of weekday 02 (Islamic Calendar) Tuesday
+en_TT Name of weekday 03 (Islamic Calendar) Wednesday
+en_TT Name of weekday 04 (Islamic Calendar) Thursday
+en_TT Name of weekday 05 (Islamic Calendar) Friday
+en_TT Name of weekday 06 (Islamic Calendar) Saturday
+en_TT Name of weekday 07 (Islamic Calendar) Sunday
+en_US Language endonym English
+en_US Country endonym United States
+en_US Floating Point Number -123,456,789.012
+en_US Percent value -1,234.5679%
+en_US Currency value €1,234.56
+en_US Negative Currency value (€1,234.56)
+en_US Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_US Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_US Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_US Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_US Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_US Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_US Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US Name of month 01 (Gregorian Calendar) January
+en_US Name of month 02 (Gregorian Calendar) February
+en_US Name of month 03 (Gregorian Calendar) March
+en_US Name of month 04 (Gregorian Calendar) April
+en_US Name of month 05 (Gregorian Calendar) May
+en_US Name of month 06 (Gregorian Calendar) June
+en_US Name of month 07 (Gregorian Calendar) July
+en_US Name of month 08 (Gregorian Calendar) August
+en_US Name of month 09 (Gregorian Calendar) September
+en_US Name of month 10 (Gregorian Calendar) October
+en_US Name of month 11 (Gregorian Calendar) November
+en_US Name of month 12 (Gregorian Calendar) December
+en_US Name of month 01 (Islamic Calendar) Muharram
+en_US Name of month 02 (Islamic Calendar) Safar
+en_US Name of month 03 (Islamic Calendar) Rabiʻ I
+en_US Name of month 04 (Islamic Calendar) Rabiʻ II
+en_US Name of month 05 (Islamic Calendar) Jumada I
+en_US Name of month 06 (Islamic Calendar) Jumada II
+en_US Name of month 07 (Islamic Calendar) Rajab
+en_US Name of month 08 (Islamic Calendar) Shaʻban
+en_US Name of month 09 (Islamic Calendar) Ramadan
+en_US Name of month 10 (Islamic Calendar) Shawwal
+en_US Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_US Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_US Name of weekday 01 (Gregorian Calendar) Monday
+en_US Name of weekday 02 (Gregorian Calendar) Tuesday
+en_US Name of weekday 03 (Gregorian Calendar) Wednesday
+en_US Name of weekday 04 (Gregorian Calendar) Thursday
+en_US Name of weekday 05 (Gregorian Calendar) Friday
+en_US Name of weekday 06 (Gregorian Calendar) Saturday
+en_US Name of weekday 07 (Gregorian Calendar) Sunday
+en_US Name of weekday 01 (Islamic Calendar) Monday
+en_US Name of weekday 02 (Islamic Calendar) Tuesday
+en_US Name of weekday 03 (Islamic Calendar) Wednesday
+en_US Name of weekday 04 (Islamic Calendar) Thursday
+en_US Name of weekday 05 (Islamic Calendar) Friday
+en_US Name of weekday 06 (Islamic Calendar) Saturday
+en_US Name of weekday 07 (Islamic Calendar) Sunday
+en_US_POSIX Language endonym English
+en_US_POSIX Country endonym United States
+en_US_POSIX Floating Point Number -123456789.01234
+en_US_POSIX Percent value -1234.5679%
+en_US_POSIX Currency value € 1234.56
+en_US_POSIX Negative Currency value -€ 1234.56
+en_US_POSIX Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_US_POSIX Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_US_POSIX Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_US_POSIX Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_US_POSIX Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US_POSIX Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_US_POSIX Name of month 01 (Gregorian Calendar) January
+en_US_POSIX Name of month 02 (Gregorian Calendar) February
+en_US_POSIX Name of month 03 (Gregorian Calendar) March
+en_US_POSIX Name of month 04 (Gregorian Calendar) April
+en_US_POSIX Name of month 05 (Gregorian Calendar) May
+en_US_POSIX Name of month 06 (Gregorian Calendar) June
+en_US_POSIX Name of month 07 (Gregorian Calendar) July
+en_US_POSIX Name of month 08 (Gregorian Calendar) August
+en_US_POSIX Name of month 09 (Gregorian Calendar) September
+en_US_POSIX Name of month 10 (Gregorian Calendar) October
+en_US_POSIX Name of month 11 (Gregorian Calendar) November
+en_US_POSIX Name of month 12 (Gregorian Calendar) December
+en_US_POSIX Name of month 01 (Islamic Calendar) Muharram
+en_US_POSIX Name of month 02 (Islamic Calendar) Safar
+en_US_POSIX Name of month 03 (Islamic Calendar) Rabiʻ I
+en_US_POSIX Name of month 04 (Islamic Calendar) Rabiʻ II
+en_US_POSIX Name of month 05 (Islamic Calendar) Jumada I
+en_US_POSIX Name of month 06 (Islamic Calendar) Jumada II
+en_US_POSIX Name of month 07 (Islamic Calendar) Rajab
+en_US_POSIX Name of month 08 (Islamic Calendar) Shaʻban
+en_US_POSIX Name of month 09 (Islamic Calendar) Ramadan
+en_US_POSIX Name of month 10 (Islamic Calendar) Shawwal
+en_US_POSIX Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_US_POSIX Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_US_POSIX Name of weekday 01 (Gregorian Calendar) Monday
+en_US_POSIX Name of weekday 02 (Gregorian Calendar) Tuesday
+en_US_POSIX Name of weekday 03 (Gregorian Calendar) Wednesday
+en_US_POSIX Name of weekday 04 (Gregorian Calendar) Thursday
+en_US_POSIX Name of weekday 05 (Gregorian Calendar) Friday
+en_US_POSIX Name of weekday 06 (Gregorian Calendar) Saturday
+en_US_POSIX Name of weekday 07 (Gregorian Calendar) Sunday
+en_US_POSIX Name of weekday 01 (Islamic Calendar) Monday
+en_US_POSIX Name of weekday 02 (Islamic Calendar) Tuesday
+en_US_POSIX Name of weekday 03 (Islamic Calendar) Wednesday
+en_US_POSIX Name of weekday 04 (Islamic Calendar) Thursday
+en_US_POSIX Name of weekday 05 (Islamic Calendar) Friday
+en_US_POSIX Name of weekday 06 (Islamic Calendar) Saturday
+en_US_POSIX Name of weekday 07 (Islamic Calendar) Sunday
+en_VI Language endonym English
+en_VI Country endonym U.S. Virgin Islands
+en_VI Floating Point Number -123,456,789.012
+en_VI Percent value -1,234.5679%
+en_VI Currency value €1,234.56
+en_VI Negative Currency value (€1,234.56)
+en_VI Date and time short (Gregorian Calendar) 7/21/08 12:31 PM
+en_VI Date and time medium (Gregorian Calendar) Jul 21, 2008 12:31:00 PM
+en_VI Date and time long (Gregorian Calendar) July 21, 2008 12:31:00 PM GMT+00:00
+en_VI Date and time full (Gregorian Calendar) Monday, July 21, 2008 12:31:00 PM GMT+00:00
+en_VI Date and time short (Islamic Calendar) 7/18/29 12:31 PM
+en_VI Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 PM
+en_VI Date and time long (Islamic Calendar) Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_VI Date and time full (Islamic Calendar) Monday, Rajab 18, 1429 12:31:00 PM GMT+00:00
+en_VI Name of month 01 (Gregorian Calendar) January
+en_VI Name of month 02 (Gregorian Calendar) February
+en_VI Name of month 03 (Gregorian Calendar) March
+en_VI Name of month 04 (Gregorian Calendar) April
+en_VI Name of month 05 (Gregorian Calendar) May
+en_VI Name of month 06 (Gregorian Calendar) June
+en_VI Name of month 07 (Gregorian Calendar) July
+en_VI Name of month 08 (Gregorian Calendar) August
+en_VI Name of month 09 (Gregorian Calendar) September
+en_VI Name of month 10 (Gregorian Calendar) October
+en_VI Name of month 11 (Gregorian Calendar) November
+en_VI Name of month 12 (Gregorian Calendar) December
+en_VI Name of month 01 (Islamic Calendar) Muharram
+en_VI Name of month 02 (Islamic Calendar) Safar
+en_VI Name of month 03 (Islamic Calendar) Rabiʻ I
+en_VI Name of month 04 (Islamic Calendar) Rabiʻ II
+en_VI Name of month 05 (Islamic Calendar) Jumada I
+en_VI Name of month 06 (Islamic Calendar) Jumada II
+en_VI Name of month 07 (Islamic Calendar) Rajab
+en_VI Name of month 08 (Islamic Calendar) Shaʻban
+en_VI Name of month 09 (Islamic Calendar) Ramadan
+en_VI Name of month 10 (Islamic Calendar) Shawwal
+en_VI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_VI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_VI Name of weekday 01 (Gregorian Calendar) Monday
+en_VI Name of weekday 02 (Gregorian Calendar) Tuesday
+en_VI Name of weekday 03 (Gregorian Calendar) Wednesday
+en_VI Name of weekday 04 (Gregorian Calendar) Thursday
+en_VI Name of weekday 05 (Gregorian Calendar) Friday
+en_VI Name of weekday 06 (Gregorian Calendar) Saturday
+en_VI Name of weekday 07 (Gregorian Calendar) Sunday
+en_VI Name of weekday 01 (Islamic Calendar) Monday
+en_VI Name of weekday 02 (Islamic Calendar) Tuesday
+en_VI Name of weekday 03 (Islamic Calendar) Wednesday
+en_VI Name of weekday 04 (Islamic Calendar) Thursday
+en_VI Name of weekday 05 (Islamic Calendar) Friday
+en_VI Name of weekday 06 (Islamic Calendar) Saturday
+en_VI Name of weekday 07 (Islamic Calendar) Sunday
+en_ZA Language endonym English
+en_ZA Country endonym South Africa
+en_ZA Floating Point Number -123 456 789,012
+en_ZA Percent value -1 234,5679%
+en_ZA Currency value €1 234,56
+en_ZA Negative Currency value -€1 234,56
+en_ZA Date and time short (Gregorian Calendar) 2008/07/21 12:31 PM
+en_ZA Date and time medium (Gregorian Calendar) 21 Jul 2008 12:31:00 PM
+en_ZA Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_ZA Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_ZA Date and time short (Islamic Calendar) 1429/07/18 12:31 PM
+en_ZA Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00 PM
+en_ZA Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZA Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZA Name of month 01 (Gregorian Calendar) January
+en_ZA Name of month 02 (Gregorian Calendar) February
+en_ZA Name of month 03 (Gregorian Calendar) March
+en_ZA Name of month 04 (Gregorian Calendar) April
+en_ZA Name of month 05 (Gregorian Calendar) May
+en_ZA Name of month 06 (Gregorian Calendar) June
+en_ZA Name of month 07 (Gregorian Calendar) July
+en_ZA Name of month 08 (Gregorian Calendar) August
+en_ZA Name of month 09 (Gregorian Calendar) September
+en_ZA Name of month 10 (Gregorian Calendar) October
+en_ZA Name of month 11 (Gregorian Calendar) November
+en_ZA Name of month 12 (Gregorian Calendar) December
+en_ZA Name of month 01 (Islamic Calendar) Muharram
+en_ZA Name of month 02 (Islamic Calendar) Safar
+en_ZA Name of month 03 (Islamic Calendar) Rabiʻ I
+en_ZA Name of month 04 (Islamic Calendar) Rabiʻ II
+en_ZA Name of month 05 (Islamic Calendar) Jumada I
+en_ZA Name of month 06 (Islamic Calendar) Jumada II
+en_ZA Name of month 07 (Islamic Calendar) Rajab
+en_ZA Name of month 08 (Islamic Calendar) Shaʻban
+en_ZA Name of month 09 (Islamic Calendar) Ramadan
+en_ZA Name of month 10 (Islamic Calendar) Shawwal
+en_ZA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_ZA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_ZA Name of weekday 01 (Gregorian Calendar) Monday
+en_ZA Name of weekday 02 (Gregorian Calendar) Tuesday
+en_ZA Name of weekday 03 (Gregorian Calendar) Wednesday
+en_ZA Name of weekday 04 (Gregorian Calendar) Thursday
+en_ZA Name of weekday 05 (Gregorian Calendar) Friday
+en_ZA Name of weekday 06 (Gregorian Calendar) Saturday
+en_ZA Name of weekday 07 (Gregorian Calendar) Sunday
+en_ZA Name of weekday 01 (Islamic Calendar) Monday
+en_ZA Name of weekday 02 (Islamic Calendar) Tuesday
+en_ZA Name of weekday 03 (Islamic Calendar) Wednesday
+en_ZA Name of weekday 04 (Islamic Calendar) Thursday
+en_ZA Name of weekday 05 (Islamic Calendar) Friday
+en_ZA Name of weekday 06 (Islamic Calendar) Saturday
+en_ZA Name of weekday 07 (Islamic Calendar) Sunday
+en_ZW Language endonym English
+en_ZW Country endonym Zimbabwe
+en_ZW Floating Point Number -123,456,789.012
+en_ZW Percent value -1,234.5679%
+en_ZW Currency value €1,234.56
+en_ZW Negative Currency value -€1,234.56
+en_ZW Date and time short (Gregorian Calendar) 21/7/2008 12:31 PM
+en_ZW Date and time medium (Gregorian Calendar) 21 Jul,2008 12:31:00 PM
+en_ZW Date and time long (Gregorian Calendar) 21 July 2008 12:31:00 PM GMT+00:00
+en_ZW Date and time full (Gregorian Calendar) Monday 21 July 2008 12:31:00 PM GMT+00:00
+en_ZW Date and time short (Islamic Calendar) 18/7/1429 12:31 PM
+en_ZW Date and time medium (Islamic Calendar) 18 Raj.,1429 12:31:00 PM
+en_ZW Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZW Date and time full (Islamic Calendar) Monday 18 Rajab 1429 12:31:00 PM GMT+00:00
+en_ZW Name of month 01 (Gregorian Calendar) January
+en_ZW Name of month 02 (Gregorian Calendar) February
+en_ZW Name of month 03 (Gregorian Calendar) March
+en_ZW Name of month 04 (Gregorian Calendar) April
+en_ZW Name of month 05 (Gregorian Calendar) May
+en_ZW Name of month 06 (Gregorian Calendar) June
+en_ZW Name of month 07 (Gregorian Calendar) July
+en_ZW Name of month 08 (Gregorian Calendar) August
+en_ZW Name of month 09 (Gregorian Calendar) September
+en_ZW Name of month 10 (Gregorian Calendar) October
+en_ZW Name of month 11 (Gregorian Calendar) November
+en_ZW Name of month 12 (Gregorian Calendar) December
+en_ZW Name of month 01 (Islamic Calendar) Muharram
+en_ZW Name of month 02 (Islamic Calendar) Safar
+en_ZW Name of month 03 (Islamic Calendar) Rabiʻ I
+en_ZW Name of month 04 (Islamic Calendar) Rabiʻ II
+en_ZW Name of month 05 (Islamic Calendar) Jumada I
+en_ZW Name of month 06 (Islamic Calendar) Jumada II
+en_ZW Name of month 07 (Islamic Calendar) Rajab
+en_ZW Name of month 08 (Islamic Calendar) Shaʻban
+en_ZW Name of month 09 (Islamic Calendar) Ramadan
+en_ZW Name of month 10 (Islamic Calendar) Shawwal
+en_ZW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+en_ZW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+en_ZW Name of weekday 01 (Gregorian Calendar) Monday
+en_ZW Name of weekday 02 (Gregorian Calendar) Tuesday
+en_ZW Name of weekday 03 (Gregorian Calendar) Wednesday
+en_ZW Name of weekday 04 (Gregorian Calendar) Thursday
+en_ZW Name of weekday 05 (Gregorian Calendar) Friday
+en_ZW Name of weekday 06 (Gregorian Calendar) Saturday
+en_ZW Name of weekday 07 (Gregorian Calendar) Sunday
+en_ZW Name of weekday 01 (Islamic Calendar) Monday
+en_ZW Name of weekday 02 (Islamic Calendar) Tuesday
+en_ZW Name of weekday 03 (Islamic Calendar) Wednesday
+en_ZW Name of weekday 04 (Islamic Calendar) Thursday
+en_ZW Name of weekday 05 (Islamic Calendar) Friday
+en_ZW Name of weekday 06 (Islamic Calendar) Saturday
+en_ZW Name of weekday 07 (Islamic Calendar) Sunday
+es Language endonym español
+es Country endonym
+es Floating Point Number -123.456.789,012
+es Percent value -1.234,5679%
+es Currency value € 1.234,56
+es Negative Currency value -€ 1.234,56
+es Date and time short (Gregorian Calendar) 21/07/08 12:31
+es Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es Date and time short (Islamic Calendar) 18/07/29 12:31
+es Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es Name of month 01 (Gregorian Calendar) enero
+es Name of month 02 (Gregorian Calendar) febrero
+es Name of month 03 (Gregorian Calendar) marzo
+es Name of month 04 (Gregorian Calendar) abril
+es Name of month 05 (Gregorian Calendar) mayo
+es Name of month 06 (Gregorian Calendar) junio
+es Name of month 07 (Gregorian Calendar) julio
+es Name of month 08 (Gregorian Calendar) agosto
+es Name of month 09 (Gregorian Calendar) septiembre
+es Name of month 10 (Gregorian Calendar) octubre
+es Name of month 11 (Gregorian Calendar) noviembre
+es Name of month 12 (Gregorian Calendar) diciembre
+es Name of month 01 (Islamic Calendar) Muharram
+es Name of month 02 (Islamic Calendar) Safar
+es Name of month 03 (Islamic Calendar) Rabiʻ I
+es Name of month 04 (Islamic Calendar) Rabiʻ II
+es Name of month 05 (Islamic Calendar) Jumada I
+es Name of month 06 (Islamic Calendar) Jumada II
+es Name of month 07 (Islamic Calendar) Rajab
+es Name of month 08 (Islamic Calendar) Shaʻban
+es Name of month 09 (Islamic Calendar) Ramadan
+es Name of month 10 (Islamic Calendar) Shawwal
+es Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es Name of weekday 01 (Gregorian Calendar) lunes
+es Name of weekday 02 (Gregorian Calendar) martes
+es Name of weekday 03 (Gregorian Calendar) miércoles
+es Name of weekday 04 (Gregorian Calendar) jueves
+es Name of weekday 05 (Gregorian Calendar) viernes
+es Name of weekday 06 (Gregorian Calendar) sábado
+es Name of weekday 07 (Gregorian Calendar) domingo
+es Name of weekday 01 (Islamic Calendar) lunes
+es Name of weekday 02 (Islamic Calendar) martes
+es Name of weekday 03 (Islamic Calendar) miércoles
+es Name of weekday 04 (Islamic Calendar) jueves
+es Name of weekday 05 (Islamic Calendar) viernes
+es Name of weekday 06 (Islamic Calendar) sábado
+es Name of weekday 07 (Islamic Calendar) domingo
+es_AR Language endonym español
+es_AR Country endonym Argentina
+es_AR Floating Point Number -123.456.789,012
+es_AR Percent value -1.234,5679%
+es_AR Currency value € 1.234,56
+es_AR Negative Currency value -€ 1.234,56
+es_AR Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_AR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_AR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_AR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12h'31:00 GMT+00:00
+es_AR Date and time short (Islamic Calendar) 18/07/29 12:31
+es_AR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_AR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_AR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12h'31:00 GMT+00:00
+es_AR Name of month 01 (Gregorian Calendar) enero
+es_AR Name of month 02 (Gregorian Calendar) febrero
+es_AR Name of month 03 (Gregorian Calendar) marzo
+es_AR Name of month 04 (Gregorian Calendar) abril
+es_AR Name of month 05 (Gregorian Calendar) mayo
+es_AR Name of month 06 (Gregorian Calendar) junio
+es_AR Name of month 07 (Gregorian Calendar) julio
+es_AR Name of month 08 (Gregorian Calendar) agosto
+es_AR Name of month 09 (Gregorian Calendar) septiembre
+es_AR Name of month 10 (Gregorian Calendar) octubre
+es_AR Name of month 11 (Gregorian Calendar) noviembre
+es_AR Name of month 12 (Gregorian Calendar) diciembre
+es_AR Name of month 01 (Islamic Calendar) Muharram
+es_AR Name of month 02 (Islamic Calendar) Safar
+es_AR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_AR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_AR Name of month 05 (Islamic Calendar) Jumada I
+es_AR Name of month 06 (Islamic Calendar) Jumada II
+es_AR Name of month 07 (Islamic Calendar) Rajab
+es_AR Name of month 08 (Islamic Calendar) Shaʻban
+es_AR Name of month 09 (Islamic Calendar) Ramadan
+es_AR Name of month 10 (Islamic Calendar) Shawwal
+es_AR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_AR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_AR Name of weekday 01 (Gregorian Calendar) lunes
+es_AR Name of weekday 02 (Gregorian Calendar) martes
+es_AR Name of weekday 03 (Gregorian Calendar) miércoles
+es_AR Name of weekday 04 (Gregorian Calendar) jueves
+es_AR Name of weekday 05 (Gregorian Calendar) viernes
+es_AR Name of weekday 06 (Gregorian Calendar) sábado
+es_AR Name of weekday 07 (Gregorian Calendar) domingo
+es_AR Name of weekday 01 (Islamic Calendar) lunes
+es_AR Name of weekday 02 (Islamic Calendar) martes
+es_AR Name of weekday 03 (Islamic Calendar) miércoles
+es_AR Name of weekday 04 (Islamic Calendar) jueves
+es_AR Name of weekday 05 (Islamic Calendar) viernes
+es_AR Name of weekday 06 (Islamic Calendar) sábado
+es_AR Name of weekday 07 (Islamic Calendar) domingo
+es_BO Language endonym español
+es_BO Country endonym Bolivia
+es_BO Floating Point Number -123.456.789,012
+es_BO Percent value -1.234,5679%
+es_BO Currency value € 1.234,56
+es_BO Negative Currency value -€ 1.234,56
+es_BO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_BO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_BO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_BO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_BO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_BO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_BO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_BO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_BO Name of month 01 (Gregorian Calendar) enero
+es_BO Name of month 02 (Gregorian Calendar) febrero
+es_BO Name of month 03 (Gregorian Calendar) marzo
+es_BO Name of month 04 (Gregorian Calendar) abril
+es_BO Name of month 05 (Gregorian Calendar) mayo
+es_BO Name of month 06 (Gregorian Calendar) junio
+es_BO Name of month 07 (Gregorian Calendar) julio
+es_BO Name of month 08 (Gregorian Calendar) agosto
+es_BO Name of month 09 (Gregorian Calendar) septiembre
+es_BO Name of month 10 (Gregorian Calendar) octubre
+es_BO Name of month 11 (Gregorian Calendar) noviembre
+es_BO Name of month 12 (Gregorian Calendar) diciembre
+es_BO Name of month 01 (Islamic Calendar) Muharram
+es_BO Name of month 02 (Islamic Calendar) Safar
+es_BO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_BO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_BO Name of month 05 (Islamic Calendar) Jumada I
+es_BO Name of month 06 (Islamic Calendar) Jumada II
+es_BO Name of month 07 (Islamic Calendar) Rajab
+es_BO Name of month 08 (Islamic Calendar) Shaʻban
+es_BO Name of month 09 (Islamic Calendar) Ramadan
+es_BO Name of month 10 (Islamic Calendar) Shawwal
+es_BO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_BO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_BO Name of weekday 01 (Gregorian Calendar) lunes
+es_BO Name of weekday 02 (Gregorian Calendar) martes
+es_BO Name of weekday 03 (Gregorian Calendar) miércoles
+es_BO Name of weekday 04 (Gregorian Calendar) jueves
+es_BO Name of weekday 05 (Gregorian Calendar) viernes
+es_BO Name of weekday 06 (Gregorian Calendar) sábado
+es_BO Name of weekday 07 (Gregorian Calendar) domingo
+es_BO Name of weekday 01 (Islamic Calendar) lunes
+es_BO Name of weekday 02 (Islamic Calendar) martes
+es_BO Name of weekday 03 (Islamic Calendar) miércoles
+es_BO Name of weekday 04 (Islamic Calendar) jueves
+es_BO Name of weekday 05 (Islamic Calendar) viernes
+es_BO Name of weekday 06 (Islamic Calendar) sábado
+es_BO Name of weekday 07 (Islamic Calendar) domingo
+es_CL Language endonym español
+es_CL Country endonym CL
+es_CL Floating Point Number -123.456.789,012
+es_CL Percent value -1.234,5679%
+es_CL Currency value €1.234,56
+es_CL Negative Currency value €-1.234,56
+es_CL Date and time short (Gregorian Calendar) 21-07-08 12:31
+es_CL Date and time medium (Gregorian Calendar) 21-07-2008 12:31:00
+es_CL Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CL Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CL Date and time short (Islamic Calendar) 18-07-29 12:31
+es_CL Date and time medium (Islamic Calendar) 18-07-1429 12:31:00
+es_CL Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CL Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CL Name of month 01 (Gregorian Calendar) enero
+es_CL Name of month 02 (Gregorian Calendar) febrero
+es_CL Name of month 03 (Gregorian Calendar) marzo
+es_CL Name of month 04 (Gregorian Calendar) abril
+es_CL Name of month 05 (Gregorian Calendar) mayo
+es_CL Name of month 06 (Gregorian Calendar) junio
+es_CL Name of month 07 (Gregorian Calendar) julio
+es_CL Name of month 08 (Gregorian Calendar) agosto
+es_CL Name of month 09 (Gregorian Calendar) septiembre
+es_CL Name of month 10 (Gregorian Calendar) octubre
+es_CL Name of month 11 (Gregorian Calendar) noviembre
+es_CL Name of month 12 (Gregorian Calendar) diciembre
+es_CL Name of month 01 (Islamic Calendar) Muharram
+es_CL Name of month 02 (Islamic Calendar) Safar
+es_CL Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CL Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CL Name of month 05 (Islamic Calendar) Jumada I
+es_CL Name of month 06 (Islamic Calendar) Jumada II
+es_CL Name of month 07 (Islamic Calendar) Rajab
+es_CL Name of month 08 (Islamic Calendar) Shaʻban
+es_CL Name of month 09 (Islamic Calendar) Ramadan
+es_CL Name of month 10 (Islamic Calendar) Shawwal
+es_CL Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CL Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CL Name of weekday 01 (Gregorian Calendar) lunes
+es_CL Name of weekday 02 (Gregorian Calendar) martes
+es_CL Name of weekday 03 (Gregorian Calendar) miércoles
+es_CL Name of weekday 04 (Gregorian Calendar) jueves
+es_CL Name of weekday 05 (Gregorian Calendar) viernes
+es_CL Name of weekday 06 (Gregorian Calendar) sábado
+es_CL Name of weekday 07 (Gregorian Calendar) domingo
+es_CL Name of weekday 01 (Islamic Calendar) lunes
+es_CL Name of weekday 02 (Islamic Calendar) martes
+es_CL Name of weekday 03 (Islamic Calendar) miércoles
+es_CL Name of weekday 04 (Islamic Calendar) jueves
+es_CL Name of weekday 05 (Islamic Calendar) viernes
+es_CL Name of weekday 06 (Islamic Calendar) sábado
+es_CL Name of weekday 07 (Islamic Calendar) domingo
+es_CO Language endonym español
+es_CO Country endonym Colombia
+es_CO Floating Point Number -123.456.789,012
+es_CO Percent value -1.234,5679%
+es_CO Currency value € 1.234,56
+es_CO Negative Currency value -€ 1.234,56
+es_CO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_CO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_CO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_CO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_CO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CO Name of month 01 (Gregorian Calendar) enero
+es_CO Name of month 02 (Gregorian Calendar) febrero
+es_CO Name of month 03 (Gregorian Calendar) marzo
+es_CO Name of month 04 (Gregorian Calendar) abril
+es_CO Name of month 05 (Gregorian Calendar) mayo
+es_CO Name of month 06 (Gregorian Calendar) junio
+es_CO Name of month 07 (Gregorian Calendar) julio
+es_CO Name of month 08 (Gregorian Calendar) agosto
+es_CO Name of month 09 (Gregorian Calendar) septiembre
+es_CO Name of month 10 (Gregorian Calendar) octubre
+es_CO Name of month 11 (Gregorian Calendar) noviembre
+es_CO Name of month 12 (Gregorian Calendar) diciembre
+es_CO Name of month 01 (Islamic Calendar) Muharram
+es_CO Name of month 02 (Islamic Calendar) Safar
+es_CO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CO Name of month 05 (Islamic Calendar) Jumada I
+es_CO Name of month 06 (Islamic Calendar) Jumada II
+es_CO Name of month 07 (Islamic Calendar) Rajab
+es_CO Name of month 08 (Islamic Calendar) Shaʻban
+es_CO Name of month 09 (Islamic Calendar) Ramadan
+es_CO Name of month 10 (Islamic Calendar) Shawwal
+es_CO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CO Name of weekday 01 (Gregorian Calendar) lunes
+es_CO Name of weekday 02 (Gregorian Calendar) martes
+es_CO Name of weekday 03 (Gregorian Calendar) miércoles
+es_CO Name of weekday 04 (Gregorian Calendar) jueves
+es_CO Name of weekday 05 (Gregorian Calendar) viernes
+es_CO Name of weekday 06 (Gregorian Calendar) sábado
+es_CO Name of weekday 07 (Gregorian Calendar) domingo
+es_CO Name of weekday 01 (Islamic Calendar) lunes
+es_CO Name of weekday 02 (Islamic Calendar) martes
+es_CO Name of weekday 03 (Islamic Calendar) miércoles
+es_CO Name of weekday 04 (Islamic Calendar) jueves
+es_CO Name of weekday 05 (Islamic Calendar) viernes
+es_CO Name of weekday 06 (Islamic Calendar) sábado
+es_CO Name of weekday 07 (Islamic Calendar) domingo
+es_CR Language endonym español
+es_CR Country endonym Costa Rica
+es_CR Floating Point Number -123.456.789,012
+es_CR Percent value -1.234,5679%
+es_CR Currency value € 1.234,56
+es_CR Negative Currency value -€ 1.234,56
+es_CR Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_CR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_CR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_CR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_CR Date and time short (Islamic Calendar) 18/07/29 12:31
+es_CR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_CR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_CR Name of month 01 (Gregorian Calendar) enero
+es_CR Name of month 02 (Gregorian Calendar) febrero
+es_CR Name of month 03 (Gregorian Calendar) marzo
+es_CR Name of month 04 (Gregorian Calendar) abril
+es_CR Name of month 05 (Gregorian Calendar) mayo
+es_CR Name of month 06 (Gregorian Calendar) junio
+es_CR Name of month 07 (Gregorian Calendar) julio
+es_CR Name of month 08 (Gregorian Calendar) agosto
+es_CR Name of month 09 (Gregorian Calendar) septiembre
+es_CR Name of month 10 (Gregorian Calendar) octubre
+es_CR Name of month 11 (Gregorian Calendar) noviembre
+es_CR Name of month 12 (Gregorian Calendar) diciembre
+es_CR Name of month 01 (Islamic Calendar) Muharram
+es_CR Name of month 02 (Islamic Calendar) Safar
+es_CR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_CR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_CR Name of month 05 (Islamic Calendar) Jumada I
+es_CR Name of month 06 (Islamic Calendar) Jumada II
+es_CR Name of month 07 (Islamic Calendar) Rajab
+es_CR Name of month 08 (Islamic Calendar) Shaʻban
+es_CR Name of month 09 (Islamic Calendar) Ramadan
+es_CR Name of month 10 (Islamic Calendar) Shawwal
+es_CR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_CR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_CR Name of weekday 01 (Gregorian Calendar) lunes
+es_CR Name of weekday 02 (Gregorian Calendar) martes
+es_CR Name of weekday 03 (Gregorian Calendar) miércoles
+es_CR Name of weekday 04 (Gregorian Calendar) jueves
+es_CR Name of weekday 05 (Gregorian Calendar) viernes
+es_CR Name of weekday 06 (Gregorian Calendar) sábado
+es_CR Name of weekday 07 (Gregorian Calendar) domingo
+es_CR Name of weekday 01 (Islamic Calendar) lunes
+es_CR Name of weekday 02 (Islamic Calendar) martes
+es_CR Name of weekday 03 (Islamic Calendar) miércoles
+es_CR Name of weekday 04 (Islamic Calendar) jueves
+es_CR Name of weekday 05 (Islamic Calendar) viernes
+es_CR Name of weekday 06 (Islamic Calendar) sábado
+es_CR Name of weekday 07 (Islamic Calendar) domingo
+es_DO Language endonym español
+es_DO Country endonym República Dominicana
+es_DO Floating Point Number -123,456,789.012
+es_DO Percent value -1,234.5679%
+es_DO Currency value € 1,234.56
+es_DO Negative Currency value -€ 1,234.56
+es_DO Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_DO Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_DO Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_DO Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_DO Date and time short (Islamic Calendar) 18/07/29 12:31
+es_DO Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_DO Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_DO Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_DO Name of month 01 (Gregorian Calendar) enero
+es_DO Name of month 02 (Gregorian Calendar) febrero
+es_DO Name of month 03 (Gregorian Calendar) marzo
+es_DO Name of month 04 (Gregorian Calendar) abril
+es_DO Name of month 05 (Gregorian Calendar) mayo
+es_DO Name of month 06 (Gregorian Calendar) junio
+es_DO Name of month 07 (Gregorian Calendar) julio
+es_DO Name of month 08 (Gregorian Calendar) agosto
+es_DO Name of month 09 (Gregorian Calendar) septiembre
+es_DO Name of month 10 (Gregorian Calendar) octubre
+es_DO Name of month 11 (Gregorian Calendar) noviembre
+es_DO Name of month 12 (Gregorian Calendar) diciembre
+es_DO Name of month 01 (Islamic Calendar) Muharram
+es_DO Name of month 02 (Islamic Calendar) Safar
+es_DO Name of month 03 (Islamic Calendar) Rabiʻ I
+es_DO Name of month 04 (Islamic Calendar) Rabiʻ II
+es_DO Name of month 05 (Islamic Calendar) Jumada I
+es_DO Name of month 06 (Islamic Calendar) Jumada II
+es_DO Name of month 07 (Islamic Calendar) Rajab
+es_DO Name of month 08 (Islamic Calendar) Shaʻban
+es_DO Name of month 09 (Islamic Calendar) Ramadan
+es_DO Name of month 10 (Islamic Calendar) Shawwal
+es_DO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_DO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_DO Name of weekday 01 (Gregorian Calendar) lunes
+es_DO Name of weekday 02 (Gregorian Calendar) martes
+es_DO Name of weekday 03 (Gregorian Calendar) miércoles
+es_DO Name of weekday 04 (Gregorian Calendar) jueves
+es_DO Name of weekday 05 (Gregorian Calendar) viernes
+es_DO Name of weekday 06 (Gregorian Calendar) sábado
+es_DO Name of weekday 07 (Gregorian Calendar) domingo
+es_DO Name of weekday 01 (Islamic Calendar) lunes
+es_DO Name of weekday 02 (Islamic Calendar) martes
+es_DO Name of weekday 03 (Islamic Calendar) miércoles
+es_DO Name of weekday 04 (Islamic Calendar) jueves
+es_DO Name of weekday 05 (Islamic Calendar) viernes
+es_DO Name of weekday 06 (Islamic Calendar) sábado
+es_DO Name of weekday 07 (Islamic Calendar) domingo
+es_EC Language endonym español
+es_EC Country endonym Ecuador
+es_EC Floating Point Number -123.456.789,012
+es_EC Percent value -1.234,5679%
+es_EC Currency value €1.234,56
+es_EC Negative Currency value €-1.234,56
+es_EC Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_EC Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_EC Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_EC Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_EC Date and time short (Islamic Calendar) 18/07/29 12:31
+es_EC Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_EC Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_EC Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_EC Name of month 01 (Gregorian Calendar) enero
+es_EC Name of month 02 (Gregorian Calendar) febrero
+es_EC Name of month 03 (Gregorian Calendar) marzo
+es_EC Name of month 04 (Gregorian Calendar) abril
+es_EC Name of month 05 (Gregorian Calendar) mayo
+es_EC Name of month 06 (Gregorian Calendar) junio
+es_EC Name of month 07 (Gregorian Calendar) julio
+es_EC Name of month 08 (Gregorian Calendar) agosto
+es_EC Name of month 09 (Gregorian Calendar) septiembre
+es_EC Name of month 10 (Gregorian Calendar) octubre
+es_EC Name of month 11 (Gregorian Calendar) noviembre
+es_EC Name of month 12 (Gregorian Calendar) diciembre
+es_EC Name of month 01 (Islamic Calendar) Muharram
+es_EC Name of month 02 (Islamic Calendar) Safar
+es_EC Name of month 03 (Islamic Calendar) Rabiʻ I
+es_EC Name of month 04 (Islamic Calendar) Rabiʻ II
+es_EC Name of month 05 (Islamic Calendar) Jumada I
+es_EC Name of month 06 (Islamic Calendar) Jumada II
+es_EC Name of month 07 (Islamic Calendar) Rajab
+es_EC Name of month 08 (Islamic Calendar) Shaʻban
+es_EC Name of month 09 (Islamic Calendar) Ramadan
+es_EC Name of month 10 (Islamic Calendar) Shawwal
+es_EC Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_EC Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_EC Name of weekday 01 (Gregorian Calendar) lunes
+es_EC Name of weekday 02 (Gregorian Calendar) martes
+es_EC Name of weekday 03 (Gregorian Calendar) miércoles
+es_EC Name of weekday 04 (Gregorian Calendar) jueves
+es_EC Name of weekday 05 (Gregorian Calendar) viernes
+es_EC Name of weekday 06 (Gregorian Calendar) sábado
+es_EC Name of weekday 07 (Gregorian Calendar) domingo
+es_EC Name of weekday 01 (Islamic Calendar) lunes
+es_EC Name of weekday 02 (Islamic Calendar) martes
+es_EC Name of weekday 03 (Islamic Calendar) miércoles
+es_EC Name of weekday 04 (Islamic Calendar) jueves
+es_EC Name of weekday 05 (Islamic Calendar) viernes
+es_EC Name of weekday 06 (Islamic Calendar) sábado
+es_EC Name of weekday 07 (Islamic Calendar) domingo
+es_ES Language endonym español
+es_ES Country endonym España
+es_ES Floating Point Number -123.456.789,012
+es_ES Percent value -1.234,5679%
+es_ES Currency value € 1.234,56
+es_ES Negative Currency value -€ 1.234,56
+es_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_ES Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_ES Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_ES Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+es_ES Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_ES Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_ES Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_ES Name of month 01 (Gregorian Calendar) enero
+es_ES Name of month 02 (Gregorian Calendar) febrero
+es_ES Name of month 03 (Gregorian Calendar) marzo
+es_ES Name of month 04 (Gregorian Calendar) abril
+es_ES Name of month 05 (Gregorian Calendar) mayo
+es_ES Name of month 06 (Gregorian Calendar) junio
+es_ES Name of month 07 (Gregorian Calendar) julio
+es_ES Name of month 08 (Gregorian Calendar) agosto
+es_ES Name of month 09 (Gregorian Calendar) septiembre
+es_ES Name of month 10 (Gregorian Calendar) octubre
+es_ES Name of month 11 (Gregorian Calendar) noviembre
+es_ES Name of month 12 (Gregorian Calendar) diciembre
+es_ES Name of month 01 (Islamic Calendar) Muharram
+es_ES Name of month 02 (Islamic Calendar) Safar
+es_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+es_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+es_ES Name of month 05 (Islamic Calendar) Jumada I
+es_ES Name of month 06 (Islamic Calendar) Jumada II
+es_ES Name of month 07 (Islamic Calendar) Rajab
+es_ES Name of month 08 (Islamic Calendar) Shaʻban
+es_ES Name of month 09 (Islamic Calendar) Ramadan
+es_ES Name of month 10 (Islamic Calendar) Shawwal
+es_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_ES Name of weekday 01 (Gregorian Calendar) lunes
+es_ES Name of weekday 02 (Gregorian Calendar) martes
+es_ES Name of weekday 03 (Gregorian Calendar) miércoles
+es_ES Name of weekday 04 (Gregorian Calendar) jueves
+es_ES Name of weekday 05 (Gregorian Calendar) viernes
+es_ES Name of weekday 06 (Gregorian Calendar) sábado
+es_ES Name of weekday 07 (Gregorian Calendar) domingo
+es_ES Name of weekday 01 (Islamic Calendar) lunes
+es_ES Name of weekday 02 (Islamic Calendar) martes
+es_ES Name of weekday 03 (Islamic Calendar) miércoles
+es_ES Name of weekday 04 (Islamic Calendar) jueves
+es_ES Name of weekday 05 (Islamic Calendar) viernes
+es_ES Name of weekday 06 (Islamic Calendar) sábado
+es_ES Name of weekday 07 (Islamic Calendar) domingo
+es_GT Language endonym español
+es_GT Country endonym Guatemala
+es_GT Floating Point Number -123,456,789.012
+es_GT Percent value -1,234.5679%
+es_GT Currency value € 1,234.56
+es_GT Negative Currency value -€ 1,234.56
+es_GT Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_GT Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_GT Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_GT Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_GT Date and time short (Islamic Calendar) 18/07/29 12:31
+es_GT Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_GT Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_GT Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_GT Name of month 01 (Gregorian Calendar) enero
+es_GT Name of month 02 (Gregorian Calendar) febrero
+es_GT Name of month 03 (Gregorian Calendar) marzo
+es_GT Name of month 04 (Gregorian Calendar) abril
+es_GT Name of month 05 (Gregorian Calendar) mayo
+es_GT Name of month 06 (Gregorian Calendar) junio
+es_GT Name of month 07 (Gregorian Calendar) julio
+es_GT Name of month 08 (Gregorian Calendar) agosto
+es_GT Name of month 09 (Gregorian Calendar) septiembre
+es_GT Name of month 10 (Gregorian Calendar) octubre
+es_GT Name of month 11 (Gregorian Calendar) noviembre
+es_GT Name of month 12 (Gregorian Calendar) diciembre
+es_GT Name of month 01 (Islamic Calendar) Muharram
+es_GT Name of month 02 (Islamic Calendar) Safar
+es_GT Name of month 03 (Islamic Calendar) Rabiʻ I
+es_GT Name of month 04 (Islamic Calendar) Rabiʻ II
+es_GT Name of month 05 (Islamic Calendar) Jumada I
+es_GT Name of month 06 (Islamic Calendar) Jumada II
+es_GT Name of month 07 (Islamic Calendar) Rajab
+es_GT Name of month 08 (Islamic Calendar) Shaʻban
+es_GT Name of month 09 (Islamic Calendar) Ramadan
+es_GT Name of month 10 (Islamic Calendar) Shawwal
+es_GT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_GT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_GT Name of weekday 01 (Gregorian Calendar) lunes
+es_GT Name of weekday 02 (Gregorian Calendar) martes
+es_GT Name of weekday 03 (Gregorian Calendar) miércoles
+es_GT Name of weekday 04 (Gregorian Calendar) jueves
+es_GT Name of weekday 05 (Gregorian Calendar) viernes
+es_GT Name of weekday 06 (Gregorian Calendar) sábado
+es_GT Name of weekday 07 (Gregorian Calendar) domingo
+es_GT Name of weekday 01 (Islamic Calendar) lunes
+es_GT Name of weekday 02 (Islamic Calendar) martes
+es_GT Name of weekday 03 (Islamic Calendar) miércoles
+es_GT Name of weekday 04 (Islamic Calendar) jueves
+es_GT Name of weekday 05 (Islamic Calendar) viernes
+es_GT Name of weekday 06 (Islamic Calendar) sábado
+es_GT Name of weekday 07 (Islamic Calendar) domingo
+es_HN Language endonym español
+es_HN Country endonym Honduras
+es_HN Floating Point Number -123,456,789.012
+es_HN Percent value -1,234.5679%
+es_HN Currency value € 1,234.56
+es_HN Negative Currency value -€ 1,234.56
+es_HN Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_HN Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_HN Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_HN Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_HN Date and time short (Islamic Calendar) 18/07/29 12:31
+es_HN Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_HN Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_HN Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_HN Name of month 01 (Gregorian Calendar) enero
+es_HN Name of month 02 (Gregorian Calendar) febrero
+es_HN Name of month 03 (Gregorian Calendar) marzo
+es_HN Name of month 04 (Gregorian Calendar) abril
+es_HN Name of month 05 (Gregorian Calendar) mayo
+es_HN Name of month 06 (Gregorian Calendar) junio
+es_HN Name of month 07 (Gregorian Calendar) julio
+es_HN Name of month 08 (Gregorian Calendar) agosto
+es_HN Name of month 09 (Gregorian Calendar) septiembre
+es_HN Name of month 10 (Gregorian Calendar) octubre
+es_HN Name of month 11 (Gregorian Calendar) noviembre
+es_HN Name of month 12 (Gregorian Calendar) diciembre
+es_HN Name of month 01 (Islamic Calendar) Muharram
+es_HN Name of month 02 (Islamic Calendar) Safar
+es_HN Name of month 03 (Islamic Calendar) Rabiʻ I
+es_HN Name of month 04 (Islamic Calendar) Rabiʻ II
+es_HN Name of month 05 (Islamic Calendar) Jumada I
+es_HN Name of month 06 (Islamic Calendar) Jumada II
+es_HN Name of month 07 (Islamic Calendar) Rajab
+es_HN Name of month 08 (Islamic Calendar) Shaʻban
+es_HN Name of month 09 (Islamic Calendar) Ramadan
+es_HN Name of month 10 (Islamic Calendar) Shawwal
+es_HN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_HN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_HN Name of weekday 01 (Gregorian Calendar) lunes
+es_HN Name of weekday 02 (Gregorian Calendar) martes
+es_HN Name of weekday 03 (Gregorian Calendar) miércoles
+es_HN Name of weekday 04 (Gregorian Calendar) jueves
+es_HN Name of weekday 05 (Gregorian Calendar) viernes
+es_HN Name of weekday 06 (Gregorian Calendar) sábado
+es_HN Name of weekday 07 (Gregorian Calendar) domingo
+es_HN Name of weekday 01 (Islamic Calendar) lunes
+es_HN Name of weekday 02 (Islamic Calendar) martes
+es_HN Name of weekday 03 (Islamic Calendar) miércoles
+es_HN Name of weekday 04 (Islamic Calendar) jueves
+es_HN Name of weekday 05 (Islamic Calendar) viernes
+es_HN Name of weekday 06 (Islamic Calendar) sábado
+es_HN Name of weekday 07 (Islamic Calendar) domingo
+es_MX Language endonym español
+es_MX Country endonym México
+es_MX Floating Point Number -123,456,789.012
+es_MX Percent value -1,234.5679%
+es_MX Currency value € 1,234.56
+es_MX Negative Currency value -€ 1,234.56
+es_MX Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_MX Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_MX Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_MX Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_MX Date and time short (Islamic Calendar) 18/07/29 12:31
+es_MX Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_MX Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_MX Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_MX Name of month 01 (Gregorian Calendar) enero
+es_MX Name of month 02 (Gregorian Calendar) febrero
+es_MX Name of month 03 (Gregorian Calendar) marzo
+es_MX Name of month 04 (Gregorian Calendar) abril
+es_MX Name of month 05 (Gregorian Calendar) mayo
+es_MX Name of month 06 (Gregorian Calendar) junio
+es_MX Name of month 07 (Gregorian Calendar) julio
+es_MX Name of month 08 (Gregorian Calendar) agosto
+es_MX Name of month 09 (Gregorian Calendar) septiembre
+es_MX Name of month 10 (Gregorian Calendar) octubre
+es_MX Name of month 11 (Gregorian Calendar) noviembre
+es_MX Name of month 12 (Gregorian Calendar) diciembre
+es_MX Name of month 01 (Islamic Calendar) Muharram
+es_MX Name of month 02 (Islamic Calendar) Safar
+es_MX Name of month 03 (Islamic Calendar) Rabiʻ I
+es_MX Name of month 04 (Islamic Calendar) Rabiʻ II
+es_MX Name of month 05 (Islamic Calendar) Jumada I
+es_MX Name of month 06 (Islamic Calendar) Jumada II
+es_MX Name of month 07 (Islamic Calendar) Rajab
+es_MX Name of month 08 (Islamic Calendar) Shaʻban
+es_MX Name of month 09 (Islamic Calendar) Ramadan
+es_MX Name of month 10 (Islamic Calendar) Shawwal
+es_MX Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_MX Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_MX Name of weekday 01 (Gregorian Calendar) lunes
+es_MX Name of weekday 02 (Gregorian Calendar) martes
+es_MX Name of weekday 03 (Gregorian Calendar) miércoles
+es_MX Name of weekday 04 (Gregorian Calendar) jueves
+es_MX Name of weekday 05 (Gregorian Calendar) viernes
+es_MX Name of weekday 06 (Gregorian Calendar) sábado
+es_MX Name of weekday 07 (Gregorian Calendar) domingo
+es_MX Name of weekday 01 (Islamic Calendar) lunes
+es_MX Name of weekday 02 (Islamic Calendar) martes
+es_MX Name of weekday 03 (Islamic Calendar) miércoles
+es_MX Name of weekday 04 (Islamic Calendar) jueves
+es_MX Name of weekday 05 (Islamic Calendar) viernes
+es_MX Name of weekday 06 (Islamic Calendar) sábado
+es_MX Name of weekday 07 (Islamic Calendar) domingo
+es_NI Language endonym español
+es_NI Country endonym Nicaragua
+es_NI Floating Point Number -123,456,789.012
+es_NI Percent value -1,234.5679%
+es_NI Currency value € 1,234.56
+es_NI Negative Currency value -€ 1,234.56
+es_NI Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_NI Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_NI Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_NI Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_NI Date and time short (Islamic Calendar) 18/07/29 12:31
+es_NI Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_NI Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_NI Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_NI Name of month 01 (Gregorian Calendar) enero
+es_NI Name of month 02 (Gregorian Calendar) febrero
+es_NI Name of month 03 (Gregorian Calendar) marzo
+es_NI Name of month 04 (Gregorian Calendar) abril
+es_NI Name of month 05 (Gregorian Calendar) mayo
+es_NI Name of month 06 (Gregorian Calendar) junio
+es_NI Name of month 07 (Gregorian Calendar) julio
+es_NI Name of month 08 (Gregorian Calendar) agosto
+es_NI Name of month 09 (Gregorian Calendar) septiembre
+es_NI Name of month 10 (Gregorian Calendar) octubre
+es_NI Name of month 11 (Gregorian Calendar) noviembre
+es_NI Name of month 12 (Gregorian Calendar) diciembre
+es_NI Name of month 01 (Islamic Calendar) Muharram
+es_NI Name of month 02 (Islamic Calendar) Safar
+es_NI Name of month 03 (Islamic Calendar) Rabiʻ I
+es_NI Name of month 04 (Islamic Calendar) Rabiʻ II
+es_NI Name of month 05 (Islamic Calendar) Jumada I
+es_NI Name of month 06 (Islamic Calendar) Jumada II
+es_NI Name of month 07 (Islamic Calendar) Rajab
+es_NI Name of month 08 (Islamic Calendar) Shaʻban
+es_NI Name of month 09 (Islamic Calendar) Ramadan
+es_NI Name of month 10 (Islamic Calendar) Shawwal
+es_NI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_NI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_NI Name of weekday 01 (Gregorian Calendar) lunes
+es_NI Name of weekday 02 (Gregorian Calendar) martes
+es_NI Name of weekday 03 (Gregorian Calendar) miércoles
+es_NI Name of weekday 04 (Gregorian Calendar) jueves
+es_NI Name of weekday 05 (Gregorian Calendar) viernes
+es_NI Name of weekday 06 (Gregorian Calendar) sábado
+es_NI Name of weekday 07 (Gregorian Calendar) domingo
+es_NI Name of weekday 01 (Islamic Calendar) lunes
+es_NI Name of weekday 02 (Islamic Calendar) martes
+es_NI Name of weekday 03 (Islamic Calendar) miércoles
+es_NI Name of weekday 04 (Islamic Calendar) jueves
+es_NI Name of weekday 05 (Islamic Calendar) viernes
+es_NI Name of weekday 06 (Islamic Calendar) sábado
+es_NI Name of weekday 07 (Islamic Calendar) domingo
+es_PA Language endonym español
+es_PA Country endonym Panamá
+es_PA Floating Point Number -123,456,789.012
+es_PA Percent value -1,234.5679%
+es_PA Currency value € 1,234.56
+es_PA Negative Currency value -€ 1,234.56
+es_PA Date and time short (Gregorian Calendar) 07/21/08 12:31
+es_PA Date and time medium (Gregorian Calendar) 07/21/2008 12:31:00
+es_PA Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PA Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PA Date and time short (Islamic Calendar) 07/18/29 12:31
+es_PA Date and time medium (Islamic Calendar) 07/18/1429 12:31:00
+es_PA Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PA Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PA Name of month 01 (Gregorian Calendar) enero
+es_PA Name of month 02 (Gregorian Calendar) febrero
+es_PA Name of month 03 (Gregorian Calendar) marzo
+es_PA Name of month 04 (Gregorian Calendar) abril
+es_PA Name of month 05 (Gregorian Calendar) mayo
+es_PA Name of month 06 (Gregorian Calendar) junio
+es_PA Name of month 07 (Gregorian Calendar) julio
+es_PA Name of month 08 (Gregorian Calendar) agosto
+es_PA Name of month 09 (Gregorian Calendar) septiembre
+es_PA Name of month 10 (Gregorian Calendar) octubre
+es_PA Name of month 11 (Gregorian Calendar) noviembre
+es_PA Name of month 12 (Gregorian Calendar) diciembre
+es_PA Name of month 01 (Islamic Calendar) Muharram
+es_PA Name of month 02 (Islamic Calendar) Safar
+es_PA Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PA Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PA Name of month 05 (Islamic Calendar) Jumada I
+es_PA Name of month 06 (Islamic Calendar) Jumada II
+es_PA Name of month 07 (Islamic Calendar) Rajab
+es_PA Name of month 08 (Islamic Calendar) Shaʻban
+es_PA Name of month 09 (Islamic Calendar) Ramadan
+es_PA Name of month 10 (Islamic Calendar) Shawwal
+es_PA Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PA Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PA Name of weekday 01 (Gregorian Calendar) lunes
+es_PA Name of weekday 02 (Gregorian Calendar) martes
+es_PA Name of weekday 03 (Gregorian Calendar) miércoles
+es_PA Name of weekday 04 (Gregorian Calendar) jueves
+es_PA Name of weekday 05 (Gregorian Calendar) viernes
+es_PA Name of weekday 06 (Gregorian Calendar) sábado
+es_PA Name of weekday 07 (Gregorian Calendar) domingo
+es_PA Name of weekday 01 (Islamic Calendar) lunes
+es_PA Name of weekday 02 (Islamic Calendar) martes
+es_PA Name of weekday 03 (Islamic Calendar) miércoles
+es_PA Name of weekday 04 (Islamic Calendar) jueves
+es_PA Name of weekday 05 (Islamic Calendar) viernes
+es_PA Name of weekday 06 (Islamic Calendar) sábado
+es_PA Name of weekday 07 (Islamic Calendar) domingo
+es_PE Language endonym español
+es_PE Country endonym Perú
+es_PE Floating Point Number -123,456,789.012
+es_PE Percent value -1,234.5679%
+es_PE Currency value € 1,234.56
+es_PE Negative Currency value -€ 1,234.56
+es_PE Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_PE Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_PE Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PE Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12H31'00' GMT+00:00
+es_PE Date and time short (Islamic Calendar) 18/07/29 12:31
+es_PE Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_PE Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PE Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12H31'00' GMT+00:00
+es_PE Name of month 01 (Gregorian Calendar) enero
+es_PE Name of month 02 (Gregorian Calendar) febrero
+es_PE Name of month 03 (Gregorian Calendar) marzo
+es_PE Name of month 04 (Gregorian Calendar) abril
+es_PE Name of month 05 (Gregorian Calendar) mayo
+es_PE Name of month 06 (Gregorian Calendar) junio
+es_PE Name of month 07 (Gregorian Calendar) julio
+es_PE Name of month 08 (Gregorian Calendar) agosto
+es_PE Name of month 09 (Gregorian Calendar) septiembre
+es_PE Name of month 10 (Gregorian Calendar) octubre
+es_PE Name of month 11 (Gregorian Calendar) noviembre
+es_PE Name of month 12 (Gregorian Calendar) diciembre
+es_PE Name of month 01 (Islamic Calendar) Muharram
+es_PE Name of month 02 (Islamic Calendar) Safar
+es_PE Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PE Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PE Name of month 05 (Islamic Calendar) Jumada I
+es_PE Name of month 06 (Islamic Calendar) Jumada II
+es_PE Name of month 07 (Islamic Calendar) Rajab
+es_PE Name of month 08 (Islamic Calendar) Shaʻban
+es_PE Name of month 09 (Islamic Calendar) Ramadan
+es_PE Name of month 10 (Islamic Calendar) Shawwal
+es_PE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PE Name of weekday 01 (Gregorian Calendar) lunes
+es_PE Name of weekday 02 (Gregorian Calendar) martes
+es_PE Name of weekday 03 (Gregorian Calendar) miércoles
+es_PE Name of weekday 04 (Gregorian Calendar) jueves
+es_PE Name of weekday 05 (Gregorian Calendar) viernes
+es_PE Name of weekday 06 (Gregorian Calendar) sábado
+es_PE Name of weekday 07 (Gregorian Calendar) domingo
+es_PE Name of weekday 01 (Islamic Calendar) lunes
+es_PE Name of weekday 02 (Islamic Calendar) martes
+es_PE Name of weekday 03 (Islamic Calendar) miércoles
+es_PE Name of weekday 04 (Islamic Calendar) jueves
+es_PE Name of weekday 05 (Islamic Calendar) viernes
+es_PE Name of weekday 06 (Islamic Calendar) sábado
+es_PE Name of weekday 07 (Islamic Calendar) domingo
+es_PR Language endonym español
+es_PR Country endonym Puerto Rico
+es_PR Floating Point Number -123,456,789.012
+es_PR Percent value -1,234.5679%
+es_PR Currency value € 1,234.56
+es_PR Negative Currency value -€ 1,234.56
+es_PR Date and time short (Gregorian Calendar) 07/21/08 12:31
+es_PR Date and time medium (Gregorian Calendar) 07/21/2008 12:31:00
+es_PR Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PR Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PR Date and time short (Islamic Calendar) 07/18/29 12:31
+es_PR Date and time medium (Islamic Calendar) 07/18/1429 12:31:00
+es_PR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PR Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PR Name of month 01 (Gregorian Calendar) enero
+es_PR Name of month 02 (Gregorian Calendar) febrero
+es_PR Name of month 03 (Gregorian Calendar) marzo
+es_PR Name of month 04 (Gregorian Calendar) abril
+es_PR Name of month 05 (Gregorian Calendar) mayo
+es_PR Name of month 06 (Gregorian Calendar) junio
+es_PR Name of month 07 (Gregorian Calendar) julio
+es_PR Name of month 08 (Gregorian Calendar) agosto
+es_PR Name of month 09 (Gregorian Calendar) septiembre
+es_PR Name of month 10 (Gregorian Calendar) octubre
+es_PR Name of month 11 (Gregorian Calendar) noviembre
+es_PR Name of month 12 (Gregorian Calendar) diciembre
+es_PR Name of month 01 (Islamic Calendar) Muharram
+es_PR Name of month 02 (Islamic Calendar) Safar
+es_PR Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PR Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PR Name of month 05 (Islamic Calendar) Jumada I
+es_PR Name of month 06 (Islamic Calendar) Jumada II
+es_PR Name of month 07 (Islamic Calendar) Rajab
+es_PR Name of month 08 (Islamic Calendar) Shaʻban
+es_PR Name of month 09 (Islamic Calendar) Ramadan
+es_PR Name of month 10 (Islamic Calendar) Shawwal
+es_PR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PR Name of weekday 01 (Gregorian Calendar) lunes
+es_PR Name of weekday 02 (Gregorian Calendar) martes
+es_PR Name of weekday 03 (Gregorian Calendar) miércoles
+es_PR Name of weekday 04 (Gregorian Calendar) jueves
+es_PR Name of weekday 05 (Gregorian Calendar) viernes
+es_PR Name of weekday 06 (Gregorian Calendar) sábado
+es_PR Name of weekday 07 (Gregorian Calendar) domingo
+es_PR Name of weekday 01 (Islamic Calendar) lunes
+es_PR Name of weekday 02 (Islamic Calendar) martes
+es_PR Name of weekday 03 (Islamic Calendar) miércoles
+es_PR Name of weekday 04 (Islamic Calendar) jueves
+es_PR Name of weekday 05 (Islamic Calendar) viernes
+es_PR Name of weekday 06 (Islamic Calendar) sábado
+es_PR Name of weekday 07 (Islamic Calendar) domingo
+es_PY Language endonym español
+es_PY Country endonym Paraguay
+es_PY Floating Point Number -123.456.789,012
+es_PY Percent value -1.234,5679%
+es_PY Currency value € 1.234,56
+es_PY Negative Currency value € -1.234,56
+es_PY Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_PY Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_PY Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_PY Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_PY Date and time short (Islamic Calendar) 18/07/29 12:31
+es_PY Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_PY Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PY Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_PY Name of month 01 (Gregorian Calendar) enero
+es_PY Name of month 02 (Gregorian Calendar) febrero
+es_PY Name of month 03 (Gregorian Calendar) marzo
+es_PY Name of month 04 (Gregorian Calendar) abril
+es_PY Name of month 05 (Gregorian Calendar) mayo
+es_PY Name of month 06 (Gregorian Calendar) junio
+es_PY Name of month 07 (Gregorian Calendar) julio
+es_PY Name of month 08 (Gregorian Calendar) agosto
+es_PY Name of month 09 (Gregorian Calendar) septiembre
+es_PY Name of month 10 (Gregorian Calendar) octubre
+es_PY Name of month 11 (Gregorian Calendar) noviembre
+es_PY Name of month 12 (Gregorian Calendar) diciembre
+es_PY Name of month 01 (Islamic Calendar) Muharram
+es_PY Name of month 02 (Islamic Calendar) Safar
+es_PY Name of month 03 (Islamic Calendar) Rabiʻ I
+es_PY Name of month 04 (Islamic Calendar) Rabiʻ II
+es_PY Name of month 05 (Islamic Calendar) Jumada I
+es_PY Name of month 06 (Islamic Calendar) Jumada II
+es_PY Name of month 07 (Islamic Calendar) Rajab
+es_PY Name of month 08 (Islamic Calendar) Shaʻban
+es_PY Name of month 09 (Islamic Calendar) Ramadan
+es_PY Name of month 10 (Islamic Calendar) Shawwal
+es_PY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_PY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_PY Name of weekday 01 (Gregorian Calendar) lunes
+es_PY Name of weekday 02 (Gregorian Calendar) martes
+es_PY Name of weekday 03 (Gregorian Calendar) miércoles
+es_PY Name of weekday 04 (Gregorian Calendar) jueves
+es_PY Name of weekday 05 (Gregorian Calendar) viernes
+es_PY Name of weekday 06 (Gregorian Calendar) sábado
+es_PY Name of weekday 07 (Gregorian Calendar) domingo
+es_PY Name of weekday 01 (Islamic Calendar) lunes
+es_PY Name of weekday 02 (Islamic Calendar) martes
+es_PY Name of weekday 03 (Islamic Calendar) miércoles
+es_PY Name of weekday 04 (Islamic Calendar) jueves
+es_PY Name of weekday 05 (Islamic Calendar) viernes
+es_PY Name of weekday 06 (Islamic Calendar) sábado
+es_PY Name of weekday 07 (Islamic Calendar) domingo
+es_SV Language endonym español
+es_SV Country endonym El Salvador
+es_SV Floating Point Number -123,456,789.012
+es_SV Percent value -1,234.5679%
+es_SV Currency value € 1,234.56
+es_SV Negative Currency value -€ 1,234.56
+es_SV Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_SV Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_SV Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_SV Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_SV Date and time short (Islamic Calendar) 18/07/29 12:31
+es_SV Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_SV Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_SV Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_SV Name of month 01 (Gregorian Calendar) enero
+es_SV Name of month 02 (Gregorian Calendar) febrero
+es_SV Name of month 03 (Gregorian Calendar) marzo
+es_SV Name of month 04 (Gregorian Calendar) abril
+es_SV Name of month 05 (Gregorian Calendar) mayo
+es_SV Name of month 06 (Gregorian Calendar) junio
+es_SV Name of month 07 (Gregorian Calendar) julio
+es_SV Name of month 08 (Gregorian Calendar) agosto
+es_SV Name of month 09 (Gregorian Calendar) septiembre
+es_SV Name of month 10 (Gregorian Calendar) octubre
+es_SV Name of month 11 (Gregorian Calendar) noviembre
+es_SV Name of month 12 (Gregorian Calendar) diciembre
+es_SV Name of month 01 (Islamic Calendar) Muharram
+es_SV Name of month 02 (Islamic Calendar) Safar
+es_SV Name of month 03 (Islamic Calendar) Rabiʻ I
+es_SV Name of month 04 (Islamic Calendar) Rabiʻ II
+es_SV Name of month 05 (Islamic Calendar) Jumada I
+es_SV Name of month 06 (Islamic Calendar) Jumada II
+es_SV Name of month 07 (Islamic Calendar) Rajab
+es_SV Name of month 08 (Islamic Calendar) Shaʻban
+es_SV Name of month 09 (Islamic Calendar) Ramadan
+es_SV Name of month 10 (Islamic Calendar) Shawwal
+es_SV Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_SV Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_SV Name of weekday 01 (Gregorian Calendar) lunes
+es_SV Name of weekday 02 (Gregorian Calendar) martes
+es_SV Name of weekday 03 (Gregorian Calendar) miércoles
+es_SV Name of weekday 04 (Gregorian Calendar) jueves
+es_SV Name of weekday 05 (Gregorian Calendar) viernes
+es_SV Name of weekday 06 (Gregorian Calendar) sábado
+es_SV Name of weekday 07 (Gregorian Calendar) domingo
+es_SV Name of weekday 01 (Islamic Calendar) lunes
+es_SV Name of weekday 02 (Islamic Calendar) martes
+es_SV Name of weekday 03 (Islamic Calendar) miércoles
+es_SV Name of weekday 04 (Islamic Calendar) jueves
+es_SV Name of weekday 05 (Islamic Calendar) viernes
+es_SV Name of weekday 06 (Islamic Calendar) sábado
+es_SV Name of weekday 07 (Islamic Calendar) domingo
+es_US Language endonym español
+es_US Country endonym Estados Unidos
+es_US Floating Point Number -123,456,789.012
+es_US Percent value -1,234.5679%
+es_US Currency value € 1,234.56
+es_US Negative Currency value -€ 1,234.56
+es_US Date and time short (Gregorian Calendar) 7/21/08 12:31 p.m.
+es_US Date and time medium (Gregorian Calendar) jul 21, 2008 12:31:00 p.m.
+es_US Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 p.m. GMT+00:00
+es_US Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 p.m. GMT+00:00
+es_US Date and time short (Islamic Calendar) 7/18/29 12:31 p.m.
+es_US Date and time medium (Islamic Calendar) Raj. 18, 1429 12:31:00 p.m.
+es_US Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 p.m. GMT+00:00
+es_US Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 p.m. GMT+00:00
+es_US Name of month 01 (Gregorian Calendar) enero
+es_US Name of month 02 (Gregorian Calendar) febrero
+es_US Name of month 03 (Gregorian Calendar) marzo
+es_US Name of month 04 (Gregorian Calendar) abril
+es_US Name of month 05 (Gregorian Calendar) mayo
+es_US Name of month 06 (Gregorian Calendar) junio
+es_US Name of month 07 (Gregorian Calendar) julio
+es_US Name of month 08 (Gregorian Calendar) agosto
+es_US Name of month 09 (Gregorian Calendar) septiembre
+es_US Name of month 10 (Gregorian Calendar) octubre
+es_US Name of month 11 (Gregorian Calendar) noviembre
+es_US Name of month 12 (Gregorian Calendar) diciembre
+es_US Name of month 01 (Islamic Calendar) Muharram
+es_US Name of month 02 (Islamic Calendar) Safar
+es_US Name of month 03 (Islamic Calendar) Rabiʻ I
+es_US Name of month 04 (Islamic Calendar) Rabiʻ II
+es_US Name of month 05 (Islamic Calendar) Jumada I
+es_US Name of month 06 (Islamic Calendar) Jumada II
+es_US Name of month 07 (Islamic Calendar) Rajab
+es_US Name of month 08 (Islamic Calendar) Shaʻban
+es_US Name of month 09 (Islamic Calendar) Ramadan
+es_US Name of month 10 (Islamic Calendar) Shawwal
+es_US Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_US Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_US Name of weekday 01 (Gregorian Calendar) lunes
+es_US Name of weekday 02 (Gregorian Calendar) martes
+es_US Name of weekday 03 (Gregorian Calendar) miércoles
+es_US Name of weekday 04 (Gregorian Calendar) jueves
+es_US Name of weekday 05 (Gregorian Calendar) viernes
+es_US Name of weekday 06 (Gregorian Calendar) sábado
+es_US Name of weekday 07 (Gregorian Calendar) domingo
+es_US Name of weekday 01 (Islamic Calendar) lunes
+es_US Name of weekday 02 (Islamic Calendar) martes
+es_US Name of weekday 03 (Islamic Calendar) miércoles
+es_US Name of weekday 04 (Islamic Calendar) jueves
+es_US Name of weekday 05 (Islamic Calendar) viernes
+es_US Name of weekday 06 (Islamic Calendar) sábado
+es_US Name of weekday 07 (Islamic Calendar) domingo
+es_UY Language endonym español
+es_UY Country endonym Uruguay
+es_UY Floating Point Number -123.456.789,012
+es_UY Percent value -1.234,5679%
+es_UY Currency value € 1.234,56
+es_UY Negative Currency value (€ 1.234,56)
+es_UY Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_UY Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_UY Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_UY Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_UY Date and time short (Islamic Calendar) 18/07/29 12:31
+es_UY Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_UY Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_UY Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_UY Name of month 01 (Gregorian Calendar) enero
+es_UY Name of month 02 (Gregorian Calendar) febrero
+es_UY Name of month 03 (Gregorian Calendar) marzo
+es_UY Name of month 04 (Gregorian Calendar) abril
+es_UY Name of month 05 (Gregorian Calendar) mayo
+es_UY Name of month 06 (Gregorian Calendar) junio
+es_UY Name of month 07 (Gregorian Calendar) julio
+es_UY Name of month 08 (Gregorian Calendar) agosto
+es_UY Name of month 09 (Gregorian Calendar) septiembre
+es_UY Name of month 10 (Gregorian Calendar) octubre
+es_UY Name of month 11 (Gregorian Calendar) noviembre
+es_UY Name of month 12 (Gregorian Calendar) diciembre
+es_UY Name of month 01 (Islamic Calendar) Muharram
+es_UY Name of month 02 (Islamic Calendar) Safar
+es_UY Name of month 03 (Islamic Calendar) Rabiʻ I
+es_UY Name of month 04 (Islamic Calendar) Rabiʻ II
+es_UY Name of month 05 (Islamic Calendar) Jumada I
+es_UY Name of month 06 (Islamic Calendar) Jumada II
+es_UY Name of month 07 (Islamic Calendar) Rajab
+es_UY Name of month 08 (Islamic Calendar) Shaʻban
+es_UY Name of month 09 (Islamic Calendar) Ramadan
+es_UY Name of month 10 (Islamic Calendar) Shawwal
+es_UY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_UY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_UY Name of weekday 01 (Gregorian Calendar) lunes
+es_UY Name of weekday 02 (Gregorian Calendar) martes
+es_UY Name of weekday 03 (Gregorian Calendar) miércoles
+es_UY Name of weekday 04 (Gregorian Calendar) jueves
+es_UY Name of weekday 05 (Gregorian Calendar) viernes
+es_UY Name of weekday 06 (Gregorian Calendar) sábado
+es_UY Name of weekday 07 (Gregorian Calendar) domingo
+es_UY Name of weekday 01 (Islamic Calendar) lunes
+es_UY Name of weekday 02 (Islamic Calendar) martes
+es_UY Name of weekday 03 (Islamic Calendar) miércoles
+es_UY Name of weekday 04 (Islamic Calendar) jueves
+es_UY Name of weekday 05 (Islamic Calendar) viernes
+es_UY Name of weekday 06 (Islamic Calendar) sábado
+es_UY Name of weekday 07 (Islamic Calendar) domingo
+es_VE Language endonym español
+es_VE Country endonym Venezuela
+es_VE Floating Point Number -123.456.789,012
+es_VE Percent value -1.234,5679%
+es_VE Currency value €1.234,56
+es_VE Negative Currency value €-1.234,56
+es_VE Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_VE Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_VE Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_VE Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_VE Date and time short (Islamic Calendar) 18/07/29 12:31
+es_VE Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_VE Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_VE Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_VE Name of month 01 (Gregorian Calendar) enero
+es_VE Name of month 02 (Gregorian Calendar) febrero
+es_VE Name of month 03 (Gregorian Calendar) marzo
+es_VE Name of month 04 (Gregorian Calendar) abril
+es_VE Name of month 05 (Gregorian Calendar) mayo
+es_VE Name of month 06 (Gregorian Calendar) junio
+es_VE Name of month 07 (Gregorian Calendar) julio
+es_VE Name of month 08 (Gregorian Calendar) agosto
+es_VE Name of month 09 (Gregorian Calendar) septiembre
+es_VE Name of month 10 (Gregorian Calendar) octubre
+es_VE Name of month 11 (Gregorian Calendar) noviembre
+es_VE Name of month 12 (Gregorian Calendar) diciembre
+es_VE Name of month 01 (Islamic Calendar) Muharram
+es_VE Name of month 02 (Islamic Calendar) Safar
+es_VE Name of month 03 (Islamic Calendar) Rabiʻ I
+es_VE Name of month 04 (Islamic Calendar) Rabiʻ II
+es_VE Name of month 05 (Islamic Calendar) Jumada I
+es_VE Name of month 06 (Islamic Calendar) Jumada II
+es_VE Name of month 07 (Islamic Calendar) Rajab
+es_VE Name of month 08 (Islamic Calendar) Shaʻban
+es_VE Name of month 09 (Islamic Calendar) Ramadan
+es_VE Name of month 10 (Islamic Calendar) Shawwal
+es_VE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_VE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_VE Name of weekday 01 (Gregorian Calendar) lunes
+es_VE Name of weekday 02 (Gregorian Calendar) martes
+es_VE Name of weekday 03 (Gregorian Calendar) miércoles
+es_VE Name of weekday 04 (Gregorian Calendar) jueves
+es_VE Name of weekday 05 (Gregorian Calendar) viernes
+es_VE Name of weekday 06 (Gregorian Calendar) sábado
+es_VE Name of weekday 07 (Gregorian Calendar) domingo
+es_VE Name of weekday 01 (Islamic Calendar) lunes
+es_VE Name of weekday 02 (Islamic Calendar) martes
+es_VE Name of weekday 03 (Islamic Calendar) miércoles
+es_VE Name of weekday 04 (Islamic Calendar) jueves
+es_VE Name of weekday 05 (Islamic Calendar) viernes
+es_VE Name of weekday 06 (Islamic Calendar) sábado
+es_VE Name of weekday 07 (Islamic Calendar) domingo
+eu Language endonym euskara
+eu Country endonym
+eu Floating Point Number -123.456.789,012
+eu Percent value -1.234,5679%
+eu Currency value 1.234,56 €
+eu Negative Currency value -1.234,56 €
+eu Date and time short (Gregorian Calendar) 2008-07-21 12:31
+eu Date and time medium (Gregorian Calendar) 2008 uzt 21 12:31:00
+eu Date and time long (Gregorian Calendar) 2008eko uztren 21a 12:31:00 GMT+00:00
+eu Date and time full (Gregorian Calendar) astelehena, 2008eko uztailaren 21a 12:31:00 GMT+00:00
+eu Date and time short (Islamic Calendar) 1429-07-18 12:31
+eu Date and time medium (Islamic Calendar) 1429 Raj. 18 12:31:00
+eu Date and time long (Islamic Calendar) 1429eko Raj.ren 18a 12:31:00 GMT+00:00
+eu Date and time full (Islamic Calendar) astelehena, 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu Name of month 01 (Gregorian Calendar) urtarrila
+eu Name of month 02 (Gregorian Calendar) otsaila
+eu Name of month 03 (Gregorian Calendar) martxoa
+eu Name of month 04 (Gregorian Calendar) apirila
+eu Name of month 05 (Gregorian Calendar) maiatza
+eu Name of month 06 (Gregorian Calendar) ekaina
+eu Name of month 07 (Gregorian Calendar) uztaila
+eu Name of month 08 (Gregorian Calendar) abuztua
+eu Name of month 09 (Gregorian Calendar) iraila
+eu Name of month 10 (Gregorian Calendar) urria
+eu Name of month 11 (Gregorian Calendar) azaroa
+eu Name of month 12 (Gregorian Calendar) abendua
+eu Name of month 01 (Islamic Calendar) Muharram
+eu Name of month 02 (Islamic Calendar) Safar
+eu Name of month 03 (Islamic Calendar) Rabiʻ I
+eu Name of month 04 (Islamic Calendar) Rabiʻ II
+eu Name of month 05 (Islamic Calendar) Jumada I
+eu Name of month 06 (Islamic Calendar) Jumada II
+eu Name of month 07 (Islamic Calendar) Rajab
+eu Name of month 08 (Islamic Calendar) Shaʻban
+eu Name of month 09 (Islamic Calendar) Ramadan
+eu Name of month 10 (Islamic Calendar) Shawwal
+eu Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+eu Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+eu Name of weekday 01 (Gregorian Calendar) astelehena
+eu Name of weekday 02 (Gregorian Calendar) asteartea
+eu Name of weekday 03 (Gregorian Calendar) asteazkena
+eu Name of weekday 04 (Gregorian Calendar) osteguna
+eu Name of weekday 05 (Gregorian Calendar) ostirala
+eu Name of weekday 06 (Gregorian Calendar) larunbata
+eu Name of weekday 07 (Gregorian Calendar) igandea
+eu Name of weekday 01 (Islamic Calendar) astelehena
+eu Name of weekday 02 (Islamic Calendar) asteartea
+eu Name of weekday 03 (Islamic Calendar) asteazkena
+eu Name of weekday 04 (Islamic Calendar) osteguna
+eu Name of weekday 05 (Islamic Calendar) ostirala
+eu Name of weekday 06 (Islamic Calendar) larunbata
+eu Name of weekday 07 (Islamic Calendar) igandea
+eu_ES Language endonym euskara
+eu_ES Country endonym Espainia
+eu_ES Floating Point Number -123.456.789,012
+eu_ES Percent value -1.234,5679%
+eu_ES Currency value 1.234,56 €
+eu_ES Negative Currency value -1.234,56 €
+eu_ES Date and time short (Gregorian Calendar) 2008-07-21 12:31
+eu_ES Date and time medium (Gregorian Calendar) 2008 uzt 21 12:31:00
+eu_ES Date and time long (Gregorian Calendar) 2008eko uztren 21a 12:31:00 GMT+00:00
+eu_ES Date and time full (Gregorian Calendar) astelehena, 2008eko uztailaren 21a 12:31:00 GMT+00:00
+eu_ES Date and time short (Islamic Calendar) 1429-07-18 12:31
+eu_ES Date and time medium (Islamic Calendar) 1429 Raj. 18 12:31:00
+eu_ES Date and time long (Islamic Calendar) 1429eko Raj.ren 18a 12:31:00 GMT+00:00
+eu_ES Date and time full (Islamic Calendar) astelehena, 1429eko Rajabren 18a 12:31:00 GMT+00:00
+eu_ES Name of month 01 (Gregorian Calendar) urtarrila
+eu_ES Name of month 02 (Gregorian Calendar) otsaila
+eu_ES Name of month 03 (Gregorian Calendar) martxoa
+eu_ES Name of month 04 (Gregorian Calendar) apirila
+eu_ES Name of month 05 (Gregorian Calendar) maiatza
+eu_ES Name of month 06 (Gregorian Calendar) ekaina
+eu_ES Name of month 07 (Gregorian Calendar) uztaila
+eu_ES Name of month 08 (Gregorian Calendar) abuztua
+eu_ES Name of month 09 (Gregorian Calendar) iraila
+eu_ES Name of month 10 (Gregorian Calendar) urria
+eu_ES Name of month 11 (Gregorian Calendar) azaroa
+eu_ES Name of month 12 (Gregorian Calendar) abendua
+eu_ES Name of month 01 (Islamic Calendar) Muharram
+eu_ES Name of month 02 (Islamic Calendar) Safar
+eu_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+eu_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+eu_ES Name of month 05 (Islamic Calendar) Jumada I
+eu_ES Name of month 06 (Islamic Calendar) Jumada II
+eu_ES Name of month 07 (Islamic Calendar) Rajab
+eu_ES Name of month 08 (Islamic Calendar) Shaʻban
+eu_ES Name of month 09 (Islamic Calendar) Ramadan
+eu_ES Name of month 10 (Islamic Calendar) Shawwal
+eu_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+eu_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+eu_ES Name of weekday 01 (Gregorian Calendar) astelehena
+eu_ES Name of weekday 02 (Gregorian Calendar) asteartea
+eu_ES Name of weekday 03 (Gregorian Calendar) asteazkena
+eu_ES Name of weekday 04 (Gregorian Calendar) osteguna
+eu_ES Name of weekday 05 (Gregorian Calendar) ostirala
+eu_ES Name of weekday 06 (Gregorian Calendar) larunbata
+eu_ES Name of weekday 07 (Gregorian Calendar) igandea
+eu_ES Name of weekday 01 (Islamic Calendar) astelehena
+eu_ES Name of weekday 02 (Islamic Calendar) asteartea
+eu_ES Name of weekday 03 (Islamic Calendar) asteazkena
+eu_ES Name of weekday 04 (Islamic Calendar) osteguna
+eu_ES Name of weekday 05 (Islamic Calendar) ostirala
+eu_ES Name of weekday 06 (Islamic Calendar) larunbata
+eu_ES Name of weekday 07 (Islamic Calendar) igandea
+fa Language endonym فارسی
+fa Country endonym
+fa Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa Percent value −‪٪۱٬۲۳۴٫۵۶۷۹‬
+fa Currency value ۱٬۲۳۴٫۵۶ €
+fa Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa Date and time short (Gregorian Calendar) ۷/۲۱/۰۸،‏ ۱۲:۳۱
+fa Date and time medium (Gregorian Calendar) جولای ۲۱, ۲۰۰۸،‏ ۱۲:۳۱:۰۰
+fa Date and time long (Gregorian Calendar) جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time full (Gregorian Calendar) دوشنبه, جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa Name of month 01 (Gregorian Calendar) ژانویهٔ
+fa Name of month 02 (Gregorian Calendar) فوریهٔ
+fa Name of month 03 (Gregorian Calendar) مارس
+fa Name of month 04 (Gregorian Calendar) آوریل
+fa Name of month 05 (Gregorian Calendar) می
+fa Name of month 06 (Gregorian Calendar) جون
+fa Name of month 07 (Gregorian Calendar) جولای
+fa Name of month 08 (Gregorian Calendar) آگوست
+fa Name of month 09 (Gregorian Calendar) سپتامبر
+fa Name of month 10 (Gregorian Calendar) اکتبر
+fa Name of month 11 (Gregorian Calendar) نوامبر
+fa Name of month 12 (Gregorian Calendar) دسامبر
+fa Name of month 01 (Islamic Calendar) محرم
+fa Name of month 02 (Islamic Calendar) صفر
+fa Name of month 03 (Islamic Calendar) ربیع الاول
+fa Name of month 04 (Islamic Calendar) ربیع الثانی
+fa Name of month 05 (Islamic Calendar) جمادی الاول
+fa Name of month 06 (Islamic Calendar) جمادی الثانی
+fa Name of month 07 (Islamic Calendar) رجب
+fa Name of month 08 (Islamic Calendar) شعبان
+fa Name of month 09 (Islamic Calendar) رمضان
+fa Name of month 10 (Islamic Calendar) شوال
+fa Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa Name of weekday 05 (Gregorian Calendar) جمعه
+fa Name of weekday 06 (Gregorian Calendar) شنبه
+fa Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa Name of weekday 01 (Islamic Calendar) دوشنبه
+fa Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa Name of weekday 05 (Islamic Calendar) جمعه
+fa Name of weekday 06 (Islamic Calendar) شنبه
+fa Name of weekday 07 (Islamic Calendar) یکشنبه
+fa_AF Language endonym دری
+fa_AF Country endonym AF
+fa_AF Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa_AF Percent value −‪۱٬۲۳۴٫۵۶۷۹٪‬
+fa_AF Currency value ۱٬۲۳۴٫۵۶ €
+fa_AF Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa_AF Date and time short (Gregorian Calendar) ۷/۲۱/۰۸،‏ ۱۲:۳۱
+fa_AF Date and time medium (Gregorian Calendar) جول ۲۱, ۲۰۰۸،‏ ۱۲:۳۱:۰۰
+fa_AF Date and time long (Gregorian Calendar) جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time full (Gregorian Calendar) دوشنبه, جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa_AF Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa_AF Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_AF Name of month 01 (Gregorian Calendar) جنوری
+fa_AF Name of month 02 (Gregorian Calendar) فبروری
+fa_AF Name of month 03 (Gregorian Calendar) مارچ
+fa_AF Name of month 04 (Gregorian Calendar) اپریل
+fa_AF Name of month 05 (Gregorian Calendar) می
+fa_AF Name of month 06 (Gregorian Calendar) جون
+fa_AF Name of month 07 (Gregorian Calendar) جولای
+fa_AF Name of month 08 (Gregorian Calendar) اگست
+fa_AF Name of month 09 (Gregorian Calendar) سپتمبر
+fa_AF Name of month 10 (Gregorian Calendar) اکتوبر
+fa_AF Name of month 11 (Gregorian Calendar) نومبر
+fa_AF Name of month 12 (Gregorian Calendar) دسمبر
+fa_AF Name of month 01 (Islamic Calendar) محرم
+fa_AF Name of month 02 (Islamic Calendar) صفر
+fa_AF Name of month 03 (Islamic Calendar) ربیع الاول
+fa_AF Name of month 04 (Islamic Calendar) ربیع الثانی
+fa_AF Name of month 05 (Islamic Calendar) جمادی الاول
+fa_AF Name of month 06 (Islamic Calendar) جمادی الثانی
+fa_AF Name of month 07 (Islamic Calendar) رجب
+fa_AF Name of month 08 (Islamic Calendar) شعبان
+fa_AF Name of month 09 (Islamic Calendar) رمضان
+fa_AF Name of month 10 (Islamic Calendar) شوال
+fa_AF Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa_AF Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa_AF Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa_AF Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa_AF Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa_AF Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa_AF Name of weekday 05 (Gregorian Calendar) جمعه
+fa_AF Name of weekday 06 (Gregorian Calendar) شنبه
+fa_AF Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa_AF Name of weekday 01 (Islamic Calendar) دوشنبه
+fa_AF Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa_AF Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa_AF Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa_AF Name of weekday 05 (Islamic Calendar) جمعه
+fa_AF Name of weekday 06 (Islamic Calendar) شنبه
+fa_AF Name of weekday 07 (Islamic Calendar) یکشنبه
+fa_IR Language endonym فارسی
+fa_IR Country endonym ایران
+fa_IR Floating Point Number ‪−۱۲۳٬۴۵۶٬۷۸۹٫۰۱۲‬
+fa_IR Percent value −‪٪۱٬۲۳۴٫۵۶۷۹‬
+fa_IR Currency value ۱٬۲۳۴٫۵۶ €
+fa_IR Negative Currency value ‪−۱٬۲۳۴٫۵۶‬ €
+fa_IR Date and time short (Gregorian Calendar) ۷/۲۱/۰۸،‏ ۱۲:۳۱
+fa_IR Date and time medium (Gregorian Calendar) جولای ۲۱, ۲۰۰۸،‏ ۱۲:۳۱:۰۰
+fa_IR Date and time long (Gregorian Calendar) جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time full (Gregorian Calendar) دوشنبه, جولای ۲۱, ۲۰۰۸، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time short (Islamic Calendar) ۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱
+fa_IR Date and time medium (Islamic Calendar) ۱۴۲۹/۷/۱۸ ه‍. ق.،‏ ۱۲:۳۱:۰۰
+fa_IR Date and time long (Islamic Calendar) ۱۸ رجب ۱۴۲۹ ه‍. ق.، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Date and time full (Islamic Calendar) دوشنبه ۱۸ رجب ۱۴۲۹ هجری قمری، ساعت ۱۲:۳۱:۰۰ (GMT+۰۰:۰۰)
+fa_IR Name of month 01 (Gregorian Calendar) ژانویهٔ
+fa_IR Name of month 02 (Gregorian Calendar) فوریهٔ
+fa_IR Name of month 03 (Gregorian Calendar) مارس
+fa_IR Name of month 04 (Gregorian Calendar) آوریل
+fa_IR Name of month 05 (Gregorian Calendar) می
+fa_IR Name of month 06 (Gregorian Calendar) جون
+fa_IR Name of month 07 (Gregorian Calendar) جولای
+fa_IR Name of month 08 (Gregorian Calendar) آگوست
+fa_IR Name of month 09 (Gregorian Calendar) سپتامبر
+fa_IR Name of month 10 (Gregorian Calendar) اکتبر
+fa_IR Name of month 11 (Gregorian Calendar) نوامبر
+fa_IR Name of month 12 (Gregorian Calendar) دسامبر
+fa_IR Name of month 01 (Islamic Calendar) محرم
+fa_IR Name of month 02 (Islamic Calendar) صفر
+fa_IR Name of month 03 (Islamic Calendar) ربیع الاول
+fa_IR Name of month 04 (Islamic Calendar) ربیع الثانی
+fa_IR Name of month 05 (Islamic Calendar) جمادی الاول
+fa_IR Name of month 06 (Islamic Calendar) جمادی الثانی
+fa_IR Name of month 07 (Islamic Calendar) رجب
+fa_IR Name of month 08 (Islamic Calendar) شعبان
+fa_IR Name of month 09 (Islamic Calendar) رمضان
+fa_IR Name of month 10 (Islamic Calendar) شوال
+fa_IR Name of month 11 (Islamic Calendar) ذیقعدهٔ
+fa_IR Name of month 12 (Islamic Calendar) ذیحجهٔ
+fa_IR Name of weekday 01 (Gregorian Calendar) دوشنبه
+fa_IR Name of weekday 02 (Gregorian Calendar) سه‌شنبه
+fa_IR Name of weekday 03 (Gregorian Calendar) چهارشنبه
+fa_IR Name of weekday 04 (Gregorian Calendar) پنجشنبه
+fa_IR Name of weekday 05 (Gregorian Calendar) جمعه
+fa_IR Name of weekday 06 (Gregorian Calendar) شنبه
+fa_IR Name of weekday 07 (Gregorian Calendar) یکشنبه
+fa_IR Name of weekday 01 (Islamic Calendar) دوشنبه
+fa_IR Name of weekday 02 (Islamic Calendar) سه‌شنبه
+fa_IR Name of weekday 03 (Islamic Calendar) چهارشنبه
+fa_IR Name of weekday 04 (Islamic Calendar) پنجشنبه
+fa_IR Name of weekday 05 (Islamic Calendar) جمعه
+fa_IR Name of weekday 06 (Islamic Calendar) شنبه
+fa_IR Name of weekday 07 (Islamic Calendar) یکشنبه
+fi Language endonym suomi
+fi Country endonym
+fi Floating Point Number -123 456 789,012
+fi Percent value -1 234,5679 %
+fi Currency value 1 234,56 €
+fi Negative Currency value -1 234,56 €
+fi Date and time short (Gregorian Calendar) 21.7.2008 12.31
+fi Date and time medium (Gregorian Calendar) 21.7.2008 12.31.00
+fi Date and time long (Gregorian Calendar) 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi Date and time full (Gregorian Calendar) maanantaina 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi Date and time short (Islamic Calendar) 18.7.1429 12.31
+fi Date and time medium (Islamic Calendar) 18.7.1429 12.31.00
+fi Date and time long (Islamic Calendar) 18. radžab 1429 12.31.00 UTC+0.00
+fi Date and time full (Islamic Calendar) maanantaina 18. radžab 1429 12.31.00 UTC+0.00
+fi Name of month 01 (Gregorian Calendar) tammikuuta
+fi Name of month 02 (Gregorian Calendar) helmikuuta
+fi Name of month 03 (Gregorian Calendar) maaliskuuta
+fi Name of month 04 (Gregorian Calendar) huhtikuuta
+fi Name of month 05 (Gregorian Calendar) toukokuuta
+fi Name of month 06 (Gregorian Calendar) kesäkuuta
+fi Name of month 07 (Gregorian Calendar) heinäkuuta
+fi Name of month 08 (Gregorian Calendar) elokuuta
+fi Name of month 09 (Gregorian Calendar) syyskuuta
+fi Name of month 10 (Gregorian Calendar) lokakuuta
+fi Name of month 11 (Gregorian Calendar) marraskuuta
+fi Name of month 12 (Gregorian Calendar) joulukuuta
+fi Name of month 01 (Islamic Calendar) muharram
+fi Name of month 02 (Islamic Calendar) safar
+fi Name of month 03 (Islamic Calendar) rabi’ al-awwal
+fi Name of month 04 (Islamic Calendar) rabi’ al-akhir
+fi Name of month 05 (Islamic Calendar) džumada-l-ula
+fi Name of month 06 (Islamic Calendar) džumada-l-akhira
+fi Name of month 07 (Islamic Calendar) radžab
+fi Name of month 08 (Islamic Calendar) ša’ban
+fi Name of month 09 (Islamic Calendar) ramadan
+fi Name of month 10 (Islamic Calendar) šawwal
+fi Name of month 11 (Islamic Calendar) dhu-l-qa’da
+fi Name of month 12 (Islamic Calendar) dhu-l-hiddža
+fi Name of weekday 01 (Gregorian Calendar) maanantaina
+fi Name of weekday 02 (Gregorian Calendar) tiistaina
+fi Name of weekday 03 (Gregorian Calendar) keskiviikkona
+fi Name of weekday 04 (Gregorian Calendar) torstaina
+fi Name of weekday 05 (Gregorian Calendar) perjantaina
+fi Name of weekday 06 (Gregorian Calendar) lauantaina
+fi Name of weekday 07 (Gregorian Calendar) sunnuntaina
+fi Name of weekday 01 (Islamic Calendar) maanantaina
+fi Name of weekday 02 (Islamic Calendar) tiistaina
+fi Name of weekday 03 (Islamic Calendar) keskiviikkona
+fi Name of weekday 04 (Islamic Calendar) torstaina
+fi Name of weekday 05 (Islamic Calendar) perjantaina
+fi Name of weekday 06 (Islamic Calendar) lauantaina
+fi Name of weekday 07 (Islamic Calendar) sunnuntaina
+fi_FI Language endonym suomi
+fi_FI Country endonym Suomi
+fi_FI Floating Point Number -123 456 789,012
+fi_FI Percent value -1 234,5679 %
+fi_FI Currency value 1 234,56 €
+fi_FI Negative Currency value -1 234,56 €
+fi_FI Date and time short (Gregorian Calendar) 21.7.2008 12.31
+fi_FI Date and time medium (Gregorian Calendar) 21.7.2008 12.31.00
+fi_FI Date and time long (Gregorian Calendar) 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi_FI Date and time full (Gregorian Calendar) maanantaina 21. heinäkuuta 2008 12.31.00 UTC+0.00
+fi_FI Date and time short (Islamic Calendar) 18.7.1429 12.31
+fi_FI Date and time medium (Islamic Calendar) 18.7.1429 12.31.00
+fi_FI Date and time long (Islamic Calendar) 18. radžab 1429 12.31.00 UTC+0.00
+fi_FI Date and time full (Islamic Calendar) maanantaina 18. radžab 1429 12.31.00 UTC+0.00
+fi_FI Name of month 01 (Gregorian Calendar) tammikuuta
+fi_FI Name of month 02 (Gregorian Calendar) helmikuuta
+fi_FI Name of month 03 (Gregorian Calendar) maaliskuuta
+fi_FI Name of month 04 (Gregorian Calendar) huhtikuuta
+fi_FI Name of month 05 (Gregorian Calendar) toukokuuta
+fi_FI Name of month 06 (Gregorian Calendar) kesäkuuta
+fi_FI Name of month 07 (Gregorian Calendar) heinäkuuta
+fi_FI Name of month 08 (Gregorian Calendar) elokuuta
+fi_FI Name of month 09 (Gregorian Calendar) syyskuuta
+fi_FI Name of month 10 (Gregorian Calendar) lokakuuta
+fi_FI Name of month 11 (Gregorian Calendar) marraskuuta
+fi_FI Name of month 12 (Gregorian Calendar) joulukuuta
+fi_FI Name of month 01 (Islamic Calendar) muharram
+fi_FI Name of month 02 (Islamic Calendar) safar
+fi_FI Name of month 03 (Islamic Calendar) rabi’ al-awwal
+fi_FI Name of month 04 (Islamic Calendar) rabi’ al-akhir
+fi_FI Name of month 05 (Islamic Calendar) džumada-l-ula
+fi_FI Name of month 06 (Islamic Calendar) džumada-l-akhira
+fi_FI Name of month 07 (Islamic Calendar) radžab
+fi_FI Name of month 08 (Islamic Calendar) ša’ban
+fi_FI Name of month 09 (Islamic Calendar) ramadan
+fi_FI Name of month 10 (Islamic Calendar) šawwal
+fi_FI Name of month 11 (Islamic Calendar) dhu-l-qa’da
+fi_FI Name of month 12 (Islamic Calendar) dhu-l-hiddža
+fi_FI Name of weekday 01 (Gregorian Calendar) maanantaina
+fi_FI Name of weekday 02 (Gregorian Calendar) tiistaina
+fi_FI Name of weekday 03 (Gregorian Calendar) keskiviikkona
+fi_FI Name of weekday 04 (Gregorian Calendar) torstaina
+fi_FI Name of weekday 05 (Gregorian Calendar) perjantaina
+fi_FI Name of weekday 06 (Gregorian Calendar) lauantaina
+fi_FI Name of weekday 07 (Gregorian Calendar) sunnuntaina
+fi_FI Name of weekday 01 (Islamic Calendar) maanantaina
+fi_FI Name of weekday 02 (Islamic Calendar) tiistaina
+fi_FI Name of weekday 03 (Islamic Calendar) keskiviikkona
+fi_FI Name of weekday 04 (Islamic Calendar) torstaina
+fi_FI Name of weekday 05 (Islamic Calendar) perjantaina
+fi_FI Name of weekday 06 (Islamic Calendar) lauantaina
+fi_FI Name of weekday 07 (Islamic Calendar) sunnuntaina
+fr Language endonym français
+fr Country endonym
+fr Floating Point Number -123 456 789,012
+fr Percent value -1 234,5679 %
+fr Currency value 1 234,56 €
+fr Negative Currency value -1 234,56 €
+fr Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr Date and time short (Islamic Calendar) 18/07/29 12:31
+fr Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr Name of month 01 (Gregorian Calendar) janvier
+fr Name of month 02 (Gregorian Calendar) février
+fr Name of month 03 (Gregorian Calendar) mars
+fr Name of month 04 (Gregorian Calendar) avril
+fr Name of month 05 (Gregorian Calendar) mai
+fr Name of month 06 (Gregorian Calendar) juin
+fr Name of month 07 (Gregorian Calendar) juillet
+fr Name of month 08 (Gregorian Calendar) août
+fr Name of month 09 (Gregorian Calendar) septembre
+fr Name of month 10 (Gregorian Calendar) octobre
+fr Name of month 11 (Gregorian Calendar) novembre
+fr Name of month 12 (Gregorian Calendar) décembre
+fr Name of month 01 (Islamic Calendar) Mouharram
+fr Name of month 02 (Islamic Calendar) Safar
+fr Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr Name of month 07 (Islamic Calendar) Radjab
+fr Name of month 08 (Islamic Calendar) Chaʻban
+fr Name of month 09 (Islamic Calendar) Ramadan
+fr Name of month 10 (Islamic Calendar) Chaououal
+fr Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr Name of weekday 01 (Gregorian Calendar) lundi
+fr Name of weekday 02 (Gregorian Calendar) mardi
+fr Name of weekday 03 (Gregorian Calendar) mercredi
+fr Name of weekday 04 (Gregorian Calendar) jeudi
+fr Name of weekday 05 (Gregorian Calendar) vendredi
+fr Name of weekday 06 (Gregorian Calendar) samedi
+fr Name of weekday 07 (Gregorian Calendar) dimanche
+fr Name of weekday 01 (Islamic Calendar) lundi
+fr Name of weekday 02 (Islamic Calendar) mardi
+fr Name of weekday 03 (Islamic Calendar) mercredi
+fr Name of weekday 04 (Islamic Calendar) jeudi
+fr Name of weekday 05 (Islamic Calendar) vendredi
+fr Name of weekday 06 (Islamic Calendar) samedi
+fr Name of weekday 07 (Islamic Calendar) dimanche
+fr_BE Language endonym français
+fr_BE Country endonym Belgique
+fr_BE Floating Point Number -123.456.789,012
+fr_BE Percent value -1.234,5679 %
+fr_BE Currency value 1.234,56 €
+fr_BE Negative Currency value -1.234,56 €
+fr_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_BE Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_BE Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_BE Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12 h 31 min 00 s UTC+00:00
+fr_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_BE Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_BE Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_BE Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12 h 31 min 00 s UTC+00:00
+fr_BE Name of month 01 (Gregorian Calendar) janvier
+fr_BE Name of month 02 (Gregorian Calendar) février
+fr_BE Name of month 03 (Gregorian Calendar) mars
+fr_BE Name of month 04 (Gregorian Calendar) avril
+fr_BE Name of month 05 (Gregorian Calendar) mai
+fr_BE Name of month 06 (Gregorian Calendar) juin
+fr_BE Name of month 07 (Gregorian Calendar) juillet
+fr_BE Name of month 08 (Gregorian Calendar) août
+fr_BE Name of month 09 (Gregorian Calendar) septembre
+fr_BE Name of month 10 (Gregorian Calendar) octobre
+fr_BE Name of month 11 (Gregorian Calendar) novembre
+fr_BE Name of month 12 (Gregorian Calendar) décembre
+fr_BE Name of month 01 (Islamic Calendar) Mouharram
+fr_BE Name of month 02 (Islamic Calendar) Safar
+fr_BE Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_BE Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_BE Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_BE Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_BE Name of month 07 (Islamic Calendar) Radjab
+fr_BE Name of month 08 (Islamic Calendar) Chaʻban
+fr_BE Name of month 09 (Islamic Calendar) Ramadan
+fr_BE Name of month 10 (Islamic Calendar) Chaououal
+fr_BE Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_BE Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_BE Name of weekday 01 (Gregorian Calendar) lundi
+fr_BE Name of weekday 02 (Gregorian Calendar) mardi
+fr_BE Name of weekday 03 (Gregorian Calendar) mercredi
+fr_BE Name of weekday 04 (Gregorian Calendar) jeudi
+fr_BE Name of weekday 05 (Gregorian Calendar) vendredi
+fr_BE Name of weekday 06 (Gregorian Calendar) samedi
+fr_BE Name of weekday 07 (Gregorian Calendar) dimanche
+fr_BE Name of weekday 01 (Islamic Calendar) lundi
+fr_BE Name of weekday 02 (Islamic Calendar) mardi
+fr_BE Name of weekday 03 (Islamic Calendar) mercredi
+fr_BE Name of weekday 04 (Islamic Calendar) jeudi
+fr_BE Name of weekday 05 (Islamic Calendar) vendredi
+fr_BE Name of weekday 06 (Islamic Calendar) samedi
+fr_BE Name of weekday 07 (Islamic Calendar) dimanche
+fr_CA Language endonym français
+fr_CA Country endonym Canada
+fr_CA Floating Point Number -123 456 789,012
+fr_CA Percent value -1 234,5679 %
+fr_CA Currency value 1 234,56 €
+fr_CA Negative Currency value (1 234,56 €)
+fr_CA Date and time short (Gregorian Calendar) 08-07-21 12:31
+fr_CA Date and time medium (Gregorian Calendar) 2008-07-21 12:31:00
+fr_CA Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_CA Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12 h 31 min 00 s UTC+00:00
+fr_CA Date and time short (Islamic Calendar) 29-07-18 12:31
+fr_CA Date and time medium (Islamic Calendar) 1429-07-18 12:31:00
+fr_CA Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_CA Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12 h 31 min 00 s UTC+00:00
+fr_CA Name of month 01 (Gregorian Calendar) janvier
+fr_CA Name of month 02 (Gregorian Calendar) février
+fr_CA Name of month 03 (Gregorian Calendar) mars
+fr_CA Name of month 04 (Gregorian Calendar) avril
+fr_CA Name of month 05 (Gregorian Calendar) mai
+fr_CA Name of month 06 (Gregorian Calendar) juin
+fr_CA Name of month 07 (Gregorian Calendar) juillet
+fr_CA Name of month 08 (Gregorian Calendar) août
+fr_CA Name of month 09 (Gregorian Calendar) septembre
+fr_CA Name of month 10 (Gregorian Calendar) octobre
+fr_CA Name of month 11 (Gregorian Calendar) novembre
+fr_CA Name of month 12 (Gregorian Calendar) décembre
+fr_CA Name of month 01 (Islamic Calendar) Mouharram
+fr_CA Name of month 02 (Islamic Calendar) Safar
+fr_CA Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_CA Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_CA Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_CA Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_CA Name of month 07 (Islamic Calendar) Radjab
+fr_CA Name of month 08 (Islamic Calendar) Chaʻban
+fr_CA Name of month 09 (Islamic Calendar) Ramadan
+fr_CA Name of month 10 (Islamic Calendar) Chaououal
+fr_CA Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_CA Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_CA Name of weekday 01 (Gregorian Calendar) lundi
+fr_CA Name of weekday 02 (Gregorian Calendar) mardi
+fr_CA Name of weekday 03 (Gregorian Calendar) mercredi
+fr_CA Name of weekday 04 (Gregorian Calendar) jeudi
+fr_CA Name of weekday 05 (Gregorian Calendar) vendredi
+fr_CA Name of weekday 06 (Gregorian Calendar) samedi
+fr_CA Name of weekday 07 (Gregorian Calendar) dimanche
+fr_CA Name of weekday 01 (Islamic Calendar) lundi
+fr_CA Name of weekday 02 (Islamic Calendar) mardi
+fr_CA Name of weekday 03 (Islamic Calendar) mercredi
+fr_CA Name of weekday 04 (Islamic Calendar) jeudi
+fr_CA Name of weekday 05 (Islamic Calendar) vendredi
+fr_CA Name of weekday 06 (Islamic Calendar) samedi
+fr_CA Name of weekday 07 (Islamic Calendar) dimanche
+fr_CH Language endonym français
+fr_CH Country endonym Suisse
+fr_CH Floating Point Number -123'456'789.012
+fr_CH Percent value -1'234.5679 %
+fr_CH Currency value € 1'234.56
+fr_CH Negative Currency value €-1'234.56
+fr_CH Date and time short (Gregorian Calendar) 21.07.08 12:31
+fr_CH Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_CH Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_CH Date and time full (Gregorian Calendar) lundi, 21 juillet 2008 12.31:00 h UTC+00:00
+fr_CH Date and time short (Islamic Calendar) 18.07.29 12:31
+fr_CH Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_CH Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_CH Date and time full (Islamic Calendar) lundi, 18 Radjab 1429 12.31:00 h UTC+00:00
+fr_CH Name of month 01 (Gregorian Calendar) janvier
+fr_CH Name of month 02 (Gregorian Calendar) février
+fr_CH Name of month 03 (Gregorian Calendar) mars
+fr_CH Name of month 04 (Gregorian Calendar) avril
+fr_CH Name of month 05 (Gregorian Calendar) mai
+fr_CH Name of month 06 (Gregorian Calendar) juin
+fr_CH Name of month 07 (Gregorian Calendar) juillet
+fr_CH Name of month 08 (Gregorian Calendar) août
+fr_CH Name of month 09 (Gregorian Calendar) septembre
+fr_CH Name of month 10 (Gregorian Calendar) octobre
+fr_CH Name of month 11 (Gregorian Calendar) novembre
+fr_CH Name of month 12 (Gregorian Calendar) décembre
+fr_CH Name of month 01 (Islamic Calendar) Mouharram
+fr_CH Name of month 02 (Islamic Calendar) Safar
+fr_CH Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_CH Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_CH Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_CH Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_CH Name of month 07 (Islamic Calendar) Radjab
+fr_CH Name of month 08 (Islamic Calendar) Chaʻban
+fr_CH Name of month 09 (Islamic Calendar) Ramadan
+fr_CH Name of month 10 (Islamic Calendar) Chaououal
+fr_CH Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_CH Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_CH Name of weekday 01 (Gregorian Calendar) lundi
+fr_CH Name of weekday 02 (Gregorian Calendar) mardi
+fr_CH Name of weekday 03 (Gregorian Calendar) mercredi
+fr_CH Name of weekday 04 (Gregorian Calendar) jeudi
+fr_CH Name of weekday 05 (Gregorian Calendar) vendredi
+fr_CH Name of weekday 06 (Gregorian Calendar) samedi
+fr_CH Name of weekday 07 (Gregorian Calendar) dimanche
+fr_CH Name of weekday 01 (Islamic Calendar) lundi
+fr_CH Name of weekday 02 (Islamic Calendar) mardi
+fr_CH Name of weekday 03 (Islamic Calendar) mercredi
+fr_CH Name of weekday 04 (Islamic Calendar) jeudi
+fr_CH Name of weekday 05 (Islamic Calendar) vendredi
+fr_CH Name of weekday 06 (Islamic Calendar) samedi
+fr_CH Name of weekday 07 (Islamic Calendar) dimanche
+fr_FR Language endonym français
+fr_FR Country endonym France
+fr_FR Floating Point Number -123 456 789,012
+fr_FR Percent value -1 234,5679 %
+fr_FR Currency value 1 234,56 €
+fr_FR Negative Currency value -1 234,56 €
+fr_FR Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_FR Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_FR Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_FR Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_FR Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_FR Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_FR Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_FR Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_FR Name of month 01 (Gregorian Calendar) janvier
+fr_FR Name of month 02 (Gregorian Calendar) février
+fr_FR Name of month 03 (Gregorian Calendar) mars
+fr_FR Name of month 04 (Gregorian Calendar) avril
+fr_FR Name of month 05 (Gregorian Calendar) mai
+fr_FR Name of month 06 (Gregorian Calendar) juin
+fr_FR Name of month 07 (Gregorian Calendar) juillet
+fr_FR Name of month 08 (Gregorian Calendar) août
+fr_FR Name of month 09 (Gregorian Calendar) septembre
+fr_FR Name of month 10 (Gregorian Calendar) octobre
+fr_FR Name of month 11 (Gregorian Calendar) novembre
+fr_FR Name of month 12 (Gregorian Calendar) décembre
+fr_FR Name of month 01 (Islamic Calendar) Mouharram
+fr_FR Name of month 02 (Islamic Calendar) Safar
+fr_FR Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_FR Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_FR Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_FR Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_FR Name of month 07 (Islamic Calendar) Radjab
+fr_FR Name of month 08 (Islamic Calendar) Chaʻban
+fr_FR Name of month 09 (Islamic Calendar) Ramadan
+fr_FR Name of month 10 (Islamic Calendar) Chaououal
+fr_FR Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_FR Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_FR Name of weekday 01 (Gregorian Calendar) lundi
+fr_FR Name of weekday 02 (Gregorian Calendar) mardi
+fr_FR Name of weekday 03 (Gregorian Calendar) mercredi
+fr_FR Name of weekday 04 (Gregorian Calendar) jeudi
+fr_FR Name of weekday 05 (Gregorian Calendar) vendredi
+fr_FR Name of weekday 06 (Gregorian Calendar) samedi
+fr_FR Name of weekday 07 (Gregorian Calendar) dimanche
+fr_FR Name of weekday 01 (Islamic Calendar) lundi
+fr_FR Name of weekday 02 (Islamic Calendar) mardi
+fr_FR Name of weekday 03 (Islamic Calendar) mercredi
+fr_FR Name of weekday 04 (Islamic Calendar) jeudi
+fr_FR Name of weekday 05 (Islamic Calendar) vendredi
+fr_FR Name of weekday 06 (Islamic Calendar) samedi
+fr_FR Name of weekday 07 (Islamic Calendar) dimanche
+fr_LU Language endonym français
+fr_LU Country endonym Luxembourg
+fr_LU Floating Point Number -123.456.789,012
+fr_LU Percent value -1.234,5679 %
+fr_LU Currency value 1.234,56 €
+fr_LU Negative Currency value -1.234,56 €
+fr_LU Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_LU Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_LU Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_LU Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_LU Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_LU Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_LU Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_LU Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_LU Name of month 01 (Gregorian Calendar) janvier
+fr_LU Name of month 02 (Gregorian Calendar) février
+fr_LU Name of month 03 (Gregorian Calendar) mars
+fr_LU Name of month 04 (Gregorian Calendar) avril
+fr_LU Name of month 05 (Gregorian Calendar) mai
+fr_LU Name of month 06 (Gregorian Calendar) juin
+fr_LU Name of month 07 (Gregorian Calendar) juillet
+fr_LU Name of month 08 (Gregorian Calendar) août
+fr_LU Name of month 09 (Gregorian Calendar) septembre
+fr_LU Name of month 10 (Gregorian Calendar) octobre
+fr_LU Name of month 11 (Gregorian Calendar) novembre
+fr_LU Name of month 12 (Gregorian Calendar) décembre
+fr_LU Name of month 01 (Islamic Calendar) Mouharram
+fr_LU Name of month 02 (Islamic Calendar) Safar
+fr_LU Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_LU Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_LU Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_LU Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_LU Name of month 07 (Islamic Calendar) Radjab
+fr_LU Name of month 08 (Islamic Calendar) Chaʻban
+fr_LU Name of month 09 (Islamic Calendar) Ramadan
+fr_LU Name of month 10 (Islamic Calendar) Chaououal
+fr_LU Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_LU Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_LU Name of weekday 01 (Gregorian Calendar) lundi
+fr_LU Name of weekday 02 (Gregorian Calendar) mardi
+fr_LU Name of weekday 03 (Gregorian Calendar) mercredi
+fr_LU Name of weekday 04 (Gregorian Calendar) jeudi
+fr_LU Name of weekday 05 (Gregorian Calendar) vendredi
+fr_LU Name of weekday 06 (Gregorian Calendar) samedi
+fr_LU Name of weekday 07 (Gregorian Calendar) dimanche
+fr_LU Name of weekday 01 (Islamic Calendar) lundi
+fr_LU Name of weekday 02 (Islamic Calendar) mardi
+fr_LU Name of weekday 03 (Islamic Calendar) mercredi
+fr_LU Name of weekday 04 (Islamic Calendar) jeudi
+fr_LU Name of weekday 05 (Islamic Calendar) vendredi
+fr_LU Name of weekday 06 (Islamic Calendar) samedi
+fr_LU Name of weekday 07 (Islamic Calendar) dimanche
+fr_MC Language endonym français
+fr_MC Country endonym Monaco
+fr_MC Floating Point Number -123 456 789,012
+fr_MC Percent value -1 234,5679 %
+fr_MC Currency value 1 234,56 €
+fr_MC Negative Currency value -1 234,56 €
+fr_MC Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_MC Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_MC Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_MC Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_MC Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_MC Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_MC Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_MC Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_MC Name of month 01 (Gregorian Calendar) janvier
+fr_MC Name of month 02 (Gregorian Calendar) février
+fr_MC Name of month 03 (Gregorian Calendar) mars
+fr_MC Name of month 04 (Gregorian Calendar) avril
+fr_MC Name of month 05 (Gregorian Calendar) mai
+fr_MC Name of month 06 (Gregorian Calendar) juin
+fr_MC Name of month 07 (Gregorian Calendar) juillet
+fr_MC Name of month 08 (Gregorian Calendar) août
+fr_MC Name of month 09 (Gregorian Calendar) septembre
+fr_MC Name of month 10 (Gregorian Calendar) octobre
+fr_MC Name of month 11 (Gregorian Calendar) novembre
+fr_MC Name of month 12 (Gregorian Calendar) décembre
+fr_MC Name of month 01 (Islamic Calendar) Mouharram
+fr_MC Name of month 02 (Islamic Calendar) Safar
+fr_MC Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_MC Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_MC Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_MC Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_MC Name of month 07 (Islamic Calendar) Radjab
+fr_MC Name of month 08 (Islamic Calendar) Chaʻban
+fr_MC Name of month 09 (Islamic Calendar) Ramadan
+fr_MC Name of month 10 (Islamic Calendar) Chaououal
+fr_MC Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_MC Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_MC Name of weekday 01 (Gregorian Calendar) lundi
+fr_MC Name of weekday 02 (Gregorian Calendar) mardi
+fr_MC Name of weekday 03 (Gregorian Calendar) mercredi
+fr_MC Name of weekday 04 (Gregorian Calendar) jeudi
+fr_MC Name of weekday 05 (Gregorian Calendar) vendredi
+fr_MC Name of weekday 06 (Gregorian Calendar) samedi
+fr_MC Name of weekday 07 (Gregorian Calendar) dimanche
+fr_MC Name of weekday 01 (Islamic Calendar) lundi
+fr_MC Name of weekday 02 (Islamic Calendar) mardi
+fr_MC Name of weekday 03 (Islamic Calendar) mercredi
+fr_MC Name of weekday 04 (Islamic Calendar) jeudi
+fr_MC Name of weekday 05 (Islamic Calendar) vendredi
+fr_MC Name of weekday 06 (Islamic Calendar) samedi
+fr_MC Name of weekday 07 (Islamic Calendar) dimanche
+fr_SN Language endonym français
+fr_SN Country endonym Sénégal
+fr_SN Floating Point Number -123 456 789,012
+fr_SN Percent value -1 234,5679 %
+fr_SN Currency value 1 234,56 €
+fr_SN Negative Currency value -1 234,56 €
+fr_SN Date and time short (Gregorian Calendar) 21/07/08 12:31
+fr_SN Date and time medium (Gregorian Calendar) 21 juil. 2008 12:31:00
+fr_SN Date and time long (Gregorian Calendar) 21 juillet 2008 12:31:00 UTC+00:00
+fr_SN Date and time full (Gregorian Calendar) lundi 21 juillet 2008 12:31:00 UTC+00:00
+fr_SN Date and time short (Islamic Calendar) 18/07/29 12:31
+fr_SN Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+fr_SN Date and time long (Islamic Calendar) 18 Radjab 1429 12:31:00 UTC+00:00
+fr_SN Date and time full (Islamic Calendar) lundi 18 Radjab 1429 12:31:00 UTC+00:00
+fr_SN Name of month 01 (Gregorian Calendar) janvier
+fr_SN Name of month 02 (Gregorian Calendar) février
+fr_SN Name of month 03 (Gregorian Calendar) mars
+fr_SN Name of month 04 (Gregorian Calendar) avril
+fr_SN Name of month 05 (Gregorian Calendar) mai
+fr_SN Name of month 06 (Gregorian Calendar) juin
+fr_SN Name of month 07 (Gregorian Calendar) juillet
+fr_SN Name of month 08 (Gregorian Calendar) août
+fr_SN Name of month 09 (Gregorian Calendar) septembre
+fr_SN Name of month 10 (Gregorian Calendar) octobre
+fr_SN Name of month 11 (Gregorian Calendar) novembre
+fr_SN Name of month 12 (Gregorian Calendar) décembre
+fr_SN Name of month 01 (Islamic Calendar) Mouharram
+fr_SN Name of month 02 (Islamic Calendar) Safar
+fr_SN Name of month 03 (Islamic Calendar) Rabiʻ-oul-Aououal
+fr_SN Name of month 04 (Islamic Calendar) Rabiʻ-out-Tani
+fr_SN Name of month 05 (Islamic Calendar) Djoumada-l-Oula
+fr_SN Name of month 06 (Islamic Calendar) Djoumada-t-Tania
+fr_SN Name of month 07 (Islamic Calendar) Radjab
+fr_SN Name of month 08 (Islamic Calendar) Chaʻban
+fr_SN Name of month 09 (Islamic Calendar) Ramadan
+fr_SN Name of month 10 (Islamic Calendar) Chaououal
+fr_SN Name of month 11 (Islamic Calendar) Dou-l-Qaʻda
+fr_SN Name of month 12 (Islamic Calendar) Dou-l-Hidjja
+fr_SN Name of weekday 01 (Gregorian Calendar) lundi
+fr_SN Name of weekday 02 (Gregorian Calendar) mardi
+fr_SN Name of weekday 03 (Gregorian Calendar) mercredi
+fr_SN Name of weekday 04 (Gregorian Calendar) jeudi
+fr_SN Name of weekday 05 (Gregorian Calendar) vendredi
+fr_SN Name of weekday 06 (Gregorian Calendar) samedi
+fr_SN Name of weekday 07 (Gregorian Calendar) dimanche
+fr_SN Name of weekday 01 (Islamic Calendar) lundi
+fr_SN Name of weekday 02 (Islamic Calendar) mardi
+fr_SN Name of weekday 03 (Islamic Calendar) mercredi
+fr_SN Name of weekday 04 (Islamic Calendar) jeudi
+fr_SN Name of weekday 05 (Islamic Calendar) vendredi
+fr_SN Name of weekday 06 (Islamic Calendar) samedi
+fr_SN Name of weekday 07 (Islamic Calendar) dimanche
+gl Language endonym galego
+gl Country endonym
+gl Floating Point Number -123.456.789,012
+gl Percent value -1.234,5679%
+gl Currency value 1.234,56 €
+gl Negative Currency value -1.234,56 €
+gl Date and time short (Gregorian Calendar) 21/07/08 12:31
+gl Date and time medium (Gregorian Calendar) 21 Xul, 2008 12:31:00
+gl Date and time long (Gregorian Calendar) 21 Xullo 2008 12:31:00 GMT+00:00
+gl Date and time full (Gregorian Calendar) Luns 21 Xullo 2008 12:31:00 GMT+00:00
+gl Date and time short (Islamic Calendar) 18/07/29 12:31
+gl Date and time medium (Islamic Calendar) 18 Raj., 1429 12:31:00
+gl Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+gl Date and time full (Islamic Calendar) Luns 18 Rajab 1429 12:31:00 GMT+00:00
+gl Name of month 01 (Gregorian Calendar) Xaneiro
+gl Name of month 02 (Gregorian Calendar) Febreiro
+gl Name of month 03 (Gregorian Calendar) Marzo
+gl Name of month 04 (Gregorian Calendar) Abril
+gl Name of month 05 (Gregorian Calendar) Maio
+gl Name of month 06 (Gregorian Calendar) Xuño
+gl Name of month 07 (Gregorian Calendar) Xullo
+gl Name of month 08 (Gregorian Calendar) Agosto
+gl Name of month 09 (Gregorian Calendar) Setembro
+gl Name of month 10 (Gregorian Calendar) Outubro
+gl Name of month 11 (Gregorian Calendar) Novembro
+gl Name of month 12 (Gregorian Calendar) Decembro
+gl Name of month 01 (Islamic Calendar) Muharram
+gl Name of month 02 (Islamic Calendar) Safar
+gl Name of month 03 (Islamic Calendar) Rabiʻ I
+gl Name of month 04 (Islamic Calendar) Rabiʻ II
+gl Name of month 05 (Islamic Calendar) Jumada I
+gl Name of month 06 (Islamic Calendar) Jumada II
+gl Name of month 07 (Islamic Calendar) Rajab
+gl Name of month 08 (Islamic Calendar) Shaʻban
+gl Name of month 09 (Islamic Calendar) Ramadan
+gl Name of month 10 (Islamic Calendar) Shawwal
+gl Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+gl Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+gl Name of weekday 01 (Gregorian Calendar) Luns
+gl Name of weekday 02 (Gregorian Calendar) Martes
+gl Name of weekday 03 (Gregorian Calendar) Mércores
+gl Name of weekday 04 (Gregorian Calendar) Xoves
+gl Name of weekday 05 (Gregorian Calendar) Venres
+gl Name of weekday 06 (Gregorian Calendar) Sábado
+gl Name of weekday 07 (Gregorian Calendar) Domingo
+gl Name of weekday 01 (Islamic Calendar) Luns
+gl Name of weekday 02 (Islamic Calendar) Martes
+gl Name of weekday 03 (Islamic Calendar) Mércores
+gl Name of weekday 04 (Islamic Calendar) Xoves
+gl Name of weekday 05 (Islamic Calendar) Venres
+gl Name of weekday 06 (Islamic Calendar) Sábado
+gl Name of weekday 07 (Islamic Calendar) Domingo
+gl_ES Language endonym galego
+gl_ES Country endonym España
+gl_ES Floating Point Number -123.456.789,012
+gl_ES Percent value -1.234,5679%
+gl_ES Currency value 1.234,56 €
+gl_ES Negative Currency value -1.234,56 €
+gl_ES Date and time short (Gregorian Calendar) 21/07/08 12:31
+gl_ES Date and time medium (Gregorian Calendar) 21 Xul, 2008 12:31:00
+gl_ES Date and time long (Gregorian Calendar) 21 Xullo 2008 12:31:00 GMT+00:00
+gl_ES Date and time full (Gregorian Calendar) Luns 21 Xullo 2008 12:31:00 GMT+00:00
+gl_ES Date and time short (Islamic Calendar) 18/07/29 12:31
+gl_ES Date and time medium (Islamic Calendar) 18 Raj., 1429 12:31:00
+gl_ES Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+gl_ES Date and time full (Islamic Calendar) Luns 18 Rajab 1429 12:31:00 GMT+00:00
+gl_ES Name of month 01 (Gregorian Calendar) Xaneiro
+gl_ES Name of month 02 (Gregorian Calendar) Febreiro
+gl_ES Name of month 03 (Gregorian Calendar) Marzo
+gl_ES Name of month 04 (Gregorian Calendar) Abril
+gl_ES Name of month 05 (Gregorian Calendar) Maio
+gl_ES Name of month 06 (Gregorian Calendar) Xuño
+gl_ES Name of month 07 (Gregorian Calendar) Xullo
+gl_ES Name of month 08 (Gregorian Calendar) Agosto
+gl_ES Name of month 09 (Gregorian Calendar) Setembro
+gl_ES Name of month 10 (Gregorian Calendar) Outubro
+gl_ES Name of month 11 (Gregorian Calendar) Novembro
+gl_ES Name of month 12 (Gregorian Calendar) Decembro
+gl_ES Name of month 01 (Islamic Calendar) Muharram
+gl_ES Name of month 02 (Islamic Calendar) Safar
+gl_ES Name of month 03 (Islamic Calendar) Rabiʻ I
+gl_ES Name of month 04 (Islamic Calendar) Rabiʻ II
+gl_ES Name of month 05 (Islamic Calendar) Jumada I
+gl_ES Name of month 06 (Islamic Calendar) Jumada II
+gl_ES Name of month 07 (Islamic Calendar) Rajab
+gl_ES Name of month 08 (Islamic Calendar) Shaʻban
+gl_ES Name of month 09 (Islamic Calendar) Ramadan
+gl_ES Name of month 10 (Islamic Calendar) Shawwal
+gl_ES Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+gl_ES Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+gl_ES Name of weekday 01 (Gregorian Calendar) Luns
+gl_ES Name of weekday 02 (Gregorian Calendar) Martes
+gl_ES Name of weekday 03 (Gregorian Calendar) Mércores
+gl_ES Name of weekday 04 (Gregorian Calendar) Xoves
+gl_ES Name of weekday 05 (Gregorian Calendar) Venres
+gl_ES Name of weekday 06 (Gregorian Calendar) Sábado
+gl_ES Name of weekday 07 (Gregorian Calendar) Domingo
+gl_ES Name of weekday 01 (Islamic Calendar) Luns
+gl_ES Name of weekday 02 (Islamic Calendar) Martes
+gl_ES Name of weekday 03 (Islamic Calendar) Mércores
+gl_ES Name of weekday 04 (Islamic Calendar) Xoves
+gl_ES Name of weekday 05 (Islamic Calendar) Venres
+gl_ES Name of weekday 06 (Islamic Calendar) Sábado
+gl_ES Name of weekday 07 (Islamic Calendar) Domingo
+he Language endonym עברית
+he Country endonym
+he Floating Point Number -123,456,789.012
+he Percent value -1,234.5679%
+he Currency value 1,234.56 €
+he Negative Currency value -1,234.56 €
+he Date and time short (Gregorian Calendar) 21/07/08 12:31
+he Date and time medium (Gregorian Calendar) 21 ביול 2008 12:31:00
+he Date and time long (Gregorian Calendar) 21 ביולי 2008 12:31:00 GMT+00:00
+he Date and time full (Gregorian Calendar) יום שני, 21 ביולי 2008 12:31:00 GMT+00:00
+he Date and time short (Islamic Calendar) 18/07/29 12:31
+he Date and time medium (Islamic Calendar) 18 בRaj. 1429 12:31:00
+he Date and time long (Islamic Calendar) 18 ברג׳אב 1429 12:31:00 GMT+00:00
+he Date and time full (Islamic Calendar) יום שני, 18 ברג׳אב 1429 12:31:00 GMT+00:00
+he Name of month 01 (Gregorian Calendar) ינואר
+he Name of month 02 (Gregorian Calendar) פברואר
+he Name of month 03 (Gregorian Calendar) מרס
+he Name of month 04 (Gregorian Calendar) אפריל
+he Name of month 05 (Gregorian Calendar) מאי
+he Name of month 06 (Gregorian Calendar) יוני
+he Name of month 07 (Gregorian Calendar) יולי
+he Name of month 08 (Gregorian Calendar) אוגוסט
+he Name of month 09 (Gregorian Calendar) ספטמבר
+he Name of month 10 (Gregorian Calendar) אוקטובר
+he Name of month 11 (Gregorian Calendar) נובמבר
+he Name of month 12 (Gregorian Calendar) דצמבר
+he Name of month 01 (Islamic Calendar) מוחרם
+he Name of month 02 (Islamic Calendar) ספר
+he Name of month 03 (Islamic Calendar) רביע אל-אוואל
+he Name of month 04 (Islamic Calendar) רביע אל-תני
+he Name of month 05 (Islamic Calendar) ג׳ומדה אל-אוואל
+he Name of month 06 (Islamic Calendar) ג׳ומדה אל-תני
+he Name of month 07 (Islamic Calendar) רג׳אב
+he Name of month 08 (Islamic Calendar) שעבאן
+he Name of month 09 (Islamic Calendar) ראמדן
+he Name of month 10 (Islamic Calendar) שוואל
+he Name of month 11 (Islamic Calendar) זו אל-QI'DAH
+he Name of month 12 (Islamic Calendar) זו אל-חיג׳ה
+he Name of weekday 01 (Gregorian Calendar) יום שני
+he Name of weekday 02 (Gregorian Calendar) יום שלישי
+he Name of weekday 03 (Gregorian Calendar) יום רביעי
+he Name of weekday 04 (Gregorian Calendar) יום חמישי
+he Name of weekday 05 (Gregorian Calendar) יום שישי
+he Name of weekday 06 (Gregorian Calendar) יום שבת
+he Name of weekday 07 (Gregorian Calendar) יום ראשון
+he Name of weekday 01 (Islamic Calendar) יום שני
+he Name of weekday 02 (Islamic Calendar) יום שלישי
+he Name of weekday 03 (Islamic Calendar) יום רביעי
+he Name of weekday 04 (Islamic Calendar) יום חמישי
+he Name of weekday 05 (Islamic Calendar) יום שישי
+he Name of weekday 06 (Islamic Calendar) יום שבת
+he Name of weekday 07 (Islamic Calendar) יום ראשון
+he_IL Language endonym עברית
+he_IL Country endonym ישראל
+he_IL Floating Point Number -123,456,789.012
+he_IL Percent value -1,234.5679%
+he_IL Currency value 1,234.56 €
+he_IL Negative Currency value -1,234.56 €
+he_IL Date and time short (Gregorian Calendar) 21/07/08 12:31
+he_IL Date and time medium (Gregorian Calendar) 21 ביול 2008 12:31:00
+he_IL Date and time long (Gregorian Calendar) 21 ביולי 2008 12:31:00 GMT+00:00
+he_IL Date and time full (Gregorian Calendar) יום שני, 21 ביולי 2008 12:31:00 GMT+00:00
+he_IL Date and time short (Islamic Calendar) 18/07/29 12:31
+he_IL Date and time medium (Islamic Calendar) 18 בRaj. 1429 12:31:00
+he_IL Date and time long (Islamic Calendar) 18 ברג׳אב 1429 12:31:00 GMT+00:00
+he_IL Date and time full (Islamic Calendar) יום שני, 18 ברג׳אב 1429 12:31:00 GMT+00:00
+he_IL Name of month 01 (Gregorian Calendar) ינואר
+he_IL Name of month 02 (Gregorian Calendar) פברואר
+he_IL Name of month 03 (Gregorian Calendar) מרס
+he_IL Name of month 04 (Gregorian Calendar) אפריל
+he_IL Name of month 05 (Gregorian Calendar) מאי
+he_IL Name of month 06 (Gregorian Calendar) יוני
+he_IL Name of month 07 (Gregorian Calendar) יולי
+he_IL Name of month 08 (Gregorian Calendar) אוגוסט
+he_IL Name of month 09 (Gregorian Calendar) ספטמבר
+he_IL Name of month 10 (Gregorian Calendar) אוקטובר
+he_IL Name of month 11 (Gregorian Calendar) נובמבר
+he_IL Name of month 12 (Gregorian Calendar) דצמבר
+he_IL Name of month 01 (Islamic Calendar) מוחרם
+he_IL Name of month 02 (Islamic Calendar) ספר
+he_IL Name of month 03 (Islamic Calendar) רביע אל-אוואל
+he_IL Name of month 04 (Islamic Calendar) רביע אל-תני
+he_IL Name of month 05 (Islamic Calendar) ג׳ומדה אל-אוואל
+he_IL Name of month 06 (Islamic Calendar) ג׳ומדה אל-תני
+he_IL Name of month 07 (Islamic Calendar) רג׳אב
+he_IL Name of month 08 (Islamic Calendar) שעבאן
+he_IL Name of month 09 (Islamic Calendar) ראמדן
+he_IL Name of month 10 (Islamic Calendar) שוואל
+he_IL Name of month 11 (Islamic Calendar) זו אל-QI'DAH
+he_IL Name of month 12 (Islamic Calendar) זו אל-חיג׳ה
+he_IL Name of weekday 01 (Gregorian Calendar) יום שני
+he_IL Name of weekday 02 (Gregorian Calendar) יום שלישי
+he_IL Name of weekday 03 (Gregorian Calendar) יום רביעי
+he_IL Name of weekday 04 (Gregorian Calendar) יום חמישי
+he_IL Name of weekday 05 (Gregorian Calendar) יום שישי
+he_IL Name of weekday 06 (Gregorian Calendar) יום שבת
+he_IL Name of weekday 07 (Gregorian Calendar) יום ראשון
+he_IL Name of weekday 01 (Islamic Calendar) יום שני
+he_IL Name of weekday 02 (Islamic Calendar) יום שלישי
+he_IL Name of weekday 03 (Islamic Calendar) יום רביעי
+he_IL Name of weekday 04 (Islamic Calendar) יום חמישי
+he_IL Name of weekday 05 (Islamic Calendar) יום שישי
+he_IL Name of weekday 06 (Islamic Calendar) יום שבת
+he_IL Name of weekday 07 (Islamic Calendar) יום ראשון
+hi Language endonym हिन्दी
+hi Country endonym
+hi Floating Point Number -१२,३४,५६,७८९.०१२
+hi Percent value -१,२३४.५६७९%
+hi Currency value € १,२३४.५६
+hi Negative Currency value -€ १,२३४.५६
+hi Date and time short (Gregorian Calendar) २१-७-०८ १२:३१ अपराह्न
+hi Date and time medium (Gregorian Calendar) २१-०७-२००८ १२:३१:०० अपराह्न
+hi Date and time long (Gregorian Calendar) २१ जुलाई २००८ १२:३१:०० अपराह्न GMT+००:००
+hi Date and time full (Gregorian Calendar) सोमवार, २१ जुलाई २००८ १२:३१:०० अपराह्न GMT+००:००
+hi Date and time short (Islamic Calendar) १८-७-२९ १२:३१ अपराह्न
+hi Date and time medium (Islamic Calendar) १८-०७-१४२९ १२:३१:०० अपराह्न
+hi Date and time long (Islamic Calendar) १८ रजब १४२९ १२:३१:०० अपराह्न GMT+००:००
+hi Date and time full (Islamic Calendar) सोमवार, १८ रजब १४२९ १२:३१:०० अपराह्न GMT+००:००
+hi Name of month 01 (Gregorian Calendar) जनवरी
+hi Name of month 02 (Gregorian Calendar) फरवरी
+hi Name of month 03 (Gregorian Calendar) मार्च
+hi Name of month 04 (Gregorian Calendar) अप्रैल
+hi Name of month 05 (Gregorian Calendar) मई
+hi Name of month 06 (Gregorian Calendar) जून
+hi Name of month 07 (Gregorian Calendar) जुलाई
+hi Name of month 08 (Gregorian Calendar) अगस्त
+hi Name of month 09 (Gregorian Calendar) सितम्बर
+hi Name of month 10 (Gregorian Calendar) अक्तूबर
+hi Name of month 11 (Gregorian Calendar) नवम्बर
+hi Name of month 12 (Gregorian Calendar) दिसम्बर
+hi Name of month 01 (Islamic Calendar) मुहर्रम
+hi Name of month 02 (Islamic Calendar) सफर
+hi Name of month 03 (Islamic Calendar) राबी प्रथम
+hi Name of month 04 (Islamic Calendar) राबी द्वितीय
+hi Name of month 05 (Islamic Calendar) जुम्डा प्रथम
+hi Name of month 06 (Islamic Calendar) जुम्डा द्वितीय
+hi Name of month 07 (Islamic Calendar) रजब
+hi Name of month 08 (Islamic Calendar) शावन
+hi Name of month 09 (Islamic Calendar) रमजान
+hi Name of month 10 (Islamic Calendar) शव्व्ल
+hi Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+hi Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+hi Name of weekday 01 (Gregorian Calendar) सोमवार
+hi Name of weekday 02 (Gregorian Calendar) मंगलवार
+hi Name of weekday 03 (Gregorian Calendar) बुधवार
+hi Name of weekday 04 (Gregorian Calendar) बृहस्पतिवार
+hi Name of weekday 05 (Gregorian Calendar) शुक्रवार
+hi Name of weekday 06 (Gregorian Calendar) शनिवार
+hi Name of weekday 07 (Gregorian Calendar) रविवार
+hi Name of weekday 01 (Islamic Calendar) सोमवार
+hi Name of weekday 02 (Islamic Calendar) मंगलवार
+hi Name of weekday 03 (Islamic Calendar) बुधवार
+hi Name of weekday 04 (Islamic Calendar) बृहस्पतिवार
+hi Name of weekday 05 (Islamic Calendar) शुक्रवार
+hi Name of weekday 06 (Islamic Calendar) शनिवार
+hi Name of weekday 07 (Islamic Calendar) रविवार
+hi_IN Language endonym हिन्दी
+hi_IN Country endonym भारत
+hi_IN Floating Point Number -१२,३४,५६,७८९.०१२
+hi_IN Percent value -१,२३४.५६७९%
+hi_IN Currency value € १,२३४.५६
+hi_IN Negative Currency value -€ १,२३४.५६
+hi_IN Date and time short (Gregorian Calendar) २१-७-०८ १२:३१ अपराह्न
+hi_IN Date and time medium (Gregorian Calendar) २१-०७-२००८ १२:३१:०० अपराह्न
+hi_IN Date and time long (Gregorian Calendar) २१ जुलाई २००८ १२:३१:०० अपराह्न GMT+००:००
+hi_IN Date and time full (Gregorian Calendar) सोमवार, २१ जुलाई २००८ १२:३१:०० अपराह्न GMT+००:००
+hi_IN Date and time short (Islamic Calendar) १८-७-२९ १२:३१ अपराह्न
+hi_IN Date and time medium (Islamic Calendar) १८-०७-१४२९ १२:३१:०० अपराह्न
+hi_IN Date and time long (Islamic Calendar) १८ रजब १४२९ १२:३१:०० अपराह्न GMT+००:००
+hi_IN Date and time full (Islamic Calendar) सोमवार, १८ रजब १४२९ १२:३१:०० अपराह्न GMT+००:००
+hi_IN Name of month 01 (Gregorian Calendar) जनवरी
+hi_IN Name of month 02 (Gregorian Calendar) फरवरी
+hi_IN Name of month 03 (Gregorian Calendar) मार्च
+hi_IN Name of month 04 (Gregorian Calendar) अप्रैल
+hi_IN Name of month 05 (Gregorian Calendar) मई
+hi_IN Name of month 06 (Gregorian Calendar) जून
+hi_IN Name of month 07 (Gregorian Calendar) जुलाई
+hi_IN Name of month 08 (Gregorian Calendar) अगस्त
+hi_IN Name of month 09 (Gregorian Calendar) सितम्बर
+hi_IN Name of month 10 (Gregorian Calendar) अक्तूबर
+hi_IN Name of month 11 (Gregorian Calendar) नवम्बर
+hi_IN Name of month 12 (Gregorian Calendar) दिसम्बर
+hi_IN Name of month 01 (Islamic Calendar) मुहर्रम
+hi_IN Name of month 02 (Islamic Calendar) सफर
+hi_IN Name of month 03 (Islamic Calendar) राबी प्रथम
+hi_IN Name of month 04 (Islamic Calendar) राबी द्वितीय
+hi_IN Name of month 05 (Islamic Calendar) जुम्डा प्रथम
+hi_IN Name of month 06 (Islamic Calendar) जुम्डा द्वितीय
+hi_IN Name of month 07 (Islamic Calendar) रजब
+hi_IN Name of month 08 (Islamic Calendar) शावन
+hi_IN Name of month 09 (Islamic Calendar) रमजान
+hi_IN Name of month 10 (Islamic Calendar) शव्व्ल
+hi_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+hi_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+hi_IN Name of weekday 01 (Gregorian Calendar) सोमवार
+hi_IN Name of weekday 02 (Gregorian Calendar) मंगलवार
+hi_IN Name of weekday 03 (Gregorian Calendar) बुधवार
+hi_IN Name of weekday 04 (Gregorian Calendar) बृहस्पतिवार
+hi_IN Name of weekday 05 (Gregorian Calendar) शुक्रवार
+hi_IN Name of weekday 06 (Gregorian Calendar) शनिवार
+hi_IN Name of weekday 07 (Gregorian Calendar) रविवार
+hi_IN Name of weekday 01 (Islamic Calendar) सोमवार
+hi_IN Name of weekday 02 (Islamic Calendar) मंगलवार
+hi_IN Name of weekday 03 (Islamic Calendar) बुधवार
+hi_IN Name of weekday 04 (Islamic Calendar) बृहस्पतिवार
+hi_IN Name of weekday 05 (Islamic Calendar) शुक्रवार
+hi_IN Name of weekday 06 (Islamic Calendar) शनिवार
+hi_IN Name of weekday 07 (Islamic Calendar) रविवार
+id Language endonym Bahasa Indonesia
+id Country endonym
+id Floating Point Number -123.456.789,012
+id Percent value -1.234,5679%
+id Currency value €1.234,56
+id Negative Currency value -€1.234,56
+id Date and time short (Gregorian Calendar) 21/07/08 12.31
+id Date and time medium (Gregorian Calendar) 21 Jul 2008 12.31.00
+id Date and time long (Gregorian Calendar) 21 Juli 2008 12.31.00 GMT+00.00
+id Date and time full (Gregorian Calendar) Senin, 21 Juli 2008 12.31.00 GMT+00.00
+id Date and time short (Islamic Calendar) 18/07/29 12.31
+id Date and time medium (Islamic Calendar) 18 Raj. 1429 12.31.00
+id Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+id Date and time full (Islamic Calendar) Senin, 18 Rajab 1429 12.31.00 GMT+00.00
+id Name of month 01 (Gregorian Calendar) Januari
+id Name of month 02 (Gregorian Calendar) Februari
+id Name of month 03 (Gregorian Calendar) Maret
+id Name of month 04 (Gregorian Calendar) April
+id Name of month 05 (Gregorian Calendar) Mei
+id Name of month 06 (Gregorian Calendar) Juni
+id Name of month 07 (Gregorian Calendar) Juli
+id Name of month 08 (Gregorian Calendar) Agustus
+id Name of month 09 (Gregorian Calendar) September
+id Name of month 10 (Gregorian Calendar) Oktober
+id Name of month 11 (Gregorian Calendar) November
+id Name of month 12 (Gregorian Calendar) Desember
+id Name of month 01 (Islamic Calendar) Muharram
+id Name of month 02 (Islamic Calendar) Safar
+id Name of month 03 (Islamic Calendar) Rabiʻ I
+id Name of month 04 (Islamic Calendar) Rabiʻ II
+id Name of month 05 (Islamic Calendar) Jumada I
+id Name of month 06 (Islamic Calendar) Jumada II
+id Name of month 07 (Islamic Calendar) Rajab
+id Name of month 08 (Islamic Calendar) Shaʻban
+id Name of month 09 (Islamic Calendar) Ramadan
+id Name of month 10 (Islamic Calendar) Shawwal
+id Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+id Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+id Name of weekday 01 (Gregorian Calendar) Senin
+id Name of weekday 02 (Gregorian Calendar) Selasa
+id Name of weekday 03 (Gregorian Calendar) Rabu
+id Name of weekday 04 (Gregorian Calendar) Kamis
+id Name of weekday 05 (Gregorian Calendar) Jumat
+id Name of weekday 06 (Gregorian Calendar) Sabtu
+id Name of weekday 07 (Gregorian Calendar) Minggu
+id Name of weekday 01 (Islamic Calendar) Senin
+id Name of weekday 02 (Islamic Calendar) Selasa
+id Name of weekday 03 (Islamic Calendar) Rabu
+id Name of weekday 04 (Islamic Calendar) Kamis
+id Name of weekday 05 (Islamic Calendar) Jumat
+id Name of weekday 06 (Islamic Calendar) Sabtu
+id Name of weekday 07 (Islamic Calendar) Minggu
+id_ID Language endonym Bahasa Indonesia
+id_ID Country endonym Indonesia
+id_ID Floating Point Number -123.456.789,012
+id_ID Percent value -1.234,5679%
+id_ID Currency value €1.234,56
+id_ID Negative Currency value -€1.234,56
+id_ID Date and time short (Gregorian Calendar) 21/07/08 12.31
+id_ID Date and time medium (Gregorian Calendar) 21 Jul 2008 12.31.00
+id_ID Date and time long (Gregorian Calendar) 21 Juli 2008 12.31.00 GMT+00.00
+id_ID Date and time full (Gregorian Calendar) Senin, 21 Juli 2008 12.31.00 GMT+00.00
+id_ID Date and time short (Islamic Calendar) 18/07/29 12.31
+id_ID Date and time medium (Islamic Calendar) 18 Raj. 1429 12.31.00
+id_ID Date and time long (Islamic Calendar) 18 Rajab 1429 12.31.00 GMT+00.00
+id_ID Date and time full (Islamic Calendar) Senin, 18 Rajab 1429 12.31.00 GMT+00.00
+id_ID Name of month 01 (Gregorian Calendar) Januari
+id_ID Name of month 02 (Gregorian Calendar) Februari
+id_ID Name of month 03 (Gregorian Calendar) Maret
+id_ID Name of month 04 (Gregorian Calendar) April
+id_ID Name of month 05 (Gregorian Calendar) Mei
+id_ID Name of month 06 (Gregorian Calendar) Juni
+id_ID Name of month 07 (Gregorian Calendar) Juli
+id_ID Name of month 08 (Gregorian Calendar) Agustus
+id_ID Name of month 09 (Gregorian Calendar) September
+id_ID Name of month 10 (Gregorian Calendar) Oktober
+id_ID Name of month 11 (Gregorian Calendar) November
+id_ID Name of month 12 (Gregorian Calendar) Desember
+id_ID Name of month 01 (Islamic Calendar) Muharram
+id_ID Name of month 02 (Islamic Calendar) Safar
+id_ID Name of month 03 (Islamic Calendar) Rabiʻ I
+id_ID Name of month 04 (Islamic Calendar) Rabiʻ II
+id_ID Name of month 05 (Islamic Calendar) Jumada I
+id_ID Name of month 06 (Islamic Calendar) Jumada II
+id_ID Name of month 07 (Islamic Calendar) Rajab
+id_ID Name of month 08 (Islamic Calendar) Shaʻban
+id_ID Name of month 09 (Islamic Calendar) Ramadan
+id_ID Name of month 10 (Islamic Calendar) Shawwal
+id_ID Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+id_ID Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+id_ID Name of weekday 01 (Gregorian Calendar) Senin
+id_ID Name of weekday 02 (Gregorian Calendar) Selasa
+id_ID Name of weekday 03 (Gregorian Calendar) Rabu
+id_ID Name of weekday 04 (Gregorian Calendar) Kamis
+id_ID Name of weekday 05 (Gregorian Calendar) Jumat
+id_ID Name of weekday 06 (Gregorian Calendar) Sabtu
+id_ID Name of weekday 07 (Gregorian Calendar) Minggu
+id_ID Name of weekday 01 (Islamic Calendar) Senin
+id_ID Name of weekday 02 (Islamic Calendar) Selasa
+id_ID Name of weekday 03 (Islamic Calendar) Rabu
+id_ID Name of weekday 04 (Islamic Calendar) Kamis
+id_ID Name of weekday 05 (Islamic Calendar) Jumat
+id_ID Name of weekday 06 (Islamic Calendar) Sabtu
+id_ID Name of weekday 07 (Islamic Calendar) Minggu
+it Language endonym italiano
+it Country endonym
+it Floating Point Number -123.456.789,012
+it Percent value -1.234,5679%
+it Currency value € 1.234,56
+it Negative Currency value -€ 1.234,56
+it Date and time short (Gregorian Calendar) 21/07/08 12:31
+it Date and time medium (Gregorian Calendar) 21/lug/2008 12:31:00
+it Date and time long (Gregorian Calendar) 21 luglio 2008 12:31:00 GMT+00:00
+it Date and time full (Gregorian Calendar) lunedì 21 luglio 2008 12:31:00 GMT+00:00
+it Date and time short (Islamic Calendar) 18/07/29 12:31
+it Date and time medium (Islamic Calendar) 18/Raj./1429 12:31:00
+it Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+it Date and time full (Islamic Calendar) lunedì 18 Rajab 1429 12:31:00 GMT+00:00
+it Name of month 01 (Gregorian Calendar) gennaio
+it Name of month 02 (Gregorian Calendar) febbraio
+it Name of month 03 (Gregorian Calendar) marzo
+it Name of month 04 (Gregorian Calendar) aprile
+it Name of month 05 (Gregorian Calendar) maggio
+it Name of month 06 (Gregorian Calendar) giugno
+it Name of month 07 (Gregorian Calendar) luglio
+it Name of month 08 (Gregorian Calendar) agosto
+it Name of month 09 (Gregorian Calendar) settembre
+it Name of month 10 (Gregorian Calendar) ottobre
+it Name of month 11 (Gregorian Calendar) novembre
+it Name of month 12 (Gregorian Calendar) dicembre
+it Name of month 01 (Islamic Calendar) Muharram
+it Name of month 02 (Islamic Calendar) Safar
+it Name of month 03 (Islamic Calendar) Rabiʻ I
+it Name of month 04 (Islamic Calendar) Rabiʻ II
+it Name of month 05 (Islamic Calendar) Jumada I
+it Name of month 06 (Islamic Calendar) Jumada II
+it Name of month 07 (Islamic Calendar) Rajab
+it Name of month 08 (Islamic Calendar) Shaʻban
+it Name of month 09 (Islamic Calendar) Ramadan
+it Name of month 10 (Islamic Calendar) Shawwal
+it Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it Name of weekday 01 (Gregorian Calendar) lunedì
+it Name of weekday 02 (Gregorian Calendar) martedì
+it Name of weekday 03 (Gregorian Calendar) mercoledì
+it Name of weekday 04 (Gregorian Calendar) giovedì
+it Name of weekday 05 (Gregorian Calendar) venerdì
+it Name of weekday 06 (Gregorian Calendar) sabato
+it Name of weekday 07 (Gregorian Calendar) domenica
+it Name of weekday 01 (Islamic Calendar) lunedì
+it Name of weekday 02 (Islamic Calendar) martedì
+it Name of weekday 03 (Islamic Calendar) mercoledì
+it Name of weekday 04 (Islamic Calendar) giovedì
+it Name of weekday 05 (Islamic Calendar) venerdì
+it Name of weekday 06 (Islamic Calendar) sabato
+it Name of weekday 07 (Islamic Calendar) domenica
+it_CH Language endonym italiano
+it_CH Country endonym Svizzera
+it_CH Floating Point Number -123'456'789.012
+it_CH Percent value -1'234.5679%
+it_CH Currency value € 1'234.56
+it_CH Negative Currency value €-1'234.56
+it_CH Date and time short (Gregorian Calendar) 21.07.08 12:31
+it_CH Date and time medium (Gregorian Calendar) 21-lug-2008 12:31:00
+it_CH Date and time long (Gregorian Calendar) 21 luglio 2008 12:31:00 GMT+00:00
+it_CH Date and time full (Gregorian Calendar) lunedì, 21 luglio 2008 12.31:00 h GMT+00:00
+it_CH Date and time short (Islamic Calendar) 18.07.29 12:31
+it_CH Date and time medium (Islamic Calendar) 18-Raj.-1429 12:31:00
+it_CH Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+it_CH Date and time full (Islamic Calendar) lunedì, 18 Rajab 1429 12.31:00 h GMT+00:00
+it_CH Name of month 01 (Gregorian Calendar) gennaio
+it_CH Name of month 02 (Gregorian Calendar) febbraio
+it_CH Name of month 03 (Gregorian Calendar) marzo
+it_CH Name of month 04 (Gregorian Calendar) aprile
+it_CH Name of month 05 (Gregorian Calendar) maggio
+it_CH Name of month 06 (Gregorian Calendar) giugno
+it_CH Name of month 07 (Gregorian Calendar) luglio
+it_CH Name of month 08 (Gregorian Calendar) agosto
+it_CH Name of month 09 (Gregorian Calendar) settembre
+it_CH Name of month 10 (Gregorian Calendar) ottobre
+it_CH Name of month 11 (Gregorian Calendar) novembre
+it_CH Name of month 12 (Gregorian Calendar) dicembre
+it_CH Name of month 01 (Islamic Calendar) Muharram
+it_CH Name of month 02 (Islamic Calendar) Safar
+it_CH Name of month 03 (Islamic Calendar) Rabiʻ I
+it_CH Name of month 04 (Islamic Calendar) Rabiʻ II
+it_CH Name of month 05 (Islamic Calendar) Jumada I
+it_CH Name of month 06 (Islamic Calendar) Jumada II
+it_CH Name of month 07 (Islamic Calendar) Rajab
+it_CH Name of month 08 (Islamic Calendar) Shaʻban
+it_CH Name of month 09 (Islamic Calendar) Ramadan
+it_CH Name of month 10 (Islamic Calendar) Shawwal
+it_CH Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it_CH Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it_CH Name of weekday 01 (Gregorian Calendar) lunedì
+it_CH Name of weekday 02 (Gregorian Calendar) martedì
+it_CH Name of weekday 03 (Gregorian Calendar) mercoledì
+it_CH Name of weekday 04 (Gregorian Calendar) giovedì
+it_CH Name of weekday 05 (Gregorian Calendar) venerdì
+it_CH Name of weekday 06 (Gregorian Calendar) sabato
+it_CH Name of weekday 07 (Gregorian Calendar) domenica
+it_CH Name of weekday 01 (Islamic Calendar) lunedì
+it_CH Name of weekday 02 (Islamic Calendar) martedì
+it_CH Name of weekday 03 (Islamic Calendar) mercoledì
+it_CH Name of weekday 04 (Islamic Calendar) giovedì
+it_CH Name of weekday 05 (Islamic Calendar) venerdì
+it_CH Name of weekday 06 (Islamic Calendar) sabato
+it_CH Name of weekday 07 (Islamic Calendar) domenica
+it_IT Language endonym italiano
+it_IT Country endonym Italia
+it_IT Floating Point Number -123.456.789,012
+it_IT Percent value -1.234,5679%
+it_IT Currency value € 1.234,56
+it_IT Negative Currency value -€ 1.234,56
+it_IT Date and time short (Gregorian Calendar) 21/07/08 12:31
+it_IT Date and time medium (Gregorian Calendar) 21/lug/2008 12:31:00
+it_IT Date and time long (Gregorian Calendar) 21 luglio 2008 12:31:00 GMT+00:00
+it_IT Date and time full (Gregorian Calendar) lunedì 21 luglio 2008 12:31:00 GMT+00:00
+it_IT Date and time short (Islamic Calendar) 18/07/29 12:31
+it_IT Date and time medium (Islamic Calendar) 18/Raj./1429 12:31:00
+it_IT Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+it_IT Date and time full (Islamic Calendar) lunedì 18 Rajab 1429 12:31:00 GMT+00:00
+it_IT Name of month 01 (Gregorian Calendar) gennaio
+it_IT Name of month 02 (Gregorian Calendar) febbraio
+it_IT Name of month 03 (Gregorian Calendar) marzo
+it_IT Name of month 04 (Gregorian Calendar) aprile
+it_IT Name of month 05 (Gregorian Calendar) maggio
+it_IT Name of month 06 (Gregorian Calendar) giugno
+it_IT Name of month 07 (Gregorian Calendar) luglio
+it_IT Name of month 08 (Gregorian Calendar) agosto
+it_IT Name of month 09 (Gregorian Calendar) settembre
+it_IT Name of month 10 (Gregorian Calendar) ottobre
+it_IT Name of month 11 (Gregorian Calendar) novembre
+it_IT Name of month 12 (Gregorian Calendar) dicembre
+it_IT Name of month 01 (Islamic Calendar) Muharram
+it_IT Name of month 02 (Islamic Calendar) Safar
+it_IT Name of month 03 (Islamic Calendar) Rabiʻ I
+it_IT Name of month 04 (Islamic Calendar) Rabiʻ II
+it_IT Name of month 05 (Islamic Calendar) Jumada I
+it_IT Name of month 06 (Islamic Calendar) Jumada II
+it_IT Name of month 07 (Islamic Calendar) Rajab
+it_IT Name of month 08 (Islamic Calendar) Shaʻban
+it_IT Name of month 09 (Islamic Calendar) Ramadan
+it_IT Name of month 10 (Islamic Calendar) Shawwal
+it_IT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+it_IT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+it_IT Name of weekday 01 (Gregorian Calendar) lunedì
+it_IT Name of weekday 02 (Gregorian Calendar) martedì
+it_IT Name of weekday 03 (Gregorian Calendar) mercoledì
+it_IT Name of weekday 04 (Gregorian Calendar) giovedì
+it_IT Name of weekday 05 (Gregorian Calendar) venerdì
+it_IT Name of weekday 06 (Gregorian Calendar) sabato
+it_IT Name of weekday 07 (Gregorian Calendar) domenica
+it_IT Name of weekday 01 (Islamic Calendar) lunedì
+it_IT Name of weekday 02 (Islamic Calendar) martedì
+it_IT Name of weekday 03 (Islamic Calendar) mercoledì
+it_IT Name of weekday 04 (Islamic Calendar) giovedì
+it_IT Name of weekday 05 (Islamic Calendar) venerdì
+it_IT Name of weekday 06 (Islamic Calendar) sabato
+it_IT Name of weekday 07 (Islamic Calendar) domenica
+ja Language endonym 日本語
+ja Country endonym
+ja Floating Point Number -123,456,789.012
+ja Percent value -1,234.5679%
+ja Currency value €1,234.56
+ja Negative Currency value -€1,234.56
+ja Date and time short (Gregorian Calendar) 08/07/21 12:31
+ja Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00
+ja Date and time long (Gregorian Calendar) 2008年7月21日12:31:00 GMT+00:00
+ja Date and time full (Gregorian Calendar) 2008年7月21日月曜日12時31分00秒 GMT+00:00
+ja Date and time short (Islamic Calendar) 29/07/18 12:31
+ja Date and time medium (Islamic Calendar) 1429/07/18 12:31:00
+ja Date and time long (Islamic Calendar) 1429年7月18日12:31:00 GMT+00:00
+ja Date and time full (Islamic Calendar) 1429年7月18日月曜日12時31分00秒 GMT+00:00
+ja Name of month 01 (Gregorian Calendar) 1月
+ja Name of month 02 (Gregorian Calendar) 2月
+ja Name of month 03 (Gregorian Calendar) 3月
+ja Name of month 04 (Gregorian Calendar) 4月
+ja Name of month 05 (Gregorian Calendar) 5月
+ja Name of month 06 (Gregorian Calendar) 6月
+ja Name of month 07 (Gregorian Calendar) 7月
+ja Name of month 08 (Gregorian Calendar) 8月
+ja Name of month 09 (Gregorian Calendar) 9月
+ja Name of month 10 (Gregorian Calendar) 10月
+ja Name of month 11 (Gregorian Calendar) 11月
+ja Name of month 12 (Gregorian Calendar) 12月
+ja Name of month 01 (Islamic Calendar) Muharram
+ja Name of month 02 (Islamic Calendar) Safar
+ja Name of month 03 (Islamic Calendar) Rabiʻ I
+ja Name of month 04 (Islamic Calendar) Rabiʻ II
+ja Name of month 05 (Islamic Calendar) Jumada I
+ja Name of month 06 (Islamic Calendar) Jumada II
+ja Name of month 07 (Islamic Calendar) Rajab
+ja Name of month 08 (Islamic Calendar) Shaʻban
+ja Name of month 09 (Islamic Calendar) Ramadan
+ja Name of month 10 (Islamic Calendar) Shawwal
+ja Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ja Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ja Name of weekday 01 (Gregorian Calendar) 月曜日
+ja Name of weekday 02 (Gregorian Calendar) 火曜日
+ja Name of weekday 03 (Gregorian Calendar) 水曜日
+ja Name of weekday 04 (Gregorian Calendar) 木曜日
+ja Name of weekday 05 (Gregorian Calendar) 金曜日
+ja Name of weekday 06 (Gregorian Calendar) 土曜日
+ja Name of weekday 07 (Gregorian Calendar) 日曜日
+ja Name of weekday 01 (Islamic Calendar) 月曜日
+ja Name of weekday 02 (Islamic Calendar) 火曜日
+ja Name of weekday 03 (Islamic Calendar) 水曜日
+ja Name of weekday 04 (Islamic Calendar) 木曜日
+ja Name of weekday 05 (Islamic Calendar) 金曜日
+ja Name of weekday 06 (Islamic Calendar) 土曜日
+ja Name of weekday 07 (Islamic Calendar) 日曜日
+ja_JP Language endonym 日本語
+ja_JP Country endonym 日本
+ja_JP Floating Point Number -123,456,789.012
+ja_JP Percent value -1,234.5679%
+ja_JP Currency value €1,234.56
+ja_JP Negative Currency value -€1,234.56
+ja_JP Date and time short (Gregorian Calendar) 08/07/21 12:31
+ja_JP Date and time medium (Gregorian Calendar) 2008/07/21 12:31:00
+ja_JP Date and time long (Gregorian Calendar) 2008年7月21日12:31:00 GMT+00:00
+ja_JP Date and time full (Gregorian Calendar) 2008年7月21日月曜日12時31分00秒 GMT+00:00
+ja_JP Date and time short (Islamic Calendar) 29/07/18 12:31
+ja_JP Date and time medium (Islamic Calendar) 1429/07/18 12:31:00
+ja_JP Date and time long (Islamic Calendar) 1429年7月18日12:31:00 GMT+00:00
+ja_JP Date and time full (Islamic Calendar) 1429年7月18日月曜日12時31分00秒 GMT+00:00
+ja_JP Name of month 01 (Gregorian Calendar) 1月
+ja_JP Name of month 02 (Gregorian Calendar) 2月
+ja_JP Name of month 03 (Gregorian Calendar) 3月
+ja_JP Name of month 04 (Gregorian Calendar) 4月
+ja_JP Name of month 05 (Gregorian Calendar) 5月
+ja_JP Name of month 06 (Gregorian Calendar) 6月
+ja_JP Name of month 07 (Gregorian Calendar) 7月
+ja_JP Name of month 08 (Gregorian Calendar) 8月
+ja_JP Name of month 09 (Gregorian Calendar) 9月
+ja_JP Name of month 10 (Gregorian Calendar) 10月
+ja_JP Name of month 11 (Gregorian Calendar) 11月
+ja_JP Name of month 12 (Gregorian Calendar) 12月
+ja_JP Name of month 01 (Islamic Calendar) Muharram
+ja_JP Name of month 02 (Islamic Calendar) Safar
+ja_JP Name of month 03 (Islamic Calendar) Rabiʻ I
+ja_JP Name of month 04 (Islamic Calendar) Rabiʻ II
+ja_JP Name of month 05 (Islamic Calendar) Jumada I
+ja_JP Name of month 06 (Islamic Calendar) Jumada II
+ja_JP Name of month 07 (Islamic Calendar) Rajab
+ja_JP Name of month 08 (Islamic Calendar) Shaʻban
+ja_JP Name of month 09 (Islamic Calendar) Ramadan
+ja_JP Name of month 10 (Islamic Calendar) Shawwal
+ja_JP Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ja_JP Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ja_JP Name of weekday 01 (Gregorian Calendar) 月曜日
+ja_JP Name of weekday 02 (Gregorian Calendar) 火曜日
+ja_JP Name of weekday 03 (Gregorian Calendar) 水曜日
+ja_JP Name of weekday 04 (Gregorian Calendar) 木曜日
+ja_JP Name of weekday 05 (Gregorian Calendar) 金曜日
+ja_JP Name of weekday 06 (Gregorian Calendar) 土曜日
+ja_JP Name of weekday 07 (Gregorian Calendar) 日曜日
+ja_JP Name of weekday 01 (Islamic Calendar) 月曜日
+ja_JP Name of weekday 02 (Islamic Calendar) 火曜日
+ja_JP Name of weekday 03 (Islamic Calendar) 水曜日
+ja_JP Name of weekday 04 (Islamic Calendar) 木曜日
+ja_JP Name of weekday 05 (Islamic Calendar) 金曜日
+ja_JP Name of weekday 06 (Islamic Calendar) 土曜日
+ja_JP Name of weekday 07 (Islamic Calendar) 日曜日
+ms Language endonym Bahasa Melayu
+ms Country endonym
+ms Floating Point Number -123,456,789.012
+ms Percent value -1,234.5679%
+ms Currency value €1,234.56
+ms Negative Currency value (€1,234.56)
+ms Date and time short (Gregorian Calendar) 2008-07-21 12:31
+ms Date and time medium (Gregorian Calendar) 2008 Jul 21 12:31:00
+ms Date and time long (Gregorian Calendar) 2008 Julai 21 12:31:00 GMT+00:00
+ms Date and time full (Gregorian Calendar) Isnin, 2008 Julai 21 12:31:00 GMT+00:00
+ms Date and time short (Islamic Calendar) 1429-07-18 12:31
+ms Date and time medium (Islamic Calendar) 1429 Raj. 18 12:31:00
+ms Date and time long (Islamic Calendar) 1429 Rajab 18 12:31:00 GMT+00:00
+ms Date and time full (Islamic Calendar) Isnin, 1429 Rajab 18 12:31:00 GMT+00:00
+ms Name of month 01 (Gregorian Calendar) Januari
+ms Name of month 02 (Gregorian Calendar) Februari
+ms Name of month 03 (Gregorian Calendar) Mac
+ms Name of month 04 (Gregorian Calendar) April
+ms Name of month 05 (Gregorian Calendar) Mei
+ms Name of month 06 (Gregorian Calendar) Jun
+ms Name of month 07 (Gregorian Calendar) Julai
+ms Name of month 08 (Gregorian Calendar) Ogos
+ms Name of month 09 (Gregorian Calendar) September
+ms Name of month 10 (Gregorian Calendar) Oktober
+ms Name of month 11 (Gregorian Calendar) November
+ms Name of month 12 (Gregorian Calendar) Disember
+ms Name of month 01 (Islamic Calendar) Muharram
+ms Name of month 02 (Islamic Calendar) Safar
+ms Name of month 03 (Islamic Calendar) Rabiʻ I
+ms Name of month 04 (Islamic Calendar) Rabiʻ II
+ms Name of month 05 (Islamic Calendar) Jumada I
+ms Name of month 06 (Islamic Calendar) Jumada II
+ms Name of month 07 (Islamic Calendar) Rajab
+ms Name of month 08 (Islamic Calendar) Shaʻban
+ms Name of month 09 (Islamic Calendar) Ramadan
+ms Name of month 10 (Islamic Calendar) Shawwal
+ms Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ms Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ms Name of weekday 01 (Gregorian Calendar) Isnin
+ms Name of weekday 02 (Gregorian Calendar) Selasa
+ms Name of weekday 03 (Gregorian Calendar) Rabu
+ms Name of weekday 04 (Gregorian Calendar) Khamis
+ms Name of weekday 05 (Gregorian Calendar) Jumaat
+ms Name of weekday 06 (Gregorian Calendar) Sabtu
+ms Name of weekday 07 (Gregorian Calendar) Ahad
+ms Name of weekday 01 (Islamic Calendar) Isnin
+ms Name of weekday 02 (Islamic Calendar) Selasa
+ms Name of weekday 03 (Islamic Calendar) Rabu
+ms Name of weekday 04 (Islamic Calendar) Khamis
+ms Name of weekday 05 (Islamic Calendar) Jumaat
+ms Name of weekday 06 (Islamic Calendar) Sabtu
+ms Name of weekday 07 (Islamic Calendar) Ahad
+ms_BN Language endonym Bahasa Melayu
+ms_BN Country endonym Brunei
+ms_BN Floating Point Number -123.456.789,012
+ms_BN Percent value -1.234,5679%
+ms_BN Currency value € 1.234,56
+ms_BN Negative Currency value -€ 1.234,56
+ms_BN Date and time short (Gregorian Calendar) 2008-07-21 12:31
+ms_BN Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+ms_BN Date and time long (Gregorian Calendar) 2008 Julai 21 12:31:00 GMT+00:00
+ms_BN Date and time full (Gregorian Calendar) 21 Julai 2008 12:31:00 PM GMT+00:00
+ms_BN Date and time short (Islamic Calendar) 1429-07-18 12:31
+ms_BN Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+ms_BN Date and time long (Islamic Calendar) 1429 Rajab 18 12:31:00 GMT+00:00
+ms_BN Date and time full (Islamic Calendar) 18 Rajab 1429 12:31:00 PM GMT+00:00
+ms_BN Name of month 01 (Gregorian Calendar) Januari
+ms_BN Name of month 02 (Gregorian Calendar) Februari
+ms_BN Name of month 03 (Gregorian Calendar) Mac
+ms_BN Name of month 04 (Gregorian Calendar) April
+ms_BN Name of month 05 (Gregorian Calendar) Mei
+ms_BN Name of month 06 (Gregorian Calendar) Jun
+ms_BN Name of month 07 (Gregorian Calendar) Julai
+ms_BN Name of month 08 (Gregorian Calendar) Ogos
+ms_BN Name of month 09 (Gregorian Calendar) September
+ms_BN Name of month 10 (Gregorian Calendar) Oktober
+ms_BN Name of month 11 (Gregorian Calendar) November
+ms_BN Name of month 12 (Gregorian Calendar) Disember
+ms_BN Name of month 01 (Islamic Calendar) Muharram
+ms_BN Name of month 02 (Islamic Calendar) Safar
+ms_BN Name of month 03 (Islamic Calendar) Rabiʻ I
+ms_BN Name of month 04 (Islamic Calendar) Rabiʻ II
+ms_BN Name of month 05 (Islamic Calendar) Jumada I
+ms_BN Name of month 06 (Islamic Calendar) Jumada II
+ms_BN Name of month 07 (Islamic Calendar) Rajab
+ms_BN Name of month 08 (Islamic Calendar) Shaʻban
+ms_BN Name of month 09 (Islamic Calendar) Ramadan
+ms_BN Name of month 10 (Islamic Calendar) Shawwal
+ms_BN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ms_BN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ms_BN Name of weekday 01 (Gregorian Calendar) Isnin
+ms_BN Name of weekday 02 (Gregorian Calendar) Selasa
+ms_BN Name of weekday 03 (Gregorian Calendar) Rabu
+ms_BN Name of weekday 04 (Gregorian Calendar) Khamis
+ms_BN Name of weekday 05 (Gregorian Calendar) Jumaat
+ms_BN Name of weekday 06 (Gregorian Calendar) Sabtu
+ms_BN Name of weekday 07 (Gregorian Calendar) Ahad
+ms_BN Name of weekday 01 (Islamic Calendar) Isnin
+ms_BN Name of weekday 02 (Islamic Calendar) Selasa
+ms_BN Name of weekday 03 (Islamic Calendar) Rabu
+ms_BN Name of weekday 04 (Islamic Calendar) Khamis
+ms_BN Name of weekday 05 (Islamic Calendar) Jumaat
+ms_BN Name of weekday 06 (Islamic Calendar) Sabtu
+ms_BN Name of weekday 07 (Islamic Calendar) Ahad
+ms_MY Language endonym Bahasa Melayu
+ms_MY Country endonym Malaysia
+ms_MY Floating Point Number -123,456,789.012
+ms_MY Percent value -1,234.5679%
+ms_MY Currency value €1,234.56
+ms_MY Negative Currency value (€1,234.56)
+ms_MY Date and time short (Gregorian Calendar) 2008-07-21 12:31
+ms_MY Date and time medium (Gregorian Calendar) 2008 Jul 21 12:31:00
+ms_MY Date and time long (Gregorian Calendar) 2008 Julai 21 12:31:00 GMT+00:00
+ms_MY Date and time full (Gregorian Calendar) Isnin, 2008 Julai 21 12:31:00 GMT+00:00
+ms_MY Date and time short (Islamic Calendar) 1429-07-18 12:31
+ms_MY Date and time medium (Islamic Calendar) 1429 Raj. 18 12:31:00
+ms_MY Date and time long (Islamic Calendar) 1429 Rajab 18 12:31:00 GMT+00:00
+ms_MY Date and time full (Islamic Calendar) Isnin, 1429 Rajab 18 12:31:00 GMT+00:00
+ms_MY Name of month 01 (Gregorian Calendar) Januari
+ms_MY Name of month 02 (Gregorian Calendar) Februari
+ms_MY Name of month 03 (Gregorian Calendar) Mac
+ms_MY Name of month 04 (Gregorian Calendar) April
+ms_MY Name of month 05 (Gregorian Calendar) Mei
+ms_MY Name of month 06 (Gregorian Calendar) Jun
+ms_MY Name of month 07 (Gregorian Calendar) Julai
+ms_MY Name of month 08 (Gregorian Calendar) Ogos
+ms_MY Name of month 09 (Gregorian Calendar) September
+ms_MY Name of month 10 (Gregorian Calendar) Oktober
+ms_MY Name of month 11 (Gregorian Calendar) November
+ms_MY Name of month 12 (Gregorian Calendar) Disember
+ms_MY Name of month 01 (Islamic Calendar) Muharram
+ms_MY Name of month 02 (Islamic Calendar) Safar
+ms_MY Name of month 03 (Islamic Calendar) Rabiʻ I
+ms_MY Name of month 04 (Islamic Calendar) Rabiʻ II
+ms_MY Name of month 05 (Islamic Calendar) Jumada I
+ms_MY Name of month 06 (Islamic Calendar) Jumada II
+ms_MY Name of month 07 (Islamic Calendar) Rajab
+ms_MY Name of month 08 (Islamic Calendar) Shaʻban
+ms_MY Name of month 09 (Islamic Calendar) Ramadan
+ms_MY Name of month 10 (Islamic Calendar) Shawwal
+ms_MY Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ms_MY Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ms_MY Name of weekday 01 (Gregorian Calendar) Isnin
+ms_MY Name of weekday 02 (Gregorian Calendar) Selasa
+ms_MY Name of weekday 03 (Gregorian Calendar) Rabu
+ms_MY Name of weekday 04 (Gregorian Calendar) Khamis
+ms_MY Name of weekday 05 (Gregorian Calendar) Jumaat
+ms_MY Name of weekday 06 (Gregorian Calendar) Sabtu
+ms_MY Name of weekday 07 (Gregorian Calendar) Ahad
+ms_MY Name of weekday 01 (Islamic Calendar) Isnin
+ms_MY Name of weekday 02 (Islamic Calendar) Selasa
+ms_MY Name of weekday 03 (Islamic Calendar) Rabu
+ms_MY Name of weekday 04 (Islamic Calendar) Khamis
+ms_MY Name of weekday 05 (Islamic Calendar) Jumaat
+ms_MY Name of weekday 06 (Islamic Calendar) Sabtu
+ms_MY Name of weekday 07 (Islamic Calendar) Ahad
+nb Language endonym norsk bokmål
+nb Country endonym
+nb Floating Point Number -123 456 789,012
+nb Percent value -1 234,5679 %
+nb Currency value EUR 1 234,56
+nb Negative Currency value -EUR 1 234,56
+nb Date and time short (Gregorian Calendar) 21.07.08 12:31
+nb Date and time medium (Gregorian Calendar) 21. juli 2008 12:31:00
+nb Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+nb Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12:31:00 GMT+00:00
+nb Date and time short (Islamic Calendar) 18.07.29 12:31
+nb Date and time medium (Islamic Calendar) 18. Raj. 1429 12:31:00
+nb Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+nb Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+nb Name of month 01 (Gregorian Calendar) januar
+nb Name of month 02 (Gregorian Calendar) februar
+nb Name of month 03 (Gregorian Calendar) mars
+nb Name of month 04 (Gregorian Calendar) april
+nb Name of month 05 (Gregorian Calendar) mai
+nb Name of month 06 (Gregorian Calendar) juni
+nb Name of month 07 (Gregorian Calendar) juli
+nb Name of month 08 (Gregorian Calendar) august
+nb Name of month 09 (Gregorian Calendar) september
+nb Name of month 10 (Gregorian Calendar) oktober
+nb Name of month 11 (Gregorian Calendar) november
+nb Name of month 12 (Gregorian Calendar) desember
+nb Name of month 01 (Islamic Calendar) Muharram
+nb Name of month 02 (Islamic Calendar) Safar
+nb Name of month 03 (Islamic Calendar) Rabiʻ I
+nb Name of month 04 (Islamic Calendar) Rabiʻ II
+nb Name of month 05 (Islamic Calendar) Jumada I
+nb Name of month 06 (Islamic Calendar) Jumada II
+nb Name of month 07 (Islamic Calendar) Rajab
+nb Name of month 08 (Islamic Calendar) Shaʻban
+nb Name of month 09 (Islamic Calendar) Ramadan
+nb Name of month 10 (Islamic Calendar) Shawwal
+nb Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nb Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nb Name of weekday 01 (Gregorian Calendar) mandag
+nb Name of weekday 02 (Gregorian Calendar) tirsdag
+nb Name of weekday 03 (Gregorian Calendar) onsdag
+nb Name of weekday 04 (Gregorian Calendar) torsdag
+nb Name of weekday 05 (Gregorian Calendar) fredag
+nb Name of weekday 06 (Gregorian Calendar) lørdag
+nb Name of weekday 07 (Gregorian Calendar) søndag
+nb Name of weekday 01 (Islamic Calendar) mandag
+nb Name of weekday 02 (Islamic Calendar) tirsdag
+nb Name of weekday 03 (Islamic Calendar) onsdag
+nb Name of weekday 04 (Islamic Calendar) torsdag
+nb Name of weekday 05 (Islamic Calendar) fredag
+nb Name of weekday 06 (Islamic Calendar) lørdag
+nb Name of weekday 07 (Islamic Calendar) søndag
+nb_NO Language endonym norsk bokmål
+nb_NO Country endonym Norge
+nb_NO Floating Point Number -123 456 789,012
+nb_NO Percent value -1 234,5679 %
+nb_NO Currency value EUR 1 234,56
+nb_NO Negative Currency value -EUR 1 234,56
+nb_NO Date and time short (Gregorian Calendar) 21.07.08 12:31
+nb_NO Date and time medium (Gregorian Calendar) 21. juli 2008 12:31:00
+nb_NO Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+nb_NO Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12:31:00 GMT+00:00
+nb_NO Date and time short (Islamic Calendar) 18.07.29 12:31
+nb_NO Date and time medium (Islamic Calendar) 18. Raj. 1429 12:31:00
+nb_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+nb_NO Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+nb_NO Name of month 01 (Gregorian Calendar) januar
+nb_NO Name of month 02 (Gregorian Calendar) februar
+nb_NO Name of month 03 (Gregorian Calendar) mars
+nb_NO Name of month 04 (Gregorian Calendar) april
+nb_NO Name of month 05 (Gregorian Calendar) mai
+nb_NO Name of month 06 (Gregorian Calendar) juni
+nb_NO Name of month 07 (Gregorian Calendar) juli
+nb_NO Name of month 08 (Gregorian Calendar) august
+nb_NO Name of month 09 (Gregorian Calendar) september
+nb_NO Name of month 10 (Gregorian Calendar) oktober
+nb_NO Name of month 11 (Gregorian Calendar) november
+nb_NO Name of month 12 (Gregorian Calendar) desember
+nb_NO Name of month 01 (Islamic Calendar) Muharram
+nb_NO Name of month 02 (Islamic Calendar) Safar
+nb_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+nb_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+nb_NO Name of month 05 (Islamic Calendar) Jumada I
+nb_NO Name of month 06 (Islamic Calendar) Jumada II
+nb_NO Name of month 07 (Islamic Calendar) Rajab
+nb_NO Name of month 08 (Islamic Calendar) Shaʻban
+nb_NO Name of month 09 (Islamic Calendar) Ramadan
+nb_NO Name of month 10 (Islamic Calendar) Shawwal
+nb_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nb_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nb_NO Name of weekday 01 (Gregorian Calendar) mandag
+nb_NO Name of weekday 02 (Gregorian Calendar) tirsdag
+nb_NO Name of weekday 03 (Gregorian Calendar) onsdag
+nb_NO Name of weekday 04 (Gregorian Calendar) torsdag
+nb_NO Name of weekday 05 (Gregorian Calendar) fredag
+nb_NO Name of weekday 06 (Gregorian Calendar) lørdag
+nb_NO Name of weekday 07 (Gregorian Calendar) søndag
+nb_NO Name of weekday 01 (Islamic Calendar) mandag
+nb_NO Name of weekday 02 (Islamic Calendar) tirsdag
+nb_NO Name of weekday 03 (Islamic Calendar) onsdag
+nb_NO Name of weekday 04 (Islamic Calendar) torsdag
+nb_NO Name of weekday 05 (Islamic Calendar) fredag
+nb_NO Name of weekday 06 (Islamic Calendar) lørdag
+nb_NO Name of weekday 07 (Islamic Calendar) søndag
+nl Language endonym Nederlands
+nl Country endonym
+nl Floating Point Number -123.456.789,012
+nl Percent value -1.234,5679%
+nl Currency value € 1.234,56
+nl Negative Currency value € 1.234,56-
+nl Date and time short (Gregorian Calendar) 21-07-08 12:31
+nl Date and time medium (Gregorian Calendar) 21 jul. 2008 12:31:00
+nl Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl Date and time short (Islamic Calendar) 18-07-29 12:31
+nl Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+nl Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl Name of month 01 (Gregorian Calendar) januari
+nl Name of month 02 (Gregorian Calendar) februari
+nl Name of month 03 (Gregorian Calendar) maart
+nl Name of month 04 (Gregorian Calendar) april
+nl Name of month 05 (Gregorian Calendar) mei
+nl Name of month 06 (Gregorian Calendar) juni
+nl Name of month 07 (Gregorian Calendar) juli
+nl Name of month 08 (Gregorian Calendar) augustus
+nl Name of month 09 (Gregorian Calendar) september
+nl Name of month 10 (Gregorian Calendar) oktober
+nl Name of month 11 (Gregorian Calendar) november
+nl Name of month 12 (Gregorian Calendar) december
+nl Name of month 01 (Islamic Calendar) Moeharram
+nl Name of month 02 (Islamic Calendar) Safar
+nl Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl Name of month 07 (Islamic Calendar) Rajab
+nl Name of month 08 (Islamic Calendar) Sjaʻaban
+nl Name of month 09 (Islamic Calendar) Ramadan
+nl Name of month 10 (Islamic Calendar) Sjawal
+nl Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl Name of month 12 (Islamic Calendar) Doe al hizja
+nl Name of weekday 01 (Gregorian Calendar) maandag
+nl Name of weekday 02 (Gregorian Calendar) dinsdag
+nl Name of weekday 03 (Gregorian Calendar) woensdag
+nl Name of weekday 04 (Gregorian Calendar) donderdag
+nl Name of weekday 05 (Gregorian Calendar) vrijdag
+nl Name of weekday 06 (Gregorian Calendar) zaterdag
+nl Name of weekday 07 (Gregorian Calendar) zondag
+nl Name of weekday 01 (Islamic Calendar) maandag
+nl Name of weekday 02 (Islamic Calendar) dinsdag
+nl Name of weekday 03 (Islamic Calendar) woensdag
+nl Name of weekday 04 (Islamic Calendar) donderdag
+nl Name of weekday 05 (Islamic Calendar) vrijdag
+nl Name of weekday 06 (Islamic Calendar) zaterdag
+nl Name of weekday 07 (Islamic Calendar) zondag
+nl_BE Language endonym nl
+nl_BE Country endonym BE
+nl_BE Floating Point Number -123.456.789,012
+nl_BE Percent value -1.234,5679%
+nl_BE Currency value 1.234,56 €
+nl_BE Negative Currency value -1.234,56 €
+nl_BE Date and time short (Gregorian Calendar) 21/07/08 12:31
+nl_BE Date and time medium (Gregorian Calendar) 21-jul.-2008 12:31:00
+nl_BE Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl_BE Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl_BE Date and time short (Islamic Calendar) 18/07/29 12:31
+nl_BE Date and time medium (Islamic Calendar) 18-Raj.-1429 12:31:00
+nl_BE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl_BE Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl_BE Name of month 01 (Gregorian Calendar) januari
+nl_BE Name of month 02 (Gregorian Calendar) februari
+nl_BE Name of month 03 (Gregorian Calendar) maart
+nl_BE Name of month 04 (Gregorian Calendar) april
+nl_BE Name of month 05 (Gregorian Calendar) mei
+nl_BE Name of month 06 (Gregorian Calendar) juni
+nl_BE Name of month 07 (Gregorian Calendar) juli
+nl_BE Name of month 08 (Gregorian Calendar) augustus
+nl_BE Name of month 09 (Gregorian Calendar) september
+nl_BE Name of month 10 (Gregorian Calendar) oktober
+nl_BE Name of month 11 (Gregorian Calendar) november
+nl_BE Name of month 12 (Gregorian Calendar) december
+nl_BE Name of month 01 (Islamic Calendar) Moeharram
+nl_BE Name of month 02 (Islamic Calendar) Safar
+nl_BE Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl_BE Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl_BE Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl_BE Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl_BE Name of month 07 (Islamic Calendar) Rajab
+nl_BE Name of month 08 (Islamic Calendar) Sjaʻaban
+nl_BE Name of month 09 (Islamic Calendar) Ramadan
+nl_BE Name of month 10 (Islamic Calendar) Sjawal
+nl_BE Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl_BE Name of month 12 (Islamic Calendar) Doe al hizja
+nl_BE Name of weekday 01 (Gregorian Calendar) maandag
+nl_BE Name of weekday 02 (Gregorian Calendar) dinsdag
+nl_BE Name of weekday 03 (Gregorian Calendar) woensdag
+nl_BE Name of weekday 04 (Gregorian Calendar) donderdag
+nl_BE Name of weekday 05 (Gregorian Calendar) vrijdag
+nl_BE Name of weekday 06 (Gregorian Calendar) zaterdag
+nl_BE Name of weekday 07 (Gregorian Calendar) zondag
+nl_BE Name of weekday 01 (Islamic Calendar) maandag
+nl_BE Name of weekday 02 (Islamic Calendar) dinsdag
+nl_BE Name of weekday 03 (Islamic Calendar) woensdag
+nl_BE Name of weekday 04 (Islamic Calendar) donderdag
+nl_BE Name of weekday 05 (Islamic Calendar) vrijdag
+nl_BE Name of weekday 06 (Islamic Calendar) zaterdag
+nl_BE Name of weekday 07 (Islamic Calendar) zondag
+nl_NL Language endonym Nederlands
+nl_NL Country endonym Nederland
+nl_NL Floating Point Number -123.456.789,012
+nl_NL Percent value -1.234,5679%
+nl_NL Currency value € 1.234,56
+nl_NL Negative Currency value € 1.234,56-
+nl_NL Date and time short (Gregorian Calendar) 21-07-08 12:31
+nl_NL Date and time medium (Gregorian Calendar) 21 jul. 2008 12:31:00
+nl_NL Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+nl_NL Date and time full (Gregorian Calendar) maandag 21 juli 2008 12:31:00 GMT+00:00
+nl_NL Date and time short (Islamic Calendar) 18-07-29 12:31
+nl_NL Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+nl_NL Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+nl_NL Date and time full (Islamic Calendar) maandag 18 Rajab 1429 12:31:00 GMT+00:00
+nl_NL Name of month 01 (Gregorian Calendar) januari
+nl_NL Name of month 02 (Gregorian Calendar) februari
+nl_NL Name of month 03 (Gregorian Calendar) maart
+nl_NL Name of month 04 (Gregorian Calendar) april
+nl_NL Name of month 05 (Gregorian Calendar) mei
+nl_NL Name of month 06 (Gregorian Calendar) juni
+nl_NL Name of month 07 (Gregorian Calendar) juli
+nl_NL Name of month 08 (Gregorian Calendar) augustus
+nl_NL Name of month 09 (Gregorian Calendar) september
+nl_NL Name of month 10 (Gregorian Calendar) oktober
+nl_NL Name of month 11 (Gregorian Calendar) november
+nl_NL Name of month 12 (Gregorian Calendar) december
+nl_NL Name of month 01 (Islamic Calendar) Moeharram
+nl_NL Name of month 02 (Islamic Calendar) Safar
+nl_NL Name of month 03 (Islamic Calendar) Rabiʻa al awal
+nl_NL Name of month 04 (Islamic Calendar) Rabiʻa al thani
+nl_NL Name of month 05 (Islamic Calendar) Joemadʻal awal
+nl_NL Name of month 06 (Islamic Calendar) Joemadʻal thani
+nl_NL Name of month 07 (Islamic Calendar) Rajab
+nl_NL Name of month 08 (Islamic Calendar) Sjaʻaban
+nl_NL Name of month 09 (Islamic Calendar) Ramadan
+nl_NL Name of month 10 (Islamic Calendar) Sjawal
+nl_NL Name of month 11 (Islamic Calendar) Doe al kaʻaba
+nl_NL Name of month 12 (Islamic Calendar) Doe al hizja
+nl_NL Name of weekday 01 (Gregorian Calendar) maandag
+nl_NL Name of weekday 02 (Gregorian Calendar) dinsdag
+nl_NL Name of weekday 03 (Gregorian Calendar) woensdag
+nl_NL Name of weekday 04 (Gregorian Calendar) donderdag
+nl_NL Name of weekday 05 (Gregorian Calendar) vrijdag
+nl_NL Name of weekday 06 (Gregorian Calendar) zaterdag
+nl_NL Name of weekday 07 (Gregorian Calendar) zondag
+nl_NL Name of weekday 01 (Islamic Calendar) maandag
+nl_NL Name of weekday 02 (Islamic Calendar) dinsdag
+nl_NL Name of weekday 03 (Islamic Calendar) woensdag
+nl_NL Name of weekday 04 (Islamic Calendar) donderdag
+nl_NL Name of weekday 05 (Islamic Calendar) vrijdag
+nl_NL Name of weekday 06 (Islamic Calendar) zaterdag
+nl_NL Name of weekday 07 (Islamic Calendar) zondag
+nn Language endonym nynorsk
+nn Country endonym
+nn Floating Point Number −123 456 789,012
+nn Percent value −1 234,5679 %
+nn Currency value 1 234,56 EUR
+nn Negative Currency value −1 234,56 EUR
+nn Date and time short (Gregorian Calendar) 21.07.08 12:31
+nn Date and time medium (Gregorian Calendar) 21. jul. 2008 12:31:00
+nn Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+nn Date and time full (Gregorian Calendar) måndag 21. juli 2008 kl. 12:31:00 GMT+00:00
+nn Date and time short (Islamic Calendar) 18.07.29 12:31
+nn Date and time medium (Islamic Calendar) 18. Raj.. 1429 12:31:00
+nn Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+nn Date and time full (Islamic Calendar) måndag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+nn Name of month 01 (Gregorian Calendar) januar
+nn Name of month 02 (Gregorian Calendar) februar
+nn Name of month 03 (Gregorian Calendar) mars
+nn Name of month 04 (Gregorian Calendar) april
+nn Name of month 05 (Gregorian Calendar) mai
+nn Name of month 06 (Gregorian Calendar) juni
+nn Name of month 07 (Gregorian Calendar) juli
+nn Name of month 08 (Gregorian Calendar) august
+nn Name of month 09 (Gregorian Calendar) september
+nn Name of month 10 (Gregorian Calendar) oktober
+nn Name of month 11 (Gregorian Calendar) november
+nn Name of month 12 (Gregorian Calendar) desember
+nn Name of month 01 (Islamic Calendar) Muharram
+nn Name of month 02 (Islamic Calendar) Safar
+nn Name of month 03 (Islamic Calendar) Rabiʻ I
+nn Name of month 04 (Islamic Calendar) Rabiʻ II
+nn Name of month 05 (Islamic Calendar) Jumada I
+nn Name of month 06 (Islamic Calendar) Jumada II
+nn Name of month 07 (Islamic Calendar) Rajab
+nn Name of month 08 (Islamic Calendar) Shaʻban
+nn Name of month 09 (Islamic Calendar) Ramadan
+nn Name of month 10 (Islamic Calendar) Shawwal
+nn Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nn Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nn Name of weekday 01 (Gregorian Calendar) måndag
+nn Name of weekday 02 (Gregorian Calendar) tysdag
+nn Name of weekday 03 (Gregorian Calendar) onsdag
+nn Name of weekday 04 (Gregorian Calendar) torsdag
+nn Name of weekday 05 (Gregorian Calendar) fredag
+nn Name of weekday 06 (Gregorian Calendar) laurdag
+nn Name of weekday 07 (Gregorian Calendar) søndag
+nn Name of weekday 01 (Islamic Calendar) måndag
+nn Name of weekday 02 (Islamic Calendar) tysdag
+nn Name of weekday 03 (Islamic Calendar) onsdag
+nn Name of weekday 04 (Islamic Calendar) torsdag
+nn Name of weekday 05 (Islamic Calendar) fredag
+nn Name of weekday 06 (Islamic Calendar) laurdag
+nn Name of weekday 07 (Islamic Calendar) søndag
+nn_NO Language endonym nynorsk
+nn_NO Country endonym Noreg
+nn_NO Floating Point Number −123 456 789,012
+nn_NO Percent value −1 234,5679 %
+nn_NO Currency value 1 234,56 EUR
+nn_NO Negative Currency value −1 234,56 EUR
+nn_NO Date and time short (Gregorian Calendar) 21.07.08 12:31
+nn_NO Date and time medium (Gregorian Calendar) 21. jul. 2008 12:31:00
+nn_NO Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+nn_NO Date and time full (Gregorian Calendar) måndag 21. juli 2008 kl. 12:31:00 GMT+00:00
+nn_NO Date and time short (Islamic Calendar) 18.07.29 12:31
+nn_NO Date and time medium (Islamic Calendar) 18. Raj.. 1429 12:31:00
+nn_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+nn_NO Date and time full (Islamic Calendar) måndag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+nn_NO Name of month 01 (Gregorian Calendar) januar
+nn_NO Name of month 02 (Gregorian Calendar) februar
+nn_NO Name of month 03 (Gregorian Calendar) mars
+nn_NO Name of month 04 (Gregorian Calendar) april
+nn_NO Name of month 05 (Gregorian Calendar) mai
+nn_NO Name of month 06 (Gregorian Calendar) juni
+nn_NO Name of month 07 (Gregorian Calendar) juli
+nn_NO Name of month 08 (Gregorian Calendar) august
+nn_NO Name of month 09 (Gregorian Calendar) september
+nn_NO Name of month 10 (Gregorian Calendar) oktober
+nn_NO Name of month 11 (Gregorian Calendar) november
+nn_NO Name of month 12 (Gregorian Calendar) desember
+nn_NO Name of month 01 (Islamic Calendar) Muharram
+nn_NO Name of month 02 (Islamic Calendar) Safar
+nn_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+nn_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+nn_NO Name of month 05 (Islamic Calendar) Jumada I
+nn_NO Name of month 06 (Islamic Calendar) Jumada II
+nn_NO Name of month 07 (Islamic Calendar) Rajab
+nn_NO Name of month 08 (Islamic Calendar) Shaʻban
+nn_NO Name of month 09 (Islamic Calendar) Ramadan
+nn_NO Name of month 10 (Islamic Calendar) Shawwal
+nn_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+nn_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+nn_NO Name of weekday 01 (Gregorian Calendar) måndag
+nn_NO Name of weekday 02 (Gregorian Calendar) tysdag
+nn_NO Name of weekday 03 (Gregorian Calendar) onsdag
+nn_NO Name of weekday 04 (Gregorian Calendar) torsdag
+nn_NO Name of weekday 05 (Gregorian Calendar) fredag
+nn_NO Name of weekday 06 (Gregorian Calendar) laurdag
+nn_NO Name of weekday 07 (Gregorian Calendar) søndag
+nn_NO Name of weekday 01 (Islamic Calendar) måndag
+nn_NO Name of weekday 02 (Islamic Calendar) tysdag
+nn_NO Name of weekday 03 (Islamic Calendar) onsdag
+nn_NO Name of weekday 04 (Islamic Calendar) torsdag
+nn_NO Name of weekday 05 (Islamic Calendar) fredag
+nn_NO Name of weekday 06 (Islamic Calendar) laurdag
+nn_NO Name of weekday 07 (Islamic Calendar) søndag
+pt Language endonym português
+pt Country endonym
+pt Floating Point Number -123.456.789,012
+pt Percent value -1.234,5679%
+pt Currency value €1.234,56
+pt Negative Currency value (€1.234,56)
+pt Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+pt Date and time long (Gregorian Calendar) 21 de julho de 2008 12h31min00s GMT+00:00
+pt Date and time full (Gregorian Calendar) segunda-feira, 21 de julho de 2008 12h31min00s GMT+00:00
+pt Date and time short (Islamic Calendar) 18/07/29 12:31
+pt Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+pt Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt Date and time full (Islamic Calendar) segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt Name of month 01 (Gregorian Calendar) janeiro
+pt Name of month 02 (Gregorian Calendar) fevereiro
+pt Name of month 03 (Gregorian Calendar) março
+pt Name of month 04 (Gregorian Calendar) abril
+pt Name of month 05 (Gregorian Calendar) maio
+pt Name of month 06 (Gregorian Calendar) junho
+pt Name of month 07 (Gregorian Calendar) julho
+pt Name of month 08 (Gregorian Calendar) agosto
+pt Name of month 09 (Gregorian Calendar) setembro
+pt Name of month 10 (Gregorian Calendar) outubro
+pt Name of month 11 (Gregorian Calendar) novembro
+pt Name of month 12 (Gregorian Calendar) dezembro
+pt Name of month 01 (Islamic Calendar) Muharram
+pt Name of month 02 (Islamic Calendar) Safar
+pt Name of month 03 (Islamic Calendar) Rabiʻ I
+pt Name of month 04 (Islamic Calendar) Rabiʻ II
+pt Name of month 05 (Islamic Calendar) Jumada I
+pt Name of month 06 (Islamic Calendar) Jumada II
+pt Name of month 07 (Islamic Calendar) Rajab
+pt Name of month 08 (Islamic Calendar) Shaʻban
+pt Name of month 09 (Islamic Calendar) Ramadan
+pt Name of month 10 (Islamic Calendar) Shawwal
+pt Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt Name of weekday 01 (Gregorian Calendar) segunda-feira
+pt Name of weekday 02 (Gregorian Calendar) terça-feira
+pt Name of weekday 03 (Gregorian Calendar) quarta-feira
+pt Name of weekday 04 (Gregorian Calendar) quinta-feira
+pt Name of weekday 05 (Gregorian Calendar) sexta-feira
+pt Name of weekday 06 (Gregorian Calendar) sábado
+pt Name of weekday 07 (Gregorian Calendar) domingo
+pt Name of weekday 01 (Islamic Calendar) segunda-feira
+pt Name of weekday 02 (Islamic Calendar) terça-feira
+pt Name of weekday 03 (Islamic Calendar) quarta-feira
+pt Name of weekday 04 (Islamic Calendar) quinta-feira
+pt Name of weekday 05 (Islamic Calendar) sexta-feira
+pt Name of weekday 06 (Islamic Calendar) sábado
+pt Name of weekday 07 (Islamic Calendar) domingo
+pt_BR Language endonym português
+pt_BR Country endonym Brasil
+pt_BR Floating Point Number -123.456.789,012
+pt_BR Percent value -1.234,5679%
+pt_BR Currency value €1.234,56
+pt_BR Negative Currency value (€1.234,56)
+pt_BR Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt_BR Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+pt_BR Date and time long (Gregorian Calendar) 21 de julho de 2008 12h31min00s GMT+00:00
+pt_BR Date and time full (Gregorian Calendar) segunda-feira, 21 de julho de 2008 12h31min00s GMT+00:00
+pt_BR Date and time short (Islamic Calendar) 18/07/29 12:31
+pt_BR Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+pt_BR Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_BR Date and time full (Islamic Calendar) segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_BR Name of month 01 (Gregorian Calendar) janeiro
+pt_BR Name of month 02 (Gregorian Calendar) fevereiro
+pt_BR Name of month 03 (Gregorian Calendar) março
+pt_BR Name of month 04 (Gregorian Calendar) abril
+pt_BR Name of month 05 (Gregorian Calendar) maio
+pt_BR Name of month 06 (Gregorian Calendar) junho
+pt_BR Name of month 07 (Gregorian Calendar) julho
+pt_BR Name of month 08 (Gregorian Calendar) agosto
+pt_BR Name of month 09 (Gregorian Calendar) setembro
+pt_BR Name of month 10 (Gregorian Calendar) outubro
+pt_BR Name of month 11 (Gregorian Calendar) novembro
+pt_BR Name of month 12 (Gregorian Calendar) dezembro
+pt_BR Name of month 01 (Islamic Calendar) Muharram
+pt_BR Name of month 02 (Islamic Calendar) Safar
+pt_BR Name of month 03 (Islamic Calendar) Rabiʻ I
+pt_BR Name of month 04 (Islamic Calendar) Rabiʻ II
+pt_BR Name of month 05 (Islamic Calendar) Jumada I
+pt_BR Name of month 06 (Islamic Calendar) Jumada II
+pt_BR Name of month 07 (Islamic Calendar) Rajab
+pt_BR Name of month 08 (Islamic Calendar) Shaʻban
+pt_BR Name of month 09 (Islamic Calendar) Ramadan
+pt_BR Name of month 10 (Islamic Calendar) Shawwal
+pt_BR Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt_BR Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt_BR Name of weekday 01 (Gregorian Calendar) segunda-feira
+pt_BR Name of weekday 02 (Gregorian Calendar) terça-feira
+pt_BR Name of weekday 03 (Gregorian Calendar) quarta-feira
+pt_BR Name of weekday 04 (Gregorian Calendar) quinta-feira
+pt_BR Name of weekday 05 (Gregorian Calendar) sexta-feira
+pt_BR Name of weekday 06 (Gregorian Calendar) sábado
+pt_BR Name of weekday 07 (Gregorian Calendar) domingo
+pt_BR Name of weekday 01 (Islamic Calendar) segunda-feira
+pt_BR Name of weekday 02 (Islamic Calendar) terça-feira
+pt_BR Name of weekday 03 (Islamic Calendar) quarta-feira
+pt_BR Name of weekday 04 (Islamic Calendar) quinta-feira
+pt_BR Name of weekday 05 (Islamic Calendar) sexta-feira
+pt_BR Name of weekday 06 (Islamic Calendar) sábado
+pt_BR Name of weekday 07 (Islamic Calendar) domingo
+pt_PT Language endonym pt
+pt_PT Country endonym PT
+pt_PT Floating Point Number -123 456 789,012
+pt_PT Percent value -1 234,5679%
+pt_PT Currency value 1 234,56 €
+pt_PT Negative Currency value -1 234,56 €
+pt_PT Date and time short (Gregorian Calendar) 21/07/08 12:31
+pt_PT Date and time medium (Gregorian Calendar) 21 de Jul de 2008 12:31:00
+pt_PT Date and time long (Gregorian Calendar) 21 de Julho de 2008 12h31min00s GMT+00:00
+pt_PT Date and time full (Gregorian Calendar) Segunda-feira, 21 de Julho de 2008 12h31min00s GMT+00:00
+pt_PT Date and time short (Islamic Calendar) 18/07/29 12:31
+pt_PT Date and time medium (Islamic Calendar) 18 de Raj. de 1429 12:31:00
+pt_PT Date and time long (Islamic Calendar) 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_PT Date and time full (Islamic Calendar) Segunda-feira, 18 de Rajab de 1429 12h31min00s GMT+00:00
+pt_PT Name of month 01 (Gregorian Calendar) Janeiro
+pt_PT Name of month 02 (Gregorian Calendar) Fevereiro
+pt_PT Name of month 03 (Gregorian Calendar) Março
+pt_PT Name of month 04 (Gregorian Calendar) Abril
+pt_PT Name of month 05 (Gregorian Calendar) Maio
+pt_PT Name of month 06 (Gregorian Calendar) Junho
+pt_PT Name of month 07 (Gregorian Calendar) Julho
+pt_PT Name of month 08 (Gregorian Calendar) Agosto
+pt_PT Name of month 09 (Gregorian Calendar) Setembro
+pt_PT Name of month 10 (Gregorian Calendar) Outubro
+pt_PT Name of month 11 (Gregorian Calendar) Novembro
+pt_PT Name of month 12 (Gregorian Calendar) Dezembro
+pt_PT Name of month 01 (Islamic Calendar) Muharram
+pt_PT Name of month 02 (Islamic Calendar) Safar
+pt_PT Name of month 03 (Islamic Calendar) Rabiʻ I
+pt_PT Name of month 04 (Islamic Calendar) Rabiʻ II
+pt_PT Name of month 05 (Islamic Calendar) Jumada I
+pt_PT Name of month 06 (Islamic Calendar) Jumada II
+pt_PT Name of month 07 (Islamic Calendar) Rajab
+pt_PT Name of month 08 (Islamic Calendar) Shaʻban
+pt_PT Name of month 09 (Islamic Calendar) Ramadan
+pt_PT Name of month 10 (Islamic Calendar) Shawwal
+pt_PT Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+pt_PT Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+pt_PT Name of weekday 01 (Gregorian Calendar) Segunda-feira
+pt_PT Name of weekday 02 (Gregorian Calendar) Terça-feira
+pt_PT Name of weekday 03 (Gregorian Calendar) Quarta-feira
+pt_PT Name of weekday 04 (Gregorian Calendar) Quinta-feira
+pt_PT Name of weekday 05 (Gregorian Calendar) Sexta-feira
+pt_PT Name of weekday 06 (Gregorian Calendar) Sábado
+pt_PT Name of weekday 07 (Gregorian Calendar) Domingo
+pt_PT Name of weekday 01 (Islamic Calendar) Segunda-feira
+pt_PT Name of weekday 02 (Islamic Calendar) Terça-feira
+pt_PT Name of weekday 03 (Islamic Calendar) Quarta-feira
+pt_PT Name of weekday 04 (Islamic Calendar) Quinta-feira
+pt_PT Name of weekday 05 (Islamic Calendar) Sexta-feira
+pt_PT Name of weekday 06 (Islamic Calendar) Sábado
+pt_PT Name of weekday 07 (Islamic Calendar) Domingo
+ru Language endonym русский
+ru Country endonym
+ru Floating Point Number -123 456 789,012
+ru Percent value -1 234,5679 %
+ru Currency value 1 234,56 €
+ru Negative Currency value -1 234,56 €
+ru Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+ru Date and time long (Gregorian Calendar) 21 июля 2008 г. 12:31:00 GMT+00:00
+ru Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru Date and time short (Islamic Calendar) 18.07.29 12:31
+ru Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+ru Date and time long (Islamic Calendar) 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru Name of month 01 (Gregorian Calendar) января
+ru Name of month 02 (Gregorian Calendar) февраля
+ru Name of month 03 (Gregorian Calendar) марта
+ru Name of month 04 (Gregorian Calendar) апреля
+ru Name of month 05 (Gregorian Calendar) мая
+ru Name of month 06 (Gregorian Calendar) июня
+ru Name of month 07 (Gregorian Calendar) июля
+ru Name of month 08 (Gregorian Calendar) августа
+ru Name of month 09 (Gregorian Calendar) сентября
+ru Name of month 10 (Gregorian Calendar) октября
+ru Name of month 11 (Gregorian Calendar) ноября
+ru Name of month 12 (Gregorian Calendar) декабря
+ru Name of month 01 (Islamic Calendar) Мухаррам
+ru Name of month 02 (Islamic Calendar) Сафар
+ru Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru Name of month 07 (Islamic Calendar) Раджаб
+ru Name of month 08 (Islamic Calendar) Шаабан
+ru Name of month 09 (Islamic Calendar) Рамадан
+ru Name of month 10 (Islamic Calendar) Шавваль
+ru Name of month 11 (Islamic Calendar) Зуль-Каада
+ru Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru Name of weekday 01 (Gregorian Calendar) понедельник
+ru Name of weekday 02 (Gregorian Calendar) вторник
+ru Name of weekday 03 (Gregorian Calendar) среда
+ru Name of weekday 04 (Gregorian Calendar) четверг
+ru Name of weekday 05 (Gregorian Calendar) пятница
+ru Name of weekday 06 (Gregorian Calendar) суббота
+ru Name of weekday 07 (Gregorian Calendar) воскресенье
+ru Name of weekday 01 (Islamic Calendar) понедельник
+ru Name of weekday 02 (Islamic Calendar) вторник
+ru Name of weekday 03 (Islamic Calendar) среда
+ru Name of weekday 04 (Islamic Calendar) четверг
+ru Name of weekday 05 (Islamic Calendar) пятница
+ru Name of weekday 06 (Islamic Calendar) суббота
+ru Name of weekday 07 (Islamic Calendar) воскресенье
+ru_RU Language endonym русский
+ru_RU Country endonym Россия
+ru_RU Floating Point Number -123 456 789,012
+ru_RU Percent value -1 234,5679 %
+ru_RU Currency value 1 234,56 €
+ru_RU Negative Currency value -1 234,56 €
+ru_RU Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru_RU Date and time medium (Gregorian Calendar) 21.07.2008 12:31:00
+ru_RU Date and time long (Gregorian Calendar) 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_RU Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_RU Date and time short (Islamic Calendar) 18.07.29 12:31
+ru_RU Date and time medium (Islamic Calendar) 18.07.1429 12:31:00
+ru_RU Date and time long (Islamic Calendar) 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_RU Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_RU Name of month 01 (Gregorian Calendar) января
+ru_RU Name of month 02 (Gregorian Calendar) февраля
+ru_RU Name of month 03 (Gregorian Calendar) марта
+ru_RU Name of month 04 (Gregorian Calendar) апреля
+ru_RU Name of month 05 (Gregorian Calendar) мая
+ru_RU Name of month 06 (Gregorian Calendar) июня
+ru_RU Name of month 07 (Gregorian Calendar) июля
+ru_RU Name of month 08 (Gregorian Calendar) августа
+ru_RU Name of month 09 (Gregorian Calendar) сентября
+ru_RU Name of month 10 (Gregorian Calendar) октября
+ru_RU Name of month 11 (Gregorian Calendar) ноября
+ru_RU Name of month 12 (Gregorian Calendar) декабря
+ru_RU Name of month 01 (Islamic Calendar) Мухаррам
+ru_RU Name of month 02 (Islamic Calendar) Сафар
+ru_RU Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru_RU Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru_RU Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru_RU Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru_RU Name of month 07 (Islamic Calendar) Раджаб
+ru_RU Name of month 08 (Islamic Calendar) Шаабан
+ru_RU Name of month 09 (Islamic Calendar) Рамадан
+ru_RU Name of month 10 (Islamic Calendar) Шавваль
+ru_RU Name of month 11 (Islamic Calendar) Зуль-Каада
+ru_RU Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru_RU Name of weekday 01 (Gregorian Calendar) понедельник
+ru_RU Name of weekday 02 (Gregorian Calendar) вторник
+ru_RU Name of weekday 03 (Gregorian Calendar) среда
+ru_RU Name of weekday 04 (Gregorian Calendar) четверг
+ru_RU Name of weekday 05 (Gregorian Calendar) пятница
+ru_RU Name of weekday 06 (Gregorian Calendar) суббота
+ru_RU Name of weekday 07 (Gregorian Calendar) воскресенье
+ru_RU Name of weekday 01 (Islamic Calendar) понедельник
+ru_RU Name of weekday 02 (Islamic Calendar) вторник
+ru_RU Name of weekday 03 (Islamic Calendar) среда
+ru_RU Name of weekday 04 (Islamic Calendar) четверг
+ru_RU Name of weekday 05 (Islamic Calendar) пятница
+ru_RU Name of weekday 06 (Islamic Calendar) суббота
+ru_RU Name of weekday 07 (Islamic Calendar) воскресенье
+ru_UA Language endonym ru
+ru_UA Country endonym Украина
+ru_UA Floating Point Number -123 456 789,012
+ru_UA Percent value -1 234,5679 %
+ru_UA Currency value 1 234,56 €
+ru_UA Negative Currency value -1 234,56 €
+ru_UA Date and time short (Gregorian Calendar) 21.07.08 12:31
+ru_UA Date and time medium (Gregorian Calendar) 21 июля 2008 12:31:00
+ru_UA Date and time long (Gregorian Calendar) 21 июля 2008 12:31:00 GMT+00:00
+ru_UA Date and time full (Gregorian Calendar) понедельник, 21 июля 2008 г. 12:31:00 GMT+00:00
+ru_UA Date and time short (Islamic Calendar) 18.07.29 12:31
+ru_UA Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+ru_UA Date and time long (Islamic Calendar) 18 Раджаб 1429 12:31:00 GMT+00:00
+ru_UA Date and time full (Islamic Calendar) понедельник, 18 Раджаб 1429 г. 12:31:00 GMT+00:00
+ru_UA Name of month 01 (Gregorian Calendar) января
+ru_UA Name of month 02 (Gregorian Calendar) февраля
+ru_UA Name of month 03 (Gregorian Calendar) марта
+ru_UA Name of month 04 (Gregorian Calendar) апреля
+ru_UA Name of month 05 (Gregorian Calendar) мая
+ru_UA Name of month 06 (Gregorian Calendar) июня
+ru_UA Name of month 07 (Gregorian Calendar) июля
+ru_UA Name of month 08 (Gregorian Calendar) августа
+ru_UA Name of month 09 (Gregorian Calendar) сентября
+ru_UA Name of month 10 (Gregorian Calendar) октября
+ru_UA Name of month 11 (Gregorian Calendar) ноября
+ru_UA Name of month 12 (Gregorian Calendar) декабря
+ru_UA Name of month 01 (Islamic Calendar) Мухаррам
+ru_UA Name of month 02 (Islamic Calendar) Сафар
+ru_UA Name of month 03 (Islamic Calendar) Раби-уль-авваль
+ru_UA Name of month 04 (Islamic Calendar) Раби-уль-ахир
+ru_UA Name of month 05 (Islamic Calendar) Джумад-уль-авваль
+ru_UA Name of month 06 (Islamic Calendar) Джумад-уль-ахир
+ru_UA Name of month 07 (Islamic Calendar) Раджаб
+ru_UA Name of month 08 (Islamic Calendar) Шаабан
+ru_UA Name of month 09 (Islamic Calendar) Рамадан
+ru_UA Name of month 10 (Islamic Calendar) Шавваль
+ru_UA Name of month 11 (Islamic Calendar) Зуль-Каада
+ru_UA Name of month 12 (Islamic Calendar) Зуль-Хиджжа
+ru_UA Name of weekday 01 (Gregorian Calendar) понедельник
+ru_UA Name of weekday 02 (Gregorian Calendar) вторник
+ru_UA Name of weekday 03 (Gregorian Calendar) среда
+ru_UA Name of weekday 04 (Gregorian Calendar) четверг
+ru_UA Name of weekday 05 (Gregorian Calendar) пятница
+ru_UA Name of weekday 06 (Gregorian Calendar) суббота
+ru_UA Name of weekday 07 (Gregorian Calendar) воскресенье
+ru_UA Name of weekday 01 (Islamic Calendar) понедельник
+ru_UA Name of weekday 02 (Islamic Calendar) вторник
+ru_UA Name of weekday 03 (Islamic Calendar) среда
+ru_UA Name of weekday 04 (Islamic Calendar) четверг
+ru_UA Name of weekday 05 (Islamic Calendar) пятница
+ru_UA Name of weekday 06 (Islamic Calendar) суббота
+ru_UA Name of weekday 07 (Islamic Calendar) воскресенье
+sv Language endonym svenska
+sv Country endonym
+sv Floating Point Number −123 456 789,012
+sv Percent value −1 234,5679 %
+sv Currency value 1 234,56 €
+sv Negative Currency value −1 234,56 €
+sv Date and time short (Gregorian Calendar) 2008-07-21 12:31
+sv Date and time medium (Gregorian Calendar) 21 jul 2008 12:31:00
+sv Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+sv Date and time full (Gregorian Calendar) måndagen den 21:e juli 2008 kl. 12:31:00 GMT+00:00
+sv Date and time short (Islamic Calendar) 1429-07-18 12:31
+sv Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+sv Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+sv Date and time full (Islamic Calendar) måndagen den 18:e Rajab 1429 kl. 12:31:00 GMT+00:00
+sv Name of month 01 (Gregorian Calendar) januari
+sv Name of month 02 (Gregorian Calendar) februari
+sv Name of month 03 (Gregorian Calendar) mars
+sv Name of month 04 (Gregorian Calendar) april
+sv Name of month 05 (Gregorian Calendar) maj
+sv Name of month 06 (Gregorian Calendar) juni
+sv Name of month 07 (Gregorian Calendar) juli
+sv Name of month 08 (Gregorian Calendar) augusti
+sv Name of month 09 (Gregorian Calendar) september
+sv Name of month 10 (Gregorian Calendar) oktober
+sv Name of month 11 (Gregorian Calendar) november
+sv Name of month 12 (Gregorian Calendar) december
+sv Name of month 01 (Islamic Calendar) Muharram
+sv Name of month 02 (Islamic Calendar) Safar
+sv Name of month 03 (Islamic Calendar) Rabiʻ I
+sv Name of month 04 (Islamic Calendar) Rabiʻ II
+sv Name of month 05 (Islamic Calendar) Jumada I
+sv Name of month 06 (Islamic Calendar) Jumada II
+sv Name of month 07 (Islamic Calendar) Rajab
+sv Name of month 08 (Islamic Calendar) Shaʻban
+sv Name of month 09 (Islamic Calendar) Ramadan
+sv Name of month 10 (Islamic Calendar) Shawwal
+sv Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv Name of weekday 01 (Gregorian Calendar) måndag
+sv Name of weekday 02 (Gregorian Calendar) tisdag
+sv Name of weekday 03 (Gregorian Calendar) onsdag
+sv Name of weekday 04 (Gregorian Calendar) torsdag
+sv Name of weekday 05 (Gregorian Calendar) fredag
+sv Name of weekday 06 (Gregorian Calendar) lördag
+sv Name of weekday 07 (Gregorian Calendar) söndag
+sv Name of weekday 01 (Islamic Calendar) måndag
+sv Name of weekday 02 (Islamic Calendar) tisdag
+sv Name of weekday 03 (Islamic Calendar) onsdag
+sv Name of weekday 04 (Islamic Calendar) torsdag
+sv Name of weekday 05 (Islamic Calendar) fredag
+sv Name of weekday 06 (Islamic Calendar) lördag
+sv Name of weekday 07 (Islamic Calendar) söndag
+sv_FI Language endonym svenska
+sv_FI Country endonym FI
+sv_FI Floating Point Number −123 456 789,012
+sv_FI Percent value −1 234,5679 %
+sv_FI Currency value 1 234,56 €
+sv_FI Negative Currency value −1 234,56 €
+sv_FI Date and time short (Gregorian Calendar) 2008-07-21 12:31
+sv_FI Date and time medium (Gregorian Calendar) 21 jul 2008 12:31:00
+sv_FI Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+sv_FI Date and time full (Gregorian Calendar) måndagen den 21:e juli 2008 kl. 12:31:00 GMT+00:00
+sv_FI Date and time short (Islamic Calendar) 1429-07-18 12:31
+sv_FI Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+sv_FI Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+sv_FI Date and time full (Islamic Calendar) måndagen den 18:e Rajab 1429 kl. 12:31:00 GMT+00:00
+sv_FI Name of month 01 (Gregorian Calendar) januari
+sv_FI Name of month 02 (Gregorian Calendar) februari
+sv_FI Name of month 03 (Gregorian Calendar) mars
+sv_FI Name of month 04 (Gregorian Calendar) april
+sv_FI Name of month 05 (Gregorian Calendar) maj
+sv_FI Name of month 06 (Gregorian Calendar) juni
+sv_FI Name of month 07 (Gregorian Calendar) juli
+sv_FI Name of month 08 (Gregorian Calendar) augusti
+sv_FI Name of month 09 (Gregorian Calendar) september
+sv_FI Name of month 10 (Gregorian Calendar) oktober
+sv_FI Name of month 11 (Gregorian Calendar) november
+sv_FI Name of month 12 (Gregorian Calendar) december
+sv_FI Name of month 01 (Islamic Calendar) Muharram
+sv_FI Name of month 02 (Islamic Calendar) Safar
+sv_FI Name of month 03 (Islamic Calendar) Rabiʻ I
+sv_FI Name of month 04 (Islamic Calendar) Rabiʻ II
+sv_FI Name of month 05 (Islamic Calendar) Jumada I
+sv_FI Name of month 06 (Islamic Calendar) Jumada II
+sv_FI Name of month 07 (Islamic Calendar) Rajab
+sv_FI Name of month 08 (Islamic Calendar) Shaʻban
+sv_FI Name of month 09 (Islamic Calendar) Ramadan
+sv_FI Name of month 10 (Islamic Calendar) Shawwal
+sv_FI Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv_FI Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv_FI Name of weekday 01 (Gregorian Calendar) måndag
+sv_FI Name of weekday 02 (Gregorian Calendar) tisdag
+sv_FI Name of weekday 03 (Gregorian Calendar) onsdag
+sv_FI Name of weekday 04 (Gregorian Calendar) torsdag
+sv_FI Name of weekday 05 (Gregorian Calendar) fredag
+sv_FI Name of weekday 06 (Gregorian Calendar) lördag
+sv_FI Name of weekday 07 (Gregorian Calendar) söndag
+sv_FI Name of weekday 01 (Islamic Calendar) måndag
+sv_FI Name of weekday 02 (Islamic Calendar) tisdag
+sv_FI Name of weekday 03 (Islamic Calendar) onsdag
+sv_FI Name of weekday 04 (Islamic Calendar) torsdag
+sv_FI Name of weekday 05 (Islamic Calendar) fredag
+sv_FI Name of weekday 06 (Islamic Calendar) lördag
+sv_FI Name of weekday 07 (Islamic Calendar) söndag
+sv_SE Language endonym svenska
+sv_SE Country endonym Sverige
+sv_SE Floating Point Number −123 456 789,012
+sv_SE Percent value −1 234,5679 %
+sv_SE Currency value 1 234,56 €
+sv_SE Negative Currency value −1 234,56 €
+sv_SE Date and time short (Gregorian Calendar) 2008-07-21 12:31
+sv_SE Date and time medium (Gregorian Calendar) 21 jul 2008 12:31:00
+sv_SE Date and time long (Gregorian Calendar) 21 juli 2008 12:31:00 GMT+00:00
+sv_SE Date and time full (Gregorian Calendar) måndagen den 21:e juli 2008 kl. 12:31:00 GMT+00:00
+sv_SE Date and time short (Islamic Calendar) 1429-07-18 12:31
+sv_SE Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+sv_SE Date and time long (Islamic Calendar) 18 Rajab 1429 12:31:00 GMT+00:00
+sv_SE Date and time full (Islamic Calendar) måndagen den 18:e Rajab 1429 kl. 12:31:00 GMT+00:00
+sv_SE Name of month 01 (Gregorian Calendar) januari
+sv_SE Name of month 02 (Gregorian Calendar) februari
+sv_SE Name of month 03 (Gregorian Calendar) mars
+sv_SE Name of month 04 (Gregorian Calendar) april
+sv_SE Name of month 05 (Gregorian Calendar) maj
+sv_SE Name of month 06 (Gregorian Calendar) juni
+sv_SE Name of month 07 (Gregorian Calendar) juli
+sv_SE Name of month 08 (Gregorian Calendar) augusti
+sv_SE Name of month 09 (Gregorian Calendar) september
+sv_SE Name of month 10 (Gregorian Calendar) oktober
+sv_SE Name of month 11 (Gregorian Calendar) november
+sv_SE Name of month 12 (Gregorian Calendar) december
+sv_SE Name of month 01 (Islamic Calendar) Muharram
+sv_SE Name of month 02 (Islamic Calendar) Safar
+sv_SE Name of month 03 (Islamic Calendar) Rabiʻ I
+sv_SE Name of month 04 (Islamic Calendar) Rabiʻ II
+sv_SE Name of month 05 (Islamic Calendar) Jumada I
+sv_SE Name of month 06 (Islamic Calendar) Jumada II
+sv_SE Name of month 07 (Islamic Calendar) Rajab
+sv_SE Name of month 08 (Islamic Calendar) Shaʻban
+sv_SE Name of month 09 (Islamic Calendar) Ramadan
+sv_SE Name of month 10 (Islamic Calendar) Shawwal
+sv_SE Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+sv_SE Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+sv_SE Name of weekday 01 (Gregorian Calendar) måndag
+sv_SE Name of weekday 02 (Gregorian Calendar) tisdag
+sv_SE Name of weekday 03 (Gregorian Calendar) onsdag
+sv_SE Name of weekday 04 (Gregorian Calendar) torsdag
+sv_SE Name of weekday 05 (Gregorian Calendar) fredag
+sv_SE Name of weekday 06 (Gregorian Calendar) lördag
+sv_SE Name of weekday 07 (Gregorian Calendar) söndag
+sv_SE Name of weekday 01 (Islamic Calendar) måndag
+sv_SE Name of weekday 02 (Islamic Calendar) tisdag
+sv_SE Name of weekday 03 (Islamic Calendar) onsdag
+sv_SE Name of weekday 04 (Islamic Calendar) torsdag
+sv_SE Name of weekday 05 (Islamic Calendar) fredag
+sv_SE Name of weekday 06 (Islamic Calendar) lördag
+sv_SE Name of weekday 07 (Islamic Calendar) söndag
+th Language endonym ไทย
+th Country endonym
+th Floating Point Number -123,456,789.012
+th Percent value -1,234.5679%
+th Currency value €1,234.56
+th Negative Currency value €-1,234.56
+th Date and time short (Gregorian Calendar) 21/7/2008, 12:31
+th Date and time medium (Gregorian Calendar) 21 ก.ค. 2008, 12:31:00
+th Date and time long (Gregorian Calendar) 21 กรกฎาคม 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time full (Gregorian Calendar) วันจันทร์ที่ 21 กรกฎาคม ค.ศ. 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time short (Islamic Calendar) 18/7/1429, 12:31
+th Date and time medium (Islamic Calendar) 18 Raj. 1429, 12:31:00
+th Date and time long (Islamic Calendar) 18 รอจับ 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Date and time full (Islamic Calendar) วันจันทร์ที่ 18 รอจับ ฮ.ศ. 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th Name of month 01 (Gregorian Calendar) มกราคม
+th Name of month 02 (Gregorian Calendar) กุมภาพันธ์
+th Name of month 03 (Gregorian Calendar) มีนาคม
+th Name of month 04 (Gregorian Calendar) เมษายน
+th Name of month 05 (Gregorian Calendar) พฤษภาคม
+th Name of month 06 (Gregorian Calendar) มิถุนายน
+th Name of month 07 (Gregorian Calendar) กรกฎาคม
+th Name of month 08 (Gregorian Calendar) สิงหาคม
+th Name of month 09 (Gregorian Calendar) กันยายน
+th Name of month 10 (Gregorian Calendar) ตุลาคม
+th Name of month 11 (Gregorian Calendar) พฤศจิกายน
+th Name of month 12 (Gregorian Calendar) ธันวาคม
+th Name of month 01 (Islamic Calendar) มุฮะร์รอม
+th Name of month 02 (Islamic Calendar) ซอฟาร์
+th Name of month 03 (Islamic Calendar) รอบี I
+th Name of month 04 (Islamic Calendar) รอบี II
+th Name of month 05 (Islamic Calendar) จุมาดา I
+th Name of month 06 (Islamic Calendar) จุมาดา II
+th Name of month 07 (Islamic Calendar) รอจับ
+th Name of month 08 (Islamic Calendar) ชะอะบาน
+th Name of month 09 (Islamic Calendar) รอมะดอน
+th Name of month 10 (Islamic Calendar) เชาวัล
+th Name of month 11 (Islamic Calendar) ดฮุุอัลกิดะห์
+th Name of month 12 (Islamic Calendar) ดฮุอัลฮิจจะห์
+th Name of weekday 01 (Gregorian Calendar) วันจันทร์
+th Name of weekday 02 (Gregorian Calendar) วันอังคาร
+th Name of weekday 03 (Gregorian Calendar) วันพุธ
+th Name of weekday 04 (Gregorian Calendar) วันพฤหัสบดี
+th Name of weekday 05 (Gregorian Calendar) วันศุกร์
+th Name of weekday 06 (Gregorian Calendar) วันเสาร์
+th Name of weekday 07 (Gregorian Calendar) วันอาทิตย์
+th Name of weekday 01 (Islamic Calendar) วันจันทร์
+th Name of weekday 02 (Islamic Calendar) วันอังคาร
+th Name of weekday 03 (Islamic Calendar) วันพุธ
+th Name of weekday 04 (Islamic Calendar) วันพฤหัสบดี
+th Name of weekday 05 (Islamic Calendar) วันศุกร์
+th Name of weekday 06 (Islamic Calendar) วันเสาร์
+th Name of weekday 07 (Islamic Calendar) วันอาทิตย์
+th_TH Language endonym ไทย
+th_TH Country endonym ไทย
+th_TH Floating Point Number -123,456,789.012
+th_TH Percent value -1,234.5679%
+th_TH Currency value €1,234.56
+th_TH Negative Currency value €-1,234.56
+th_TH Date and time short (Gregorian Calendar) 21/7/2008, 12:31
+th_TH Date and time medium (Gregorian Calendar) 21 ก.ค. 2008, 12:31:00
+th_TH Date and time long (Gregorian Calendar) 21 กรกฎาคม 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time full (Gregorian Calendar) วันจันทร์ที่ 21 กรกฎาคม ค.ศ. 2008, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time short (Islamic Calendar) 18/7/1429, 12:31
+th_TH Date and time medium (Islamic Calendar) 18 Raj. 1429, 12:31:00
+th_TH Date and time long (Islamic Calendar) 18 รอจับ 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Date and time full (Islamic Calendar) วันจันทร์ที่ 18 รอจับ ฮ.ศ. 1429, 12 นาฬิกา 31 นาที 00 วินาที GMT+00:00
+th_TH Name of month 01 (Gregorian Calendar) มกราคม
+th_TH Name of month 02 (Gregorian Calendar) กุมภาพันธ์
+th_TH Name of month 03 (Gregorian Calendar) มีนาคม
+th_TH Name of month 04 (Gregorian Calendar) เมษายน
+th_TH Name of month 05 (Gregorian Calendar) พฤษภาคม
+th_TH Name of month 06 (Gregorian Calendar) มิถุนายน
+th_TH Name of month 07 (Gregorian Calendar) กรกฎาคม
+th_TH Name of month 08 (Gregorian Calendar) สิงหาคม
+th_TH Name of month 09 (Gregorian Calendar) กันยายน
+th_TH Name of month 10 (Gregorian Calendar) ตุลาคม
+th_TH Name of month 11 (Gregorian Calendar) พฤศจิกายน
+th_TH Name of month 12 (Gregorian Calendar) ธันวาคม
+th_TH Name of month 01 (Islamic Calendar) มุฮะร์รอม
+th_TH Name of month 02 (Islamic Calendar) ซอฟาร์
+th_TH Name of month 03 (Islamic Calendar) รอบี I
+th_TH Name of month 04 (Islamic Calendar) รอบี II
+th_TH Name of month 05 (Islamic Calendar) จุมาดา I
+th_TH Name of month 06 (Islamic Calendar) จุมาดา II
+th_TH Name of month 07 (Islamic Calendar) รอจับ
+th_TH Name of month 08 (Islamic Calendar) ชะอะบาน
+th_TH Name of month 09 (Islamic Calendar) รอมะดอน
+th_TH Name of month 10 (Islamic Calendar) เชาวัล
+th_TH Name of month 11 (Islamic Calendar) ดฮุุอัลกิดะห์
+th_TH Name of month 12 (Islamic Calendar) ดฮุอัลฮิจจะห์
+th_TH Name of weekday 01 (Gregorian Calendar) วันจันทร์
+th_TH Name of weekday 02 (Gregorian Calendar) วันอังคาร
+th_TH Name of weekday 03 (Gregorian Calendar) วันพุธ
+th_TH Name of weekday 04 (Gregorian Calendar) วันพฤหัสบดี
+th_TH Name of weekday 05 (Gregorian Calendar) วันศุกร์
+th_TH Name of weekday 06 (Gregorian Calendar) วันเสาร์
+th_TH Name of weekday 07 (Gregorian Calendar) วันอาทิตย์
+th_TH Name of weekday 01 (Islamic Calendar) วันจันทร์
+th_TH Name of weekday 02 (Islamic Calendar) วันอังคาร
+th_TH Name of weekday 03 (Islamic Calendar) วันพุธ
+th_TH Name of weekday 04 (Islamic Calendar) วันพฤหัสบดี
+th_TH Name of weekday 05 (Islamic Calendar) วันศุกร์
+th_TH Name of weekday 06 (Islamic Calendar) วันเสาร์
+th_TH Name of weekday 07 (Islamic Calendar) วันอาทิตย์
+tr Language endonym Türkçe
+tr Country endonym
+tr Floating Point Number -123.456.789,012
+tr Percent value -% 1.234,5679
+tr Currency value 1.234,56 €
+tr Negative Currency value -1.234,56 €
+tr Date and time short (Gregorian Calendar) 21.07.2008 12:31
+tr Date and time medium (Gregorian Calendar) 21 Tem 2008 12:31:00
+tr Date and time long (Gregorian Calendar) 21 Temmuz 2008 12:31:00 GMT+00:00
+tr Date and time full (Gregorian Calendar) 21 Temmuz 2008 Pazartesi 12:31:00 GMT+00:00
+tr Date and time short (Islamic Calendar) 18.07.1429 12:31
+tr Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+tr Date and time long (Islamic Calendar) 18 Recep 1429 12:31:00 GMT+00:00
+tr Date and time full (Islamic Calendar) 18 Recep 1429 Pazartesi 12:31:00 GMT+00:00
+tr Name of month 01 (Gregorian Calendar) Ocak
+tr Name of month 02 (Gregorian Calendar) Şubat
+tr Name of month 03 (Gregorian Calendar) Mart
+tr Name of month 04 (Gregorian Calendar) Nisan
+tr Name of month 05 (Gregorian Calendar) Mayıs
+tr Name of month 06 (Gregorian Calendar) Haziran
+tr Name of month 07 (Gregorian Calendar) Temmuz
+tr Name of month 08 (Gregorian Calendar) Ağustos
+tr Name of month 09 (Gregorian Calendar) Eylül
+tr Name of month 10 (Gregorian Calendar) Ekim
+tr Name of month 11 (Gregorian Calendar) Kasım
+tr Name of month 12 (Gregorian Calendar) Aralık
+tr Name of month 01 (Islamic Calendar) Muharrem
+tr Name of month 02 (Islamic Calendar) Safer
+tr Name of month 03 (Islamic Calendar) Rebiülevvel
+tr Name of month 04 (Islamic Calendar) Rebiülahir
+tr Name of month 05 (Islamic Calendar) Cemaziyelevvel
+tr Name of month 06 (Islamic Calendar) Cemaziyelahir
+tr Name of month 07 (Islamic Calendar) Recep
+tr Name of month 08 (Islamic Calendar) Şaban
+tr Name of month 09 (Islamic Calendar) Ramazan
+tr Name of month 10 (Islamic Calendar) Şevval
+tr Name of month 11 (Islamic Calendar) Zilkade
+tr Name of month 12 (Islamic Calendar) Zilhicce
+tr Name of weekday 01 (Gregorian Calendar) Pazartesi
+tr Name of weekday 02 (Gregorian Calendar) Salı
+tr Name of weekday 03 (Gregorian Calendar) Çarşamba
+tr Name of weekday 04 (Gregorian Calendar) Perşembe
+tr Name of weekday 05 (Gregorian Calendar) Cuma
+tr Name of weekday 06 (Gregorian Calendar) Cumartesi
+tr Name of weekday 07 (Gregorian Calendar) Pazar
+tr Name of weekday 01 (Islamic Calendar) Pazartesi
+tr Name of weekday 02 (Islamic Calendar) Salı
+tr Name of weekday 03 (Islamic Calendar) Çarşamba
+tr Name of weekday 04 (Islamic Calendar) Perşembe
+tr Name of weekday 05 (Islamic Calendar) Cuma
+tr Name of weekday 06 (Islamic Calendar) Cumartesi
+tr Name of weekday 07 (Islamic Calendar) Pazar
+tr_TR Language endonym Türkçe
+tr_TR Country endonym Türkiye
+tr_TR Floating Point Number -123.456.789,012
+tr_TR Percent value -% 1.234,5679
+tr_TR Currency value 1.234,56 €
+tr_TR Negative Currency value -1.234,56 €
+tr_TR Date and time short (Gregorian Calendar) 21.07.2008 12:31
+tr_TR Date and time medium (Gregorian Calendar) 21 Tem 2008 12:31:00
+tr_TR Date and time long (Gregorian Calendar) 21 Temmuz 2008 12:31:00 GMT+00:00
+tr_TR Date and time full (Gregorian Calendar) 21 Temmuz 2008 Pazartesi 12:31:00 GMT+00:00
+tr_TR Date and time short (Islamic Calendar) 18.07.1429 12:31
+tr_TR Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+tr_TR Date and time long (Islamic Calendar) 18 Recep 1429 12:31:00 GMT+00:00
+tr_TR Date and time full (Islamic Calendar) 18 Recep 1429 Pazartesi 12:31:00 GMT+00:00
+tr_TR Name of month 01 (Gregorian Calendar) Ocak
+tr_TR Name of month 02 (Gregorian Calendar) Şubat
+tr_TR Name of month 03 (Gregorian Calendar) Mart
+tr_TR Name of month 04 (Gregorian Calendar) Nisan
+tr_TR Name of month 05 (Gregorian Calendar) Mayıs
+tr_TR Name of month 06 (Gregorian Calendar) Haziran
+tr_TR Name of month 07 (Gregorian Calendar) Temmuz
+tr_TR Name of month 08 (Gregorian Calendar) Ağustos
+tr_TR Name of month 09 (Gregorian Calendar) Eylül
+tr_TR Name of month 10 (Gregorian Calendar) Ekim
+tr_TR Name of month 11 (Gregorian Calendar) Kasım
+tr_TR Name of month 12 (Gregorian Calendar) Aralık
+tr_TR Name of month 01 (Islamic Calendar) Muharrem
+tr_TR Name of month 02 (Islamic Calendar) Safer
+tr_TR Name of month 03 (Islamic Calendar) Rebiülevvel
+tr_TR Name of month 04 (Islamic Calendar) Rebiülahir
+tr_TR Name of month 05 (Islamic Calendar) Cemaziyelevvel
+tr_TR Name of month 06 (Islamic Calendar) Cemaziyelahir
+tr_TR Name of month 07 (Islamic Calendar) Recep
+tr_TR Name of month 08 (Islamic Calendar) Şaban
+tr_TR Name of month 09 (Islamic Calendar) Ramazan
+tr_TR Name of month 10 (Islamic Calendar) Şevval
+tr_TR Name of month 11 (Islamic Calendar) Zilkade
+tr_TR Name of month 12 (Islamic Calendar) Zilhicce
+tr_TR Name of weekday 01 (Gregorian Calendar) Pazartesi
+tr_TR Name of weekday 02 (Gregorian Calendar) Salı
+tr_TR Name of weekday 03 (Gregorian Calendar) Çarşamba
+tr_TR Name of weekday 04 (Gregorian Calendar) Perşembe
+tr_TR Name of weekday 05 (Gregorian Calendar) Cuma
+tr_TR Name of weekday 06 (Gregorian Calendar) Cumartesi
+tr_TR Name of weekday 07 (Gregorian Calendar) Pazar
+tr_TR Name of weekday 01 (Islamic Calendar) Pazartesi
+tr_TR Name of weekday 02 (Islamic Calendar) Salı
+tr_TR Name of weekday 03 (Islamic Calendar) Çarşamba
+tr_TR Name of weekday 04 (Islamic Calendar) Perşembe
+tr_TR Name of weekday 05 (Islamic Calendar) Cuma
+tr_TR Name of weekday 06 (Islamic Calendar) Cumartesi
+tr_TR Name of weekday 07 (Islamic Calendar) Pazar
+uk Language endonym українська
+uk Country endonym
+uk Floating Point Number -123 456 789,012
+uk Percent value -1 234,5679%
+uk Currency value 1 234,56 €
+uk Negative Currency value -1 234,56 €
+uk Date and time short (Gregorian Calendar) 21.07.08 12:31
+uk Date and time medium (Gregorian Calendar) 21 лип. 2008 12:31:00
+uk Date and time long (Gregorian Calendar) 21 липня 2008 р. 12:31:00 GMT+00:00
+uk Date and time full (Gregorian Calendar) Понеділок, 21 липня 2008 р. 12:31:00 GMT+00:00
+uk Date and time short (Islamic Calendar) 18.07.29 12:31
+uk Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+uk Date and time long (Islamic Calendar) 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk Date and time full (Islamic Calendar) Понеділок, 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk Name of month 01 (Gregorian Calendar) січня
+uk Name of month 02 (Gregorian Calendar) лютого
+uk Name of month 03 (Gregorian Calendar) березня
+uk Name of month 04 (Gregorian Calendar) квітня
+uk Name of month 05 (Gregorian Calendar) травня
+uk Name of month 06 (Gregorian Calendar) червня
+uk Name of month 07 (Gregorian Calendar) липня
+uk Name of month 08 (Gregorian Calendar) серпня
+uk Name of month 09 (Gregorian Calendar) вересня
+uk Name of month 10 (Gregorian Calendar) жовтня
+uk Name of month 11 (Gregorian Calendar) листопада
+uk Name of month 12 (Gregorian Calendar) грудня
+uk Name of month 01 (Islamic Calendar) Мухаррам
+uk Name of month 02 (Islamic Calendar) Сафар
+uk Name of month 03 (Islamic Calendar) Рабі I
+uk Name of month 04 (Islamic Calendar) Рабі II
+uk Name of month 05 (Islamic Calendar) Джумада I
+uk Name of month 06 (Islamic Calendar) Джумада II
+uk Name of month 07 (Islamic Calendar) Раджаб
+uk Name of month 08 (Islamic Calendar) Шаабан
+uk Name of month 09 (Islamic Calendar) Рамадан
+uk Name of month 10 (Islamic Calendar) Даввал
+uk Name of month 11 (Islamic Calendar) Зу-ль-каада
+uk Name of month 12 (Islamic Calendar) Зу-ль-хіджа
+uk Name of weekday 01 (Gregorian Calendar) Понеділок
+uk Name of weekday 02 (Gregorian Calendar) Вівторок
+uk Name of weekday 03 (Gregorian Calendar) Середа
+uk Name of weekday 04 (Gregorian Calendar) Четвер
+uk Name of weekday 05 (Gregorian Calendar) Пʼятниця
+uk Name of weekday 06 (Gregorian Calendar) Субота
+uk Name of weekday 07 (Gregorian Calendar) Неділя
+uk Name of weekday 01 (Islamic Calendar) Понеділок
+uk Name of weekday 02 (Islamic Calendar) Вівторок
+uk Name of weekday 03 (Islamic Calendar) Середа
+uk Name of weekday 04 (Islamic Calendar) Четвер
+uk Name of weekday 05 (Islamic Calendar) Пʼятниця
+uk Name of weekday 06 (Islamic Calendar) Субота
+uk Name of weekday 07 (Islamic Calendar) Неділя
+uk_UA Language endonym українська
+uk_UA Country endonym Україна
+uk_UA Floating Point Number -123 456 789,012
+uk_UA Percent value -1 234,5679%
+uk_UA Currency value 1 234,56 €
+uk_UA Negative Currency value -1 234,56 €
+uk_UA Date and time short (Gregorian Calendar) 21.07.08 12:31
+uk_UA Date and time medium (Gregorian Calendar) 21 лип. 2008 12:31:00
+uk_UA Date and time long (Gregorian Calendar) 21 липня 2008 р. 12:31:00 GMT+00:00
+uk_UA Date and time full (Gregorian Calendar) Понеділок, 21 липня 2008 р. 12:31:00 GMT+00:00
+uk_UA Date and time short (Islamic Calendar) 18.07.29 12:31
+uk_UA Date and time medium (Islamic Calendar) 18 Raj. 1429 12:31:00
+uk_UA Date and time long (Islamic Calendar) 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk_UA Date and time full (Islamic Calendar) Понеділок, 18 Раджаб 1429 р. 12:31:00 GMT+00:00
+uk_UA Name of month 01 (Gregorian Calendar) січня
+uk_UA Name of month 02 (Gregorian Calendar) лютого
+uk_UA Name of month 03 (Gregorian Calendar) березня
+uk_UA Name of month 04 (Gregorian Calendar) квітня
+uk_UA Name of month 05 (Gregorian Calendar) травня
+uk_UA Name of month 06 (Gregorian Calendar) червня
+uk_UA Name of month 07 (Gregorian Calendar) липня
+uk_UA Name of month 08 (Gregorian Calendar) серпня
+uk_UA Name of month 09 (Gregorian Calendar) вересня
+uk_UA Name of month 10 (Gregorian Calendar) жовтня
+uk_UA Name of month 11 (Gregorian Calendar) листопада
+uk_UA Name of month 12 (Gregorian Calendar) грудня
+uk_UA Name of month 01 (Islamic Calendar) Мухаррам
+uk_UA Name of month 02 (Islamic Calendar) Сафар
+uk_UA Name of month 03 (Islamic Calendar) Рабі I
+uk_UA Name of month 04 (Islamic Calendar) Рабі II
+uk_UA Name of month 05 (Islamic Calendar) Джумада I
+uk_UA Name of month 06 (Islamic Calendar) Джумада II
+uk_UA Name of month 07 (Islamic Calendar) Раджаб
+uk_UA Name of month 08 (Islamic Calendar) Шаабан
+uk_UA Name of month 09 (Islamic Calendar) Рамадан
+uk_UA Name of month 10 (Islamic Calendar) Даввал
+uk_UA Name of month 11 (Islamic Calendar) Зу-ль-каада
+uk_UA Name of month 12 (Islamic Calendar) Зу-ль-хіджа
+uk_UA Name of weekday 01 (Gregorian Calendar) Понеділок
+uk_UA Name of weekday 02 (Gregorian Calendar) Вівторок
+uk_UA Name of weekday 03 (Gregorian Calendar) Середа
+uk_UA Name of weekday 04 (Gregorian Calendar) Четвер
+uk_UA Name of weekday 05 (Gregorian Calendar) Пʼятниця
+uk_UA Name of weekday 06 (Gregorian Calendar) Субота
+uk_UA Name of weekday 07 (Gregorian Calendar) Неділя
+uk_UA Name of weekday 01 (Islamic Calendar) Понеділок
+uk_UA Name of weekday 02 (Islamic Calendar) Вівторок
+uk_UA Name of weekday 03 (Islamic Calendar) Середа
+uk_UA Name of weekday 04 (Islamic Calendar) Четвер
+uk_UA Name of weekday 05 (Islamic Calendar) Пʼятниця
+uk_UA Name of weekday 06 (Islamic Calendar) Субота
+uk_UA Name of weekday 07 (Islamic Calendar) Неділя
+ur Language endonym اردو
+ur Country endonym
+ur Floating Point Number -123,456,789.012
+ur Percent value -1,234.5679%
+ur Currency value €1,234.56
+ur Negative Currency value -€1,234.56
+ur Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur Date and time medium (Islamic Calendar) 18, Raj. 1429 12:31:00 PM
+ur Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur Name of month 01 (Gregorian Calendar) جنوری
+ur Name of month 02 (Gregorian Calendar) فروری
+ur Name of month 03 (Gregorian Calendar) مار چ
+ur Name of month 04 (Gregorian Calendar) اپريل
+ur Name of month 05 (Gregorian Calendar) مئ
+ur Name of month 06 (Gregorian Calendar) جون
+ur Name of month 07 (Gregorian Calendar) جولائ
+ur Name of month 08 (Gregorian Calendar) اگست
+ur Name of month 09 (Gregorian Calendar) ستمبر
+ur Name of month 10 (Gregorian Calendar) اکتوبر
+ur Name of month 11 (Gregorian Calendar) نومبر
+ur Name of month 12 (Gregorian Calendar) دسمبر
+ur Name of month 01 (Islamic Calendar) محرم
+ur Name of month 02 (Islamic Calendar) صفر
+ur Name of month 03 (Islamic Calendar) ر بيع الاول
+ur Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur Name of month 05 (Islamic Calendar) جمادی الاول
+ur Name of month 06 (Islamic Calendar) جمادی الثانی
+ur Name of month 07 (Islamic Calendar) رجب
+ur Name of month 08 (Islamic Calendar) شعبان
+ur Name of month 09 (Islamic Calendar) رمضان
+ur Name of month 10 (Islamic Calendar) شوال
+ur Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur Name of weekday 01 (Gregorian Calendar) پير
+ur Name of weekday 02 (Gregorian Calendar) منگل
+ur Name of weekday 03 (Gregorian Calendar) بده
+ur Name of weekday 04 (Gregorian Calendar) جمعرات
+ur Name of weekday 05 (Gregorian Calendar) جمعہ
+ur Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur Name of weekday 07 (Gregorian Calendar) اتوار
+ur Name of weekday 01 (Islamic Calendar) پير
+ur Name of weekday 02 (Islamic Calendar) منگل
+ur Name of weekday 03 (Islamic Calendar) بده
+ur Name of weekday 04 (Islamic Calendar) جمعرات
+ur Name of weekday 05 (Islamic Calendar) جمعہ
+ur Name of weekday 06 (Islamic Calendar) ہفتہ
+ur Name of weekday 07 (Islamic Calendar) اتوار
+ur_IN Language endonym اردو
+ur_IN Country endonym بھارت
+ur_IN Floating Point Number -12,34,56,789.012
+ur_IN Percent value -1,234.5679%
+ur_IN Currency value € 1,234.56
+ur_IN Negative Currency value -€ 1,234.56
+ur_IN Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur_IN Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur_IN Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_IN Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_IN Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur_IN Date and time medium (Islamic Calendar) 18, Raj. 1429 12:31:00 PM
+ur_IN Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_IN Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_IN Name of month 01 (Gregorian Calendar) جنوری
+ur_IN Name of month 02 (Gregorian Calendar) فروری
+ur_IN Name of month 03 (Gregorian Calendar) مار چ
+ur_IN Name of month 04 (Gregorian Calendar) اپريل
+ur_IN Name of month 05 (Gregorian Calendar) مئ
+ur_IN Name of month 06 (Gregorian Calendar) جون
+ur_IN Name of month 07 (Gregorian Calendar) جولائ
+ur_IN Name of month 08 (Gregorian Calendar) اگست
+ur_IN Name of month 09 (Gregorian Calendar) ستمبر
+ur_IN Name of month 10 (Gregorian Calendar) اکتوبر
+ur_IN Name of month 11 (Gregorian Calendar) نومبر
+ur_IN Name of month 12 (Gregorian Calendar) دسمبر
+ur_IN Name of month 01 (Islamic Calendar) محرم
+ur_IN Name of month 02 (Islamic Calendar) صفر
+ur_IN Name of month 03 (Islamic Calendar) ر بيع الاول
+ur_IN Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur_IN Name of month 05 (Islamic Calendar) جمادی الاول
+ur_IN Name of month 06 (Islamic Calendar) جمادی الثانی
+ur_IN Name of month 07 (Islamic Calendar) رجب
+ur_IN Name of month 08 (Islamic Calendar) شعبان
+ur_IN Name of month 09 (Islamic Calendar) رمضان
+ur_IN Name of month 10 (Islamic Calendar) شوال
+ur_IN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur_IN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur_IN Name of weekday 01 (Gregorian Calendar) پير
+ur_IN Name of weekday 02 (Gregorian Calendar) منگل
+ur_IN Name of weekday 03 (Gregorian Calendar) بده
+ur_IN Name of weekday 04 (Gregorian Calendar) جمعرات
+ur_IN Name of weekday 05 (Gregorian Calendar) جمعہ
+ur_IN Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur_IN Name of weekday 07 (Gregorian Calendar) اتوار
+ur_IN Name of weekday 01 (Islamic Calendar) پير
+ur_IN Name of weekday 02 (Islamic Calendar) منگل
+ur_IN Name of weekday 03 (Islamic Calendar) بده
+ur_IN Name of weekday 04 (Islamic Calendar) جمعرات
+ur_IN Name of weekday 05 (Islamic Calendar) جمعہ
+ur_IN Name of weekday 06 (Islamic Calendar) ہفتہ
+ur_IN Name of weekday 07 (Islamic Calendar) اتوار
+ur_PK Language endonym اردو
+ur_PK Country endonym پاکستان
+ur_PK Floating Point Number -123,456,789.012
+ur_PK Percent value -1,234.5679%
+ur_PK Currency value €1,234.56
+ur_PK Negative Currency value -€1,234.56
+ur_PK Date and time short (Gregorian Calendar) 21/7/08 12:31 PM
+ur_PK Date and time medium (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM
+ur_PK Date and time long (Gregorian Calendar) 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_PK Date and time full (Gregorian Calendar) پير, 21, جولائ 2008 12:31:00 PM GMT+00:00
+ur_PK Date and time short (Islamic Calendar) 18/7/29 12:31 PM
+ur_PK Date and time medium (Islamic Calendar) 18, Raj. 1429 12:31:00 PM
+ur_PK Date and time long (Islamic Calendar) 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_PK Date and time full (Islamic Calendar) پير, 18, رجب 1429 12:31:00 PM GMT+00:00
+ur_PK Name of month 01 (Gregorian Calendar) جنوری
+ur_PK Name of month 02 (Gregorian Calendar) فروری
+ur_PK Name of month 03 (Gregorian Calendar) مار چ
+ur_PK Name of month 04 (Gregorian Calendar) اپريل
+ur_PK Name of month 05 (Gregorian Calendar) مئ
+ur_PK Name of month 06 (Gregorian Calendar) جون
+ur_PK Name of month 07 (Gregorian Calendar) جولائ
+ur_PK Name of month 08 (Gregorian Calendar) اگست
+ur_PK Name of month 09 (Gregorian Calendar) ستمبر
+ur_PK Name of month 10 (Gregorian Calendar) اکتوبر
+ur_PK Name of month 11 (Gregorian Calendar) نومبر
+ur_PK Name of month 12 (Gregorian Calendar) دسمبر
+ur_PK Name of month 01 (Islamic Calendar) محرم
+ur_PK Name of month 02 (Islamic Calendar) صفر
+ur_PK Name of month 03 (Islamic Calendar) ر بيع الاول
+ur_PK Name of month 04 (Islamic Calendar) ر بيع الثانی
+ur_PK Name of month 05 (Islamic Calendar) جمادی الاول
+ur_PK Name of month 06 (Islamic Calendar) جمادی الثانی
+ur_PK Name of month 07 (Islamic Calendar) رجب
+ur_PK Name of month 08 (Islamic Calendar) شعبان
+ur_PK Name of month 09 (Islamic Calendar) رمضان
+ur_PK Name of month 10 (Islamic Calendar) شوال
+ur_PK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+ur_PK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+ur_PK Name of weekday 01 (Gregorian Calendar) پير
+ur_PK Name of weekday 02 (Gregorian Calendar) منگل
+ur_PK Name of weekday 03 (Gregorian Calendar) بده
+ur_PK Name of weekday 04 (Gregorian Calendar) جمعرات
+ur_PK Name of weekday 05 (Gregorian Calendar) جمعہ
+ur_PK Name of weekday 06 (Gregorian Calendar) ہفتہ
+ur_PK Name of weekday 07 (Gregorian Calendar) اتوار
+ur_PK Name of weekday 01 (Islamic Calendar) پير
+ur_PK Name of weekday 02 (Islamic Calendar) منگل
+ur_PK Name of weekday 03 (Islamic Calendar) بده
+ur_PK Name of weekday 04 (Islamic Calendar) جمعرات
+ur_PK Name of weekday 05 (Islamic Calendar) جمعہ
+ur_PK Name of weekday 06 (Islamic Calendar) ہفتہ
+ur_PK Name of weekday 07 (Islamic Calendar) اتوار
+zh Language endonym 中文
+zh Country endonym
+zh Floating Point Number -123,456,789.012
+zh Percent value -1,234.5679%
+zh Currency value €1,234.56
+zh Negative Currency value -€1,234.56
+zh Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh Date and time short (Islamic Calendar) 29-7-18 下午12:31
+zh Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000下午12时31分00秒
+zh Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh Name of month 01 (Gregorian Calendar) 1月
+zh Name of month 02 (Gregorian Calendar) 2月
+zh Name of month 03 (Gregorian Calendar) 3月
+zh Name of month 04 (Gregorian Calendar) 4月
+zh Name of month 05 (Gregorian Calendar) 5月
+zh Name of month 06 (Gregorian Calendar) 6月
+zh Name of month 07 (Gregorian Calendar) 7月
+zh Name of month 08 (Gregorian Calendar) 8月
+zh Name of month 09 (Gregorian Calendar) 9月
+zh Name of month 10 (Gregorian Calendar) 10月
+zh Name of month 11 (Gregorian Calendar) 11月
+zh Name of month 12 (Gregorian Calendar) 12月
+zh Name of month 01 (Islamic Calendar) Muharram
+zh Name of month 02 (Islamic Calendar) Safar
+zh Name of month 03 (Islamic Calendar) Rabiʻ I
+zh Name of month 04 (Islamic Calendar) Rabiʻ II
+zh Name of month 05 (Islamic Calendar) Jumada I
+zh Name of month 06 (Islamic Calendar) Jumada II
+zh Name of month 07 (Islamic Calendar) Rajab
+zh Name of month 08 (Islamic Calendar) Shaʻban
+zh Name of month 09 (Islamic Calendar) Ramadan
+zh Name of month 10 (Islamic Calendar) Shawwal
+zh Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh Name of weekday 01 (Gregorian Calendar) 星期一
+zh Name of weekday 02 (Gregorian Calendar) 星期二
+zh Name of weekday 03 (Gregorian Calendar) 星期三
+zh Name of weekday 04 (Gregorian Calendar) 星期四
+zh Name of weekday 05 (Gregorian Calendar) 星期五
+zh Name of weekday 06 (Gregorian Calendar) 星期六
+zh Name of weekday 07 (Gregorian Calendar) 星期日
+zh Name of weekday 01 (Islamic Calendar) 星期一
+zh Name of weekday 02 (Islamic Calendar) 星期二
+zh Name of weekday 03 (Islamic Calendar) 星期三
+zh Name of weekday 04 (Islamic Calendar) 星期四
+zh Name of weekday 05 (Islamic Calendar) 星期五
+zh Name of weekday 06 (Islamic Calendar) 星期六
+zh Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans Language endonym 中文
+zh_Hans Country endonym
+zh_Hans Floating Point Number -123,456,789.012
+zh_Hans Percent value -1,234.5679%
+zh_Hans Currency value €1,234.56
+zh_Hans Negative Currency value -€1,234.56
+zh_Hans Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Date and time short (Islamic Calendar) 29-7-18 下午12:31
+zh_Hans Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh_Hans Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans Name of month 01 (Gregorian Calendar) 1月
+zh_Hans Name of month 02 (Gregorian Calendar) 2月
+zh_Hans Name of month 03 (Gregorian Calendar) 3月
+zh_Hans Name of month 04 (Gregorian Calendar) 4月
+zh_Hans Name of month 05 (Gregorian Calendar) 5月
+zh_Hans Name of month 06 (Gregorian Calendar) 6月
+zh_Hans Name of month 07 (Gregorian Calendar) 7月
+zh_Hans Name of month 08 (Gregorian Calendar) 8月
+zh_Hans Name of month 09 (Gregorian Calendar) 9月
+zh_Hans Name of month 10 (Gregorian Calendar) 10月
+zh_Hans Name of month 11 (Gregorian Calendar) 11月
+zh_Hans Name of month 12 (Gregorian Calendar) 12月
+zh_Hans Name of month 01 (Islamic Calendar) Muharram
+zh_Hans Name of month 02 (Islamic Calendar) Safar
+zh_Hans Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans Name of month 07 (Islamic Calendar) Rajab
+zh_Hans Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_CN Language endonym 中文
+zh_Hans_CN Country endonym 中国
+zh_Hans_CN Floating Point Number -123,456,789.012
+zh_Hans_CN Percent value -1,234.5679%
+zh_Hans_CN Currency value €1,234.56
+zh_Hans_CN Negative Currency value -€1,234.56
+zh_Hans_CN Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_CN Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_CN Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Date and time short (Islamic Calendar) 29-7-18 下午12:31
+zh_Hans_CN Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh_Hans_CN Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_CN Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_CN Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_CN Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_CN Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_CN Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_CN Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_CN Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_CN Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_CN Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_CN Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_CN Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_CN Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_CN Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_CN Name of month 02 (Islamic Calendar) Safar
+zh_Hans_CN Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_CN Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_CN Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_CN Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_CN Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_CN Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_CN Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_CN Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_CN Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_CN Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_CN Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_CN Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_CN Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_CN Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_CN Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_CN Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_CN Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_CN Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_CN Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_CN Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_CN Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_CN Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_CN Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_CN Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_HK Language endonym 中文
+zh_Hans_HK Country endonym 中国香港特别行政区
+zh_Hans_HK Floating Point Number -123,456,789.012
+zh_Hans_HK Percent value -1,234.5679%
+zh_Hans_HK Currency value €1,234.56
+zh_Hans_HK Negative Currency value -€1,234.56
+zh_Hans_HK Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_HK Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_HK Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Date and time short (Islamic Calendar) 29-7-18 下午12:31
+zh_Hans_HK Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh_Hans_HK Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_HK Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_HK Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_HK Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_HK Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_HK Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_HK Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_HK Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_HK Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_HK Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_HK Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_HK Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_HK Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_HK Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_HK Name of month 02 (Islamic Calendar) Safar
+zh_Hans_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_HK Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_HK Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_HK Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_HK Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_HK Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_HK Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_HK Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_HK Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_HK Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_HK Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_HK Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_HK Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_HK Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_HK Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_HK Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_HK Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_HK Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_HK Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_HK Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_HK Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_MO Language endonym 中文
+zh_Hans_MO Country endonym 中国澳门特别行政区
+zh_Hans_MO Floating Point Number -123,456,789.012
+zh_Hans_MO Percent value -1,234.5679%
+zh_Hans_MO Currency value €1,234.56
+zh_Hans_MO Negative Currency value -€1,234.56
+zh_Hans_MO Date and time short (Gregorian Calendar) 08-7-21 下午12:31
+zh_Hans_MO Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_MO Date and time long (Gregorian Calendar) 2008年7月21日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Date and time short (Islamic Calendar) 29-7-18 下午12:31
+zh_Hans_MO Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh_Hans_MO Date and time long (Islamic Calendar) 1429年7月18日格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_MO Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_MO Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_MO Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_MO Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_MO Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_MO Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_MO Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_MO Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_MO Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_MO Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_MO Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_MO Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_MO Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_MO Name of month 02 (Islamic Calendar) Safar
+zh_Hans_MO Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_MO Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_MO Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_MO Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_MO Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_MO Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_MO Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_MO Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_MO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_MO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_MO Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_MO Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_MO Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_MO Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_MO Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_MO Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_MO Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_MO Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_MO Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_MO Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_MO Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_MO Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_MO Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_MO Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hans_SG Language endonym 中文
+zh_Hans_SG Country endonym 新加坡
+zh_Hans_SG Floating Point Number -123,456,789.012
+zh_Hans_SG Percent value -1,234.5679%
+zh_Hans_SG Currency value €1,234.56
+zh_Hans_SG Negative Currency value -€1,234.56
+zh_Hans_SG Date and time short (Gregorian Calendar) 21/07/08 下午12:31
+zh_Hans_SG Date and time medium (Gregorian Calendar) 2008-7-21 下午12:31:00
+zh_Hans_SG Date and time long (Gregorian Calendar) 2008年7月21日下午12:31:00格林尼治标准时间+0000
+zh_Hans_SG Date and time full (Gregorian Calendar) 2008年7月21日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_SG Date and time short (Islamic Calendar) 18/07/29 下午12:31
+zh_Hans_SG Date and time medium (Islamic Calendar) 1429-7-18 下午12:31:00
+zh_Hans_SG Date and time long (Islamic Calendar) 1429年7月18日下午12:31:00格林尼治标准时间+0000
+zh_Hans_SG Date and time full (Islamic Calendar) 1429年7月18日星期一格林尼治标准时间+0000下午12时31分00秒
+zh_Hans_SG Name of month 01 (Gregorian Calendar) 1月
+zh_Hans_SG Name of month 02 (Gregorian Calendar) 2月
+zh_Hans_SG Name of month 03 (Gregorian Calendar) 3月
+zh_Hans_SG Name of month 04 (Gregorian Calendar) 4月
+zh_Hans_SG Name of month 05 (Gregorian Calendar) 5月
+zh_Hans_SG Name of month 06 (Gregorian Calendar) 6月
+zh_Hans_SG Name of month 07 (Gregorian Calendar) 7月
+zh_Hans_SG Name of month 08 (Gregorian Calendar) 8月
+zh_Hans_SG Name of month 09 (Gregorian Calendar) 9月
+zh_Hans_SG Name of month 10 (Gregorian Calendar) 10月
+zh_Hans_SG Name of month 11 (Gregorian Calendar) 11月
+zh_Hans_SG Name of month 12 (Gregorian Calendar) 12月
+zh_Hans_SG Name of month 01 (Islamic Calendar) Muharram
+zh_Hans_SG Name of month 02 (Islamic Calendar) Safar
+zh_Hans_SG Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hans_SG Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hans_SG Name of month 05 (Islamic Calendar) Jumada I
+zh_Hans_SG Name of month 06 (Islamic Calendar) Jumada II
+zh_Hans_SG Name of month 07 (Islamic Calendar) Rajab
+zh_Hans_SG Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hans_SG Name of month 09 (Islamic Calendar) Ramadan
+zh_Hans_SG Name of month 10 (Islamic Calendar) Shawwal
+zh_Hans_SG Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hans_SG Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hans_SG Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hans_SG Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hans_SG Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hans_SG Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hans_SG Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hans_SG Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hans_SG Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hans_SG Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hans_SG Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hans_SG Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hans_SG Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hans_SG Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hans_SG Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hans_SG Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant Language endonym 中文
+zh_Hant Country endonym
+zh_Hant Floating Point Number -123,456,789.012
+zh_Hant Percent value -1,234.5679%
+zh_Hant Currency value €1,234.56
+zh_Hant Negative Currency value -€1,234.56
+zh_Hant Date and time short (Gregorian Calendar) 08/7/21 下午12:31
+zh_Hant Date and time medium (Gregorian Calendar) 2008/7/21 下午12:31:00
+zh_Hant Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant Date and time short (Islamic Calendar) 29/7/18 下午12:31
+zh_Hant Date and time medium (Islamic Calendar) 1429/7/18 下午12:31:00
+zh_Hant Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00下午12時31分00秒
+zh_Hant Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00下午12時31分00秒
+zh_Hant Name of month 01 (Gregorian Calendar) 1月
+zh_Hant Name of month 02 (Gregorian Calendar) 2月
+zh_Hant Name of month 03 (Gregorian Calendar) 3月
+zh_Hant Name of month 04 (Gregorian Calendar) 4月
+zh_Hant Name of month 05 (Gregorian Calendar) 5月
+zh_Hant Name of month 06 (Gregorian Calendar) 6月
+zh_Hant Name of month 07 (Gregorian Calendar) 7月
+zh_Hant Name of month 08 (Gregorian Calendar) 8月
+zh_Hant Name of month 09 (Gregorian Calendar) 9月
+zh_Hant Name of month 10 (Gregorian Calendar) 10月
+zh_Hant Name of month 11 (Gregorian Calendar) 11月
+zh_Hant Name of month 12 (Gregorian Calendar) 12月
+zh_Hant Name of month 01 (Islamic Calendar) Muharram
+zh_Hant Name of month 02 (Islamic Calendar) Safar
+zh_Hant Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant Name of month 07 (Islamic Calendar) Rajab
+zh_Hant Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_HK Language endonym zh
+zh_Hant_HK Country endonym 中華人民共和國香港特別行政區
+zh_Hant_HK Floating Point Number -123,456,789.012
+zh_Hant_HK Percent value -1,234.5679%
+zh_Hant_HK Currency value €1,234.56
+zh_Hant_HK Negative Currency value (€1,234.56)
+zh_Hant_HK Date and time short (Gregorian Calendar) 08年7月21日下午12:31
+zh_Hant_HK Date and time medium (Gregorian Calendar) 2008年7月21日下午12:31:00
+zh_Hant_HK Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant_HK Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_HK Date and time short (Islamic Calendar) 29年7月18日下午12:31
+zh_Hant_HK Date and time medium (Islamic Calendar) 1429年7月18日下午12:31:00
+zh_Hant_HK Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00下午12時31分00秒
+zh_Hant_HK Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00下午12時31分00秒
+zh_Hant_HK Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_HK Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_HK Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_HK Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_HK Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_HK Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_HK Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_HK Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_HK Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_HK Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_HK Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_HK Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_HK Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_HK Name of month 02 (Islamic Calendar) Safar
+zh_Hant_HK Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_HK Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_HK Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_HK Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_HK Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_HK Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_HK Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_HK Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_HK Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_HK Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_HK Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_HK Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_HK Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_HK Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_HK Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_HK Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_HK Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_HK Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_HK Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_HK Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_HK Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_HK Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_HK Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_HK Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_MO Language endonym 中文
+zh_Hant_MO Country endonym 中華人民共和國澳門特別行政區
+zh_Hant_MO Floating Point Number -123,456,789.012
+zh_Hant_MO Percent value -1,234.5679%
+zh_Hant_MO Currency value €1,234.56
+zh_Hant_MO Negative Currency value -€1,234.56
+zh_Hant_MO Date and time short (Gregorian Calendar) 08年7月21日 下午12:31
+zh_Hant_MO Date and time medium (Gregorian Calendar) 2008年7月21日 下午12:31:00
+zh_Hant_MO Date and time long (Gregorian Calendar) 2008年07月21日GMT+00:00下午12時31分00秒
+zh_Hant_MO Date and time full (Gregorian Calendar) 2008年07月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_MO Date and time short (Islamic Calendar) 29年7月18日 下午12:31
+zh_Hant_MO Date and time medium (Islamic Calendar) 1429年7月18日 下午12:31:00
+zh_Hant_MO Date and time long (Islamic Calendar) 1429年07月18日GMT+00:00下午12時31分00秒
+zh_Hant_MO Date and time full (Islamic Calendar) 1429年07月18日星期一GMT+00:00下午12時31分00秒
+zh_Hant_MO Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_MO Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_MO Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_MO Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_MO Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_MO Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_MO Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_MO Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_MO Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_MO Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_MO Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_MO Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_MO Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_MO Name of month 02 (Islamic Calendar) Safar
+zh_Hant_MO Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_MO Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_MO Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_MO Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_MO Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_MO Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_MO Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_MO Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_MO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_MO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_MO Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_MO Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_MO Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_MO Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_MO Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_MO Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_MO Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_MO Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_MO Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_MO Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_MO Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_MO Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_MO Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_MO Name of weekday 07 (Islamic Calendar) 星期日
+zh_Hant_TW Language endonym 中文
+zh_Hant_TW Country endonym 台灣
+zh_Hant_TW Floating Point Number -123,456,789.012
+zh_Hant_TW Percent value -1,234.5679%
+zh_Hant_TW Currency value €1,234.56
+zh_Hant_TW Negative Currency value -€1,234.56
+zh_Hant_TW Date and time short (Gregorian Calendar) 08/7/21 下午12:31
+zh_Hant_TW Date and time medium (Gregorian Calendar) 2008/7/21 下午12:31:00
+zh_Hant_TW Date and time long (Gregorian Calendar) 2008年7月21日GMT+00:00下午12時31分00秒
+zh_Hant_TW Date and time full (Gregorian Calendar) 2008年7月21日星期一GMT+00:00下午12時31分00秒
+zh_Hant_TW Date and time short (Islamic Calendar) 29/7/18 下午12:31
+zh_Hant_TW Date and time medium (Islamic Calendar) 1429/7/18 下午12:31:00
+zh_Hant_TW Date and time long (Islamic Calendar) 1429年7月18日GMT+00:00下午12時31分00秒
+zh_Hant_TW Date and time full (Islamic Calendar) 1429年7月18日星期一GMT+00:00下午12時31分00秒
+zh_Hant_TW Name of month 01 (Gregorian Calendar) 1月
+zh_Hant_TW Name of month 02 (Gregorian Calendar) 2月
+zh_Hant_TW Name of month 03 (Gregorian Calendar) 3月
+zh_Hant_TW Name of month 04 (Gregorian Calendar) 4月
+zh_Hant_TW Name of month 05 (Gregorian Calendar) 5月
+zh_Hant_TW Name of month 06 (Gregorian Calendar) 6月
+zh_Hant_TW Name of month 07 (Gregorian Calendar) 7月
+zh_Hant_TW Name of month 08 (Gregorian Calendar) 8月
+zh_Hant_TW Name of month 09 (Gregorian Calendar) 9月
+zh_Hant_TW Name of month 10 (Gregorian Calendar) 10月
+zh_Hant_TW Name of month 11 (Gregorian Calendar) 11月
+zh_Hant_TW Name of month 12 (Gregorian Calendar) 12月
+zh_Hant_TW Name of month 01 (Islamic Calendar) Muharram
+zh_Hant_TW Name of month 02 (Islamic Calendar) Safar
+zh_Hant_TW Name of month 03 (Islamic Calendar) Rabiʻ I
+zh_Hant_TW Name of month 04 (Islamic Calendar) Rabiʻ II
+zh_Hant_TW Name of month 05 (Islamic Calendar) Jumada I
+zh_Hant_TW Name of month 06 (Islamic Calendar) Jumada II
+zh_Hant_TW Name of month 07 (Islamic Calendar) Rajab
+zh_Hant_TW Name of month 08 (Islamic Calendar) Shaʻban
+zh_Hant_TW Name of month 09 (Islamic Calendar) Ramadan
+zh_Hant_TW Name of month 10 (Islamic Calendar) Shawwal
+zh_Hant_TW Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+zh_Hant_TW Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+zh_Hant_TW Name of weekday 01 (Gregorian Calendar) 星期一
+zh_Hant_TW Name of weekday 02 (Gregorian Calendar) 星期二
+zh_Hant_TW Name of weekday 03 (Gregorian Calendar) 星期三
+zh_Hant_TW Name of weekday 04 (Gregorian Calendar) 星期四
+zh_Hant_TW Name of weekday 05 (Gregorian Calendar) 星期五
+zh_Hant_TW Name of weekday 06 (Gregorian Calendar) 星期六
+zh_Hant_TW Name of weekday 07 (Gregorian Calendar) 星期日
+zh_Hant_TW Name of weekday 01 (Islamic Calendar) 星期一
+zh_Hant_TW Name of weekday 02 (Islamic Calendar) 星期二
+zh_Hant_TW Name of weekday 03 (Islamic Calendar) 星期三
+zh_Hant_TW Name of weekday 04 (Islamic Calendar) 星期四
+zh_Hant_TW Name of weekday 05 (Islamic Calendar) 星期五
+zh_Hant_TW Name of weekday 06 (Islamic Calendar) 星期六
+zh_Hant_TW Name of weekday 07 (Islamic Calendar) 星期日
+no Language endonym norsk
+no Country endonym
+no Floating Point Number -123 456 789,012
+no Percent value -1 234,5679 %
+no Currency value EUR 1 234,56
+no Negative Currency value -EUR 1 234,56
+no Date and time short (Gregorian Calendar) 21.07.08 12:31
+no Date and time medium (Gregorian Calendar) 21. juli 2008 12:31:00
+no Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+no Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12:31:00 GMT+00:00
+no Date and time short (Islamic Calendar) 18.07.29 12:31
+no Date and time medium (Islamic Calendar) 18. Raj. 1429 12:31:00
+no Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+no Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+no Name of month 01 (Gregorian Calendar) januar
+no Name of month 02 (Gregorian Calendar) februar
+no Name of month 03 (Gregorian Calendar) mars
+no Name of month 04 (Gregorian Calendar) april
+no Name of month 05 (Gregorian Calendar) mai
+no Name of month 06 (Gregorian Calendar) juni
+no Name of month 07 (Gregorian Calendar) juli
+no Name of month 08 (Gregorian Calendar) august
+no Name of month 09 (Gregorian Calendar) september
+no Name of month 10 (Gregorian Calendar) oktober
+no Name of month 11 (Gregorian Calendar) november
+no Name of month 12 (Gregorian Calendar) desember
+no Name of month 01 (Islamic Calendar) Muharram
+no Name of month 02 (Islamic Calendar) Safar
+no Name of month 03 (Islamic Calendar) Rabiʻ I
+no Name of month 04 (Islamic Calendar) Rabiʻ II
+no Name of month 05 (Islamic Calendar) Jumada I
+no Name of month 06 (Islamic Calendar) Jumada II
+no Name of month 07 (Islamic Calendar) Rajab
+no Name of month 08 (Islamic Calendar) Shaʻban
+no Name of month 09 (Islamic Calendar) Ramadan
+no Name of month 10 (Islamic Calendar) Shawwal
+no Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+no Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+no Name of weekday 01 (Gregorian Calendar) mandag
+no Name of weekday 02 (Gregorian Calendar) tirsdag
+no Name of weekday 03 (Gregorian Calendar) onsdag
+no Name of weekday 04 (Gregorian Calendar) torsdag
+no Name of weekday 05 (Gregorian Calendar) fredag
+no Name of weekday 06 (Gregorian Calendar) lørdag
+no Name of weekday 07 (Gregorian Calendar) søndag
+no Name of weekday 01 (Islamic Calendar) mandag
+no Name of weekday 02 (Islamic Calendar) tirsdag
+no Name of weekday 03 (Islamic Calendar) onsdag
+no Name of weekday 04 (Islamic Calendar) torsdag
+no Name of weekday 05 (Islamic Calendar) fredag
+no Name of weekday 06 (Islamic Calendar) lørdag
+no Name of weekday 07 (Islamic Calendar) søndag
+no_NO Language endonym norsk
+no_NO Country endonym Norge
+no_NO Floating Point Number -123 456 789,012
+no_NO Percent value -1 234,5679 %
+no_NO Currency value EUR 1 234,56
+no_NO Negative Currency value -EUR 1 234,56
+no_NO Date and time short (Gregorian Calendar) 21.07.08 12:31
+no_NO Date and time medium (Gregorian Calendar) 21. juli 2008 12:31:00
+no_NO Date and time long (Gregorian Calendar) 21. juli 2008 12:31:00 GMT+00:00
+no_NO Date and time full (Gregorian Calendar) mandag 21. juli 2008 kl. 12:31:00 GMT+00:00
+no_NO Date and time short (Islamic Calendar) 18.07.29 12:31
+no_NO Date and time medium (Islamic Calendar) 18. Raj. 1429 12:31:00
+no_NO Date and time long (Islamic Calendar) 18. Rajab 1429 12:31:00 GMT+00:00
+no_NO Date and time full (Islamic Calendar) mandag 18. Rajab 1429 kl. 12:31:00 GMT+00:00
+no_NO Name of month 01 (Gregorian Calendar) januar
+no_NO Name of month 02 (Gregorian Calendar) februar
+no_NO Name of month 03 (Gregorian Calendar) mars
+no_NO Name of month 04 (Gregorian Calendar) april
+no_NO Name of month 05 (Gregorian Calendar) mai
+no_NO Name of month 06 (Gregorian Calendar) juni
+no_NO Name of month 07 (Gregorian Calendar) juli
+no_NO Name of month 08 (Gregorian Calendar) august
+no_NO Name of month 09 (Gregorian Calendar) september
+no_NO Name of month 10 (Gregorian Calendar) oktober
+no_NO Name of month 11 (Gregorian Calendar) november
+no_NO Name of month 12 (Gregorian Calendar) desember
+no_NO Name of month 01 (Islamic Calendar) Muharram
+no_NO Name of month 02 (Islamic Calendar) Safar
+no_NO Name of month 03 (Islamic Calendar) Rabiʻ I
+no_NO Name of month 04 (Islamic Calendar) Rabiʻ II
+no_NO Name of month 05 (Islamic Calendar) Jumada I
+no_NO Name of month 06 (Islamic Calendar) Jumada II
+no_NO Name of month 07 (Islamic Calendar) Rajab
+no_NO Name of month 08 (Islamic Calendar) Shaʻban
+no_NO Name of month 09 (Islamic Calendar) Ramadan
+no_NO Name of month 10 (Islamic Calendar) Shawwal
+no_NO Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+no_NO Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+no_NO Name of weekday 01 (Gregorian Calendar) mandag
+no_NO Name of weekday 02 (Gregorian Calendar) tirsdag
+no_NO Name of weekday 03 (Gregorian Calendar) onsdag
+no_NO Name of weekday 04 (Gregorian Calendar) torsdag
+no_NO Name of weekday 05 (Gregorian Calendar) fredag
+no_NO Name of weekday 06 (Gregorian Calendar) lørdag
+no_NO Name of weekday 07 (Gregorian Calendar) søndag
+no_NO Name of weekday 01 (Islamic Calendar) mandag
+no_NO Name of weekday 02 (Islamic Calendar) tirsdag
+no_NO Name of weekday 03 (Islamic Calendar) onsdag
+no_NO Name of weekday 04 (Islamic Calendar) torsdag
+no_NO Name of weekday 05 (Islamic Calendar) fredag
+no_NO Name of weekday 06 (Islamic Calendar) lørdag
+no_NO Name of weekday 07 (Islamic Calendar) søndag
+es_419 Language endonym español
+es_419 Country endonym Latinoamérica y el Caribe
+es_419 Floating Point Number -123.456.789,012
+es_419 Percent value -1.234,5679%
+es_419 Currency value € 1.234,56
+es_419 Negative Currency value -€ 1.234,56
+es_419 Date and time short (Gregorian Calendar) 21/07/08 12:31
+es_419 Date and time medium (Gregorian Calendar) 21/07/2008 12:31:00
+es_419 Date and time long (Gregorian Calendar) 21 de julio de 2008 12:31:00 GMT+00:00
+es_419 Date and time full (Gregorian Calendar) lunes 21 de julio de 2008 12:31:00 GMT+00:00
+es_419 Date and time short (Islamic Calendar) 18/07/29 12:31
+es_419 Date and time medium (Islamic Calendar) 18/07/1429 12:31:00
+es_419 Date and time long (Islamic Calendar) 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_419 Date and time full (Islamic Calendar) lunes 18 de Rajab de 1429 12:31:00 GMT+00:00
+es_419 Name of month 01 (Gregorian Calendar) enero
+es_419 Name of month 02 (Gregorian Calendar) febrero
+es_419 Name of month 03 (Gregorian Calendar) marzo
+es_419 Name of month 04 (Gregorian Calendar) abril
+es_419 Name of month 05 (Gregorian Calendar) mayo
+es_419 Name of month 06 (Gregorian Calendar) junio
+es_419 Name of month 07 (Gregorian Calendar) julio
+es_419 Name of month 08 (Gregorian Calendar) agosto
+es_419 Name of month 09 (Gregorian Calendar) septiembre
+es_419 Name of month 10 (Gregorian Calendar) octubre
+es_419 Name of month 11 (Gregorian Calendar) noviembre
+es_419 Name of month 12 (Gregorian Calendar) diciembre
+es_419 Name of month 01 (Islamic Calendar) Muharram
+es_419 Name of month 02 (Islamic Calendar) Safar
+es_419 Name of month 03 (Islamic Calendar) Rabiʻ I
+es_419 Name of month 04 (Islamic Calendar) Rabiʻ II
+es_419 Name of month 05 (Islamic Calendar) Jumada I
+es_419 Name of month 06 (Islamic Calendar) Jumada II
+es_419 Name of month 07 (Islamic Calendar) Rajab
+es_419 Name of month 08 (Islamic Calendar) Shaʻban
+es_419 Name of month 09 (Islamic Calendar) Ramadan
+es_419 Name of month 10 (Islamic Calendar) Shawwal
+es_419 Name of month 11 (Islamic Calendar) Dhuʻl-Qiʻdah
+es_419 Name of month 12 (Islamic Calendar) Dhuʻl-Hijjah
+es_419 Name of weekday 01 (Gregorian Calendar) lunes
+es_419 Name of weekday 02 (Gregorian Calendar) martes
+es_419 Name of weekday 03 (Gregorian Calendar) miércoles
+es_419 Name of weekday 04 (Gregorian Calendar) jueves
+es_419 Name of weekday 05 (Gregorian Calendar) viernes
+es_419 Name of weekday 06 (Gregorian Calendar) sábado
+es_419 Name of weekday 07 (Gregorian Calendar) domingo
+es_419 Name of weekday 01 (Islamic Calendar) lunes
+es_419 Name of weekday 02 (Islamic Calendar) martes
+es_419 Name of weekday 03 (Islamic Calendar) miércoles
+es_419 Name of weekday 04 (Islamic Calendar) jueves
+es_419 Name of weekday 05 (Islamic Calendar) viernes
+es_419 Name of weekday 06 (Islamic Calendar) sábado
+es_419 Name of weekday 07 (Islamic Calendar) domingo
diff --git a/tests/ft_locales/ft_locales.cpp b/tests/ft_locales/ft_locales.cpp
index 6a04a976..2b3836f2 100644
--- a/tests/ft_locales/ft_locales.cpp
+++ b/tests/ft_locales/ft_locales.cpp
@@ -390,7 +390,7 @@ void Ft_Locales::testMLocaleConstructorAndCategoryWithParams()
delete z;
}
-void Ft_Locales::testMLocaleLanguageEndonum_data()
+void Ft_Locales::testMLocaleLanguageEndonym_data()
{
QTest::addColumn<QString>("locale_name");
QTest::addColumn<QString>("endonym_result");
@@ -398,6 +398,17 @@ void Ft_Locales::testMLocaleLanguageEndonum_data()
QTest::newRow("fi_FI")
<< QString("fi_FI")
<< QString("suomi");
+ QTest::newRow("de")
+ << QString("de")
+ << QString("Deutsch");
+ // de_CH won’t work! That’s a bug in my opinion,
+ // see http://site.icu-project.org/design/resbund/issues
+ //QTest::newRow("de_CH")
+ // << QString("de_CH")
+ // << QString("Deutsch");
+ QTest::newRow("de_AT")
+ << QString("de_AT")
+ << QString("Deutsch");
QTest::newRow("de_DE")
<< QString("de_DE")
<< QString("Deutsch");
@@ -409,7 +420,7 @@ void Ft_Locales::testMLocaleLanguageEndonum_data()
<< QString("中文");
}
-void Ft_Locales::testMLocaleLanguageEndonum()
+void Ft_Locales::testMLocaleLanguageEndonym()
{
QFETCH(QString, locale_name);
QFETCH(QString, endonym_result);
@@ -417,7 +428,7 @@ void Ft_Locales::testMLocaleLanguageEndonum()
QCOMPARE(locale.languageEndonym(), endonym_result);
}
-void Ft_Locales::testMLocaleCountryEndonum_data()
+void Ft_Locales::testMLocaleCountryEndonym_data()
{
QTest::addColumn<QString>("locale_name");
QTest::addColumn<QString>("endonym_result");
@@ -425,6 +436,14 @@ void Ft_Locales::testMLocaleCountryEndonum_data()
QTest::newRow("fi_FI")
<< QString("fi_FI")
<< QString("Suomi");
+ // de_CH won’t work! That’s a bug in my opinion,
+ // see http://site.icu-project.org/design/resbund/issues
+ //QTest::newRow("de_CH")
+ // << QString("de_CH")
+ // << QString("Deutschland");
+ QTest::newRow("de_AT")
+ << QString("de_AT")
+ << QString("Österreich");
QTest::newRow("de_DE")
<< QString("de_DE")
<< QString("Deutschland");
@@ -436,7 +455,7 @@ void Ft_Locales::testMLocaleCountryEndonum_data()
<< QString("中国");
}
-void Ft_Locales::testMLocaleCountryEndonum()
+void Ft_Locales::testMLocaleCountryEndonym()
{
QFETCH(QString, locale_name);
QFETCH(QString, endonym_result);
@@ -552,13 +571,26 @@ void Ft_Locales::checkAvailableLocales()
requiredLocaleNames << "fr_SN"; // "French (Senegal)"
requiredLocaleNames << "gl"; // "Galician"
requiredLocaleNames << "gl_ES"; // "Galician (Spain)"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ requiredLocaleNames << "he"; // "Hebrew"
+ requiredLocaleNames << "he_IL"; // "Hebrew (Israel)"
+#endif
requiredLocaleNames << "hi"; // "Hindi"
requiredLocaleNames << "hi_IN"; // "Hindi (India)"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ requiredLocaleNames << "id"; // "Indonesian"
+ requiredLocaleNames << "id_ID"; // "Indonesian (Indonesia)"
+#endif
requiredLocaleNames << "it"; // "Italian"
requiredLocaleNames << "it_CH"; // "Italian (Switzerland)"
requiredLocaleNames << "it_IT"; // "Italian (Italy)"
requiredLocaleNames << "ja"; // "Japanese"
requiredLocaleNames << "ja_JP"; // "Japanese (Japan)"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ requiredLocaleNames << "ms"; //"Malay"
+ requiredLocaleNames << "ms_BN"; // "Malay (Brunei)"
+ requiredLocaleNames << "ms_MY"; // "Malay (Malaysia)"
+#endif
requiredLocaleNames << "nb"; // "Norwegian Bokml"
requiredLocaleNames << "nb_NO"; // "Norwegian Bokml (Norway)"
requiredLocaleNames << "nl"; // "Dutch"
@@ -611,18 +643,213 @@ void Ft_Locales::checkAvailableLocales()
else
availableDisplayNames << QString("What kind of locale is this?");
}
+ // for (int i = 0; i < numberOfAvailableLocales; ++i) {
+ // qDebug() << "available:" << availableLocaleNames[i] << availableDisplayNames[i];
+ // }
foreach(QString requiredLocaleName, requiredLocaleNames) {
// if (availableLocaleNames.contains(requiredLocaleName))
- // qDebug() << "available: "
+ // qDebug() << "required and available: "
// << requiredLocaleName
// << availableDisplayNames[availableLocaleNames.indexOf(requiredLocaleName)];
// else {
- // qDebug() << "missing: " << requiredLocaleName;
+ // qDebug() << "required but missing: " << requiredLocaleName;
// }
QVERIFY2(availableLocaleNames.contains(requiredLocaleName),
QString("The following required locale is missing: "
+ requiredLocaleName).toUtf8().constData());
}
+ // add supported aliases here to check that these work as well:
+ QList<QString> supportedLocaleNames = requiredLocaleNames;
+ supportedLocaleNames << "no";
+ supportedLocaleNames << "no_NO";
+ supportedLocaleNames << "es_419";
+ MCalendar gregorianCalendar(MLocale::GregorianCalendar);
+ MCalendar islamicCalendar(MLocale::IslamicCalendar);
+ QString ft_localesTestOutput = "";
+ foreach(QString supportedLocaleName, supportedLocaleNames) {
+ MLocale locale(supportedLocaleName);
+ ft_localesTestOutput
+ += supportedLocaleName + '\t' + "Language endonym" + '\t'
+ + locale.languageEndonym()
+ + '\n' + supportedLocaleName + '\t' + "Country endonym" + '\t'
+ + locale.countryEndonym()
+ + '\n' + supportedLocaleName + '\t' + "Floating Point Number" + '\t'
+ + locale.formatNumber(-123456789.01234)
+ + '\n' + supportedLocaleName + '\t' + "Percent value" + '\t'
+ + locale.formatPercent(-12.3456789, 4)
+ + '\n' + supportedLocaleName + '\t' + "Currency value" + '\t'
+ + locale.formatCurrency(1234.56, "EUR")
+ + '\n' + supportedLocaleName + '\t' + "Negative Currency value" + '\t'
+ + locale.formatCurrency(-1234.56, "EUR")
+ + '\n' + supportedLocaleName + '\t' + "Date and time short (Gregorian Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateShort,
+ MLocale::TimeShort,
+ MLocale::GregorianCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time medium (Gregorian Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateMedium,
+ MLocale::TimeMedium,
+ MLocale::GregorianCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time long (Gregorian Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateLong,
+ MLocale::TimeLong,
+ MLocale::GregorianCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time full (Gregorian Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateFull,
+ MLocale::TimeFull,
+ MLocale::GregorianCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time short (Islamic Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateShort,
+ MLocale::TimeShort,
+ MLocale::IslamicCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time medium (Islamic Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateMedium,
+ MLocale::TimeMedium,
+ MLocale::IslamicCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time long (Islamic Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateLong,
+ MLocale::TimeLong,
+ MLocale::IslamicCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Date and time full (Islamic Calendar)" + '\t'
+ + locale.formatDateTime(
+ QDateTime(QDate(2008, 7, 21),
+ QTime(12, 31, 0, 0),
+ Qt::LocalTime),
+ MLocale::DateFull,
+ MLocale::TimeFull,
+ MLocale::IslamicCalendar)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 01 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 1)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 02 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 2)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 03 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 3)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 04 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 4)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 05 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 5)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 06 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 6)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 07 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 7)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 08 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 8)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 09 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 9)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 10 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 10)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 11 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 11)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 12 (Gregorian Calendar)" + '\t'
+ + locale.monthName(gregorianCalendar, 12)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 01 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 1)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 02 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 2)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 03 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 3)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 04 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 4)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 05 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 5)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 06 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 6)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 07 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 7)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 08 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 8)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 09 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 9)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 10 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 10)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 11 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 11)
+ + '\n' + supportedLocaleName + '\t' + "Name of month 12 (Islamic Calendar)" + '\t'
+ + locale.monthName(islamicCalendar, 12)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 01 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 1)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 02 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 2)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 03 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 3)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 04 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 4)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 05 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 5)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 06 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 6)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 07 (Gregorian Calendar)" + '\t'
+ + locale.weekdayName(gregorianCalendar, 7)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 01 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 1)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 02 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 2)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 03 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 3)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 04 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 4)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 05 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 5)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 06 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 6)
+ + '\n' + supportedLocaleName + '\t' + "Name of weekday 07 (Islamic Calendar)" + '\t'
+ + locale.weekdayName(islamicCalendar, 7)
+ + '\n';
+ }
+ QString ft_localesTestOutputFileName =
+ "/tmp/ft_locales-test-output.txt";
+ QFile ft_localesTestOutputFile(ft_localesTestOutputFileName);
+ if (!ft_localesTestOutputFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
+ QFAIL(qPrintable("could not open file " + ft_localesTestOutputFileName));
+ int bytesWritten = ft_localesTestOutputFile.write(ft_localesTestOutput.toUtf8().constData());
+ if (bytesWritten == -1)
+ QFAIL(qPrintable("could not write to file" + ft_localesTestOutputFileName));
+ QCOMPARE(uint(bytesWritten), qstrlen(ft_localesTestOutput.toUtf8().constData()));
+ ft_localesTestOutputFile.close();
+
+ QString ft_localesTestInputFileName =
+ qApp->applicationDirPath() + QDir::separator() + "ft_locales-test-input-icu-" + U_ICU_VERSION + ".txt";
+ QFile ft_localesTestInputFile(ft_localesTestInputFileName);
+ if (!ft_localesTestInputFile.open(QIODevice::ReadOnly))
+ QFAIL(qPrintable("could not open file " + ft_localesTestInputFileName));
+ QString ft_localesTestInput = QString::fromUtf8(ft_localesTestInputFile.readAll().constData());
+ ft_localesTestInputFile.close();
+
+ // QTextStream debugStream(stderr);
+ // debugStream.setCodec("UTF-8");
+ // debugStream << ft_localesTestInput;
+
+ if (ft_localesTestOutput != ft_localesTestInput) {
+ QProcess::execute("diff -u " + ft_localesTestInputFileName + ' ' + ft_localesTestOutputFileName);
+// QFAIL(qPrintable("files " + ft_localesTestOutputFileName + " and " + ft_localesTestInputFileName + " differ."));
+ }
}
QTEST_APPLESS_MAIN(Ft_Locales);
diff --git a/tests/ft_locales/ft_locales.h b/tests/ft_locales/ft_locales.h
index 96e3f11f..bac293ed 100644
--- a/tests/ft_locales/ft_locales.h
+++ b/tests/ft_locales/ft_locales.h
@@ -25,6 +25,7 @@
#include <Qt>
#include <MLocale>
+#include <MCalendar>
#include <MApplication>
#include <MGConfItem>
@@ -84,10 +85,10 @@ private slots:
void testMLocaleTextDirection_data();
void testMLocaleTextDirection();
- void testMLocaleLanguageEndonum_data();
- void testMLocaleLanguageEndonum();
- void testMLocaleCountryEndonum_data();
- void testMLocaleCountryEndonum();
+ void testMLocaleLanguageEndonym_data();
+ void testMLocaleLanguageEndonym();
+ void testMLocaleCountryEndonym_data();
+ void testMLocaleCountryEndonym();
void checkAvailableLocales();
};
diff --git a/tests/ft_locales/ft_locales.pro b/tests/ft_locales/ft_locales.pro
index 680ca641..8f3b5410 100644
--- a/tests/ft_locales/ft_locales.pro
+++ b/tests/ft_locales/ft_locales.pro
@@ -12,4 +12,7 @@ TEST_SOURCES = \
HEADERS += ft_locales.h
SOURCES += ft_locales.cpp
+support_files.files += \
+ *.txt
+
include(../common_bot.pri)
diff --git a/tests/ft_mscalableimage/ft_mscalableimage.cpp b/tests/ft_mscalableimage/ft_mscalableimage.cpp
index 70747448..3d1a136d 100644
--- a/tests/ft_mscalableimage/ft_mscalableimage.cpp
+++ b/tests/ft_mscalableimage/ft_mscalableimage.cpp
@@ -70,7 +70,8 @@ const QPixmap *createPixmap(const QString &id, const QSize &size)
}
}
-Ft_MScalableImage::Ft_MScalableImage()
+Ft_MScalableImage::Ft_MScalableImage() :
+ m_subject(0)
{
}
diff --git a/tests/ft_mservicefwgen/ft_mservicefwgen.cpp b/tests/ft_mservicefwgen/ft_mservicefwgen.cpp
index d8680f1d..33ac0b99 100644
--- a/tests/ft_mservicefwgen/ft_mservicefwgen.cpp
+++ b/tests/ft_mservicefwgen/ft_mservicefwgen.cpp
@@ -207,6 +207,8 @@ bool Ft_MServiceFwGen::filesAreTheSame(const QString &filename, const QString &c
QString headerGuard(QFileInfo(filename).fileName().toUpper().replace(".", "_"));
bool lineIsExceptional =
newLine.contains(headerGuard) ||
+ newLine.contains("m-servicefwgen") ||
+ newLine.contains("automatically generated with the command line") ||
newLine.contains("qdbusxml2cpp") ||
newLine.contains("ft_mservicefwgen") ||
newLine.contains(scriptName);
diff --git a/tests/ft_mservicefwgen/ftmservicefwgen1adaptor.cpp.correct b/tests/ft_mservicefwgen/ftmservicefwgen1adaptor.cpp.correct
index 0be1d05b..8a7263d0 100644
--- a/tests/ft_mservicefwgen/ftmservicefwgen1adaptor.cpp.correct
+++ b/tests/ft_mservicefwgen/ftmservicefwgen1adaptor.cpp.correct
@@ -138,8 +138,10 @@ void FtMServiceFwGen1Adaptor::goBack()
XSync(QX11Info::display(), False);
}
- qWarning() << "quitting - bye bye";
- QTimer::singleShot( 0, QApplication::instance(), SLOT( quit() ) );
+ MApplicationWindow *appWindow = MApplication::activeApplicationWindow();
+ if ( appWindow != 0 ) {
+ appWindow->close();
+ }
} else {
qWarning() << "backService is not registered: not going back";
}
diff --git a/tests/ft_mservicefwgen/ftmservicefwgen2adaptor.cpp.correct b/tests/ft_mservicefwgen/ftmservicefwgen2adaptor.cpp.correct
index 5c327ce0..73329d8f 100644
--- a/tests/ft_mservicefwgen/ftmservicefwgen2adaptor.cpp.correct
+++ b/tests/ft_mservicefwgen/ftmservicefwgen2adaptor.cpp.correct
@@ -138,8 +138,10 @@ void FtMServiceFwGen2Adaptor::goBack()
XSync(QX11Info::display(), False);
}
- qWarning() << "quitting - bye bye";
- QTimer::singleShot( 0, QApplication::instance(), SLOT( quit() ) );
+ MApplicationWindow *appWindow = MApplication::activeApplicationWindow();
+ if ( appWindow != 0 ) {
+ appWindow->close();
+ }
} else {
qWarning() << "backService is not registered: not going back";
}
diff --git a/tests/ft_mstylesheet/ft_mstylesheet.cpp b/tests/ft_mstylesheet/ft_mstylesheet.cpp
index 2174a274..b62a251b 100644
--- a/tests/ft_mstylesheet/ft_mstylesheet.cpp
+++ b/tests/ft_mstylesheet/ft_mstylesheet.cpp
@@ -50,6 +50,7 @@ const MStyle *MTheme::style(const char *styleClassName,
Ft_MStyleSheet::Ft_MStyleSheet()
+ : m_subject(NULL)
{
}
diff --git a/tests/ft_mstylesheet/ft_mstylesheet.pro b/tests/ft_mstylesheet/ft_mstylesheet.pro
index 59608876..68ecd1f3 100644
--- a/tests/ft_mstylesheet/ft_mstylesheet.pro
+++ b/tests/ft_mstylesheet/ft_mstylesheet.pro
@@ -4,10 +4,10 @@ QT += dbus svg network
LIBRARYPATH += $$MSRCDIR
win32 {
- QMAKE_MOC = perl $${IN_PWD}\..\..\mmoc\mmoc
+ QMAKE_MOC = ..\..\mmoc\mmoc
} else {
PRE_TARGETDEPS += ../../mgen/mgen
- QMAKE_MOC = PATH=../../mgen:$$(PATH) $${IN_PWD}/../../mmoc/mmoc
+ QMAKE_MOC = PATH=../../mgen:$$(PATH) ../../mmoc/mmoc
}
MGEN_OUTDIR = .
diff --git a/tests/ft_mstylesheetparser/ft_mstylesheetparser.cpp b/tests/ft_mstylesheetparser/ft_mstylesheetparser.cpp
index 6759a989..84bc9feb 100644
--- a/tests/ft_mstylesheetparser/ft_mstylesheetparser.cpp
+++ b/tests/ft_mstylesheetparser/ft_mstylesheetparser.cpp
@@ -31,6 +31,8 @@
const int NUMBER_OF_LOOPS = 100;
Ft_MStyleSheetParser::Ft_MStyleSheetParser()
+ : m_logicalValues(NULL),
+ m_subject(NULL)
{
}
@@ -514,23 +516,23 @@ void Ft_MStyleSheetParser::test_constants_binary()
void Ft_MStyleSheetParser::test_binary_equality()
{
// parse test css file, dumping it to file
- MStyleSheetParser *parser = new MStyleSheetParser();
- parser->setBinaryFileGenerationEnabled(true);
- QCOMPARE(parser->load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
+ MStyleSheetParser parser;
+ parser.setBinaryFileGenerationEnabled(true);
+ QCOMPARE(parser.load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
// // load binary file, see that it exists
// QVERIFY(QFile::exists(QDir::tempPath() + QDir::separator() + "ft_mstylesheetparser_test.css.bin"));
- MStyleSheetParser *binary = new MStyleSheetParser();
- QCOMPARE(binary->load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
+ MStyleSheetParser binary;
+ QCOMPARE(binary.load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
// check that there is equal count of file infos
- QCOMPARE(parser->fileInfoList().count(), binary->fileInfoList().count());
+ QCOMPARE(parser.fileInfoList().count(), binary.fileInfoList().count());
- QList<MStyleSheetParser::StylesheetFileInfo *>::iterator parserFi = parser->fileInfoList().begin();
- QList<MStyleSheetParser::StylesheetFileInfo *>::iterator binaryFi = binary->fileInfoList().begin();
+ QList<MStyleSheetParser::StylesheetFileInfo *>::iterator parserFi = parser.fileInfoList().begin();
+ QList<MStyleSheetParser::StylesheetFileInfo *>::iterator binaryFi = binary.fileInfoList().begin();
- for (int i = 0; i < parser->fileInfoList().count(); i++) {
+ for (int i = 0; i < parser.fileInfoList().count(); i++) {
// check that there is equal count of constants
QCOMPARE((*parserFi)->constants.count(), (*binaryFi)->constants.count());
@@ -575,8 +577,6 @@ void Ft_MStyleSheetParser::test_binary_equality()
parserFi++;
binaryFi++;
}
- delete parser;
- delete binary;
}
void Ft_MStyleSheetParser::test_parser_speed()
@@ -592,19 +592,18 @@ void Ft_MStyleSheetParser::test_parser_speed()
test_start = clock();
for (int i = 0; i < NUMBER_OF_LOOPS; i++) {
- MStyleSheetParser *p = new MStyleSheetParser();
- p->setBinaryFileGenerationEnabled(false);
+ MStyleSheetParser p;
+ p.setBinaryFileGenerationEnabled(false);
// Start clocking
time_start = clock();
// Open test file
- QCOMPARE(p->load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
+ QCOMPARE(p.load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
// End clocking
time_end = clock();
// Store result & cleanup
TIMERS[i] = time_end - time_start;
- delete p;
}
TOTAL_TIME = time_end - test_start;
@@ -628,29 +627,27 @@ void Ft_MStyleSheetParser::test_binary_speed()
clock_t time_end;
// create binary file, if it doesn't exist
- MStyleSheetParser *tmp = new MStyleSheetParser();
- tmp->setBinaryFileGenerationEnabled(true);
- QCOMPARE(tmp->load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
- delete tmp;
+ MStyleSheetParser tmp;
+ tmp.setBinaryFileGenerationEnabled(true);
+ QCOMPARE(tmp.load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
qDebug() << "Testing speed of binary css files, reading ft_mstylesheetparser_test.css" << NUMBER_OF_LOOPS << "times";
test_start = clock();
for (int i = 0; i < NUMBER_OF_LOOPS; i++) {
- MStyleSheetParser *p = new MStyleSheetParser();
- p->setBinaryFileGenerationEnabled(true);
+ MStyleSheetParser p;
+ p.setBinaryFileGenerationEnabled(true);
// Start clocking
time_start = clock();
// Open test file
- QCOMPARE(p->load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
+ QCOMPARE(p.load(qApp->applicationDirPath() + "/ft_mstylesheetparser_test.css"), true);
// End clocking
time_end = clock();
// Store result & cleanup
TIMERS[i] = time_end - time_start;
- delete p;
}
TOTAL_TIME = time_end - test_start;
diff --git a/tests/ft_mstylesheetparser/ft_mstylesheetparser_test.css b/tests/ft_mstylesheetparser/ft_mstylesheetparser_test.css
index 696d9d51..ff6a5b2e 100644
--- a/tests/ft_mstylesheetparser/ft_mstylesheetparser_test.css
+++ b/tests/ft_mstylesheetparser/ft_mstylesheetparser_test.css
@@ -22,6 +22,11 @@ TestObject
attribute-color: #fff/*hmm...*/fff;
}
+/* some valid comments */
+/***/
+/**/ /* * */
+/* abc **/
+
// General purpose style definitions for Test object with parent
ParentName TestObject
diff --git a/tests/gen-tests-xml.sh b/tests/gen-tests-xml.sh
index 9f272dc8..c995a1b6 100755
--- a/tests/gen-tests-xml.sh
+++ b/tests/gen-tests-xml.sh
@@ -11,7 +11,7 @@ FT_TESTCASES=""
for TEST in `ls -d ?t_*`; do
if [ -x $TEST/$TEST -o -x $TEST/$TEST_exec ]; then
-TESTCASE_TEMPLATE="<case name=\"$TEST\" description=\"$TEST\" requirement=\"\" timeout=\"60\">
+TESTCASE_TEMPLATE="<case name=\"$TEST\" description=\"$TEST\" requirement=\"\" timeout=\"200\">
<step expected_result=\"0\">/usr/lib/libmeegotouch-tests/$TEST</step>
</case>
"
diff --git a/tests/stubs/mapplethandle_stub.h b/tests/stubs/mapplethandle_stub.h
index de60a272..26599fc0 100644
--- a/tests/stubs/mapplethandle_stub.h
+++ b/tests/stubs/mapplethandle_stub.h
@@ -57,13 +57,13 @@ void MAppletHandleStub::init(const QString &runnerBinary, const QString &appletI
params.append( new Parameter<QString >(runnerBinary));
params.append( new Parameter<QString >(appletInstanceFileDataPath));
params.append( new Parameter<QString >(metaDataFileName));
- params.append( new Parameter<const MAppletId & >(appletId));
+ params.append( new Parameter<MAppletId >(appletId));
stubMethodEntered("init",params);
}
void MAppletHandleStub::initPlaceHolder(const MAppletId &appletId, const QString &packageName, const QString &installationError) {
QList<ParameterBase*> params;
- params.append( new Parameter<const MAppletId & >(appletId));
+ params.append( new Parameter<MAppletId >(appletId));
params.append( new Parameter<QString >(packageName));
params.append( new Parameter<QString >(installationError));
stubMethodEntered("initPlaceHolder",params);
diff --git a/tests/stubs/mappletid_stub.h b/tests/stubs/mappletid_stub.h
index f2ff2cc6..276f2305 100644
--- a/tests/stubs/mappletid_stub.h
+++ b/tests/stubs/mappletid_stub.h
@@ -73,11 +73,13 @@ MAppletIdStub *gMAppletIdStub = &gDefaultMAppletIdStub;
// 4. CREATE A PROXY WHICH CALLS THE STUB
MAppletId::MAppletId()
+ : appletInstanceId( 0 )
{
gMAppletIdStub->MAppletIdConstructor();
}
MAppletId::MAppletId(const QString &applicationName, const QString &mashupCanvasName, const AppletInstanceID &instanceId)
+ : appletInstanceId( 0 )
{
gMAppletIdStub->MAppletIdConstructor(applicationName, mashupCanvasName, instanceId);
}
diff --git a/tests/stubs/mappletinstancemanager_stub.h b/tests/stubs/mappletinstancemanager_stub.h
index e1da4738..ecd74ca2 100644
--- a/tests/stubs/mappletinstancemanager_stub.h
+++ b/tests/stubs/mappletinstancemanager_stub.h
@@ -55,7 +55,7 @@ public:
virtual QString dataPath() const;
virtual QString createAppletInstanceDataFileName(MAppletId id) const;
virtual void freeAppletInstanceID(MAppletId id);
- virtual MAppletId appletIDForWidget(MWidget *widget) const;
+ virtual MAppletId appletIDForWidget(QGraphicsWidget *widget) const;
virtual MAppletId appletIDForPackageName(const QString &packageName) const;
virtual MAppletId::AppletInstanceID appletInstanceIDFromKey(const QString &key);
virtual void removeAppletInstanceData(MAppletId appletId);
@@ -259,10 +259,10 @@ void MAppletInstanceManagerStub::freeAppletInstanceID(MAppletId id)
stubMethodEntered("freeAppletInstanceID", params);
}
-MAppletId MAppletInstanceManagerStub::appletIDForWidget(MWidget *widget) const
+MAppletId MAppletInstanceManagerStub::appletIDForWidget(QGraphicsWidget *widget) const
{
QList<ParameterBase *> params;
- params.append(new Parameter<MWidget * >(widget));
+ params.append(new Parameter<QGraphicsWidget * >(widget));
stubMethodEntered("appletIDForWidget", params);
return stubReturnValue<MAppletId>("appletIDForWidget");
}
@@ -345,6 +345,9 @@ MAppletInstanceManagerStub *gMAppletInstanceManagerStub = &gDefaultMAppletInstan
// 4. CREATE A PROXY WHICH CALLS THE STUB
MAppletInstanceManager::MAppletInstanceManager(const QString &identifier, MDataStore *dataStore)
+ : dataStore( NULL ),
+ fileDataStore( NULL ),
+ lastAppletInstanceID( 0 )
{
gMAppletInstanceManagerStub->MAppletInstanceManagerConstructor(identifier, dataStore);
}
@@ -474,7 +477,7 @@ void MAppletInstanceManager::freeAppletInstanceID(MAppletId id)
gMAppletInstanceManagerStub->freeAppletInstanceID(id);
}
-MAppletId MAppletInstanceManager::appletIDForWidget(MWidget *widget) const
+MAppletId MAppletInstanceManager::appletIDForWidget(QGraphicsWidget *widget) const
{
return gMAppletInstanceManagerStub->appletIDForWidget(widget);
}
diff --git a/tests/stubs/mappletloader_stub.h b/tests/stubs/mappletloader_stub.h
index 716d7522..61527a48 100644
--- a/tests/stubs/mappletloader_stub.h
+++ b/tests/stubs/mappletloader_stub.h
@@ -28,18 +28,18 @@
// FIXME - stubgen is not yet finished
class MAppletLoaderStub : public StubBase {
public:
- virtual MWidget * loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings);
+ virtual QGraphicsWidget * loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings);
virtual void MAppletLoaderConstructor();
};
// 2. IMPLEMENT STUB
-MWidget * MAppletLoaderStub::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings) {
+QGraphicsWidget * MAppletLoaderStub::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings) {
QList<ParameterBase*> params;
params.append( new Parameter<QString >(metadata.fileName()));
params.append( new Parameter<MDataStore & >(dataStore));
params.append( new Parameter<MDataAccess & >(settings));
stubMethodEntered("loadApplet",params);
- return stubReturnValue<MWidget *>("loadApplet");
+ return stubReturnValue<QGraphicsWidget *>("loadApplet");
}
void MAppletLoaderStub::MAppletLoaderConstructor() {
@@ -53,7 +53,7 @@ MAppletLoaderStub* gMAppletLoaderStub = &gDefaultMAppletLoaderStub;
// 4. CREATE A PROXY WHICH CALLS THE STUB
-MWidget * MAppletLoader::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings) {
+QGraphicsWidget * MAppletLoader::loadApplet(const MAppletMetaData &metadata, MDataStore &dataStore, MDataAccess &settings) {
return gMAppletLoaderStub->loadApplet(metadata, dataStore, settings);
}
diff --git a/tests/stubs/mappletsharedmutex_stub.h b/tests/stubs/mappletsharedmutex_stub.h
index a0318f06..181c9cb1 100644
--- a/tests/stubs/mappletsharedmutex_stub.h
+++ b/tests/stubs/mappletsharedmutex_stub.h
@@ -81,6 +81,7 @@ MAppletSharedMutexStub gDefaultMAppletSharedMutexStub;
MAppletSharedMutexStub *gMAppletSharedMutexStub = &gDefaultMAppletSharedMutexStub;
MAppletSharedMutex::MAppletSharedMutex()
+ : d_ptr( 0 )
{
gMAppletSharedMutexStub->mAppletSharedMutexStubConstructor();
}
diff --git a/tests/stubs/mapplicationextensionmanager_stub.h b/tests/stubs/mapplicationextensionmanager_stub.h
new file mode 100644
index 00000000..463f35e8
--- /dev/null
+++ b/tests/stubs/mapplicationextensionmanager_stub.h
@@ -0,0 +1,226 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#ifndef MAPPLICATIONEXTENSIONMANAGER_STUB
+#define MAPPLICATIONEXTENSIONMANAGER_STUB
+
+#include "mapplicationextensionmanager.h"
+#include <stubbase.h>
+
+
+// 1. DECLARE STUB
+// FIXME - stubgen is not yet finished
+class MApplicationExtensionManagerStub : public StubBase {
+ public:
+ virtual void MApplicationExtensionManagerConstructor(const QString &interface);
+ virtual void MApplicationExtensionManagerDestructor();
+ virtual void setInProcessFilter(const QRegExp &inProcessFilter);
+ virtual void setOutOfProcessFilter(const QRegExp &outOfProcessFilter);
+ virtual bool init();
+ virtual QList<MApplicationExtensionInterface *> extensions();
+ virtual void updateAvailableExtensions(const QString &path);
+ virtual QString dataPath() const;
+ virtual bool isInProcess(const MApplicationExtensionMetaData &metaData);
+ virtual bool createDataStore();
+ virtual bool instantiateExtension(const MApplicationExtensionMetaData &metadata);
+ virtual bool instantiateInProcessExtension(const QString &binary);
+ virtual bool instantiateOutOfProcessExtension(const MApplicationExtensionMetaData &metadata);
+ virtual void removeExtension(const MApplicationExtensionMetaData &metadata);
+ virtual void removeInProcessExtension(const QString &library);
+ virtual void removeOutOfProcessExtension(const MApplicationExtensionMetaData &metadata);
+ virtual QString createApplicationExtensionDataFileName(const QString &interface) const;
+};
+
+// 2. IMPLEMENT STUB
+void MApplicationExtensionManagerStub::MApplicationExtensionManagerConstructor(const QString &interface) {
+ Q_UNUSED(interface);
+
+}
+void MApplicationExtensionManagerStub::MApplicationExtensionManagerDestructor() {
+
+}
+void MApplicationExtensionManagerStub::setInProcessFilter(const QRegExp &inProcessFilter) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QRegExp >(inProcessFilter));
+ stubMethodEntered("setInProcessFilter",params);
+}
+
+void MApplicationExtensionManagerStub::setOutOfProcessFilter(const QRegExp &outOfProcessFilter) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QRegExp >(outOfProcessFilter));
+ stubMethodEntered("setOutOfProcessFilter",params);
+}
+
+bool MApplicationExtensionManagerStub::init() {
+ stubMethodEntered("init");
+ return stubReturnValue<bool>("init");
+}
+
+QList<MApplicationExtensionInterface *> MApplicationExtensionManagerStub::extensions() {
+ stubMethodEntered("extensions");
+ return stubReturnValue<QList<MApplicationExtensionInterface *> >("extensions");
+}
+
+void MApplicationExtensionManagerStub::updateAvailableExtensions(const QString &path) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QString >(path));
+ stubMethodEntered("updateAvailableExtensions",params);
+}
+
+QString MApplicationExtensionManagerStub::dataPath() const {
+ stubMethodEntered("dataPath");
+ return stubReturnValue<QString>("dataPath");
+}
+
+bool MApplicationExtensionManagerStub::isInProcess(const MApplicationExtensionMetaData &metaData) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const MApplicationExtensionMetaData & >(metaData));
+ stubMethodEntered("isInProcess",params);
+ return stubReturnValue<bool>("isInProcess");
+}
+
+bool MApplicationExtensionManagerStub::createDataStore() {
+ stubMethodEntered("createDataStore");
+ return stubReturnValue<bool>("createDataStore");
+}
+
+bool MApplicationExtensionManagerStub::instantiateExtension(const MApplicationExtensionMetaData &metadata) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const MApplicationExtensionMetaData & >(metadata));
+ stubMethodEntered("instantiateExtension",params);
+ return stubReturnValue<bool>("instantiateExtension");
+}
+
+bool MApplicationExtensionManagerStub::instantiateInProcessExtension(const QString &binary) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QString >(binary));
+ stubMethodEntered("instantiateInProcessExtension",params);
+ return stubReturnValue<bool>("instantiateInProcessExtension");
+}
+
+bool MApplicationExtensionManagerStub::instantiateOutOfProcessExtension(const MApplicationExtensionMetaData &metadata) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const MApplicationExtensionMetaData & >(metadata));
+ stubMethodEntered("instantiateOutOfProcessExtension",params);
+ return stubReturnValue<bool>("instantiateOutOfProcessExtension");
+}
+
+void MApplicationExtensionManagerStub::removeExtension(const MApplicationExtensionMetaData &metadata) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const MApplicationExtensionMetaData & >(metadata));
+ stubMethodEntered("removeExtension",params);
+}
+
+void MApplicationExtensionManagerStub::removeInProcessExtension(const QString &library) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QString >(library));
+ stubMethodEntered("removeInProcessExtension",params);
+}
+
+void MApplicationExtensionManagerStub::removeOutOfProcessExtension(const MApplicationExtensionMetaData &metadata) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const MApplicationExtensionMetaData & >(metadata));
+ stubMethodEntered("removeOutOfProcessExtension",params);
+}
+
+QString MApplicationExtensionManagerStub::createApplicationExtensionDataFileName(const QString &interface) const {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<QString >(interface));
+ stubMethodEntered("createApplicationExtensionDataFileName",params);
+ return stubReturnValue<QString>("createApplicationExtensionDataFileName");
+}
+
+
+
+// 3. CREATE A STUB INSTANCE
+MApplicationExtensionManagerStub gDefaultMApplicationExtensionManagerStub;
+MApplicationExtensionManagerStub* gMApplicationExtensionManagerStub = &gDefaultMApplicationExtensionManagerStub;
+
+
+// 4. CREATE A PROXY WHICH CALLS THE STUB
+MApplicationExtensionManager::MApplicationExtensionManager(const QString &interface) {
+ gMApplicationExtensionManagerStub->MApplicationExtensionManagerConstructor(interface);
+}
+
+MApplicationExtensionManager::~MApplicationExtensionManager() {
+ gMApplicationExtensionManagerStub->MApplicationExtensionManagerDestructor();
+}
+
+void MApplicationExtensionManager::setInProcessFilter(const QRegExp &inProcessFilter) {
+ gMApplicationExtensionManagerStub->setInProcessFilter(inProcessFilter);
+}
+
+void MApplicationExtensionManager::setOutOfProcessFilter(const QRegExp &outOfProcessFilter) {
+ gMApplicationExtensionManagerStub->setOutOfProcessFilter(outOfProcessFilter);
+}
+
+bool MApplicationExtensionManager::init() {
+ return gMApplicationExtensionManagerStub->init();
+}
+
+QList<MApplicationExtensionInterface *> MApplicationExtensionManager::extensions() {
+ return gMApplicationExtensionManagerStub->extensions();
+}
+
+void MApplicationExtensionManager::updateAvailableExtensions(const QString &path) {
+ gMApplicationExtensionManagerStub->updateAvailableExtensions(path);
+}
+
+QString MApplicationExtensionManager::dataPath() const {
+ return gMApplicationExtensionManagerStub->dataPath();
+}
+
+bool MApplicationExtensionManager::isInProcess(const MApplicationExtensionMetaData &metaData) {
+ return gMApplicationExtensionManagerStub->isInProcess(metaData);
+}
+
+bool MApplicationExtensionManager::createDataStore() {
+ return gMApplicationExtensionManagerStub->createDataStore();
+}
+
+bool MApplicationExtensionManager::instantiateExtension(const MApplicationExtensionMetaData &metadata) {
+ return gMApplicationExtensionManagerStub->instantiateExtension(metadata);
+}
+
+bool MApplicationExtensionManager::instantiateInProcessExtension(const QString &binary) {
+ return gMApplicationExtensionManagerStub->instantiateInProcessExtension(binary);
+}
+
+bool MApplicationExtensionManager::instantiateOutOfProcessExtension(const MApplicationExtensionMetaData &metadata) {
+ return gMApplicationExtensionManagerStub->instantiateOutOfProcessExtension(metadata);
+}
+
+void MApplicationExtensionManager::removeExtension(const MApplicationExtensionMetaData &metadata) {
+ gMApplicationExtensionManagerStub->removeExtension(metadata);
+}
+
+void MApplicationExtensionManager::removeInProcessExtension(const QString &library) {
+ gMApplicationExtensionManagerStub->removeInProcessExtension(library);
+}
+
+void MApplicationExtensionManager::removeOutOfProcessExtension(const MApplicationExtensionMetaData &metadata) {
+ gMApplicationExtensionManagerStub->removeOutOfProcessExtension(metadata);
+}
+
+QString MApplicationExtensionManager::createApplicationExtensionDataFileName(const QString &interface) const {
+ return gMApplicationExtensionManagerStub->createApplicationExtensionDataFileName(interface);
+}
+
+
+#endif
diff --git a/tests/stubs/methodcall.h b/tests/stubs/methodcall.h
index 9c886eb8..4e2d15dc 100644
--- a/tests/stubs/methodcall.h
+++ b/tests/stubs/methodcall.h
@@ -49,14 +49,18 @@ public:
T parameter(int number) {
if (number >= _params.count()) {
QString msg = QString("MethodCall::") + __func__ + ": method " + _name + " does not have parameter #" + QString::number(number) + ". Check your test code.";
- qFatal(qPrintable(msg));
+ qFatal("%s", qPrintable(msg));
}
Parameter<T>* param = dynamic_cast<Parameter<T>* >(_params[number]);
if (!param) {
QString msg = QString("MethodCall::") + __func__ + ": failed dynamic_cast, check that parameter type matches parameter number";
- qFatal(qPrintable(msg));
- }
- return param->data;
+ qFatal("%s", qPrintable(msg));
+
+ // never reached
+ return T();
+ } else {
+ return param->data;
+ }
}
template <typename T>
diff --git a/tests/stubs/mextensionrunner_stub.h b/tests/stubs/mextensionrunner_stub.h
index a708c9e0..d66197aa 100644
--- a/tests/stubs/mextensionrunner_stub.h
+++ b/tests/stubs/mextensionrunner_stub.h
@@ -105,7 +105,19 @@ MExtensionRunnerStub* gMExtensionRunnerStub = &gDefaultMExtensionRunnerStub;
// 4. CREATE A PROXY WHICH CALLS THE STUB
-MExtensionRunner::MExtensionRunner() {
+MExtensionRunner::MExtensionRunner()
+ : communicator( NULL ),
+ parentWidget( NULL ),
+ widget( NULL ),
+ scene( NULL ),
+ view( NULL ),
+#ifdef QT_OPENGL_LIB
+ context( NULL ),
+#endif
+ aliveTimer( NULL ),
+ pixmapMutex( NULL ),
+ visible( false )
+{
gMExtensionRunnerStub->MExtensionRunnerConstructor();
}
diff --git a/tests/stubs/mnotificationmanager_stub.h b/tests/stubs/mnotificationmanager_stub.h
index 3182afe4..69255c90 100644
--- a/tests/stubs/mnotificationmanager_stub.h
+++ b/tests/stubs/mnotificationmanager_stub.h
@@ -174,7 +174,8 @@ MNotificationManagerStub *gMNotificationManagerStub = &gDefaultMNotificationMana
// 4. CREATE A PROXY WHICH CALLS THE STUB
-MNotificationManager::MNotificationManager() : proxy(QString(), QString(), QDBusConnection::sessionBus())
+MNotificationManager::MNotificationManager() : proxy(QString(), QString(), QDBusConnection::sessionBus()),
+ userId( 0 )
{
gMNotificationManagerStub->MNotificationManagerConstructor();
}
diff --git a/tests/stubs/msettingslanguageoption_stub.h b/tests/stubs/msettingslanguageoption_stub.h
index df521d13..a9f90df0 100644
--- a/tests/stubs/msettingslanguageoption_stub.h
+++ b/tests/stubs/msettingslanguageoption_stub.h
@@ -68,6 +68,7 @@ MSettingsLanguageOptionStub *gMSettingsLanguageOptionStub = &gDefaultMSettingsLa
// 4. CREATE A PROXY WHICH CALLS THE STUB
MSettingsLanguageOption::MSettingsLanguageOption(const QString &title, int value)
+ : value_( 0 )
{
gMSettingsLanguageOptionStub->MSettingsLanguageOptionConstructor(title, value);
}
diff --git a/tests/stubs/msettingslanguagesettings_stub.h b/tests/stubs/msettingslanguagesettings_stub.h
index 33e96d16..921f26ab 100644
--- a/tests/stubs/msettingslanguagesettings_stub.h
+++ b/tests/stubs/msettingslanguagesettings_stub.h
@@ -52,6 +52,7 @@ MSettingsLanguageSettingsStub *gMSettingsLanguageSettingsStub = &gDefaultMSettin
// 4. CREATE A PROXY WHICH CALLS THE STUB
MSettingsLanguageSettings::MSettingsLanguageSettings()
+ : _group(false)
{
gMSettingsLanguageSettingsStub->MSettingsLanguageSettingsConstructor();
}
diff --git a/tests/stubs/mwidget_stub.h b/tests/stubs/mwidget_stub.h
index 369ac9ee..753e5b97 100644
--- a/tests/stubs/mwidget_stub.h
+++ b/tests/stubs/mwidget_stub.h
@@ -35,6 +35,8 @@ class MWidgetStub : public StubBase {
virtual MSceneManager * sceneManager() const;
virtual bool isOnDisplay() const;
virtual bool isSelected() const;
+ virtual QPointF paintOffset() const;
+ virtual void setPaintOffset(const QPointF & offset);
virtual void setVisible(bool visible);
virtual void setObjectName(const QString &name);
virtual void setSelected(bool selected);
@@ -93,6 +95,17 @@ bool MWidgetStub::isSelected() const {
return stubReturnValue<bool>("isSelected");
}
+QPointF MWidgetStub::paintOffset() const {
+ stubMethodEntered("paintOffset");
+ return stubReturnValue<QPointF>("paintOffset");
+}
+
+void MWidgetStub::setPaintOffset(const QPointF & offset) {
+ QList<ParameterBase*> params;
+ params.append( new Parameter<const QPointF & >(offset));
+ stubMethodEntered("setPaintOffset",params);
+}
+
void MWidgetStub::setVisible(bool visible) {
QList<ParameterBase*> params;
params.append( new Parameter<bool >(visible));
@@ -253,6 +266,14 @@ bool MWidget::isSelected() const {
return gMWidgetStub->isSelected();
}
+QPointF MWidget::paintOffset() const {
+ return gMWidgetStub->paintOffset();
+}
+
+void MWidget::setPaintOffset(const QPointF & offset) {
+ gMWidgetStub->setPaintOffset(offset);
+}
+
void MWidget::setVisible(bool visible) {
gMWidgetStub->setVisible(visible);
}
diff --git a/tests/stubs/stubbase.h b/tests/stubs/stubbase.h
index 8d4bf24b..a78f10e1 100644
--- a/tests/stubs/stubbase.h
+++ b/tests/stubs/stubbase.h
@@ -92,7 +92,7 @@ T &StubBase::stubReturnValue(const QString &methodName) const
Parameter<T>* param = dynamic_cast<Parameter<T>*>(base);
if (!param) {
QString msg = QString("StubBase::") + __func__ + ": failed dynamic_cast, check that return value type matches the method; check also that you have used stubSetReturnValue(" + methodName + ")";
- qFatal(qPrintable(msg));
+ qFatal("%s", qPrintable(msg));
}
return param->data;
diff --git a/tests/tests.pro b/tests/tests.pro
index 475315e2..c0e999d3 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -46,6 +46,7 @@ SUBDIRS = \
ut_mpositionindicator \
ut_mpositionindicatorview \
ut_mpopuplist \
+ ut_mrichtextedit \
ut_mscenemanager \
ut_mslider \
ut_mseekbar \
diff --git a/tests/ut_mapplethandle/ut_mapplethandle.pro b/tests/ut_mapplethandle/ut_mapplethandle.pro
index 397d59c9..64574f0f 100644
--- a/tests/ut_mapplethandle/ut_mapplethandle.pro
+++ b/tests/ut_mapplethandle/ut_mapplethandle.pro
@@ -7,10 +7,10 @@ INCLUDEPATH += \
QT += xml
win32 {
- QMAKE_MOC = perl $${IN_PWD}\..\..\mmoc\mmoc
+ QMAKE_MOC = ..\..\mmoc\mmoc
} else {
PRE_TARGETDEPS += ../../mgen/mgen
- QMAKE_MOC = PATH=../../mgen:$$(PATH) $${IN_PWD}/../../mmoc/mmoc
+ QMAKE_MOC = PATH=../../mgen:$$(PATH) ../../mmoc/mmoc
}
MGEN_OUTDIR = .
diff --git a/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.cpp b/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.cpp
index a95a4eab..b08b2376 100644
--- a/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.cpp
+++ b/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.cpp
@@ -161,18 +161,18 @@ int AppletInstanceCollection::count() const
return instances.count();
}
-MWidget *AppletInstanceCollection::at(int index) const
+QGraphicsWidget *AppletInstanceCollection::at(int index) const
{
return instances.at(index);
}
-void AppletInstanceCollection::addInstance(MWidget *widget, MDataStore &store)
+void AppletInstanceCollection::addInstance(QGraphicsWidget *widget, MDataStore &store)
{
Q_UNUSED(store);
instances.append(widget);
}
-void AppletInstanceCollection::removeInstance(MWidget *widget)
+void AppletInstanceCollection::removeInstance(QGraphicsWidget *widget)
{
int index = instances.indexOf(widget);
if (index != -1) {
@@ -415,7 +415,7 @@ void Ut_MAppletInstanceManager::cleanup()
void Ut_MAppletInstanceManager::testInProcessAppletRestoration()
{
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
// Verify that the restoration process does not return an error
QVERIFY(manager->restoreApplets());
@@ -435,7 +435,7 @@ void Ut_MAppletInstanceManager::testOutOfProcessAppletRestoration()
// Create AppletInstanceCollection to verify created applet instances
AppletInstanceCollection collection;
- QObject::connect(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)), &collection, SLOT(addInstance(MWidget *, MDataStore &)));
+ QObject::connect(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)), &collection, SLOT(addInstance(QGraphicsWidget *, MDataStore &)));
// Verify that the restoration process does not return an error
QVERIFY(manager->restoreApplets());
@@ -450,8 +450,8 @@ void Ut_MAppletInstanceManager::testOutOfProcessAppletRestoration()
QVERIFY(instance2 != NULL);
QList<MethodCall *> initCalls = gMAppletHandleStub->stubCallsTo("init");
QCOMPARE(initCalls.length(), 2);
- QCOMPARE(initCalls[0]->parameter<const MAppletId &>(3).toString(), QString("ut_mappletinstancemanager/testmanager/1"));
- QCOMPARE(initCalls[1]->parameter<const MAppletId &>(3).toString(), QString("ut_mappletinstancemanager/testmanager/4"));
+ QCOMPARE(initCalls[0]->parameter<MAppletId>(3).toString(), QString("ut_mappletinstancemanager/testmanager/1"));
+ QCOMPARE(initCalls[1]->parameter<MAppletId>(3).toString(), QString("ut_mappletinstancemanager/testmanager/4"));
// Make sure the titles are set
QList<MethodCall *> setAppletTitleCalls = gMAppletHandleStub->stubCallsTo("setAppletTitle");
@@ -494,7 +494,7 @@ void Ut_MAppletInstanceManager::testAppletInstantiation()
manager = new MTestAppletInstanceManager("testmanager", &mockDataStore);
// Create a signal spy to investigate if appletInstantiated signal is emitted for all applets.
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
// Verify that the instantiation process does not return an error
QVERIFY(manager->instantiateApplet("/tmp/testapplet1.desktop"));
@@ -514,7 +514,7 @@ void Ut_MAppletInstanceManager::testAppletInstantiationWithMissingDesktopFiles()
manager = new MTestAppletInstanceManager("testmanager", &mockDataStore);
// Create a signal spy to investigate if appletInstantiated signal is emitted for all applets.
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
// Verify that the instantiation process does return an error
QVERIFY(!manager->instantiateApplet("/tmp/testapplet1.desktop"));
@@ -526,8 +526,8 @@ void Ut_MAppletInstanceManager::testAppletInstantiationWithMissingDesktopFiles()
void Ut_MAppletInstanceManager::testAppletInstanceRemoval()
{
- QSignalSpy instantiateSpy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
- QSignalSpy removeSpy(manager, SIGNAL(appletRemoved(MWidget *)));
+ QSignalSpy instantiateSpy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
+ QSignalSpy removeSpy(manager, SIGNAL(appletRemoved(QGraphicsWidget *)));
// Verify that the instantiation process does not return an error
QVERIFY(manager->restoreApplets());
@@ -552,7 +552,7 @@ void Ut_MAppletInstanceManager::testAppletInstanceRemoval()
void Ut_MAppletInstanceManager::testAppletUninstallation()
{
- QSignalSpy removeSpy(manager, SIGNAL(appletRemoved(MWidget *)));
+ QSignalSpy removeSpy(manager, SIGNAL(appletRemoved(QGraphicsWidget *)));
// Verify that the instantiation process does not return an error
QVERIFY(manager->restoreApplets());
@@ -578,7 +578,7 @@ void Ut_MAppletInstanceManager::testAppletInstanceDataStoreIsNonReadWrite()
manager = new MTestAppletInstanceManager("testmanager", &mockDataStore);
// Create a signal spy to investigate if appletInstantiated signal is emitted
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
MFileDataStore_isReadable = false;
QVERIFY(!manager->instantiateApplet("/tmp/testapplet1.desktop"));
@@ -636,7 +636,7 @@ void Ut_MAppletInstanceManager::testOOPAppletStartsToBrokenState()
gMExtensionHandleStub->stubSetReturnValue("state", MAppletHandleModel::BROKEN);
// Create a signal spy to investigate if appletInstantiated signal is emitted for all applets.
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
// Verify that the instantiation process doesn't succeed
QVERIFY(!manager->instantiateApplet("/tmp/testapplet1.desktop"));
@@ -648,7 +648,7 @@ void Ut_MAppletInstanceManager::testOOPAppletStartsToBrokenState()
void Ut_MAppletInstanceManager::testInstallingAppletFromPackage()
{
// Create a signal spy to investigate if appletInstantiated signal is emitted
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
// Instantiate an applet from a package
QMap<QString, QVariant> metaData;
@@ -660,7 +660,7 @@ void Ut_MAppletInstanceManager::testInstallingAppletFromPackage()
// Make sure the applet placeholder is instantiated
QCOMPARE(gMAppletHandleStub->stubCallCount("initPlaceHolder"), 1);
- QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<const MAppletId &>(0).instanceId(), (uint)2);
+ QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<MAppletId>(0).instanceId(), (uint)2);
// Make sure the titles are set
QList<MethodCall *> setAppletTitleCalls = gMAppletHandleStub->stubCallsTo("setAppletTitle");
@@ -688,7 +688,7 @@ void Ut_MAppletInstanceManager::testInstallationOperationComplete()
existingFiles.append("/tmp/test.desktop");
emit operationComplete("Install", "testpackage.deb", QString());
QCOMPARE(gMAppletHandleStub->stubCallCount("init"), 1);
- QCOMPARE(gMAppletHandleStub->stubLastCallTo("init").parameter<const MAppletId &>(3).instanceId(), (uint)2);
+ QCOMPARE(gMAppletHandleStub->stubLastCallTo("init").parameter<MAppletId>(3).instanceId(), (uint)2);
}
void Ut_MAppletInstanceManager::testInstallationOperationCompleteForUnknownPackage()
@@ -738,7 +738,7 @@ void Ut_MAppletInstanceManager::testRestoringAppletsBeingInstalled()
void Ut_MAppletInstanceManager::testReceiveOperationFailed()
{
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
connect(this, SIGNAL(receiveOperation(QDBusPendingCallWatcher *)), manager, SLOT(receiveOperation(QDBusPendingCallWatcher *)));
MAppletId appletId("ut_mappletinstancemanager", "testmanager", 5);
@@ -752,13 +752,13 @@ void Ut_MAppletInstanceManager::testReceiveOperationFailed()
emit receiveOperation(&watcher);
QCOMPARE(spy.count(), 1);
QCOMPARE(gMAppletHandleStub->stubCallCount("initPlaceHolder"), 1);
- QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<const MAppletId &>(0).instanceId(), (uint)5);
+ QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<MAppletId>(0).instanceId(), (uint)5);
QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<QString>(2), qtTrId("mappletinstancedata_nopackagemetadata"));
}
void Ut_MAppletInstanceManager::testReceiveUnknownOperation()
{
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
connect(this, SIGNAL(receiveOperation(QDBusPendingCallWatcher *)), manager, SLOT(receiveOperation(QDBusPendingCallWatcher *)));
MAppletId appletId("ut_mappletinstancemanager", "testmanager", 5);
@@ -773,13 +773,13 @@ void Ut_MAppletInstanceManager::testReceiveUnknownOperation()
QCOMPARE(instantiateAppletPlaceHolderMetaData.count(), 0);
QCOMPARE(spy.count(), 1);
QCOMPARE(gMAppletHandleStub->stubCallCount("initPlaceHolder"), 1);
- QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<const MAppletId &>(0).instanceId(), (uint)5);
+ QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<MAppletId>(0).instanceId(), (uint)5);
QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<QString>(2), qtTrId("mappletinstancedata_nopackagemetadata"));
}
void Ut_MAppletInstanceManager::testReceiveInstallOperation()
{
- QSignalSpy spy(manager, SIGNAL(appletInstantiated(MWidget *, MDataStore &)));
+ QSignalSpy spy(manager, SIGNAL(appletInstantiated(QGraphicsWidget *, MDataStore &)));
connect(this, SIGNAL(receiveOperation(QDBusPendingCallWatcher *)), manager, SLOT(receiveOperation(QDBusPendingCallWatcher *)));
MAppletId appletId("ut_mappletinstancemanager", "testmanager", 5);
@@ -793,7 +793,7 @@ void Ut_MAppletInstanceManager::testReceiveInstallOperation()
emit receiveOperation(&watcher);
QCOMPARE(spy.count(), 1);
QCOMPARE(gMAppletHandleStub->stubCallCount("initPlaceHolder"), 1);
- QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<const MAppletId &>(0).instanceId(), (uint)5);
+ QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<MAppletId>(0).instanceId(), (uint)5);
QCOMPARE(gMAppletHandleStub->stubLastCallTo("initPlaceHolder").parameter<QString>(2), QString());
}
diff --git a/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.h b/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.h
index 3d17200b..55c6531d 100644
--- a/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.h
+++ b/tests/ut_mappletinstancemanager/ut_mappletinstancemanager.h
@@ -21,7 +21,6 @@
#define UT_MAPPLETINSTANCEMANAGER_H
#include <QObject>
-#include <MWidget>
#include "mappletinstancemanager.h"
class MApplication;
@@ -45,14 +44,14 @@ class AppletInstanceCollection : public QObject
public:
virtual ~AppletInstanceCollection();
int count() const;
- MWidget *at(int index) const;
+ QGraphicsWidget *at(int index) const;
public slots:
- void addInstance(MWidget *widget, MDataStore &store);
- void removeInstance(MWidget *widget);
+ void addInstance(QGraphicsWidget *widget, MDataStore &store);
+ void removeInstance(QGraphicsWidget *widget);
private:
- QList<MWidget *> instances;
+ QList<QGraphicsWidget *> instances;
};
class Ut_MAppletInstanceManager : public QObject
diff --git a/tests/ut_mappletinventory/ut_mappletinventory.cpp b/tests/ut_mappletinventory/ut_mappletinventory.cpp
index c7d9e90c..9c241509 100644
--- a/tests/ut_mappletinventory/ut_mappletinventory.cpp
+++ b/tests/ut_mappletinventory/ut_mappletinventory.cpp
@@ -56,9 +56,9 @@ TestAppletSource::~TestAppletSource()
delete sourceWidget;
}
-MWidget *TestAppletSource::widget()
+QGraphicsWidget *TestAppletSource::widget()
{
- return sourceWidget = new MWidget;
+ return sourceWidget = new QGraphicsWidget;
}
bool TestAppletSource::initialize(const QString &)
diff --git a/tests/ut_mappletinventory/ut_mappletinventory.h b/tests/ut_mappletinventory/ut_mappletinventory.h
index 23461247..ef301159 100644
--- a/tests/ut_mappletinventory/ut_mappletinventory.h
+++ b/tests/ut_mappletinventory/ut_mappletinventory.h
@@ -27,7 +27,7 @@
class MAppletInventory;
class MApplication;
class MApplicationWindow;
-class MWidget;
+class QGraphicsWidget;
class MMashupCanvas;
class MDesktopEntry;
@@ -41,7 +41,7 @@ public:
virtual ~TestAppletSource();
// methods derived from MAppletInstallationSourceInterface
virtual bool initialize(const QString &);
- virtual MWidget *widget();
+ virtual QGraphicsWidget *widget();
virtual void setMAppletInventoryInterface(MAppletInventoryInterface &installationSource);
//! For accessing applet inventory interface
MAppletInventoryInterface *appletInventoryInterface() const;
@@ -49,7 +49,7 @@ public:
private:
MAppletInventoryInterface *appletInventory;
- MWidget *sourceWidget;
+ QGraphicsWidget *sourceWidget;
};
class Ut_MAppletInventory : public QObject
diff --git a/tests/ut_mappletinventory/ut_mappletinventory.pro b/tests/ut_mappletinventory/ut_mappletinventory.pro
index 7dc5e93a..d52ffdd7 100644
--- a/tests/ut_mappletinventory/ut_mappletinventory.pro
+++ b/tests/ut_mappletinventory/ut_mappletinventory.pro
@@ -7,10 +7,10 @@ INCLUDEPATH += \
$$MSRCDIR/events
win32 {
- QMAKE_MOC = perl $${IN_PWD}\..\..\mmoc\mmoc
+ QMAKE_MOC = ..\..\mmoc\mmoc
} else {
PRE_TARGETDEPS += ../../mgen/mgen
- QMAKE_MOC = PATH=../../mgen:$$(PATH) $${IN_PWD}/../../mmoc/mmoc
+ QMAKE_MOC = PATH=../../mgen:$$(PATH) ../../mmoc/mmoc
}
MGEN_OUTDIR = .
diff --git a/tests/ut_mappletloader/ut_mappletloader.cpp b/tests/ut_mappletloader/ut_mappletloader.cpp
index aa5d483f..667b25a4 100644
--- a/tests/ut_mappletloader/ut_mappletloader.cpp
+++ b/tests/ut_mappletloader/ut_mappletloader.cpp
@@ -20,7 +20,7 @@
#include "ut_mappletloader.h"
#include <mappletloader.h>
-#include <MWidget>
+#include <QGraphicsWidget>
#include <mdatastore.h>
#include <mappletmetadata.h>
#include <mdataaccess.h>
@@ -50,11 +50,11 @@ public:
Q_EXPORT_PLUGIN2(testapplet, TestApplet)
-MWidget *gLastConstructedWidget = NULL;
+QGraphicsWidget *gLastConstructedWidget = NULL;
-MWidget *TestApplet::constructWidget(const MAppletMetaData &, MDataStore &, MDataAccess &)
+QGraphicsWidget *TestApplet::constructWidget(const MAppletMetaData &, MDataStore &, MDataAccess &)
{
- gLastConstructedWidget = new MWidget;
+ gLastConstructedWidget = new QGraphicsWidget;
return gLastConstructedWidget;
}
@@ -131,7 +131,7 @@ void Ut_MAppletLoader::testAppletLoading()
{
QPluginLoader_instance_return = new TestApplet;
- MWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
+ QGraphicsWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
QVERIFY(widget != NULL);
QCOMPARE(widget, gLastConstructedWidget);
@@ -141,7 +141,7 @@ void Ut_MAppletLoader::testAppletLoading()
void Ut_MAppletLoader::testAppletLoadingFailNullAppletObject()
{
// Returns NULL from QPluginLoader::instance()
- MWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
+ QGraphicsWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
QVERIFY(widget == NULL);
}
@@ -151,7 +151,7 @@ void Ut_MAppletLoader::testAppletLoadingFailWrongTypeAppletObject()
// Use an object that can't be cast to MAppletInterface
QPluginLoader_instance_return = new SomeQObject;
- MWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
+ QGraphicsWidget *widget = MAppletLoader::loadApplet(*metadata, *dataStore, *appletSettingsInterface);
QVERIFY(widget == NULL);
// Ensure that the loader still deletes the object even though it was of a wrong type
diff --git a/tests/ut_mappletloader/ut_mappletloader.h b/tests/ut_mappletloader/ut_mappletloader.h
index af04fd32..e963cb2a 100644
--- a/tests/ut_mappletloader/ut_mappletloader.h
+++ b/tests/ut_mappletloader/ut_mappletloader.h
@@ -34,7 +34,7 @@ class TestApplet : public QObject, public MAppletInterface
public:
// methods derived from MAppletInterface
- virtual MWidget *constructWidget(const MAppletMetaData &, MDataStore &, MDataAccess &);
+ virtual QGraphicsWidget *constructWidget(const MAppletMetaData &, MDataStore &, MDataAccess &);
// A flag to tell if we should use the deprecated or the new applet construction interface
static bool useDeprecatedInterface;
diff --git a/tests/ut_mappletrunner/ut_mappletrunner.cpp b/tests/ut_mappletrunner/ut_mappletrunner.cpp
index e329b2de..d0aac7ac 100644
--- a/tests/ut_mappletrunner/ut_mappletrunner.cpp
+++ b/tests/ut_mappletrunner/ut_mappletrunner.cpp
@@ -25,10 +25,10 @@
#include <mappletloader_stub.h>
#include <mappletid_stub.h>
#include <mappletsettings_stub.h>
-#include <MWidget>
#include <MWindow>
#include <MApplication>
#include <QGraphicsLinearLayout>
+#include <QGraphicsWidget>
#include <QtTest/QtTest>
// MWindow stubs (to prevent crashing)
@@ -53,7 +53,7 @@ void Ut_MAppletRunner::init()
meta = new MAppletMetaData("ut_mextensionrunner/ut_mextensionrunner.desktop");
gMAppletMetaDataStub->stubSetReturnValue("isValid", true);
- widget = new MWidget;
+ widget = new QGraphicsWidget;
gMAppletLoaderStub->stubSetReturnValue("loadApplet", widget);
}
@@ -102,7 +102,7 @@ void Ut_MAppletRunner::testInitializationFailInvalidMetadata()
void Ut_MAppletRunner::testInitializationFailConstructWidgetFails()
{
- gMAppletLoaderStub->stubSetReturnValue("loadApplet", (MWidget *)NULL);
+ gMAppletLoaderStub->stubSetReturnValue("loadApplet", (QGraphicsWidget *)NULL);
QCOMPARE(m_instance->init("servername", *meta, "appletId", "/tmp/applet.data"), false);
}
diff --git a/tests/ut_mappletrunner/ut_mappletrunner.h b/tests/ut_mappletrunner/ut_mappletrunner.h
index b4833b77..dd96b8af 100644
--- a/tests/ut_mappletrunner/ut_mappletrunner.h
+++ b/tests/ut_mappletrunner/ut_mappletrunner.h
@@ -25,7 +25,7 @@
class MAppletRunner;
class MAppletMetaData;
-class MWidget;
+class QGraphicsWidget;
// Test case must inherit QObject
class Ut_MAppletRunner: public QObject
@@ -36,7 +36,7 @@ private:
/** MAppletRunner instance under testing. */
MAppletRunner *m_instance;
MAppletMetaData *meta;
- MWidget *widget;
+ QGraphicsWidget *widget;
public:
static bool timerImmediateTimeout;
diff --git a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.cpp b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.cpp
index ae7c415c..1d8051ef 100644
--- a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.cpp
+++ b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.cpp
@@ -18,15 +18,18 @@
****************************************************************************/
#include "ut_mapplicationextensionarea.h"
+#include "mdatastore.h"
#include "mapplication.h"
#include "mapplicationextensionarea.h"
-#include "mapplicationextensionmanager.h"
+#include "mapplicationextensionmetadata.h"
+#include "mapplicationextensionmanager_stub.h"
#include <QtTest/QtTest>
// The test class
void Ut_MApplicationExtensionArea::init()
{
+ gMApplicationExtensionManagerStub->stubReset();
area = new MApplicationExtensionArea("testcanvas");
}
@@ -37,16 +40,40 @@ void Ut_MApplicationExtensionArea::cleanup()
void Ut_MApplicationExtensionArea::initTestCase()
{
- // MApplications must be created manually due to theme system changes
- static int argc = 1;
- static char *app_name[1] = { (char *) "./ut_mapplicationextensionarea" };
- app = new MApplication(argc, app_name);
}
void Ut_MApplicationExtensionArea::cleanupTestCase()
{
- delete app;
}
-QTEST_APPLESS_MAIN(Ut_MApplicationExtensionArea)
+void Ut_MApplicationExtensionArea::testInitialization()
+{
+ gMApplicationExtensionManagerStub->stubSetReturnValue("init", true);
+ QCOMPARE(area->init(), true);
+
+ gMApplicationExtensionManagerStub->stubSetReturnValue("init", false);
+ QCOMPARE(area->init(), false);
+}
+
+void Ut_MApplicationExtensionArea::testInProcessFilter()
+{
+ area->setInProcessFilter(QRegExp("test"));
+ QCOMPARE(gMApplicationExtensionManagerStub->stubCallCount("setInProcessFilter"), 1);
+ QCOMPARE(gMApplicationExtensionManagerStub->stubLastCallTo("setInProcessFilter").parameter<QRegExp>(0), QRegExp("test"));
+}
+void Ut_MApplicationExtensionArea::testOutOfProcessFilter()
+{
+ area->setOutOfProcessFilter(QRegExp("test"));
+ QCOMPARE(gMApplicationExtensionManagerStub->stubCallCount("setOutOfProcessFilter"), 1);
+ QCOMPARE(gMApplicationExtensionManagerStub->stubLastCallTo("setOutOfProcessFilter").parameter<QRegExp>(0), QRegExp("test"));
+}
+
+void Ut_MApplicationExtensionArea::testExtensions()
+{
+ QList<MApplicationExtensionInterface*> extensions;
+ gMApplicationExtensionManagerStub->stubSetReturnValue("extensions", extensions);
+ QCOMPARE(area->extensions(), extensions);
+}
+
+QTEST_APPLESS_MAIN(Ut_MApplicationExtensionArea)
diff --git a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.h b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.h
index 60709695..28070149 100644
--- a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.h
+++ b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.h
@@ -21,36 +21,33 @@
#define UT_MAPPLICATIONEXTENSIONAREA_
#include <QObject>
-#include <MWidgetView>
-#include "mapplicationextensionareamodel.h"
-#include "mapplicationextensionareastyle.h"
class MApplicationExtensionArea;
class MApplication;
-class MApplicationWindow;
class Ut_MApplicationExtensionArea : public QObject
{
Q_OBJECT
private:
- // TestApplicationExtensionArea is derived from MApplicationExtensionArea
+ // MApplicationExtensionArea for testing
MApplicationExtensionArea *area;
- // MApplication instance required by MWidget.
- MApplication *app;
private slots:
// Executed once before every test case
void init();
-
// Executed once after every test case
void cleanup();
-
// Executed once before first test case
void initTestCase();
-
// Executed once after last test case
void cleanupTestCase();
+
+ // Test cases
+ void testInitialization();
+ void testInProcessFilter();
+ void testOutOfProcessFilter();
+ void testExtensions();
};
#endif // UT_MAPPLICATIONEXTENSIONAREA_
diff --git a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.pro b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.pro
index 7e4fb92e..8ad34612 100644
--- a/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.pro
+++ b/tests/ut_mapplicationextensionarea/ut_mapplicationextensionarea.pro
@@ -9,13 +9,18 @@ INCLUDEPATH += \
# unit test and unit classes
SOURCES += \
ut_mapplicationextensionarea.cpp \
+ $$MSRCDIR/extensions/applicationextension/mapplicationextensionarea.cpp \
+ $$MSRCDIR/extensions/applicationextension/mextensionarea.cpp
# service classes
SOURCES += \
- $$STUBSDIR/stubbase.cpp \
+ $$STUBSDIR/stubbase.cpp
# unit test and unit classes
HEADERS += \
- ut_mapplicationextensionarea.h \
+ ut_mapplicationextensionarea.h \
+ $$MSRCDIR/extensions/applicationextension/mapplicationextensionarea.h \
+ $$MSRCDIR/extensions/applicationextension/mextensionarea.h \
+ $$MSRCDIR/extensions/applicationextension/mapplicationextensionmanager.h
include(../common_bot.pri)
diff --git a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp
index 75d03658..103540d8 100644
--- a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp
+++ b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.cpp
@@ -159,7 +159,6 @@ void Ut_MApplicationExtensionAreaView::testAddition()
delete widget2;
}
-
void Ut_MApplicationExtensionAreaView::testRemoval()
{
createWidgets(3);
@@ -173,4 +172,18 @@ void Ut_MApplicationExtensionAreaView::testRemoval()
QCOMPARE(widgetInLayout(createdWidgets.at(2)), true);
}
+void Ut_MApplicationExtensionAreaView::testApplyStyle()
+{
+ QGraphicsLinearLayout *layout = dynamic_cast<QGraphicsLinearLayout *>(extensionArea->layout());
+ QVERIFY(layout != NULL);
+
+ m_subject->modifiableStyle()->setLayoutOrientation(Qt::Horizontal);
+ m_subject->applyStyle();
+ QCOMPARE(layout->orientation(), Qt::Horizontal);
+
+ m_subject->modifiableStyle()->setLayoutOrientation(Qt::Vertical);
+ m_subject->applyStyle();
+ QCOMPARE(layout->orientation(), Qt::Vertical);
+}
+
QTEST_APPLESS_MAIN(Ut_MApplicationExtensionAreaView)
diff --git a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h
index 663a77cc..8b425039 100644
--- a/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h
+++ b/tests/ut_mapplicationextensionareaview/ut_mapplicationextensionareaview.h
@@ -69,6 +69,8 @@ private slots:
void testAddition();
// Test widget removal
void testRemoval();
+ // Test theme changes
+ void testApplyStyle();
private:
bool widgetInLayout(MWidget *widget);
diff --git a/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.cpp b/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.cpp
index 6ccb3dc3..b02ad687 100644
--- a/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.cpp
+++ b/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.cpp
@@ -18,7 +18,7 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <MWidget>
+#include <QGraphicsWidget>
#include <mapplicationextensionloader.h>
#include <mapplicationextensioninterface.h>
#include <mapplicationextensionmetadata.h>
@@ -39,7 +39,7 @@ bool GoodExtension::initialize(const QString &interface)
return success;
}
-MWidget *GoodExtension::widget()
+QGraphicsWidget *GoodExtension::widget()
{
return widget_;
}
diff --git a/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.h b/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.h
index 3437c040..4c380a77 100644
--- a/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.h
+++ b/tests/ut_mapplicationextensionloader/ut_mapplicationextensionloader.h
@@ -62,10 +62,10 @@ class GoodExtension : public QObject, public MApplicationExtensionInterface
public:
virtual bool initialize(const QString &interface);
- virtual MWidget *widget();
+ virtual QGraphicsWidget *widget();
bool success;
- MWidget *widget_;
+ QGraphicsWidget *widget_;
};
class MApplicationExtensionMetaData;
diff --git a/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.cpp b/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.cpp
index 87e1900d..e8c42b83 100644
--- a/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.cpp
+++ b/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.cpp
@@ -89,12 +89,12 @@ void SignalListener::extensionRemoved(MApplicationExtensionInterface *extension)
removedExtensions.append(qMakePair(extension, extensionName));
}
-void SignalListener::widgetCreated(MWidget* widget, MDataStore&)
+void SignalListener::widgetCreated(QGraphicsWidget* widget, MDataStore&)
{
createdWidgets.append(widget);
}
-void SignalListener::widgetRemoved(MWidget *widget)
+void SignalListener::widgetRemoved(QGraphicsWidget *widget)
{
removedWidgets.append(widget);
}
@@ -106,7 +106,7 @@ bool GoodExtension::initialize(const QString &interface)
return success;
}
-MWidget *GoodExtension::widget()
+QGraphicsWidget *GoodExtension::widget()
{
return widget_;
}
@@ -149,22 +149,26 @@ void Ut_MApplicationExtensionManager::cleanupTestCase()
{
}
-void Ut_MApplicationExtensionManager::setupTestSubject()
+void Ut_MApplicationExtensionManager::setupTestSubject(const QString &inProcessFilter, const QString &outOfProcessFilter)
{
delete manager;
- manager = NULL;
-
manager = new MApplicationExtensionManager(interfaceName);
+ if (!inProcessFilter.isEmpty()) {
+ manager->setInProcessFilter(QRegExp(inProcessFilter));
+ }
+ if (!outOfProcessFilter.isEmpty()) {
+ manager->setOutOfProcessFilter(QRegExp(outOfProcessFilter));
+ }
manager->init();
connect(this, SIGNAL(directoryChanged(QString)), manager, SLOT(updateAvailableExtensions(QString)));
connect(manager, SIGNAL(extensionInstantiated(MApplicationExtensionInterface *)), &signalListener, SLOT(extensionInstantiated(MApplicationExtensionInterface *)));
connect(manager, SIGNAL(extensionRemoved(MApplicationExtensionInterface *)), &signalListener, SLOT(extensionRemoved(MApplicationExtensionInterface *)));
- connect(manager, SIGNAL(widgetCreated(MWidget*, MDataStore&)), &signalListener, SLOT(widgetCreated(MWidget*, MDataStore&)));
- connect(manager, SIGNAL(widgetRemoved(MWidget*)), &signalListener, SLOT(widgetRemoved(MWidget*)));
+ connect(manager, SIGNAL(widgetCreated(QGraphicsWidget*, MDataStore&)), &signalListener, SLOT(widgetCreated(QGraphicsWidget*, MDataStore&)));
+ connect(manager, SIGNAL(widgetRemoved(QGraphicsWidget*)), &signalListener, SLOT(widgetRemoved(QGraphicsWidget*)));
}
-void Ut_MApplicationExtensionManager::setupGoodExtension(bool success, MWidget* widget, const QString &name)
+void Ut_MApplicationExtensionManager::setupGoodExtension(bool success, QGraphicsWidget* widget, const QString &name)
{
++goodExtensionCount;
GoodExtension *goodExtension = new GoodExtension;
@@ -261,14 +265,14 @@ void Ut_MApplicationExtensionManager::testInstantiateInProcessExtensionWhichSucc
QCOMPARE(manager->instantiateInProcessExtension("test"), true);
QCOMPARE(signalListener.instantiatedExtensions.count(), 1);
QCOMPARE(signalListener.instantiatedExtensions.at(0), extensions.at(0));
- QCOMPARE(signalListener.instantiatedExtensions.at(0)->widget(), (MWidget *)NULL);
+ QCOMPARE(signalListener.instantiatedExtensions.at(0)->widget(), (QGraphicsWidget *)NULL);
QCOMPARE(signalListener.createdWidgets.count(), 0);
QCOMPARE(initializedInterface, interfaceName);
}
void Ut_MApplicationExtensionManager::testInstantiateInProcessExtensionWhichSucceedsWithWidget()
{
- MWidget extensionWidget;
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
QCOMPARE(manager->instantiateInProcessExtension("test"), true);
QCOMPARE(signalListener.instantiatedExtensions.count(), 1);
@@ -287,7 +291,7 @@ void Ut_MApplicationExtensionManager::testInstantiateOutOfProcessExtension()
void Ut_MApplicationExtensionManager::testRemoveInProcessExtension()
{
- MWidget extensionWidget;
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
manager->instantiateInProcessExtension("test");
@@ -298,7 +302,7 @@ void Ut_MApplicationExtensionManager::testRemoveInProcessExtension()
void Ut_MApplicationExtensionManager::testRemoveNonExistentInProcessExtension()
{
- MWidget extensionWidget;
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
manager->instantiateInProcessExtension("test");
@@ -306,28 +310,46 @@ void Ut_MApplicationExtensionManager::testRemoveNonExistentInProcessExtension()
QCOMPARE(signalListener.removedExtensions.count(), 0);
}
-void Ut_MApplicationExtensionManager::testDisablingLoadingOfInProcessExtensions()
+void Ut_MApplicationExtensionManager::testInProcessExtensionFiltering()
{
- delete manager;
- manager = new MApplicationExtensionManager(interfaceName, false);
- connect(manager, SIGNAL(extensionInstantiated(MApplicationExtensionInterface *)), &signalListener, SLOT(extensionInstantiated(MApplicationExtensionInterface *)));
- QString desktopFile("test.desktop");
- gDefaultMApplicationExtensionMetaDataStub.stubSetReturnValue("runnerBinary", QString(""));
-
- MWidget extensionWidget;
+ const MApplicationExtensionMetaData metaData("test.desktop");
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
- // Instantiating extension would not load any extension, since extension loading of in process is diabled
- manager->instantiateExtension(desktopFile);
+ // Test that not allowing test.desktop in-process but allowing it out-of-process does nothing
+ gDefaultMApplicationExtensionMetaDataStub.stubSetReturnValue("runnerBinary", QString(""));
+ setupTestSubject("$^", "^test.desktop$");
+ manager->instantiateExtension(metaData);
QCOMPARE(signalListener.instantiatedExtensions.count(), 0);
+
+ // Test that allowing test.desktop in-process but not allowing it out-of-process instantiates the extension
+ setupTestSubject("^test.desktop$", "$^");
+ manager->instantiateExtension(metaData);
+ QCOMPARE(signalListener.instantiatedExtensions.count(), 1);
+}
+
+void Ut_MApplicationExtensionManager::testOutOfProcessExtensionFiltering()
+{
+ const MApplicationExtensionMetaData metaData("test.desktop");
+
+ // Test that not allowing test.desktop out-of-process but allowing it in-process does nothing
+ gDefaultMApplicationExtensionMetaDataStub.stubSetReturnValue("runnerBinary", QString("test"));
+ setupTestSubject("^test.desktop$", "$^");
+ manager->instantiateExtension(metaData);
+ QCOMPARE(signalListener.createdWidgets.count(), 0);
+
+ // Test that allowing test.desktop out-of-process but not allowing it in-process instantiates the extension
+ setupTestSubject("$^", "^test.desktop$");
+ manager->instantiateExtension(metaData);
+ QCOMPARE(signalListener.createdWidgets.count(), 1);
}
void Ut_MApplicationExtensionManager::testRequestForAllInProcessExtensionsReturnsAListOfExtensions()
{
- MWidget extensionWidget1;
+ QGraphicsWidget extensionWidget1;
setupGoodExtension(true, &extensionWidget1);
QCOMPARE(manager->instantiateInProcessExtension("test"), true);
- MWidget extensionWidget2;
+ QGraphicsWidget extensionWidget2;
setupGoodExtension(true, &extensionWidget2);
QCOMPARE(manager->instantiateInProcessExtension("testanother"), true);
@@ -346,7 +368,7 @@ void Ut_MApplicationExtensionManager::testAddWidgetInProcessExtensionWithoutWidg
void Ut_MApplicationExtensionManager::testAddWidgetInProcessExtensionWithWidget()
{
- MWidget extensionWidget;
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
manager->instantiateInProcessExtension("test");
QCOMPARE(signalListener.createdWidgets.count(), 1);
@@ -355,7 +377,7 @@ void Ut_MApplicationExtensionManager::testAddWidgetInProcessExtensionWithWidget(
void Ut_MApplicationExtensionManager::testRemoveWidgetInProcessExtension()
{
- MWidget extensionWidget;
+ QGraphicsWidget extensionWidget;
setupGoodExtension(true, &extensionWidget);
manager->instantiateInProcessExtension("test");
manager->removeInProcessExtension("test");
diff --git a/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.h b/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.h
index 3dc4fdce..506b93f3 100644
--- a/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.h
+++ b/tests/ut_mapplicationextensionmanager/ut_mapplicationextensionmanager.h
@@ -40,15 +40,15 @@ public slots:
void extensionRemoved(MApplicationExtensionInterface *extension);
- void widgetCreated(MWidget*, MDataStore&);
+ void widgetCreated(QGraphicsWidget*, MDataStore&);
- void widgetRemoved(MWidget* widget);
+ void widgetRemoved(QGraphicsWidget* widget);
public:
QList<MApplicationExtensionInterface *> instantiatedExtensions;
QList<QPair<MApplicationExtensionInterface *, QString> > removedExtensions;
- QList<MWidget*> createdWidgets;
- QList<MWidget*> removedWidgets;
+ QList<QGraphicsWidget*> createdWidgets;
+ QList<QGraphicsWidget*> removedWidgets;
};
/*!
@@ -79,10 +79,10 @@ class GoodExtension : public QObject, public MApplicationExtensionInterface
public:
virtual bool initialize(const QString &interface);
- virtual MWidget *widget();
+ virtual QGraphicsWidget *widget();
bool success;
- MWidget *widget_;
+ QGraphicsWidget *widget_;
QString name;
};
@@ -97,7 +97,7 @@ private:
/*!
* Sets up the test subject.
*/
- void setupTestSubject();
+ void setupTestSubject(const QString &inProcessFilter = QString(), const QString &outOfProcessFilter = QString());
int goodExtensionCount;
@@ -108,7 +108,7 @@ private:
* \param widget the widget that the extension returns.
* \param name name for the extension. If left empty, a name is generated automatically.
*/
- void setupGoodExtension(bool success = true, MWidget* widget = NULL, const QString &name = QString());
+ void setupGoodExtension(bool success = true, QGraphicsWidget* widget = NULL, const QString &name = QString());
QList<MApplicationExtensionInterface*> extensions;
@@ -160,8 +160,9 @@ private slots:
void testRemoveInProcessExtension();
void testRemoveNonExistentInProcessExtension();
- // Test disabling of loading inprocess extensions
- void testDisablingLoadingOfInProcessExtensions();
+ // Test filtering of in and out of process extensions
+ void testInProcessExtensionFiltering();
+ void testOutOfProcessExtensionFiltering();
// Test that manager returns list of instantiated in process extensions when requested.
void testRequestForAllInProcessExtensionsReturnsAListOfExtensions();
diff --git a/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.cpp b/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.cpp
index 771cb844..b791030f 100644
--- a/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.cpp
+++ b/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.cpp
@@ -24,9 +24,9 @@
#include <mapplicationextensionmetadata_stub.h>
#include <mapplicationextensionloader_stub.h>
#include <mappletid_stub.h>
-#include <MWidget>
#include <MWindow>
#include <MApplication>
+#include <QGraphicsWidget>
#include <QGraphicsLinearLayout>
#include <QtTest/QtTest>
@@ -46,7 +46,7 @@ bool TestExtension::initialize(const QString &interface)
return true;
}
-MWidget *TestExtension::widget()
+QGraphicsWidget *TestExtension::widget()
{
return widget_;
}
@@ -90,7 +90,7 @@ void Ut_MApplicationExtensionRunner::cleanupTestCase()
void Ut_MApplicationExtensionRunner::testInitializationSuccess()
{
- extension->widget_ = new MWidget;
+ extension->widget_ = new QGraphicsWidget;
QCOMPARE(m_instance->init("servername", *meta), true);
delete extension->widget_;
}
diff --git a/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.h b/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.h
index 3af54306..813eccdb 100644
--- a/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.h
+++ b/tests/ut_mapplicationextensionrunner/ut_mapplicationextensionrunner.h
@@ -26,15 +26,15 @@
class MApplicationExtensionRunner;
class MApplicationExtensionMetaData;
-class MWidget;
+class QGraphicsWidget;
class TestExtension : public QObject, public MApplicationExtensionInterface
{
public:
virtual bool initialize(const QString &interface);
- virtual MWidget *widget();
+ virtual QGraphicsWidget *widget();
- MWidget *widget_;
+ QGraphicsWidget *widget_;
};
// Test case must inherit QObject
diff --git a/tests/ut_mapplicationservice/ut_mapplicationservice.cpp b/tests/ut_mapplicationservice/ut_mapplicationservice.cpp
index 2f1eae8d..da5369e8 100644
--- a/tests/ut_mapplicationservice/ut_mapplicationservice.cpp
+++ b/tests/ut_mapplicationservice/ut_mapplicationservice.cpp
@@ -204,6 +204,7 @@ MApplicationServicePrivate::MApplicationServicePrivate(const QString &newService
serviceName(newServiceName),
registered(false),
instanceCounter(0),
+ q_ptr(0),
dBusConnection(QDBusConnection::sessionBus()),
mApp(MApplication::instance())
{
diff --git a/tests/ut_mapplicationwindow/ut_mapplicationwindow.h b/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
index ade21aba..81470c2b 100644
--- a/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
+++ b/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
@@ -73,7 +73,5 @@ private:
};
Q_DECLARE_METATYPE(MApplicationPage *);
-Q_DECLARE_METATYPE(M::OrientationAngle);
-Q_DECLARE_METATYPE(M::Orientation);
#endif
diff --git a/tests/ut_mcalendar/ut_mcalendar.cpp b/tests/ut_mcalendar/ut_mcalendar.cpp
index 148864af..789c4364 100644
--- a/tests/ut_mcalendar/ut_mcalendar.cpp
+++ b/tests/ut_mcalendar/ut_mcalendar.cpp
@@ -31,14 +31,14 @@ void Ut_MCalendar::initTestCase()
qap = new QCoreApplication(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QProcess process;
- process.start("sh -c \"dpkg -s libicu42 | grep Version | perl -pe 's/^Version:[[:space:]]*([^[[:space:]]+)$/$1/g'\"");
+ process.start("sh -c \"dpkg -s libicu-dev | grep Version | perl -pe 's/^Version:[[:space:]]*([^[[:space:]]+)$/$1/g'\"");
if (!process.waitForFinished()) {
- qDebug() << "cannot run process to check libicu42 package version , exiting ...";
+ qDebug() << "cannot run process to check libicu-dev package version , exiting ...";
exit(1);
}
icuPackageVersion = process.readAllStandardOutput();
icuPackageVersion.replace("\n", "");
- qDebug() << "libicu42 package version is:" << icuPackageVersion;
+ qDebug() << "libicu-dev package version is:" << icuPackageVersion;
}
void Ut_MCalendar::cleanupTestCase()
@@ -166,7 +166,11 @@ void Ut_MCalendar::testIcuFormatString_data()
<< "y年M月d日EEEE"
<< "H:mm"
<< "H:mm:ss"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "H:mm:ss z"
+#else
<< "HH:mm:ss z"
+#endif
<< "H時mm分ss秒 zzzz";
QTest::newRow("ja_JP, Japanese calendar")
@@ -180,7 +184,11 @@ void Ut_MCalendar::testIcuFormatString_data()
<< "Gy年M月d日EEEE"
<< "H:mm"
<< "H:mm:ss"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "H:mm:ss z"
+#else
<< "HH:mm:ss z"
+#endif
<< "H時mm分ss秒 zzzz";
QTest::newRow("zh_CN, Gregorian calendar")
@@ -193,7 +201,11 @@ void Ut_MCalendar::testIcuFormatString_data()
<< "y年M月d日"
<< "y年M月d日EEEE"
<< "ah:mm"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "ah:mm:ss"
+#else
<< "ahh:mm:ss"
+#endif
<< "zah时mm分ss秒"
<< "zzzzah时mm分ss秒";
@@ -406,10 +418,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromLocaltimeQDateTime_data()
<< QString("21. jul. 2008")
<< QString("21. juli 2008")
<< QString("måndag 21. juli 2008")
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << QString("12:31")
+ << QString("12:31:00")
+ << QString("12:31:00 GMT+03:00")
+ << QString("kl. 12:31:00 austeuropeisk sommartid");
+#else
<< QString("12.31")
<< QString("12.31.00")
<< QString("12.31.00 GMT+03.00")
<< QString("kl. 12.31.00 austeuropeisk sommartid");
+#endif
QTest::newRow("21.7.2008_nb_NO_Gregorian")
<< datetime
<< QString("nb_NO")
@@ -418,10 +437,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromLocaltimeQDateTime_data()
<< QString("21. juli 2008")
<< QString("21. juli 2008")
<< QString("mandag 21. juli 2008")
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << QString("12:31")
+ << QString("12:31:00")
+ << QString("12:31:00 GMT+03:00")
+ << QString("kl. 12:31:00 østeuropeisk sommertid");
+#else
<< QString("12.31")
<< QString("12.31.00")
<< QString("12.31.00 GMT+03.00")
<< QString("kl. 12.31.00 østeuropeisk sommertid");
+#endif
QTest::newRow("21.7.2008_no_NO_Gregorian")
<< datetime
<< QString("no_NO")
@@ -430,10 +456,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromLocaltimeQDateTime_data()
<< QString("21. juli 2008")
<< QString("21. juli 2008")
<< QString("mandag 21. juli 2008")
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << QString("12:31")
+ << QString("12:31:00")
+ << QString("12:31:00 GMT+03:00")
+ << QString("kl. 12:31:00 østeuropeisk sommertid");
+#else
<< QString("12.31")
<< QString("12.31.00")
<< QString("12.31.00 GMT+03.00")
<< QString("kl. 12.31.00 østeuropeisk sommertid");
+#endif
}
void Ut_MCalendar::testMLocaleCalendarConversionsFromLocaltimeQDateTime()
@@ -519,16 +552,28 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromUTCQDateTime_data()
<< datetime
<< QString("nn_NO")
<< MLocale::GregorianCalendar
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << QString("21.07.08 15:31")
+ << QString("21. juli 2008 15:31:00 GMT+03:00")
+ << QString("måndag 21. juli 2008 kl. 15:31:00 austeuropeisk sommartid");
+#else
<< QString("21.07.08 15.31")
<< QString("21. juli 2008 15.31.00 GMT+03.00")
<< QString("måndag 21. juli 2008 kl. 15.31.00 austeuropeisk sommartid");
+#endif
QTest::newRow("21.7.2008_nb_NO_Gregorian")
<< datetime
<< QString("nb_NO")
<< MLocale::GregorianCalendar
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << QString("21.07.08 15:31")
+ << QString("21. juli 2008 15:31:00 GMT+03:00")
+ << QString("mandag 21. juli 2008 kl. 15:31:00 østeuropeisk sommertid");
+#else
<< QString("21.07.08 15.31")
<< QString("21. juli 2008 15.31.00 GMT+03.00")
<< QString("mandag 21. juli 2008 kl. 15.31.00 østeuropeisk sommertid");
+#endif
}
void Ut_MCalendar::testMLocaleCalendarConversionsFromUTCQDateTime()
@@ -609,10 +654,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromMCalendar_data()
<< "21. jul. 2008"
<< "21. juli 2008"
<< "måndag 21. juli 2008"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "14:31"
+ << "14:31:00"
+ << "14:31:00 GMT+03:00"
+ << "kl. 14:31:00 austeuropeisk sommartid";
+#else
<< "14.31"
<< "14.31.00"
<< "14.31.00 GMT+03.00"
<< "kl. 14.31.00 austeuropeisk sommartid";
+#endif
QTest::newRow("21.7.2008_nb_NO_Gregorian")
<< QString("nb_NO")
@@ -624,10 +676,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromMCalendar_data()
<< "21. juli 2008"
<< "21. juli 2008"
<< "mandag 21. juli 2008"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "14:31"
+ << "14:31:00"
+ << "14:31:00 GMT+03:00"
+ << "kl. 14:31:00 østeuropeisk sommertid";
+#else
<< "14.31"
<< "14.31.00"
<< "14.31.00 GMT+03.00"
<< "kl. 14.31.00 østeuropeisk sommertid";
+#endif
QTest::newRow("21.7.2008_no_NO_Gregorian")
<< QString("no_NO")
@@ -639,10 +698,17 @@ void Ut_MCalendar::testMLocaleCalendarConversionsFromMCalendar_data()
<< "21. juli 2008"
<< "21. juli 2008"
<< "mandag 21. juli 2008"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >=4)
+ << "14:31"
+ << "14:31:00"
+ << "14:31:00 GMT+03:00"
+ << "kl. 14:31:00 østeuropeisk sommertid";
+#else
<< "14.31"
<< "14.31.00"
<< "14.31.00 GMT+03.00"
<< "kl. 14.31.00 østeuropeisk sommertid";
+#endif
}
void Ut_MCalendar::testMLocaleCalendarConversionsFromMCalendar()
@@ -926,7 +992,7 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "fi_FI"
<< "%r" // locale's 12-hour clock time (e.g., 11:11:04 PM)
- << "00 ip.";
+ << "12.25 ip.";
QTest::newRow("fi_FI %t")
<< MLocale::GregorianCalendar
<< 2008
@@ -1075,23 +1141,89 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 2008
<< 2
<< 3
- << 12
+ << 00
+ << 25
+ << 3
+ << "fi_FI"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "00";
+ QTest::newRow("fi_FI %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 01
+ << 25
+ << 3
+ << "fi_FI"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "01";
+ QTest::newRow("fi_FI %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 23
+ << 25
+ << 3
+ << "fi_FI"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "23";
+ QTest::newRow("fi_FI %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 24 // for the “date” command this would be invalid input but ICU wraps around
<< 25
<< 3
<< "fi_FI"
- << "%H" // hour (00..23)
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "00";
+ QTest::newRow("fi_FI %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 00
+ << 25
+ << 3
+ << "fi_FI"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
<< "12";
QTest::newRow("fi_FI %I")
<< MLocale::GregorianCalendar
<< 2008
<< 2
<< 3
+ << 01
+ << 25
+ << 3
+ << "fi_FI"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "01";
+ QTest::newRow("fi_FI %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 11
+ << 25
+ << 3
+ << "fi_FI"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "11";
+ QTest::newRow("fi_FI %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
<< 12
<< 25
<< 3
<< "fi_FI"
- << "%I" // hour (01..12)
- << "00";
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "12";
QTest::newRow("fi_FI %M")
<< MLocale::GregorianCalendar
<< 2008
@@ -1113,7 +1245,7 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "fi_FI"
<< "%R" // 24-hour hour and minute; same as %H:%M
- << "12:25";
+ << "12.25";
QTest::newRow("fi_FI %S")
<< MLocale::GregorianCalendar
<< 2008
@@ -1201,7 +1333,11 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "fi_FI"
<< "%Z" // Time-zone name, or no characters if no time zone is determinable
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM == 4 && U_ICU_VERSION_PATCHLEVEL_NUM >= 1)
+ << "(Suomi)";
+#else
<< "Suomi";
+#endif
// ************************************************************
QTest::newRow("en_GB %a")
@@ -1324,7 +1460,7 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "en_GB"
<< "%r" // locale's 12-hour clock time (e.g., 11:11:04 PM)
- << "00 PM";
+ << "12:25 PM";
QTest::newRow("en_GB %t")
<< MLocale::GregorianCalendar
<< 2008
@@ -1473,23 +1609,89 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 2008
<< 2
<< 3
- << 12
+ << 00
<< 25
<< 3
<< "en_GB"
- << "%H" // hour (00..23)
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "00";
+ QTest::newRow("en_GB %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 01
+ << 25
+ << 3
+ << "en_GB"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "01";
+ QTest::newRow("en_GB %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 23
+ << 25
+ << 3
+ << "en_GB"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "23";
+ QTest::newRow("en_GB %H")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 24 // for the “date” command this would be invalid input but ICU wraps around
+ << 25
+ << 3
+ << "en_GB"
+ << "%H" // Hour (24-hour clock), as a decimal number (00-23)
+ << "00";
+ QTest::newRow("en_GB %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 00
+ << 25
+ << 3
+ << "en_GB"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
<< "12";
QTest::newRow("en_GB %I")
<< MLocale::GregorianCalendar
<< 2008
<< 2
<< 3
+ << 01
+ << 25
+ << 3
+ << "en_GB"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "01";
+ QTest::newRow("en_GB %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
+ << 11
+ << 25
+ << 3
+ << "en_GB"
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "11";
+ QTest::newRow("en_GB %I")
+ << MLocale::GregorianCalendar
+ << 2008
+ << 2
+ << 3
<< 12
<< 25
<< 3
<< "en_GB"
- << "%I" // hour (01..12)
- << "00";
+ << "%I" // Hour (12-hour clock), as a decimal number (01-12)
+ << "12";
QTest::newRow("en_GB %M")
<< MLocale::GregorianCalendar
<< 2008
@@ -1612,7 +1814,11 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "de_DE"
<< "%Z" // Time-zone name, or no characters if no time zone is determinable
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM == 4 && U_ICU_VERSION_PATCHLEVEL_NUM >= 1)
+ << "(Finnland)";
+#else
<< "Finnland";
+#endif
// ************************************************************
QTest::newRow("fi_FI %R %Z")
<< MLocale::GregorianCalendar
@@ -1624,7 +1830,11 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "fi_FI"
<< "%R %Z"
- << "12:25 Suomi";
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM == 4 && U_ICU_VERSION_PATCHLEVEL_NUM >= 1)
+ << "12.25 (Suomi)";
+#else
+ << "12.25 Suomi";
+#endif
QTest::newRow("en_GB %R %Z")
<< MLocale::GregorianCalendar
<< 2008
@@ -1636,6 +1846,7 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< "en_GB"
<< "%R %Z"
<< "12:25 Finland Time";
+
QTest::newRow("de_DE %R %Z")
<< MLocale::GregorianCalendar
<< 2008
@@ -1646,7 +1857,11 @@ void Ut_MCalendar::testPosixFormatPattern_data()
<< 3
<< "de_DE"
<< "%R %Z"
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM == 4 && U_ICU_VERSION_PATCHLEVEL_NUM >= 1)
+ << "12:25 (Finnland)";
+#else
<< "12:25 Finnland";
+#endif
}
void Ut_MCalendar::testPosixFormatPattern()
diff --git a/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.cpp b/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.cpp
index c6869016..6a55eefb 100644
--- a/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.cpp
+++ b/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.cpp
@@ -31,12 +31,12 @@ TestExtendingBackgroundView::TestExtendingBackgroundView(MWidgetController *cont
{
}
-QRectF TestExtendingBackgroundView::boundingRect()
+QRectF TestExtendingBackgroundView::boundingRect() const
{
return MExtendingBackgroundView::boundingRect();
}
-QRectF TestExtendingBackgroundView::geometry()
+QRectF TestExtendingBackgroundView::geometry() const
{
return MExtendingBackgroundView::geometry();
}
diff --git a/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.h b/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.h
index 5dbd7295..493f5ebd 100644
--- a/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.h
+++ b/tests/ut_mextendingbackgroundview/ut_mextendingbackgroundview.h
@@ -37,8 +37,8 @@ class TestExtendingBackgroundView : public MExtendingBackgroundView
public:
TestExtendingBackgroundView(MWidgetController *controller);
- QRectF boundingRect();
- QRectF geometry();
+ QRectF boundingRect() const;
+ QRectF geometry() const;
MExtendingBackgroundStyle *modifiableStyle();
};
diff --git a/tests/ut_mextensionhandle/ut_mextensionhandle.pro b/tests/ut_mextensionhandle/ut_mextensionhandle.pro
index 116874b1..1e660732 100644
--- a/tests/ut_mextensionhandle/ut_mextensionhandle.pro
+++ b/tests/ut_mextensionhandle/ut_mextensionhandle.pro
@@ -7,10 +7,10 @@ INCLUDEPATH += \
QT += xml
win32 {
- QMAKE_MOC = perl $${IN_PWD}\..\..\mmoc\mmoc
+ QMAKE_MOC = ..\..\mmoc\mmoc
} else {
PRE_TARGETDEPS += ../../mgen/mgen
- QMAKE_MOC = PATH=../../mgen:$$(PATH) $${IN_PWD}/../../mmoc/mmoc
+ QMAKE_MOC = PATH=../../mgen:$$(PATH) ../../mmoc/mmoc
}
MGEN_OUTDIR = .
diff --git a/tests/ut_mflowlayoutpolicy/ut_mflowlayoutpolicy.cpp b/tests/ut_mflowlayoutpolicy/ut_mflowlayoutpolicy.cpp
index 5a6ceb11..54f4afab 100644
--- a/tests/ut_mflowlayoutpolicy/ut_mflowlayoutpolicy.cpp
+++ b/tests/ut_mflowlayoutpolicy/ut_mflowlayoutpolicy.cpp
@@ -58,6 +58,7 @@ Ut_MFlowLayoutPolicy::Ut_MFlowLayoutPolicy()
, m_mockItem100(0)
, m_mockItem200(0)
, m_mockItem300(0)
+ , m_form(0)
{ }
Ut_MFlowLayoutPolicy::~Ut_MFlowLayoutPolicy()
diff --git a/tests/ut_mfreestylelayoutpolicy/ut_mfreestylelayoutpolicy.cpp b/tests/ut_mfreestylelayoutpolicy/ut_mfreestylelayoutpolicy.cpp
index 62b57bff..9e932615 100644
--- a/tests/ut_mfreestylelayoutpolicy/ut_mfreestylelayoutpolicy.cpp
+++ b/tests/ut_mfreestylelayoutpolicy/ut_mfreestylelayoutpolicy.cpp
@@ -57,6 +57,7 @@ Ut_MFreestyleLayoutPolicy::Ut_MFreestyleLayoutPolicy()
, m_mockItem100(0)
, m_mockItem200(0)
, m_mockItem300(0)
+ , m_form(0)
{ }
Ut_MFreestyleLayoutPolicy::~Ut_MFreestyleLayoutPolicy()
diff --git a/tests/ut_mgridlayoutpolicy/ut_mgridlayoutpolicy.cpp b/tests/ut_mgridlayoutpolicy/ut_mgridlayoutpolicy.cpp
index d67fddca..1c81903c 100644
--- a/tests/ut_mgridlayoutpolicy/ut_mgridlayoutpolicy.cpp
+++ b/tests/ut_mgridlayoutpolicy/ut_mgridlayoutpolicy.cpp
@@ -47,6 +47,7 @@ Ut_MGridLayoutPolicy::Ut_MGridLayoutPolicy()
, m_mockItem200(0)
, m_mockItem300(0)
, m_mockItem400(0)
+ , m_form(0)
{ }
Ut_MGridLayoutPolicy::~Ut_MGridLayoutPolicy()
diff --git a/tests/ut_mimagewidget/ut_duiimagewidget-test.png b/tests/ut_mimagewidget/ut_mimagewidget-test.png
index 6c86c6a2..6c86c6a2 100644
--- a/tests/ut_mimagewidget/ut_duiimagewidget-test.png
+++ b/tests/ut_mimagewidget/ut_mimagewidget-test.png
Binary files differ
diff --git a/tests/ut_mimagewidget/ut_mimagewidget.cpp b/tests/ut_mimagewidget/ut_mimagewidget.cpp
index af6bfa8a..5df02cce 100644
--- a/tests/ut_mimagewidget/ut_mimagewidget.cpp
+++ b/tests/ut_mimagewidget/ut_mimagewidget.cpp
@@ -29,6 +29,11 @@
#include "ut_mimagewidget.h"
+Ut_MImageWidget::Ut_MImageWidget() :
+ m_subject(0)
+{
+}
+
void Ut_MImageWidget::initTestCase()
{
QImage img(qApp->applicationDirPath() + "/ut_mimagewidget-test.png");
diff --git a/tests/ut_mimagewidget/ut_mimagewidget.h b/tests/ut_mimagewidget/ut_mimagewidget.h
index 36a14c0f..d6549614 100644
--- a/tests/ut_mimagewidget/ut_mimagewidget.h
+++ b/tests/ut_mimagewidget/ut_mimagewidget.h
@@ -28,6 +28,8 @@ class MImageWidget;
class Ut_MImageWidget : public QObject
{
Q_OBJECT
+public:
+ Ut_MImageWidget();
private slots:
void initTestCase();
diff --git a/tests/ut_minputmethodstate/ut_minputmethodstate.cpp b/tests/ut_minputmethodstate/ut_minputmethodstate.cpp
index 92ba8c5d..efb50e38 100644
--- a/tests/ut_minputmethodstate/ut_minputmethodstate.cpp
+++ b/tests/ut_minputmethodstate/ut_minputmethodstate.cpp
@@ -22,8 +22,6 @@
#include "ut_minputmethodstate.h"
#include "minputmethodstate.h"
-Q_DECLARE_METATYPE(M::OrientationAngle)
-
void Ut_MInputMethodState::initTestCase()
{
qRegisterMetaType<M::OrientationAngle>("M::OrientationAngle");
diff --git a/tests/ut_mlayout/ut_mlayout.cpp b/tests/ut_mlayout/ut_mlayout.cpp
index 1a4b33d7..154161c3 100644
--- a/tests/ut_mlayout/ut_mlayout.cpp
+++ b/tests/ut_mlayout/ut_mlayout.cpp
@@ -117,6 +117,7 @@ MWindow *appWin;
Ut_MLayout::Ut_MLayout() :
m_button(0),
+ m_form(0),
m_scene(0),
m_proxy(0)
{
@@ -2111,13 +2112,17 @@ void Ut_MLayout::testLayoutAddItemWithTwoPolicies()
// Neither of the two policies should have any items at the beginning:
for (int i = 0; i <= 1; ++i) {
if (policyTypes[i] == "grid") {
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[i])->rowCount(), 0);
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[i])->columnCount(), 0);
} else if (policyTypes[i] == "linearHorizontal" || policyTypes[i] == "linearVertical") {
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MLinearLayoutPolicy *>(policies[i])->count(), 0);
} else if (policyTypes[i] == "flow") {
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MFlowLayoutPolicy *>(policies[i])->count(), 0);
} else if (policyTypes[i] == "freestyle") {
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->count(), 0);
} else
QVERIFY(false); // should never happen
@@ -2140,16 +2145,16 @@ void Ut_MLayout::testLayoutAddItemWithTwoPolicies()
if (policyTypes[0] == "grid") {
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[0])->rowCount(), 1);
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[0])->columnCount(), 1);
- QVERIFY(NULL != dynamic_cast<MGridLayoutPolicy *>(policies[0])->itemAt(0, 0));
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[0])->itemAt(0, 0));
} else if (policyTypes[0] == "linearHorizontal" || policyTypes[0] == "linearVertical") {
QCOMPARE(dynamic_cast<MLinearLayoutPolicy *>(policies[0])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MLinearLayoutPolicy *>(policies[0])->itemAt(0));
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[0])->itemAt(0));
} else if (policyTypes[0] == "flow") {
QCOMPARE(dynamic_cast<MFlowLayoutPolicy *>(policies[0])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFlowLayoutPolicy *>(policies[0])->itemAt(0));
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[0])->itemAt(0));
} else if (policyTypes[0] == "freestyle") {
QCOMPARE(dynamic_cast<MFreestyleLayoutPolicy *>(policies[0])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFreestyleLayoutPolicy *>(policies[0])->itemAt(0));
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[0])->itemAt(0));
} else
QVERIFY(false); // should never happen
@@ -2272,13 +2277,13 @@ void Ut_MLayout::testLayoutRemoveItemWithTwoPolicies()
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[i])->columnCount(), 1);
} else if (policyTypes[i] == "linearHorizontal" || policyTypes[i] == "linearVertical") {
QCOMPARE(dynamic_cast<MLinearLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MLinearLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[i])->itemAt(0));
} else if (policyTypes[i] == "flow") {
QCOMPARE(dynamic_cast<MFlowLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFlowLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[i])->itemAt(0));
} else if (policyTypes[i] == "freestyle") {
QCOMPARE(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->itemAt(0));
} else
QVERIFY(false); // should never happen
}
@@ -2318,20 +2323,24 @@ void Ut_MLayout::testLayoutRemoveItemWithTwoPolicies()
// check whether the item has been again been added correctly to both policies:
for (int i = 0; i <= 1; ++i) {
QCOMPARE(policies[i]->count(), 1);
- QVERIFY(NULL != policies[i]->itemAt(0));
+ QVERIFY(policies[i]->itemAt(0));
if (policyTypes[i] == "grid") {
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[i])->rowCount(), 1);
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[i])->columnCount(), 1);
- QVERIFY(NULL != dynamic_cast<MGridLayoutPolicy *>(policies[i])->itemAt(0, 0));
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[i])->itemAt(0, 0));
} else if (policyTypes[i] == "linearHorizontal" || policyTypes[i] == "linearVertical") {
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MLinearLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MLinearLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[i])->itemAt(0));
} else if (policyTypes[i] == "flow") {
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MFlowLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFlowLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[i])->itemAt(0));
} else if (policyTypes[i] == "freestyle") {
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i]));
QCOMPARE(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->itemAt(0));
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[i])->itemAt(0));
} else
QVERIFY(false); // should never happen
}
@@ -2355,10 +2364,10 @@ void Ut_MLayout::testLayoutRemoveItemWithTwoPolicies()
if (policyTypes[1] == "grid") {
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[1])->rowCount(), 1);
QCOMPARE(dynamic_cast<MGridLayoutPolicy *>(policies[1])->columnCount(), 1);
- QVERIFY(NULL != dynamic_cast<MGridLayoutPolicy *>(policies[1])->itemAt(0, 0));
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[1])->itemAt(0, 0));
} else if (policyTypes[1] == "linearHorizontal" || policyTypes[1] == "linearVertical") {
QCOMPARE(dynamic_cast<MLinearLayoutPolicy *>(policies[1])->count(), 1);
- QVERIFY(NULL != dynamic_cast<MLinearLayoutPolicy *>(policies[1])->itemAt(0));
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[1])->itemAt(0));
} else if (policyTypes[1] == "flow") {
QCOMPARE(dynamic_cast<MFlowLayoutPolicy *>(policies[1])->count(), 1);
} else if (policyTypes[1] == "freestyle") {
@@ -2477,13 +2486,16 @@ void Ut_MLayout::testLayoutItemPositionRestoreWhenSwitchingPolicies()
if (policyTypes[policyIndex] == "grid") {
int row = i % 3;
int col = i / 3;
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[policyIndex]));
dynamic_cast<MGridLayoutPolicy *>(policies[policyIndex])->addItem(
widgets[widgetIndex], row, col);
qApp->processEvents();
} else if (policyTypes[policyIndex] == "linearHorizontal"
|| policyTypes[policyIndex] == "linearVertical") {
+ QVERIFY(dynamic_cast<MLinearLayoutPolicy *>(policies[policyIndex]));
dynamic_cast<MLinearLayoutPolicy *>(policies[policyIndex])->addItem(widgets[widgetIndex]);
} else if (policyTypes[policyIndex] == "flow") {
+ QVERIFY(dynamic_cast<MFlowLayoutPolicy *>(policies[policyIndex]));
dynamic_cast<MFlowLayoutPolicy *>(policies[policyIndex])->addItem(widgets[widgetIndex]);
} else if (policyTypes[policyIndex] == "freestyle") {
// I use a geometry with a fixed width and height here on purpose.
@@ -2496,6 +2508,7 @@ void Ut_MLayout::testLayoutItemPositionRestoreWhenSwitchingPolicies()
// already existing item, the layout policy should move
// the items so that they don't overlap anymore.
QRectF geom(20.0, 20.0, 20, 20.0);
+ QVERIFY(dynamic_cast<MFreestyleLayoutPolicy *>(policies[policyIndex]));
dynamic_cast<MFreestyleLayoutPolicy *>(policies[policyIndex])->addItemAtGeometry(
widgets[widgetIndex], geom);
} else
@@ -2613,6 +2626,7 @@ void Ut_MLayout::testLayoutGeometryOfItemsAddedToInactivePolicies()
if (policyTypes[policyIndex] == "grid") {
int row = i % 3;
int col = i / 3;
+ QVERIFY(dynamic_cast<MGridLayoutPolicy *>(policies[policyIndex]));
dynamic_cast<MGridLayoutPolicy *>(policies[policyIndex])->addItem(
widgets[widgetIndex], row, col);
qApp->processEvents();
diff --git a/tests/ut_mlinearlayoutpolicy/ut_mlinearlayoutpolicy.cpp b/tests/ut_mlinearlayoutpolicy/ut_mlinearlayoutpolicy.cpp
index c813ca80..3c5ee049 100644
--- a/tests/ut_mlinearlayoutpolicy/ut_mlinearlayoutpolicy.cpp
+++ b/tests/ut_mlinearlayoutpolicy/ut_mlinearlayoutpolicy.cpp
@@ -47,6 +47,7 @@ Ut_MLinearLayoutPolicy::Ut_MLinearLayoutPolicy()
, m_mockItem200(0)
, m_mockItem300(0)
, m_mockItem400(0)
+ , m_form(0)
{ }
Ut_MLinearLayoutPolicy::~Ut_MLinearLayoutPolicy()
diff --git a/tests/ut_mlogicalvalues/ut_mlogicalvalues.cpp b/tests/ut_mlogicalvalues/ut_mlogicalvalues.cpp
index bb29ee04..4af75790 100644
--- a/tests/ut_mlogicalvalues/ut_mlogicalvalues.cpp
+++ b/tests/ut_mlogicalvalues/ut_mlogicalvalues.cpp
@@ -23,6 +23,7 @@
#include "ut_mlogicalvalues.h"
Ut_MLogicalValues::Ut_MLogicalValues()
+ : m_subject(NULL)
{
}
diff --git a/tests/ut_mphysics2dpanning/ut_mphysics2dpanning.cpp b/tests/ut_mphysics2dpanning/ut_mphysics2dpanning.cpp
index c2b0b403..f92aa36c 100644
--- a/tests/ut_mphysics2dpanning/ut_mphysics2dpanning.cpp
+++ b/tests/ut_mphysics2dpanning/ut_mphysics2dpanning.cpp
@@ -358,13 +358,16 @@ public:
integratingAction(actionType type,
QPointF value) :
type(type),
+ value_int(0),
value_QPointF(value) {}
integratingAction(actionType type,
QSizeF value) :
type(type),
+ value_int(0),
value_QSizeF(value) {}
integratingAction(actionType type) :
- type(type) {}
+ type(type),
+ value_int(0) {}
enum actionType type;
int value_int;
diff --git a/tests/ut_mremoteaction/ut_mremoteaction.cpp b/tests/ut_mremoteaction/ut_mremoteaction.cpp
index 1b7091cc..1c4aa3b9 100644
--- a/tests/ut_mremoteaction/ut_mremoteaction.cpp
+++ b/tests/ut_mremoteaction/ut_mremoteaction.cpp
@@ -31,6 +31,7 @@ QList< QList<QVariant> > Ut_MRemoteAction::callArguments;
// MActionPrivate stubs
MActionPrivate::MActionPrivate()
+ : location(MAction::EveryLocation), styleAction(false), q_ptr(0)
{
}
diff --git a/tests/ut_mrichtextedit/ut_mrichtextedit.cpp b/tests/ut_mrichtextedit/ut_mrichtextedit.cpp
new file mode 100644
index 00000000..159b8612
--- /dev/null
+++ b/tests/ut_mrichtextedit/ut_mrichtextedit.cpp
@@ -0,0 +1,313 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+#include <QTest>
+#include <QTextCursor>
+#include <QInputMethodEvent>
+#include <QGraphicsSceneMouseEvent>
+#include <QString>
+#include <QClipboard>
+#include "ut_mrichtextedit.h"
+#include <MApplication>
+#include <MApplicationWindow>
+#include <MRichTextEdit>
+
+/*!
+ * Called once before the first testcase is run.
+ */
+void Ut_MRichTextEdit::initTestCase()
+{
+ static int dummyArgc = 1;
+ static char *dummyArgv[1] = { (char *) "./ut_mrichtextedit" };
+
+ // prevent loading of minputcontext because we don't need it
+ MApplication::setLoadMInputContext(false);
+
+ m_app = new MApplication(dummyArgc, dummyArgv);
+ m_appWindow = new MApplicationWindow;
+}
+
+/*!
+ * Called once after the last testcase has finished.
+ */
+void Ut_MRichTextEdit::cleanupTestCase()
+{
+ delete m_appWindow;
+ m_appWindow = 0;
+ delete m_app;
+ m_app = 0;
+}
+
+/*!
+ * Called before each testcase.
+ */
+void Ut_MRichTextEdit::init()
+{
+ m_subject = new MRichTextEdit();
+}
+
+/*!
+ * Called after each testcase.
+ */
+void Ut_MRichTextEdit::cleanup()
+{
+ delete m_subject;
+ m_subject = 0;
+}
+
+/*!
+ * Test SetFontBold.
+ */
+void Ut_MRichTextEdit::testSetFontBold()
+{
+ QFont curFont = m_subject->currentFont();
+ bool curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, false);
+
+ QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_B, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+ curFont = m_subject->currentFont();
+ curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, true);
+
+ delete event;
+ event = 0;
+}
+
+/*!
+ * Test SetFontItalic.
+ */
+void Ut_MRichTextEdit::testSetFontItalic()
+{
+ QFont curFont = m_subject->currentFont();
+ bool curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, false);
+
+ QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_I, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+ curFont = m_subject->currentFont();
+ curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, true);
+
+ delete event;
+ event = 0;
+}
+
+/*!
+ * Test SetFontUnderline.
+ */
+void Ut_MRichTextEdit::testSetFontUnderline()
+{
+ QFont curFont = m_subject->currentFont();
+ bool curUnderlineStyle = curFont.underline();
+ QCOMPARE(curUnderlineStyle, false);
+
+ QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_U, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+ curFont = m_subject->currentFont();
+ curUnderlineStyle = curFont.underline();
+ QCOMPARE(curUnderlineStyle, true);
+
+ delete event;
+ event = 0;
+}
+
+/*!
+ * Test Copy, Paste Rich Text.
+ */
+void Ut_MRichTextEdit::testCopyPaste()
+{
+ const char *text = "abcde";
+ m_subject->setText(text);
+ m_subject->setSelection(0, 3, false);
+
+ QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ QClipboard *clipboard = QApplication::clipboard();
+ const QMimeData *mimeData = clipboard->mimeData();
+
+ bool hasHtml = mimeData->hasHtml();
+ QCOMPARE(hasHtml, true);
+
+ QString htmlText = "<b>bold</b>";
+ m_subject->document()->setHtml(htmlText);
+ m_subject->setSelection(0, 4, false);
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ htmlText = "text";
+ m_subject->document()->setHtml(htmlText);
+
+ QFont curFont = m_subject->currentFont();
+ bool curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, false);
+ delete event;
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ curFont = m_subject->currentFont();
+ curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, true);
+ delete event;
+
+ htmlText = "<i>italic</i>";
+ m_subject->document()->setHtml(htmlText);
+ m_subject->setSelection(0, 4, false);
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ htmlText = "text";
+ m_subject->document()->setHtml(htmlText);
+
+ curFont = m_subject->currentFont();
+ bool curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, false);
+ delete event;
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ curFont = m_subject->currentFont();
+ curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, true);
+ delete event;
+ event = 0;
+}
+
+/*!
+ * Test Cut Rich Text.
+ */
+void Ut_MRichTextEdit::testCut()
+{
+ QString htmlText = "<b>bold</b>";
+ m_subject->document()->setHtml(htmlText);
+ m_subject->setSelection(0, 4, false);
+
+ QKeyEvent *event = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ htmlText = "text";
+ m_subject->document()->setHtml(htmlText);
+
+ QFont curFont = m_subject->currentFont();
+ bool curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, false);
+ delete event;
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ curFont = m_subject->currentFont();
+ curBoldStyle = curFont.bold();
+ QCOMPARE(curBoldStyle, true);
+ delete event;
+
+ htmlText = "<i>italic</i>";
+ m_subject->document()->setHtml(htmlText);
+ m_subject->setSelection(0, 4, false);
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ htmlText = "text";
+ m_subject->document()->setHtml(htmlText);
+
+ curFont = m_subject->currentFont();
+ bool curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, false);
+ delete event;
+
+ event = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, QString(""));
+ m_subject->keyPressEvent(event);
+
+ curFont = m_subject->currentFont();
+ curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, true);
+ delete event;
+ event = 0;
+}
+
+/*!
+ * Test style in preedit mode.
+ */
+void Ut_MRichTextEdit::testStyleOnPreedit()
+{
+ QString htmlText = "<b>bold </b><i>italic </i>";
+ m_subject->document()->setHtml(htmlText);
+
+ QString text("preedit mode text");
+ QInputMethodEvent event1(text, QList<QInputMethodEvent::Attribute>());
+
+ m_subject->inputMethodEvent(&event1);
+
+ QFont curFont = m_subject->currentFont();
+ bool curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, true);
+
+ event1.setCommitString("Test preedit style");
+ m_subject->inputMethodEvent(&event1);
+
+ curFont = m_subject->currentFont();
+ curItalicStyle = curFont.italic();
+ QCOMPARE(curItalicStyle, true);
+
+ m_subject->setText("text");
+ text = QString("preedit mode");
+ QInputMethodEvent event2(text, QList<QInputMethodEvent::Attribute>());
+
+ int eventCursorPosition = 1;
+ QGraphicsSceneMouseEvent *mouseEvent = new QGraphicsSceneMouseEvent();
+ m_subject->handleMouseRelease(eventCursorPosition, mouseEvent);
+ m_subject->setFontUnderline(true);
+ m_subject->inputMethodEvent(&event2);
+
+ text = QString("a");
+ QInputMethodEvent event3(text, QList<QInputMethodEvent::Attribute>());
+ m_subject->inputMethodEvent(&event3);
+
+ curFont = m_subject->currentFont();
+ bool curUnderlineStyle = curFont.underline();
+ QCOMPARE(curUnderlineStyle, true);
+
+ m_subject->setText("text");
+ text = QString("preedit mode");
+ QInputMethodEvent event4(text, QList<QInputMethodEvent::Attribute>());
+
+ m_subject->handleMouseRelease(eventCursorPosition, mouseEvent);
+ m_subject->setFontUnderline(true);
+ m_subject->inputMethodEvent(&event4);
+ event4.setCommitString(" ");
+ m_subject->inputMethodEvent(&event4);
+
+ QTextCursor cursor = m_subject->textCursor();
+ cursor.setPosition(0);
+ curFont = m_subject->currentFont();
+ curUnderlineStyle = curFont.underline();
+ QCOMPARE(curUnderlineStyle, true);
+
+ delete mouseEvent;
+ mouseEvent = 0;
+}
+
+QTEST_APPLESS_MAIN(Ut_MRichTextEdit);
+
diff --git a/src/corelib/style/mwidgetslideinanimationstyle.h b/tests/ut_mrichtextedit/ut_mrichtextedit.h
index 19e264d2..822e30ce 100644
--- a/src/corelib/style/mwidgetslideinanimationstyle.h
+++ b/tests/ut_mrichtextedit/ut_mrichtextedit.h
@@ -17,27 +17,40 @@
**
****************************************************************************/
-#ifndef MWIDGETSLIDEINANIMATIONSTYLE_H
-#define MWIDGETSLIDEINANIMATIONSTYLE_H
+#ifndef UT_MRICHTEXTEDIT_H
+#define UT_MRICHTEXTEDIT_H
-#include <mabstractwidgetanimationstyle.h>
-#include <QEasingCurve>
+#include <QtTest>
+#include <QObject>
-//! \internal
-class MWidgetSlideInAnimationStyle : public MAbstractWidgetAnimationStyle
+class MApplication;
+class MApplicationWindow;
+class MRichTextEdit;
+
+Q_DECLARE_METATYPE(MRichTextEdit *);
+
+class Ut_MRichTextEdit : public QObject
{
Q_OBJECT
- M_STYLE_INTERNAL(MWidgetSlideInAnimationStyle)
- M_STYLE_ATTRIBUTE(QString, from, From)
- M_STYLE_ATTRIBUTE(QEasingCurve, easingCurve, EasingCurve)
-};
+private:
+ MRichTextEdit *m_subject;
+ MApplication *m_app;
+ MApplicationWindow *m_appWindow;
-class MWidgetSlideInAnimationStyleContainer : public MAbstractWidgetAnimationStyleContainer
-{
- M_STYLE_CONTAINER_INTERNAL(MWidgetSlideInAnimationStyle)
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+ void testSetFontBold();
+ void testSetFontItalic();
+ void testSetFontUnderline();
+ void testCopyPaste();
+ void testCut();
+ void testStyleOnPreedit();
};
-//! \internal_end
#endif
diff --git a/tests/ut_mrichtextedit/ut_mrichtextedit.pro b/tests/ut_mrichtextedit/ut_mrichtextedit.pro
new file mode 100644
index 00000000..f37c30b3
--- /dev/null
+++ b/tests/ut_mrichtextedit/ut_mrichtextedit.pro
@@ -0,0 +1,13 @@
+include(../common_top.pri)
+
+TARGET = ut_mrichtextedit
+
+SOURCES += \
+ ut_mrichtextedit.cpp \
+
+HEADERS += \
+ ut_mrichtextedit.h \
+
+INCLUDEPATH += $$MSRCDIR/corelib/widgets/
+
+include(../common_bot.pri)
diff --git a/tests/ut_mscenemanager/ut_mscenemanager.h b/tests/ut_mscenemanager/ut_mscenemanager.h
index ef70990f..a8075049 100644
--- a/tests/ut_mscenemanager/ut_mscenemanager.h
+++ b/tests/ut_mscenemanager/ut_mscenemanager.h
@@ -78,6 +78,4 @@ private:
MComponentData* m_componentData;
};
-Q_DECLARE_METATYPE(M::Orientation)
-
#endif
diff --git a/tests/ut_mserviceaction/ut_mserviceaction.cpp b/tests/ut_mserviceaction/ut_mserviceaction.cpp
index 8b2d1222..838dcdfb 100644
--- a/tests/ut_mserviceaction/ut_mserviceaction.cpp
+++ b/tests/ut_mserviceaction/ut_mserviceaction.cpp
@@ -26,6 +26,7 @@
// MActionPrivate stubs
MActionPrivate::MActionPrivate()
+ : location(MAction::EveryLocation), styleAction(false), q_ptr(0)
{
}
diff --git a/tests/ut_mservicefwgen/ut_mservicefwgen.cpp b/tests/ut_mservicefwgen/ut_mservicefwgen.cpp
index ae4f7b51..7964ed0c 100644
--- a/tests/ut_mservicefwgen/ut_mservicefwgen.cpp
+++ b/tests/ut_mservicefwgen/ut_mservicefwgen.cpp
@@ -31,16 +31,16 @@ void Ut_MServiceFwGen::cleanup()
{
}
-MApplication *Ut_MServiceFwGen::buildApp()
+QCoreApplication *Ut_MServiceFwGen::buildApp()
{
- MApplication *retVal = 0;
+ QCoreApplication *retVal = 0;
QChar sep(' ');
char *argv[MAX_PARAMS];
int count=1;
argv[0]=(char *)"ut_mservicefwgen";
- retVal = new MApplication(count, argv);
+ retVal = new QCoreApplication(count, argv);
return retVal;
}
diff --git a/tests/ut_mservicefwgen/ut_mservicefwgen.h b/tests/ut_mservicefwgen/ut_mservicefwgen.h
index 1c261375..10e34d4c 100644
--- a/tests/ut_mservicefwgen/ut_mservicefwgen.h
+++ b/tests/ut_mservicefwgen/ut_mservicefwgen.h
@@ -21,7 +21,7 @@
#define UT_MSERVICEFWGEN_H
#include <QtTest/QtTest>
-#include <MApplication>
+#include <QCoreApplication>
#include <QObject>
#define MAX_PARAMS 10
@@ -32,8 +32,8 @@ class Ut_MServiceFwGen: public QObject
public:
private:
- MApplication *app;
- MApplication *buildApp();
+ QCoreApplication *app;
+ QCoreApplication *buildApp();
private slots:
void init();
diff --git a/tests/ut_msliderview/ut_msliderview.cpp b/tests/ut_msliderview/ut_msliderview.cpp
index f0a48a0c..c6de16a6 100644
--- a/tests/ut_msliderview/ut_msliderview.cpp
+++ b/tests/ut_msliderview/ut_msliderview.cpp
@@ -32,6 +32,12 @@
MApplication *app;
+Ut_MSliderView::Ut_MSliderView() :
+ m_seekbar(0),
+ m_subject(0)
+{
+}
+
void Ut_MSliderView::initTestCase()
{
static int argc = 1;
diff --git a/tests/ut_msliderview/ut_msliderview.h b/tests/ut_msliderview/ut_msliderview.h
index 8283afec..4558c719 100644
--- a/tests/ut_msliderview/ut_msliderview.h
+++ b/tests/ut_msliderview/ut_msliderview.h
@@ -30,6 +30,7 @@ class Ut_MSliderView : public QObject
{
Q_OBJECT
public:
+ Ut_MSliderView();
private slots:
void initTestCase();
diff --git a/tests/ut_mtextedit/ut_mtextedit.cpp b/tests/ut_mtextedit/ut_mtextedit.cpp
index 1fc78cc6..c980f6d4 100644
--- a/tests/ut_mtextedit/ut_mtextedit.cpp
+++ b/tests/ut_mtextedit/ut_mtextedit.cpp
@@ -32,6 +32,10 @@
#include <QRegExpValidator>
#include <QRegExp>
#include <QClipboard>
+#include <QGraphicsProxyWidget>
+#include <QTextEdit>
+#include <QInputContext>
+#include <QInputContextFactory>
#include <mtextedit.h>
#include <mtexteditview.h>
@@ -44,11 +48,8 @@
#include <mhomebuttonpanel.h>
#include <mapplicationpage.h>
-//TODO:using other way instead of using relative paths
-#include "../../src/corelib/widgets/mtextedit_p.h"
+#include "mtextedit_p.h"
-
-Q_DECLARE_METATYPE(M::TextContentType);
Q_DECLARE_METATYPE(Qt::InputMethodHints);
Q_DECLARE_METATYPE(QValidator::State);
Q_DECLARE_METATYPE(MTextEditModel::EchoMode);
@@ -87,6 +88,60 @@ public:
QValidator::State state;
};
+class SimpleInputContext: public QInputContext
+{
+public:
+ SimpleInputContext(QObject *parent = 0)
+ : QInputContext(parent),
+ m_sipVisible(false)
+ {}
+
+ bool wouldSipBecomeVisible()
+ {
+ return m_sipVisible;
+ }
+
+ QString identifierName()
+ {
+ return QString("SimpleInputContext");
+ }
+
+ QString language()
+ {
+ return QString();
+ }
+
+ void reset()
+ {}
+
+ bool isComposing() const
+ {
+ return false;
+ }
+
+ bool filterEvent(const QEvent *ev)
+ {
+ switch (ev->type())
+ {
+
+ case QEvent::RequestSoftwareInputPanel:
+ m_sipVisible = true;
+ break;
+
+ case QEvent::CloseSoftwareInputPanel:
+ m_sipVisible = false;
+ break;
+
+ default:
+ break;
+ }
+
+ return false;
+ }
+
+private:
+ bool m_sipVisible;
+};
@@ -103,6 +158,8 @@ void Ut_MTextEdit::initTestCase()
m_app = new MApplication(dummyArgc, dummyArgv);
m_appWindow = new MApplicationWindow;
+ m_sic = new SimpleInputContext(m_app);
+
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
// contains valid strings which should be stored by widget as they are
validStrings << "normal" << "normal with spaces" << "specials: !@#$%^&*()_+=-[]{}"
@@ -208,6 +265,16 @@ void Ut_MTextEdit::testSetText()
QCOMPARE(mySpy2.count(), (i + 1));
QCOMPARE(getText, setText);
}
+
+ // test with phone number content type so validator gets tested too.
+ int currentSpyCount = mySpy2.count();
+ m_subject->setContentType(M::PhoneNumberContentType);
+ m_subject->setText("+358-"); // partial phone number
+ QCOMPARE(mySpy2.count(), currentSpyCount + 1);
+
+ currentSpyCount = mySpy2.count();
+ m_subject->setText(""); // empty string should be always ok
+ QCOMPARE(mySpy2.count(), currentSpyCount + 1);
}
@@ -1130,6 +1197,9 @@ void Ut_MTextEdit::testValidator()
m_subject->inputMethodEvent(&event);
QCOMPARE(m_subject->text(), QString("aaaaa"));
+ // test that custom validator still stays after adjusting content type
+ m_subject->setContentType(M::NumberContentType);
+ QCOMPARE(m_subject->validator(), &aLineValidator);
}
@@ -1888,5 +1958,65 @@ void Ut_MTextEdit::testSelectByArrowKeys()
QCOMPARE(selectionChangedSpy.count(), 0);
}
-QTEST_APPLESS_MAIN(Ut_MTextEdit);
+void Ut_MTextEdit::testAutoSipEnabled()
+{
+ setupSipEnv();
+ dismissSip(Qt::OtherFocusReason);
+ QVERIFY(!m_sic->wouldSipBecomeVisible());
+
+ requestSip(Qt::MouseFocusReason);
+ QVERIFY(m_sic->wouldSipBecomeVisible());
+
+ dismissSip(Qt::MouseFocusReason);
+ requestSip(Qt::OtherFocusReason);
+ QVERIFY(m_sic->wouldSipBecomeVisible());
+}
+
+void Ut_MTextEdit::testAutoSipDisabled()
+{
+ setupSipEnv();
+ dismissSip(Qt::OtherFocusReason);
+ QVERIFY(!m_sic->wouldSipBecomeVisible());
+
+ m_subject->setAutoSipEnabled(false);
+ requestSip(Qt::MouseFocusReason);
+ QVERIFY(!m_sic->wouldSipBecomeVisible());
+
+ requestSip(Qt::OtherFocusReason);
+ QVERIFY(!m_sic->wouldSipBecomeVisible());
+}
+
+void Ut_MTextEdit::setupSipEnv()
+{
+ m_subject->setFlag(QGraphicsItem::ItemAcceptsInputMethod);
+ // Guard manually against self-assignment - see QTBUG-10780:
+ if (m_sic != qApp->inputContext()) {
+ qApp->setInputContext(m_sic);
+ }
+
+ // Need this setup to assign a valid scene manager to m_subject:
+ MApplicationPage *page = new MApplicationPage;
+ page->setCentralWidget(m_subject);
+ m_appWindow->sceneManager()->appearSceneWindowNow(page);
+}
+
+void Ut_MTextEdit::requestSip(Qt::FocusReason fr)
+{
+ QFocusEvent focusIn(QEvent::FocusIn, fr);
+ m_subject->focusInEvent(&focusIn);
+
+ // Makes test fragile, as this behaviour (SIP request on mouse release) can easily change:
+ if (fr == Qt::MouseFocusReason) {
+ QGraphicsSceneMouseEvent mouseRelease(QEvent::GraphicsSceneMouseRelease);
+ m_subject->mouseReleaseEvent(&mouseRelease);
+ }
+}
+
+void Ut_MTextEdit::dismissSip(Qt::FocusReason fr)
+{
+ QFocusEvent focusOut(QEvent::FocusOut, fr);
+ m_subject->focusOutEvent(&focusOut);
+}
+
+QTEST_APPLESS_MAIN(Ut_MTextEdit);
diff --git a/tests/ut_mtextedit/ut_mtextedit.h b/tests/ut_mtextedit/ut_mtextedit.h
index f8a4273b..82cb8019 100644
--- a/tests/ut_mtextedit/ut_mtextedit.h
+++ b/tests/ut_mtextedit/ut_mtextedit.h
@@ -26,6 +26,7 @@
class MApplication;
class MApplicationWindow;
class MTextEdit;
+class SimpleInputContext;
Q_DECLARE_METATYPE(MTextEdit *);
@@ -36,10 +37,15 @@ class Ut_MTextEdit : public QObject
private:
void confirmKeyEventIgnored(MTextEdit *subject, int key, int expectedReturnPressed);
void constraintTest(MTextEdit *subject, const QString &input, const QString &expectedOutput);
+ void setupSipEnv();
+ void requestSip(Qt::FocusReason fr);
+ void dismissSip(Qt::FocusReason fr);
+ bool wouldSipBecomeVisible();
MTextEdit *m_subject;
MApplication *m_app;
MApplicationWindow *m_appWindow;
+ SimpleInputContext *m_sic;
QStringList validStrings;
static const QString testString;
@@ -103,6 +109,9 @@ private slots:
void testArrowKeys();
void testSelectByArrowKeys();
+
+ void testAutoSipEnabled();
+ void testAutoSipDisabled();
};
#endif
diff --git a/tests/ut_mtexteditview/ut_mtexteditview.cpp b/tests/ut_mtexteditview/ut_mtexteditview.cpp
index 48392f64..af74fd3c 100644
--- a/tests/ut_mtexteditview/ut_mtexteditview.cpp
+++ b/tests/ut_mtexteditview/ut_mtexteditview.cpp
@@ -127,26 +127,26 @@ void Ut_MTextEditView::testResizeEvent()
void Ut_MTextEditView::testGrowing()
{
- // tests that the minimum size grows after new text is appended
+ // tests that the preferred size grows after new text is appended
QString stringToAppend("\n\nasdf");
- QSizeF oldSize = m_subject->sizeHint(Qt::MinimumSize);
+ QSizeF oldSize = m_subject->sizeHint(Qt::PreferredSize);
m_controller->insert(stringToAppend);
- QSizeF newSize = m_subject->sizeHint(Qt::MinimumSize);
+ QSizeF newSize = m_subject->sizeHint(Qt::PreferredSize);
QVERIFY(newSize.height() > oldSize.height());
// FIXME: first test that removing one line is in between the sizes
- // test that minimum size is the same as in the start after new text is removed
+ // test that preferred size is the same as in the start after new text is removed
QKeyEvent event(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier);
for (int i = 0; i < stringToAppend.size(); ++i) {
m_controller->keyPressEvent(&event);
}
- newSize = m_subject->sizeHint(Qt::MinimumSize);
+ newSize = m_subject->sizeHint(Qt::PreferredSize);
QCOMPARE(newSize.height(), oldSize.height());
}
@@ -223,5 +223,39 @@ void Ut_MTextEditView::testUpdateScrollWhenTextChanged()
QCOMPARE(m_subject->d_ptr->hscroll, qreal(0));
}
+void Ut_MTextEditView::testSizeHint()
+{
+ cleanup();
+ m_controller = new MTextEdit(MTextEditModel::SingleLine, "");
+ m_subject = new MTextEditView(m_controller);
+ m_controller->setView(m_subject);
+ m_controller->setText("This is a longish string of sample text to test size hints. Thanks!");
+
+ //The size hints should not depend on the current size
+ QSizeF preferredSize = m_controller->preferredSize();
+ m_controller->resize(100,100);
+ QCOMPARE(preferredSize, m_controller->preferredSize());
+ m_controller->resize(10,10);
+ QCOMPARE(preferredSize, m_controller->preferredSize());
+ m_controller->resize(1000,1000);
+ QCOMPARE(preferredSize, m_controller->preferredSize());
+
+ QSizeF minimumSize = m_controller->minimumSize();
+ m_controller->resize(100,100);
+ QCOMPARE(minimumSize, m_controller->minimumSize());
+ m_controller->resize(10,10);
+ QCOMPARE(minimumSize, m_controller->minimumSize());
+ m_controller->resize(1000,1000);
+ QCOMPARE(minimumSize, m_controller->minimumSize());
+
+ QSizeF maximumSize = m_controller->maximumSize();
+ m_controller->resize(100,100);
+ QCOMPARE(maximumSize, m_controller->maximumSize());
+ m_controller->resize(10,10);
+ QCOMPARE(maximumSize, m_controller->maximumSize());
+ m_controller->resize(1000,1000);
+ QCOMPARE(maximumSize, m_controller->maximumSize());
+}
+
QTEST_APPLESS_MAIN(Ut_MTextEditView)
diff --git a/tests/ut_mtexteditview/ut_mtexteditview.h b/tests/ut_mtexteditview/ut_mtexteditview.h
index 8b754087..64f72b56 100644
--- a/tests/ut_mtexteditview/ut_mtexteditview.h
+++ b/tests/ut_mtexteditview/ut_mtexteditview.h
@@ -50,6 +50,7 @@ private slots:
void testInputMethodQuery();
void testMaskedCharacters();
void testUpdateScrollWhenTextChanged();
+ void testSizeHint();
private:
MTextEdit *m_controller;
diff --git a/tests/ut_mtoolbarview/ut_mtoolbarview.cpp b/tests/ut_mtoolbarview/ut_mtoolbarview.cpp
index 02313a46..3815babf 100644
--- a/tests/ut_mtoolbarview/ut_mtoolbarview.cpp
+++ b/tests/ut_mtoolbarview/ut_mtoolbarview.cpp
@@ -20,12 +20,16 @@
#include <MApplication>
#include <MApplicationWindow>
#include <MAction>
+#include <MButton>
+#include <MSlider>
#include <MToolBar>
#include <MToolBarView>
#include <MToolBarTabView>
#include <MTextEdit>
#include <MWidgetAction>
+#include <MScene>
#include <QGraphicsLinearLayout>
+#include <QPointer>
#include "ut_mtoolbarview.h"
@@ -49,14 +53,16 @@ void Ut_MToolBarView::cleanupTestCase()
void Ut_MToolBarView::init()
{
+ appWin->setOrientationAngle(M::Angle0);
m_toolbar = new MToolBar();
QVERIFY(m_toolbar != 0);
+ appWin->scene()->addItem(m_toolbar);
- m_subject = new MToolBarView(m_toolbar);
- QVERIFY(m_subject != 0);
+ m_toolbarview = new MToolBarView(m_toolbar);
+ QVERIFY(m_toolbarview != 0);
- m_toolbar->setView(m_subject);
- //m_subject->updateStyle();
+ m_toolbar->setView(m_toolbarview);
+ //m_toolbarview->updateStyle();
}
void Ut_MToolBarView::cleanup()
@@ -106,6 +112,9 @@ void Ut_MToolBarView::testTabActionExclusivity()
MAction* action = qobject_cast<MAction *>(m_toolbar->actions().at(0));
QVERIFY(action);
QVERIFY(action == action0);
+ MButton* button0 = dynamic_cast<MButton *>(tabView->getWidget(action));
+ QVERIFY(button0);
+ QVERIFY(button0->isChecked());
QVERIFY(action0->isChecked() == true);
@@ -120,6 +129,11 @@ void Ut_MToolBarView::testTabActionExclusivity()
QVERIFY(action0->isChecked() == true);
QVERIFY(action1->isChecked() == false);
+ MButton* button1 = dynamic_cast<MButton *>(tabView->getWidget(action));
+ QVERIFY(button1);
+ QVERIFY(button0->isChecked());
+ QVERIFY(!button1->isChecked());
+
MAction *action2 = new MAction("action2", m_toolbar);
action2->setLocation(MAction::ToolBarLocation);
action2->setCheckable(true);
@@ -132,10 +146,19 @@ void Ut_MToolBarView::testTabActionExclusivity()
QVERIFY(action1->isChecked() == false);
QVERIFY(action2->isChecked() == false);
+ MButton* button2 = dynamic_cast<MButton *>(tabView->getWidget(action));
+ QVERIFY(button2);
+ QVERIFY(button0->isChecked());
+ QVERIFY(!button1->isChecked());
+ QVERIFY(!button2->isChecked());
+
action2->setChecked(true);
QVERIFY(action0->isChecked() == false);
QVERIFY(action1->isChecked() == false);
QVERIFY(action2->isChecked() == true);
+ QVERIFY(!button0->isChecked());
+ QVERIFY(!button1->isChecked());
+ QVERIFY(button2->isChecked());
}
MWidgetAction *Ut_MToolBarView::createTextEditAction(MWidget *parentWidget)
@@ -146,4 +169,228 @@ MWidgetAction *Ut_MToolBarView::createTextEditAction(MWidget *parentWidget)
return actionTextEdit;
}
+void Ut_MToolBarView::testAddingRemoveActions()
+{
+ QPointer<MAction> action1 = new MAction("action", m_toolbar);
+ action1->setLocation(MAction::ToolBarLocation);
+ m_toolbar->addAction(action1);
+
+ QPointer<MAction> action2 = new MAction("action", m_toolbar);
+ action2->setLocation(MAction::ToolBarLocation);
+ m_toolbar->addAction(action2);
+
+ m_toolbar->removeAction(action1);
+ m_toolbar->removeAction(action2);
+ QVERIFY(!action1.isNull());
+ QVERIFY(!action2.isNull());
+
+}
+
+void Ut_MToolBarView::testSizeHint_data()
+{
+ QTest::addColumn<bool>("portrait"); //Whether to add the action to portrait location
+ QTest::addColumn<bool>("landscape"); //Whether to add the action to landscape location
+ QTest::addColumn<bool>("rotate"); //Whether to rotate to portrait mode
+
+ for(int i = 0; i < 2; i++) {
+ QString rotationDescription(i?" (rotated)":"");
+ QTest::newRow(("Adding to Portrait only" + rotationDescription).toLatin1()) << true << false << !!i;
+ QTest::newRow(("Adding to Landscape only" + rotationDescription).toLatin1()) << false << true << !!i;
+ QTest::newRow(("Adding to both Portrait and Landscape" + rotationDescription).toLatin1()) << true << true << !!i;
+ QTest::newRow(("Adding to nowhere!" + rotationDescription).toLatin1()) << false << false << !!i;
+ }
+
+}
+void Ut_MToolBarView::testSizeHint()
+{
+ QFETCH(bool, portrait);
+ QFETCH(bool, landscape);
+ QFETCH(bool, rotate);
+ QList< QPointer<MAction> > actions;
+ QList<QSizeF> minimumSizes;
+ QList<QSizeF> maximumSizes;
+ QList<QSizeF> preferredSizes;
+
+ if(rotate) {
+ appWin->setOrientationAngle(M::Angle90);
+ qApp->processEvents();
+ }
+ for(int i = 0; i < 5; i++) {
+
+ minimumSizes << m_toolbar->sizeHint(Qt::MinimumSize);
+ maximumSizes << m_toolbar->sizeHint(Qt::MaximumSize);
+ preferredSizes << m_toolbar->sizeHint(Qt::PreferredSize);
+
+ QVERIFY(minimumSizes.at(i).isValid());
+ QVERIFY(maximumSizes.at(i).isValid());
+ QVERIFY(preferredSizes.at(i).isValid());
+
+ MAction *action = new MAction("action", m_toolbar);
+ if(landscape && portrait)
+ action->setLocation(MAction::ToolBarLocation);
+ else if(landscape)
+ action->setLocation(MAction::ToolBarLandscapeLocation);
+ else if(portrait)
+ action->setLocation(MAction::ToolBarPortraitLocation);
+ else
+ action->setLocation(MAction::ApplicationMenuLocation);
+ action->setCheckable(true);
+ action->setChecked(true);
+ actions << action;
+
+ m_toolbar->addAction(action);
+
+ if((landscape && !rotate) || (portrait && rotate)) {
+ //After adding an action the size shouldn't be smaller
+ QVERIFY(minimumSizes[i].width() <= m_toolbar->sizeHint(Qt::MinimumSize).width());
+ QVERIFY(maximumSizes[i].width() <= m_toolbar->sizeHint(Qt::MaximumSize).width());
+ QVERIFY(preferredSizes[i].width() <= m_toolbar->sizeHint(Qt::PreferredSize).width());
+ } else {
+ //After adding an non-landscape action the sizes shouldn't have changed
+ QVERIFY(minimumSizes[i].width() == m_toolbar->sizeHint(Qt::MinimumSize).width());
+ QVERIFY(maximumSizes[i].width() == m_toolbar->sizeHint(Qt::MaximumSize).width());
+ QVERIFY(preferredSizes[i].width() == m_toolbar->sizeHint(Qt::PreferredSize).width());
+ }
+ }
+ //A maximum of 4 items is allowed, so the sizehints for 4 actions should be the same as the sizehints for 5 actions
+ QCOMPARE(minimumSizes[4], m_toolbar->sizeHint(Qt::MinimumSize));
+ QCOMPARE(maximumSizes[4], m_toolbar->sizeHint(Qt::MaximumSize));
+ QCOMPARE(preferredSizes[4], m_toolbar->sizeHint(Qt::PreferredSize));
+
+ //Throw in rotation and rotation back again, just to be sure
+ if(rotate) {
+ appWin->setOrientationAngle(M::Angle0);
+ appWin->setOrientationAngle(M::Angle90);
+ } else {
+ appWin->setOrientationAngle(M::Angle90);
+ appWin->setOrientationAngle(M::Angle0);
+ }
+
+ for(int i = 4; i >= 0; i--) {
+ m_toolbar->removeAction(actions[4-i]);
+ QVERIFY(!actions[4-i].isNull());
+ QCOMPARE(minimumSizes[i], m_toolbar->sizeHint(Qt::MinimumSize));
+ QCOMPARE(maximumSizes[i], m_toolbar->sizeHint(Qt::MaximumSize));
+ QCOMPARE(preferredSizes[i], m_toolbar->sizeHint(Qt::PreferredSize));
+ }
+}
+
+#define WAIT_VERIFY(x) { int i = 0; while(!(x) && i++ < 100) { QTest::qWait(50); } QVERIFY(x); }
+void Ut_MToolBarView::testButtons()
+{
+ QVERIFY(m_toolbar->actions().isEmpty());
+ MAction *action = new MAction("Hello", m_toolbar);
+ action->setLocation(MAction::ToolBarLandscapeLocation);
+ action->setCheckable(true);
+ action->setChecked(true);
+
+ m_toolbar->addAction(action);
+ QPointer<MButton> button = dynamic_cast<MButton*>(m_toolbarview->getWidget(action));
+ QVERIFY(button);
+ QVERIFY(button->isEnabled());
+ QVERIFY(button->isCheckable());
+ QVERIFY(button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+ WAIT_VERIFY(button->isVisible());
+
+ action->setChecked(false);
+ QVERIFY(!button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+
+ action->setText("Goodbye");
+ QVERIFY(!button->isChecked());
+ QCOMPARE(button->text(), QString("Goodbye"));
+
+ action->setVisible(false);
+ WAIT_VERIFY(button.isNull() || !button->isVisible());
+
+ /* Set the button back to how it was, but disabled */
+ action->setEnabled(false);
+ action->setChecked(true);
+ action->setText("Hello");
+ /* And now show the button again */
+ action->setVisible(true);
+ button = dynamic_cast<MButton*>(m_toolbarview->getWidget(action));
+ QVERIFY(button);
+ QVERIFY(!button->isEnabled());
+ QVERIFY(button->isCheckable());
+ QVERIFY(button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+ WAIT_VERIFY(button->isVisible());
+
+ /* Now change the location to landscape. Nothing should change */
+ action->setLocation(MAction::ToolBarLandscapeLocation);
+ QVERIFY(button);
+ QVERIFY(!button->isEnabled());
+ QVERIFY(button->isCheckable());
+ QVERIFY(button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+ WAIT_VERIFY(button->isVisible());
+
+ /* Now change the location to portrait. It should now be invisble */
+ action->setLocation(MAction::ToolBarPortraitLocation);
+ QVERIFY(button);
+ QVERIFY(!button->isEnabled());
+ QVERIFY(button->isCheckable());
+ QVERIFY(button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+ WAIT_VERIFY(!button->isVisible());
+
+ /* Change the location back to landscape so that we now see it again */
+ action->setLocation(MAction::ToolBarLandscapeLocation);
+ QVERIFY(button);
+ QVERIFY(!button->isEnabled());
+ QVERIFY(button->isCheckable());
+ QVERIFY(button->isChecked());
+ QCOMPARE(button->text(), QString("Hello"));
+ WAIT_VERIFY(button->isVisible());
+
+ m_toolbar->removeAction(action);
+ QVERIFY(button.isNull()); //The toolbar owns the button, so it should have been deleted
+}
+
+void Ut_MToolBarView::testMWidgetAction_data()
+{
+ QTest::addColumn<QString>("widgetType"); //The type of widget to add - button, textedit etc
+
+ QTest::newRow("Testing MWidgetAction with MButton") << "button";
+ QTest::newRow("Testing MWidgetAction with MTextEdit") << "textedit";
+ QTest::newRow("Testing MWidgetAction with MSlider") << "image";
+}
+void Ut_MToolBarView::testMWidgetAction()
+{
+ QFETCH(QString, widgetType);
+ QPointer<MWidgetAction> action = new MWidgetAction(m_toolbar);
+ action->setLocation(MAction::ToolBarLocation);
+ action->setEnabled(true);
+ action->setVisible(true);
+
+ QPointer<MWidget> widget;
+ if(widgetType == "textedit")
+ widget = new MTextEdit;
+ else if(widgetType == "button")
+ widget = new MButton(m_toolbar);
+ else
+ widget = new MSlider(m_toolbar);
+ action->setWidget(widget);
+
+ m_toolbar->addAction(action);
+
+ QVERIFY(widget);
+ QVERIFY(widget->isEnabled());
+ WAIT_VERIFY(widget->isVisible());
+
+ m_toolbar->removeAction(action);
+ QVERIFY(!action.isNull());
+ QVERIFY(!widget.isNull()); //We own the widget, so it shouldn't have been deleted
+ WAIT_VERIFY(!widget->isVisible());
+
+ m_toolbar->addAction(action);
+
+ QVERIFY(widget);
+ QVERIFY(widget->isEnabled());
+ WAIT_VERIFY(widget->isVisible());
+
+}
+
QTEST_APPLESS_MAIN(Ut_MToolBarView)
diff --git a/tests/ut_mtoolbarview/ut_mtoolbarview.h b/tests/ut_mtoolbarview/ut_mtoolbarview.h
index 65ae039b..3b58db27 100644
--- a/tests/ut_mtoolbarview/ut_mtoolbarview.h
+++ b/tests/ut_mtoolbarview/ut_mtoolbarview.h
@@ -40,13 +40,19 @@ private slots:
void init();
void cleanup();
+ void testAddingRemoveActions();
void testDeleteAddAction();
void testTabView();
void testTabActionExclusivity();
+ void testSizeHint_data();
+ void testSizeHint();
+ void testButtons();
+ void testMWidgetAction_data();
+ void testMWidgetAction();
private:
MToolBar *m_toolbar;
- MToolBarView *m_subject;
+ MToolBarView *m_toolbarview;
MWidgetAction *createTextEditAction(MWidget *parentWidget);
};
diff --git a/tests/ut_mvideowidget/ut_mvideowidget.cpp b/tests/ut_mvideowidget/ut_mvideowidget.cpp
index 6f182e3b..d24b78bb 100644
--- a/tests/ut_mvideowidget/ut_mvideowidget.cpp
+++ b/tests/ut_mvideowidget/ut_mvideowidget.cpp
@@ -24,6 +24,9 @@
#include <mapplication.h>
ut_mvideowidget::ut_mvideowidget()
+ : m_subject(NULL),
+ app(NULL),
+ ready(false)
{
}
diff --git a/tests/ut_mwindow/ut_mwindow.cpp b/tests/ut_mwindow/ut_mwindow.cpp
index 5e3c829d..eadf2b5d 100644
--- a/tests/ut_mwindow/ut_mwindow.cpp
+++ b/tests/ut_mwindow/ut_mwindow.cpp
@@ -148,7 +148,7 @@ void Ut_MWindow::testSetOrientationAngleCalledFromSceneManager()
win->setSceneManager(new MSceneManager);
QCOMPARE(win->orientationAngle(), win->sceneManager()->orientationAngle());
- win->sceneManager()->setOrientationAngle(M::Angle90);
+ win->sceneManager()->setOrientationAngle(M::Angle90, MSceneManager::ImmediateTransition);
win->setOrientationAngle(M::Angle0);
QCOMPARE(win->orientationAngle(), M::Angle0);
QCOMPARE(win->sceneManager()->orientationAngle(), M::Angle0);
diff --git a/tests/ut_mwindow/ut_mwindow.h b/tests/ut_mwindow/ut_mwindow.h
index 575b414a..60477b6a 100644
--- a/tests/ut_mwindow/ut_mwindow.h
+++ b/tests/ut_mwindow/ut_mwindow.h
@@ -73,7 +73,4 @@ private:
MComponentData* m_componentData;
};
-Q_DECLARE_METATYPE(M::Orientation);
-Q_DECLARE_METATYPE(M::OrientationAngle);
-
#endif
diff --git a/tests/ut_qtmaemo6style/ut_qtmaemo6style.cpp b/tests/ut_qtmaemo6style/ut_qtmaemo6style.cpp
index 2639c43e..bb02b119 100644
--- a/tests/ut_qtmaemo6style/ut_qtmaemo6style.cpp
+++ b/tests/ut_qtmaemo6style/ut_qtmaemo6style.cpp
@@ -53,81 +53,105 @@ void Ut_QtMaemo6Style::cleanupTestCase()
}
void Ut_QtMaemo6Style::testStyleLoadedByDefault() {
- int argc = 1;
- char *argv[1] = { (char *) "./ut_qtmaemo6style" };
- QApplication app(argc, argv);
- QStyle* style = app.style();
- QVERIFY(style->inherits("QtMaemo6Style"));
+ //only test it, if at least there is a plugin, otherwise we asume the
+ // style is intentionally not installed
+ if(QFile::exists("/usr/lib/qt4/plugins/styles/libmeegotouchqtstyleplugin.so")) {
+ int argc = 1;
+ char *argv[1] = { (char *) "./ut_qtmaemo6style" };
+ QApplication app(argc, argv);
+ QStyle* style = app.style();
+ QVERIFY(style->inherits("QtMaemo6Style"));
+ } else {
+ qDebug() << "Assuming style plugin not installed attentionally";
+ }
}
void Ut_QtMaemo6Style::testLoadOtherStyle() {
- int argc = 3;
- char *argv[3] = { (char *) "./ut_qtmaemo6style", (char *) "-style", (char *) "windows"};
- QApplication app(argc, argv);
- QStyle* style = app.style();
- QVERIFY(style->inherits("QWindowsStyle"));
+ //only test it, if at least there is a plugin, otherwise we asume the
+ // style is intentionally not installed
+ if(QFile::exists("/usr/lib/qt4/plugins/styles/libmeegotouchqtstyleplugin.so")) {
+ int argc = 3;
+ char *argv[3] = { (char *) "./ut_qtmaemo6style", (char *) "-style", (char *) "windows"};
+ QApplication app(argc, argv);
+ QStyle* style = app.style();
+ QVERIFY(style->inherits("QWindowsStyle"));
+ }
}
void Ut_QtMaemo6Style::testWindowDecoration() {
- int argc = 3;
- char *argv[3] = { (char *) "./ut_qtmaemo6style", (char *) "-style", (char *) "maemo6"};
- m_app = new QApplication(argc, argv);
- QVERIFY(m_app->style()->inherits("QtMaemo6Style"));
-
- m_mw = new QMainWindow();
- m_mw->show();
- QTimer::singleShot(1000, this, SLOT(testWindowDecorationSlot()));
- //just ensure that the application quits, even if the test fails
- QTimer::singleShot(5000, m_app, SLOT(quit()));
- m_app->exec();
-
- delete m_mw;
- m_mw = 0;
- delete m_app;
- m_app = 0;
+ //only test it, if at least there is a plugin, otherwise we asume the
+ // style is intentionally not installed
+ if(QFile::exists("/usr/lib/qt4/plugins/styles/libmeegotouchqtstyleplugin.so")) {
+ int argc = 3;
+ char *argv[3] = { (char *) "./ut_qtmaemo6style", (char *) "-style", (char *) "maemo6"};
+ m_app = new QApplication(argc, argv);
+ QVERIFY(m_app->style()->inherits("QtMaemo6Style"));
+
+ m_mw = new QMainWindow();
+ m_mw->show();
+ QTimer::singleShot(1000, this, SLOT(testWindowDecorationSlot()));
+ //just ensure that the application quits, even if the test fails
+ QTimer::singleShot(5000, m_app, SLOT(quit()));
+ m_app->exec();
+
+ delete m_mw;
+ m_mw = 0;
+ delete m_app;
+ m_app = 0;
+ }
}
void Ut_QtMaemo6Style::testWindowDecorationSlot() {
- if(m_app && m_mw) {
- QWidget* pw = 0;
- pw = m_mw->parentWidget();
- QVERIFY(pw != 0);
- //search the toplevel widget
- while(pw->parentWidget())
- pw = pw->parentWidget();
- QVERIFY(pw != 0);
- QVERIFY(pw->inherits("QtMaemo6WindowDecoration"));
- m_app->quit();
+ //only test it, if at least there is a plugin, otherwise we asume the
+ // style is intentionally not installed
+ if(QFile::exists("/usr/lib/qt4/plugins/styles/libmeegotouchqtstyleplugin.so")) {
+ //this is called by testWindowDecoration(), but also called by the
+ //testframework but needs testWindowDecoration() as precondition
+ if(m_app && m_mw) {
+ QWidget* pw = 0;
+ pw = m_mw->parentWidget();
+ QVERIFY(pw != 0);
+ //search the toplevel widget
+ while(pw->parentWidget())
+ pw = pw->parentWidget();
+ QVERIFY(pw != 0);
+ QVERIFY(pw->inherits("QtMaemo6WindowDecoration"));
+ m_app->quit();
+ }
}
}
void Ut_QtMaemo6Style::testFonts() {
- int argc = 1;
- char *argv[1] = { (char *) "./ut_qtmaemo6style" };
- QApplication app(argc, argv);
- Q_UNUSED(app);
- //font settings on a button should be ignored
- // the font of m style is used
- QPushButton button;
- button.setText("Test");
- button.setFont(QFont("Arial"));
- QSize size1 = button.sizeHint();
-
- QPixmap pix1(size1);
- pix1.fill(Qt::white);
- QPainter p1(&pix1);
- button.render(&p1);
-
- button.setFont(QFont("Helvetica"));
- QSize size2 = button.sizeHint();
- //changing the font shouldn't effect the size
- QCOMPARE(size1, size2);
-
- QPixmap pix2(size2);
- pix2.fill(Qt::white);
- QPainter p2(&pix2);
- button.render(&p2);
- QCOMPARE(pix1.toImage(), pix2.toImage());
+ //only test it, if at least there is a plugin, otherwise we asume the
+ // style is intentionally not installed
+ if(QFile::exists("/usr/lib/qt4/plugins/styles/libmeegotouchqtstyleplugin.so")) {
+ int argc = 1;
+ char *argv[1] = { (char *) "./ut_qtmaemo6style" };
+ QApplication app(argc, argv);
+ Q_UNUSED(app);
+ //font settings on a button should be ignored
+ // the font of m style is used
+ QPushButton button;
+ button.setText("Test");
+ button.setFont(QFont("Arial"));
+ QSize size1 = button.sizeHint();
+
+ QPixmap pix1(size1);
+ pix1.fill(Qt::white);
+ QPainter p1(&pix1);
+ button.render(&p1);
+
+ button.setFont(QFont("Helvetica"));
+ QSize size2 = button.sizeHint();
+ //changing the font shouldn't effect the size
+ QCOMPARE(size1, size2);
+
+ QPixmap pix2(size2);
+ pix2.fill(Qt::white);
+ QPainter p2(&pix2);
+ button.render(&p2);
+ QCOMPARE(pix1.toImage(), pix2.toImage());
+ }
}
QTEST_APPLESS_MAIN(Ut_QtMaemo6Style)
diff --git a/tools/m-servicefwgen.d/m-servicefwgen.cpp b/tools/m-servicefwgen.d/m-servicefwgen.cpp
index aeedb1f0..3c41ebcf 100644
--- a/tools/m-servicefwgen.d/m-servicefwgen.cpp
+++ b/tools/m-servicefwgen.d/m-servicefwgen.cpp
@@ -30,7 +30,8 @@
#include <QDomDocument>
-class Worker {
+class Worker
+{
public:
Worker();
@@ -46,6 +47,10 @@ public:
void setNeedsMApplication( bool val );
+ void setArguments( const int argc, const char * const argv[] );
+
+ QString applicationName();
+ QString generatedByComment();
QString upperCamelServiceName();
QString lowerServiceName();
QString xmlFileName();
@@ -72,6 +77,7 @@ public:
QString docTag();
QString proxyBase();
QString adaptorBase();
+ QRegExp qdbusxml2cppRegExp();
QString hideThisWindowCode();
@@ -129,6 +135,8 @@ private:
QString m_allSignals;
QString m_allConnectSignalCommands;
+ QStringList m_arguments;
+
bool m_createAdaptor;
bool m_createProxy;
@@ -150,6 +158,13 @@ Worker::Worker()
m_needsMApplication = false;
}
+void Worker::setArguments( const int argc, const char * const argv[] )
+{
+ for ( int argIndex=0; argIndex<argc; ++argIndex ) {
+ m_arguments << argv[ argIndex ];
+ }
+}
+
void Worker::setInterfaceName( const QString& interfaceName )
{
QString pid = QString::number(QCoreApplication::applicationPid());
@@ -217,6 +232,21 @@ void Worker::setNeedsMApplication( bool val )
m_needsMApplication = val;
}
+QString Worker::applicationName()
+{
+ return m_arguments[0];
+}
+
+QString Worker::generatedByComment()
+{
+ QStringList lines;
+
+ lines
+ << " * automatically generated with the command line :"
+ << " * "+m_arguments.join( " " );
+
+ return lines.join( "\n" );
+}
QString Worker::upperCamelServiceName()
{
@@ -328,6 +358,11 @@ QString Worker::adaptorBase()
return m_adaptorBase;
}
+QRegExp Worker::qdbusxml2cppRegExp()
+{
+ return QRegExp( "qdbusxml2cpp(?: version \\d+\\.\\d+)*" );
+}
+
bool Worker::createAdaptor()
{
return m_createAdaptor;
@@ -370,8 +405,7 @@ QString getDoxygenFromXml( const QString& xml, int indentCount )
QDomElement el = node.toElement();
el = el.firstChildElement( "arg" );
- while ( ! el.isNull() )
- {
+ while ( ! el.isNull() ) {
xmlTokens.insert( el.attribute( "tag" ), el.text() );
el = el.nextSiblingElement( "arg" );
}
@@ -392,20 +426,17 @@ QString getDoxygenFromXml( const QString& xml, int indentCount )
bool hasDoc = false;
- foreach( const QString dT, doxTokens )
- {
- if ( !xmlTokens.value( dT ).isEmpty() )
- {
+ foreach( const QString dT, doxTokens ) {
+
+ if ( !xmlTokens.value( dT ).isEmpty() ) {
hasDoc = true;
QString longLine = "@" + dT + " " + xmlTokens.value( dT );
- while ( !longLine.isEmpty() )
- {
+ while ( !longLine.isEmpty() ) {
int pos = longLine.indexOf( ' ', 60 - indentCount );
- if ( pos == -1 )
- {
+ if ( pos == -1 ) {
pos = longLine.length();
}
@@ -418,12 +449,9 @@ QString getDoxygenFromXml( const QString& xml, int indentCount )
s << indent << " */\n";
- if ( hasDoc )
- {
+ if ( hasDoc ) {
return result;
- }
- else
- {
+ } else {
return "";
}
}
@@ -457,18 +485,14 @@ QString Worker::hideThisWindowCode()
";
}
-
QString Worker::topBitH()
{
- QString commandLine(QCoreApplication::arguments().join(" "));
-
return
"#ifndef " + wrapperHeaderGuard() + "\n\
#define " + wrapperHeaderGuard() + "\n\
\n\
-/*\n\
- * automatically generated with the command line :\n\
- * " + commandLine + "\n\
+/*\n"
+ + generatedByComment() + "\n\
*/\n\
\n\
#include <QObject>\n\
@@ -476,7 +500,6 @@ QString Worker::topBitH()
#include <mservicefwbaseif.h>\n";
}
-
QString Worker::middleBitH()
{
return
@@ -487,7 +510,6 @@ Q_OBJECT\n\
public:\n";
}
-
QString Worker::botBitH()
{
return
@@ -516,7 +538,6 @@ Q_SIGNALS:\n\
";
}
-
QString Worker::topBitC()
{
QString commandLine(QCoreApplication::arguments().join(" "));
@@ -531,7 +552,6 @@ QString Worker::topBitC()
#include \"" + proxyHeaderFileName() + "\"\n";
}
-
QString Worker::botBitC()
{
return
@@ -567,7 +587,6 @@ void " + upperCamelServiceName() + "::setService(const QString & service)\n\
}\n";
}
-
QString Worker::mHeaders()
{
return
@@ -604,8 +623,7 @@ void Worker::preprocessXML()
int errorLine;
int errorColumn;
- if (!doc.setContent(&inFile, true, &errorStr, &errorLine, &errorColumn))
- {
+ if (!doc.setContent(&inFile, true, &errorStr, &errorLine, &errorColumn)) {
qWarning( "doc.setContent failed" );
return;
}
@@ -617,8 +635,7 @@ void Worker::preprocessXML()
// and mangle the doctag, chaintasktag and asynctag strings into the method names
QDomNode node = doc.documentElement();
- if ( node.nodeName() != "node" )
- {
+ if ( node.nodeName() != "node" ) {
qCritical( "Error: this is not a valid interface. exiting" );
exit( -1 );
}
@@ -627,8 +644,7 @@ void Worker::preprocessXML()
el = el.firstChildElement( "interface" );
// try to save and drop <doc> child of <interface>
- if ( !el.firstChildElement( "doc" ).isNull() )
- {
+ if ( !el.firstChildElement( "doc" ).isNull() ) {
QString string;
QTextStream stream( &string );
el.firstChildElement( "doc" ).save( stream, 4 );
@@ -644,24 +660,20 @@ void Worker::preprocessXML()
// walk over the methods
el = el.firstChildElement( "method" );
- while ( ! el.isNull() )
- {
+ while ( ! el.isNull() ) {
// now handle chainTask and asyncTask for this method
- if ( el.attribute( "chainTask" ) == "true" )
- {
+ if ( el.attribute( "chainTask" ) == "true" ) {
el.setAttribute( "name", el.attribute( "name" ) + chainTag() );
setNeedsMApplication( true );
}
- if ( el.attribute( "asyncTask" ) == "true" )
- {
+ if ( el.attribute( "asyncTask" ) == "true" ) {
el.setAttribute( "name", el.attribute( "name" ) + asyncTag() );
setNeedsMApplication( true );
}
// handle doc
- if ( ! el.firstChildElement( "doc" ).isNull() )
- {
+ if ( ! el.firstChildElement( "doc" ).isNull() ) {
QString string;
QTextStream stream( &string );
el.firstChildElement( "doc" ).save( stream, 4 );
@@ -785,6 +797,9 @@ void processAdaptorCppFile()
// remove doctag - can be more than one per line
w.removeDocTag( line );
+ line.replace( w.qdbusxml2cppRegExp(), w.applicationName() );
+ line.replace( w.newXmlFileName(), w.xmlFileName() );
+
// add chaining code to NEWADAPTOR
{
// always remove asyncTag, since we don't care about it in the cpp file
@@ -810,9 +825,6 @@ void processAdaptorCppFile()
<< line + "," << endl
<< " backServiceName()," << endl
<< " windowId(-1)" << endl;
- } else if (line.contains(w.newXmlFileName())) {
- line.replace(w.newXmlFileName(), w.xmlFileName());
- outS << line << endl;
} else if (inChainTask) {
line.remove(w.chainTag());
if (line == "{") {
@@ -862,6 +874,10 @@ void processAdaptorCppFile()
outS << line << endl;
inChainTask = true;
needGoBackMethod = true;
+ } else if (line.contains("This file was generated by")) {
+ outS << w.generatedByComment() << endl;
+ } else if (line.contains( "Command line was:")) {
+ // do nothing - the replacement for this line is output by the above
} else {
outS << line << endl;
}
@@ -893,8 +909,10 @@ void processAdaptorCppFile()
" XSync(QX11Info::display(), False);\n"\
" }\n"\
"\n"\
-" qWarning() << \"quitting - bye bye\";\n"\
-" QTimer::singleShot( 0, QApplication::instance(), SLOT( quit() ) );\n"\
+" MApplicationWindow *appWindow = MApplication::activeApplicationWindow();\n"\
+" if ( appWindow != 0 ) {\n"\
+" appWindow->close();\n"\
+" }\n"\
" } else {\n"\
" qWarning() << \"backService is not registered: not going back\";\n"\
" }\n"\
@@ -939,6 +957,8 @@ void processAdaptorHeaderFile()
// remove doctag - can be more than one per line
w.removeDocTag( line );
+ line.replace( w.qdbusxml2cppRegExp(), w.applicationName() );
+
// add chaining code to NEWADAPTOR
{
if (line.contains("Q_SIGNALS:")) {
@@ -1016,6 +1036,10 @@ void processAdaptorHeaderFile()
}
newAdaptorHeaderStream << line << endl;
+ } else if (line.contains("This file was generated by")) {
+ newAdaptorHeaderStream << w.generatedByComment() << endl;
+ } else if (line.contains( "Command line was:")) {
+ // do nothing - the replacement for this line is output by the above
} else {
// remove extraneous spaces (inserted randomly by qdbusxml2cpp?)
line.replace(QRegExp("\\s+(/*>)"), "\\1");
@@ -1041,21 +1065,14 @@ void processAdaptorHeaderFile()
// this method generates the code that is needed for chaining of tasks
void doChainTaskHandling( QString line, bool& inChainTask, QTextStream& newProxyHeaderStream )
{
-// if (w.needsMApplication() && line.contains(QRegExp("#include <QtCore/Q(Meta)?Object>")))
-// {
-// newProxyHeaderStream << w.mHeaders() << line << "\n";
-// }
- if (w.needsMApplication() && line.contains(QRegExp("#include <QtDBus/QtDBus>")))
- {
+ if (w.needsMApplication() && line.contains(QRegExp("#include <QtDBus/QtDBus>"))) {
newProxyHeaderStream << line << "\n\n" << w.mHeaders();
}
- else if (w.needsMApplication() && line.contains(w.newXmlFileName()))
- {
+ else if (w.needsMApplication() && line.contains(w.newXmlFileName())) {
line.replace(w.newXmlFileName(), w.xmlFileName());
newProxyHeaderStream << line << "\n";
}
- else if (inChainTask)
- {
+ else if (inChainTask) {
if (line.contains("QList<QVariant>"))
{
newProxyHeaderStream << "\
@@ -1074,27 +1091,23 @@ void doChainTaskHandling( QString line, bool& inChainTask, QTextStream& newProxy
argumentList << qVariantFromValue(windowTitle);\n\
argumentList << qVariantFromValue((uint)windowId);\n";
}
- else if (line.contains("return"))
- {
+ else if (line.contains("return")) {
newProxyHeaderStream << w.hideThisWindowCode() << endl;
line.remove(w.chainTag());
newProxyHeaderStream << line << "\n";
inChainTask = false;
}
- else
- {
+ else {
newProxyHeaderStream << line << "\n";
}
}
- else if (line.contains(w.chainTag()))
- {
+ else if (line.contains(w.chainTag())) {
line.remove(w.chainTag());
newProxyHeaderStream << line << "\n";
inChainTask = true;
}
- else
- {
+ else {
newProxyHeaderStream << line << "\n";
}
}
@@ -1152,19 +1165,19 @@ void processProxyHeaderFile()
bool inSignalSection = false;
bool inChainTask = false;
- while ( ! proxyHeaderStream.atEnd() )
- {
+ while ( ! proxyHeaderStream.atEnd() ) {
QString line = proxyHeaderStream.readLine();
+ line.replace( w.qdbusxml2cppRegExp(), w.applicationName() );
+
// add documentation and remove doc tags here
// note that middle bit is added here too, so it's not just about doc
- if (line.contains(QRegExp("^class")))
- {
+ if (line.contains(QRegExp("^class"))) {
wrapperHeaderStream << w.mangledClassDoc();
wrapperHeaderStream << w.middleBitH();
- }
- else if ( line.contains( w.docTag() ) )
- {
+ } else if (line.contains( "Command line was:")) {
+ // do nothing - the replacement for this line is output by the above
+ } else if ( line.contains( w.docTag() ) ) {
// we have to handle doxygen doc here.
// we have three cases:
// - class documentation
@@ -1172,8 +1185,7 @@ void processProxyHeaderFile()
// - a docTag, that can be ignored, because
// it appears somewhere in a method implementation
- if ( ! line.contains( "return" ) )
- {
+ if ( ! line.contains( "return" ) ) {
// method docs
QRegExp rx( w.docTag() + "(\\d+)" );
@@ -1182,8 +1194,7 @@ void processProxyHeaderFile()
int id = rx.cap( 1 ).toInt();
- if ( id > 0 )
- {
+ if ( id > 0 ) {
wrapperHeaderStream << w.mangledMethodDoc( id );
}
}
@@ -1199,35 +1210,25 @@ void processProxyHeaderFile()
line.remove( w.chainTag() );
- if (inSignalSection)
- {
+ if (inSignalSection) {
bool atEndOfSignalSection = (line == "};");
- if (atEndOfSignalSection)
- {
+ if (atEndOfSignalSection) {
inSignalSection = false;
- }
- else
- {
+ } else {
ifSignals.append(line);
}
- }
- else
- {
- if (line.contains("Q_SIGNALS:"))
- {
+ } else {
+ if (line.contains("Q_SIGNALS:")) {
inSignalSection = true;
- }
- else
- {
+ } else {
QRegExp matchThis("inline\\s+QDBusPendingReply<([^>]*)>\\s*(\\w+)\\(([^)]*)\\)");
- if (line.contains(matchThis))
- {
+
+ if (line.contains(matchThis)) {
QString returnType = matchThis.cap(1);
QString methodName = matchThis.cap(2);
QString parameters = matchThis.cap(3);
- if (returnType.isEmpty())
- {
+ if (returnType.isEmpty()) {
returnType = "void";
}
@@ -1242,13 +1243,10 @@ returnType + " " + w.upperCamelServiceName() + "::" + methodName + "( " + parame
wrapperCppStream <<
"{" << endl;
- if (returnType == "void")
- {
+ if (returnType == "void") {
wrapperCppStream <<
" static_cast<" + w.upperCamelServiceName() + "Proxy*>(interfaceProxy())->" + methodName + "( " + paramNames.join(", ") + " );" << endl;
- }
- else
- {
+ } else {
wrapperCppStream <<
" return qobject_cast<" + w.upperCamelServiceName() + "Proxy*>(interfaceProxy())->" + methodName + "( " + paramNames.join(", ") + " ).value();" << endl;
}
@@ -1294,31 +1292,25 @@ void processProxyCppFile()
}
QTextStream outS(&outFile);
- while ( ! inS.atEnd() )
- {
+ while ( ! inS.atEnd() ) {
QString line = inS.readLine();
- if ( line.contains( w.docTag() ) )
- {
- w.removeDocTag( line );
- }
+ w.removeDocTag( line );
- if ( line.contains( w.chainTag() ) )
- {
- line.remove( w.chainTag() );
- }
+ line.remove( w.chainTag() );
- if ( line.contains( w.asyncTag() ) )
- {
- line.remove( w.asyncTag() );
- }
+ line.remove( w.asyncTag() );
- if ( line.contains( w.newXmlFileName() ) )
- {
- line.replace(w.newXmlFileName(), w.xmlFileName());
- }
+ line.replace( "qdbusxml2cpp", w.applicationName() );
+ line.replace( w.newXmlFileName(), w.xmlFileName() );
- outS << line << "\n";
+ if (line.contains("This file was generated by")) {
+ outS << w.generatedByComment() << endl;
+ } else if (line.contains( "Command line was:")) {
+ // do nothing - the replacement for this line is output by the above
+ } else {
+ outS << line << "\n";
+ }
}
inFile.remove();
@@ -1331,10 +1323,13 @@ void runQDBusXml2Cpp(const QStringList &params)
qdbusxml2cpp.setWorkingDirectory(cwd);
qdbusxml2cpp.start(command, params);
- if (!qdbusxml2cpp.waitForStarted())
+ if (!qdbusxml2cpp.waitForStarted()) {
qCritical() << qdbusxml2cpp.error();
- if (!qdbusxml2cpp.waitForFinished())
+ }
+
+ if (!qdbusxml2cpp.waitForFinished()) {
qCritical() << "m-servicefwgen: " << command << "did not finish";
+ }
}
void usage()
@@ -1348,8 +1343,9 @@ void usage()
int main(int argc, char *argv[])
{
- QCoreApplication *app = new QCoreApplication(argc, argv);
+ QCoreApplication app(argc, argv);
Q_UNUSED(app);
+ w.setArguments( argc, argv );
QString interfaceName("");
@@ -1363,21 +1359,24 @@ int main(int argc, char *argv[])
if (arg == "-h") {
usage();
- } else if (arg == "-a") {
+ }
+ else if (arg == "-a") {
w.setCreateAdaptor( true );
if ( w.createProxy() ) {
qDebug() << "both -p and -a supplied";
qDebug() << "disabling proxy generation";
w.setCreateProxy( false );
}
- } else if (arg == "-p") {
+ }
+ else if (arg == "-p") {
w.setCreateProxy( true );
if ( w.createAdaptor() ) {
qDebug() << "both -p and -a supplied";
qDebug() << "disabling adaptor generation";
w.setCreateAdaptor( false );
}
- } else {
+ }
+ else {
QStringList bits = arg.split("/");
interfaceName = bits.takeLast();
@@ -1401,8 +1400,7 @@ int main(int argc, char *argv[])
w.setInterfaceName( interfaceName );
w.preprocessXML();
- if ( w.createProxy() )
- {
+ if ( w.createProxy() ) {
runQDBusXml2Cpp(QStringList()
<< "-c"
<< w.upperCamelProxyName()
@@ -1411,10 +1409,8 @@ int main(int argc, char *argv[])
<< w.newXmlFileName());
processProxyHeaderFile();
-// processProxyCppFile();
- }
- else
- {
+ processProxyCppFile();
+ } else {
runQDBusXml2Cpp(QStringList()
<< "-c"
<< w.upperCamelAdaptorName()
diff --git a/tools/mapplettester/main.cpp b/tools/mapplettester/main.cpp
index 0b3f4fdc..7eff5fa0 100644
--- a/tools/mapplettester/main.cpp
+++ b/tools/mapplettester/main.cpp
@@ -29,10 +29,13 @@
#include <getopt.h>
#include <QString>
#include <MApplication>
+#include <MApplicationWindow>
+#include <MApplicationPage>
+#include <MMashupCanvas>
void usage(const char *progName)
{
- qWarning("Usage: %s -i [OPTION] METADATAFILENAME", progName);
+ qWarning("Usage: %s -i [OPTION] [METADATAFILENAME]", progName);
qWarning(" -i, --instanceId=ID Defines the instance id of the applet");
qWarning(" metadatafilename Defines the metadata file of the applet");
}
@@ -62,10 +65,18 @@ int main(int argc, char **argv)
}
}
- // Load applet metadata
if (optind >= argc || QString(argv[optind]).isEmpty()) {
- usage(argv[0]);
+ // No arguments: use the mashup canvas mode
+ MApplication application(argc, argv);
+ MApplicationWindow applicationWindow;
+ MApplicationPage *applicationPage = new MApplicationPage;
+ applicationPage->setComponentsDisplayMode(MApplicationPage::AllComponents, MApplicationPageModel::Hide);
+ applicationPage->setCentralWidget(new MMashupCanvas("appletcanvas"));
+ applicationPage->appear(&applicationWindow);
+ applicationWindow.show();
+ return application.exec();
} else {
+ // Arguments given: load a single applet
QString metaDataFileName = argv[optind];
MAppletMetaData metadata(metaDataFileName);
MApplication m_app(argc, argv, metadata.resourceIdentifier());
diff --git a/tools/mapplettester/mapplettester.css b/tools/mapplettester/mapplettester.css
new file mode 100644
index 00000000..0a3c273d
--- /dev/null
+++ b/tools/mapplettester/mapplettester.css
@@ -0,0 +1,110 @@
+MAppletHandleStyle {
+}
+
+MWidgetStyle#MAppletHandleSettingsWidget {
+ background-image: "duicontainer" 20 20 20 20;
+ padding-left: 6;
+ padding-right: 6;
+ padding-top: 6;
+ padding-bottom: 6;
+ margin-left: 6;
+ margin-right: 6;
+ margin-top: 6;
+ margin-bottom: 6;
+}
+MAbstractLayoutPolicyStyle#MAppletInventoryFlowLayoutPolicy {
+ margin-left: 14;
+ margin-top: 14;
+ margin-right: 14;
+ margin-bottom: 14;
+}
+MAbstractLayoutPolicyStyle#MAppletInventoryFlowLayoutPolicy.Landscape {
+ vertical-spacing: 12;
+ horizontal-spacing: 12;
+}
+MAbstractLayoutPolicyStyle#MAppletInventoryFlowLayoutPolicy.Portrait {
+ vertical-spacing: 8;
+ horizontal-spacing: 8;
+}
+
+MButtonStyle#MAppletButton {
+ font: $FONT_SMALL;
+ text-color: $COLOR_FOREGROUND;
+ icon-size: 64 64;
+}
+MButtonStyle#MAppletButton.Landscape {
+ preferred-size: 172 123;
+ minimum-size: 172 123;
+ maximum-size: 172 123;
+}
+MButtonStyle#MAppletButton.Portrait {
+ preferred-size: 94 123;
+ minimum-size: 94 123;
+ maximum-size: 94 123;
+}
+
+MSceneWindowStyle#MAppletInventoryWindow {
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 0;
+ padding-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ minimum-size: 100% -1;
+ preferred-size: 100% -1;
+ maximum-size: 100% -1;
+}
+
+MAppletInventoryStyle {
+ background-image: ;
+ minimum-size: 100% -1;
+ preferred-size: 100% -1;
+ maximum-size: 100% -1;
+ margin-top: 30;
+ margin-bottom: 88;
+}
+
+MButtonStyle#MAppletInventoryCloseButton {
+ icon-size: 40 40;
+ preferred-size: 64 64;
+ minimum-size: 64 64;
+ maximum-size: 64 64;
+}
+
+MOverlayStyle#MAppletInventoryCloseButtonOverlay {
+ minimum-size: 64 64;
+ preferred-size: 64 64;
+ maximum-size: 64 64;
+ offset: 0 0;
+}
+
+MMashupCanvasStyle {
+ /* Whether the applets on this mashup canvas should be inside containers or not */
+ container-mode: true;
+}
+
+MContainerStyle#MExtensionAreaInvisibleContainer {
+ margin-left: 0;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+
+ padding-left: 0;
+ padding-top: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+
+ background-opacity: 0.0;
+ background-image:;
+}
+
+MButtonStyle#MAppletInventoryButton {
+ preferred-size: 328 86;
+ minimum-size: 328 86;
+ maximum-size: 328 86;
+ margin-top: 12;
+ margin-bottom: 76;
+ font: $FONT_DEFAULT;
+}
diff --git a/tools/mapplettester/mapplettester.h b/tools/mapplettester/mapplettester.h
index 11e789ab..4f150138 100644
--- a/tools/mapplettester/mapplettester.h
+++ b/tools/mapplettester/mapplettester.h
@@ -27,7 +27,7 @@ class MAppletMetaData;
class MDataStore;
class QString;
class QSize;
-class MWidget;
+class QGraphicsWidget;
class MAppletTesterWindow;
class MApplication;
class MSettingsLanguageBinary;
@@ -107,7 +107,7 @@ private:
MDataStore *m_appletInstanceDataStore;
//! The applet widget
- MWidget *m_widget;
+ QGraphicsWidget *m_widget;
//! The application's window
MAppletTesterWindow *m_window;
diff --git a/tools/mapplettester/mapplettester.pro b/tools/mapplettester/mapplettester.pro
index 3b6ffef6..7889832d 100644
--- a/tools/mapplettester/mapplettester.pro
+++ b/tools/mapplettester/mapplettester.pro
@@ -25,5 +25,8 @@ SOURCES += main.cpp \
mapplettesterwindow.cpp \
../../src/extensions/mashup/mashup/mappletid.cpp
target.path = $$M_INSTALL_BIN
-INSTALLS += target
+INSTALLS += target style
CONFIG -= app_bundle
+
+style.path = $$M_THEME_DIR/base/meegotouch/mapplettester/style
+style.files = *.css
diff --git a/tools/messageid-check b/tools/messageid-check
index 09647467..b672c13e 100755
--- a/tools/messageid-check
+++ b/tools/messageid-check
@@ -1,4 +1,4 @@
-#! /usr/bin/perl -w # -*- mode: perl coding: utf-8 -*-
+#! /usr/bin/perl -w
########################################################################
use strict;
@@ -20,7 +20,7 @@ binmode STDERR, ":utf8";
#----------------------------------------------------------------------
# global variables
-my $version = "0.20100315";
+my $version = "0.20100514";
my $original_wd;
chomp ($original_wd = `pwd`);
@@ -29,6 +29,9 @@ my @handoffFiles = ();
my %handoffXmlTrees = ();
my $totalNumberOfIdsNotFoundInSpec = 0;
+my $totalNumberOfIdsLackingEngineeringEnglish = 0;
+
+my $class;
my $OPT_VERBOSITY;
my $OPT_VERSION;
@@ -41,379 +44,436 @@ my $OPT_HTTP_PASSWD;
my $OPT_SKIP_DOWNLOAD;
my $OPT_OUTPUTDIR;
-my @eePackages = (
- "accounts-ui-l10n-engineering-english",
- "backup-framework-l10n-engineering-english",
- "camera-ui-l10n-engineering-english",
- "cellular-adaptation-ui-l10n-engineering-english",
- "commhistory-daemon-l10n-engineering-english",
- "conn-dui-bluetooth-l10n-engineering-english",
- "conn-dui-cellular-l10n-engineering-english",
- "conn-dui-internet-l10n-engineering-english",
- "conn-dui-wlan-l10n-engineering-english",
- "contacts-l10n-engineering-english",
- "dui-demos-widgetsgallery-l10n-engineering-english",
- "duicontrolpanel-callandsimapplet-l10n-engineering-english",
- "duicontrolpanel-datetimeapplet-l10n-engineering-english",
- "duicontrolpanel-displaylanguageapplet-l10n-engineering-english",
- "duicontrolpanel-keyboardlanguageapplet-l10n-engineering-english",
- "duicontrolpanel-l10n-engineering-english",
- "duicontrolpanel-networkapplet-l10n-engineering-english",
- "duicontrolpanel-regionformatapplet-l10n-engineering-english",
- "duihelp-l10n-engineering-english",
- "duihomescreen-l10n-engineering-english",
- "duihomescreen-plugins-weatherapplet-l10n-engineering-english",
- "duistartup-l10n-engineering-english",
- "duistatusind-connectivity-l10n-engineering-english",
- "gallery-l10n-engineering-english",
- "keychain-ui-l10n-engineering-english",
- "libdatacounterdialog-l10n-engineering-english",
- "libdui-l10n-engineering-english",
- "libpresence0-l10n-engineering-english",
- "libshare-ui-l10n-engineering-english",
- "signon-ui-l10n-engineering-english",
- "systemui-applets-l10n-engineering-english",
- "systemui-l10n-engineering-english",
- "transfer-ui-l10n-engineering-english",
- "webupload-engine-l10n-engineering-english"
- );
-
-my @eeFiles = (
- "/usr/share/l10n/dui/accounts-ui.qm",
- "/usr/share/l10n/dui/backup-framework.qm",
- "/usr/share/l10n/dui/camera-ui.qm",
- "/usr/share/l10n/dui/celluid.qm",
- "/usr/share/l10n/dui/conn-dui-bluetooth.qm",
- "/usr/share/l10n/dui/conn-dui-cellular.qm",
- "/usr/share/l10n/dui/conn-dui-internet.qm",
- "/usr/share/l10n/dui/conn-dui-wlan.qm",
- "/usr/share/l10n/dui/contacts.qm",
- "/usr/share/l10n/dui/duicontrolpanel-callandsim.qm",
- "/usr/share/l10n/dui/duicontrolpanel-datetime.qm",
- "/usr/share/l10n/dui/duicontrolpanel-displaylanguage.qm",
- "/usr/share/l10n/dui/duicontrolpanel-keyboardlanguage.qm",
- "/usr/share/l10n/dui/duicontrolpanel-network.qm",
- "/usr/share/l10n/dui/duicontrolpanel-regionformat.qm",
- "/usr/share/l10n/dui/duicontrolpanel.qm",
- "/usr/share/l10n/dui/duihelp.qm",
- "/usr/share/l10n/dui/duihome.qm",
- "/usr/share/l10n/dui/duistartup.qm",
- "/usr/share/l10n/dui/duistatusindicatormenu-connectivityplugin.qm",
- "/usr/share/l10n/dui/gallery.qm",
- "/usr/share/l10n/dui/keychain-ui.qm",
- "/usr/share/l10n/dui/libdatacounterdialog.qm",
- "/usr/share/l10n/dui/libdui.qm",
- "/usr/share/l10n/dui/libpresence0.qm",
- "/usr/share/l10n/dui/messaging.qm",
- "/usr/share/l10n/dui/plugin-webupload-engine.qm",
- "/usr/share/l10n/dui/share-ui.qm",
- "/usr/share/l10n/dui/signon-ui.qm",
- "/usr/share/l10n/dui/systemui-applets.qm",
- "/usr/share/l10n/dui/systemui.qm",
- "/usr/share/l10n/dui/telephony.qm",
- "/usr/share/l10n/dui/transfer-ui.qm",
- "/usr/share/l10n/dui/weatherappletres.qm",
- "/usr/share/l10n/dui/webupload-engine.qm",
- );
+# engineering English packages which should be ignored because they are obsolete:
+my @engineeringEnglishPackagesObsolete = (
+ "libdui-l10n-engineering-english", # now "libmeegotouch-l10n-engineering-english"
+ "duistartup-l10n-engineering-english" # now "mstartup-l10n-engineering-english"
+ );
+
+# engineering English packages which should be ignored because they are only demos:
+my @engineeringEnglishPackagesIgnore = (
+ "meegotouch-demos-widgetsgallery-l10n-engineering-english"
+ );
+
+my @engineeringEnglishPackages = (
+ "account-plugin-facebook-l10n-engineering-english",
+ "account-plugin-google-l10n-engineering-english",
+ "account-plugin-ovi-l10n-engineering-english",
+ "account-plugin-youtube-l10n-engineering-english",
+ "accounts-ui-l10n-engineering-english",
+ "backup-framework-l10n-engineering-english",
+ "call-history-l10n-engineering-english",
+ "call-ui-l10n-engineering-english",
+ "camera-ui-l10n-engineering-english",
+ "cellular-adaptation-ui-l10n-engineering-english",
+ "commhistory-daemon-l10n-engineering-english",
+ "conn-dui-bluetooth-l10n-engineering-english",
+ "conn-dui-cellular-l10n-engineering-english",
+ "conn-dui-internet-l10n-engineering-english",
+ "conn-dui-wlan-l10n-engineering-english",
+ "contacts-l10n-engineering-english",
+ "crash-reporter-l10n-engineering-english",
+ "dialer-l10n-engineering-english",
+ "duicontrolpanel-callandsimapplet-l10n-engineering-english",
+ "duicontrolpanel-certificatesapplet-l10n-engineering-english",
+ "duicontrolpanel-datetimeapplet-l10n-engineering-english",
+ "duicontrolpanel-displaylanguageapplet-l10n-engineering-english",
+ "duicontrolpanel-keyboardlanguageapplet-l10n-engineering-english",
+ "duicontrolpanel-l10n-engineering-english",
+ "duicontrolpanel-networkapplet-l10n-engineering-english",
+ "duicontrolpanel-regionformatapplet-l10n-engineering-english",
+ "duihelp-l10n-engineering-english",
+ "duihomescreen-l10n-engineering-english",
+ "duihomescreen-plugins-weatherapplet-l10n-engineering-english",
+ "duistatusind-connectivity-l10n-engineering-english",
+ "feedreader-l10n-engineering-english",
+ "gallery-l10n-engineering-english",
+ "keychain-ui-l10n-engineering-english",
+ "libdatacounterdialog-l10n-engineering-english",
+ "libdialerui-l10n-engineering-english",
+ "libfeedsettings-l10n-engineering-english",
+ "liblocationpicker-l10n-engineering-english",
+ "libmcontentwidgets-l10n-engineering-english",
+ "libmeegotouch-l10n-engineering-english",
+ "libpresence0-l10n-engineering-english",
+ "libshare-ui-l10n-engineering-english",
+ "libwebupload-l10n-engineering-english",
+ "me-l10n-engineering-english",
+ # ignore "meegotouch-demos-widgetsgallery-l10n-engineering-english",
+ "messaging-ui-l10n-engineering-english",
+ "mms-ui-l10n-engineering-english",
+ "mstartup-l10n-engineering-english",
+ "office-tools-l10n-engineering-english",
+ "package-manager-ui-l10n-engineering-english",
+ "signon-ui-l10n-engineering-english",
+ "systemui-applets-l10n-engineering-english",
+ "systemui-l10n-engineering-english",
+ "transfer-ui-l10n-engineering-english",
+ "webupload-engine-l10n-engineering-english"
+ );
+
+my @engineeringEnglishFiles = (
+ "/usr/share/l10n/meegotouch/accounts-ui.qm",
+ # demo only "/usr/share/l10n/meegotouch/animatedlayout.qm",
+ "/usr/share/l10n/meegotouch/backup.qm",
+ "/usr/share/l10n/meegotouch/call-history.qm",
+ "/usr/share/l10n/meegotouch/call-ui.qm",
+ # camera-ui is still in the old directory, will move soon
+ "/usr/share/l10n/dui/camera-ui.qm",
+ "/usr/share/l10n/meegotouch/celluid.qm",
+ "/usr/share/l10n/meegotouch/commhistoryd.qm",
+ "/usr/share/l10n/meegotouch/conn-dui-bluetooth.qm",
+ "/usr/share/l10n/meegotouch/conn-dui-cellular.qm",
+ "/usr/share/l10n/meegotouch/conn-dui-internet.qm",
+ "/usr/share/l10n/meegotouch/conn-dui-wlan.qm",
+ "/usr/share/l10n/meegotouch/contacts.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-callandsim.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-certificatesapplet.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-datetime.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-displaylanguage.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-keyboardlanguage.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-network.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel-regionformat.qm",
+ "/usr/share/l10n/meegotouch/duicontrolpanel.qm",
+ "/usr/share/l10n/meegotouch/duihelp.qm",
+ "/usr/share/l10n/meegotouch/duihome.qm",
+ # duistatusindicatormenu-connectivityplugin.qm is still in the old directory
+ "/usr/share/l10n/dui/duistatusindicatormenu-connectivityplugin.qm",
+ "/usr/share/l10n/meegotouch/facebookplugin.qm",
+ "/usr/share/l10n/meegotouch/feeds.qm",
+ "/usr/share/l10n/meegotouch/feedsettings.qm",
+ "/usr/share/l10n/meegotouch/gallery.qm",
+ "/usr/share/l10n/meegotouch/googleplugin.qm",
+ "/usr/share/l10n/meegotouch/keychain-ui.qm",
+ "/usr/share/l10n/meegotouch/libdatacounterdialog.qm",
+ "/usr/share/l10n/meegotouch/libdialerui.qm",
+ "/usr/share/l10n/meegotouch/liblocationpicker.qm",
+ "/usr/share/l10n/meegotouch/libmcontentwidgets.qm",
+ "/usr/share/l10n/meegotouch/libmeegotouch.qm",
+ "/usr/share/l10n/meegotouch/libpresence0.qm",
+ "/usr/share/l10n/meegotouch/libwebupload.qm",
+ "/usr/share/l10n/meegotouch/libwebuploadpui.qm",
+ "/usr/share/l10n/meegotouch/me.qm",
+ "/usr/share/l10n/meegotouch/messaging-ui.qm",
+ "/usr/share/l10n/meegotouch/mms-contacts-actions.qm",
+ "/usr/share/l10n/meegotouch/mms-messaging-plugin.qm",
+ "/usr/share/l10n/meegotouch/mms-settings.qm",
+ "/usr/share/l10n/meegotouch/mms-share-plugin.qm",
+ "/usr/share/l10n/meegotouch/mstartup.qm",
+ "/usr/share/l10n/meegotouch/officetools.qm",
+ "/usr/share/l10n/meegotouch/oviplugin.qm",
+ "/usr/share/l10n/meegotouch/package-manager-ui.qm",
+ "/usr/share/l10n/meegotouch/share-ui.qm",
+ "/usr/share/l10n/meegotouch/signon-ui.qm",
+ "/usr/share/l10n/meegotouch/systemui-applets.qm",
+ "/usr/share/l10n/meegotouch/systemui.qm",
+ "/usr/share/l10n/meegotouch/transfer-ui.qm",
+ "/usr/share/l10n/meegotouch/weatherappletres.qm",
+ "/usr/share/l10n/meegotouch/webupload-engine.qm",
+ # demo only "/usr/share/l10n/meegotouch/widgetsgallery.qm",
+ "/usr/share/l10n/meegotouch/youtubeplugin.qm"
+ );
#----------------------------------------------------------------------
# subroutines:
sub usage {
- printf STDERR "Usage: photo-gallery [option] ...\n";
- printf STDERR "-v, --verbose print some progress messages to standard output.\n";
- printf STDERR " --version display version and exit.\n";
- printf STDERR "-h, --help display this help and exit.\n";
- printf STDERR " --eedir directory where the ee .qm files are.\n";
- printf STDERR " --handoffurl URL of the “handoff” .ts files.\n";
- printf STDERR " --handoffdir directory to save the “handoff” .ts files.\n";
- printf STDERR " --http-user user name to access the “handoff” .ts files.\n";
- printf STDERR " --http-passwd password to access the “handoff” .ts files.\n";
- printf STDERR " or use .netrc to store user name and password.\n";
- printf STDERR " --skip-dowload skip download.\n";
- printf STDERR " --output-dir directory to write the output files to.\n";
- printf STDERR " default is ./messageid-check-results/\n";
- exit 1;
+ printf STDERR "Usage: photo-gallery [option] ...\n";
+ printf STDERR "-v, --verbose print some progress messages to standard output.\n";
+ printf STDERR " --version display version and exit.\n";
+ printf STDERR "-h, --help display this help and exit.\n";
+ printf STDERR " --eedir directory where the ee .qm files are.\n";
+ printf STDERR " --handoffurl URL of the “handoff” .ts files.\n";
+ printf STDERR " --handoffdir directory to save the “handoff” .ts files.\n";
+ printf STDERR " --http-user user name to access the “handoff” .ts files.\n";
+ printf STDERR " --http-passwd password to access the “handoff” .ts files.\n";
+ printf STDERR " or use .netrc to store user name and password.\n";
+ printf STDERR " --skip-dowload skip download.\n";
+ printf STDERR " --output-dir directory to write the output files to.\n";
+ printf STDERR " default is ./messageid-check-results/\n";
+ exit 1;
}
sub mySystem {
- my ($command) = @_;
- if ($OPT_VERBOSITY >= 1) {
- print "executing: $command\n";
- }
- return system ($command);
+ my ($command) = @_;
+ if ($OPT_VERBOSITY >= 1) {
+ print "executing: $command\n";
+ }
+ return system ($command);
}
sub myExit {
- my ($value) =@_;
- chdir $original_wd || die "Can’t cd to $original_wd: $!\n";
- exit ($value);
+ my ($value) =@_;
+ chdir $original_wd || die "Can’t cd to $original_wd: $!\n";
+ exit ($value);
}
sub myBasename {
- my ($path) =@_;
- $path =~ /\/([^\/]+)$/; # basename (strip directory)
- return $1;
+ my ($path) =@_;
+ $path =~ /\/([^\/]+)$/; # basename (strip directory)
+ return $1;
}
sub writeHtml {
- my ($htmlOutBody) =@_;
- my $date = decode_utf8(`date`);
- chomp($date);
- my $title = "Results of messageid-check (version $version) run on " . $date;
-
- my $htmlOutHeader = "";
-
- $htmlOutHeader .= sprintf "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
- $htmlOutHeader .= sprintf "<html>\n";
- $htmlOutHeader .= sprintf "<head>\n";
- $htmlOutHeader .= sprintf "<title>%s</title>\n", $title;
- $htmlOutHeader .= sprintf "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n";
- $htmlOutHeader .= sprintf "<style type=\"text/css\">\n";
- $htmlOutHeader .= sprintf "body {\n";
- $htmlOutHeader .= sprintf " color:#000000;\n";
- $htmlOutHeader .= sprintf " background-color:#FFFFFF;\n";
- $htmlOutHeader .= sprintf " font-family: sans-serif;\n";
- $htmlOutHeader .= sprintf " font-size: 1em;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".okcolor {\n";
- $htmlOutHeader .= sprintf " color:#00FF00;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".errorcolor {\n";
- $htmlOutHeader .= sprintf " color:#FF0000;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".okbgcolor {\n";
- $htmlOutHeader .= sprintf " background-color:#ceeebc;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".errorbgcolor {\n";
- $htmlOutHeader .= sprintf " background-color:#ffcdcd;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".eefile {\n";
- $htmlOutHeader .= sprintf " border: solid 1px #88c3ff;\n";
- $htmlOutHeader .= sprintf " margin-bottom: 10px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".title {\n";
- $htmlOutHeader .= sprintf " background-color: #5a9fe5;\n";
- $htmlOutHeader .= sprintf " font-weight: bold;\n";
- $htmlOutHeader .= sprintf " padding: 5px;\n";
- $htmlOutHeader .= sprintf " padding-left: 15px;\n";
- $htmlOutHeader .= sprintf " font-size: 20px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".package {\n";
- $htmlOutHeader .= sprintf " background-color: #71b1f2;\n";
- $htmlOutHeader .= sprintf " font-weight: bold;\n";
- $htmlOutHeader .= sprintf " padding: 5px;\n";
- $htmlOutHeader .= sprintf " padding-left: 15px;\n";
- $htmlOutHeader .= sprintf " font-size: 20px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf "table.summary {\n";
- $htmlOutHeader .= sprintf " text-align: right;\n";
- $htmlOutHeader .= sprintf " font-style: normal;\n";
- $htmlOutHeader .= sprintf " font-size: small;\n";
- $htmlOutHeader .= sprintf " border: 1;\n";
- $htmlOutHeader .= sprintf " margin-top: 0em;\n";
- $htmlOutHeader .= sprintf " margin-bottom: 0em;\n";
- $htmlOutHeader .= sprintf " margin-left: 0em;\n";
- $htmlOutHeader .= sprintf " margin-right: 0em;\n";
- $htmlOutHeader .= sprintf " padding-top: 1em;\n";
- $htmlOutHeader .= sprintf " padding-bottom: 1em;\n";
- $htmlOutHeader .= sprintf " padding-left: 0em;\n";
- $htmlOutHeader .= sprintf " padding-right: 0em;\n";
- $htmlOutHeader .= sprintf " clear: left;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf "table.summary td {\n";
- $htmlOutHeader .= sprintf " color: #000000;\n";
- $htmlOutHeader .= sprintf " padding-top: 0em;\n";
- $htmlOutHeader .= sprintf " padding-bottom: 0em;\n";
- $htmlOutHeader .= sprintf " padding-left: 0.5em;\n";
- $htmlOutHeader .= sprintf " padding-right: 0.5em;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".maintainer {\n";
- $htmlOutHeader .= sprintf " text-align: right;\n";
- $htmlOutHeader .= sprintf " font-size: 20px;\n";
- $htmlOutHeader .= sprintf " background-color: #88c3ff;\n";
- $htmlOutHeader .= sprintf " padding-right: 20px;\n";
- $htmlOutHeader .= sprintf " padding-bottom: 1px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".errorlist {\n";
- $htmlOutHeader .= sprintf " text-align: left;\n";
- $htmlOutHeader .= sprintf " background-color: #ffcdcd;\n";
- $htmlOutHeader .= sprintf " padding-left: 20px;\n";
- $htmlOutHeader .= sprintf " padding-top: 20px;\n";
- $htmlOutHeader .= sprintf " padding-bottom: 1px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf ".oklist {\n";
- $htmlOutHeader .= sprintf " text-align: left;\n";
- $htmlOutHeader .= sprintf " background-color: #ceeebc;\n";
- $htmlOutHeader .= sprintf " padding-left: 20px;\n";
- $htmlOutHeader .= sprintf " padding-top: 20px;\n";
- $htmlOutHeader .= sprintf " padding-bottom: 1px;\n";
- $htmlOutHeader .= sprintf "}\n";
- $htmlOutHeader .= sprintf "</style>\n";
- $htmlOutHeader .= sprintf "</head>\n";
- $htmlOutHeader .= sprintf "<body>\n";
- $htmlOutHeader .= sprintf "<h1>%s</h1>\n", $title;
-
- my $htmlOutFooter = "";
- $htmlOutFooter .= sprintf "</body>\n";
- $htmlOutFooter .= sprintf "</html>\n";
-
- my $htmlOutTotal = $htmlOutHeader . $htmlOutBody . $htmlOutFooter;
-
- open (HTML, ">$OPT_OUTPUTDIR/messageid-check-result.html") || die "can't open file $OPT_OUTPUTDIR/messageid-check-result.html: $!";
- binmode HTML, ":utf8";
- printf HTML "%s", $htmlOutTotal;
- close (HTML);
+ my ($htmlOutBody) =@_;
+ my $date = decode_utf8(`date`);
+ chomp($date);
+ my $title = "Results of messageid-check (version $version) run on " . $date;
+
+ my $htmlOutHeader = "";
+ $htmlOutHeader .= <<"EOF";
+<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
+<html>
+<head>
+<title>$title</title>
+<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">
+<style type=\"text/css\">
+body {
+ color:#000000;
+ background-color:#FFFFFF;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+.okcolor {
+ color:#00FF00;
+}
+.errorcolor {
+ color:#FF0000;
+}
+.okbgcolor {
+ background-color:#ceeebc;
+}
+.errorbgcolor {
+ background-color:#ffcdcd;
+}
+.eefile {
+ border: solid 1px #88c3ff;
+ margin-bottom: 10px;
+}
+.title {
+ background-color: #5a9fe5;
+ font-weight: bold;
+ padding: 5px;
+ padding-left: 15px;
+ font-size: 20px;
+}
+.package {
+ background-color: #71b1f2;
+ font-weight: bold;
+ padding: 5px;
+ padding-left: 15px;
+ font-size: 20px;
+}
+table.summary {
+ text-align: right;
+ font-style: normal;
+ font-size: small;
+ border: 1;
+ margin-top: 0em;
+ margin-bottom: 0em;
+ margin-left: 0em;
+ margin-right: 0em;
+ padding-top: 1em;
+ padding-bottom: 1em;
+ padding-left: 0em;
+ padding-right: 0em;
+ clear: left;
+}
+table.summary td {
+ color: #000000;
+ padding-top: 0em;
+ padding-bottom: 0em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.maintainer {
+ text-align: right;
+ font-size: 20px;
+ background-color: #88c3ff;
+ padding-right: 20px;
+ padding-bottom: 1px;
+}
+.errorlist {
+ text-align: left;
+ background-color: #ffcdcd;
+ padding-left: 20px;
+ padding-top: 20px;
+ padding-bottom: 1px;
+}
+.oklist {
+ text-align: left;
+ background-color: #ceeebc;
+ padding-left: 20px;
+ padding-top: 20px;
+ padding-bottom: 1px;
+}
+</style>
+</head>
+<body>
+<h1>$title</h1>
+EOF
+
+ my $htmlOutFooter = "";
+ $htmlOutFooter .= <<"EOF";
+</body>
+</html>
+EOF
+
+ my $htmlOutTotal = $htmlOutHeader . $htmlOutBody . $htmlOutFooter;
+
+ open (HTML, ">$OPT_OUTPUTDIR/messageid-check-result.html") || die "can't open file $OPT_OUTPUTDIR/messageid-check-result.html: $!";
+ binmode HTML, ":utf8";
+ printf HTML "%s", $htmlOutTotal;
+ close (HTML);
}
sub download {
- if (mySystem("fakeroot apt-get update")) {
- printf (STDERR "“fakeroot apt-get update” didn’t work.\n");
- exit (1);
- }
-
- for my $eePackage (@eePackages) {
- if (mySystem("fakeroot apt-get -y --force-yes install $eePackage")) {
- printf (STDERR "“fakeroot apt-get -y --force-yes install $eePackage” didn’t work.\n");
- exit (1);
+ if (mySystem("fakeroot apt-get update")) {
+ printf (STDERR "“fakeroot apt-get update” didn’t work.\n");
+ exit (1);
}
- else {
- printf (STDOUT "“fakeroot apt-get -y --force-yes install $eePackage” OK.\n");
+
+ for my $engineeringEnglishPackage (@engineeringEnglishPackages) {
+ if (mySystem("fakeroot apt-get -y --force-yes install $engineeringEnglishPackage")) {
+ printf (STDERR "“fakeroot apt-get -y --force-yes install $engineeringEnglishPackage” didn’t work.\n");
+ exit (1);
+ }
+ else {
+ printf (STDOUT "“fakeroot apt-get -y --force-yes install $engineeringEnglishPackage” OK.\n");
+ }
}
- }
-
- if (-d "$OPT_HANDOFF_DIR") {
- rmtree ("$OPT_HANDOFF_DIR", {verbose => 1});
- }
- mkdir ("$OPT_HANDOFF_DIR") || die "Can’t mkdir $OPT_HANDOFF_DIR: $!\n";
- chdir ("$OPT_HANDOFF_DIR") || die "Can’t cd to $OPT_HANDOFF_DIR: $!\n";
-
- my $wgetCommand = "wget -nd -r -l1 ";
- if ($OPT_HTTP_USER ne "") {
- $wgetCommand .= "--http-user=$OPT_HTTP_USER ";
- }
- if ($OPT_HTTP_PASSWD ne "") {
- $wgetCommand .= "--http-passwd=$OPT_HTTP_PASSWD ";
- }
- $wgetCommand .= "$OPT_HANDOFF_URL";
-
- if (mySystem($wgetCommand)) {
- printf (STDERR "“wget $OPT_HANDOFF_URL” didn’t work.\n");
- myExit (1);
- }
-
- chdir $original_wd || die "Can’t cd to $original_wd: $!\n";
-
- @handoffFiles = glob ("$OPT_HANDOFF_DIR/*.ts");
- if ($#handoffFiles < 0) {
- printf (STDERR "download of handoff .ts files failed.\n");
- myExit(1);
- }
-
- # Convert handoff files mac2unix:
- for my $file (@handoffFiles) {
- printf(STDOUT "mac2unix %s\n", $file);
- my $fileContents = "";
- open (TS, "<:encoding(UTF-8)", "$file") || die "Can’t open file $file: $!";
- while(<TS>) {
- $ARG =~ s/\x{FEFF}//; # remove BOM
- $ARG =~ s/\r/\n/gi; # replace returns with newlines
- $fileContents .= $ARG;
+
+ if (-d "$OPT_HANDOFF_DIR") {
+ rmtree ("$OPT_HANDOFF_DIR", {verbose => 1});
+ }
+ mkdir ("$OPT_HANDOFF_DIR") || die "Can’t mkdir $OPT_HANDOFF_DIR: $!\n";
+ chdir ("$OPT_HANDOFF_DIR") || die "Can’t cd to $OPT_HANDOFF_DIR: $!\n";
+
+ my $wgetCommand = "wget -nd -r -l1 ";
+ if ($OPT_HTTP_USER ne "") {
+ $wgetCommand .= "--http-user=$OPT_HTTP_USER ";
+ }
+ if ($OPT_HTTP_PASSWD ne "") {
+ $wgetCommand .= "--http-passwd=$OPT_HTTP_PASSWD ";
+ }
+ $wgetCommand .= "$OPT_HANDOFF_URL";
+
+ if (mySystem($wgetCommand)) {
+ printf (STDERR "“wget $OPT_HANDOFF_URL” didn’t work.\n");
+ myExit (1);
+ }
+
+ chdir $original_wd || die "Can’t cd to $original_wd: $!\n";
+
+ @handoffFiles = glob ("$OPT_HANDOFF_DIR/*.ts");
+ if ($#handoffFiles < 0) {
+ printf (STDERR "download of handoff .ts files failed.\n");
+ myExit(1);
+ }
+
+ # Convert handoff files mac2unix:
+ for my $file (@handoffFiles) {
+ printf(STDOUT "mac2unix %s\n", $file);
+ my $fileContents = "";
+ open (TS, "<:encoding(UTF-8)", "$file") || die "Can’t open file $file: $!";
+ while(<TS>) {
+ $ARG =~ s/\x{FEFF}//; # remove BOM
+ $ARG =~ s/\r/\n/gi; # replace returns with newlines
+ $fileContents .= $ARG;
+ }
+ close (TS);
+ open (TS, ">:encoding(UTF-8)", "$file") || die "Can’t open file $file: $!";
+ printf(TS "%s", $fileContents);
+ close (TS);
}
- close (TS);
- open (TS, ">:encoding(UTF-8)", "$file") || die "Can’t open file $file: $!";
- printf(TS "%s", $fileContents);
- close (TS);
- }
}
sub readHandoffXmlTrees {
- for my $handoffFile (glob ("$OPT_HANDOFF_DIR/*.ts")) {
- my $xmlParser = new XML::Parser(Style => 'Tree', ProtocolEncoding => 'UTF-8');
- $handoffXmlTrees{$handoffFile} = $xmlParser->parsefile($handoffFile);
- }
+ for my $handoffFile (glob ("$OPT_HANDOFF_DIR/*.ts")) {
+ my $xmlParser = new XML::Parser(Style => 'Tree', ProtocolEncoding => 'UTF-8');
+ $handoffXmlTrees{$handoffFile} = $xmlParser->parsefile($handoffFile);
+ }
}
sub checkMessageIdFromSourceAgainstHandoff {
- my ($eeFile, $eeMessageId, $htmlOutRef) = @_;
- my $eeMessageIdIsInSpecCount = 0;
-
- for my $handoffFile (@handoffFiles) {
- my $tree = $handoffXmlTrees{$handoffFile};
- my @tsTree = @{$tree->[1]};
- # print Dumper(@tsTree);
- my $extra_application_info = "";
- my $extra_ui_spec_document = "";
- my $extra_ts_date = "";
- my $extra_ts_macroversion = "";
- my @contextTree = ();
- for (my $i = 0; $i < $#tsTree; ++$i) {
- SWITCH: {
- if ($tsTree[$i] eq "extra-application-info") {
- $extra_application_info = $tsTree[$i+1][2];
- last SWITCH;
- }
- if ($tsTree[$i] eq "extra-uispec-document") {
- $extra_ui_spec_document = $tsTree[$i+1][2];
- last SWITCH;
- }
- if ($tsTree[$i] eq "extra-ts-date") {
- $extra_ts_date = $tsTree[$i+1][2];
- last SWITCH;
- }
- if ($tsTree[$i] eq "extra-ts-macroversion") {
- $extra_ts_macroversion = $tsTree[$i+1][2];
- last SWITCH;
- }
- if ($tsTree[$i] eq "context") {
- @contextTree = @{$tsTree[$i+1]};
- last SWITCH;
- }
- }
- }
- for (my $i = 0; $i < $#contextTree; ++$i) {
- if ($contextTree[$i] eq "message") {
- my @messageTree = @{$contextTree[$i+1]};
- my $messageId = $messageTree[0]{"id"};
- my $source = "";
- my $extracomment = "";
- for (my $j = 0; $j < $#messageTree; ++$j) {
- SWITCH: {
- if ($messageTree[$j] eq "source") {
- $source = $messageTree[$j+1][2];
- last SWITCH;
+ my ($engineeringEnglishFile, $eeMessageId, $htmlOutRef) = @_;
+ my $eeMessageIdIsInSpecCount = 0;
+
+ for my $handoffFile (@handoffFiles) {
+ my $tree = $handoffXmlTrees{$handoffFile};
+ my @tsTree = @{$tree->[1]};
+ # print Dumper(@tsTree);
+ my $extra_application_info = "";
+ my $extra_ui_spec_document = "";
+ my $extra_ts_date = "";
+ my $extra_ts_macroversion = "";
+ my @contextTree = ();
+ for (my $i = 0; $i < $#tsTree; ++$i) {
+ SWITCH: {
+ if ($tsTree[$i] eq "extra-application-info") {
+ $extra_application_info = $tsTree[$i+1][2];
+ last SWITCH;
+ }
+ if ($tsTree[$i] eq "extra-uispec-document") {
+ $extra_ui_spec_document = $tsTree[$i+1][2];
+ last SWITCH;
+ }
+ if ($tsTree[$i] eq "extra-ts-date") {
+ $extra_ts_date = $tsTree[$i+1][2];
+ last SWITCH;
+ }
+ if ($tsTree[$i] eq "extra-ts-macroversion") {
+ $extra_ts_macroversion = $tsTree[$i+1][2];
+ last SWITCH;
+ }
+ if ($tsTree[$i] eq "context") {
+ @contextTree = @{$tsTree[$i+1]};
+ last SWITCH;
+ }
}
- if ($messageTree[$j] eq "extracomment") {
- $extracomment = $messageTree[$j+1][2];
- last SWITCH;
- }
- }
}
- if ($messageId eq $eeMessageId) {
- $eeMessageIdIsInSpecCount += 1;
- if ($OPT_VERBOSITY >= 1) {
- printf STDOUT "++++++OK: id “%s” spec “%s” (%s)\n",
- $eeMessageId, $extra_ui_spec_document, myBasename($handoffFile);
- }
- ${$htmlOutRef} .= sprintf "<li>";
- ${$htmlOutRef} .= sprintf "%s found in spec “%s” (%s)",
- $eeMessageId, $extra_ui_spec_document, myBasename($handoffFile);
- ${$htmlOutRef} .= sprintf "</li>\n";
+ for (my $i = 0; $i < $#contextTree; ++$i) {
+ if ($contextTree[$i] eq "message") {
+ my @messageTree = @{$contextTree[$i+1]};
+ my $messageId = $messageTree[0]{"id"};
+ my $source = "";
+ my $extracomment = "";
+ for (my $j = 0; $j < $#messageTree; ++$j) {
+ SWITCH: {
+ if ($messageTree[$j] eq "source") {
+ $source = $messageTree[$j+1][2];
+ last SWITCH;
+ }
+ if ($messageTree[$j] eq "extracomment") {
+ $extracomment = $messageTree[$j+1][2];
+ last SWITCH;
+ }
+ }
+ }
+ if ($messageId eq $eeMessageId) {
+ $eeMessageIdIsInSpecCount += 1;
+ if ($OPT_VERBOSITY >= 1) {
+ printf STDOUT "++++++OK: id “%s” spec “%s” (%s)\n",
+ $eeMessageId, $extra_ui_spec_document, myBasename($handoffFile);
+ }
+ ${$htmlOutRef} .= "<li>";
+ ${$htmlOutRef} .= sprintf "%s found in spec “%s” (%s)",
+ $eeMessageId, $extra_ui_spec_document, myBasename($handoffFile);
+ ${$htmlOutRef} .= "</li>\n";
+ }
+ }
}
- }
}
- }
- if ($eeMessageIdIsInSpecCount == 0) {
- if ($OPT_VERBOSITY >= 1) {
- printf STDOUT "***ERROR: id “%s” not found in spec\n", $eeMessageId;
+ if ($eeMessageIdIsInSpecCount == 0) {
+ if ($OPT_VERBOSITY >= 1) {
+ printf STDOUT "***ERROR: id “%s” not found in spec\n", $eeMessageId;
+ }
+ ${$htmlOutRef} .= "<li>";
+ ${$htmlOutRef} .= sprintf "%s", $eeMessageId;
+ ${$htmlOutRef} .= "</li>\n";
}
- ${$htmlOutRef} .= sprintf "<li>";
- ${$htmlOutRef} .= sprintf "%s", $eeMessageId;
- ${$htmlOutRef} .= sprintf "</li>\n";
- }
-
- return $eeMessageIdIsInSpecCount;
+ return $eeMessageIdIsInSpecCount;
}
#----------------------------------------------------------------------
@@ -432,72 +492,72 @@ unless (GetOptions(\%opt,
'http-passwd=s', \$OPT_HTTP_PASSWD,
'skip-download', \$OPT_SKIP_DOWNLOAD,
'output-dir=s', \$OPT_OUTPUTDIR,
- )) {
- &usage ();
- exit 1;
+ )) {
+ &usage ();
+ exit 1;
}
if (!defined $OPT_VERBOSITY) {
- $OPT_VERBOSITY = 1;
+ $OPT_VERBOSITY = 1;
}
if (!defined $OPT_VERSION) {
- $OPT_VERSION = 0;
+ $OPT_VERSION = 0;
}
if (!defined $OPT_HELP) {
- $OPT_HELP = 0;
+ $OPT_HELP = 0;
}
if (!defined $OPT_EEDIR) {
- $OPT_EEDIR="/usr/share/l10n/dui";
+ $OPT_EEDIR="/usr/share/l10n/meegotouch";
}
if (!defined $OPT_HANDOFF_URL) {
- $OPT_HANDOFF_URL="https://projects.maemo.org/svn/l10n/projects/harmattan/vendor/handoff/";
+ $OPT_HANDOFF_URL="https://projects.maemo.org/svn/l10n/projects/harmattan/vendor/handoff/";
}
if (!defined $OPT_HANDOFF_DIR) {
- $OPT_HANDOFF_DIR="/tmp/handoff";
+ $OPT_HANDOFF_DIR="/tmp/handoff";
}
if (!defined $OPT_HTTP_USER) {
- $OPT_HTTP_USER="";
+ $OPT_HTTP_USER="";
}
if (!defined $OPT_HTTP_PASSWD) {
- $OPT_HTTP_PASSWD="";
+ $OPT_HTTP_PASSWD="";
}
if (!defined $OPT_SKIP_DOWNLOAD) {
- $OPT_SKIP_DOWNLOAD = 0;
+ $OPT_SKIP_DOWNLOAD = 0;
}
if (!defined $OPT_OUTPUTDIR) {
- $OPT_OUTPUTDIR = "$original_wd/messageid-check-results/";
+ $OPT_OUTPUTDIR = "$original_wd/messageid-check-results/";
}
if ($OPT_VERSION) {
- print "messageid-check $version\n";
- exit 0;
+ print "messageid-check $version\n";
+ exit 0;
}
if ($OPT_HELP) {
- &usage ();
- exit 0;
+ &usage ();
+ exit 0;
}
if ($OPT_VERBOSITY >=1) {
- select (STDOUT);
- $OUTPUT_AUTOFLUSH = 1;
- select (STDERR);
- $OUTPUT_AUTOFLUSH = 1;
+ select (STDOUT);
+ $OUTPUT_AUTOFLUSH = 1;
+ select (STDERR);
+ $OUTPUT_AUTOFLUSH = 1;
}
if (! -d $OPT_OUTPUTDIR) {
- mySystem("mkdir -p $OPT_OUTPUTDIR");
- if (! -d $OPT_OUTPUTDIR) {
- printf STDERR "Cannot create output directory %s", $OPT_OUTPUTDIR;
- myExit(1);
- }
+ mySystem("mkdir -p $OPT_OUTPUTDIR");
+ if (! -d $OPT_OUTPUTDIR) {
+ printf STDERR "Cannot create output directory %s", $OPT_OUTPUTDIR;
+ myExit(1);
+ }
}
if (!$OPT_SKIP_DOWNLOAD) {
- download();
+ download();
}
else {
- @handoffFiles = glob ("$OPT_HANDOFF_DIR/*.ts");
+ @handoffFiles = glob ("$OPT_HANDOFF_DIR/*.ts");
}
readHandoffXmlTrees();
@@ -506,218 +566,294 @@ my $htmlOutToc = "";
my $htmlOutResultsDetail = "";
my $csvOut = "Invalid Message ID, Engineering English .qm file, Package, Package version, Package maintainer\n";
-for my $eeFile (@eeFiles) {
- my $errorCount = 0;
- my $okCount = 0;
- my $debianPackage = qx(dpkg -S $eeFile);
- $debianPackage =~ s/:.*$//;
- chomp($debianPackage);
- my $debianPackageMaintainerFull = "Unknown &lt;unknown\@unknown.com%gt;";
- my $debianPackageMaintainerMail = "unknown\@unknown.com";
- my $debianPackageVersion = "";
- my $debianPackageDescription = "";
- open (STATUS, "dpkg -s $debianPackage |") || die "Can’t open dpkg -s $debianPackage | : $!";
- binmode STATUS, ":bytes";
- while (<STATUS>) {
- if ($ARG =~ /Maintainer:\s+(.+)$/) {
- $debianPackageMaintainerFull = $1;
- $debianPackageMaintainerFull =~ /<(.+)>/;
- $debianPackageMaintainerMail = $1;
- $debianPackageMaintainerFull =~ s/</&lt;/;
- $debianPackageMaintainerFull =~ s/>/&gt;/;
+for my $engineeringEnglishFile (@engineeringEnglishFiles) {
+ my $errorCount = 0;
+ my $okCount = 0;
+ my $missingEngineeringEnglishCount = 0;
+ my $debianPackage = qx(dpkg -S $engineeringEnglishFile);
+ $debianPackage =~ s/:.*$//;
+ chomp($debianPackage);
+ my $debianPackageMaintainerFull = "Unknown &lt;unknown\@unknown.com%gt;";
+ my $debianPackageMaintainerMail = "unknown\@unknown.com";
+ my $debianPackageVersion = "";
+ my $debianPackageDescription = "";
+ open (STATUS, "dpkg -s $debianPackage |") || die "Can’t open dpkg -s $debianPackage | : $!";
+ binmode STATUS, ":utf8";
+ while (<STATUS>) {
+ if ($ARG =~ /Maintainer:\s+(.+)$/) {
+ $debianPackageMaintainerFull = $1;
+ $debianPackageMaintainerFull =~ /<(.+)>/;
+ $debianPackageMaintainerMail = $1;
+ $debianPackageMaintainerFull =~ s/</&lt;/;
+ $debianPackageMaintainerFull =~ s/>/&gt;/;
+ }
+ if ($ARG =~ /Version:\s+(.+)$/) {
+ $debianPackageVersion = $1;
+ }
+ if ($ARG =~ /Description:\s+(.+)$/) {
+ $debianPackageDescription = $1;
+ }
}
- if ($ARG =~ /Version:\s+(.+)$/) {
- $debianPackageVersion = $1;
+ my $dpkgStatusDetails = qx(dpkg -s $debianPackage);
+ if ($OPT_VERBOSITY >= 1) {
+ printf STDOUT "------------------------------------------------------------\n";
+ printf STDOUT "checking “%s” from package “%s”\n", $engineeringEnglishFile, $debianPackage;
}
- if ($ARG =~ /Description:\s+(.+)$/) {
- $debianPackageDescription = $1;
+
+ my $htmlOutOkList = "";
+ my $htmlOutErrorList = "";
+ my $htmlOutMissingEeList = "";
+
+ my $xmlParser = new XML::Parser(Style => 'Tree');
+ open (EEFILE, "lconvert -o - -i $engineeringEnglishFile |") || die "Can’t open file lconvert $engineeringEnglishFile | : $!";
+ my $tree = $xmlParser->parse(*EEFILE, ProtocolEncoding => 'UTF-8');
+ close(EEFILE);
+ my @contextTree = @{$tree->[1][4]};
+ # print Dumper(@contextTree);
+ for (my $i = 0; $i < $#contextTree; ++$i) {
+ if ($contextTree[$i] eq "message") {
+ my $source = $contextTree[$i+1][4][2];
+ my $translation = $contextTree[$i+1][8][2];
+ if ($translation eq "!! " || $translation eq "") {
+ ++$missingEngineeringEnglishCount;
+ ++$totalNumberOfIdsLackingEngineeringEnglish;
+ my $htmlOutMissingEeMessage = "";
+ $htmlOutMissingEeMessage .= "<li>";
+ $htmlOutMissingEeMessage .= sprintf "%s", $source;
+ $htmlOutMissingEeMessage .= "</li>\n";
+ $htmlOutMissingEeList .= $htmlOutMissingEeMessage;
+ }
+ my $htmlOutMessage = "";
+ my $eeMessageIdIsInSpecCount =
+ checkMessageIdFromSourceAgainstHandoff($engineeringEnglishFile, $source, \$htmlOutMessage);
+ if ($eeMessageIdIsInSpecCount >= 1) {
+ ++$okCount;
+ $htmlOutOkList .= $htmlOutMessage;
+ }
+ else {
+ ++$errorCount;
+ ++$totalNumberOfIdsNotFoundInSpec;
+ $htmlOutErrorList .= $htmlOutMessage;
+ $csvOut .= "$source,$engineeringEnglishFile,$debianPackage,$debianPackageVersion,$debianPackageMaintainerMail\n";
+ }
+ }
}
- }
- my $dpkgStatusDetails = qx(dpkg -s $debianPackage);
- if ($OPT_VERBOSITY >= 1) {
- printf STDOUT "------------------------------------------------------------\n";
- printf STDOUT "checking “%s” from package “%s”\n", $eeFile, $debianPackage;
- }
-
- my $htmlOutOkList = "";
- my $htmlOutErrorList = "";
-
- my $xmlParser = new XML::Parser(Style => 'Tree');
- open (EEFILE, "lconvert -o - -i $eeFile |") || die "Can’t open file lconvert $eeFile | : $!";
- my $tree = $xmlParser->parse(*EEFILE, ProtocolEncoding => 'UTF-8');
- close(EEFILE);
- my @contextTree = @{$tree->[1][4]};
- for (my $i = 0; $i < $#contextTree; ++$i) {
- if ($contextTree[$i] eq "message") {
- my $source = $contextTree[$i+1][4][2];
- my $htmlOutMessage = "";
- my $eeMessageIdIsInSpecCount =
- checkMessageIdFromSourceAgainstHandoff($eeFile, $source, \$htmlOutMessage);
- if ($eeMessageIdIsInSpecCount >= 1) {
- ++$okCount;
- $htmlOutOkList .= $htmlOutMessage;
- }
- else {
- ++$errorCount;
- ++$totalNumberOfIdsNotFoundInSpec;
- $htmlOutErrorList .= $htmlOutMessage;
- $csvOut .= "$source,$eeFile,$debianPackage,$debianPackageVersion,$debianPackageMaintainerMail\n";
- }
+ $htmlOutResultsDetail .= <<"EOF";
+ <div class="eefile">
+ <div class="title">
+ <a href="#$engineeringEnglishFile-ref" name="$engineeringEnglishFile">
+ $engineeringEnglishFile
+ </a>
+ IDs in spec:
+ <span class="okcolor">
+ $okCount
+ </span>
+EOF
+
+ $class = $errorCount? "errorcolor" : "okcolor";
+ $htmlOutResultsDetail .= <<"EOF";
+ Invalid IDs:
+ <span class="$class">
+ $errorCount
+ </span>
+EOF
+
+ $class = $missingEngineeringEnglishCount? "errorcolor" : "okcolor";
+ $htmlOutResultsDetail .= <<"EOF";
+ IDs lacking EE:
+ <span class="$class">
+ $missingEngineeringEnglishCount
+ </span>
+ </div>
+EOF
+
+ $htmlOutResultsDetail .= <<"EOF";
+ <div class="package">
+ $debianPackage $debianPackageVersion
+ </div>
+ <div class="maintainer">
+ <a href="mailto:$debianPackageMaintainerMail">$debianPackageMaintainerFull</a>
+ </div>
+EOF
+
+ if ($errorCount > 0) {
+ $htmlOutResultsDetail .= <<"EOF";
+ <div class="errorlist">
+ List of invalid IDs not found in the UI specs:
+ <ul>
+ $htmlOutErrorList
+ </ul>
+ </div>
+EOF
}
- }
- $htmlOutResultsDetail .= sprintf "<div class=\"eefile\">\n";
- $htmlOutResultsDetail .= sprintf "<div class=\"title\">";
- $htmlOutResultsDetail .= sprintf "<a href=\"#%s-ref\" name=\"%s\">", $eeFile, $eeFile;
- $htmlOutResultsDetail .= sprintf "%s", $eeFile;
- $htmlOutResultsDetail .= sprintf "</a>";
- $htmlOutResultsDetail .= sprintf " IDs in spec: ";
- $htmlOutResultsDetail .= sprintf "<span class=\"okcolor\">";
- $htmlOutResultsDetail .= sprintf "%d", $okCount;
- $htmlOutResultsDetail .= sprintf "</span>";
- $htmlOutResultsDetail .= sprintf " Invalid IDs: ";
- $htmlOutResultsDetail .= sprintf "<span class=\"errorcolor\">";
- $htmlOutResultsDetail .= sprintf "%d", $errorCount;
- $htmlOutResultsDetail .= sprintf "</span>";
- $htmlOutResultsDetail .= sprintf "</div>\n";
- $htmlOutResultsDetail .= sprintf "<div class=\"package\">";
- $htmlOutResultsDetail .= sprintf "%s %s", $debianPackage, $debianPackageVersion;
- $htmlOutResultsDetail .= sprintf "</div>\n";
- $htmlOutResultsDetail .= sprintf "<div class=\"maintainer\">";
- $htmlOutResultsDetail .= sprintf "<a href=\"mailto:%s\">%s</a>",
- $debianPackageMaintainerMail, $debianPackageMaintainerFull;
- $htmlOutResultsDetail .= sprintf "</div>\n";
- if ($errorCount > 0) {
- $htmlOutResultsDetail .= sprintf "<div class=\"errorlist\">\n";
- $htmlOutResultsDetail .= sprintf "List of invalid IDs not found in the UI specs:\n";
- $htmlOutResultsDetail .= sprintf "<ul>\n";
- $htmlOutResultsDetail .= $htmlOutErrorList;
- $htmlOutResultsDetail .= sprintf "</ul>\n";
- $htmlOutResultsDetail .= sprintf "</div>\n";
- }
- if ($okCount > 0) {
- $htmlOutResultsDetail .= sprintf "<div class=\"oklist\">\n";
- $htmlOutResultsDetail .= sprintf "List of IDs found in the UI specs:\n";
- $htmlOutResultsDetail .= sprintf "<ul>\n";
- $htmlOutResultsDetail .= $htmlOutOkList;
- $htmlOutResultsDetail .= sprintf "</ul>\n";
- $htmlOutResultsDetail .= sprintf "</div>\n";
- }
- $htmlOutResultsDetail .= sprintf "</div>\n";
-
- # Table of Contents:
- $htmlOutToc .= sprintf "<tr>\n";
- if ($errorCount != 0) {
- $htmlOutToc .= sprintf "<td class=\"errorbgcolor\">\n";
- }
- else {
- $htmlOutToc .= sprintf "<td class=\"okbgcolor\">\n";
- }
- $htmlOutToc .= sprintf "%s", $debianPackage;
- $htmlOutToc .= sprintf "</td>\n";
- if ($errorCount != 0) {
- $htmlOutToc .= sprintf "<td class=\"errorbgcolor\">\n";
- }
- else {
- $htmlOutToc .= sprintf "<td class=\"okbgcolor\">\n";
- }
- $htmlOutToc .= sprintf "%s", $debianPackageVersion;
- $htmlOutToc .= sprintf "</td>\n";
- if ($errorCount != 0) {
- $htmlOutToc .= sprintf "<td class=\"errorbgcolor\">\n";
- }
- else {
- $htmlOutToc .= sprintf "<td class=\"okbgcolor\">\n";
- }
- $htmlOutToc .= sprintf "<a href=\"#%s\" name=\"%s-ref\">%s</a>: ",
- $eeFile, $eeFile, myBasename($eeFile);
- $htmlOutToc .= sprintf "</td>\n";
- $htmlOutToc .= sprintf "<td class=\"okbgcolor\">\n";
- $htmlOutToc .= sprintf "%d", $okCount;
- $htmlOutToc .= sprintf "</td>\n";
- if ($errorCount != 0) {
- $htmlOutToc .= sprintf "<td class=\"errorbgcolor\">\n";
- }
- else {
- $htmlOutToc .= sprintf "<td class=\"okbgcolor\">\n";
- }
- $htmlOutToc .= sprintf "%d", $errorCount;
- $htmlOutToc .= sprintf "</td>\n";
- $htmlOutToc .= sprintf "</tr>\n";
-}
-
-$htmlOutToc .= sprintf "</table>\n";
-$htmlOutToc .= sprintf "</center>\n";
-my $htmlOutTocHeader = "";
-$htmlOutTocHeader .= sprintf "<hr>\n";
-$htmlOutTocHeader .= sprintf "<h2>Summary of results:</h2>\n";
-if ($totalNumberOfIdsNotFoundInSpec != 0) {
- $htmlOutTocHeader .= sprintf "<span class=\"errorcolor\">";
+ if ($missingEngineeringEnglishCount > 0) {
+ $htmlOutResultsDetail .= <<"EOF";
+ <div class="errorlist">
+ List of IDs where the engineering English is missing or empty:
+ <ul>
+ $htmlOutMissingEeList
+ </ul>
+ </div>
+EOF
+ }
+
+ if ($okCount > 0) {
+ $htmlOutResultsDetail .= <<"EOF";
+ <div class="oklist">
+ List of IDs found in the UI specs:
+ <ul>
+ $htmlOutOkList
+ </ul>
+ </div>
+ </div>
+EOF
+ }
+
+ # Table of Contents:
+ $class = ($errorCount == 0 && $missingEngineeringEnglishCount == 0) ? "okbgcolor" : "errorbgcolor";
+ my $engineeringEnglishFileBasename = myBasename($engineeringEnglishFile);
+ $htmlOutToc .= <<"EOF";
+ <tr>
+ <td class="$class">
+ $debianPackage
+ </td>
+ <td class="$class">
+ $debianPackageVersion
+ </td>
+ <td class="$class">
+ <a href="#$engineeringEnglishFile" name="$engineeringEnglishFile-ref">
+ $engineeringEnglishFileBasename
+ </a>:
+ </td>
+EOF
+
+ $htmlOutToc .= <<"EOF";
+ <td class="okbgcolor">
+ $okCount
+ </td>
+EOF
+
+ $class = $errorCount? "errorbgcolor" : "okbgcolor";
+ $htmlOutToc .= <<"EOF";
+ <td class="$class">
+ $errorCount
+ </td>
+EOF
+
+ $class = $missingEngineeringEnglishCount? "errorbgcolor" : "okbgcolor";
+ $htmlOutToc .= <<"EOF";
+ <td class="$class">
+ $missingEngineeringEnglishCount
+ </td>
+ </tr>
+EOF
+
}
-else {
- $htmlOutTocHeader .= sprintf "<span class=\"okcolor\">";
-}
-$htmlOutTocHeader .= sprintf "<p><b>Total number of Ids not found in the specification: %d</b></p>",
- $totalNumberOfIdsNotFoundInSpec;
-$htmlOutTocHeader .= sprintf "</span>";
-
-$htmlOutTocHeader .= sprintf "<p>";
-$htmlOutTocHeader .= sprintf "<a href=\"messageid-check-result.csv\">";
-$htmlOutTocHeader .= sprintf "CVS file with a list of all invalid message IDs.";
-$htmlOutTocHeader .= sprintf "</a>";
-$htmlOutTocHeader .= sprintf "</p>";
-
-$htmlOutTocHeader .= sprintf "<center>";
-$htmlOutTocHeader .= sprintf "<table class=\"summary\">\n";
-$htmlOutTocHeader .= sprintf "<caption style=\"caption-side:top\">Overview of the number of IDs found or not found in the specifications. Click on the file name of the .qm file for details.</caption>\n";
-$htmlOutTocHeader .= sprintf "<tr>";
-$htmlOutTocHeader .= sprintf "<th>";
-$htmlOutTocHeader .= sprintf "Debian package name";
-$htmlOutTocHeader .= sprintf "</th>";
-$htmlOutTocHeader .= sprintf "<th>";
-$htmlOutTocHeader .= sprintf "version";
-$htmlOutTocHeader .= sprintf "</th>";
-$htmlOutTocHeader .= sprintf "<th>";
-$htmlOutTocHeader .= sprintf "Engineering English .qm file";
-$htmlOutTocHeader .= sprintf "</th>";
-$htmlOutTocHeader .= sprintf "<th>";
-$htmlOutTocHeader .= sprintf "IDs in spec";
-$htmlOutTocHeader .= sprintf "</th>";
-$htmlOutTocHeader .= sprintf "<th>";
-$htmlOutTocHeader .= sprintf "Invalid IDs";
-$htmlOutTocHeader .= sprintf "</th>";
-$htmlOutTocHeader .= sprintf "</tr>";
+
+$htmlOutToc .= <<"EOF";
+ </table>
+ </center>
+EOF
+
+my $htmlOutTocHeader = "";
+$htmlOutTocHeader .= <<"EOF";
+ <hr>
+ <h2>Summary of results:</h2>
+EOF
+
+$class = $totalNumberOfIdsNotFoundInSpec? "errorcolor" : "okcolor";
+$htmlOutTocHeader .= <<"EOF";
+<span class="$class">
+ <p>
+ <b>
+ Total number of Ids not found in the specification:
+ $totalNumberOfIdsNotFoundInSpec
+ </b>
+ </p>
+</span>
+EOF
+
+$class = $totalNumberOfIdsLackingEngineeringEnglish? "errorcolor" : "okcolor";
+$htmlOutTocHeader .= <<"EOF";
+<span class="$class">
+ <p>
+ <b>
+ Total number of Ids where the engineering English is missing or empty:
+ $totalNumberOfIdsLackingEngineeringEnglish
+ </b>
+ </p>
+</span>
+EOF
+
+$htmlOutTocHeader .= <<"EOF";
+ <p>
+ <a href="messageid-check-result.csv">
+ CVS file with a list of all invalid message IDs.
+ </a>
+ </p>
+ <center>
+ <table class="summary">
+ <caption style="caption-side:top">
+ Overview of the number of IDs found or not found in the specifications.
+ Click on the file name of the .qm file for details.
+ </caption>
+ <tr>
+ <th>
+ Debian package name
+ </th>
+ <th>
+ version
+ </th>
+ <th>
+ Engineering English .qm file
+ </th>
+ <th>
+ IDs in spec
+ </th>
+ <th>
+ Invalid IDs
+ </th>
+ <th>
+ Missing EE
+ </th>
+ </tr>
+EOF
my $htmlOutResultsDetailHeader = "";
-$htmlOutResultsDetailHeader .= "<hr>\n";
-$htmlOutResultsDetailHeader .= sprintf "<h2>Results in detail:</h2>\n";
+$htmlOutResultsDetailHeader .= <<"EOF";
+ <hr>
+ <h2>Results in detail:</h2>
+EOF
my $htmlOutIntroduction ="";
-$htmlOutIntroduction .= sprintf "<hr>\n";
-$htmlOutIntroduction .= sprintf "<h2>Introduction</h2>\n";
-
-$htmlOutIntroduction .= sprintf "This page lists IDs which are used in
-the code but which are missing in the specifications. For all IDs used
-in the code, but not defined in the UI specifications, please do the
-following:\n";
-
-$htmlOutIntroduction .= sprintf "<ol>\n";
-$htmlOutIntroduction .= sprintf "<li>Check your code if those IDs are really in use</li>\n";
-$htmlOutIntroduction .= sprintf "<li>Check if there is a typo in the ID</li>\n";
-$htmlOutIntroduction .= sprintf "</ol>\n";
-
-$htmlOutIntroduction .= sprintf "If there is no typo and the ID is
-really used, open a bug against the relevant UI Spec requesting a new
-ID: <ul><li>component: Specifications</li> <li>Keywords: l10n, PO</li>
-<li>CC: <a href=\"mailto:oksan.savasoglu-niemi\@nokia.com\">Oksan
-Savasoglu-Niemi</a></li></ul>";
-
+$htmlOutIntroduction .= <<"EOF";
+ <hr>
+ <h2>Introduction</h2>
+ This page lists IDs which are used in
+ the code but which are missing in the specifications. For all IDs used
+ in the code, but not defined in the UI specifications, please do the
+ following:
+ <ol>
+ <li>Check your code if those IDs are really in use</li>
+ <li>Check if there is a typo in the ID</li>
+ </ol>
+ If there is no typo and the ID is
+ really used, open a bug against the relevant UI Spec
+ requesting a new ID:
+ <ul>
+ <li>component: Specifications</li>
+ <li>Keywords: l10n, PO</li>
+ <li>CC: <a href=\"mailto:oksan.savasoglu-niemi\@nokia.com\">Oksan Savasoglu-Niemi</a></li>
+ </ul>
+EOF
+
my $htmlOutBody =
- $htmlOutIntroduction
- . $htmlOutTocHeader
- . $htmlOutToc
- . $htmlOutResultsDetailHeader
- . $htmlOutResultsDetail;
+ $htmlOutIntroduction
+ . $htmlOutTocHeader
+ . $htmlOutToc
+ . $htmlOutResultsDetailHeader
+ . $htmlOutResultsDetail;
writeHtml($htmlOutBody);