author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> |
Wed, 13 Oct 2010 15:32:36 +0300 | |
branch | RCL_3 |
changeset 44 | 7a45d2ea2f56 |
parent 40 | 52a167391590 |
permissions | -rw-r--r-- |
40 | 1 |
/* |
2 |
* Copyright (c) 2007-2008 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: Manages note showing in UI |
|
15 |
* |
|
16 |
*/ |
|
17 |
||
18 |
||
19 |
#include <bautils.h> |
|
20 |
#include <featmgr.h> |
|
21 |
#include <aknSDData.h> |
|
22 |
#include <secondarydisplay/dunsecondarydisplayapi.h> |
|
23 |
#include "DunNoteHandler.h" |
|
24 |
#include "DunDebug.h" |
|
25 |
||
26 |
_LIT( KDunUtilsDriveSpec, "z:" ); |
|
27 |
_LIT( KDunUtilsResourceFileName, "dunutils.rsc" ); |
|
28 |
||
29 |
const TInt KDunCoverEnumStart = (ECmdNone + 1); // start after ECmdNone |
|
30 |
const TInt KDunPtr8toPtr16Divider = 2; // Divider for converting |
|
31 |
const TInt KDunThreeItemsToPop = 3; |
|
32 |
||
33 |
// ======== MEMBER FUNCTIONS ======== |
|
34 |
||
35 |
// --------------------------------------------------------------------------- |
|
36 |
// Two-phased constructor. |
|
37 |
// --------------------------------------------------------------------------- |
|
38 |
// |
|
39 |
CDunNoteHandler* CDunNoteHandler::NewL() |
|
40 |
{ |
|
41 |
CDunNoteHandler* self = new (ELeave) CDunNoteHandler(); |
|
42 |
CleanupStack::PushL( self ); |
|
43 |
self->ConstructL(); |
|
44 |
CleanupStack::Pop( self ); |
|
45 |
return self; |
|
46 |
} |
|
47 |
||
48 |
// --------------------------------------------------------------------------- |
|
49 |
// Destructor |
|
50 |
// --------------------------------------------------------------------------- |
|
51 |
// |
|
52 |
CDunNoteHandler::~CDunNoteHandler() |
|
53 |
{ |
|
54 |
FTRACE(FPrint( _L("CDunNoteHandler::~CDunNoteHandler()") )); |
|
55 |
ResetData(); |
|
56 |
FTRACE(FPrint( _L("CDunNoteHandler::~CDunNoteHandler() complete") )); |
|
57 |
} |
|
58 |
||
59 |
// --------------------------------------------------------------------------- |
|
60 |
// Resets data to initial values |
|
61 |
// --------------------------------------------------------------------------- |
|
62 |
// |
|
63 |
void CDunNoteHandler::ResetData() |
|
64 |
{ |
|
65 |
FTRACE(FPrint( _L("CDunNoteHandler::ResetData()") )); |
|
66 |
// APIs affecting this: |
|
67 |
// IssueRequest() |
|
68 |
Stop(); |
|
69 |
delete iNote; |
|
70 |
iNote = NULL; |
|
71 |
// Internal |
|
72 |
Initialize(); |
|
73 |
FTRACE(FPrint( _L("CDunNoteHandler::ResetData() complete") )); |
|
74 |
} |
|
75 |
||
76 |
// --------------------------------------------------------------------------- |
|
77 |
// Issues request to start showing UI note |
|
78 |
// --------------------------------------------------------------------------- |
|
79 |
// |
|
80 |
TInt CDunNoteHandler::IssueRequest() |
|
81 |
{ |
|
82 |
FTRACE(FPrint( _L("CDunNoteHandler::IssueRequest()") )); |
|
83 |
if ( iNoteState != EDunStateIdle ) |
|
84 |
{ |
|
85 |
FTRACE(FPrint( _L("CDunNoteHandler::IssueRequest() (not ready) complete") )); |
|
86 |
return KErrNotReady; |
|
87 |
} |
|
88 |
TRAPD( retTrap, DoIssueRequestL() ); |
|
89 |
if ( retTrap != KErrNone ) |
|
90 |
{ |
|
91 |
FTRACE(FPrint( _L("CDunNoteHandler::IssueRequest() (trapped!) complete (%d)"), retTrap)); |
|
92 |
return retTrap; |
|
93 |
} |
|
94 |
SetActive(); |
|
95 |
FTRACE(FPrint( _L("CDunNoteHandler::IssueRequest() complete") )); |
|
96 |
return KErrNone; |
|
97 |
} |
|
98 |
||
99 |
// --------------------------------------------------------------------------- |
|
100 |
// Stops showing UI note |
|
101 |
// --------------------------------------------------------------------------- |
|
102 |
// |
|
103 |
TInt CDunNoteHandler::Stop() |
|
104 |
{ |
|
105 |
FTRACE(FPrint( _L("CDunNoteHandler::Stop()") )); |
|
106 |
if ( iNoteState != EDunStateUiNoting ) |
|
107 |
{ |
|
108 |
FTRACE(FPrint( _L("CDunNoteHandler::Stop() (not ready) complete") )); |
|
109 |
return KErrNotReady; |
|
110 |
} |
|
111 |
if ( !iNote ) |
|
112 |
{ |
|
113 |
FTRACE(FPrint( _L("CDunNoteHandler::Stop() (iNote not initialized!) complete") )); |
|
114 |
return KErrGeneral; |
|
115 |
} |
|
116 |
iNote->CancelConfirmationQuery(); |
|
117 |
Cancel(); |
|
118 |
iNoteState = EDunStateIdle; |
|
119 |
FTRACE(FPrint( _L("CDunNoteHandler::Stop() complete") )); |
|
120 |
return KErrNone; |
|
121 |
} |
|
122 |
||
123 |
// --------------------------------------------------------------------------- |
|
124 |
// CDunNoteHandler::CDunNoteHandler |
|
125 |
// --------------------------------------------------------------------------- |
|
126 |
// |
|
127 |
CDunNoteHandler::CDunNoteHandler() : |
|
128 |
CActive( EPriorityStandard ) |
|
129 |
{ |
|
130 |
Initialize(); |
|
131 |
} |
|
132 |
||
133 |
// --------------------------------------------------------------------------- |
|
134 |
// CDunNoteHandler::ConstructL |
|
135 |
// --------------------------------------------------------------------------- |
|
136 |
// |
|
137 |
void CDunNoteHandler::ConstructL() |
|
138 |
{ |
|
139 |
FTRACE(FPrint( _L("CDunNoteHandler::ConstructL()") )); |
|
140 |
CActiveScheduler::Add( this ); |
|
141 |
FTRACE(FPrint( _L("CDunNoteHandler::ConstructL() complete") )); |
|
142 |
} |
|
143 |
||
144 |
// --------------------------------------------------------------------------- |
|
145 |
// Initializes this class |
|
146 |
// --------------------------------------------------------------------------- |
|
147 |
// |
|
148 |
void CDunNoteHandler::Initialize() |
|
149 |
{ |
|
150 |
FTRACE(FPrint( _L("CDunNoteHandler::Initialize()" ) )); |
|
151 |
iNote = NULL; |
|
152 |
iNoteState = EDunStateIdle; |
|
153 |
FTRACE(FPrint( _L("CDunNoteHandler::Initialize() complete" ) )); |
|
154 |
} |
|
155 |
||
156 |
// --------------------------------------------------------------------------- |
|
157 |
// Issues request to start showing UI note |
|
158 |
// --------------------------------------------------------------------------- |
|
159 |
// |
|
160 |
void CDunNoteHandler::DoIssueRequestL() |
|
161 |
{ |
|
162 |
FTRACE(FPrint( _L("CDunNoteHandler::DoIssueRequestL()") )); |
|
163 |
if ( iNote ) |
|
164 |
{ |
|
165 |
FTRACE(FPrint( _L("CDunNoteHandler::DoIssueRequestL() (ERROR) complete") )); |
|
166 |
User::Leave( KErrGeneral ); |
|
167 |
} |
|
168 |
HBufC16* unicodeString = NULL; |
|
169 |
ReadResourceTextL( R_DUN_MAXIMUM_DIALUPS, unicodeString ); |
|
170 |
CAknGlobalConfirmationQuery* note = CAknGlobalConfirmationQuery::NewLC(); |
|
171 |
// Publish cover UI note data |
|
172 |
CAknSDData* sdData = CAknSDData::NewL( KDunNoteCategory, |
|
173 |
ECmdMaxNumber - KDunCoverEnumStart, |
|
174 |
KNullDesC8 ); |
|
175 |
note->SetSecondaryDisplayData( sdData ); // ownership transferred |
|
176 |
// Start to show note |
|
177 |
iStatus = KRequestPending; |
|
44
7a45d2ea2f56
Revision: 201038
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
40
diff
changeset
|
178 |
iNoteState = EDunStateUiNoting; |
40 | 179 |
note->ShowConfirmationQueryL( iStatus, |
180 |
*unicodeString, |
|
181 |
R_AVKON_SOFTKEYS_OK_EMPTY, |
|
182 |
R_QGN_NOTE_ERROR_ANIM, |
|
183 |
KNullDesC, |
|
184 |
0, |
|
185 |
0, |
|
186 |
CAknQueryDialog::EErrorTone ); |
|
187 |
CleanupStack::Pop( note ); |
|
188 |
delete unicodeString; |
|
189 |
iNote = note; |
|
190 |
FTRACE(FPrint( _L("CDunNoteHandler::DoIssueRequestL() complete") )); |
|
191 |
} |
|
192 |
||
193 |
// --------------------------------------------------------------------------- |
|
194 |
// Reads resource string |
|
195 |
// --------------------------------------------------------------------------- |
|
196 |
// |
|
197 |
void CDunNoteHandler::ReadResourceTextL( TInt aResourceId, HBufC16*& aUnicode ) |
|
198 |
{ |
|
199 |
FTRACE(FPrint( _L("CDunNoteHandler::ReadNoteResourceL()") )); |
|
200 |
// Connect to file server (for resource file reading) |
|
201 |
RFs fileSession; |
|
202 |
CleanupClosePushL<RFs>( fileSession ); |
|
203 |
User::LeaveIfError( fileSession.Connect() ); |
|
204 |
// Create dunutils.rsc path and file name |
|
205 |
TFileName fileName; |
|
206 |
fileName = KDunUtilsDriveSpec; |
|
207 |
fileName += KDC_RESOURCE_FILES_DIR; |
|
208 |
fileName += KDunUtilsResourceFileName; |
|
209 |
// Find nearest language file for resource |
|
210 |
BaflUtils::NearestLanguageFile( fileSession, fileName ); |
|
211 |
// Read note resource |
|
212 |
RResourceFile resourceFile; |
|
213 |
CleanupClosePushL<RResourceFile>( resourceFile ); |
|
214 |
resourceFile.OpenL( fileSession, fileName ); |
|
215 |
resourceFile.ConfirmSignatureL(); |
|
216 |
HBufC8* readBuffer = resourceFile.AllocReadLC( aResourceId ); |
|
217 |
// Convert read HBufC8 to HBufC16 |
|
218 |
const TPtrC16 ptr16(reinterpret_cast<const TUint16*> |
|
219 |
(readBuffer->Ptr()), |
|
220 |
(readBuffer->Size() / KDunPtr8toPtr16Divider) ); |
|
221 |
aUnicode = HBufC16::NewL( ptr16.Length() ); |
|
222 |
*aUnicode = ptr16; |
|
223 |
CleanupStack::PopAndDestroy( KDunThreeItemsToPop ); // readBuffer, resourceFile, fileSession |
|
224 |
FTRACE(FPrint( _L("CDunNoteHandler::ReadNoteResourceL() complete") )); |
|
225 |
} |
|
226 |
||
227 |
// --------------------------------------------------------------------------- |
|
228 |
// From class CActive. |
|
229 |
// Gets called when UI note dismissed |
|
230 |
// --------------------------------------------------------------------------- |
|
231 |
// |
|
232 |
void CDunNoteHandler::RunL() |
|
233 |
{ |
|
234 |
FTRACE(FPrint( _L("CDunNoteHandler::RunL()" ) )); |
|
235 |
iNoteState = EDunStateIdle; |
|
236 |
delete iNote; |
|
237 |
iNote = NULL; |
|
238 |
FTRACE(FPrint( _L("CDunNoteHandler::RunL() complete" ) )); |
|
239 |
} |
|
240 |
||
241 |
// --------------------------------------------------------------------------- |
|
242 |
// From class CActive. |
|
243 |
// Gets called on cancel |
|
244 |
// --------------------------------------------------------------------------- |
|
245 |
// |
|
246 |
void CDunNoteHandler::DoCancel() |
|
247 |
{ |
|
248 |
} |