homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
changeset 69 87476091b3f5
parent 63 52b0f64eeb51
child 81 7dd137878ff8
equal deleted inserted replaced
67:474929a40a0f 69:87476091b3f5
    22 #include <hbmessagebox.h>
    22 #include <hbmessagebox.h>
    23 #include <hbaction.h>
    23 #include <hbaction.h>
    24 #include <hbnotificationdialog.h>
    24 #include <hbnotificationdialog.h>
    25 #include <hsmenueventfactory.h>
    25 #include <hsmenueventfactory.h>
    26 #include "hsmenudialogfactory.h"
    26 #include "hsmenudialogfactory.h"
       
    27 #include "hsmenuentryremovedhandler.h"
       
    28 
    27 #include "hsaddtohomescreenstate.h"
    29 #include "hsaddtohomescreenstate.h"
    28 #include "hsmenuevent.h"
    30 #include "hsmenuevent.h"
    29 #include "canotifier.h"
    31 #include "canotifier.h"
    30 #include "canotifierfilter.h"
    32 #include "canotifierfilter.h"
    31 #include "caservice.h"
    33 #include "caservice.h"
    53  \retval void
    55  \retval void
    54  */
    56  */
    55 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) :
    57 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) :
    56     QState(parent), 
    58     QState(parent), 
    57     mCorruptedMessage(NULL), mConfirmAction(NULL),
    59     mCorruptedMessage(NULL), mConfirmAction(NULL),
    58     mMenuMode(NormalHsMenuMode),
    60     mMenuMode(NormalHsMenuMode)
    59     mNotifier(0)
       
    60 {
    61 {
    61     setObjectName("/AddToHomeScreenState");
    62     setObjectName("/AddToHomeScreenState");
    62     
    63     
    63     if (this->parent()) {
    64     if (this->parent()) {
    64         setObjectName(this->parent()->objectName() + objectName());
    65         setObjectName(this->parent()->objectName() + objectName());
   137     QVariantHash params;
   138     QVariantHash params;
   138     params[URI] = uri;
   139     params[URI] = uri;
   139     params[HOMESCREENDATA] = mToken;
   140     params[HOMESCREENDATA] = mToken;
   140     bool success = contentService.createWidget(params);
   141     bool success = contentService.createWidget(params);
   141     if (!success) {
   142     if (!success) {
   142         subscribeForMemoryCardRemove();
       
   143         showMessageWidgetCorrupted();
   143         showMessageWidgetCorrupted();
   144     } else {
   144     } else {
   145         emit exit();
   145         emit exit();
   146         if (mMenuMode == AddHsMenuMode) {
   146         if (mMenuMode == AddHsMenuMode) {
   147             machine()->postEvent(
   147             machine()->postEvent(
   163     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
   163     HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
   164 
   164 
   165     mCorruptedMessage = HsMenuDialogFactory().create(
   165     mCorruptedMessage = HsMenuDialogFactory().create(
   166             hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
   166             hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
   167     mConfirmAction = mCorruptedMessage->actions().value(0);
   167     mConfirmAction = mCorruptedMessage->actions().value(0);
       
   168     
       
   169     QScopedPointer<HsMenuEntryRemovedHandler> entryObserver(
       
   170         new HsMenuEntryRemovedHandler(mEntryId, 
       
   171             mCorruptedMessage, SLOT(close())));
       
   172     
       
   173     entryObserver.take()->setParent(mCorruptedMessage); 
       
   174     
   168     mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
   175     mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
   169 
   176 
   170     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
   177     HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
   171 }
   178 }
   172 
   179 
   194  \retval void
   201  \retval void
   195  */
   202  */
   196 void HsAddToHomeScreenState::cleanUp()
   203 void HsAddToHomeScreenState::cleanUp()
   197 {
   204 {
   198     // Close popups if App key was pressed
   205     // Close popups if App key was pressed
   199     if (mCorruptedMessage) {
   206     if (mCorruptedMessage != NULL) {
   200         disconnect(mCorruptedMessage, SIGNAL(finished(HbAction*)),
       
   201                    this, SLOT(messageWidgetCorruptedFinished(HbAction*)));
       
   202         mCorruptedMessage->close();
   207         mCorruptedMessage->close();
   203         mCorruptedMessage = NULL;
   208         mCorruptedMessage = NULL;
   204     }
   209     }
   205     
   210     
   206     disconnect(mNotifier,
       
   207                SIGNAL(entryChanged(CaEntry,ChangeType)),
       
   208                this, SLOT(memoryCardRemoved()));
       
   209 
       
   210     delete mNotifier;
       
   211     mNotifier = NULL;
       
   212     mToken = NULL;
   211     mToken = NULL;
   213 }
   212 }
   214 
   213 
   215 
   214 
   216 /*!
   215 /*!
   303     } else {
   302     } else {
   304         qWarning() << message;
   303         qWarning() << message;
   305     }
   304     }
   306 }
   305 }
   307 
   306 
   308 /*!
   307 
   309  Subscribe for memory card remove.
   308 
   310  \retval void
   309 
   311  */
       
   312 void HsAddToHomeScreenState::subscribeForMemoryCardRemove()
       
   313 {
       
   314     CaNotifierFilter filter;
       
   315     QList<int> entryIds;
       
   316     entryIds.append(mEntryId);
       
   317     filter.setIds(entryIds);
       
   318     mNotifier = CaService::instance()->createNotifier(filter);
       
   319     mNotifier->setParent(this);
       
   320     connect(mNotifier,
       
   321             SIGNAL(entryChanged(CaEntry,ChangeType)),
       
   322             SLOT(memoryCardRemoved()));
       
   323 }
       
   324 
       
   325 /*!
       
   326  Memory card with instaled widget was removed.
       
   327  \retval void
       
   328  */
       
   329 void HsAddToHomeScreenState::memoryCardRemoved()
       
   330 {
       
   331     if (mCorruptedMessage) {
       
   332         mCorruptedMessage->close();
       
   333         mCorruptedMessage = NULL;
       
   334     }
       
   335     // exit not needed, it is called after dialog closed
       
   336 }