summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/backend/stringutil.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/library/backend/stringutil.cpp b/library/backend/stringutil.cpp
index b5fbd3e..f1ad1b9 100644
--- a/library/backend/stringutil.cpp
+++ b/library/backend/stringutil.cpp
@@ -16,225 +16,225 @@
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qtopia/stringutil.h>
#include <qregexp.h>
#include <qstringlist.h>
namespace Qtopia
{
/*
Very, very simple Latin-1 only collation guaranteed to displease anyone
who actually uses the non-ASCII characters.
*/
static const char collationHack[] = {
0x00, //C-@
0x01, //C-A
0x02, //C-B
0x03, //C-C
0x04, //C-D
0x05, //C-E
0x06, //C-F
0x07, //C-G
0x08, //C-H
0x09, //C-I
0x0a, //C-J
0x0b, //C-K
0x0c, //C-L
0x0d, //C-M
0x0e, //C-N
0x0f, //C-O
0x10, //C-P
0x11, //C-Q
0x12, //C-R
0x13, //C-S
0x14, //C-T
0x15, //C-U
0x16, //C-V
0x17, //C-W
0x18, //C-X
0x19, //C-Y
0x1a, //C-Z
0x1b, //C-[
-0x1c, //C-\
+0x1c, /* C-\ */
0x1d, //C-]
0x1e, //C-^
0x1f, //C-_
-' ', //
+' ', //
'!', //!
'"', //"
'#', //#
'$', //$
'%', //%
'&', //&
'\'', //'
'(', //(
')', //)
'*', //*
'+', //+
',', //,
'-', //-
'.', //.
'/', ///
0x80, //0
0x81, //1
0x82, //2
0x83, //3
0x84, //4
0x85, //5
0x86, //6
0x87, //7
0x88, //8
0x89, //9
':', //:
';', //;
'<', //<
'=', //=
'>', //>
'?', //?
'@', //@
'A', //A
'B', //B
'C', //C
'D', //D
'E', //E
'F', //F
'G', //G
'H', //H
'I', //I
'J', //J
'K', //K
'L', //L
'M', //M
'N', //N
'O', //O
'P', //P
'Q', //Q
'R', //R
'S', //S
'T', //T
'U', //U
'V', //V
'W', //W
'X', //X
'Y', //Y
'Z', //Z
'[', //[
-'\\', //\
+'\\', /* \ */
']', //]
'^', //^
'_', //_
'`', //`
'A', //a
'B', //b
'C', //c
'D', //d
'E', //e
'F', //f
'G', //g
'H', //h
'I', //i
'J', //j
'K', //k
'L', //l
'M', //m
'N', //n
'O', //o
'P', //p
'Q', //q
'R', //r
'S', //s
'T', //t
'U', //u
'V', //v
'W', //w
'X', //x
'Y', //y
'Z', //z
'{', //{
'|', //|
'}', //}
'~', //~
'', //
0x80, //C-M-@
0x81, //C-M-A
0x82, //C-M-B
0x83, //C-M-C
0x84, //C-M-D
0x85, //C-M-E
0x86, //C-M-F
0x87, //C-M-G
0x88, //C-M-H
0x89, //C-M-I
0x8a, //C-M-J
0x8b, //C-M-K
0x8c, //C-M-L
0x8d, //C-M-M
0x8e, //C-M-N
0x8f, //C-M-O
0x90, //C-M-P
0x91, //C-M-Q
0x92, //C-M-R
0x93, //C-M-S
0x94, //C-M-T
0x95, //C-M-U
0x96, //C-M-V
0x97, //C-M-W
0x98, //C-M-X
0x99, //C-M-Y
0x9a, //C-M-Z
0x9b, //C-M-[
-0x9c, //C-M-\
+0x9c, /* C-M-\ */
0x9d, //C-M-]
0x9e, //C-M-^
0x9f, //C-M-_
' ', // 
'¡', //¡
'¢', //¢
'£', //£
'¤', //¤
'¥', //¥
'¦', //¦
'§', //§
'¨', //¨
'©', //©
'A', //ª
'«', //«
'¬', //¬
'­', //­
'®', //®
'¯', //¯
'O', //°
'±', //±
'²', //²
'³', //³
'´', //´
'µ', //µ
'P', //¶
'·', //·
'¸', //¸
'¹', //¹
'O', //º
'»', //»
'¼', //¼
'½', //½
'¾', //¾
'¿', //¿
'A', //À
'A', //Á
'A', //Â
'A', //Ã
'A', //Ä
'A', //Å
'A', //Æ
'C', //Ç
'E', //È
'E', //É
'E', //Ê
'E', //Ë
'I', //Ì
@@ -274,115 +274,115 @@ static const char collationHack[] = {
'I', //î
'I', //ï
'D', //ð
'N', //ñ
'O', //ò
'O', //ó
'O', //ô
'O', //õ
'O', //ö
'÷', //÷
'O', //ø
'U', //ù
'U', //ú
'U', //û
'U', //ü
'Y', //ý
'T', //þ
'Y', //ÿ
};
static void hackString ( QString &s )
{
int len = s.length();
const QChar* uc = s.unicode();
for ( int i = 0; i < len; i++ ) {
if ( !uc++->row() )
s[i] = collationHack[s[i].cell()];
}
}
QString buildSortKey( const QString & s )
{
QString res = s;
hackString( res );
return res;
}
QString buildSortKey( const QString & s1, const QString & s2 )
{
QString res = s1 + QChar( '\0' ) + s2;
hackString( res );
return res;
}
-QString buildSortKey( const QString & s1, const QString & s2,
+QString buildSortKey( const QString & s1, const QString & s2,
const QString & s3 )
{
QString res = s1 + QChar( '\0' ) + s2 + QChar( '\0' ) + s3;
hackString( res );
return res;
}
static inline QChar coll( QChar u )
{
return u.row() ? u : QChar(collationHack[ u.cell() ]);
}
int compare( const QString & s1, const QString & s2 )
{
const QChar* u1 = s1.unicode();
const QChar* u2 = s2.unicode();
-
+
if ( u1 == u2 )
return 0;
if ( u1 == 0 )
return 1;
if ( u2 == 0 )
return -1;
int l=QMIN(s1.length(),s2.length());
while ( l-- && coll(*u1) == coll(*u2) )
u1++,u2++;
if ( l==-1 )
return ( s1.length()-s2.length() );
return u1->unicode() - u2->unicode();
}
QString simplifyMultiLineSpace( const QString &multiLine )
{
QString result;
QStringList lines = QStringList::split("\n", multiLine);
for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it ) {
if ( it != lines.begin() )
result += "\n";
result += (*it).simplifyWhiteSpace();
}
return result;
}
QString escapeString( const QString& plain )
{
QString tmp(plain);
int pos = tmp.length();
const QChar *uc = plain.unicode();
while ( pos-- ) {
unsigned char ch = uc[pos].latin1();
if ( ch == '&' )
tmp.replace( pos, 1, "&amp;" );
else if ( ch == '<' )
tmp.replace( pos, 1, "&lt;" );
else if ( ch == '>' )
tmp.replace( pos, 1, "&gt;" );
else if ( ch == '\"' )
tmp.replace( pos, 1, "&quot;" );
}
return tmp;
}
QString plainString( const char* escaped, unsigned int length )
{
return plainString( QString::fromUtf8( escaped, length ) );