phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp
changeset 72 c76a0b1755b9
parent 64 6aaf0276100e
child 74 d1c62c765e48
equal deleted inserted replaced
64:6aaf0276100e 72:c76a0b1755b9
    23 #include <QByteArray>
    23 #include <QByteArray>
    24 #include <hbicon.h>
    24 #include <hbicon.h>
    25 
    25 
    26 #ifdef Q_OS_SYMBIAN
    26 #ifdef Q_OS_SYMBIAN
    27 #include <logsmodel.h>
    27 #include <logsmodel.h>
       
    28 #include <logsevent.h>
       
    29 #include <logsabstractmodel.h>
    28 #include <logsfilter.h>
    30 #include <logsfilter.h>
    29 #include <LogsDomainCRKeys.h>
    31 #include <LogsDomainCRKeys.h>
    30 #include <ctsydomaincrkeys.h>
    32 #include <ctsydomaincrkeys.h>
    31 #include <xqaiwrequest.h>
    33 #include <xqaiwrequest.h>
    32 #include <xqappmgr.h>
    34 #include <xqappmgr.h>
    33 #include <xqaiwdecl.h>
    35 #include <xqaiwdecl.h>
    34 #endif
    36 #endif
       
    37 
       
    38 Q_DECLARE_METATYPE(LogsEvent *)
       
    39 
    35 
    40 
    36 namespace PhoneIndicatorControllerKeys{
    41 namespace PhoneIndicatorControllerKeys{
    37     const XQSettingsKey missedCallsSettingsKey( XQSettingsKey::TargetCentralRepository, 
    42     const XQSettingsKey missedCallsSettingsKey( XQSettingsKey::TargetCentralRepository, 
    38         KCRUidLogs.iUid, KLogsNewMissedCalls );
    43         KCRUidLogs.iUid, KLogsNewMissedCalls );
    39 
    44 
   144             delete m_missedCallsFilter;
   149             delete m_missedCallsFilter;
   145             m_missedCallsFilter = NULL;
   150             m_missedCallsFilter = NULL;
   146             delete m_logsModel;
   151             delete m_logsModel;
   147             m_logsModel = NULL;
   152             m_logsModel = NULL;
   148         } else {
   153         } else {
   149             m_logsModel = new LogsModel(LogsModel::LogsFullModel);
   154             if(!m_logsModel){
   150             m_missedCallsFilter = new LogsFilter(LogsFilter::Missed);
   155                 m_logsModel = new LogsModel(LogsModel::LogsFullModel);
   151             connect( m_missedCallsFilter, 
   156             }
       
   157             if(!m_missedCallsFilter){
       
   158                 m_missedCallsFilter = new LogsFilter(LogsFilter::Missed);
       
   159                 connect( m_missedCallsFilter, 
   152                     SIGNAL(rowsInserted(const QModelIndex &, int, int )),
   160                     SIGNAL(rowsInserted(const QModelIndex &, int, int )),
   153                     this, SLOT(setMissedallIndicatorData()));
   161                         this, SLOT(setMissedallIndicatorData()));
   154             m_missedCallsFilter->setMaxSize(value.toInt() + 1);
   162                 m_missedCallsFilter->setSourceModel(m_logsModel);
   155             m_missedCallsFilter->setSourceModel(m_logsModel);
   163             }
       
   164             m_missedCallsFilter->setMaxSize(value.toInt() + 1);            
   156         }
   165         }
   157     }
   166     }
   158 #endif  
   167 #endif  
   159 }
   168 }
   160 
   169 
   186             PhoneIndicatorControllerKeys::missedCallsSettingsKey,
   195             PhoneIndicatorControllerKeys::missedCallsSettingsKey,
   187                 XQSettingsManager::TypeInt ).toInt();
   196                 XQSettingsManager::TypeInt ).toInt();
   188     
   197     
   189     if ( missedCallCount > 0 ) {
   198     if ( missedCallCount > 0 ) {
   190         QVariantMap parameters;
   199         QVariantMap parameters;
   191         QString lastMissedCallFrom;
   200         LogsEvent *event = qVariantValue<LogsEvent*>(m_missedCallsFilter->data(
   192         int repeatedMissedCalls(0);
   201                 m_missedCallsFilter->index(0,0),
   193         
   202                 LogsAbstractModel::RoleFullEvent));
   194         if ( m_missedCallsFilter->rowCount() > 0 ){
   203         if (event){
   195                 lastMissedCallFrom = m_missedCallsFilter->data(
   204             // First row
   196                         m_missedCallsFilter->index(0,0),
   205             parameters.insert( 
   197                         Qt::DisplayRole).toStringList().takeFirst();
   206                     QVariant( HbIndicatorInterface::PrimaryTextRole ).toString(),
   198                 repeatedMissedCalls = 1;
   207                     ( hbTrId("txt_phone_dblist_ln_missed_calls", 
       
   208                             missedCallCount)));
       
   209             
       
   210             if ( missedCallCount >= event->duplicates() ){
       
   211                 QString lastMissedCallFrom;
       
   212                 if ( event->isRemotePartyPrivate() ){
       
   213                     lastMissedCallFrom = hbTrId("txt_phone_other_unknown_number");
       
   214                 } else {
       
   215                     lastMissedCallFrom = event->remoteParty().isEmpty() ?
       
   216                         event->number() : event->remoteParty();
       
   217                 }
       
   218                 parameters.insert( 
       
   219                         QVariant( HbIndicatorInterface::SecondaryTextRole ).toString(), 
       
   220                         lastMissedCallFrom );
   199             }
   221             }
   200         for( int i = 1; i < missedCallCount && i 
   222             QString iconName = "qtg_mono_missed_call_unseen";
   201                 < m_missedCallsFilter->rowCount(); i++ ){
   223             parameters.insert(
   202             QStringList displayData = m_missedCallsFilter->data(
   224                     QVariant( HbIndicatorInterface::DecorationNameRole ).toString(),
   203                     m_missedCallsFilter->index(i,0),
   225                     iconName );
   204                     Qt::DisplayRole).toStringList();
       
   205             if ( lastMissedCallFrom == displayData.at(0) ){
       
   206                 repeatedMissedCalls++;
       
   207             } else {
       
   208                 i = missedCallCount; // Break
       
   209             }
       
   210         }
   226         }
   211         // First row
       
   212         parameters.insert( 
       
   213                 QVariant( HbIndicatorInterface::PrimaryTextRole ).toString(),
       
   214                 ( hbTrId("txt_phone_dblist_ln_missed_calls", 
       
   215                         missedCallCount)));
       
   216         
       
   217         // Second row
       
   218         if ( missedCallCount >= repeatedMissedCalls )
       
   219             {
       
   220             parameters.insert( 
       
   221                     QVariant( HbIndicatorInterface::SecondaryTextRole ).toString(), 
       
   222                     lastMissedCallFrom );
       
   223             }
       
   224 
       
   225         QString iconName = "qtg_mono_missed_call_unseen";
       
   226         parameters.insert(
       
   227                 QVariant( HbIndicatorInterface::DecorationNameRole ).toString(),
       
   228                 iconName );
       
   229         
       
   230         m_indicator.activate(indicatorType, parameters);
   227         m_indicator.activate(indicatorType, parameters);
   231     } else {
   228     } else {
   232         m_indicator.deactivate( indicatorType );
   229         m_indicator.deactivate( indicatorType );
   233     }
   230     }
       
   231    
   234 #endif
   232 #endif
   235 }
   233 }
   236 
   234 
   237 void PhoneIndicatorController::updateDiverIndicator(bool activeDiverts)
   235 void PhoneIndicatorController::updateDiverIndicator(bool activeDiverts)
   238 {
   236 {
   262 {   
   260 {   
   263     PHONE_TRACE
   261     PHONE_TRACE
   264     return ( first.key() == second.key() && first.uid() == second.uid() );
   262     return ( first.key() == second.key() && first.uid() == second.uid() );
   265 }
   263 }
   266 
   264 
   267 void PhoneIndicatorController::handleInteraction(QString type,QVariantMap data)
   265 void PhoneIndicatorController::handleInteraction(QString /*type*/,QVariantMap data)
   268 {
   266 {
   269     PHONE_TRACE
   267     PHONE_TRACE
   270     
   268     
   271     if (data.contains(QLatin1String("interaction")) && 
   269     if (data.contains(QLatin1String("interaction")) && 
   272         data.value(QLatin1String("interaction")).canConvert<int>()) {
   270         data.value(QLatin1String("interaction")).canConvert<int>()) {