diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2012-04-16 22:25:35 +1000 |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2012-04-16 22:25:35 +1000 |
commit | 66364f400dddae6bb90af3f9a3e8ed970a6516a7 (patch) | |
tree | e3db46d164680e23e2fa0493c7ff3fc8c2cbc1a9 | |
parent | f7a5e65ab112ca597758038837d99b046c4d4539 (diff) | |
parent | ae7744f7085bf274b98e21c760f674ba7bc1c6c0 (diff) |
Merge branch 'master' of scm.dev.nokia.troll.no:qtmobility/qtm-systeminfo into master-integration
* 'master' of scm.dev.nokia.troll.no:qtmobility/qtm-systeminfo:
Fix QGalleryQueryRequest::setMetaData does not work on Symbian
Fix messaging engine (CMTMEngine) cleanup stack usage on Symbian
bluetooth: fix sending memory object through QBluetoothTransferManager
-rw-r--r-- | src/connectivity/bluetooth/qbluetoothtransferreply_symbian.cpp | 52 | ||||
-rw-r--r-- | src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h | 2 | ||||
-rw-r--r-- | src/gallery/symbian/qmdegalleryresultset.cpp | 29 | ||||
-rw-r--r-- | src/gallery/symbian/qmdesession.cpp | 8 | ||||
-rw-r--r-- | src/gallery/symbian/qmdesession_p.h | 1 | ||||
-rw-r--r-- | src/messaging/qmtmengine_symbian.cpp | 24 |
6 files changed, 63 insertions, 53 deletions
diff --git a/src/connectivity/bluetooth/qbluetoothtransferreply_symbian.cpp b/src/connectivity/bluetooth/qbluetoothtransferreply_symbian.cpp index 4853cba74f..76ff11a559 100644 --- a/src/connectivity/bluetooth/qbluetoothtransferreply_symbian.cpp +++ b/src/connectivity/bluetooth/qbluetoothtransferreply_symbian.cpp @@ -58,6 +58,7 @@ QBluetoothTransferReplySymbian::QBluetoothTransferReplySymbian(QIODevice *input, : QBluetoothTransferReply(parent) , CActive(EPriorityStandard) , m_source(input) + , m_tempfilename(QString()) , m_discoveryAgent(NULL) , m_running(false) , m_finished(false) @@ -90,6 +91,8 @@ QBluetoothTransferReplySymbian::~QBluetoothTransferReplySymbian() delete m_discoveryAgent; delete m_object; delete m_client; + if (!m_tempfilename.isEmpty()) + QFile::remove(m_tempfilename); } void QBluetoothTransferReplySymbian::setAddress(const QBluetoothAddress &address) @@ -197,6 +200,10 @@ void QBluetoothTransferReplySymbian::abort() m_client = NULL; delete m_object; m_object = NULL; + if (!m_tempfilename.isEmpty()) { + QFile::remove(m_tempfilename); + m_tempfilename = QString(); + } } QBluetoothTransferReply::TransferError QBluetoothTransferReplySymbian::error() const @@ -241,10 +248,14 @@ void QBluetoothTransferReplySymbian::RunL() m_fileSize = info.size(); filename = QDir::toNativeSeparators(info.absoluteFilePath()); } else { - if (copyToTempFile(m_tempfile, m_source)) { - QFileInfo info(*m_tempfile); - m_fileSize = info.size(); - filename = QDir::toNativeSeparators(info.absoluteFilePath()); + QTemporaryFile tempfile(QLatin1String("BT")); + m_tempfilename = QString(); + if (tempfile.open() && copyToTempFile(&tempfile, m_source)) { + QFileInfo info(tempfile); + m_fileSize = info.size(); + m_tempfilename = QDir::toNativeSeparators(info.absoluteFilePath()); + filename = m_tempfilename; + tempfile.setAutoRemove(false); // the file will be deleted when sending is complete } else { m_state = EDisconnecting; disconnect(); @@ -279,18 +290,19 @@ void QBluetoothTransferReplySymbian::sendObject(QString filename) TRAPD(err, m_object = CObexFileObject::NewL()); if (!err) { TPtrC16 str(reinterpret_cast<const TUint16*>(filename.utf16())); - TRAPD(error, m_object->InitFromFileL( str )); - if (!error) { - m_client->Put( *m_object, iStatus ); - m_timer->start(1000); - emit uploadProgress(0, m_fileSize); - SetActive(); - } else { - qDebug() << "Error in" << __FUNCTION__ << error; - m_error = error == KErrNotFound ? FileNotFoundError: UnknownError; - disconnect(); - emit finished(this); - } + TRAP(err, m_object->InitFromFileL(str)); + } + + if (!err) { + m_client->Put( *m_object, iStatus ); + m_timer->start(1000); + emit uploadProgress(0, m_fileSize); + SetActive(); + } else { + qDebug() << "Error in" << __FUNCTION__ << err; + m_error = err == KErrNotFound ? FileNotFoundError: UnknownError; + disconnect(); + emit finished(this); } } @@ -301,6 +313,10 @@ void QBluetoothTransferReplySymbian::disconnect() m_timer->stop(); delete m_object; m_object = NULL; + if (!m_tempfilename.isEmpty()) { + QFile::remove(m_tempfilename); + m_tempfilename = QString(); + } m_client->Disconnect( iStatus ); SetActive(); } @@ -309,10 +325,12 @@ void QBluetoothTransferReplySymbian::disconnect() bool QBluetoothTransferReplySymbian::copyToTempFile(QIODevice *to, QIODevice *from) { char *block = new char[4096]; - + from->seek(0); + while (!from->atEnd()) { int size = from->read(block, 4096); if (size != to->write(block, size)) { + delete[] block; return false; } } diff --git a/src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h b/src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h index 894bc60a0a..b9ef8ea140 100644 --- a/src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h +++ b/src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h @@ -117,7 +117,7 @@ private slots: private: QIODevice *m_source; - QTemporaryFile *m_tempfile; + QString m_tempfilename; QBluetoothAddress m_address; QBluetoothServiceDiscoveryAgent* m_discoveryAgent; diff --git a/src/gallery/symbian/qmdegalleryresultset.cpp b/src/gallery/symbian/qmdegalleryresultset.cpp index 0eb2d88a80..e444a40e4f 100644 --- a/src/gallery/symbian/qmdegalleryresultset.cpp +++ b/src/gallery/symbian/qmdegalleryresultset.cpp @@ -177,23 +177,18 @@ QVariant QMDEGalleryResultSet::metaData(int key) const bool QMDEGalleryResultSet::setMetaData(int key, const QVariant &value) { - bool ret = false; - - TRAPD( err, QDocumentGalleryMDSUtility::SetMetaDataFieldL( - m_itemArray[m_cursorPosition], value, key) ); - if (err) { - return false; - } else { - if (ret) { - TRAP( err, m_session->CommitObjectL( *m_itemArray[m_cursorPosition] ) ); - if (err) { - return false; - } else { - return true; - } - } - } - return false; + TRAPD( err, + CMdEObject* object = m_session->OpenObjectL(m_itemArray[m_cursorPosition]->Id(), + m_itemArray[m_cursorPosition]->Def()); + if (!object) + User::Leave(KErrNotFound); + CleanupStack::PushL(object); + QDocumentGalleryMDSUtility::SetMetaDataFieldL(object, value, key); + m_session->CommitObjectL(*object); + CleanupStack::PopAndDestroy(object); + ); + + return err == KErrNone ? true: false; } int QMDEGalleryResultSet::currentIndex() const diff --git a/src/gallery/symbian/qmdesession.cpp b/src/gallery/symbian/qmdesession.cpp index cc5db8cf82..888ca6be1d 100644 --- a/src/gallery/symbian/qmdesession.cpp +++ b/src/gallery/symbian/qmdesession.cpp @@ -108,6 +108,14 @@ CMdEObject* QMdeSession::GetFullObjectL(const unsigned int id) return NULL; } +CMdEObject* QMdeSession::OpenObjectL( const unsigned int id, CMdEObjectDef& objectDef ) +{ + if (m_cmdeSession) + return m_cmdeSession->OpenObjectL(id, objectDef); + else + return NULL; +} + void QMdeSession::CommitObjectL( CMdEObject& object ) { if (m_cmdeSession) diff --git a/src/gallery/symbian/qmdesession_p.h b/src/gallery/symbian/qmdesession_p.h index e241209c48..fd850842b4 100644 --- a/src/gallery/symbian/qmdesession_p.h +++ b/src/gallery/symbian/qmdesession_p.h @@ -95,6 +95,7 @@ public: // From MMdESessionObserver CMdEObject* GetFullObjectL( const unsigned int id ); + CMdEObject* OpenObjectL( const unsigned int id, CMdEObjectDef& objectDef ); void CommitObjectL( CMdEObject& object ); CMdEObjectQuery* NewObjectQueryL(MMdEQueryObserver *observer, diff --git a/src/messaging/qmtmengine_symbian.cpp b/src/messaging/qmtmengine_symbian.cpp index 8abba5e43b..6f61d540bc 100644 --- a/src/messaging/qmtmengine_symbian.cpp +++ b/src/messaging/qmtmengine_symbian.cpp @@ -2840,7 +2840,7 @@ void CMTMEngine::storeMMSL(QMessage &message) attachment.Size(fileSize); TInt maxFileSize = 600000; if (fileSize > maxFileSize){ - return; + User::Leave(KErrTooBig); } HBufC8* pFileContent = HBufC8::NewL(fileSize); @@ -2853,15 +2853,9 @@ void CMTMEngine::storeMMSL(QMessage &message) RFs fileServer; User::LeaveIfError(fileServer.Connect()); CleanupClosePushL(fileServer); - TInt err = file2.Temp(fileServer,iPath,tempFileName,EFileWrite); - if (err != KErrNone){ - return; - } + User::LeaveIfError(file2.Temp(fileServer,iPath,tempFileName,EFileWrite)); CleanupClosePushL(file2); - err = file2.Write(*pFileContent); - if (err != KErrNone){ - return; - } + User::LeaveIfError(file2.Write(*pFileContent)); file2.Close(); User::LeaveIfError(file2.Open(FsSession(),tempFileName, EFileShareAny|EFileRead)); // Mime header @@ -3131,7 +3125,7 @@ void CMTMEngine::updateMMSL(QMessage &message) attachment.Size(fileSize); TInt maxFileSize = 600000; if (fileSize > maxFileSize){ - return; + User::Leave(KErrTooBig); } HBufC8* pFileContent = HBufC8::NewL(fileSize); @@ -3144,15 +3138,9 @@ void CMTMEngine::updateMMSL(QMessage &message) RFs fileServer; User::LeaveIfError(fileServer.Connect()); CleanupClosePushL(fileServer); - TInt err = file2.Temp(fileServer,iPath,tempFileName,EFileWrite); - if (err != KErrNone){ - return; - } + User::LeaveIfError(file2.Temp(fileServer,iPath,tempFileName,EFileWrite)); CleanupClosePushL(file2); - err = file2.Write(*pFileContent); - if (err != KErrNone){ - return; - } + User::LeaveIfError(file2.Write(*pFileContent)); file2.Close(); User::LeaveIfError(file2.Open(FsSession(),tempFileName, EFileShareAny|EFileRead)); // Mime header |