author | hgs |
Fri, 06 Aug 2010 10:03:37 +0300 | |
changeset 46 | c826656d6714 |
parent 41 | 67457b2ffb33 |
child 52 | 7e18d488ac5f |
permissions | -rw-r--r-- |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
1 |
/* |
41 | 2 |
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of "Eclipse Public License v1.0" |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
8 |
* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
11 |
* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
13 |
* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
15 |
* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
16 |
*/ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
17 |
/* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
18 |
* Symbian specific settings handling |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
19 |
*/ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
20 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
21 |
#include <QCoreApplication> |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
22 |
#include <QVariant> |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
23 |
#include <QList> |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
24 |
#include <QMetaType> |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
25 |
#include <QObject> |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
26 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
27 |
#include "cxesettingsimp.h" |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
28 |
#include "cxutils.h" |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
29 |
#include "cxenamespace.h" |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
30 |
#include "cxeerror.h" |
46 | 31 |
#include "cxesettingsstore.h" |
32 |
#include "cxeexception.h" |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
33 |
|
46 | 34 |
#ifdef Q_OS_SYMBIAN |
28 | 35 |
#include "OstTraceDefinitions.h" |
36 |
#ifdef OST_TRACE_COMPILER_IN_USE |
|
37 |
#include "cxesettingsimpTraces.h" |
|
38 |
#endif |
|
46 | 39 |
#endif // Q_OS_SYMBIAN |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
40 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
41 |
|
46 | 42 |
// signatures for setting listener slots |
43 |
const char *SETTING_LISTENER_SIGNATURE1 = "settingChanged(const QString &, const QVariant &)"; |
|
44 |
const char *SETTING_LISTENER_SIGNATURE2 = "settingChanged(const QVariant &)"; |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
45 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
46 |
|
46 | 47 |
/* |
48 |
* CxeSettingsImp::CxeSettingsImp |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
49 |
*/ |
46 | 50 |
CxeSettingsImp::CxeSettingsImp(CxeSettingsStore *settingStore) |
51 |
: mSettingStore(settingStore), |
|
52 |
mVariationSettings(), |
|
53 |
mSceneModeStore(), |
|
54 |
mCameraMode(Cxe::ImageMode) |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
55 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
56 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 57 |
loadVariationSettings(); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
58 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
59 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
60 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
61 |
|
46 | 62 |
/* |
63 |
* CxeSettingsImp::close |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
64 |
*/ |
46 | 65 |
CxeSettingsImp::~CxeSettingsImp() |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
66 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
67 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 68 |
delete mSettingStore; |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
69 |
|
46 | 70 |
mVariationSettings.clear(); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
71 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
72 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
73 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
74 |
/* |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
75 |
* Reads a value from cenrep |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
76 |
* @param key - setting key |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
77 |
* @param uid - setting UID of the component that owns the setting key |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
78 |
* @param type - the type of key cr key or P&S key (constantly monitoring value) |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
79 |
* @param value - setting value read from cenrep |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
80 |
*/ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
81 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
82 |
void CxeSettingsImp::get(long int uid, |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
83 |
unsigned long int key, |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
84 |
Cxe::SettingKeyType type, |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
85 |
QVariant &value) const |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
86 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
87 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 88 |
CX_DEBUG_ASSERT(mSettingStore); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
89 |
|
46 | 90 |
mSettingStore->startMonitoring(uid, key, type, value); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
91 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
92 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
93 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
94 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
95 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
96 |
|
46 | 97 |
/*! |
98 |
Reset static settings (persistent settings) |
|
99 |
*/ |
|
100 |
void CxeSettingsImp::reset() |
|
101 |
{ |
|
102 |
CX_DEBUG_ENTER_FUNCTION(); |
|
103 |
||
104 |
CX_DEBUG_ASSERT(mSettingStore); |
|
105 |
mSettingStore->reset(); |
|
106 |
||
107 |
CX_DEBUG_EXIT_FUNCTION(); |
|
108 |
} |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
109 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
110 |
/*! |
46 | 111 |
* Get the configured run-time value associated with the key. |
112 |
* @Param key - Setting key Id ( refer to CxeSettingIds in cxenums.h ) |
|
113 |
* @Param value - contains the value associated with the key. |
|
114 |
* @returns CxeError::None if successful or any CxeError specific error code. |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
115 |
*/ |
46 | 116 |
CxeError::Id CxeSettingsImp::getVariationValue(const QString &key, QVariant &value) |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
117 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
118 |
CX_DEBUG_ENTER_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
119 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
120 |
CxeError::Id err = CxeError::None; |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
121 |
|
46 | 122 |
// read run-time configuration value |
123 |
if ( mVariationSettings.contains(key) ) { |
|
124 |
value = qVariantFromValue<QVariantList > (mVariationSettings.value(key)); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
125 |
} else { |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
126 |
err = CxeError::NotFound; |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
127 |
} |
28 | 128 |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
129 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
130 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
131 |
return err; |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
132 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
133 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
134 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
135 |
/*! |
46 | 136 |
* Add listener for changes in one setting. When the value of the setting changes, the given |
137 |
* slot is invoked on given object. |
|
138 |
* |
|
139 |
* @param settingKey Setting to listen to |
|
140 |
* @param target Object that the slot will be invoked for |
|
141 |
* @param slot Slot that will be invoked. The slot can have either of these two signatures: |
|
142 |
* slotName(const QVariant&) only new value of setting is passed as parameter |
|
143 |
* slotName(const QString&, const QVariant&) both setting key and new value are passed as parameter |
|
144 |
* |
|
145 |
* @return boolean to indicate success |
|
146 |
* |
|
147 |
*/ |
|
148 |
bool CxeSettingsImp::listenForSetting(const QString &settingKey, QObject *target, const char *slot) |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
149 |
{ |
46 | 150 |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
151 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 152 |
CX_DEBUG_ASSERT(target && slot); |
153 |
||
154 |
// SLOT() macro adds '1' to the beginning of string so we use slot+1 to get the name of the slot |
|
155 |
CX_DEBUG(("Adding listener %s::%s for key %s", target->metaObject()->className(), slot+1, settingKey.toAscii().data())); |
|
156 |
QByteArray normalizedSlotName = QMetaObject::normalizedSignature(slot+1); |
|
157 |
||
158 |
int slotIndex = target->metaObject()->indexOfSlot(normalizedSlotName); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
159 |
|
46 | 160 |
bool ok = false; |
161 |
if (slotIndex > -1) { |
|
162 |
CX_DEBUG(("Slot found, checking signature")); |
|
163 |
// verify that slot is correct type |
|
164 |
if (QMetaObject::checkConnectArgs(QMetaObject::normalizedSignature(SETTING_LISTENER_SIGNATURE1), normalizedSlotName) || |
|
165 |
QMetaObject::checkConnectArgs(QMetaObject::normalizedSignature(SETTING_LISTENER_SIGNATURE2), normalizedSlotName)) { |
|
166 |
||
167 |
CX_DEBUG(("Slot signature ok, adding listener")); |
|
168 |
||
169 |
// check if list for given key already exists |
|
170 |
if (!mSettingListeners.contains(settingKey)) { |
|
171 |
mSettingListeners.insert(settingKey, CxeSettingListenerList()); |
|
172 |
} |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
173 |
|
46 | 174 |
// get QMetaMethod object |
175 |
QMetaMethod method = target->metaObject()->method(slotIndex); |
|
176 |
// add listener to the list |
|
177 |
CxeSettingListenerList& list = mSettingListeners[settingKey]; |
|
178 |
list.append(CxeSettingListener(target, method)); |
|
179 |
||
180 |
// connect to destroyed() signal so we can remove listener if it's deleted |
|
181 |
connect(target, SIGNAL(destroyed(QObject*)), this, SLOT(handleListenerDestroyed(QObject*))); |
|
182 |
||
183 |
ok = true; |
|
184 |
} else { |
|
185 |
CX_DEBUG(("Slot signature doesn't match, can't add listener")); |
|
186 |
} |
|
187 |
||
188 |
} else { |
|
189 |
CX_DEBUG(("Slot not found, can't add listener")); |
|
41 | 190 |
} |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
191 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
192 |
CX_DEBUG_EXIT_FUNCTION(); |
46 | 193 |
return ok; |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
194 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
195 |
|
46 | 196 |
/*! |
197 |
Load image/video specific settings during mode change or startup |
|
198 |
*/ |
|
199 |
void CxeSettingsImp::loadSettings(Cxe::CameraMode mode) |
|
200 |
{ |
|
201 |
CX_DEBUG_ENTER_FUNCTION(); |
|
202 |
OstTrace0(camerax_performance, CXESETTINGSIMP_LOADSETTINGS_IN, "msg: e_CX_SETTINGS_LOADSETTINGS 1"); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
203 |
|
46 | 204 |
mCameraMode = mode; |
205 |
||
206 |
// inform the settings model for the change in mode. |
|
207 |
if (mode == Cxe::ImageMode) { |
|
208 |
restoreImageSettings(); |
|
209 |
notifyListeners(CxeSettingIds::IMAGE_SCENE_DATA, mSceneModeStore.currentScene(Cxe::ImageMode)); |
|
210 |
notifyListeners(CxeSettingIds::IMAGE_SCENE, mSceneModeStore.currentSceneId(Cxe::ImageMode)); |
|
211 |
emit settingValueChanged(CxeSettingIds::IMAGE_SCENE, mSceneModeStore.currentSceneId(Cxe::ImageMode)); |
|
212 |
} else { |
|
213 |
restoreVideoSettings(); |
|
214 |
notifyListeners(CxeSettingIds::VIDEO_SCENE_DATA, mSceneModeStore.currentScene(Cxe::VideoMode)); |
|
215 |
notifyListeners(CxeSettingIds::VIDEO_SCENE, mSceneModeStore.currentSceneId(Cxe::VideoMode)); |
|
216 |
emit settingValueChanged(CxeSettingIds::VIDEO_SCENE, mSceneModeStore.currentSceneId(Cxe::VideoMode)); |
|
217 |
} |
|
218 |
||
219 |
OstTrace0(camerax_performance, CXESETTINGSIMP_LOADSETTINGS_OUT, "msg: e_CX_SETTINGS_LOADSETTINGS 0"); |
|
220 |
CX_DEBUG_EXIT_FUNCTION(); |
|
221 |
} |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
222 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
223 |
/*! |
46 | 224 |
* Get setting value associated with the key. |
225 |
* @Param key - Setting key Id ( refer to CxeSettingIds in cxenums.h ) |
|
226 |
* @Param value - contains the value associated with the key. |
|
227 |
* @returns CxeError::None if successful or any CxeError specific error code. |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
228 |
*/ |
46 | 229 |
void CxeSettingsImp::getValue(const QString &key, QVariant &value) const |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
230 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
231 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 232 |
CX_DEBUG_ASSERT(mSettingStore); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
233 |
|
46 | 234 |
|
235 |
CxeError::Id err = CxeError::None; |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
236 |
|
46 | 237 |
// check if getting scene mode |
238 |
if(key == CxeSettingIds::IMAGE_SCENE_DATA) { |
|
239 |
value = mSceneModeStore.currentScene(Cxe::ImageMode); |
|
240 |
} else if(key == CxeSettingIds::VIDEO_SCENE_DATA) { |
|
241 |
value = mSceneModeStore.currentScene(Cxe::VideoMode); |
|
242 |
} else { |
|
243 |
// Try first to find the item from cenrep store. |
|
244 |
err = mSettingStore->get(key, value); |
|
41 | 245 |
|
46 | 246 |
// If setting is not in cenrep store, try fetching it from scene settings. |
247 |
if (!err) { |
|
248 |
CX_DEBUG(("Got value %s from settings store", value.toString().toAscii().data())); |
|
249 |
} else { |
|
250 |
// setting not found in setting store, try finding if its scene specific setting. |
|
251 |
CX_DEBUG(( "fetching value from scene settings" )); |
|
252 |
err = mSceneModeStore.sceneSettingValue(mCameraMode, key, value); |
|
253 |
} |
|
254 |
if (err) { |
|
255 |
throw CxeException(err); |
|
256 |
} |
|
41 | 257 |
} |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
258 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
259 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
260 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
261 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
262 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
263 |
/*! |
46 | 264 |
* Set a value to the key. |
265 |
* @Param key - Setting key Id ( refer to CxeSettingIds in cxenums.h ) |
|
266 |
* @Param value - contains the value associated with the key. |
|
267 |
* @returns CxeError::None if successful or any CxeError specific error code. |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
268 |
*/ |
46 | 269 |
void CxeSettingsImp::setValue(const QString &key, const QVariant &newValue) |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
270 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
271 |
CX_DEBUG_ENTER_FUNCTION(); |
46 | 272 |
CX_DEBUG_ASSERT(mSettingStore); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
273 |
|
46 | 274 |
CxeError::Id err; |
275 |
// check if setting scene mode |
|
276 |
if(key == CxeSettingIds::IMAGE_SCENE) { |
|
277 |
setImageScene(newValue.toString()); |
|
278 |
} else if(key == CxeSettingIds::VIDEO_SCENE) { |
|
279 |
setVideoScene(newValue.toString()); |
|
280 |
} else if(key == CxeSettingIds::IMAGE_SCENE_DATA || key == CxeSettingIds::VIDEO_SCENE_DATA) { |
|
281 |
// setting whole scene by value is not supported |
|
282 |
throw CxeException(CxeError::NotSupported); |
|
283 |
} else { |
|
284 |
// Try storing new value to cenrep |
|
285 |
err = mSettingStore->set(key, newValue); |
|
28 | 286 |
|
46 | 287 |
if (err) { |
288 |
CX_DEBUG(( "Key not found in cenrepstore, writing value to scene settings" )); |
|
289 |
err = mSceneModeStore.setSceneSettingValue(mCameraMode, key, newValue); |
|
290 |
} |
|
291 |
||
292 |
if (err) { |
|
293 |
throw CxeException(err); |
|
294 |
} |
|
295 |
||
296 |
// send notifications |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
297 |
emit settingValueChanged(key, newValue); |
46 | 298 |
notifyListeners(key, newValue); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
299 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
300 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
301 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
302 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
303 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
304 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
305 |
/*! |
46 | 306 |
* Restores image settings, during mode change or during startup. |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
307 |
*/ |
46 | 308 |
void CxeSettingsImp::restoreImageSettings() |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
309 |
{ |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
310 |
CX_DEBUG_ENTER_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
311 |
|
46 | 312 |
QString currentSceneInUse = mSceneModeStore.currentSceneId(Cxe::ImageMode); |
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
313 |
|
46 | 314 |
// get the image scene value from cenrep and load the scene settings |
315 |
QString key(CxeSettingIds::IMAGE_SCENE); |
|
316 |
QString cenrepSceneValue = CxeSettings::get<QString>(key); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
317 |
|
46 | 318 |
bool ok2LoadSceneSettings = (cenrepSceneValue != currentSceneInUse); |
319 |
||
320 |
if (ok2LoadSceneSettings) { |
|
321 |
// loading scene settings |
|
322 |
mSceneModeStore.setCurrentScene(Cxe::ImageMode, cenrepSceneValue); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
323 |
} |
28 | 324 |
|
46 | 325 |
// Updating Flash setting from cenrep |
326 |
key = CxeSettingIds::FLASH_MODE; |
|
327 |
int flashMode = CxeSettings::get<int>(key); |
|
28 | 328 |
|
46 | 329 |
// update local datastructure with flash setting value from cenrep. |
330 |
CX_DEBUG(( "flash setting value %d", flashMode)); |
|
331 |
mSceneModeStore.setSceneSettingValue(Cxe::ImageMode, key, flashMode); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
332 |
|
46 | 333 |
// Updating Face Tracking setting from cenrep |
334 |
key = CxeSettingIds::FACE_TRACKING; |
|
335 |
int faceTracking = CxeSettings::get<int>(key); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
336 |
|
46 | 337 |
// update local datastructure with flash setting value from cenrep. |
338 |
CX_DEBUG(( "Face Tracking setting value %d", faceTracking)); |
|
339 |
mSceneModeStore.setSceneSettingValue(Cxe::ImageMode, key, faceTracking); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
340 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
341 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
342 |
CX_DEBUG_EXIT_FUNCTION(); |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
343 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
344 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
345 |
|
46 | 346 |
/*! |
347 |
* Restores video settings, during mode change or during startup. |
|
348 |
*/ |
|
349 |
void CxeSettingsImp::restoreVideoSettings() |
|
350 |
{ |
|
351 |
CX_DEBUG_ENTER_FUNCTION(); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
352 |
|
46 | 353 |
QString currentSceneInUse = mSceneModeStore.currentSceneId(Cxe::VideoMode); |
354 |
||
355 |
// get the video scene value from cenrep and load the scene settings |
|
356 |
QString cenrepSceneValue = CxeSettings::get<QString>(CxeSettingIds::VIDEO_SCENE); |
|
357 |
||
358 |
bool ok2LoadSceneSettings = (cenrepSceneValue != currentSceneInUse); |
|
359 |
||
360 |
if (ok2LoadSceneSettings) { |
|
361 |
// loading video scene settings |
|
362 |
mSceneModeStore.setCurrentScene(Cxe::VideoMode, cenrepSceneValue); |
|
363 |
} |
|
364 |
||
365 |
CX_DEBUG_EXIT_FUNCTION(); |
|
366 |
} |
|
367 |
||
368 |
/*! |
|
369 |
* Set new Image scene mode. |
|
370 |
* @returns CxeError::None if successful or any CxeError specific error code. |
|
371 |
*/ |
|
372 |
void CxeSettingsImp::setImageScene(const QString &newScene) |
|
373 |
{ |
|
374 |
CX_DEBUG_ENTER_FUNCTION(); |
|
375 |
||
376 |
// load scene specific settings |
|
377 |
mSceneModeStore.setCurrentScene(Cxe::ImageMode, newScene); |
|
378 |
||
379 |
// saving current image scene to cenrep |
|
380 |
CxeError::Id err = mSettingStore->set(CxeSettingIds::IMAGE_SCENE, newScene); |
|
381 |
CxeException::throwIfError(err); |
|
382 |
||
383 |
// saving flash value from scene to cenrep |
|
384 |
// call CxeSettingStore::set directly because we don't want to send notifications |
|
385 |
// about these changes |
|
386 |
QString key(CxeSettingIds::FLASH_MODE); |
|
387 |
err = mSettingStore->set(key, mSceneModeStore.currentScene(Cxe::ImageMode)[key].toInt()); |
|
388 |
||
389 |
CxeException::throwIfError(err); |
|
390 |
// saving face tracking value from scene to cenrep |
|
391 |
key = CxeSettingIds::FACE_TRACKING; |
|
392 |
err = mSettingStore->set(key, mSceneModeStore.currentScene(Cxe::ImageMode)[key].toInt()); |
|
393 |
CxeException::throwIfError(err); |
|
394 |
||
395 |
// send notifications |
|
396 |
emit settingValueChanged(CxeSettingIds::IMAGE_SCENE, mSceneModeStore.currentSceneId(Cxe::ImageMode)); |
|
397 |
notifyListeners(CxeSettingIds::IMAGE_SCENE, mSceneModeStore.currentSceneId(Cxe::ImageMode)); |
|
398 |
notifyListeners(CxeSettingIds::IMAGE_SCENE_DATA, mSceneModeStore.currentScene(Cxe::ImageMode)); |
|
399 |
||
400 |
CX_DEBUG_EXIT_FUNCTION(); |
|
401 |
||
402 |
} |
|
403 |
||
404 |
/*! |
|
405 |
* Set new video scene mode. |
|
406 |
* @returns CxeError::None if successful or any CxeError specific error code. |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
407 |
*/ |
46 | 408 |
void CxeSettingsImp::setVideoScene(const QString &newScene) |
409 |
{ |
|
410 |
CX_DEBUG_ENTER_FUNCTION(); |
|
411 |
||
412 |
mSceneModeStore.setCurrentScene(Cxe::VideoMode, newScene); |
|
413 |
||
414 |
// video scene set successfully, store the scene value to cenrep |
|
415 |
CxeError::Id err = mSettingStore->set(CxeSettingIds::VIDEO_SCENE, newScene); |
|
416 |
CxeException::throwIfError(err); |
|
417 |
||
418 |
emit settingValueChanged(CxeSettingIds::VIDEO_SCENE, mSceneModeStore.currentSceneId(Cxe::VideoMode)); |
|
419 |
notifyListeners(CxeSettingIds::VIDEO_SCENE, mSceneModeStore.currentSceneId(Cxe::VideoMode)); |
|
420 |
notifyListeners(CxeSettingIds::VIDEO_SCENE_DATA, mSceneModeStore.currentScene(Cxe::VideoMode)); |
|
421 |
||
422 |
CX_DEBUG_EXIT_FUNCTION(); |
|
423 |
||
424 |
} |
|
425 |
||
426 |
/*! |
|
427 |
* Loads all run-time variation settings |
|
428 |
*/ |
|
429 |
void CxeSettingsImp::loadVariationSettings() |
|
430 |
{ |
|
431 |
CX_DEBUG_ENTER_FUNCTION(); |
|
432 |
CX_DEBUG_ASSERT( mSettingStore ); |
|
433 |
||
434 |
QList<QString> variationKeys; |
|
435 |
// all supported runtime variation keys are fetched from here. |
|
436 |
variationKeys.append(CxeVariationKeys::FREE_MEMORY_LEVELS); |
|
437 |
variationKeys.append(CxeVariationKeys::STILL_MAX_ZOOM_LIMITS); |
|
438 |
variationKeys.append(CxeVariationKeys::VIDEO_MAX_ZOOM_LIMITS); |
|
439 |
||
440 |
// load all run-time setting values from cenrep. |
|
441 |
mVariationSettings = mSettingStore->loadVariationSettings(variationKeys); |
|
442 |
||
443 |
CX_DEBUG_EXIT_FUNCTION(); |
|
444 |
} |
|
445 |
||
446 |
/*! |
|
447 |
* Notify setting listeners that setting has changed |
|
448 |
* @param settingKey Setting that has changed |
|
449 |
* @param newValue New value of the setting |
|
450 |
*/ |
|
451 |
void CxeSettingsImp::notifyListeners(const QString &settingKey, const QVariant &newValue) |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
452 |
{ |
46 | 453 |
CX_DEBUG_ENTER_FUNCTION(); |
454 |
||
455 |
CX_DEBUG(("CxeSettingsImp::notifyListeners settingKey=%s", settingKey.toAscii().data())); |
|
456 |
||
457 |
if (mSettingListeners.contains(settingKey)) { |
|
458 |
CX_DEBUG(("Listeners found")); |
|
459 |
// get list of listener |
|
460 |
CxeSettingListenerList& list = mSettingListeners[settingKey]; |
|
461 |
||
462 |
// iterate through the list and call all listeners |
|
463 |
CxeSettingListenerList::const_iterator i = list.constBegin(); |
|
464 |
for(; i != list.constEnd(); ++i) { |
|
465 |
||
466 |
QObject *object = (*i).first; |
|
467 |
QMetaMethod slot = (*i).second; |
|
468 |
||
469 |
CX_DEBUG_ASSERT(object); |
|
470 |
||
471 |
// invoke the slot |
|
472 |
CX_DEBUG(("Calling slot %s::%s", object->metaObject()->className(), slot.signature())); |
|
473 |
||
474 |
bool ok = false; |
|
475 |
if (slot.parameterTypes().size() == 2) { |
|
476 |
// slot has two parameters, send settingKey as well |
|
477 |
ok = slot.invoke(object, |
|
478 |
Qt::AutoConnection, |
|
479 |
Q_ARG(QString, settingKey), |
|
480 |
Q_ARG(QVariant, newValue)); |
|
481 |
} else { |
|
482 |
// don't send settingKey as parameter |
|
483 |
ok = slot.invoke(object, |
|
484 |
Qt::AutoConnection, |
|
485 |
Q_ARG(QVariant, newValue)); |
|
486 |
} |
|
487 |
||
488 |
if (!ok) { |
|
489 |
CX_DEBUG(("QMetaMethod::invoke() failed, listener not notified")) |
|
490 |
} |
|
491 |
||
492 |
} |
|
493 |
||
494 |
} else { |
|
495 |
CX_DEBUG(("NO listeners found")); |
|
496 |
} |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
497 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
498 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
499 |
|
46 | 500 |
CX_DEBUG_EXIT_FUNCTION(); |
501 |
} |
|
502 |
||
503 |
/*! |
|
504 |
* Handle deletion of registered listener. |
|
505 |
*/ |
|
506 |
void CxeSettingsImp::handleListenerDestroyed(QObject *object) |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
507 |
{ |
46 | 508 |
CX_DEBUG_ENTER_FUNCTION(); |
509 |
||
510 |
QList<QString> keyList = mSettingListeners.keys(); |
|
511 |
||
512 |
for (int i = 0; i < keyList.size(); i++) { |
|
513 |
||
514 |
QString key = keyList[i]; |
|
515 |
CxeSettingListenerList& list = mSettingListeners[key]; |
|
516 |
||
517 |
for (int j = 0; j < list.size(); j++) { |
|
518 |
CxeSettingListener &listener = list[j]; |
|
519 |
if (listener.first == object) { |
|
520 |
list.removeAt(j--); |
|
521 |
} |
|
522 |
} |
|
523 |
||
524 |
// removed last listener for this key |
|
525 |
if (list.size() == 0) { |
|
526 |
mSettingListeners.remove(key); |
|
527 |
} |
|
528 |
} |
|
529 |
||
530 |
CX_DEBUG_EXIT_FUNCTION(); |
|
19
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
531 |
} |
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
532 |
|
d9aefe59d544
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
533 |
// end of file |