|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 //USER |
|
19 #include "logsfilter.h" |
|
20 #include "logsevent.h" |
|
21 #include "logslogger.h" |
|
22 #include "logscommondata.h" |
|
23 |
|
24 Q_DECLARE_METATYPE(LogsEvent *) |
|
25 |
|
26 // ----------------------------------------------------------------------------- |
|
27 // LogsFilter::LogsFilter |
|
28 // ----------------------------------------------------------------------------- |
|
29 // |
|
30 LogsFilter::LogsFilter( FilterType type ) |
|
31 : QSortFilterProxyModel(), mFilterType( type ) |
|
32 { |
|
33 LOGS_QDEBUG_2( "logs [ENG] -> LogsFilter::LogsFilter(), type:", mFilterType ) |
|
34 |
|
35 // Enable filter check for dataChanged phase |
|
36 setDynamicSortFilter( true ); |
|
37 |
|
38 LOGS_QDEBUG( "logs [ENG] <- LogsFilter::LogsFilter()" ) |
|
39 } |
|
40 |
|
41 |
|
42 // ----------------------------------------------------------------------------- |
|
43 // LogsFilter::~LogsFilter |
|
44 // ----------------------------------------------------------------------------- |
|
45 // |
|
46 LogsFilter::~LogsFilter() |
|
47 { |
|
48 LOGS_QDEBUG( "logs [ENG] <-> LogsFilter::~LogsFilter()" ) |
|
49 } |
|
50 |
|
51 // ----------------------------------------------------------------------------- |
|
52 // LogsFilter::filterType |
|
53 // ----------------------------------------------------------------------------- |
|
54 // |
|
55 LogsFilter::FilterType LogsFilter::filterType() const |
|
56 { |
|
57 return mFilterType; |
|
58 } |
|
59 |
|
60 // ----------------------------------------------------------------------------- |
|
61 // LogsFilter::clearType |
|
62 // ----------------------------------------------------------------------------- |
|
63 // |
|
64 LogsModel::ClearType LogsFilter::clearType() const |
|
65 { |
|
66 LogsModel::ClearType cleartype(LogsModel::TypeLogsClearAll); |
|
67 switch (mFilterType){ |
|
68 case All: |
|
69 cleartype = LogsModel::TypeLogsClearAll; |
|
70 break; |
|
71 case Received: |
|
72 cleartype = LogsModel::TypeLogsClearReceived; |
|
73 break; |
|
74 case Called: |
|
75 cleartype = LogsModel::TypeLogsClearCalled; |
|
76 break; |
|
77 case Missed: |
|
78 cleartype = LogsModel::TypeLogsClearMissed; |
|
79 break; |
|
80 default: |
|
81 break; |
|
82 } |
|
83 return cleartype; |
|
84 } |
|
85 |
|
86 // ----------------------------------------------------------------------------- |
|
87 // LogsFilter::setMaxSize |
|
88 // ----------------------------------------------------------------------------- |
|
89 // |
|
90 void LogsFilter::setMaxSize(int maxSize) |
|
91 { |
|
92 LOGS_QDEBUG_2( "logs [ENG] -> LogsFilter::LogsFilter(), maxSize", maxSize ) |
|
93 |
|
94 LogsEvent::LogsDirection dir( LogsEvent::DirUndefined ); |
|
95 if ( mFilterType == Missed ){ |
|
96 dir = LogsEvent::DirMissed; |
|
97 } else if ( mFilterType == Received ){ |
|
98 dir = LogsEvent::DirIn; |
|
99 } else if ( mFilterType == Called ){ |
|
100 dir = LogsEvent::DirOut; |
|
101 } |
|
102 LogsCommonData::getInstance().configureReadSize(maxSize, dir); |
|
103 |
|
104 LOGS_QDEBUG( "logs [ENG] <- LogsFilter::setMaxSize()" ) |
|
105 } |
|
106 |
|
107 // ----------------------------------------------------------------------------- |
|
108 // LogsFilter::filterAcceptsRow |
|
109 // From QSortFilterProxyModel |
|
110 // ----------------------------------------------------------------------------- |
|
111 // |
|
112 bool LogsFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const |
|
113 { |
|
114 if ( !sourceModel() ){ |
|
115 return false; |
|
116 } |
|
117 bool accept = false; |
|
118 QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent); |
|
119 const LogsEvent *event = qVariantValue<LogsEvent *>( sourceModel()->data( |
|
120 index0, LogsModel::RoleFullEvent) ); |
|
121 |
|
122 if ( event ){ |
|
123 switch (mFilterType){ |
|
124 case All: |
|
125 accept = true; |
|
126 break; |
|
127 case Received: |
|
128 accept = ( event->direction() == LogsEvent::DirIn ); |
|
129 break; |
|
130 case Called: |
|
131 accept = ( event->direction() == LogsEvent::DirOut ); |
|
132 break; |
|
133 case Missed: |
|
134 accept = ( event->direction() == LogsEvent::DirMissed ); |
|
135 break; |
|
136 default: |
|
137 break; |
|
138 } |
|
139 } |
|
140 return accept; |
|
141 } |
|
142 |
|
143 // End of file |
|
144 |