homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsinstallationlogstate.cpp
changeset 90 3ac3aaebaee5
parent 69 87476091b3f5
equal deleted inserted replaced
86:e4f038c420f7 90:3ac3aaebaee5
    21 #include <QAction>
    21 #include <QAction>
    22 #include <hsmenuservice.h>
    22 #include <hsmenuservice.h>
    23 #include <casoftwareregistry.h>
    23 #include <casoftwareregistry.h>
    24 
    24 
    25 #include "hsinstallationlogstate.h"
    25 #include "hsinstallationlogstate.h"
    26 
    26 #include "hsdialogcontroller.h"
    27 /*!
    27 /*!
    28  \class HsInstallationLogState
    28  \class HsInstallationLogState
    29  \ingroup group_hsworkerstateplugin
    29  \ingroup group_hsworkerstateplugin
    30  \brief Uninstall Item State.
    30  \brief Uninstall Item State.
    31  Deletes app from collection.
    31  Deletes app from collection.
    34 /*!
    34 /*!
    35  Constructor.
    35  Constructor.
    36  \param parent Parent state.
    36  \param parent Parent state.
    37  */
    37  */
    38 HsInstallationLogState::HsInstallationLogState(QState *parent) :
    38 HsInstallationLogState::HsInstallationLogState(QState *parent) :
    39     QState(parent),
    39     QState(parent)
    40     mInstalationLogDialog(NULL)
       
    41 {
    40 {
    42     construct();
    41     construct();
    43 }
    42 }
    44 
    43 
    45 /*!
    44 /*!
    46  Destructor.
    45  Destructor.
    47  */
    46  */
    48 HsInstallationLogState::~HsInstallationLogState()
    47 HsInstallationLogState::~HsInstallationLogState()
    49 {
    48 {
    50     cleanUp(); // in case of throw
    49     QT_TRY {
       
    50         emit exit();
       
    51     } QT_CATCH (...) {
       
    52     }
    51 }
    53 }
    52 
    54 
    53 /*!
    55 /*!
    54  Constructs contained objects.
    56  Constructs contained objects.
    55  */
    57  */
    57 {
    59 {
    58     setObjectName("/InstallationLogState");
    60     setObjectName("/InstallationLogState");
    59     if (this->parent()) {
    61     if (this->parent()) {
    60         setObjectName(this->parent()->objectName() + objectName());
    62         setObjectName(this->parent()->objectName() + objectName());
    61     }
    63     }
    62     connect(this, SIGNAL(exited()), SLOT(cleanUp()));
       
    63 }
    64 }
    64 
    65 
    65 /*!
    66 /*!
    66  Sets entry event.
    67  Sets entry event.
    67  \param event entry event.
    68  \param event entry event.
    75     createInstallationLogDialog();
    76     createInstallationLogDialog();
    76 
    77 
    77     HSMENUTEST_FUNC_EXIT("HsInstallationLogState::onEntry");
    78     HSMENUTEST_FUNC_EXIT("HsInstallationLogState::onEntry");
    78 }
    79 }
    79 
    80 
    80 /*!
       
    81  Invoked on exiting state
       
    82  */
       
    83 void HsInstallationLogState::onExit(QEvent *event)
       
    84 {
       
    85     QState::onExit(event);
       
    86 }
       
    87 
    81 
    88 /*!
    82 /*!
    89  Create installation log dialog.
    83  Create installation log dialog.
    90  \retval void
    84  \retval void
    91  */
    85  */
    98     bool loadStatusOk = false;
    92     bool loadStatusOk = false;
    99     loader.load(HS_INSTALLATION_LOG_DIALOG_LAYOUT, &loadStatusOk);
    93     loader.load(HS_INSTALLATION_LOG_DIALOG_LAYOUT, &loadStatusOk);
   100     Q_ASSERT_X(loadStatusOk, HS_INSTALLATION_LOG_DIALOG_LAYOUT,
    94     Q_ASSERT_X(loadStatusOk, HS_INSTALLATION_LOG_DIALOG_LAYOUT,
   101            "Error while loading docml file.");
    95            "Error while loading docml file.");
   102 
    96 
   103     mInstalationLogDialog = qobject_cast<HbDialog*>(
    97     QScopedPointer<HbDialog> dialog(qobject_cast<HbDialog*>(
   104         loader.findWidget(HS_INSTALLATION_LOG_DIALOG_NAME));
    98         loader.findWidget(HS_INSTALLATION_LOG_DIALOG_NAME)));
   105     
    99     
   106     if (mInstalationLogDialog != NULL) {
   100     if (!dialog.isNull()) {
   107         mInstalationLogDialog->actions()[0]->setParent(mInstalationLogDialog);
   101         dialog->actions()[0]->setParent(dialog.data());
   108         mInstalationLogDialog->setTimeout(HbPopup::NoTimeout);
   102         dialog->setTimeout(HbPopup::NoTimeout);
   109         mInstalationLogDialog->setAttribute(Qt::WA_DeleteOnClose, true);
   103         dialog->setAttribute(Qt::WA_DeleteOnClose, true);
   110     
   104     
   111         HbLabel* logList;
   105         HbLabel* logList;
   112         QString applicationsList;
   106         QString applicationsList;
   113         QString listElement("%1 (%2)\n%3 - ");
   107         QString listElement("%1 (%2)\n%3 - ");
   114         QString applicationName;
   108         QString applicationName;
   141             }
   135             }
   142         }
   136         }
   143 
   137 
   144         applicationsList.chop(2 * newLine.size());
   138         applicationsList.chop(2 * newLine.size());
   145         logList->setPlainText(applicationsList);
   139         logList->setPlainText(applicationsList);
   146     
   140 
   147         mInstalationLogDialog->open(this, SLOT(stateExited()));
   141 
       
   142         QScopedPointer<HsDialogController> dialogController(
       
   143             new HsDialogController(dialog.take(),
       
   144                 HsMenuDialogFactory::acceptActionIndex(),
       
   145                 HsMenuDialogFactory::rejectActionIndex()));
       
   146 
       
   147         connect(dialogController.data(),
       
   148                 SIGNAL(dialogCompleted()),
       
   149                 this,
       
   150                 SIGNAL(exit()));
       
   151 
       
   152         // ensure dialog is dismissed on app key pressed
       
   153         connect(this, SIGNAL(exited()),
       
   154                 dialogController.data(),
       
   155                 SLOT(dismissDialog()));
       
   156 
       
   157         dialogController.take()->openDialog();
   148     }
   158     }
   149 }
   159 }
   150 
   160 
   151 void HsInstallationLogState::stateExited()
       
   152 {
       
   153     mInstalationLogDialog = NULL;
       
   154     emit exit();
       
   155 }
       
   156 
   161 
   157 /*!
       
   158  Slot launched after state has exited and in destructor.
       
   159  \retval void
       
   160  */
       
   161 void HsInstallationLogState::cleanUp()
       
   162 {
       
   163     // Close popups if App key was pressed
       
   164     if (mInstalationLogDialog) {
       
   165         mInstalationLogDialog->close();
       
   166         mInstalationLogDialog = NULL;
       
   167     }
       
   168 }
       
   169 
   162