phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp
changeset 65 2a5d4ab426d3
parent 60 1eef62f5c541
child 74 d1c62c765e48
--- a/phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp	Mon Aug 23 15:42:12 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp	Fri Sep 03 13:33:36 2010 +0300
@@ -25,6 +25,8 @@
 
 #ifdef Q_OS_SYMBIAN
 #include <logsmodel.h>
+#include <logsevent.h>
+#include <logsabstractmodel.h>
 #include <logsfilter.h>
 #include <LogsDomainCRKeys.h>
 #include <ctsydomaincrkeys.h>
@@ -33,6 +35,9 @@
 #include <xqaiwdecl.h>
 #endif
 
+Q_DECLARE_METATYPE(LogsEvent *)
+
+
 namespace PhoneIndicatorControllerKeys{
     const XQSettingsKey missedCallsSettingsKey( XQSettingsKey::TargetCentralRepository, 
         KCRUidLogs.iUid, KLogsNewMissedCalls );
@@ -146,13 +151,17 @@
             delete m_logsModel;
             m_logsModel = NULL;
         } else {
-            m_logsModel = new LogsModel(LogsModel::LogsFullModel);
-            m_missedCallsFilter = new LogsFilter(LogsFilter::Missed);
-            connect( m_missedCallsFilter, 
+            if(!m_logsModel){
+                m_logsModel = new LogsModel(LogsModel::LogsFullModel);
+            }
+            if(!m_missedCallsFilter){
+                m_missedCallsFilter = new LogsFilter(LogsFilter::Missed);
+                connect( m_missedCallsFilter, 
                     SIGNAL(rowsInserted(const QModelIndex &, int, int )),
-                    this, SLOT(setMissedallIndicatorData()));
-            m_missedCallsFilter->setMaxSize(value.toInt() + 1);
-            m_missedCallsFilter->setSourceModel(m_logsModel);
+                        this, SLOT(setMissedallIndicatorData()));
+                m_missedCallsFilter->setSourceModel(m_logsModel);
+            }
+            m_missedCallsFilter->setMaxSize(value.toInt() + 1);            
         }
     }
 #endif  
@@ -188,49 +197,38 @@
     
     if ( missedCallCount > 0 ) {
         QVariantMap parameters;
-        QString lastMissedCallFrom;
-        int repeatedMissedCalls(0);
-        
-        if ( m_missedCallsFilter->rowCount() > 0 ){
-                lastMissedCallFrom = m_missedCallsFilter->data(
-                        m_missedCallsFilter->index(0,0),
-                        Qt::DisplayRole).toStringList().takeFirst();
-                repeatedMissedCalls = 1;
+        LogsEvent *event = qVariantValue<LogsEvent*>(m_missedCallsFilter->data(
+                m_missedCallsFilter->index(0,0),
+                LogsAbstractModel::RoleFullEvent));
+        if (event){
+            // First row
+            parameters.insert( 
+                    QVariant( HbIndicatorInterface::PrimaryTextRole ).toString(),
+                    ( hbTrId("txt_phone_dblist_ln_missed_calls", 
+                            missedCallCount)));
+            
+            if ( missedCallCount >= event->duplicates() ){
+                QString lastMissedCallFrom;
+                if ( event->isRemotePartyPrivate() ){
+                    lastMissedCallFrom = hbTrId("txt_phone_other_unknown_number");
+                } else {
+                    lastMissedCallFrom = event->remoteParty().isEmpty() ?
+                        event->number() : event->remoteParty();
+                }
+                parameters.insert( 
+                        QVariant( HbIndicatorInterface::SecondaryTextRole ).toString(), 
+                        lastMissedCallFrom );
             }
-        for( int i = 1; i < missedCallCount && i 
-                < m_missedCallsFilter->rowCount(); i++ ){
-            QStringList displayData = m_missedCallsFilter->data(
-                    m_missedCallsFilter->index(i,0),
-                    Qt::DisplayRole).toStringList();
-            if ( lastMissedCallFrom == displayData.at(0) ){
-                repeatedMissedCalls++;
-            } else {
-                i = missedCallCount; // Break
-            }
+            QString iconName = "qtg_mono_missed_call_unseen";
+            parameters.insert(
+                    QVariant( HbIndicatorInterface::DecorationNameRole ).toString(),
+                    iconName );
         }
-        // First row
-        parameters.insert( 
-                QVariant( HbIndicatorInterface::PrimaryTextRole ).toString(),
-                ( hbTrId("txt_phone_dblist_ln_missed_calls", 
-                        missedCallCount)));
-        
-        // Second row
-        if ( missedCallCount >= repeatedMissedCalls )
-            {
-            parameters.insert( 
-                    QVariant( HbIndicatorInterface::SecondaryTextRole ).toString(), 
-                    lastMissedCallFrom );
-            }
-
-        QString iconName = "qtg_mono_missed_call_unseen";
-        parameters.insert(
-                QVariant( HbIndicatorInterface::DecorationNameRole ).toString(),
-                iconName );
-        
         m_indicator.activate(indicatorType, parameters);
     } else {
         m_indicator.deactivate( indicatorType );
     }
+   
 #endif
 }
 
@@ -264,7 +262,7 @@
     return ( first.key() == second.key() && first.uid() == second.uid() );
 }
 
-void PhoneIndicatorController::handleInteraction(QString type,QVariantMap data)
+void PhoneIndicatorController::handleInteraction(QString /*type*/,QVariantMap data)
 {
     PHONE_TRACE