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