[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