diff -r 84d9eb65b26f -r e4592d119491 messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp --- a/messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp Mon May 03 12:29:07 2010 +0300 +++ b/messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp Fri May 14 15:49:35 2010 +0300 @@ -80,11 +80,11 @@ void RingBcPrivate::saveTone(const QString &path) { QDEBUG_WRITE("RingBcPrivate::saveTone : Enter") - + int error(KErrNone); - HBufC* fileName = S60QConversions::qStringToS60Desc(path); - TRAP(error, error = saveToneL(*fileName)); - if(error) + + TRAP(error, saveToneL(path)); + if (error) { QDEBUG_WRITE_FORMAT("RingBcPrivate::saveTone Error code =",error) @@ -109,30 +109,110 @@ HbMessageBox::information("Saved succesfully"); QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully") } - - delete fileName; - + QDEBUG_WRITE("RingBcPrivate::saveTone : Exit") } - + // ---------------------------------------------------------------------------- // RingBcPrivate::saveToneL // @see ringbc_p.h // ---------------------------------------------------------------------------- -int RingBcPrivate::saveToneL(const TDesC& aFileName) +void RingBcPrivate::saveToneL(const QString& path) { QDEBUG_WRITE("RingBcPrivate::saveToneL : Enter") + + QStringList pathList = path.split("."); + QString extension = QString(".") + pathList.at(pathList.count() - 1); + + RFs fsSession; + User::LeaveIfError(fsSession.Connect()); + + CleanupClosePushL(fsSession); + + HBufC* fileName = S60QConversions::qStringToS60Desc(path); + + RFile file; + User::LeaveIfError(file.Open(fsSession, fileName->Des(), + EFileShareReadersOnly)); + + CleanupClosePushL(file); + TInt size; + User::LeaveIfError(file.Size(size)); + HBufC8* dataBuf = HBufC8::NewLC(size); + TPtr8 data(dataBuf->Des()); + User::LeaveIfError(file.Read(data, size)); + CleanupStack::PopAndDestroy(&file); + + TBool valid = mConverter->IsRingToneMimeTypeL(data); + + if (valid) + { + HBufC* title = mConverter->TitleLC(data); + TFileName path = PathInfo::PhoneMemoryRootPath(); + path.Append(PathInfo::SimpleSoundsPath()); + path.Append(*title); + HBufC* fileExtension = S60QConversions::qStringToS60Desc(extension); + path.Append(fileExtension->Des()); + + CFileMan* fileMan = CFileMan::NewL(fsSession); + CleanupStack::PushL(fileMan); + if(fileMan) + { + TInt err = fileMan->Copy(fileName->Des(), path, CFileMan::ECopy | CFileMan::EOverWrite); + User::LeaveIfError(err); + } + CleanupStack::PopAndDestroy(2); // title,fileMan + } + + CleanupStack::PopAndDestroy(); // dataBuf + CleanupStack::PopAndDestroy(); //fsSession + + + QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit") + } + +// ---------------------------------------------------------------------------- +// RingBcPrivate::toneTitle +// @see ringbc_p.h +// ---------------------------------------------------------------------------- +QString RingBcPrivate::toneTitle(const QString &path) + { + QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter") + + QString title; + QStringList pathList = path.split("."); + QString extension = pathList.at(pathList.count() - 1); + + HBufC* fileName = S60QConversions::qStringToS60Desc(path); + TRAP_IGNORE( title = titleL(*fileName)); + + title.append(QChar('.')); + title.append(extension); + + QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit") + return title; + } + +// ---------------------------------------------------------------------------- +// RingBcPrivate::titleL +// @see ringbc_p.h +// ---------------------------------------------------------------------------- +QString RingBcPrivate::titleL(const TDesC& aFileName) + { + QDEBUG_WRITE("RingBcPrivate::titleL : Enter") + + QString title; // initialize to null string RFs fsSession; TInt error = fsSession.Connect(); - if( error == KErrNone) + if (error == KErrNone) { CleanupClosePushL(fsSession); RFile file; - error = file.Open(fsSession,aFileName, EFileRead); + error = file.Open(fsSession, aFileName, EFileRead); - if(error == KErrNone) + if (error == KErrNone) { CleanupClosePushL(file); TInt size; @@ -141,97 +221,23 @@ { HBufC8* dataBuf = HBufC8::NewLC(size); TPtr8 data(dataBuf->Des()); - User::LeaveIfError(file.Read(data, size)); - - TBool valid = mConverter->IsRingToneMimeTypeL(data); - if(valid) - { - HBufC* title = mConverter->TitleLC(data); - TFileName path = PathInfo::PhoneMemoryRootPath(); - path.Append( PathInfo::SimpleSoundsPath() ); - path.Append(*title); - path.Append(KRingingToneFileExtension); + User::LeaveIfError(file.Read(data, size)); - CFileMan* fileMan = CFileMan::NewL(fsSession); - CleanupStack::PushL( fileMan ); - error = fileMan->Copy( file, path ); - CleanupStack::PopAndDestroy(2); // title,fileMan + TBool valid = mConverter->IsRingToneMimeTypeL(data); + if (valid) + { + HBufC* toneTitle = mConverter->TitleLC(data); + title = S60QConversions::s60DescToQString(*toneTitle); + CleanupStack::PopAndDestroy(); //title } - else - { - error = KErrCorrupt; - } - CleanupStack::PopAndDestroy(); // dataBuf - } + CleanupStack::PopAndDestroy(); //dataBuf + } CleanupStack::PopAndDestroy(); //file } CleanupStack::PopAndDestroy(); //fsSession } - - QDEBUG_WRITE("RingBcPrivate::saveToneL : Exit") - return error; + QDEBUG_WRITE("RingBcPrivate::titleL : Exit") + return title; } -// ---------------------------------------------------------------------------- -// RingBcPrivate::toneTitle -// @see ringbc_p.h -// ---------------------------------------------------------------------------- - QString RingBcPrivate::toneTitle(const QString &path) - { - QDEBUG_WRITE("RingBcPrivate::toneTitle : Enter") - - QString title; - HBufC* fileName = S60QConversions::qStringToS60Desc(path); - TRAP_IGNORE( title = titleL(*fileName)); - - QDEBUG_WRITE("RingBcPrivate::toneTitle : Exit") - return title; - } - - // ---------------------------------------------------------------------------- - // RingBcPrivate::titleL - // @see ringbc_p.h - // ---------------------------------------------------------------------------- - QString RingBcPrivate::titleL(const TDesC& aFileName) - { - QDEBUG_WRITE("RingBcPrivate::titleL : Enter") - - QString title; // initialize to null string - RFs fsSession; - TInt error = fsSession.Connect(); - if( error == KErrNone) - { - CleanupClosePushL(fsSession); - - RFile file; - error = file.Open(fsSession,aFileName, EFileRead); - - if(error == KErrNone) - { - CleanupClosePushL(file); - TInt size; - User::LeaveIfError(file.Size(size)); - if (size) - { - HBufC8* dataBuf = HBufC8::NewLC(size); - TPtr8 data(dataBuf->Des()); - User::LeaveIfError(file.Read(data, size)); - - TBool valid = mConverter->IsRingToneMimeTypeL(data); - if(valid) - { - HBufC* toneTitle = mConverter->TitleLC(data); - title = S60QConversions::s60DescToQString(*toneTitle); - CleanupStack::PopAndDestroy(); //title - } - CleanupStack::PopAndDestroy(); //dataBuf - } - CleanupStack::PopAndDestroy(); //file - } - CleanupStack::PopAndDestroy(); //fsSession - } - QDEBUG_WRITE("RingBcPrivate::titleL : Exit") - return title; - } - // End of File