diff options
author | Nilesh Trimbake <t.shripati@samsung.com> | 2018-03-21 18:38:00 +0530 |
---|---|---|
committer | Nilesh Trimbake <t.shripati@samsung.com> | 2018-03-21 18:40:52 +0530 |
commit | ddd256919d9fa1769cb0b029c879f9201c6c5515 (patch) | |
tree | 4866b0ccbc095714a3f797796b1113b431cd21a4 | |
parent | 314533c4361ef0ccd109b7448336b02588719db4 (diff) | |
parent | 763d0a44ed6f68868a3a6e3c01ceebfe0e689c8b (diff) | |
download | gallery-ddd256919d9fa1769cb0b029c879f9201c6c5515.tar.gz gallery-ddd256919d9fa1769cb0b029c879f9201c6c5515.tar.bz2 gallery-ddd256919d9fa1769cb0b029c879f9201c6c5515.zip |
Merge following patches from 'tizen_4.0' into tizen
1. TizenRefApp-9559 [Gallery] Fix issue with invalid thumbnails when adding
new images
2. TizenRefApp-9544 [Gallery] Crash when try to preview video from MMS
3. TizenRefApp-9548 [Gallery] Implement RTL mode support
4. TizenRefApp-9416 [Gallery] Add support change application name according to selected language
Change-Id: Ida53613d421b81fc539f59aa1dced18bf4131748
-rw-r--r-- | gallery/model/MediaItem.cpp | 24 | ||||
-rw-r--r-- | gallery/model/MediaItem.h | 6 | ||||
-rw-r--r-- | gallery/presenters/Instance.cpp | 12 | ||||
-rw-r--r-- | gallery/presenters/misc/ProcessingPresenter.cpp | 3 | ||||
-rw-r--r-- | gallery/presenters/pages/PreviewPage.cpp | 4 | ||||
-rw-r--r-- | gallery/presenters/pages/ThumbnailPage.cpp | 4 | ||||
-rw-r--r-- | gallery/presenters/pages/VideoPlayerPage.cpp | 11 | ||||
-rw-r--r-- | gallery/view/ImageGrid.cpp | 120 | ||||
-rw-r--r-- | gallery/view/ImageGrid.h | 15 | ||||
-rw-r--r-- | gallery/view/ImageViewer.cpp | 2 | ||||
-rw-r--r-- | gallery/view/helpers.cpp | 23 | ||||
-rw-r--r-- | gallery/view/helpers.h | 2 | ||||
-rw-r--r-- | tizen-manifest.xml | 50 |
13 files changed, 208 insertions, 68 deletions
diff --git a/gallery/model/MediaItem.cpp b/gallery/model/MediaItem.cpp index aec6b5d..fd21ffc 100644 --- a/gallery/model/MediaItem.cpp +++ b/gallery/model/MediaItem.cpp @@ -233,7 +233,9 @@ namespace gallery { MediaItem::~MediaItem() { - cancelThumbnailPathGet(); + if (m_thumbCbProxy) { + cancelThumbnailPathGet(); + } } MediaItemSRef MediaItem::newInstance(const media_info_h media) @@ -459,11 +461,12 @@ namespace gallery { } if (m_thumbCbProxy) { - m_thumbCbProxy->callback = cb; + m_thumbCbProxy->callbacks += cb; return RES_FALSE; } - auto cbProxy = util::makeUnique(new ThumbCbProxy{this, cb}); + auto cbProxy = util::makeUnique(new ThumbCbProxy{this}); + cbProxy->callbacks += cb; { MutexLock lock(getMediaMutex()); @@ -478,12 +481,21 @@ namespace gallery { return RES_FALSE; } - void MediaItem::cancelThumbnailPathGet() const + void MediaItem::cancelThumbnailPathGet(const ThumbnailPathGetCb &cb) const { if (!m_thumbCbProxy) { return; } + m_thumbCbProxy->callbacks -= cb; + + if (isEmpty(m_thumbCbProxy->callbacks)) { + cancelThumbnailPathGet(); + } + } + + void MediaItem::cancelThumbnailPathGet() const + { MutexLock lock(getMediaMutex()); const int ret = media_info_cancel_thumbnail(m_media); @@ -528,10 +540,10 @@ namespace gallery { item->m_media = nullptr; } - const auto proxy = std::move(*item->m_thumbCbProxy); + auto proxy = std::move(*item->m_thumbCbProxy); item->m_thumbCbProxy.reset(); - proxy.callback(result, proxy.item->m_thumbPath); + proxy.callbacks.dispatch(result, proxy.item->m_thumbPath); } } diff --git a/gallery/model/MediaItem.h b/gallery/model/MediaItem.h index 439de36..0aa8a01 100644 --- a/gallery/model/MediaItem.h +++ b/gallery/model/MediaItem.h @@ -22,6 +22,7 @@ #include <media_content.h> #include "ucl/misc/AutoHandle.h" +#include "ucl/misc/Event.h" #include "IJob.h" @@ -81,7 +82,7 @@ namespace gallery { const std::string &getFilePath() const; ucl::Result getThumbnailPath(const ThumbnailPathGetCb &cb) const; - void cancelThumbnailPathGet() const; + void cancelThumbnailPathGet(const ThumbnailPathGetCb &cb) const; ucl::Result removeFile(); ucl::Result saveToDevice(); @@ -97,13 +98,14 @@ namespace gallery { private: ucl::Result initThumbPath(media_info_h media) const; + void cancelThumbnailPathGet() const; private: // XXX This proxy is needed to deal with cases when // media_thumbnail_completed_cb can't be cancelled struct ThumbCbProxy final { const MediaItem *item; - ThumbnailPathGetCb callback; + ucl::Event<ThumbnailPathGetCb> callbacks; void completeCb(media_content_error_e error, const char *path); }; diff --git a/gallery/presenters/Instance.cpp b/gallery/presenters/Instance.cpp index 39c7112..15daa2d 100644 --- a/gallery/presenters/Instance.cpp +++ b/gallery/presenters/Instance.cpp @@ -16,8 +16,6 @@ #include "Instance.h" -#include <system_settings.h> - #include "ucl/appfw/helpers.h" #include "gallery/model/helpers.h" @@ -73,6 +71,8 @@ namespace gallery { FAIL_RETURN(setupTheme(), "setupTheme() failed!"); + util::updateElmLanguage(); + m_navi = Naviframe::Builder(). build(m_win->getConformant()); if (!m_navi) { @@ -390,13 +390,7 @@ namespace gallery { switch(sysEvent) { case SysEvent::LANGUAGE_CHANGED: DLOG("SysEvent::LANGUAGE_CHANGED"); - { - char *locale = NULL; - system_settings_get_value_string( - SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); - elm_language_set(locale); - free(locale); - } + util::updateElmLanguage(); break; default: DLOG("sysEvent: %d", sysEvent); diff --git a/gallery/presenters/misc/ProcessingPresenter.cpp b/gallery/presenters/misc/ProcessingPresenter.cpp index 4a077e0..bfaa1b6 100644 --- a/gallery/presenters/misc/ProcessingPresenter.cpp +++ b/gallery/presenters/misc/ProcessingPresenter.cpp @@ -210,6 +210,9 @@ namespace gallery { m_popup->setContent(*icon, impl::PART_TOAST_ICON); + elm_object_mirrored_automatic_set(*icon, EINA_FALSE); + elm_object_mirrored_set(*icon, EINA_FALSE); + m_icon = icon; return RES_OK; diff --git a/gallery/presenters/pages/PreviewPage.cpp b/gallery/presenters/pages/PreviewPage.cpp index a406a4f..19c00da 100644 --- a/gallery/presenters/pages/PreviewPage.cpp +++ b/gallery/presenters/pages/PreviewPage.cpp @@ -150,7 +150,8 @@ namespace gallery { void unrealize() { - m_media->cancelThumbnailPathGet(); + m_media->cancelThumbnailPathGet( + WEAK_DELEGATE(Item::onThumbnail, asWeak(*this))); } MediaItemSRef getMedia() @@ -266,6 +267,7 @@ namespace gallery { "m_album->forEachMedia() failed!"); m_imageGrid->setItemCount(m_items.size()); + m_imageGrid->scrollToItem(0); } // TODO Temp solution. diff --git a/gallery/presenters/pages/ThumbnailPage.cpp b/gallery/presenters/pages/ThumbnailPage.cpp index f33effb..d8b1afb 100644 --- a/gallery/presenters/pages/ThumbnailPage.cpp +++ b/gallery/presenters/pages/ThumbnailPage.cpp @@ -107,7 +107,8 @@ namespace gallery { virtual ~RealizedItem() { - m_parent.m_mediaItems[m_index]->cancelThumbnailPathGet(); + m_parent.m_mediaItems[m_index]->cancelThumbnailPathGet( + WEAK_DELEGATE(RealizedItem::onThumbnail, asWeak(this))); } int getIndex() const @@ -170,6 +171,7 @@ namespace gallery { "m_album->forEachMedia() failed!"); m_imageGrid->setItemCount(m_mediaItems.size()); + m_imageGrid->scrollToItem(0); } Result ThumbnailPage::doPrepare(NaviItem &item) diff --git a/gallery/presenters/pages/VideoPlayerPage.cpp b/gallery/presenters/pages/VideoPlayerPage.cpp index b2f695d..f0b511e 100644 --- a/gallery/presenters/pages/VideoPlayerPage.cpp +++ b/gallery/presenters/pages/VideoPlayerPage.cpp @@ -196,6 +196,9 @@ namespace gallery { LOG_RETURN(RES_FAIL, "m_content is NULL"); } + elm_object_mirrored_automatic_set(*m_content, EINA_FALSE); + elm_object_mirrored_set(*m_content, EINA_FALSE); + item = getNaviframe().push(*m_content, NAVIFRAME_NO_CLIP); if (!item) { LOG_RETURN(RES_FAIL, "Naviframe::push() failed!"); @@ -263,14 +266,14 @@ namespace gallery { FAIL_RETURN(util::getNz(player_create, m_player), "player_create() failed!"); - FAIL_RETURN(util::call(player_set_display_mode, m_player, - PLAYER_DISPLAY_MODE_CROPPED_FULL), - "player_set_display_mode() failed!"); - FAIL_RETURN(util::call(player_set_display, m_player, PLAYER_DISPLAY_TYPE_EVAS, GET_DISPLAY(m_image->getEo())), "player_set_display() failed!"); + FAIL_RETURN(util::call(player_set_display_mode, m_player, + PLAYER_DISPLAY_MODE_CROPPED_FULL), + "player_set_display_mode() failed!"); + FAIL_RETURN(util::call(player_set_uri, m_player, m_media->getFilePath().c_str()), "player_set_uri() failed!"); diff --git a/gallery/view/ImageGrid.cpp b/gallery/view/ImageGrid.cpp index f72f8d4..a456e0a 100644 --- a/gallery/view/ImageGrid.cpp +++ b/gallery/view/ImageGrid.cpp @@ -334,6 +334,10 @@ namespace gallery { listener->onItemRealized(itemIndex); } + if (!m_wasUpdated) { + update({"", "", 0, 0, 0}); + } + makeWhite(m_btn); } else { makeTransparent(m_btn); @@ -818,6 +822,8 @@ namespace gallery { if (m_animator) { finalizeTransition(); } + evas_object_event_callback_del_full(m_box, EVAS_CALLBACK_RESIZE, + CALLBACK_A(ImageGrid::onBoxResize), this); } const ImageGrid::Info &ImageGrid::getInfo(const Type type) @@ -871,7 +877,10 @@ namespace gallery { createCircleScroller(); - createHighlighKeeper(); + createHighlightKeeper(); + + m_scroller->addEventHandler(SmartEvent{"language,changed"}, + WEAK_DELEGATE(ImageGrid::onLanguageChanged, asWeak(*this))); m_scroller->addEventHandler(WidgetEvent::RESIZE, WEAK_DELEGATE(ImageGrid::onScrollerResize, asWeak(*this))); @@ -881,6 +890,10 @@ namespace gallery { m_box.addEventHandler(WidgetEvent::MOVE, WEAK_DELEGATE(ImageGrid::onBoxMove, asWeak(*this))); + + evas_object_event_callback_priority_add(m_box, + EVAS_CALLBACK_RESIZE, EO_CALLBACK_PRIORITY_AFTER, + CALLBACK_A(ImageGrid::onBoxResize), this); } void ImageGrid::createCircleScroller() @@ -905,12 +918,12 @@ namespace gallery { } } - void ImageGrid::createHighlighKeeper() + void ImageGrid::createHighlightKeeper() { - m_highlighKeeper = util::createFakeAccessObject(*m_box.getWindow()); - UCL_ASSERT(m_highlighKeeper, "m_highlighKeeper is NULL"); + m_highlightKeeper = util::createFakeAccessObject(*m_box.getWindow()); + UCL_ASSERT(m_highlightKeeper, "m_highlightKeeper is NULL"); - m_highlighKeeper->addEventHandler(ATSPI_UNHIGHLIGHTED, + m_highlightKeeper->addEventHandler(ATSPI_UNHIGHLIGHTED, WEAK_DELEGATE(ImageGrid::onKeeperUnhighlighted, asWeak(*this))); } @@ -936,6 +949,7 @@ namespace gallery { m_itemCount = count; if (updateMaxSlotCount()) { + updatePadSizes(); updateSlotCount(); if (updateMaxBeginSlotIndex()) { updateBeginSlotIndex(); @@ -988,10 +1002,6 @@ namespace gallery { m_animator = ecore_animator_add( CALLBACK_A(ImageGrid::onAnimationFrame), this); - evas_object_event_callback_priority_add(m_box, - EVAS_CALLBACK_RESIZE, EO_CALLBACK_PRIORITY_AFTER, - CALLBACK_A(ImageGrid::onBoxResize), this); - auto &slotlayout = m_slots[m_beginSlotIndex & 1]->getLayout(); slotlayout.addEventHandler(WidgetEvent::CHANGED_SIZE_HINTS, @@ -999,7 +1009,7 @@ namespace gallery { elm_object_signal_callback_add(slotlayout, impl::SIGNAL_TRANSITION_FINISHED.name, "", - CALLBACK_A(ImageGrid::onTransitonFinished), this); + CALLBACK_A(ImageGrid::onTransitionFinished), this); return RES_OK; } @@ -1014,7 +1024,7 @@ namespace gallery { return !!m_animator; } - void ImageGrid::onTransitonFinished(Evas_Object *obj, + void ImageGrid::onTransitionFinished(Evas_Object *obj, const char *emission, const char *source) { evalSlotSizes(); @@ -1039,9 +1049,6 @@ namespace gallery { m_animator = nullptr; } - evas_object_event_callback_del_full(m_box, EVAS_CALLBACK_RESIZE, - CALLBACK_A(ImageGrid::onBoxResize), this); - auto &slotlayout = m_slots[m_beginSlotIndex & 1]->getLayout(); slotlayout.delEventHandler(WidgetEvent::CHANGED_SIZE_HINTS, @@ -1049,7 +1056,7 @@ namespace gallery { elm_object_signal_callback_del(slotlayout, "gallery,transition,finished", "", - CALLBACK_A(ImageGrid::onTransitonFinished)); + CALLBACK_A(ImageGrid::onTransitionFinished)); } Eina_Bool ImageGrid::onAnimationFrame() @@ -1074,18 +1081,6 @@ namespace gallery { } } - void ImageGrid::onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo) - { - m_scrollOffset = (m_scrollLockIndex * m_slotSize); - if (m_info.isHorizontal) { - elm_scroller_region_show(*m_scroller, - m_scrollOffset, 0, m_scrollerSize, 1); - } else { - elm_scroller_region_show(*m_scroller, - 0, m_scrollOffset, 1, m_scrollerSize); - } - } - void ImageGrid::update() { Unrealizer(*this); @@ -1181,14 +1176,15 @@ namespace gallery { if (m_animator) { LOG_RETURN(RES_INVALID_OPERATION, "Transition is in progress."); } + forceBoxSizeCalculate(); return showItem(itemIndex, elm_scroller_region_bring_in); } - template <class SHOW_FUNC> - Result ImageGrid::showItem(const int itemIndex, SHOW_FUNC &&showFunc) + template <class SCROLL_FUNC> + Result ImageGrid::showItem(const int itemIndex, SCROLL_FUNC &&scrollFunc) { return doWithCell(itemIndex, - [this, &showFunc](const int slotIndex, const int itemOffset) + [this, &scrollFunc](const int slotIndex, const int itemOffset) { int minVisibleOffset = 0; int maxVisibleOffset = 0; @@ -1199,16 +1195,33 @@ namespace gallery { const int scrollOffset = ((m_scrollOffset > maxVisibleOffset) ? maxVisibleOffset : minVisibleOffset); - if (m_info.isHorizontal) { - showFunc(*m_scroller, scrollOffset, 0, m_scrollerSize, 1); - } else { - showFunc(*m_scroller, 0, scrollOffset, 1, m_scrollerSize); - } + scrollTo(scrollOffset, scrollFunc); return RES_OK; }); } + template <class SCROLL_FUNC> + void ImageGrid::scrollTo(const int offset, SCROLL_FUNC &&scrollFunc) + { + int scrollOffset = offset; + + if (elm_config_mirrored_get()) { + int childSizeX = 0; + int childSizeY = 0; + elm_scroller_child_size_get(*m_scroller, &childSizeX, &childSizeY); + + scrollOffset = ((m_info.isHorizontal ? childSizeX : childSizeY) - + m_scrollerSize - offset); + } + + if (m_info.isHorizontal) { + scrollFunc(*m_scroller, scrollOffset, 0, m_scrollerSize, 1); + } else { + scrollFunc(*m_scroller, 0, scrollOffset, 1, m_scrollerSize); + } + } + bool ImageGrid::isItemFullyVisible(int itemIndex) { int minVisibleOffset = 0; @@ -1321,7 +1334,7 @@ namespace gallery { if (m_highlightID == itemIndex) { m_highlightID = (-1 - itemIndex); if (m_isHighlightLocked) { - elm_atspi_component_highlight_grab(*m_highlighKeeper); + elm_atspi_component_highlight_grab(*m_highlightKeeper); } else { m_highlightTimeout.reset(); } @@ -1609,8 +1622,10 @@ namespace gallery { std::max((m_scrollerSize / m_slotSize) * m_slotSize, 1)); m_padSize1 = std::lround(spaceSize / 2.0); - m_padSize2 = (spaceSize - m_padSize1 + - m_info.calcExtraPaddingSize(m_slotSize)); + m_padSize2 = std::max(spaceSize - m_padSize1 + + m_info.calcExtraPaddingSize(m_slotSize), + (m_scrollerSize - m_padSize1 - + m_maxSlotCount / 2 * m_slotSize)); } void ImageGrid::updateScrollBias() @@ -1689,8 +1704,20 @@ namespace gallery { { int scrollOffsetX = 0; int scrollOffsetY = 0; + + int scrollerSizeX = 0; + int scrollerSizeY = 0; elm_scroller_region_get(*m_scroller, &scrollOffsetX, &scrollOffsetY, - nullptr, nullptr); + &scrollerSizeX, &scrollerSizeY); + + if (elm_config_mirrored_get()) { + int childSizeX = 0; + int childSizeY = 0; + elm_scroller_child_size_get(*m_scroller, &childSizeX, &childSizeY); + + scrollOffsetX = (childSizeX - scrollerSizeX - scrollOffsetX); + scrollOffsetY = (childSizeY - scrollerSizeY - scrollOffsetY); + } return (m_info.isHorizontal ? scrollOffsetX : scrollOffsetY); } @@ -1812,6 +1839,11 @@ namespace gallery { --m_eventsLock; } + void ImageGrid::onLanguageChanged(Widget &sender, void *eventInfo) + { + Unrealizer u(*this); + } + void ImageGrid::onScrollerResize(Widget &sender, void *eventInfo) { handleResize(); @@ -1826,4 +1858,14 @@ namespace gallery { { handleScrolling(); } + + void ImageGrid::onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo) + { + if (m_animator) { + m_scrollOffset = (m_scrollLockIndex * m_slotSize); + scrollTo(m_scrollOffset, elm_scroller_region_show); + } else { + handleScrolling(); + } + } } diff --git a/gallery/view/ImageGrid.h b/gallery/view/ImageGrid.h index 2eff5f5..8ba129f 100644 --- a/gallery/view/ImageGrid.h +++ b/gallery/view/ImageGrid.h @@ -143,8 +143,10 @@ namespace gallery { template <class FUNC> ucl::Result doWithCell(int itemIndex, FUNC &&func) const; - template <class SHOW_FUNC> - ucl::Result showItem(int itemIndex, SHOW_FUNC &&showFunc); + template <class SCROLL_FUNC> + ucl::Result showItem(int itemIndex, SCROLL_FUNC &&scrollFunc); + template <class SCROLL_FUNC> + void scrollTo(int offset, SCROLL_FUNC &&scrollFunc); bool isItemFullyVisible(int itemIndex); bool isItemFullyVisible(int itemIndex, @@ -177,14 +179,13 @@ namespace gallery { void finalizeTransition(); Eina_Bool onAnimationFrame(); void onSlotResize(Widget &widget, void *eventInfo); - void onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo); - void onTransitonFinished(Evas_Object *obj, const char *emission, + void onTransitionFinished(Evas_Object *obj, const char *emission, const char *source); // Initialization void prepare(); void createCircleScroller(); - void createHighlighKeeper(); + void createHighlightKeeper(); // Actual slots count bool updateSlotCount(); @@ -238,9 +239,11 @@ namespace gallery { void handleResize(); // Events + void onLanguageChanged(Widget &sender, void *eventInfo); void onScrollerResize(Widget &sender, void *eventInfo); void onScrollerMove(Widget &sender, void *eventInfo); void onBoxMove(Widget &sender, void *eventInfo); + void onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo); private: const Info &m_info; @@ -279,7 +282,7 @@ namespace gallery { bool m_isInSelectMode; bool m_isRotaryActive; - ucl::ElmWidgetSRef m_highlighKeeper; + ucl::ElmWidgetSRef m_highlightKeeper; ucl::TimeoutSRef m_highlightTimeout; int m_highlightID; bool m_isHighlightLocked; diff --git a/gallery/view/ImageViewer.cpp b/gallery/view/ImageViewer.cpp index da3a0c2..33dbf66 100644 --- a/gallery/view/ImageViewer.cpp +++ b/gallery/view/ImageViewer.cpp @@ -128,6 +128,8 @@ namespace gallery { ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); elm_scroller_single_direction_set(*m_scroller, ELM_SCROLLER_SINGLE_DIRECTION_NONE); + elm_object_mirrored_automatic_set(*m_scroller, EINA_FALSE); + elm_object_mirrored_set(*m_scroller, EINA_FALSE); show(*m_scroller); expandAndFill(m_layout); diff --git a/gallery/view/helpers.cpp b/gallery/view/helpers.cpp index 52d5e23..d2f466d 100644 --- a/gallery/view/helpers.cpp +++ b/gallery/view/helpers.cpp @@ -18,6 +18,9 @@ #include <vector> +#include <system_settings.h> +#include <utils_i18n_ulocale.h> + #include "ucl/gui/Window.h" #include "ucl/gui/Layout.h" @@ -101,6 +104,26 @@ namespace gallery { namespace util { return result; } + + void updateElmLanguage() + { + std::string locale = "en_US.utf8"; + i18n_ulocale_layout_type_e layout = I18N_ULOCALE_LAYOUT_LTR; + + FAIL_LOG(util::getNz(system_settings_get_value_string, + locale, SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE), + "system_settings_get_value_string() failed!"); + + const int rc = i18n_ulocale_get_character_orientation( + locale.c_str(), &layout); + if (rc != I18N_ERROR_NONE) { + WLOG("i18n_ulocale_get_character_orientation() failed! %d", rc); + layout = I18N_ULOCALE_LAYOUT_LTR; + } + + elm_config_mirrored_set(layout == I18N_ULOCALE_LAYOUT_RTL); + elm_language_set(locale.c_str()); + } }} namespace gallery { diff --git a/gallery/view/helpers.h b/gallery/view/helpers.h index 5a13ab4..aa0732b 100644 --- a/gallery/view/helpers.h +++ b/gallery/view/helpers.h @@ -27,6 +27,8 @@ namespace gallery { namespace util { Eext_Circle_Surface *getCircleSurface(const ucl::ElmWidget &widget); ucl::ElmWidgetSRef createFakeAccessObject(ucl::ElmWidget &parent); + + void updateElmLanguage(); }} namespace gallery { diff --git a/tizen-manifest.xml b/tizen-manifest.xml index 1d0f3d4..233ce3a 100644 --- a/tizen-manifest.xml +++ b/tizen-manifest.xml @@ -3,6 +3,56 @@ <profile name="wearable"/>
<ui-application appid="org.tizen.w-gallery" exec="w-gallery" hw-acceleration="on" launch_mode="caller" multiple="false" nodisplay="false" taskmanage="true" type="capp">
<label>Gallery</label>
+ <label xml:lang="ar-ae">الاستوديو</label>
+ <label xml:lang="az-az">Qalereya</label>
+ <label xml:lang="bg-bg">Галерия</label>
+ <label xml:lang="ca-es">Galeria</label>
+ <label xml:lang="cs-cz">Galerie</label>
+ <label xml:lang="da-dk">Galleri</label>
+ <label xml:lang="de-de">Galerie</label>
+ <label xml:lang="el-gr">Συλλογή</label>
+ <label xml:lang="en-gb">Gallery</label>
+ <label xml:lang="en-ph">Gallery</label>
+ <label xml:lang="en-us">Gallery</label>
+ <label xml:lang="es-es">Galería</label>
+ <label xml:lang="es-us">Galería</label>
+ <label xml:lang="et-ee">Galerii</label>
+ <label xml:lang="eu-es">Galeria</label>
+ <label xml:lang="fi-fi">Galleria</label>
+ <label xml:lang="fr-fr">Galerie</label>
+ <label xml:lang="fr-ca">Galerie</label>
+ <label xml:lang="ga-ie">Gailearaí</label>
+ <label xml:lang="gl-es">Galería</label>
+ <label xml:lang="hi-in">गैलरी</label>
+ <label xml:lang="hr-hr">Galerija</label>
+ <label xml:lang="hu-hu">Galéria</label>
+ <label xml:lang="hy-am">Պատկերասրահ</label>
+ <label xml:lang="is-is">Gallerí</label>
+ <label xml:lang="it-it">Galleria</label>
+ <label xml:lang="ja-jp">ギャラリー</label>
+ <label xml:lang="ka-ge">გალერეა</label>
+ <label xml:lang="kk-kz">Галерея</label>
+ <label xml:lang="ko-kr">갤러리</label>
+ <label xml:lang="lt-lt">Galerija</label>
+ <label xml:lang="lv-lv">Galerija</label>
+ <label xml:lang="mk-mk">Галерија</label>
+ <label xml:lang="nb-no">Galleri</label>
+ <label xml:lang="nl-nl">Galerij</label>
+ <label xml:lang="pl-pl">Galeria</label>
+ <label xml:lang="pt-br">Galeria</label>
+ <label xml:lang="pt-pt">Galeria</label>
+ <label xml:lang="ro-ro">Galerie</label>
+ <label xml:lang="ru-ru">Галерея</label>
+ <label xml:lang="sk-sk">Galéria</label>
+ <label xml:lang="sl-si">Galerija</label>
+ <label xml:lang="sr-rs">Galerija</label>
+ <label xml:lang="sv-se">Galleri</label>
+ <label xml:lang="tr-tr">Galeri</label>
+ <label xml:lang="uk-ua">Галерея</label>
+ <label xml:lang="uz-uz">Galereya</label>
+ <label xml:lang="zh-cn">相册</label>
+ <label xml:lang="zh-hk">媒體瀏覽器</label>
+ <label xml:lang="zh-tw">媒體瀏覽器</label>
<icon>org.tizen.gallery.png</icon>
<app-control>
<operation name="http://tizen.org/appcontrol/operation/view"/>
|