107 else |
107 else |
108 { |
108 { |
109 HbMessageBox::information("Saved succesfully"); |
109 HbMessageBox::information("Saved succesfully"); |
110 QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully") |
110 QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully") |
111 } |
111 } |
112 |
112 |
113 delete fileName; |
|
114 |
|
115 QDEBUG_WRITE("RingBcPrivate::saveTone : Exit") |
113 QDEBUG_WRITE("RingBcPrivate::saveTone : Exit") |
116 } |
114 } |
117 |
115 |
118 // ---------------------------------------------------------------------------- |
116 // ---------------------------------------------------------------------------- |
119 // RingBcPrivate::saveToneL |
117 // RingBcPrivate::saveToneL |
120 // @see ringbc_p.h |
118 // @see ringbc_p.h |
121 // ---------------------------------------------------------------------------- |
119 // ---------------------------------------------------------------------------- |
122 int RingBcPrivate::saveToneL(const TDesC& aFileName) |
120 void RingBcPrivate::saveToneL(const QString& path) |
123 { |
121 { |
124 QDEBUG_WRITE("RingBcPrivate::saveToneL : Enter") |
122 QDEBUG_WRITE("RingBcPrivate::saveToneL : Enter") |
125 |
123 |
|
124 QStringList pathList = path.split("."); |
|
125 QString extension = QString(".") + pathList.at(pathList.count() - 1); |
|
126 |
|
127 RFs fsSession; |
|
128 User::LeaveIfError(fsSession.Connect()); |
|
129 |
|
130 CleanupClosePushL(fsSession); |
|
131 |
|
132 HBufC* fileName = XQConversions::qStringToS60Desc(path); |
|
133 |
|
134 RFile file; |
|
135 User::LeaveIfError(file.Open(fsSession, fileName->Des(), |
|
136 EFileShareReadersOnly)); |
|
137 |
|
138 CleanupClosePushL(file); |
|
139 TInt size; |
|
140 User::LeaveIfError(file.Size(size)); |
|
141 |
|
142 HBufC8* dataBuf = HBufC8::NewLC(size); |
|
143 TPtr8 data(dataBuf->Des()); |
|
144 User::LeaveIfError(file.Read(data, size)); |
|
145 |
|
146 TBool valid = mConverter->IsRingToneMimeTypeL(data); |
|
147 |
|
148 if (valid) |
|
149 { |
|
150 HBufC* title = mConverter->TitleLC(data); |
|
151 TFileName path = PathInfo::PhoneMemoryRootPath(); |
|
152 path.Append(PathInfo::SimpleSoundsPath()); |
|
153 path.Append(*title); |
|
154 HBufC* fileExtension = XQConversions::qStringToS60Desc(extension); |
|
155 path.Append(fileExtension->Des()); |
|
156 |
|
157 CFileMan* fileMan = CFileMan::NewL(fsSession); |
|
158 CleanupStack::PushL(fileMan); |
|
159 if(fileMan) |
|
160 { |
|
161 TInt err = fileMan->Copy(fileName->Des(), path, CFileMan::ECopy | CFileMan::EOverWrite); |
|
162 User::LeaveIfError(err); |
|
163 } |
|
164 CleanupStack::PopAndDestroy(2); // title,fileMan |
|
165 } |
|
166 |
|
167 CleanupStack::PopAndDestroy(); // dataBuf |
|
168 CleanupStack::PopAndDestroy(); //file |
|
169 CleanupStack::PopAndDestroy(); //fsSession |
|
170 |
|
171 QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit") |
|
172 } |
|
173 |
|
174 // ---------------------------------------------------------------------------- |
|
175 // RingBcPrivate::toneTitle |
|
176 // @see ringbc_p.h |
|
177 // ---------------------------------------------------------------------------- |
|
178 QString RingBcPrivate::toneTitle(const QString &path) |
|
179 { |
|
180 QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter") |
|
181 |
|
182 QString title; |
|
183 QStringList pathList = path.split("."); |
|
184 QString extension = pathList.at(pathList.count() - 1); |
|
185 |
|
186 HBufC* fileName = XQConversions::qStringToS60Desc(path); |
|
187 TRAP_IGNORE( title = titleL(*fileName)); |
|
188 |
|
189 title.append(QChar('.')); |
|
190 title.append(extension); |
|
191 |
|
192 QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit") |
|
193 return title; |
|
194 } |
|
195 |
|
196 // ---------------------------------------------------------------------------- |
|
197 // RingBcPrivate::titleL |
|
198 // @see ringbc_p.h |
|
199 // ---------------------------------------------------------------------------- |
|
200 QString RingBcPrivate::titleL(const TDesC& aFileName) |
|
201 { |
|
202 QDEBUG_WRITE("RingBcPrivate::titleL : Enter") |
|
203 |
|
204 QString title; // initialize to null string |
126 RFs fsSession; |
205 RFs fsSession; |
127 TInt error = fsSession.Connect(); |
206 TInt error = fsSession.Connect(); |
128 if( error == KErrNone) |
207 if (error == KErrNone) |
129 { |
208 { |
130 CleanupClosePushL(fsSession); |
209 CleanupClosePushL(fsSession); |
131 |
210 |
132 RFile file; |
211 RFile file; |
133 error = file.Open(fsSession,aFileName, EFileRead); |
212 error = file.Open(fsSession, aFileName, EFileRead); |
134 |
213 |
135 if(error == KErrNone) |
214 if (error == KErrNone) |
136 { |
215 { |
137 CleanupClosePushL(file); |
216 CleanupClosePushL(file); |
138 TInt size; |
217 TInt size; |
139 User::LeaveIfError(file.Size(size)); |
218 User::LeaveIfError(file.Size(size)); |
140 if (size) |
219 if (size) |
141 { |
220 { |
142 HBufC8* dataBuf = HBufC8::NewLC(size); |
221 HBufC8* dataBuf = HBufC8::NewLC(size); |
143 TPtr8 data(dataBuf->Des()); |
222 TPtr8 data(dataBuf->Des()); |
144 User::LeaveIfError(file.Read(data, size)); |
223 User::LeaveIfError(file.Read(data, size)); |
145 |
224 |
146 TBool valid = mConverter->IsRingToneMimeTypeL(data); |
225 TBool valid = mConverter->IsRingToneMimeTypeL(data); |
147 if(valid) |
226 if (valid) |
148 { |
227 { |
149 HBufC* title = mConverter->TitleLC(data); |
228 HBufC* toneTitle = mConverter->TitleLC(data); |
150 TFileName path = PathInfo::PhoneMemoryRootPath(); |
229 title = XQConversions::s60DescToQString(*toneTitle); |
151 path.Append( PathInfo::SimpleSoundsPath() ); |
230 CleanupStack::PopAndDestroy(); //title |
152 path.Append(*title); |
|
153 path.Append(KRingingToneFileExtension); |
|
154 |
|
155 CFileMan* fileMan = CFileMan::NewL(fsSession); |
|
156 CleanupStack::PushL( fileMan ); |
|
157 error = fileMan->Copy( file, path ); |
|
158 CleanupStack::PopAndDestroy(2); // title,fileMan |
|
159 } |
231 } |
160 else |
232 CleanupStack::PopAndDestroy(); //dataBuf |
161 { |
233 } |
162 error = KErrCorrupt; |
|
163 } |
|
164 CleanupStack::PopAndDestroy(); // dataBuf |
|
165 } |
|
166 CleanupStack::PopAndDestroy(); //file |
234 CleanupStack::PopAndDestroy(); //file |
167 } |
235 } |
168 CleanupStack::PopAndDestroy(); //fsSession |
236 CleanupStack::PopAndDestroy(); //fsSession |
169 } |
237 } |
170 |
238 QDEBUG_WRITE("RingBcPrivate::titleL : Exit") |
171 QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit") |
239 return title; |
172 return error; |
240 } |
173 } |
241 |
174 |
|
175 // ---------------------------------------------------------------------------- |
|
176 // RingBcPrivate::toneTitle |
|
177 // @see ringbc_p.h |
|
178 // ---------------------------------------------------------------------------- |
|
179 QString RingBcPrivate::toneTitle(const QString &path) |
|
180 { |
|
181 QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter") |
|
182 |
|
183 QString title; |
|
184 HBufC* fileName = S60QConversions::qStringToS60Desc(path); |
|
185 TRAP_IGNORE( title = titleL(*fileName)); |
|
186 |
|
187 QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit") |
|
188 return title; |
|
189 } |
|
190 |
|
191 // ---------------------------------------------------------------------------- |
|
192 // RingBcPrivate::titleL |
|
193 // @see ringbc_p.h |
|
194 // ---------------------------------------------------------------------------- |
|
195 QString RingBcPrivate::titleL(const TDesC& aFileName) |
|
196 { |
|
197 QDEBUG_WRITE("RingBcPrivate::titleL : Enter") |
|
198 |
|
199 QString title; // initialize to null string |
|
200 RFs fsSession; |
|
201 TInt error = fsSession.Connect(); |
|
202 if( error == KErrNone) |
|
203 { |
|
204 CleanupClosePushL(fsSession); |
|
205 |
|
206 RFile file; |
|
207 error = file.Open(fsSession,aFileName, EFileRead); |
|
208 |
|
209 if(error == KErrNone) |
|
210 { |
|
211 CleanupClosePushL(file); |
|
212 TInt size; |
|
213 User::LeaveIfError(file.Size(size)); |
|
214 if (size) |
|
215 { |
|
216 HBufC8* dataBuf = HBufC8::NewLC(size); |
|
217 TPtr8 data(dataBuf->Des()); |
|
218 User::LeaveIfError(file.Read(data, size)); |
|
219 |
|
220 TBool valid = mConverter->IsRingToneMimeTypeL(data); |
|
221 if(valid) |
|
222 { |
|
223 HBufC* toneTitle = mConverter->TitleLC(data); |
|
224 title = S60QConversions::s60DescToQString(*toneTitle); |
|
225 CleanupStack::PopAndDestroy(); //title |
|
226 } |
|
227 CleanupStack::PopAndDestroy(); //dataBuf |
|
228 } |
|
229 CleanupStack::PopAndDestroy(); //file |
|
230 } |
|
231 CleanupStack::PopAndDestroy(); //fsSession |
|
232 } |
|
233 QDEBUG_WRITE("RingBcPrivate::titleL : Exit") |
|
234 return title; |
|
235 } |
|
236 |
|
237 // End of File |
242 // End of File |