summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2012-04-16 22:25:35 +1000
committerQt Continuous Integration System <qt-info@nokia.com>2012-04-16 22:25:35 +1000
commit66364f400dddae6bb90af3f9a3e8ed970a6516a7 (patch)
treee3db46d164680e23e2fa0493c7ff3fc8c2cbc1a9
parentf7a5e65ab112ca597758038837d99b046c4d4539 (diff)
parentae7744f7085bf274b98e21c760f674ba7bc1c6c0 (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.cpp52
-rw-r--r--src/connectivity/bluetooth/qbluetoothtransferreply_symbian_p.h2
-rw-r--r--src/gallery/symbian/qmdegalleryresultset.cpp29
-rw-r--r--src/gallery/symbian/qmdesession.cpp8
-rw-r--r--src/gallery/symbian/qmdesession_p.h1
-rw-r--r--src/messaging/qmtmengine_symbian.cpp24
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