[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/graphics/kphotoalbum
From: Tuomas Suutari <thsuut () utu ! fi>
Date: 2007-05-09 7:03:26
Message-ID: 1178694206.728676.11533.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 662787 by suutari:
Store filenames in Exif database using UTF-8 encoding.
M +5 -0 ChangeLog
M +14 -4 Exif/Database.cpp
M +1 -0 Exif/Database.h
--- trunk/extragear/graphics/kphotoalbum/ChangeLog #662786:662787
@@ -1,3 +1,8 @@
+2007-05-09 Tuomas Suutari <thsuut@utu.fi>
+
+ * Store filenames in Exif database using UTF-8 encoding. Thanks
+ to Jan Kundrát for a patch.
+
2007-05-04 Tuomas Suutari <thsuut@utu.fi>
* Make selection more visible in thumbnail view.
--- trunk/extragear/graphics/kphotoalbum/Exif/Database.cpp #662786:662787
@@ -19,6 +19,7 @@
#undef QT_CAST_NO_ASCII
#include "Exif/Database.h"
#include <qsqldatabase.h>
+#include <qsqldriver.h>
#include "Settings/SettingsData.h"
#include <qsqlquery.h>
#include <exiv2/exif.hpp>
@@ -85,6 +86,11 @@
qWarning("Couldn't open db %s", _db->lastError().text().latin1());
else
_isOpen = true;
+
+ // If SQLite in Qt has Unicode feature, it will convert querys to
+ // UTF-8 automatically. Otherwise we should do the conversion to
+ // be able to store any Unicode character.
+ _doUTF8Conversion = !_db->driver()->hasFeature(QSqlDriver::Unicode);
}
bool Exif::Database::isOpen() const
@@ -129,7 +135,7 @@
return;
QSqlQuery query( QString::fromLatin1( "DELETE FROM exif WHERE fileName=?" ), _db \
);
- query.bindValue( 0, fileName );
+ query.bindValue( 0, _doUTF8Conversion ? fileName.utf8() : fileName );
if ( !query.exec() )
showError( query );
}
@@ -146,7 +152,7 @@
}
QSqlQuery query( QString::fromLatin1( "INSERT into exif values (?, %1) " ).arg( \
formalList.join( QString::fromLatin1( ", " ) ) ), _db );
- query.bindValue( 0, filename );
+ query.bindValue( 0, _doUTF8Conversion ? filename.utf8() : filename );
int i = 1;
for( QValueList<DatabaseElement*>::Iterator tagIt = elms.begin(); tagIt != \
elms.end(); ++tagIt ) { (*tagIt)->bindValues( &query, i, data );
@@ -198,8 +204,12 @@
showError( query );
else {
- while ( query.next() )
- result.insert( query.value(0).toString() );
+ if ( _doUTF8Conversion )
+ while ( query.next() )
+ result.insert( QString::fromUtf8( query.value(0).toCString() ) );
+ else
+ while ( query.next() )
+ result.insert( query.value(0).toString() );
}
return result;
--- trunk/extragear/graphics/kphotoalbum/Exif/Database.h #662786:662787
@@ -65,6 +65,7 @@
private:
bool _isOpen;
+ bool _doUTF8Conversion;
Database();
void init();
static Database* _instance;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic