1 /* |
|
2 * Copyright (c) 2004-2007 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 |
|
19 #include <AiwMenu.h> |
|
20 #include <AiwCommon.h> |
|
21 #include <AiwCommon.hrh> |
|
22 #include <coemain.h> |
|
23 #include <barsread.h> |
|
24 #include <aiwprintingprovider.rsg> |
|
25 #include <e32property.h> |
|
26 #include <s32strm.h> |
|
27 #include <badesca.h> |
|
28 #include <s32file.h> |
|
29 #include <f32file.h> |
|
30 #include <apacmdln.h> |
|
31 #include <apgtask.h> |
|
32 #include <apaid.h> |
|
33 #include <apgcli.h> |
|
34 #include <w32std.h> |
|
35 #include <bautils.h> |
|
36 #include <eikenv.h> |
|
37 |
|
38 #include "clog.h" |
|
39 #include "caiwprintpreviewprovider.h" |
|
40 #include "aiwprintingprovider.hrh" |
|
41 #include "caiwimageprintif.h" |
|
42 #include "imageprint.h" |
|
43 #include "cimgpprintutils.h" |
|
44 |
|
45 CAiwPrintPreviewProvider* CAiwPrintPreviewProvider::NewL() |
|
46 { |
|
47 |
|
48 CAiwPrintPreviewProvider* self = new( ELeave ) CAiwPrintPreviewProvider; |
|
49 CleanupStack::PushL( self ); |
|
50 self->ConstructL(); |
|
51 CleanupStack::Pop( self ); |
|
52 return self; |
|
53 } |
|
54 |
|
55 CAiwPrintPreviewProvider::~CAiwPrintPreviewProvider() |
|
56 { |
|
57 delete iService; |
|
58 } |
|
59 |
|
60 void CAiwPrintPreviewProvider::InitialiseL( MAiwNotifyCallback& /*aFrameworkCallback*/, |
|
61 const RCriteriaArray& /*aInterest*/ ) |
|
62 { |
|
63 } |
|
64 |
|
65 |
|
66 void CAiwPrintPreviewProvider::HandleServiceCmdL(const TInt& aCmdId, |
|
67 const CAiwGenericParamList& aInParamList, |
|
68 CAiwGenericParamList& aOutParamList, |
|
69 TUint /*aCmdOptions*/, |
|
70 const MAiwNotifyCallback* aCallback) |
|
71 |
|
72 { |
|
73 if ( aCmdId == KAiwCmdPrintPreview || aCmdId == KAiwCmdPrint ) |
|
74 { |
|
75 HandleLaunchRequestL( aInParamList, aOutParamList, aCallback ); |
|
76 LaunchImagePrintApplicationL(); |
|
77 } |
|
78 } |
|
79 |
|
80 |
|
81 |
|
82 void CAiwPrintPreviewProvider::InitializeMenuPaneL |
|
83 ( CAiwMenuPane& aMenuPane, TInt aIndex, |
|
84 TInt /*aCascadeId*/, const CAiwGenericParamList& aInParamList ) |
|
85 { |
|
86 |
|
87 if ( IsPrintingSupportedL( aInParamList ) ) |
|
88 { |
|
89 LOG("CAiwPrintPreviewProvider::InitializeMenuPaneL 1"); |
|
90 TResourceReader reader; |
|
91 iEikEnv.CreateResourceReaderLC |
|
92 ( reader, R_AIW_PREVIEW_PRINTING_PROVIDER_MENU ); |
|
93 aMenuPane.AddMenuItemsL( reader, KAiwCmdPrint, aIndex ); |
|
94 CleanupStack::PopAndDestroy(); // reader |
|
95 LOG("CAiwPrintPreviewProvider::InitializeMenuPaneL 2"); |
|
96 } |
|
97 |
|
98 } |
|
99 |
|
100 void CAiwPrintPreviewProvider::HandleMenuCmdL |
|
101 ( TInt aMenuCmdId, const CAiwGenericParamList& aInParamList, |
|
102 CAiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/, |
|
103 const MAiwNotifyCallback* aCallback) |
|
104 { |
|
105 if ( aMenuCmdId == KAiwCmdPrintPreview || aMenuCmdId == KAiwCmdPrint ) |
|
106 { |
|
107 HandleLaunchRequestL( aInParamList, aOutParamList, aCallback ); |
|
108 LaunchImagePrintApplicationL(); |
|
109 } |
|
110 } |
|
111 |
|
112 void CAiwPrintPreviewProvider::HandleLaunchRequestL |
|
113 (const CAiwGenericParamList& aInParamList, |
|
114 CAiwGenericParamList& aOutParamList, |
|
115 const MAiwNotifyCallback* aCallback) |
|
116 { |
|
117 iConsumerInParamList = &aInParamList; |
|
118 iConsumerOutParamList = &aOutParamList; |
|
119 iConsumerCallback = aCallback; |
|
120 |
|
121 TFileName paramFile; |
|
122 CIMGPPrintUtils::GetDataFilePathL( paramFile ); |
|
123 |
|
124 RFileWriteStream writeStream; |
|
125 User::LeaveIfError( writeStream.Replace( iEikEnv.FsSession(), paramFile, EFileWrite) ); |
|
126 writeStream.PushL(); |
|
127 aInParamList.ExternalizeL( writeStream ); |
|
128 writeStream.CommitL(); |
|
129 CleanupStack::PopAndDestroy( &writeStream ); |
|
130 |
|
131 TInt err = RProperty::Define( KPrintPropertyCat, EPrintProperty, RProperty::EInt ); |
|
132 |
|
133 if ( err != KErrAlreadyExists ) |
|
134 { |
|
135 User::LeaveIfError( err ); |
|
136 } |
|
137 RProperty::Set( KPrintPropertyCat,EPrintProperty,EAiwPrintCall ); |
|
138 } |
|
139 |
|
140 void CAiwPrintPreviewProvider::LaunchImagePrintApplicationL() |
|
141 { |
|
142 TUid appuid; |
|
143 appuid.iUid = 0x101FFA84; |
|
144 TRAPD( err, iService = CAknLaunchAppService::NewL( appuid, this, NULL ) ); |
|
145 if ( err != KErrNone ) |
|
146 { |
|
147 LOG1("CAiwPrintPreviewProvider::LaunchImagePrintApplicationL failed with: %d", err); |
|
148 } |
|
149 } |
|
150 |
|
151 void CAiwPrintPreviewProvider::HandleServerAppExit( TInt aReason ) |
|
152 { |
|
153 delete iService; |
|
154 iService = NULL; |
|
155 |
|
156 LOG1("CAiwPrintPreviewProvider::HandleServerAppExit: %d", aReason); |
|
157 |
|
158 // In the case that we want to exit also the parent application, |
|
159 // ImagePrint is exited with User::Exit() which is seen here as |
|
160 // KErrServerTerminated (-15). |
|
161 if( iConsumerInParamList && iConsumerOutParamList && iConsumerCallback && iConsumerCallback ) |
|
162 { |
|
163 // Const cast is used to fix weirdness in AIW header files. MWaiNotifyCallback |
|
164 // does not define any const function but CAiwServiceIfMenu interface provides |
|
165 // const callback object. |
|
166 TRAP_IGNORE( const_cast<MAiwNotifyCallback*>(iConsumerCallback)->HandleNotifyL( |
|
167 KAiwCmdPrintPreview, KAiwEventCompleted, |
|
168 *iConsumerOutParamList, *iConsumerInParamList )); |
|
169 iConsumerInParamList = NULL; |
|
170 iConsumerOutParamList = NULL; |
|
171 iConsumerCallback = NULL; |
|
172 } |
|
173 if ( aReason == KErrServerTerminated ) |
|
174 { |
|
175 User::Exit( 0 ); |
|
176 } |
|
177 } |
|
178 |
|
179 // End of File |
|