|
1 /* |
|
2 * Copyright (c) 2010 Kanrikogaku Kenkyusho, Ltd. |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the License "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 * Kanrikogaku Kenkyusho, Ltd. - Initial contribution |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #ifdef _DIRECTPRINT_USE_USB |
|
20 #include <usbman.h> |
|
21 #include <usbstates.h> |
|
22 #include <usbpersonalityids.h> |
|
23 #endif // _DIRECTPRINT_USE_USB |
|
24 |
|
25 #include "directprintsession.h" |
|
26 #include "directprintclientserver.h" |
|
27 #include "directprintserver.h" |
|
28 #include "clog.h" |
|
29 #include "directprintbody.h" |
|
30 #include "directprintserverjobguard.h" |
|
31 #include "directprintnumofcopies.h" |
|
32 |
|
33 namespace |
|
34 { |
|
35 // panic |
|
36 _LIT( KDirectPrintSessionPanic, "CIPSes" ); |
|
37 enum TDirectPrintSessionPanic |
|
38 { |
|
39 ENotSupported |
|
40 }; |
|
41 |
|
42 void PanicClient( const TDpMessage& aMessage, TDirectPrintSessionPanic aCategory ) |
|
43 { |
|
44 aMessage.Panic( KDirectPrintSessionPanic, aCategory ); |
|
45 } |
|
46 } |
|
47 |
|
48 CDirectPrintSession::~CDirectPrintSession() |
|
49 { |
|
50 LOG("CDirectPrintSession::~CDirectPrintSession begin"); |
|
51 delete iNumOfCopies; |
|
52 delete iJobGuard; |
|
53 iCapabilityIDs.Close(); |
|
54 iMsgWrappers.ResetAndDestroy(); |
|
55 iMsgWrappers.Close(); |
|
56 Server().ReleaseEngine( this ); |
|
57 Server().RemoveSession(); |
|
58 LOG("CDirectPrintSession::~CDirectPrintSession end"); |
|
59 } |
|
60 |
|
61 CDirectPrintServer& CDirectPrintSession::Server() |
|
62 { |
|
63 return *static_cast<CDirectPrintServer*>( const_cast<CServer2*>( CSession2::Server() ) ); |
|
64 } |
|
65 |
|
66 void CDirectPrintSession::CreateL() |
|
67 { |
|
68 LOG("CDirectPrintSession::CreateL begin"); |
|
69 Server().AddSession(); |
|
70 iJobGuard = CDirectPrintServerJobGuard::NewL( Server().Engine() ); |
|
71 iNumOfCopies = CDirectPrintNumOfCopies::NewL(); |
|
72 iConnected = ETrue; |
|
73 LOG("CDirectPrintSession::CreateL end"); |
|
74 } |
|
75 |
|
76 void CDirectPrintSession::Disconnect(const RMessage2 &aMessage) |
|
77 { |
|
78 LOG("CDirectPrintSession::Disconnect begin"); |
|
79 // Server().Engine().HandleSessionDisconnect( iIdleGuard, iDiscoveryGuard, iJobGuard ); |
|
80 Server().Engine().HandleSessionDisconnect( NULL, NULL, iJobGuard ); |
|
81 iConnected = EFalse; |
|
82 CSession2::Disconnect( aMessage ); |
|
83 LOG("CDirectPrintSession::Disconnect end"); |
|
84 } |
|
85 |
|
86 void CDirectPrintSession::ServiceL( const RMessage2& aMessage ) |
|
87 { |
|
88 LOG1("CDirectPrintSession::ServiceL aMessage.Function(): %d", aMessage.Function()); |
|
89 |
|
90 // wrapper array clean begin |
|
91 TInt index = iMsgWrappers.Count(); |
|
92 LOG1("CDirectPrintSession::ServiceL index: %d", index); |
|
93 TBool result( EFalse ); |
|
94 while( --index >= 0 && !result ) |
|
95 { |
|
96 if( ( iMsgWrappers[index] )->Disposable() ) |
|
97 { |
|
98 TDpMessage* toDispose = iMsgWrappers[index]; |
|
99 iMsgWrappers.Remove( index ); |
|
100 delete toDispose; |
|
101 toDispose = NULL; |
|
102 result = ETrue; |
|
103 } |
|
104 } |
|
105 // wrapper array clean end |
|
106 |
|
107 TDpMessage* msgWrapper = new (ELeave) TDpMessage( aMessage, iConnected ); |
|
108 TInt err = iMsgWrappers.Insert( msgWrapper, 0 ); |
|
109 if( err ) |
|
110 { |
|
111 delete msgWrapper; |
|
112 User::Leave( err ); |
|
113 } |
|
114 else |
|
115 { |
|
116 msgWrapper = NULL; |
|
117 } |
|
118 |
|
119 TInt messageIndex = aMessage.Function(); |
|
120 |
|
121 if ( messageIndex <= EContinuePrintJob ) |
|
122 { |
|
123 ServiceFirstPartL( messageIndex ); |
|
124 } |
|
125 else if ( messageIndex >= ERemoveCachedPrinter && messageIndex <= EGetPrinterCapHigh ) |
|
126 { |
|
127 ServiceSecondPartL( messageIndex ); |
|
128 } |
|
129 else if ( messageIndex >= EGetPrinterCapEnumCount && messageIndex <= EGetProtocolName ) |
|
130 { |
|
131 ServiceThirdPartL ( messageIndex ); |
|
132 } |
|
133 else |
|
134 { |
|
135 PanicClient( *iMsgWrappers[0], ENotSupported ); |
|
136 } |
|
137 |
|
138 LOG("CDirectPrintSession::ServiceL end"); |
|
139 } |
|
140 void CDirectPrintSession::ServiceFirstPartL( TInt aIndex ) |
|
141 { |
|
142 switch( aIndex ) |
|
143 { |
|
144 case ECountConnections: |
|
145 CountConnectionsL( *iMsgWrappers[0] ); |
|
146 break; |
|
147 |
|
148 case ESetForeground: |
|
149 SetForegroundL( *iMsgWrappers[0] ); |
|
150 break; |
|
151 |
|
152 case EReserveEngine: |
|
153 ReserveEngine( *iMsgWrappers[0] ); |
|
154 break; |
|
155 |
|
156 case EReleaseEngine: |
|
157 ReleaseEngine( *iMsgWrappers[0] ); |
|
158 break; |
|
159 |
|
160 case ESupportedProtocols: |
|
161 SupportedProtocols( *iMsgWrappers[0] ); |
|
162 break; |
|
163 |
|
164 case EGetNumPrintPages: |
|
165 GetNumPrintPages( *iMsgWrappers[0] ); |
|
166 break; |
|
167 |
|
168 case EGetJobStatus: |
|
169 GetJobStatus( *iMsgWrappers[0] ); |
|
170 break; |
|
171 |
|
172 case EGetPrinterStatus: |
|
173 GetPrinterStatus( *iMsgWrappers[0] ); |
|
174 break; |
|
175 |
|
176 case ECancelDiscovery: |
|
177 CancelDiscovery( *iMsgWrappers[0] ); |
|
178 break; |
|
179 |
|
180 case ESubmitPrintJob: |
|
181 SubmitPrintJobL( *iMsgWrappers[0] ); |
|
182 break; |
|
183 |
|
184 case ECancelPrintJob: |
|
185 CancelPrintJob( *iMsgWrappers[0] ); |
|
186 break; |
|
187 |
|
188 case EContinuePrintJob: |
|
189 ContinuePrintJobL( *iMsgWrappers[0] ); |
|
190 break; |
|
191 |
|
192 default: |
|
193 LOG1("[CDirectPrintSession::ServiceFirstPartL]\t Method reached to an end with index: %d", aIndex); |
|
194 break; |
|
195 } |
|
196 } |
|
197 |
|
198 void CDirectPrintSession::ServiceSecondPartL( TInt aIndex ) |
|
199 { |
|
200 switch( aIndex ) |
|
201 { |
|
202 case ERemoveCachedPrinter: |
|
203 RemoveCachedPrinterL( *iMsgWrappers[0] ); |
|
204 break; |
|
205 |
|
206 case EGetJobTemplateIcon: |
|
207 GetJobTemplateIconL( *iMsgWrappers[0] ); |
|
208 break; |
|
209 |
|
210 case EGetNumPreviewPages: |
|
211 GetNumPreviewPages( *iMsgWrappers[0] ); |
|
212 break; |
|
213 |
|
214 case ESetJobSetting: |
|
215 SetJobSettingL( *iMsgWrappers[0] ); |
|
216 break; |
|
217 |
|
218 case EGetJobSetting: |
|
219 GetJobSettingL( *iMsgWrappers[0] ); |
|
220 break; |
|
221 |
|
222 case EGetPrinterCapability: |
|
223 GetPrinterCapabilityL( *iMsgWrappers[0] ); |
|
224 break; |
|
225 |
|
226 case EGetPrinterCapId: |
|
227 GetPrinterCapIdL( *iMsgWrappers[0] ); |
|
228 break; |
|
229 |
|
230 case EGetPrinterCapType: |
|
231 GetPrinterCapTypeL( *iMsgWrappers[0] ); |
|
232 break; |
|
233 |
|
234 case EGetPrinterCapDef: |
|
235 GetPrinterCapDefL( *iMsgWrappers[0] ); |
|
236 break; |
|
237 |
|
238 case EGetPrinterCapLow: |
|
239 GetPrinterCapLowL( *iMsgWrappers[0] ); |
|
240 break; |
|
241 |
|
242 case EGetPrinterCapHigh: |
|
243 GetPrinterCapHighL( *iMsgWrappers[0] ); |
|
244 break; |
|
245 |
|
246 default: |
|
247 LOG1("[CDirectPrintSession::ServiceSecondPartL]\t Method reached to an end with index: %d", aIndex); |
|
248 break; |
|
249 } |
|
250 } |
|
251 |
|
252 void CDirectPrintSession::ServiceThirdPartL( TInt aIndex ) |
|
253 { |
|
254 switch( aIndex ) |
|
255 { |
|
256 case EGetPrinterCapEnumCount: |
|
257 GetPrinterCapEnumCountL( *iMsgWrappers[0] ); |
|
258 break; |
|
259 |
|
260 case EGetPrinterCapEnum: |
|
261 GetPrinterCapEnumL( *iMsgWrappers[0] ); |
|
262 break; |
|
263 |
|
264 case EGetPrinterCapabilityIDsCount: |
|
265 GetPrinterCapabilityIDsCountL( *iMsgWrappers[0] ); |
|
266 break; |
|
267 |
|
268 case EGetPrinterCapabilityID: |
|
269 GetPrinterCapabilityIDL( *iMsgWrappers[0] ); |
|
270 break; |
|
271 |
|
272 case ERegisterIdleObserver: |
|
273 RegisterIdleObserverL( *iMsgWrappers[0] ); |
|
274 break; |
|
275 |
|
276 case ECancelRegisterIdleObserver: |
|
277 CancelRegisterIdleObserverL( *iMsgWrappers[0] ); |
|
278 break; |
|
279 |
|
280 case EStartDiscovery: |
|
281 StartDiscoveryL( *iMsgWrappers[0] ); |
|
282 break; |
|
283 |
|
284 case EContinueDiscovery: |
|
285 ContinueDiscoveryL( *iMsgWrappers[0] ); |
|
286 break; |
|
287 |
|
288 case EPrepareJob: |
|
289 PrepareJobL( *iMsgWrappers[0] ); |
|
290 break; |
|
291 |
|
292 case ECreateJob: |
|
293 CreateJobL( *iMsgWrappers[0] ); |
|
294 break; |
|
295 |
|
296 case EContinueCreateJob: |
|
297 ContinueCreateJobL( *iMsgWrappers[0] ); |
|
298 break; |
|
299 |
|
300 case ECancelStartDiscovery: |
|
301 CancelStartDiscoveryL( *iMsgWrappers[0] ); |
|
302 break; |
|
303 |
|
304 case ECancelCreateJob: |
|
305 CancelCreateJobL( *iMsgWrappers[0] ); |
|
306 break; |
|
307 |
|
308 case EIsPictBridgeMode: |
|
309 IsPictBridgeModeL( *iMsgWrappers[0] ); |
|
310 break; |
|
311 |
|
312 case ESetNumberOfCopiesCount: |
|
313 SetNumberOfCopiesCountL( *iMsgWrappers[0] ); |
|
314 break; |
|
315 |
|
316 case ESetNumberOfCopies: |
|
317 SetNumberOfCopiesL( *iMsgWrappers[0] ); |
|
318 break; |
|
319 |
|
320 case EGetProtocolNamesCount: |
|
321 GetProtocolNamesCountL( *iMsgWrappers[0] ); |
|
322 break; |
|
323 |
|
324 case EGetProtocolName: |
|
325 GetProtocolNameL( *iMsgWrappers[0] ); |
|
326 break; |
|
327 |
|
328 default: |
|
329 LOG1("[CDirectPrintSession::ServiceThirdPartL]\t Method reached to an end with index: %d", aIndex); |
|
330 break; |
|
331 } |
|
332 } |
|
333 |
|
334 |
|
335 void CDirectPrintSession::CountConnectionsL( TDpMessage& aMessage ) |
|
336 { |
|
337 TInt count = Server().SessionCount(); |
|
338 TPckgC<TInt> countDes( count ); |
|
339 aMessage.WriteL( 0, countDes ); |
|
340 aMessage.SetDisposable( ETrue ); |
|
341 aMessage.Complete( KErrNone ); |
|
342 } |
|
343 |
|
344 void CDirectPrintSession::SetForegroundL( TDpMessage& aMessage ) |
|
345 { |
|
346 TInt fg = aMessage.Int0(); |
|
347 aMessage.SetDisposable( ETrue ); |
|
348 aMessage.Complete( KErrNone ); |
|
349 } |
|
350 |
|
351 void CDirectPrintSession::ReserveEngine( TDpMessage& aMessage ) |
|
352 { |
|
353 TInt err = Server().ReserveEngine( this ); |
|
354 aMessage.SetDisposable( ETrue ); |
|
355 aMessage.Complete( err ); |
|
356 } |
|
357 |
|
358 void CDirectPrintSession::ReleaseEngine( TDpMessage& aMessage ) |
|
359 { |
|
360 TInt err = Server().ReleaseEngine( this ); |
|
361 aMessage.SetDisposable( ETrue ); |
|
362 aMessage.Complete( err ); |
|
363 } |
|
364 |
|
365 void CDirectPrintSession::SupportedProtocols( TDpMessage& aMessage ) |
|
366 { |
|
367 TInt err = Server().ReserveEngine( this ); |
|
368 aMessage.SetDisposable( ETrue ); |
|
369 if( !err ) |
|
370 { |
|
371 TInt protocols = Server().Engine().SupportedProtocols(); |
|
372 aMessage.Complete( protocols ); |
|
373 } |
|
374 else |
|
375 { |
|
376 aMessage.Complete( err ); |
|
377 } |
|
378 } |
|
379 |
|
380 void CDirectPrintSession::GetNumPrintPages( TDpMessage& aMessage ) |
|
381 { |
|
382 TInt err = Server().ReserveEngine( this ); |
|
383 aMessage.SetDisposable( ETrue ); |
|
384 if( !err ) |
|
385 { |
|
386 TInt pages = Server().Engine().GetNumPrintPages(); |
|
387 aMessage.Complete( pages ); |
|
388 } |
|
389 else |
|
390 { |
|
391 aMessage.Complete( err ); |
|
392 } |
|
393 } |
|
394 |
|
395 void CDirectPrintSession::GetJobStatus( TDpMessage& aMessage ) |
|
396 { |
|
397 TInt err = Server().ReserveEngine( this ); |
|
398 aMessage.SetDisposable( ETrue ); |
|
399 if( !err ) |
|
400 { |
|
401 TInt status = Server().Engine().GetJobStatus(); |
|
402 aMessage.Complete( status ); |
|
403 } |
|
404 else |
|
405 { |
|
406 aMessage.Complete( err ); |
|
407 } |
|
408 } |
|
409 |
|
410 void CDirectPrintSession::GetPrinterStatus( TDpMessage& aMessage ) |
|
411 { |
|
412 TInt err = Server().ReserveEngine( this ); |
|
413 aMessage.SetDisposable( ETrue ); |
|
414 if( !err ) |
|
415 { |
|
416 TInt id = aMessage.Int0(); |
|
417 TInt status = Server().Engine().GetPrinterStatus( id ); |
|
418 aMessage.Complete( status ); |
|
419 } |
|
420 else |
|
421 { |
|
422 aMessage.Complete( err ); |
|
423 } |
|
424 } |
|
425 |
|
426 void CDirectPrintSession::CancelDiscovery( TDpMessage& aMessage ) |
|
427 { |
|
428 TInt err = Server().ReserveEngine( this ); |
|
429 if( !err ) |
|
430 { |
|
431 Server().Engine().CancelDiscovery(); |
|
432 } |
|
433 aMessage.SetDisposable( ETrue ); |
|
434 aMessage.Complete( err ); |
|
435 } |
|
436 |
|
437 void CDirectPrintSession::SubmitPrintJobL( TDpMessage& aMessage ) |
|
438 { |
|
439 TInt err = Server().ReserveEngine( this ); |
|
440 if( !err ) |
|
441 { |
|
442 Server().Engine().SubmitPrintJobL(); |
|
443 } |
|
444 aMessage.SetDisposable( ETrue ); |
|
445 aMessage.Complete( err ); |
|
446 } |
|
447 |
|
448 void CDirectPrintSession::CancelPrintJob( TDpMessage& aMessage ) |
|
449 { |
|
450 TInt err = Server().ReserveEngine( this ); |
|
451 if( !err ) |
|
452 { |
|
453 err = Server().Engine().CancelPrintJob(); |
|
454 } |
|
455 aMessage.SetDisposable( ETrue ); |
|
456 aMessage.Complete( err ); |
|
457 } |
|
458 |
|
459 void CDirectPrintSession::ContinuePrintJobL( TDpMessage& aMessage ) |
|
460 { |
|
461 TInt err = Server().ReserveEngine( this ); |
|
462 if( !err ) |
|
463 { |
|
464 err = Server().Engine().ContinuePrintJobL(); |
|
465 } |
|
466 aMessage.SetDisposable( ETrue ); |
|
467 aMessage.Complete( err ); |
|
468 } |
|
469 |
|
470 void CDirectPrintSession::RemoveCachedPrinterL( TDpMessage& aMessage ) |
|
471 { |
|
472 TInt err = Server().ReserveEngine( this ); |
|
473 if( !err ) |
|
474 { |
|
475 TInt id = aMessage.Int0(); |
|
476 err = Server().Engine().RemoveCachedPrinterL( id ); |
|
477 } |
|
478 aMessage.SetDisposable( ETrue ); |
|
479 aMessage.Complete( err ); |
|
480 } |
|
481 |
|
482 void CDirectPrintSession::GetJobTemplateIconL( TDpMessage& aMessage ) |
|
483 { |
|
484 TInt err = Server().ReserveEngine( this ); |
|
485 if( !err ) |
|
486 { |
|
487 TInt id = aMessage.Int0(); |
|
488 TInt handle; |
|
489 err = Server().Engine().GetJobTemplateIconL( id, handle ); |
|
490 TPckgC<TInt> handleDes( handle ); |
|
491 aMessage.WriteL( 1, handleDes ); |
|
492 } |
|
493 aMessage.SetDisposable( ETrue ); |
|
494 aMessage.Complete( err ); |
|
495 } |
|
496 |
|
497 void CDirectPrintSession::GetNumPreviewPages( TDpMessage& aMessage ) |
|
498 { |
|
499 TInt err = Server().ReserveEngine( this ); |
|
500 aMessage.SetDisposable( ETrue ); |
|
501 if( !err ) |
|
502 { |
|
503 TInt num = Server().Engine().GetNumPreviewPages(); |
|
504 aMessage.Complete( num ); |
|
505 } |
|
506 else |
|
507 { |
|
508 aMessage.Complete( err ); |
|
509 } |
|
510 } |
|
511 |
|
512 void CDirectPrintSession::SetJobSettingL( TDpMessage& aMessage ) |
|
513 { |
|
514 TInt err = Server().ReserveEngine( this ); |
|
515 if( !err ) |
|
516 { |
|
517 TInt capabilityID = aMessage.Int0(); |
|
518 TInt value = aMessage.Int1(); |
|
519 TInt affectedCapability; |
|
520 |
|
521 LOG2("CDirectPrintSession::SetJobSettingL || capabilityID = %d, value = %d", capabilityID, value ); |
|
522 |
|
523 err = Server().Engine().SetJobSettingL( capabilityID, value, affectedCapability ); |
|
524 TPckgC<TInt> affectedCapabilityDes( affectedCapability ); |
|
525 aMessage.WriteL( 2, affectedCapabilityDes ); |
|
526 } |
|
527 aMessage.SetDisposable( ETrue ); |
|
528 aMessage.Complete( err ); |
|
529 } |
|
530 |
|
531 void CDirectPrintSession::GetJobSettingL( TDpMessage& aMessage ) |
|
532 { |
|
533 TInt err = Server().ReserveEngine( this ); |
|
534 if( !err ) |
|
535 { |
|
536 TInt capabilityID = aMessage.Int0(); |
|
537 TInt value; |
|
538 err = Server().Engine().GetJobSetting( capabilityID, value ); |
|
539 TPckgC<TInt> valueDes( value ); |
|
540 aMessage.WriteL( 1, valueDes ); |
|
541 } |
|
542 aMessage.SetDisposable( ETrue ); |
|
543 aMessage.Complete( err ); |
|
544 } |
|
545 |
|
546 void CDirectPrintSession::GetPrinterCapabilityL( TDpMessage& aMessage ) |
|
547 { |
|
548 TInt err = Server().ReserveEngine( this ); |
|
549 if( !err ) |
|
550 { |
|
551 TInt printerID = aMessage.Int0(); |
|
552 TInt capabilityID = aMessage.Int1(); |
|
553 err = Server().Engine().GetPrinterCapabilityL( printerID, capabilityID, iCapability ); |
|
554 } |
|
555 aMessage.SetDisposable( ETrue ); |
|
556 aMessage.Complete( err ); |
|
557 } |
|
558 |
|
559 void CDirectPrintSession::GetPrinterCapIdL( TDpMessage& aMessage ) |
|
560 { |
|
561 TInt err = Server().ReserveEngine( this ); |
|
562 if( !err ) |
|
563 { |
|
564 TPckgC<TInt> capIdDes( iCapability.iCapabilityID ); |
|
565 aMessage.WriteL( 0, capIdDes ); |
|
566 } |
|
567 aMessage.SetDisposable( ETrue ); |
|
568 aMessage.Complete( err ); |
|
569 } |
|
570 |
|
571 void CDirectPrintSession::GetPrinterCapTypeL( TDpMessage& aMessage ) |
|
572 { |
|
573 TInt err = Server().ReserveEngine( this ); |
|
574 if( !err ) |
|
575 { |
|
576 TPckgC<TInt> typeDes( iCapability.iType ); |
|
577 aMessage.WriteL( 0, typeDes ); |
|
578 } |
|
579 aMessage.SetDisposable( ETrue ); |
|
580 aMessage.Complete( err ); |
|
581 } |
|
582 |
|
583 void CDirectPrintSession::GetPrinterCapDefL( TDpMessage& aMessage ) |
|
584 { |
|
585 TInt err = Server().ReserveEngine( this ); |
|
586 if( !err ) |
|
587 { |
|
588 TPckgC<TInt> defDes( iCapability.iDefaultValue ); |
|
589 aMessage.WriteL( 0, defDes ); |
|
590 } |
|
591 aMessage.SetDisposable( ETrue ); |
|
592 aMessage.Complete( err ); |
|
593 } |
|
594 |
|
595 void CDirectPrintSession::GetPrinterCapLowL( TDpMessage& aMessage ) |
|
596 { |
|
597 TInt err = Server().ReserveEngine( this ); |
|
598 if( !err ) |
|
599 { |
|
600 TPckgC<TInt> lowDes( iCapability.iLow ); |
|
601 aMessage.WriteL( 0, lowDes ); |
|
602 } |
|
603 aMessage.SetDisposable( ETrue ); |
|
604 aMessage.Complete( err ); |
|
605 } |
|
606 |
|
607 void CDirectPrintSession::GetPrinterCapHighL( TDpMessage& aMessage ) |
|
608 { |
|
609 TInt err = Server().ReserveEngine( this ); |
|
610 if( !err ) |
|
611 { |
|
612 TPckgC<TInt> highDes( iCapability.iHigh ); |
|
613 aMessage.WriteL( 0, highDes ); |
|
614 } |
|
615 aMessage.SetDisposable( ETrue ); |
|
616 aMessage.Complete( err ); |
|
617 } |
|
618 |
|
619 void CDirectPrintSession::GetPrinterCapEnumCountL( TDpMessage& aMessage ) |
|
620 { |
|
621 TInt err = Server().ReserveEngine( this ); |
|
622 if( !err ) |
|
623 { |
|
624 TPckgC<TInt> countDes( iCapability.iEnumCount ); |
|
625 aMessage.WriteL( 0, countDes ); |
|
626 } |
|
627 aMessage.SetDisposable( ETrue ); |
|
628 aMessage.Complete( err ); |
|
629 } |
|
630 |
|
631 void CDirectPrintSession::GetPrinterCapEnumL( TDpMessage& aMessage ) |
|
632 { |
|
633 TInt err = Server().ReserveEngine( this ); |
|
634 if( !err ) |
|
635 { |
|
636 TInt index = aMessage.Int0(); |
|
637 TPckgC<TInt> enumDes( iCapability.iEnumCodes[index] ); |
|
638 aMessage.WriteL( 1, enumDes ); |
|
639 } |
|
640 aMessage.SetDisposable( ETrue ); |
|
641 aMessage.Complete( err ); |
|
642 } |
|
643 |
|
644 |
|
645 void CDirectPrintSession::GetPrinterCapabilityIDsCountL( TDpMessage& aMessage ) |
|
646 { |
|
647 TInt err = Server().ReserveEngine( this ); |
|
648 if( !err ) |
|
649 { |
|
650 iCapabilityIDs.Reset(); |
|
651 TInt printerID = aMessage.Int0(); |
|
652 err = Server().Engine().GetPrinterCapabilityIDsL( printerID, iCapabilityIDs ); |
|
653 if( !err ) |
|
654 { |
|
655 TInt count = iCapabilityIDs.Count(); |
|
656 TPckgC<TInt> countDes( count ); |
|
657 aMessage.WriteL( 1, countDes ); |
|
658 } |
|
659 } |
|
660 aMessage.SetDisposable( ETrue ); |
|
661 aMessage.Complete( err ); |
|
662 } |
|
663 |
|
664 void CDirectPrintSession::GetPrinterCapabilityIDL( TDpMessage& aMessage ) |
|
665 { |
|
666 TInt err = Server().ReserveEngine( this ); |
|
667 if( !err ) |
|
668 { |
|
669 TInt index = aMessage.Int0(); |
|
670 TInt id = iCapabilityIDs[index]; |
|
671 TPckgC<TInt> idDes( id ); |
|
672 aMessage.WriteL( 1, idDes ); |
|
673 } |
|
674 aMessage.SetDisposable( ETrue ); |
|
675 aMessage.Complete( err ); |
|
676 } |
|
677 |
|
678 void CDirectPrintSession::RegisterIdleObserverL( TDpMessage& aMessage ) |
|
679 { |
|
680 aMessage.SetDisposable( ETrue ); |
|
681 aMessage.Complete( KErrNotSupported ); |
|
682 } |
|
683 |
|
684 void CDirectPrintSession::CancelRegisterIdleObserverL( TDpMessage& aMessage ) |
|
685 { |
|
686 aMessage.SetDisposable( ETrue ); |
|
687 aMessage.Complete( KErrNotSupported ); |
|
688 } |
|
689 |
|
690 void CDirectPrintSession::StartDiscoveryL( TDpMessage& aMessage ) |
|
691 { |
|
692 aMessage.SetDisposable( ETrue ); |
|
693 aMessage.Complete( KErrNotSupported ); |
|
694 } |
|
695 |
|
696 void CDirectPrintSession::ContinueDiscoveryL( TDpMessage& aMessage ) |
|
697 { |
|
698 aMessage.SetDisposable( ETrue ); |
|
699 aMessage.Complete( KErrNotSupported ); |
|
700 } |
|
701 |
|
702 void CDirectPrintSession::PrepareJobL( TDpMessage& aMessage ) |
|
703 { |
|
704 iJobGuard->PrepareL( aMessage ); |
|
705 aMessage.SetDisposable( ETrue ); |
|
706 aMessage.Complete( KErrNone ); |
|
707 } |
|
708 |
|
709 void CDirectPrintSession::CreateJobL( TDpMessage& aMessage ) |
|
710 { |
|
711 TInt err = iJobGuard->CreateL( aMessage ); |
|
712 aMessage.SetDisposable( ETrue ); |
|
713 aMessage.Complete( err ); |
|
714 } |
|
715 |
|
716 void CDirectPrintSession::ContinueCreateJobL( TDpMessage& aMessage ) |
|
717 { |
|
718 iJobGuard->ContinueCreateL( aMessage ); |
|
719 } |
|
720 |
|
721 void CDirectPrintSession::CancelStartDiscoveryL( TDpMessage& aMessage ) |
|
722 { |
|
723 aMessage.SetDisposable( ETrue ); |
|
724 aMessage.Complete( KErrNotSupported ); |
|
725 } |
|
726 |
|
727 void CDirectPrintSession::CancelCreateJobL( TDpMessage& aMessage ) |
|
728 { |
|
729 TInt err = Server().ReserveEngine( this ); |
|
730 if( !err ) |
|
731 { |
|
732 iJobGuard->Stop(); |
|
733 } |
|
734 aMessage.SetDisposable( ETrue ); |
|
735 aMessage.Complete( err ); |
|
736 } |
|
737 |
|
738 void CDirectPrintSession::IsPictBridgeModeL( TDpMessage& aMessage ) |
|
739 { |
|
740 #ifdef _DIRECTPRINT_USE_USB |
|
741 RUsb usbManager; |
|
742 TUsbDeviceState dState; |
|
743 TInt personality; |
|
744 TInt err = EFalse; |
|
745 User::LeaveIfError( usbManager.Connect()); |
|
746 User::LeaveIfError( usbManager.GetDeviceState(dState)); |
|
747 User::LeaveIfError( usbManager.GetCurrentPersonalityId(personality)); |
|
748 usbManager.Close(); |
|
749 |
|
750 /* |
|
751 * If there is some problems with pictbridge, check from usbpersonalityids.h that constants haven't been changed. |
|
752 */ |
|
753 if( dState == EUsbDeviceStateConfigured && personality == KUsbPersonalityIdMTP ) |
|
754 err = ETrue; |
|
755 |
|
756 aMessage.SetDisposable( ETrue ); |
|
757 aMessage.Complete( err ); |
|
758 #else |
|
759 aMessage.SetDisposable( EFalse ); |
|
760 aMessage.Complete( EFalse ); |
|
761 #endif // _DIRECTPRINT_USE_USB |
|
762 } |
|
763 |
|
764 void CDirectPrintSession::SetNumberOfCopiesCountL( TDpMessage& aMessage ) |
|
765 { |
|
766 LOG("CDirectPrintSession::CheckNumberOfCopiesL begin"); |
|
767 TInt count = aMessage.Int0(); |
|
768 LOG1("CDirectPrintSession::CheckNumberOfCopiesL count: %d", count); |
|
769 TInt err = ( count > 0 ) ? KErrNone : KErrInvalidData; |
|
770 if( !err ) |
|
771 { |
|
772 iNumOfCopies->Reset( count ); |
|
773 } |
|
774 LOG1("CDirectPrintSession::CheckNumberOfCopiesL return: %d", err); |
|
775 aMessage.SetDisposable( ETrue ); |
|
776 aMessage.Complete( err ); |
|
777 } |
|
778 |
|
779 void CDirectPrintSession::SetNumberOfCopiesL( TDpMessage& aMessage ) |
|
780 { |
|
781 LOG("CDirectPrintSession::SetNumberOfCopiesL begin"); |
|
782 TInt copies = aMessage.Int0(); |
|
783 LOG1("CDirectPrintSession::SetNumberOfCopiesL copies: %d", copies); |
|
784 TInt err = ( copies < 0 ) ? KErrInvalidData : KErrNone; |
|
785 if( !err ) |
|
786 { |
|
787 TBool full; |
|
788 iNumOfCopies->AddNumOfCopyL( copies, full ); |
|
789 LOG1("CDirectPrintSession::SetNumberOfCopiesL full: %d", full); |
|
790 if( full ) |
|
791 { |
|
792 Server().Engine().SetNumsOfCopiesL( iNumOfCopies->NumsOfCopies(), err ); |
|
793 } |
|
794 } |
|
795 LOG1("CDirectPrintSession::SetNumberOfCopiesL return: %d", err); |
|
796 aMessage.SetDisposable( ETrue ); |
|
797 aMessage.Complete( err ); |
|
798 } |
|
799 |
|
800 void CDirectPrintSession::GetProtocolNamesCountL( TDpMessage& aMessage ) |
|
801 { |
|
802 TInt err = Server().ReserveEngine( this ); |
|
803 if( !err ) |
|
804 { |
|
805 TPckgC<TInt> count( Server().Engine().ProtocolCount() ); |
|
806 aMessage.WriteL( 0, count ); |
|
807 } |
|
808 aMessage.SetDisposable( ETrue ); |
|
809 aMessage.Complete( err ); |
|
810 } |
|
811 |
|
812 void CDirectPrintSession::GetProtocolNameL( TDpMessage& aMessage ) |
|
813 { |
|
814 TInt err = Server().ReserveEngine( this ); |
|
815 if( !err ) |
|
816 { |
|
817 err = Server().Engine().GetProtocolNameL( aMessage ); |
|
818 } |
|
819 aMessage.SetDisposable( ETrue ); |
|
820 aMessage.Complete( err ); |
|
821 } |
|
822 |
|
823 // End of File |