17 |
17 |
18 |
18 |
19 // INCLUDES |
19 // INCLUDES |
20 #include <e32base.h> |
20 #include <e32base.h> |
21 |
21 |
|
22 #include <akntoolbar.h> |
22 #include <AknsItemID.h> |
23 #include <AknsItemID.h> |
23 #include <AknsUtils.h> |
|
24 #include <StringLoader.h> |
24 #include <StringLoader.h> |
25 |
25 #include "phoneresourceids.h" |
26 #include <phoneui.mbg> |
|
27 #include <phoneui.rsg> |
|
28 #include <phoneuivoip.rsg> |
|
29 #include <data_caging_path_literals.hrh> // For KDC_APP_BITMAP_DIR |
|
30 |
|
31 #include "phoneui.pan" |
26 #include "phoneui.pan" |
32 #include "phonelogger.h" |
27 #include "phonelogger.h" |
|
28 #include <data_caging_path_literals.hrh> |
33 #include "cphonetransferdialercontroller.h" |
29 #include "cphonetransferdialercontroller.h" |
34 #include "cphonemainresourceresolver.h" |
30 #include "cphonemainresourceresolver.h" |
35 #include "phonerssvoip.h" |
31 #include "phonerssvoip.h" |
36 #include "phoneappcommands.hrh" |
32 #include "phoneappcommands.hrh" |
37 #include "phoneappvoipcommands.hrh" |
33 #include "phoneappvoipcommands.hrh" |
38 |
34 |
39 |
35 |
40 // CONSTANTS |
36 // CONSTANTS |
41 _LIT ( KPhoneMifFileName, "phoneui.mif" ); |
37 _LIT ( KPhoneMifFileName, "phoneui.mif" ); |
42 |
38 |
43 // Number of buttons |
|
44 const TInt KButtonCount = 2; |
|
45 |
|
46 class TPhoneDialerToolbarButton |
|
47 { |
|
48 public: |
|
49 TInt iIconIndex; |
|
50 TInt iMaskIndex; |
|
51 TInt iCommandId; |
|
52 }; |
|
53 |
|
54 const TPhoneDialerToolbarButton bArray[KButtonCount] = |
|
55 { |
|
56 { EMbmPhoneuiQgn_indi_button_send_dtmf, |
|
57 EMbmPhoneuiQgn_indi_button_send_dtmf_mask, |
|
58 EPhoneCmdTransferDialerOk |
|
59 }, |
|
60 { EMbmPhoneuiQgn_indi_dialer_contacts, |
|
61 EMbmPhoneuiQgn_indi_dialer_contacts_mask, |
|
62 EPhoneCmdTransferDialerSearch |
|
63 } |
|
64 }; |
|
65 |
|
66 // ================= MEMBER FUNCTIONS ======================= |
39 // ================= MEMBER FUNCTIONS ======================= |
67 |
40 |
68 // C++ default constructor can NOT contain any code, that |
41 // C++ default constructor can NOT contain any code, that |
69 // might leave. |
42 // might leave. |
70 // |
43 // |
71 CPhoneTransferDialerController::CPhoneTransferDialerController() |
44 CPhoneTransferDialerController::CPhoneTransferDialerController() |
72 : CPhoneDialerController( NULL, *CCoeEnv::Static() ) |
|
73 { |
45 { |
74 } |
46 } |
75 |
47 |
76 // ----------------------------------------------------------- |
48 // ----------------------------------------------------------- |
77 // CPhoneTransferDialerController::~CPhoneTransferDialerController() |
49 // CPhoneTransferDialerController::~CPhoneTransferDialerController() |
133 "CPhoneTransferDialerController::NumberEntryPromptTextL()"); |
128 "CPhoneTransferDialerController::NumberEntryPromptTextL()"); |
134 if ( !iNumberEntryPromptText ) |
129 if ( !iNumberEntryPromptText ) |
135 { |
130 { |
136 iNumberEntryPromptText = StringLoader::LoadL( |
131 iNumberEntryPromptText = StringLoader::LoadL( |
137 CPhoneMainResourceResolver::Instance()-> |
132 CPhoneMainResourceResolver::Instance()-> |
138 ResolveResourceID( EPhoneVoIPTransferAddress ), &iCoeEnv ); |
133 ResolveResourceID( EPhoneVoIPTransferAddress ) ); |
139 } |
134 } |
140 |
135 |
141 return *iNumberEntryPromptText; |
136 return *iNumberEntryPromptText; |
142 } |
137 } |
143 |
138 |
144 // --------------------------------------------------------------------------- |
139 // ----------------------------------------------------------- |
145 // GetButtonData |
140 // CPhoneTransferDialerController::HandleNumberEntryIsEmpty |
146 // --------------------------------------------------------------------------- |
141 // ----------------------------------------------------------- |
147 // |
142 // |
148 TInt CPhoneTransferDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray<CButtonData>& aData ) const |
143 void CPhoneTransferDialerController::HandleNumberEntryIsEmpty( TBool aIsEmpty ) |
149 { |
144 { |
150 TInt err = KErrNone; |
145 __LOGMETHODSTARTEND( PhoneUIVoIPExtension, |
151 |
146 "CPhoneTransferDialerController::HandleNumberEntryIsEmpty()"); |
152 TInt arrayIdx = KErrNotFound; |
147 __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) ); |
153 if ( aIndex == ECallButton ) |
148 iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, aIsEmpty, EFalse ); |
154 { |
149 iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, !aIsEmpty, EFalse ); |
155 arrayIdx = 0; |
150 iToolbar->SetItemDimmed( EPhoneDialerCmdClear, aIsEmpty, EFalse ); |
156 } |
151 iNumberEntryIsEmpty = aIsEmpty; |
157 else if ( aIndex == EPhonebookButton ) |
152 } |
158 { |
153 |
159 arrayIdx = 1; |
154 // ----------------------------------------------------------- |
160 } |
155 // CPhoneTransferDialerController::ShowButtons |
161 |
156 // ----------------------------------------------------------- |
162 if ( arrayIdx >= 0 ) |
157 // |
163 { |
158 void CPhoneTransferDialerController::ShowButtons( TBool aShow ) |
164 const TPhoneDialerToolbarButton& arrItem = bArray[ arrayIdx ]; |
159 { |
165 CButtonData* btn = NULL; |
160 __LOGMETHODSTARTEND( PhoneUIVoIPExtension, |
166 TRAP( err, btn = CreateButtonDataL( arrItem.iCommandId, |
161 "CPhoneTransferDialerController::ShowButtons()"); |
167 arrItem.iIconIndex, |
162 __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) ); |
168 arrItem.iMaskIndex ) ); |
163 if ( aShow ) |
169 if ( !err ) |
164 { |
170 { |
165 iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, ETrue, EFalse ); |
171 err = aData.Append( btn ); |
166 iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, EFalse, EFalse ); |
172 if ( err ) |
167 iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse ); |
173 { |
168 } |
174 delete btn; |
169 } |
175 } |
170 |
176 } |
171 // --------------------------------------------------------------------------- |
177 } |
172 // PhoneTransferDialerController::CreateButtonLC |
178 else |
173 // --------------------------------------------------------------------------- |
179 { |
174 // |
180 // Trust base class on other buttons (i.e. the clear button) |
175 CAknButton* CPhoneTransferDialerController::CreateButtonLC( |
181 err = CPhoneDialerController::GetButtonData( aIndex, aData ); |
176 TInt aNormalIconId, |
182 } |
177 TInt aNormalMaskId, |
183 |
178 const TDesC& aTooltipText, |
184 return err; |
179 const TAknsItemID& aSkinIconId ) const |
185 } |
180 { |
186 |
181 __LOGMETHODSTARTEND( PhoneUIVoIPExtension, |
187 // --------------------------------------------------------------------------- |
182 "CPhoneTransferDialerController::CreateButtonLC()"); |
188 // ButtonState |
|
189 // --------------------------------------------------------------------------- |
|
190 // |
|
191 TInt CPhoneTransferDialerController::ButtonState( TButtonIndex aIndex ) const |
|
192 { |
|
193 // Out button have only one state. Trust base class on clear button |
|
194 if ( aIndex == ECallButton || aIndex == EPhonebookButton ) |
|
195 { |
|
196 return 0; |
|
197 } |
|
198 else |
|
199 { |
|
200 return CPhoneDialerController::ButtonState( aIndex ); |
|
201 } |
|
202 } |
|
203 |
|
204 // --------------------------------------------------------------------------- |
|
205 // ButtonDimmed |
|
206 // --------------------------------------------------------------------------- |
|
207 // |
|
208 TBool CPhoneTransferDialerController::ButtonDimmed( TButtonIndex aIndex ) const |
|
209 { |
|
210 TBool dimmed = EFalse; |
|
211 |
|
212 // Ok is dimmed when there's no number. Search is dimmed when there is |
|
213 // a number. Trust base class on clear button. |
|
214 if ( aIndex == ECallButton ) |
|
215 { |
|
216 dimmed = !iNumberAvailable; |
|
217 } |
|
218 else if ( aIndex == EPhonebookButton ) |
|
219 { |
|
220 dimmed = iNumberAvailable; |
|
221 } |
|
222 else |
|
223 { |
|
224 dimmed = CPhoneDialerController::ButtonDimmed( aIndex ); |
|
225 } |
|
226 return dimmed; |
|
227 } |
|
228 |
|
229 // --------------------------------------------------------------------------- |
|
230 // EasyDialingAllowed |
|
231 // --------------------------------------------------------------------------- |
|
232 // |
|
233 TBool CPhoneTransferDialerController::EasyDialingAllowed() const |
|
234 { |
|
235 return EFalse; |
|
236 } |
|
237 |
|
238 // --------------------------------------------------------------------------- |
|
239 // PhoneTransferDialerController::CreateButtonDataL |
|
240 // --------------------------------------------------------------------------- |
|
241 // |
|
242 MPhoneDialerController::CButtonData* CPhoneTransferDialerController::CreateButtonDataL( |
|
243 TInt aCommandId, |
|
244 TInt aNormalIconId, |
|
245 TInt aNormalMaskId ) const |
|
246 { |
|
247 __LOGMETHODSTARTEND( PhoneUIVoIPExtension, |
|
248 "CPhoneTransferDialerController::CreateButtonDataL()"); |
|
249 |
|
250 // Load tooltip text. |
|
251 HBufC* tooltipText = GetTooltipTextL( aCommandId ); |
|
252 CleanupStack::PushL( tooltipText ); |
|
253 |
|
254 // Load icon |
|
255 TFileName mifPath( KDriveZ ); |
183 TFileName mifPath( KDriveZ ); |
256 mifPath.Append( KDC_APP_BITMAP_DIR ); |
184 mifPath.Append( KDC_APP_BITMAP_DIR ); |
257 mifPath.Append( KPhoneMifFileName ); |
185 mifPath.Append( KPhoneMifFileName ); |
258 |
186 |
259 TAknsItemID skinId = SkinId( aNormalIconId ); |
187 CAknButton* button = CAknButton::NewLC( |
260 MAknsSkinInstance* skin = AknsUtils::SkinInstance(); |
188 mifPath, |
261 CGulIcon* icon = AknsUtils::CreateGulIconL( skin, skinId, mifPath, |
189 aNormalIconId, |
262 aNormalIconId, aNormalMaskId ); |
190 aNormalMaskId, |
263 CleanupStack::PushL( icon ); |
191 -1, -1, // dimmed |
264 |
192 -1, -1, // pressed |
265 CButtonData* btnData = new (ELeave) CButtonData( aCommandId, icon, tooltipText ); |
193 -1, -1, // hover |
266 CleanupStack::Pop( icon ); |
194 KNullDesC, |
267 CleanupStack::Pop( tooltipText ); |
195 aTooltipText, // help |
268 |
196 0, // flags |
269 return btnData; |
197 0, // state flags |
|
198 aSkinIconId ); |
|
199 |
|
200 button->SetFocusing( EFalse ); |
|
201 button->SetBackground( iToolbar ); |
|
202 |
|
203 return button; |
270 } |
204 } |
271 |
205 |
272 // --------------------------------------------------------------------------- |
206 // --------------------------------------------------------------------------- |
273 // CPhoneTransferDialerController::GetTooltipText |
207 // CPhoneTransferDialerController::GetTooltipText |
274 // |
208 // |