diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/ui/src/irmainview.cpp --- a/qtinternetradio/ui/src/irmainview.cpp Mon May 03 12:25:23 2010 +0300 +++ b/qtinternetradio/ui/src/irmainview.cpp Fri May 14 15:43:29 2010 +0300 @@ -18,13 +18,14 @@ #include #include "irapplication.h" -#include "irabstractviewmanager.h" +#include "irviewmanager.h" #include "irmainview.h" #include "ircategoryview.h" #include "irstationsview.h" #include "irqnetworkcontroller.h" #include "irmainmodel.h" #include "irqenums.h" +#include "iruidefines.h" // public functions @@ -36,13 +37,13 @@ iMainModel(NULL) { setFlag(EViewFlag_ClearStackWhenActivate); - - connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)), - this, SLOT(networkRequestNotified(IRQNetworkEvent))); - setHeadingText(tr("Collections")); + iLoader.load(ABSTRACT_LIST_VIEW_BASE_LAYOUT_FILENAME, ABSTRACT_LIST_VIEW_BASE_WITH_TOOLBAR_SECTION); - iMainModel = new IRMainModel(this); - iListView->setModel(iMainModel); + //if this view is not starting view, finish all initialization in constructor + if (getViewManager()->views().count() > 0) + { + lazyInit(); + } } /* @@ -52,30 +53,6 @@ { } -/* - * Description : virtual function from base class IRBaseView. - * handle view commands. - * Parameters : aCommand : see the definition of TIRViewCommand - * Return : EIR_DoDefault : caller does default handling - * EIR_NoDefault : caller doesn't do default handling - */ -TIRHandleResult IRMainView::handleCommand(TIRViewCommand aCommand, TIRViewCommandReason aReason) -{ - TIRHandleResult ret = IrAbstractListViewBase::handleCommand(aCommand, aReason); - switch (aCommand) - { - case EIR_ViewCommand_ACTIVATED: - updateView(); - ret = EIR_NoDefault; - break; - - default: - break; - } - - return ret; -} - // slots functions /* @@ -195,3 +172,22 @@ IrAbstractListViewBase::updateView(); iMainModel->checkUpdate(); } + +void IRMainView::lazyInit() +{ + if (!initCompleted()) + { + IrAbstractListViewBase::lazyInit(); + + setCheckedAction(); + + connect(iNetworkController, SIGNAL(networkRequestNotified(IRQNetworkEvent)), + this, SLOT(networkRequestNotified(IRQNetworkEvent))); + + iMainModel = new IRMainModel(iApplication->getPlayList(), this); + iMainModel->checkUpdate(); + iListView->setModel(iMainModel); + + setInitCompleted(true); + } +}