videocollection/videocollectionview/src/videolistselectiondialog.cpp
changeset 37 4eb2df7f7cbe
parent 36 8aed59de29f9
child 38 ff53afa8ad05
--- a/videocollection/videocollectionview/src/videolistselectiondialog.cpp	Fri Apr 16 18:13:14 2010 +0300
+++ b/videocollection/videocollectionview/src/videolistselectiondialog.cpp	Fri Apr 30 09:52:11 2010 +0300
@@ -15,7 +15,7 @@
 * 
 */
 
-// Version : %version: 22 %
+// Version : %version: 25 %
 
 // INCLUDE FILES
 #include <qgraphicsitem.h>
@@ -26,6 +26,7 @@
 #include <hbabstractitemview.h>
 #include <hbinputdialog.h>
 #include <vcxmyvideosdefs.h>
+#include <hbstyleloader.h>
 
 #include "videocollectionuiloader.h"
 #include "videolistwidget.h"
@@ -58,6 +59,7 @@
     , mHeading( 0 )
     , mCheckboxContainer( 0 )
     , mItemCount( 0 )
+    , mCheckBoxText( 0 )
     , mCheckBox( 0 )
     , mListContainer( 0 )
     , mForcedCheck( false )
@@ -67,6 +69,9 @@
     , mSecondaryAction( 0 )
 {
 	FUNC_LOG;
+    
+	HbStyleLoader::registerFilePath( ":/style/hbdialog.css" );
+
     setDismissPolicy(HbDialog::NoDismiss);
     setTimeout(HbDialog::NoTimeout);    
 
@@ -84,6 +89,8 @@
             delete mListWidget;
             mListWidget = 0;
         }
+        // disable list related animations to make dialog faster 
+        mListWidget->setEnabledAnimations(HbAbstractItemView::None);
     }
 }
 
@@ -94,7 +101,9 @@
 VideoListSelectionDialog::~VideoListSelectionDialog() 
 {
 	FUNC_LOG;
+	HbStyleLoader::unregisterFilePath( ":/style/hbdialog.css" );
     delete mListWidget;
+    mListWidget = 0;
 }
 
 // ---------------------------------------------------------------------------
@@ -198,6 +207,12 @@
     {
         mCheckBox = mUiLoader->findWidget<HbCheckBox >(DOCML_NAME_MARKALL);
     }
+
+    if(!mCheckBoxText)
+    {
+        mCheckBoxText = mUiLoader->findWidget<HbLabel >(DOCML_NAME_LBL_MARKALL);
+    }
+
     // HbDialog connects actions to finished signal by default. 
     if(!mPrimaryAction)
     {
@@ -209,9 +224,10 @@
         mSecondaryAction = new HbAction(hbTrId("txt_common_button_cancel"));
         addAction(mSecondaryAction);
     }
-    if(!mListContainer || !mHeading || !mCheckBox)
+    
+    if(!mListContainer || !mHeading || !mCheckBox || !mCheckBoxText)
     {
-        ERROR(-1, "VideoListSelectionDialog::initDialog() !mListContainer || !mHeading || !mCheckBox");
+        ERROR(-1, "VideoListSelectionDialog::initDialog() !mListContainer || !mHeading || !mCheckBox || !mCheckBoxText");
         return false;
     }
     return true;  
@@ -331,18 +347,56 @@
     QString albumName("");
     if( mTypeOfSelection == ESelectCollection )
     {
+        mTypeOfSelection = EAddToCollection;
         if( mSelectedAlbumId == TMPXItemId::InvalidId())
         {
-            albumName = queryNewAlbumSelected();
-            if(mSelectedAlbumId == TMPXItemId::InvalidId())
-            {
-                // user canceled new album creation
-                return;
-            }           
+            QString label(hbTrId("txt_videos_title_enter_name"));
+            HbInputDialog *dialog = new HbInputDialog();
+            dialog->setAttribute(Qt::WA_DeleteOnClose);
+            dialog->getText(label, this, SLOT(newAlbumNameDialogFinished(HbAction *)), 
+                    hbTrId("txt_videos_dialog_entry_new_collection"));
+       }
+       else
+       {
+           finalize();
        }
-       mTypeOfSelection = EAddToCollection;
+    }
+    else
+    {
+        finalize();
     }
+}
+
+// ---------------------------------------------------------------------------
+// newAlbumNameDialogFinished
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::newAlbumNameDialogFinished(HbAction *action)
+{
+    FUNC_LOG;
+    Q_UNUSED(action);
     
+    HbInputDialog *dialog = static_cast<HbInputDialog*>(sender());
+    
+    QVariant variant = dialog->value();
+    
+    if(dialog->actions().first() == action && variant.isValid())
+    {
+        QString text = mModel->resolveAlbumName(variant.toString());
+        if(text.length())
+        {
+            mSelectedAlbumId = mModel->addNewAlbum(text);
+            finalize(text);
+        }
+    }
+}
+
+// ---------------------------------------------------------------------------
+// finalize
+// ---------------------------------------------------------------------------
+//
+void VideoListSelectionDialog::finalize(QString albumName)
+{
     // Must be checked again if type was ESelectCollection
     if(mTypeOfSelection == EAddToCollection)
     {  
@@ -626,24 +680,3 @@
     return name;
 }
 
-// ---------------------------------------------------------------------------
-// queryNewAlbumSelected
-// ---------------------------------------------------------------------------
-//
-QString VideoListSelectionDialog::queryNewAlbumSelected()
-{
-	FUNC_LOG;
-    mSelectedAlbumId = TMPXItemId::InvalidId();
-    bool ok = false;
-    QString label(hbTrId("txt_videos_title_enter_name"));
-    QString text("");
-    text = HbInputDialog::getText(label, hbTrId("txt_videos_dialog_entry_new_collection"), &ok);
-    if (ok && text.length())
-    {
-       // check for duplicate album name and add new album
-        text = mModel->resolveAlbumName(text);
-        mSelectedAlbumId = mModel->addNewAlbum(text);
-    }
-    return text;
-}
-