Remove context menu - Back key pressed
[apps/osp/Gallery.git] / src / GlAlbumListForm.cpp
index ec11af7..2a41143 100644 (file)
@@ -1,7 +1,7 @@
 //
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
@@ -19,7 +19,6 @@
  * @brief              This is the implementation file for AlbumListForm class.
  */
 
-#include <FApp.h>
 #include "GlAlbumInfo.h"
 #include "GlAlbumListForm.h"
 #include "GlAlbumListPresentationModel.h"
@@ -39,18 +38,17 @@ using namespace Tizen::Ui;
 using namespace Tizen::Ui::Controls;
 using namespace Tizen::Ui::Scenes;
 
-static const int W_FOLDER_SIZE = 334;
-static const int H_FOLDER_SIZE = 334;
+static const int W_FOLDER_SIZE = 348;
+static const int H_FOLDER_SIZE = 348;
 
 AlbumListForm::AlbumListForm(void)
-       : __pAlbumViewIconList(null)
-       , __pContextMenuMore(null)
-       , __itemCount(0)
-       , __pTimer(null)
+       : __itemCount(0)
+       , __pAlbumViewIconList(null)
+       , __pOptionMenu(null)
        , __pPresentationModel(null)
+
 {
        AppLogDebug("ENTER");
-       __overlayMsg = false;
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -76,11 +74,14 @@ AlbumListForm::OnInitializing(void)
        AppLogDebug("ENTER");
        result r = E_SUCCESS;
 
+       SetOrientation(ORIENTATION_AUTOMATIC);
+       AddOrientationEventListener(*this);
+
        __pPresentationModel = AlbumListPresentationModel::GetInstance();
        __pPresentationModel->ClearThumbnailRequests();
        __pPresentationModel->AddPresentationModelListener(this);
 
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
                if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_IMAGE)
                {
@@ -116,13 +117,6 @@ AlbumListForm::OnInitializing(void)
 
        __itemCount = __pPresentationModel->GetFolderCount();
        CreateIconListView();
-
-       if (__itemCount == 0)
-       {
-               __pTimer = new (std::nothrow) Timer();
-               __pTimer->Construct(*this);
-               __pTimer->Start(1000);
-       }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return r;
@@ -136,7 +130,6 @@ AlbumListForm::InitializeHeader(void)
        if (pHeader == null)
        {
                AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
-
                return E_SYSTEM;
        }
 
@@ -144,7 +137,6 @@ AlbumListForm::InitializeHeader(void)
        if (r != E_SUCCESS)
        {
                AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
-
                return r;
        }
 
@@ -163,23 +155,22 @@ AlbumListForm::InitializeFooter(void)
        if (pFooter == null)
        {
                AppLogDebug("EXIT 1");
-
                return E_SYSTEM;
        }
 
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
-               pFooter->SetBackButton();
                SetFormBackEventListener(this);
+               pFooter->SetShowState(false);
        }
        else
        {
+               pFooter->SetShowState(true);
                pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON);
-               pFooter->SetBackButton();
                pFooter->RemoveAllItems();
 
                FooterItem itemCamera;
-               itemCamera.Construct(ACTION_ID_FOOTER_CAMERA);
+               itemCamera.Construct(IDA_FOOTER_CAMERA);
                itemCamera.SetText(ResourceManager::GetString(L"EMPTY_SPACE"));
                Bitmap* pBitmap1 = ResourceManager::GetBitmapN(IDB_CONTROLBAR_CAMERA);
                if (pBitmap1 != null)
@@ -188,27 +179,17 @@ AlbumListForm::InitializeFooter(void)
                }
                pFooter->AddItem(itemCamera);
                delete pBitmap1;
-               pBitmap1 = null;
-
-               ButtonItem footerMore;
-               footerMore.Construct(BUTTON_ITEM_STYLE_ICON, ACTION_ID_FOOTER_MORE);
-               Bitmap* pBitmapMore = ResourceManager::GetBitmapN(IDB_CONTROLBAR_MORE);
-               if (pBitmapMore != null)
-               {
-                       footerMore.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmapMore);
-               }
-               pFooter->SetButton(BUTTON_POSITION_LEFT,footerMore);
-               delete pBitmapMore;
-               pBitmapMore = null;
-
-               __pContextMenuMore = new (std::nothrow) ContextMenu();
-               __pContextMenuMore->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
-               __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_HEADER_EDIT"), ACTION_ID_FOOTER_EDIT);
-               __pContextMenuMore->SetShowState(false);
-               __pContextMenuMore->AddActionEventListener(*this);
 
+               __pOptionMenu = new (std::nothrow) OptionMenu();
+               __pOptionMenu->Construct();
+               __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_HEADER_EDIT"),IDA_FOOTER_EDIT);
+               __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_HEADER_EDIT"), IDA_FOOTER_EDIT);
+               __pOptionMenu->SetShowState(false);
+               __pOptionMenu->AddActionEventListener(*this);
+               SetFormMenuEventListener(this);
                SetFormBackEventListener(this);
        }
+
        pFooter->AddActionEventListener(*this);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
@@ -221,19 +202,25 @@ AlbumListForm::CreateIconListView(void)
        AppLogDebug("ENTER");
        Dimension itemSize(W_FOLDER_SIZE, H_FOLDER_SIZE);
 
-       __pAlbumViewIconList = static_cast< IconListView* >(GetControl(L"IDC_ICONLISTVIEW_ALBUM_LIST"));
-       AppAssert(__pAlbumViewIconList);
-
+       __pAlbumViewIconList = new IconListView();
+       __pAlbumViewIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height),
+                   Dimension(W_FOLDER_SIZE, H_FOLDER_SIZE), ICON_LIST_VIEW_STYLE_NORMAL, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
        __pAlbumViewIconList->SetItemProvider(*this);
        __pAlbumViewIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
        __pAlbumViewIconList->AddIconListViewItemEventListener(*this);
 
+
+
        Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
+
        if (pBitmap != null)
        {
                __pAlbumViewIconList->SetBitmapOfEmptyList(pBitmap);
                delete pBitmap;
        }
+       __pAlbumViewIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
+
+       AddControl(*__pAlbumViewIconList);
 
        __pAlbumViewIconList->SetShowState(true);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -298,28 +285,28 @@ AlbumListForm::OnIconListViewItemStateChanged(IconListView& view, int index, Ico
                AlbumInfo* pSendAlbumInfo = new (std::nothrow) AlbumInfo();
                pSendAlbumInfo->Construct(*pAlbumInfo);
 
-               ArrayList* aList = new (std::nothrow) ArrayList(SingleObjectDeleter);
-               aList->Construct();
-               aList->Add(pSendAlbumInfo);
+               ArrayList* pArrayList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArrayList->Construct();
+               pArrayList->Add(pSendAlbumInfo);
 
-               if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+               if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
                {
                        if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_IMAGE)
                        {
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_IMAGE_LIST_EDITOR), aList);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_IMAGE_LIST_EDITOR), pArrayList);
                        }
-                       else if  (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_VIDEO)
+                       else if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_VIDEO)
                        {
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_VIDEO_LIST_EDITOR), aList);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_VIDEO_LIST_EDITOR), pArrayList);
                        }
                        else
                        {
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_IMAGE_LIST_EDITOR), aList);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_IMAGE_LIST_EDITOR), pArrayList);
                        }
                }
                else
                {
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALL_LIST), aList);
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALL_LIST), pArrayList);
                }
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -340,105 +327,39 @@ AlbumListForm::OnTerminating(void)
 {
        AppLogDebug("ENTER");
        __pPresentationModel->RemovePresentationModelListener(*this);
-
-       if (__pContextMenuMore != null)
-       {
-               delete __pContextMenuMore;
-               __pContextMenuMore = null;
-       }
-
-       if (__pTimer != null)
-       {
-               __pTimer->Cancel();
-               delete __pTimer;
-               __pTimer = null;
-       }
+       __pPresentationModel->RemoveContentEventListener(*this);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return E_SUCCESS;
 }
 
 void
-AlbumListForm::OnTimerExpired(Timer &timer)
+AlbumListForm::OnActionPerformed(const Control& source, int actionId)
 {
        AppLogDebug("ENTER");
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
-       {
-               if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_IMAGE)
-               {
-                       __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_IMAGE);
-               }
-               else if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_VIDEO)
-               {
-                       __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_VIDEO);
-               }
-               else
-               {
-                       __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_VIDEO);
-               }
-       }
-       else
-       {
-               __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_ALL);
-       }
-
-       __itemCount = __pPresentationModel->GetFolderCount();
+       SceneManager* pSceneManager = SceneManager::GetInstance();
 
-       static int timerCount = 0;
-       if (__itemCount > 1)
+       switch (actionId)
        {
-               __pAlbumViewIconList->UpdateList();
-       }
-       else if (timerCount < 30)
+       case IDA_FOOTER_CAMERA:
        {
-               __pTimer->Start(1000);
-               ++timerCount;
+               HashMap* pDataList = new (std::nothrow) HashMap(SingleObjectDeleter);
+               pDataList->Construct();
+               pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_CAMERA_ALLOW_SWITCH),
+                               new (std::nothrow) String(APPCONTROL_DATA_TRUE));
+               __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_CAMERA,
+                               APPCONTROL_OPERATION_ID_CREATE_CONTENT, null,
+                               new (std::nothrow) String(APPCONTROL_MIME_IMAGE_JPG), pDataList, null);
        }
-       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
-}
+       break;
 
-void
-AlbumListForm::OnActionPerformed(const Control& source, int actionId)
-{
-       AppLogDebug("ENTER");
-       SceneManager* pSceneManager = SceneManager::GetInstance();
-
-       switch (actionId)
+       case IDA_FOOTER_EDIT:
        {
-       case ACTION_ID_FOOTER_CAMERA:
-               {
-                       HashMap* pDataList = new (std::nothrow) HashMap(SingleObjectDeleter);
-                       pDataList->Construct();
-                       pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_TYPE),
-                                       new (std::nothrow) String(APPCONTROL_DATA_CAMERA));
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST_EDITOR));
+       }
+       break;
 
-                       __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_CAMERA,
-                                       APPCONTROL_OPERATION_ID_CAPTURE, pDataList, null);
-               }
-               break;
-       case ACTION_ID_FOOTER_EDIT:
-               {
-                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST_EDITOR));
-               }
-               break;
-       case ACTION_ID_FOOTER_MORE:
-               {
-                       if (__pContextMenuMore->GetShowState() == false && __pPresentationModel->GetFolderCount() != 0)
-                       {
-                               Rectangle rect = source.GetBounds();
-                               __pContextMenuMore->SetAnchorPosition(Point(rect.width/8, rect.y));
-                               __pContextMenuMore->SetShowState(true);
-                               __pContextMenuMore->Show();
-                       }
-                       else
-                       {
-                               __pContextMenuMore->SetShowState(false);
-                       }
-               }
-               break;
        default:
-               {
-               }
                break;
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -448,13 +369,13 @@ void
 AlbumListForm::OnFormBackRequested(Form& source)
 {
        AppLogDebug("ENTER");
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
                AppLogDebug("APP_CONTROL_MODE_PICK");
                GalleryApp* pApp = dynamic_cast<GalleryApp*>(UiApp::GetInstance());
                if (pApp != null)
                {
-                       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+                       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
                        {
                                pApp->SendAppControlResult(APP_CTRL_RESULT_CANCELED, null);
                        }
@@ -471,15 +392,16 @@ AlbumListForm::OnFormBackRequested(Form& source)
 }
 
 void
-AlbumListForm::OnSceneActivatedN(const SceneId& previousSceneId,
-                                                                                 const SceneId& currentSceneId, IList* pArgs)
+AlbumListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
 {
        AppLogDebug("ENTER");
+       __pPresentationModel->AddContentEventListener(this);
 
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
                if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_IMAGE)
                {
+                       __pPresentationModel->ClearThumbnailRequests(false);
                        __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_IMAGE);
                }
                else if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_VIDEO)
@@ -501,26 +423,35 @@ AlbumListForm::OnSceneActivatedN(const SceneId& previousSceneId,
        {
                __pAlbumViewIconList->UpdateList();
        }
+
+       Invalidate(true);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
 void
-AlbumListForm::OnSceneDeactivated(const SceneId& currentSceneId,
-                                                                                  const SceneId& nextSceneId)
+AlbumListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
 {
        AppLogDebug("ENTER");
+       __pPresentationModel->RemoveContentEventListener(*this);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
 void
-AlbumListForm::OnUpdateContentList()
+AlbumListForm::OnContentUpdated(void)
 {
        AppLogDebug("ENTER");
 
-       if (__pPresentationModel->GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if ( __pOptionMenu != null && __pOptionMenu ->GetShowState() == true)
+       {
+               __pOptionMenu->SetShowState(false);
+               __pOptionMenu->Show();
+       }
+
+       if (__pPresentationModel->GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
                if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_IMAGE)
                {
+                       __pPresentationModel->ClearThumbnailRequests(false);
                        __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_IMAGE);
                }
                else if (__pPresentationModel->GetAppControlMediaType() == APPCONTROL_MEDIA_TYPE_VIDEO)
@@ -539,6 +470,7 @@ AlbumListForm::OnUpdateContentList()
 
        __itemCount = __pPresentationModel->GetFolderCount();
        __pAlbumViewIconList->UpdateList();
+
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -567,3 +499,71 @@ AlbumListForm::Update(void)
 
        return r;
 }
+
+void
+AlbumListForm::OnFormMenuRequested (Tizen::Ui::Controls::Form &source)
+{
+
+       if ( __pOptionMenu == null )
+       {
+               return ;
+       }
+
+       __pOptionMenu->SetShowState(true);
+       __pOptionMenu->Show();
+
+}
+
+void
+AlbumListForm::OnOrientationChanged(const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
+{
+
+       if( __pAlbumViewIconList != null )
+       {
+               RemoveControl(__pAlbumViewIconList);
+       }
+
+       __pAlbumViewIconList = new IconListView();
+
+       if( orientationStatus == ORIENTATION_STATUS_PORTRAIT )
+       {
+       __pAlbumViewIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height),
+                   Dimension(W_FOLDER_SIZE, H_FOLDER_SIZE), ICON_LIST_VIEW_STYLE_NORMAL, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
+       }
+       else if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
+       {
+               int horizontalSpacing = 8;
+               int verticalSpacing = 60;
+        int height = 424;
+        int width = 410;
+
+               __pAlbumViewIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height),
+                                   Dimension(width, height), ICON_LIST_VIEW_STYLE_NORMAL, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
+
+               __pAlbumViewIconList->SetItemSpacing(horizontalSpacing, verticalSpacing);
+               __pAlbumViewIconList->SetMargin(MARGIN_TYPE_TOP,60);
+       }
+
+       Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
+
+       if (pBitmap != null)
+       {
+               __pAlbumViewIconList->SetBitmapOfEmptyList(pBitmap);
+               delete pBitmap;
+       }
+
+       __pAlbumViewIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
+
+       __pAlbumViewIconList->SetItemProvider(*this);
+       __pAlbumViewIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
+       __pAlbumViewIconList->AddIconListViewItemEventListener(*this);
+
+       AddControl(*__pAlbumViewIconList);
+
+}
+
+
+
+
+
+