qtinternetradio/ui/src/ircategoryview.cpp
changeset 5 0930554dc389
parent 3 ee64f059b8e1
child 8 3b03c28289e6
--- a/qtinternetradio/ui/src/ircategoryview.cpp	Fri May 14 15:43:29 2010 +0300
+++ b/qtinternetradio/ui/src/ircategoryview.cpp	Thu May 27 12:46:34 2010 +0300
@@ -15,9 +15,9 @@
 *
 */
 
+#include <hbtoolbar.h>
 #include <hbaction.h>
 #include <hblistview.h>
-#include <hbprogressdialog.h>
 
 #include "irapplication.h"
 #include "irviewmanager.h"
@@ -34,11 +34,10 @@
  */
 IRCategoryView::IRCategoryView(IRApplication* aApplication, TIRViewId aViewId) 
                                : IrAbstractListViewBase(aApplication, aViewId),
-                                 iWaitDialog(NULL),
                                  iLastSelectItem(0)
 {	
     setViewParameter(EIRViewPara_Genre);
-    setFlag(EViewFlag_ClearStackWhenActivate);
+    setFlag(EViewFlag_ClearStackWhenActivate|EViewFlag_StickyViewEnabled);
     
     //if this view is not starting view, finish all initialization in constructor
     if (getViewManager()->views().count() > 0)
@@ -52,8 +51,6 @@
  */
 IRCategoryView::~IRCategoryView()
 {
-    delete iWaitDialog;
-    iWaitDialog = NULL;
 }
 
 /*
@@ -82,6 +79,7 @@
                 {
                     iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION);
                     iLoadedSection = ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION;
+                    initToolBar();
                 }
             }
             else
@@ -94,18 +92,7 @@
             }
         }
         break;
-        
-        case EIR_ViewCommand_ACTIVATED:
-        break;
-        
-        case EIR_ViewCommand_DEACTIVATE:
-            if (iWaitDialog)
-            {
-                iWaitDialog->close();
-                ret = EIR_NoDefault;
-            }
-            break;
-            
+
         default:
             break;
     }
@@ -180,7 +167,7 @@
             resetCurrentItem();
         }
         setViewParameter(EIRViewPara_Genre);
-        setFlag(EViewFlag_ClearStackWhenActivate);
+        setFlag(EViewFlag_ClearStackWhenActivate|EViewFlag_StickyViewEnabled);
         iIsdsClient->isdsCategoryRequest(IRQIsdsClient::EGenre, cache);
         break;
         
@@ -192,7 +179,8 @@
             resetCurrentItem();
         }
         setViewParameter(EIRViewPara_Language);
-        setFlag(EViewFlag_None);
+        clearFlag(EViewFlag_ClearStackWhenActivate);
+        clearFlag(EViewFlag_StickyViewEnabled);
         iIsdsClient->isdsCategoryRequest(IRQIsdsClient::ELanguages, cache);
         break;
         
@@ -204,7 +192,8 @@
             resetCurrentItem();
         }
         setViewParameter(EIRViewPara_Country);
-        setFlag(EViewFlag_None);
+        clearFlag(EViewFlag_ClearStackWhenActivate);
+        clearFlag(EViewFlag_StickyViewEnabled);
         iIsdsClient->isdsCategoryRequest(IRQIsdsClient::ECountries, cache);
         break;
         
@@ -215,7 +204,7 @@
     
     if (!cache)
     {
-        createWaitDialog(hbTrId("txt_common_info_loading"));
+        iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
     }
 }
 
@@ -275,15 +264,14 @@
             connectToIsdsClient();
             bool cache = false;
             iIsdsClient->isdsCategoryRequest(request, cache);
+            iApplication->createLoadingDialog(this, SLOT(cancelRequest()));
         }
         //for there may be some cache, and when we click, we need to handle here        
         else if ( EIR_UseNetwork_SelectItem == getUseNetworkReason())
         {
-            iApplication->closeConnectingDialog();
             handleItemSelected();               
         }        
         
-        setUseNetworkReason(EIR_UseNetwork_NoReason);
         break;
        
     case EIRQConnectingCancelled:
@@ -303,6 +291,8 @@
         setCheckedAction();
         break;
     }
+    
+    setUseNetworkReason(EIR_UseNetwork_NoReason);
 }
 
 
@@ -362,17 +352,12 @@
 void IRCategoryView::dataChanged()
 {
     disconnectIsdsClient();
-    iApplication->closeConnectingDialog();
+    iApplication->closeLoadingDialog();
 
     iListView->reset();
     iListView->setCurrentIndex(iModel->index(iLastSelectItem));
     iListView->scrollTo(iModel->index(iLastSelectItem));
     getViewManager()->activateView(this);
-    
-    if (iWaitDialog)
-    {
-        iWaitDialog->close();
-    }
 }
 
 /*
@@ -383,6 +368,14 @@
 {
     iIsdsClient->isdsCancelRequest();
     disconnectIsdsClient();
+    iApplication->closeLoadingDialog();
+    
+    //if this function is called and this view is current view, it indicates that this view is starting view and 
+    //data has not been loaded yet, so we need to back to collections view
+    if (getViewManager()->currentView() == this)
+    {
+        getViewManager()->activateView(EIRView_MainView);
+    }
 }
 
 /*
@@ -392,13 +385,8 @@
 void IRCategoryView::operationException(IRQError aError)
 {
     Q_UNUSED(aError);
-    iApplication->closeConnectingDialog();
-    
-    if (iWaitDialog)
-    {
-        iWaitDialog->close();
-    }
-    
+    iApplication->closeLoadingDialog();
+
     disconnectIsdsClient();
     
     popupNote(hbTrId("txt_irad_info_failed_to_connect"), HbMessageBox::MessageTypeWarning);
@@ -413,27 +401,6 @@
 
 //                                        private functions
 
-/*
- * Description : Show a wait dialog to inform user that data is being loaded. If wait dialog doesn't
- *               exist yet, create first
- */
-void IRCategoryView::createWaitDialog(const QString &aText)
-{
-    if (!iWaitDialog)
-    {
-        iWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
-        iWaitDialog->setTimeout(HbPopup::NoTimeout);
-        iWaitDialog->setModal(true);
-        iWaitDialog->setDismissPolicy(HbPopup::NoDismiss);
-        QAction *action = iWaitDialog->actions().at(0);
-        action->setText(hbTrId("txt_common_button_cancel"));
-        connect(action, SIGNAL(triggered()), this, SLOT(cancelRequest()));
-    }
-    
-    iWaitDialog->setText(aText);
-    iWaitDialog->open();
-}
-
 void IRCategoryView::connectToIsdsClient()
 {
     connect(iIsdsClient, SIGNAL(categoryItemsChanged(QList<IRQBrowseCategoryItem *> *)),
@@ -499,3 +466,13 @@
         setInitCompleted(true);
     }
 }
+
+void IRCategoryView::initToolBar()
+{
+    //add HbActions to the toolbar, the HbActions have been created in IrAbstractListViewBase
+    HbToolBar *viewToolBar = toolBar();
+    viewToolBar->addAction(iGenresAction);
+    viewToolBar->addAction(iCollectionsAction);
+    viewToolBar->addAction(iFavoritesAction);
+    viewToolBar->addAction(iSearchAction);
+}