emailuis/nmhswidget/src/nmhswidget.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 47 f83bd4ae1fe3
child 54 997a02608b3a
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    12  * Contributors:
    12  * Contributors:
    13  *
    13  *
    14  * Description: 
    14  * Description: 
    15  *
    15  *
    16  */
    16  */
    17 #include <QDebug>
       
    18 #include <QtGui>
    17 #include <QtGui>
    19 #include <QGraphicsLinearLayout>
    18 #include <QGraphicsLinearLayout>
    20 #include <hbcolorscheme.h>
    19 #include <hbcolorscheme.h>
    21 #include <QTranslator>
    20 #include <QTranslator>
    22 #include <hbframedrawer.h>
    21 #include <hbframedrawer.h>
    27 #include "nmmessageenvelope.h"
    26 #include "nmmessageenvelope.h"
    28 #include "nmhswidgettitlerow.h"
    27 #include "nmhswidgettitlerow.h"
    29 #include "nmhswidgetemailrow.h"
    28 #include "nmhswidgetemailrow.h"
    30 #include "nmhswidgetconsts.h"
    29 #include "nmhswidgetconsts.h"
    31 #include "nmhswidgetdatetimeobserver.h"
    30 #include "nmhswidgetdatetimeobserver.h"
       
    31 #include "emailtrace.h"
    32 
    32 
    33 NmHsWidget::NmHsWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
    33 NmHsWidget::NmHsWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
    34     : HbWidget(parent, flags), 
    34     : HbWidget(parent, flags), 
    35       mEngine(0),
    35       mEngine(0),
    36       mRowLayout(0),
    36       mRowLayout(0),
    37       mTitleRow(0),
    37       mTitleRow(0),
    38       mAccountId(0),
    38       mAccountId(0),
    39       mAccountIconName(0),
    39       mAccountIconName(),
    40       mTranslator(0),
    40       mTranslator(0),
    41       mBackgroundFrameDrawer(0),
    41       mBackgroundFrameDrawer(0),
    42       mIsExpanded(true),
    42       mIsExpanded(false),
    43       mStaticWidget(true),
    43       mStaticWidget(true),
    44       mDateObserver(0)
    44       mDateObserver(0)
    45 {
    45 {
    46     qDebug() << "NmHsWidget::NmHsWidget IN -->>";
    46     NM_FUNCTION;
    47        
       
    48     qDebug() << "NmHsWidget::NmHsWidget OUT <<--";
       
    49 }
    47 }
    50 
    48 
    51 /*!
    49 /*!
    52     Destructor
    50     Destructor
    53 */
    51 */
    54 NmHsWidget::~NmHsWidget()
    52 NmHsWidget::~NmHsWidget()
    55 {
    53 {
    56     qDebug() << "NmHsWidget::~NmHsWidget IN -->>";
    54     NM_FUNCTION;
    57     if(mTranslator){
    55 
    58         delete mTranslator;
    56     delete mTranslator;
    59         mTranslator = NULL;
    57     mTranslator = NULL;
    60     }
    58 
    61     
    59     delete mEngine;
    62     if(mEngine){
    60     mEngine = NULL;
    63         delete mEngine;
    61 
    64         mEngine = NULL;
    62     delete mBackgroundFrameDrawer;
    65         }
    63     mBackgroundFrameDrawer = NULL;
    66     
    64 
    67     if(mBackgroundFrameDrawer){
    65     delete mDateObserver;
    68         delete mBackgroundFrameDrawer;
    66     mDateObserver = NULL;
    69         mBackgroundFrameDrawer = NULL;
       
    70         }
       
    71 		
       
    72 	if(mDateObserver){
       
    73         delete mDateObserver;
       
    74         mDateObserver = NULL;
       
    75         }
       
    76     qDebug() << "NmHsWidget::~NmHsWidget OUT <<--";
       
    77 }
    67 }
    78 
    68 
    79 /*!
    69 /*!
    80     \fn void NmHsWidget::onShow()
    70     \fn void NmHsWidget::onShow()
    81 
    71 
    82     called by home screen fw when widget gets visible
    72     called by home screen fw when widget gets visible
    83 */
    73 */
    84 void NmHsWidget::onShow()
    74 void NmHsWidget::onShow()
    85 {
    75 {
    86     qDebug() << "NmHsWidget::onShow IN -->>";
    76     NM_FUNCTION;
    87     if (mEngine)
    77     if (mEngine)
    88         {
    78         {
    89         mEngine->activate();
    79         mEngine->activate();
    90         }
    80         }
    91     qDebug() << "NmHsWidget::onShow OUT <<--";
       
    92 }
    81 }
    93 
    82 
    94 /*!
    83 /*!
    95     \fn void NmHsWidget::onHide()
    84     \fn void NmHsWidget::onHide()
    96 
    85 
    97     called by home screen fw when widget gets hidden
    86     called by home screen fw when widget gets hidden
    98 */
    87 */
    99 void NmHsWidget::onHide()
    88 void NmHsWidget::onHide()
   100 {
    89 {
   101     qDebug() << "NmHsWidget::onHide IN -->>";
    90     NM_FUNCTION;
   102     if (mEngine)
    91     if (mEngine)
   103         {
    92         {
   104         mEngine->suspend();
    93         mEngine->suspend();
   105         }
    94         }
   106     qDebug() << "NmHsWidget::onHide OUT <<--";
       
   107 }
    95 }
   108 
    96 
   109 /*!
    97 /*!
   110     Initializes Localization.
    98     Initializes Localization.
   111     /post mTranslator constructed & localization file loaded
    99     /post mTranslator constructed & localization file loaded
   112     returns false in failure, otherwise true
   100     returns false in failure, otherwise true
   113 */
   101 */
   114 bool NmHsWidget::setupLocalization()
   102 bool NmHsWidget::setupLocalization()
   115 {
   103 {
   116     qDebug() << "NmHsWidget::setupLocalization IN -->>";
   104     NM_FUNCTION;
   117     
   105     
   118     //Use correct localisation
   106     //Use correct localisation
   119     bool ret(false); 
   107     bool ret(false); 
   120     mTranslator = new QTranslator();
   108     mTranslator = new QTranslator();
   121     QString lang = QLocale::system().name();
   109     QString lang = QLocale::system().name();
   122     ret = mTranslator->load(KNmHsWidgetLocFileName + lang, KNmHsWidgetLocLocation);
   110     ret = mTranslator->load(KNmHsWidgetLocFileName + lang, KNmHsWidgetLocLocation);
   123     qDebug() << "NmHsWidget::setupLocalization mTranslator->load loadSucceed:"<<ret;
       
   124     QCoreApplication::installTranslator(mTranslator);
   111     QCoreApplication::installTranslator(mTranslator);
   125 
   112 
   126     qDebug() << "NmHsWidget::setupLocalization OUT <<--";
       
   127     return ret;
   113     return ret;
   128 }
   114 }
   129 
   115 
   130 /*!
   116 /*!
   131     Initializes UI. Everything that is not done in docml files should be here.
   117     Initializes UI. Everything that is not done in docml files should be here.
   132     return true if ok, in error false.
   118     return true if ok, in error false.
   133 */
   119 */
   134 void NmHsWidget::setupUi()
   120 void NmHsWidget::setupUi()
   135 {
   121 {
   136     qDebug() << "NmHsWidget::setupUi IN -->>";
   122     NM_FUNCTION;
       
   123     
   137     setContentsMargins( KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin,
   124     setContentsMargins( KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin,
   138             KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin);
   125             KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin);
   139     
   126     
   140     //Setup layout
   127     //Setup layout
   141     mRowLayout = new QGraphicsLinearLayout(Qt::Vertical);
   128     mRowLayout = new QGraphicsLinearLayout(Qt::Vertical);
   149    mBackgroundFrameDrawer = new HbFrameDrawer( KNmHsWidgetBackgroundImage, HbFrameDrawer::NinePieces );
   136    mBackgroundFrameDrawer = new HbFrameDrawer( KNmHsWidgetBackgroundImage, HbFrameDrawer::NinePieces );
   150    HbFrameItem* backgroundLayoutItem = new HbFrameItem( mBackgroundFrameDrawer );
   137    HbFrameItem* backgroundLayoutItem = new HbFrameItem( mBackgroundFrameDrawer );
   151    //set to NULL to indicate that ownership transferred
   138    //set to NULL to indicate that ownership transferred
   152    mBackgroundFrameDrawer = NULL;
   139    mBackgroundFrameDrawer = NULL;
   153    setBackgroundItem( backgroundLayoutItem );
   140    setBackgroundItem( backgroundLayoutItem );
   154    
       
   155    qDebug() << "NmHsWidget::setupUi OUT -->>";
       
   156 }
   141 }
   157 
   142 
   158 /*!
   143 /*!
   159     Initializes the widget.
   144     Initializes the widget.
   160     
   145     
   161     called by home screen fw when widget is added to home screen
   146     called by home screen fw when widget is added to home screen
   162 */
   147 */
   163 void NmHsWidget::onInitialize()
   148 void NmHsWidget::onInitialize()
   164 {
   149 {
   165     QT_TRY{
   150     NM_FUNCTION;
   166         qDebug() << "NmHsWidget::onInitialize IN -->>";
   151     
   167         
   152     QT_TRY{       
   168         setupUi();
   153         setupUi();
   169         //emit error if localization fails
   154         //emit error if localization fails
   170         if(!setupLocalization()){
   155         if(!setupLocalization()){
   171             emit error();
   156             emit error();
   172             return;
   157             return;
   202 	    mDateObserver = new NmHsWidgetDateTimeObserver();
   187 	    mDateObserver = new NmHsWidgetDateTimeObserver();
   203     
   188     
   204         updateMailData();
   189         updateMailData();
   205         mTitleRow->updateUnreadCount(mEngine->unreadCount());
   190         mTitleRow->updateUnreadCount(mEngine->unreadCount());
   206         mTitleRow->setAccountIcon(mAccountIconName);
   191         mTitleRow->setAccountIcon(mAccountIconName);
       
   192         mTitleRow->setExpandCollapseIcon(mIsExpanded);
   207         
   193         
   208         //Get signals about changes in mail data
   194         //Get signals about changes in mail data
   209         connect(mEngine, SIGNAL( mailDataChanged() )
   195         connect(mEngine, SIGNAL( mailDataChanged() )
   210                 ,this, SLOT( updateMailData() ) );
   196                 ,this, SLOT( updateMailData() ) );
   211         
   197         
   227 	    setPreferredSize( mRowLayout->preferredSize() );
   213 	    setPreferredSize( mRowLayout->preferredSize() );
   228 	    if (parentWidget()) {
   214 	    if (parentWidget()) {
   229 	        //to place widget properly after adding to homescreen
   215 	        //to place widget properly after adding to homescreen
   230 	        parentWidget()->resize(preferredSize()); 
   216 	        parentWidget()->resize(preferredSize()); 
   231 		}
   217 		}
   232         qDebug() << "NmHsWidget::onInitialize OUT <<--";  
       
   233     }
   218     }
   234     QT_CATCH(...){
   219     QT_CATCH(...){
   235         emit error();
   220         emit error();
   236     }
   221     }
   237 
   222 
   242     
   227     
   243     called by home screen fw when widget is removed from home screen
   228     called by home screen fw when widget is removed from home screen
   244 */
   229 */
   245 void NmHsWidget::onUninitialize()
   230 void NmHsWidget::onUninitialize()
   246 {
   231 {
   247     qDebug() << "NmHsWidget::onUninitialize IN -->>";
   232     NM_FUNCTION;
   248     
       
   249     qDebug() << "NmHsWidget::onUninitialize OUT <<--";
       
   250 }
   233 }
   251 
   234 
   252 /*!
   235 /*!
   253     updateMailData slot
   236     updateMailData slot
   254 */
   237 */
   255 void NmHsWidget::updateMailData()
   238 void NmHsWidget::updateMailData()
   256 {
   239 {
   257     qDebug() << "NmHsWidget::updateData IN -->>";
   240     NM_FUNCTION;
       
   241     
   258     QList<NmMessageEnvelope> envelopes;
   242     QList<NmMessageEnvelope> envelopes;
   259     int count = 0;
   243     int count = 0;
   260     if (mIsExpanded) {
   244     if (mIsExpanded) {
   261         count = mEngine->getEnvelopes(envelopes, KMaxNumberOfMailsShown);
   245         count = mEngine->getEnvelopes(envelopes, KMaxNumberOfMailsShown);
   262         }
   246         }
   265     
   249     
   266     for(int i=0; i<envelopes.count(); i++)
   250     for(int i=0; i<envelopes.count(); i++)
   267         {
   251         {
   268         mMailRows[i]->updateMailData( envelopes[i] );
   252         mMailRows[i]->updateMailData( envelopes[i] );
   269         }
   253         }
   270     qDebug() << "NmHsWidget::updateData OUT <<--"; 
       
   271 }
   254 }
   272 
   255 
   273 /*!
   256 /*!
   274     Sets monitored account id from given string
   257     Sets monitored account id from given string
   275     Needed for home screen framework which supports only QString type properties
   258     Needed for home screen framework which supports only QString type properties
   276 */
   259 */
   277 void NmHsWidget::setAccountId(const QString &text)
   260 void NmHsWidget::setAccountId(const QString &text)
   278 {
   261 {
   279     qDebug() << "NmHsWidget::setAccountId IN -->>"; 
   262     NM_FUNCTION;
       
   263     
   280     bool ok;
   264     bool ok;
   281     quint64 id = text.toULongLong(&ok);
   265     quint64 id = text.toULongLong(&ok);
   282     if (!ok)
   266     if (!ok)
   283         {
   267         {
   284         qDebug() << "NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"; 
   268         NM_ERROR(1,"NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"); 
   285         //No valid account id so give up
   269         //No valid account id so give up
   286         emit finished();
   270         emit finished();
   287         }
   271         }
   288     else
   272     else
   289         {
   273         {
   290         mAccountId.setId(id);
   274         mAccountId.setId(id);
   291         }
   275         }
   292     qDebug() << "NmHsWidget::setAccountId OUT <<--"; 
       
   293 }
   276 }
   294 
   277 
   295 /*!
   278 /*!
   296     Returns monitored account id as a string
   279     Returns monitored account id as a string
   297     Needed for home screen framework which supports only QString type properties
   280     Needed for home screen framework which supports only QString type properties
   298 */
   281 */
   299 QString NmHsWidget::accountId() const
   282 QString NmHsWidget::accountId() const
   300 {
   283 {
   301     qDebug() << "NmHsWidget::accountId()"; 
   284     NM_FUNCTION;
   302     return QString::number(mAccountId.id());
   285     return QString::number(mAccountId.id());
   303 }
   286 }
   304 
   287 
   305 /*!
   288 /*!
   306     Sets monitored account icon name from given string
   289     Sets monitored account icon name from given string
   307 */
   290 */
   308 void NmHsWidget::setAccountIconName(const QString &text)
   291 void NmHsWidget::setAccountIconName(const QString &text)
   309 {
   292 {
   310     qDebug() << "NmHsWidget::setAccountIconName IN -->>"; 
   293     NM_FUNCTION;
   311     mAccountIconName = text;
   294     mAccountIconName = text;
   312     qDebug() << "NmHsWidget::setAccountIconName OUT <<--"; 
       
   313 }
   295 }
   314 
   296 
   315 /*!
   297 /*!
   316     Returns monitored account icon name
   298     Returns monitored account icon name
   317 */
   299 */
   318 QString NmHsWidget::accountIconName() const
   300 QString NmHsWidget::accountIconName() const
   319 {
   301 {
   320     qDebug() << "NmHsWidget::accountIconName()"; 
   302     NM_FUNCTION;
   321     return mAccountIconName;
   303     return mAccountIconName;
   322 }
   304 }
   323 
   305 
   324 /*!
   306 /*!
   325     Slot to handle expand/collapse trigger event
   307     Slot to handle expand/collapse trigger event
   326 */
   308 */
   327 void NmHsWidget::handleExpandCollapseEvent()
   309 void NmHsWidget::handleExpandCollapseEvent()
   328 {
   310 {
   329     qDebug() << "NmHsWidget::handleExpandCollapseEvent IN -->>";
   311     NM_FUNCTION;
   330     toggleExpansionState();
   312     toggleExpansionState();
   331     qDebug() << "NmHsWidget::handleExpandCollapseEvent OUT <<--"; 
       
   332 }
   313 }
   333 
   314 
   334 /*!
   315 /*!
   335     Sets widget expand/collapse state
   316     Sets widget expand/collapse state
   336     /post widget expansion state is changed
   317     /post widget expansion state is changed
   337 */
   318 */
   338 void NmHsWidget::toggleExpansionState()
   319 void NmHsWidget::toggleExpansionState()
   339 {
   320 {
   340     qDebug() << "NmHsWidget::setExpanded IN -->>"; 
   321     NM_FUNCTION;
   341 
   322 
   342     mIsExpanded = !mIsExpanded;
   323     mIsExpanded = !mIsExpanded;
   343     
   324     
   344     //save new state to home screen
   325     //save new state to home screen
   345     QStringList propertiesList;
   326     QStringList propertiesList;
   347     emit setPreferences(propertiesList);
   328     emit setPreferences(propertiesList);
   348     
   329     
   349     //handle state change drawing
   330     //handle state change drawing
   350     updateMailData();
   331     updateMailData();
   351     
   332     
   352     qDebug() << "NmHsWidget::setExpanded OUT <<--"; 
   333     mTitleRow->setExpandCollapseIcon(mIsExpanded);
   353 }
   334 }
   354 
   335 
   355 /*!
   336 /*!
   356     Sets expand/collapse state from given string (needed by homescreen)
   337     Sets expand/collapse state from given string (needed by homescreen)
   357 */
   338 */
   358 void NmHsWidget::setWidgetStateProperty(QString value)
   339 void NmHsWidget::setWidgetStateProperty(QString value)
   359 {
   340 {
   360     qDebug() << "NmHsWidget::setWidgetStateProperty IN -->>"; 
   341     NM_FUNCTION;
   361     if (value == KNmHsWidgetStateCollapsed)
   342     if (value == KNmHsWidgetStateCollapsed)
   362         {
   343         {
   363         mIsExpanded = false;
   344         mIsExpanded = false;
   364         }
   345         }
   365     else
   346     else
   366         {
   347         {
   367         mIsExpanded = true;
   348         mIsExpanded = true;
   368         }
   349         }
   369     qDebug() << "NmHsWidget::setWidgetStateProperty OUT <<--"; 
       
   370 }
   350 }
   371 
   351 
   372 /*!
   352 /*!
   373     Returns widget expand/collapse state as string (needed by homescreen) 
   353     Returns widget expand/collapse state as string (needed by homescreen) 
   374 */
   354 */
   375 QString NmHsWidget::widgetStateProperty()
   355 QString NmHsWidget::widgetStateProperty()
   376 {
   356 {
   377     qDebug() << "NmHsWidget::widgetStateProperty()";
   357     NM_FUNCTION;
   378     if (mIsExpanded)
   358     if (mIsExpanded)
   379         {
   359         {
   380         return KNmHsWidgetStateExpanded;
   360         return KNmHsWidgetStateExpanded;
   381         }
   361         }
   382     else
   362     else
   390     /param mailCount defines how many mail rows is needed
   370     /param mailCount defines how many mail rows is needed
   391     /post mMailRows list includes NmHsWidgetEmailRow for each mail item 
   371     /post mMailRows list includes NmHsWidgetEmailRow for each mail item 
   392 */
   372 */
   393 void NmHsWidget::updateMailRowsList(const int mailCount)
   373 void NmHsWidget::updateMailRowsList(const int mailCount)
   394 {
   374 {
   395     qDebug() << "NmHsWidget::updateMailRowsList IN -->>";
   375     NM_FUNCTION;
   396     qDebug() << "NmHsWidget - mMailRows.count() == " <<  mMailRows.count();
       
   397     qDebug() << "NmHsWidget - ordered count == " <<  mailCount;
       
   398     
   376     
   399     int neededRowsCount = mailCount;
   377     int neededRowsCount = mailCount;
   400     //force size when static and expanded
   378     //force size when static and expanded
   401     if (mStaticWidget && mIsExpanded)
   379     if (mStaticWidget && mIsExpanded)
   402         {
   380         {
   406     while (mMailRows.count() != neededRowsCount)
   384     while (mMailRows.count() != neededRowsCount)
   407         {
   385         {
   408         //more mails to show than rows
   386         //more mails to show than rows
   409         if (mMailRows.count() < neededRowsCount)
   387         if (mMailRows.count() < neededRowsCount)
   410             {
   388             {
   411             qDebug() << "NmHsWidget - add new mail row";
       
   412             NmHsWidgetEmailRow *row = new NmHsWidgetEmailRow();
   389             NmHsWidgetEmailRow *row = new NmHsWidgetEmailRow();
   413             if( !row->loadDocML()){
   390             if( !row->loadDocML()){
   414                 qDebug() << "NmHsWidget::updateMailRowsList row->loadDocML() fails";
   391                 NM_ERROR(1,"NmHsWidget::updateMailRowsList row->loadDocML() fails");
   415                 //if docml loading fails no point to proceed
   392                 //if docml loading fails no point to proceed
   416                 //but memoryleak must be prevented
   393                 //but memoryleak must be prevented
   417                 delete row;
   394                 delete row;
   418                 row = NULL;
   395                 row = NULL;
   419                 emit error();
   396                 emit error();
   427             mRowLayout->addItem(row);            
   404             mRowLayout->addItem(row);            
   428             }
   405             }
   429         //too many rows
   406         //too many rows
   430         else if (mMailRows.count() > neededRowsCount)
   407         else if (mMailRows.count() > neededRowsCount)
   431             {
   408             {
   432             qDebug() << "NmHsWidget - remove mail row";
       
   433             mRowLayout->removeItem(mMailRows.last());
   409             mRowLayout->removeItem(mMailRows.last());
   434             delete mMailRows.takeLast();
   410             delete mMailRows.takeLast();
   435             }
   411             }
   436         }
   412         }
   437     __ASSERT_ALWAYS( mMailRows.count() == neededRowsCount, User::Panic(_L("Invalid"), 500) );
   413     __ASSERT_ALWAYS( mMailRows.count() == neededRowsCount, User::Panic(_L("Invalid"), 500) );
   441     
   417     
   442     if (mStaticWidget)
   418     if (mStaticWidget)
   443         {
   419         {
   444         this->updateMailRowsVisibility(mailCount);
   420         this->updateMailRowsVisibility(mailCount);
   445         }
   421         }
   446     qDebug() << "NmHsWidget::updateMailRowsList OUT <<--";
       
   447 }
   422 }
   448 
   423 
   449 /*!
   424 /*!
   450     Updates mail row visibilities in static widget
   425     Updates mail row visibilities in static widget
   451     /param visibleCount defines how many items do have mail data
   426     /param visibleCount defines how many items do have mail data
   452     /post all row items having mail data are visible, other rows are hidden
   427     /post all row items having mail data are visible, other rows are hidden
   453 */
   428 */
   454 void NmHsWidget::updateMailRowsVisibility(const int visibleCount)
   429 void NmHsWidget::updateMailRowsVisibility(const int visibleCount)
   455 {
   430 {
   456     qDebug() << "NmHsWidget::updateMailRowsVisibility IN -->>";
   431     NM_FUNCTION;
   457   
   432   
   458     // set visible as many rows as requested by visibleCount param
   433     // set visible as many rows as requested by visibleCount param
   459     bool isVisible;
   434     bool isVisible;
   460     for (int i=0; i < mMailRows.count(); i++) 
   435     for (int i=0; i < mMailRows.count(); i++) 
   461         {
   436         {
   464             {
   439             {
   465             isVisible = true;
   440             isVisible = true;
   466             }
   441             }
   467         mMailRows.at(i)->setVisible(isVisible);
   442         mMailRows.at(i)->setVisible(isVisible);
   468         }
   443         }
   469     
       
   470     qDebug() << "NmHsWidget::updateMailRowsVisibility OUT <<--";
       
   471 }
   444 }
   472 
   445 
   473 /*!
   446 /*!
   474     onEngineException (NmHsWidgetEmailEngineExceptionCode exc)
   447     onEngineException (NmHsWidgetEmailEngineExceptionCode exc)
   475     signals widget to be finalized
   448     signals widget to be finalized
   476     /param exc exception type
   449     /param exc exception type
   477 */
   450 */
   478 void NmHsWidget::onEngineException(const int& exc)
   451 void NmHsWidget::onEngineException(const int& exc)
   479     {
   452     {
   480     qDebug() << "NmHsWidget:onEngineException IN -->>";
   453     NM_FUNCTION;
   481     switch (exc)
   454     switch (exc)
   482         {
   455         {
   483         case (NmEngineExcAccountDeleted):
   456         case (NmEngineExcAccountDeleted):
   484              emit finished(); //succesful ending
   457              emit finished(); //succesful ending
   485              break;
   458              break;