Remove context menu - Back key pressed
[apps/osp/Gallery.git] / src / GlAlbumListEditorForm.cpp
index dd8c1c9..8e3ac3f 100644 (file)
@@ -43,9 +43,10 @@ static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Val
 static const String RESERVED_CAMERA_PATH = Environment::GetMediaPath() + L"Camera" + DIRECTORY_SEPARATOR;
 static const String RESERVED_CAMERA_PATH_EXT = Environment::GetExternalStoragePath() + L"Camera" + DIRECTORY_SEPARATOR;
 static const String RESERVED_MEDIA_PATH = Environment::GetMediaPath();
+static const String RESERVED_EXTERNAL_MEDIA_PATH = Environment::GetExternalStoragePath();
 
 static const int GAP_W_POPUP_ITEM = 5;
-static const int W_DELETE_POPUP = 600;
+static const int W_DELETE_POPUP = 620;
 static const int H_DELETE_POPUP = 300;
 static const int H_DELETE_LABEL = 180;
 static const int Y_DELETE_BUTTON = 180;
@@ -53,9 +54,6 @@ static const int H_DELETE_BUTTON = 80;
 
 static const int FORMAT_BUFFER_SIZE = 256;
 
-static const int X_POSITION_SHARE_CONTEXTMENU = 280;
-static const int Y_POSITION_SHARE_CONTEXTMENU = 1140;
-
 static const Color COLOR_FOLDER_BITMAP_DIM(Color::GetColor(COLOR_ID_BLACK));
 static const int ALPHA_FOLDER_BITMAP_DIM = 70;
 
@@ -95,6 +93,10 @@ AlbumListEditorForm::OnInitializing(void)
 {
        AppLogDebug("ENTER");
        result r = E_SUCCESS;
+
+       SetOrientation(ORIENTATION_AUTOMATIC);
+       AddOrientationEventListener(*this);
+
        __pPresentationModel = AlbumListPresentationModel::GetInstance();
        __pPresentationModel->ClearThumbnailRequests();
        r = __pPresentationModel->AddPresentationModelListener(this);
@@ -141,7 +143,7 @@ void
 AlbumListEditorForm::OnContentUpdated(void)
 {
        AppLogDebug("ENTER");
-
+       int maxCount = __pPresentationModel->GetFolderCount();
        if(__pDeletePopup != null)
        {
                if(__pDeletePopup->IsVisible() == true)
@@ -152,6 +154,10 @@ AlbumListEditorForm::OnContentUpdated(void)
                }
        }
 
+       for (int i = 0; i < maxCount; ++i)
+       {
+               __pEditorFolderIconList->SetItemChecked(i, false);
+       }
        SceneManager* pSceneManager = SceneManager::GetInstance();
        pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST));
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -164,19 +170,12 @@ AlbumListEditorForm::InitializeControl(void)
        result r = E_SUCCESS;
        String tempString;
 
+       __pSelectCountLabel = static_cast<Label*>(GetControl(L"IDC_LABEL_ALBUM_LIST_EDITOR_SELECTED"));
+               AppAssert(__pSelectCountLabel);
+
        CreateIconListView();
        __checkedCount = GetCheckedFolderCount();
 
-       __pSelectCountLabel = static_cast<Label*>(GetControl(L"IDC_LABEL_ALBUM_LIST_EDITOR_SELECTED"));
-       AppAssert(__pSelectCountLabel);
-
-       __pShareContextMenu = new (std::nothrow) ContextMenu();
-       r = __pShareContextMenu->Construct(Point(X_POSITION_SHARE_CONTEXTMENU, Y_POSITION_SHARE_CONTEXTMENU),
-                       CONTEXT_MENU_STYLE_LIST);
-       r = __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"),
-                       IDA_CONTEXT_MENU_MESSAGE);
-       r = __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXT_MENU_EMAIL);
-       __pShareContextMenu->AddActionEventListener(*this);
 
        r = InitializePopup();
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -203,7 +202,7 @@ AlbumListEditorForm::InitializePopup(void)
 
                Button* pDeleteButton = new (std::nothrow) Button();
                pDeleteButton->Construct(
-                               Rectangle(0, Y_DELETE_BUTTON, popupClientBounds.width / 2 - GAP_W_POPUP_ITEM, H_DELETE_BUTTON),
+                               Rectangle(10, Y_DELETE_BUTTON, popupClientBounds.width / 2 - GAP_W_POPUP_ITEM -10, H_DELETE_BUTTON),
                                ResourceManager::GetString(L"IDS_COM_BODY_DELETE"));
                pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
                pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
@@ -214,14 +213,14 @@ AlbumListEditorForm::InitializePopup(void)
                Button* pCancelButton = new (std::nothrow) Button();
                pCancelButton->Construct(
                                Rectangle(popupClientBounds.width / 2 + GAP_W_POPUP_ITEM, Y_DELETE_BUTTON,
-                                               popupClientBounds.width / 2 - GAP_W_POPUP_ITEM, H_DELETE_BUTTON),
+                                               popupClientBounds.width / 2 - GAP_W_POPUP_ITEM -10, H_DELETE_BUTTON),
                                                ResourceManager::GetString(L"IDS_COM_POP_CANCEL"));
                pCancelButton->SetActionId(IDA_DELETE_POPUP_CANCEL);
                pCancelButton->AddActionEventListener(*this);
 
-               __pDeletePopup->AddControl(*pLabel);
-               __pDeletePopup->AddControl(*pDeleteButton);
-               __pDeletePopup->AddControl(*pCancelButton);
+               __pDeletePopup->AddControl(pLabel);
+               __pDeletePopup->AddControl(pDeleteButton);
+               __pDeletePopup->AddControl(pCancelButton);
        }
        else
        {
@@ -237,12 +236,31 @@ void
 AlbumListEditorForm::CreateIconListView(void)
 {
        AppLogDebug("ENTER");
-       __pEditorFolderIconList = static_cast<IconListView*>(GetControl(L"IDC_ICONLISTVIEW_ALBUM_LIST_EDITOR"));
-       AppAssert(__pEditorFolderIconList);
 
+
+       __pEditorFolderIconList = new IconListView();
+       __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height - __pSelectCountLabel->GetHeight()),
+                   Dimension(348, 348), ICON_LIST_VIEW_STYLE_MARK, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
+       __pEditorFolderIconList->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
+       __pEditorFolderIconList->SetTouchAnimationEnabled(false);
        __pEditorFolderIconList->SetItemProvider(*this);
+       __pEditorFolderIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
        __pEditorFolderIconList->AddIconListViewItemEventListener(*this);
+
+       Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
+
+       if (pBitmap != null)
+       {
+               __pEditorFolderIconList->SetBitmapOfEmptyList(pBitmap);
+               delete pBitmap;
+       }
+
+       __pEditorFolderIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
+
+       AddControl(*__pEditorFolderIconList);
+
        __pEditorFolderIconList->SetShowState(true);
+
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -336,7 +354,7 @@ AlbumListEditorForm::CreateItem(int index)
 
                if (index == 0 || (reservedCameraName.Equals(albumName, true) &&
                        (RESERVED_CAMERA_PATH.Equals(albumPath, true) || RESERVED_CAMERA_PATH_EXT.Equals(albumPath, true)))
-                       || RESERVED_MEDIA_PATH.Equals(albumPath, true))
+                       || RESERVED_MEDIA_PATH.Equals(albumPath, true) || RESERVED_EXTERNAL_MEDIA_PATH.Equals(albumPath, true))
                {
                        // rename disabled
                }
@@ -409,6 +427,14 @@ AlbumListEditorForm::OnIconListViewOverlayBitmapSelected (IconListView &iconList
        pSelectedIndex->Add(new (std::nothrow) Integer(FILE_ACTION_MOVE));
        pSelectedIndex->Add(new (std::nothrow) Integer(index));
 
+       if( __pEditorFolderIconList->IsItemChecked(index) == false )
+       {
+               __pEditorFolderIconList->SetItemChecked(index,true);
+       }
+       else
+       {
+               __pEditorFolderIconList->SetItemChecked(index,false);
+       }
        pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_NAME_EDITOR), pSelectedIndex);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
@@ -569,6 +595,21 @@ AlbumListEditorForm::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_FOOTER_SHARE:
        {
+
+               if( __pShareContextMenu != NULL)
+               {
+                       delete __pShareContextMenu;
+                       __pShareContextMenu = null;
+               }
+
+               __pShareContextMenu = new (std::nothrow) ContextMenu();
+               __pShareContextMenu->Construct(Point(GetClientAreaBounds().width/3 + 15, GetClientAreaBounds().height + __pSelectCountLabel->GetHeight() + 5),
+                               CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD);
+                __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"),
+                               IDA_CONTEXT_MENU_MESSAGE);
+               __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXT_MENU_EMAIL);
+               __pShareContextMenu->SetFocusable(true);
+               __pShareContextMenu->AddActionEventListener(*this);
                __pShareContextMenu->SetShowState(true);
                __pShareContextMenu->Show();
        }
@@ -621,39 +662,44 @@ AlbumListEditorForm::OnSceneActivatedN(const SceneId& previousSceneId,
                const SceneId& currentSceneId, IList* pArgs)
 {
        AppLogDebug("ENTER OnSceneActivatedN");
-       __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_ALL);
-
-       int count = __pPresentationModel->GetFolderCount();
+       String tempString;
 
-       for ( int index = 0 ; index < count ; index++ )
-       {
-               __pEditorFolderIconList->SetItemChecked(index,false);
-       }
 
-       __pEditorFolderIconList->UpdateList();
+       int count = __pPresentationModel->GetFolderCount();
 
        __pPresentationModel->AddContentEventListener(this);
 
        __checkedCount = GetCheckedFolderCount();
 
-       String tempString;
-
-       if (__checkedCount == 0)
+       if ( previousSceneId == IDSCN_ALBUM_NAME_EDITOR )
        {
-               tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
-       }
-       else if (__checkedCount == 1)
-       {
-               tempString = ResourceManager::GetString(L"IDS_VR_POP_1_ITEM_SELECTED");
+
+               if (__checkedCount ==  0)
+               {
+                       tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
+               }
+               else
+               {
+                       tempString.Format(FORMAT_BUFFER_SIZE,
+                                       ResourceManager::GetString(L"IDS_VR_POP_PD_ITEMS_SELECTED").GetPointer(), __checkedCount);
+               }
        }
        else
        {
-               tempString.Format(FORMAT_BUFFER_SIZE,
-                               ResourceManager::GetString(L"IDS_VR_POP_PD_ITEMS_SELECTED").GetPointer(), __checkedCount);
+               __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_ALL);
+
+               for ( int index = 0 ; index < count ; index++ )
+               {
+                       __pEditorFolderIconList->SetItemChecked(index,false);
+               }
+
+               __pEditorFolderIconList->UpdateList();
+
+               tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
        }
 
        __pSelectCountLabel->SetText(tempString);
-       __pSelectCountLabel->RequestRedraw();
+       __pSelectCountLabel->Invalidate(true);
 
        SetButtonState();
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -664,6 +710,18 @@ AlbumListEditorForm::OnSceneDeactivated(const SceneId& currentSceneId, const Sce
 {
        AppLogDebug("ENTER");
        __pPresentationModel->RemoveContentEventListener(*this);
+
+       if (nextSceneId != IDSCN_ALBUM_NAME_EDITOR )
+       {
+               int loopCount = __pPresentationModel->GetFolderCount();
+
+               for( int count = 0 ; count < loopCount ; count++ )
+               {
+                       __pEditorFolderIconList->SetItemChecked(count,false);
+               }
+               __pEditorFolderIconList->UpdateList();
+       }
+
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -772,8 +830,17 @@ AlbumListEditorForm::OnRequestMessage(void)
                pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_MESSAGE_TYPE), new (std::nothrow) String(APPCONTROL_DATA_MMS));
                pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_PATH), (Object*)pArrayList);
 
-               __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_MESSAGE, APPCONTROL_OPERATION_ID_COMPOSE,
+               r = __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_MESSAGE, APPCONTROL_OPERATION_ID_COMPOSE,
                                null, null, pDataList, null);
+
+               if (r == E_MAX_EXCEEDED)
+               {
+                       MessageBox messageBox;
+                       messageBox.Construct(L"", ResourceManager::GetString(L"IDS_RCS_BODY_MAXIMUM_NUMBER_OF_FILES_EXCEEDED"),
+                                       MSGBOX_STYLE_NONE, 3000);
+                       int modalResult;
+                       messageBox.ShowAndWait(modalResult);
+               }
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
@@ -838,8 +905,17 @@ AlbumListEditorForm::OnRequestEmail(void)
                pDataList->Construct();
                pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_PATH), (Object*)pArrayList);
 
-               __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_EMAIL, APPCONTROL_OPERATION_ID_COMPOSE,
+               r = __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_EMAIL, APPCONTROL_OPERATION_ID_COMPOSE,
                                new (std::nothrow) String(APPCONTROL_URI_MAIL_TO), null, pDataList, null);
+
+               if (r == E_MAX_EXCEEDED)
+               {
+                       MessageBox messageBox;
+                       messageBox.Construct(L"", ResourceManager::GetString(L"IDS_RCS_BODY_MAXIMUM_NUMBER_OF_FILES_EXCEEDED"),
+                                       MSGBOX_STYLE_NONE, 3000);
+                       int modalResult;
+                       messageBox.ShowAndWait(modalResult);
+               }
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
@@ -882,3 +958,66 @@ AlbumListEditorForm::SetButtonState(void)
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
+
+
+void
+AlbumListEditorForm::OnOrientationChanged(const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
+{
+
+       IList* pIndexList = GetItemCheckedIndexListN();
+
+       if( __pEditorFolderIconList != null )
+       {
+               RemoveControl(__pEditorFolderIconList);
+       }
+
+       __pEditorFolderIconList = new IconListView();
+
+       if( orientationStatus == ORIENTATION_STATUS_PORTRAIT )
+       {
+               __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height- __pSelectCountLabel->GetHeight()),
+                   Dimension(348, 348), ICON_LIST_VIEW_STYLE_MARK, 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;
+
+        __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height - __pSelectCountLabel->GetHeight()),
+                                   Dimension(width, height), ICON_LIST_VIEW_STYLE_MARK, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
+
+        __pEditorFolderIconList->SetItemSpacing(horizontalSpacing, verticalSpacing);
+        __pEditorFolderIconList->SetMargin(MARGIN_TYPE_TOP,40);
+       }
+
+       Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
+
+       if (pBitmap != null)
+       {
+               __pEditorFolderIconList->SetBitmapOfEmptyList(pBitmap);
+               delete pBitmap;
+       }
+
+       __pEditorFolderIconList->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
+       __pEditorFolderIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
+       __pEditorFolderIconList->SetTouchAnimationEnabled(false);
+       __pEditorFolderIconList->SetItemProvider(*this);
+       __pEditorFolderIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
+       __pEditorFolderIconList->AddIconListViewItemEventListener(*this);
+
+       AddControl(*__pEditorFolderIconList);
+
+       int loopCount = pIndexList->GetCount();
+       int index = -1 ;
+       for(int count = 0 ; count < loopCount; count ++)
+       {
+               Integer* pRealIndex = static_cast<Integer*>(pIndexList->GetAt(count));
+                index = pRealIndex->ToInt();
+               __pEditorFolderIconList->SetItemChecked(index, true);
+               __pEditorFolderIconList->RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
+       }
+
+}
+