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 { |