summaryrefslogtreecommitdiffstats
path: root/src/kvilib/ext/kvi_stringconversion.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
commita6d58bb6052ac8cb01805a48c4ad2f129126116f (patch)
treedd867a099fcbb263a8009a9fb22695b87855dad6 /src/kvilib/ext/kvi_stringconversion.cpp
downloadkvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.tar.gz
kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.zip
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/kvilib/ext/kvi_stringconversion.cpp')
-rw-r--r--src/kvilib/ext/kvi_stringconversion.cpp277
1 files changed, 277 insertions, 0 deletions
diff --git a/src/kvilib/ext/kvi_stringconversion.cpp b/src/kvilib/ext/kvi_stringconversion.cpp
new file mode 100644
index 00000000..3d0255cc
--- /dev/null
+++ b/src/kvilib/ext/kvi_stringconversion.cpp
@@ -0,0 +1,277 @@
+//=============================================================================
+//
+// File : kvi_stringconversion.cpp
+// Creation date : Thu Oct 20 2000 14:12:21 CEST by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+
+#define _KVI_STRINGCONVERSION_CPP_
+#include "kvi_stringconversion.h"
+
+#include "kvi_qstring.h"
+#include <stdio.h>
+
+QString g_szGlobalDir;
+QString g_szLocalDir;
+
+namespace KviStringConversion
+{
+
+ void init(const QString& szGlobalDir,const QString& szLocalDir)
+ {
+ g_szGlobalDir=szGlobalDir;
+ g_szLocalDir=szLocalDir;
+ }
+
+ void encodePath(QString& buffer)
+ {
+ if(!buffer.isEmpty())
+ {
+ if(!g_szLocalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,g_szLocalDir)==0)
+ {
+ buffer.remove(0,g_szLocalDir.length());
+ buffer.prepend("local://");
+ }
+ }
+ if(!g_szGlobalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,g_szGlobalDir)==0)
+ {
+ buffer.remove(0,g_szGlobalDir.length());
+ buffer.prepend("global://");
+ }
+ }
+ }
+ }
+
+ void decodePath(QString& buffer)
+ {
+ if(!buffer.isEmpty())
+ {
+ if(!g_szLocalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,"local://")==0)
+ {
+ buffer.remove(0,8);
+ buffer.prepend(g_szLocalDir);
+ }
+ }
+ if(!g_szGlobalDir.isEmpty())
+ {
+ if(KviQString::find(buffer,"global://")==0)
+ {
+ buffer.remove(0,9);
+ buffer.prepend(g_szGlobalDir);
+ }
+ }
+ }
+ }
+
+ void encodePath(QStringList& buffer)
+ {
+ for ( QStringList::Iterator it = buffer.begin(); it != buffer.end(); ++it )
+ {
+ encodePath(*it);
+ }
+ }
+
+ void decodePath(QStringList& buffer)
+ {
+ for ( QStringList::Iterator it = buffer.begin(); it != buffer.end(); ++it )
+ {
+ decodePath(*it);
+ }
+ }
+
+ void toString(const bool bValue,QString &buffer)
+ {
+ buffer = bValue ? '1' : '0';
+ }
+
+ bool fromString(const QString & szValue,bool &buffer)
+ {
+ if(szValue.isEmpty())buffer = false;
+ else buffer = !((KviQString::equalCS(szValue,"0")) || (KviQString::equalCI(szValue,"false")));
+ return true;
+ }
+
+ void toString(const int iValue,QString &buffer)
+ {
+ buffer.setNum(iValue);
+ }
+
+ bool fromString(const QString &szValue,int &buffer)
+ {
+ bool bOk;
+ buffer = szValue.toInt(&bOk);
+ return bOk;
+ }
+
+ void toString(const unsigned int uValue,QString &buffer)
+ {
+ buffer.setNum(uValue);
+ }
+
+ bool fromString(const QString & szValue,unsigned int &buffer)
+ {
+ bool bOk;
+ buffer= szValue.toUInt(&bOk);
+ return bOk;
+ }
+
+ void toString(const QRect &rValue,QString &buffer)
+ {
+ buffer.sprintf("%d,%d,%d,%d",rValue.x(),rValue.y(),rValue.width(),rValue.height());
+ }
+
+ bool fromString(const QString & szValue,QRect &buffer)
+ {
+ KviQCString tmp = KviQString::toUtf8(szValue);
+ const char * c = tmp.data();
+ if(!c)return false;
+ int l,t,w,h;
+ if(sscanf(c,"%d,%d,%d,%d",&l,&t,&w,&h) != 4)return false;
+ buffer.setRect(l,t,w,h);
+ return true;
+ }
+
+ void toString(const QString &szValue,QString &buffer)
+ {
+ buffer = szValue;
+ }
+
+ bool fromString(const QString & szValue,QString &buffer)
+ {
+ buffer = szValue;
+ return true;
+ }
+
+ void toString(const KviPixmap &pValue,QString &buffer)
+ {
+ buffer=pValue.path();
+ encodePath(buffer);
+ }
+
+ bool fromString(const QString & szValue,KviPixmap &buffer)
+ {
+ QString szPath(szValue);
+ decodePath(szPath);
+ if(szPath.isEmpty()) {
+ buffer.setNull();
+ return true;
+ } else {
+ return buffer.load(szPath);
+ }
+ }
+
+ void toString(const KviMsgType &mValue,QString &buffer)
+ {
+ buffer.sprintf("%d,%u,%u,%d,%d",mValue.m_iPixId,mValue.m_cForeColor,mValue.m_cBackColor,mValue.m_bLogEnabled,mValue.m_iLevel);
+ }
+
+ bool fromString(const QString & szValue,KviMsgType &buffer)
+ {
+ int iId,iLog,iLevel;
+ unsigned int uFore,uBack;
+ KviQCString tmp = KviQString::toUtf8(szValue);
+ char * cx = tmp.data();
+ if(!cx)return false;
+ if(sscanf(cx,"%d,%u,%u,%d,%d",&iId,&uFore,&uBack,&iLog,&iLevel) != 5)return false;
+ buffer = KviMsgType(buffer.m_szType,iId,uFore,uBack,iLog,iLevel);
+ return true;
+ }
+
+ void toString(const QColor &cValue,QString &buffer)
+ {
+ buffer = cValue.name();
+ }
+
+ bool fromString(const QString & szValue,QColor &buffer)
+ {
+ buffer.setNamedColor(szValue); return true;
+ }
+
+ void toString(const QFont &fValue,QString &buffer)
+ {
+ QString family(fValue.family());
+ buffer.sprintf("%s,%d,%d,%d",KviQString::toUtf8(family).data(),fValue.pointSize(),fValue.styleHint(),fValue.weight());
+ QString options;
+ if(fValue.bold())options.append('b');
+ if(fValue.italic())options.append('i');
+ if(fValue.underline())options.append('u');
+ if(fValue.strikeOut())options.append('s');
+ if(fValue.fixedPitch())options.append('f');
+
+ if(!options.isEmpty())
+ {
+ buffer.append(',');
+ buffer.append(options);
+ }
+ }
+
+ bool fromString(const QString & szValue,QFont &buffer)
+ {
+ KviStr str = szValue;
+ KviStr family,pointSize,styleHint,weight,options;
+ str.getToken(family,',');
+ str.getToken(pointSize,',');
+ str.getToken(styleHint,',');
+ str.getToken(weight,',');
+ if(!family.isEmpty())buffer.setFamily(family.ptr());
+ int i;
+ bool bOk;
+ i = pointSize.toInt(&bOk);
+ if(bOk && (i > 0))buffer.setPointSize(i);
+ i = styleHint.toInt(&bOk);
+ if(bOk && (i >= 0))buffer.setStyleHint((QFont::StyleHint)i);
+ i = weight.toInt(&bOk);
+ if(bOk && (i >= 0))buffer.setWeight(i);
+ if(!str.isEmpty())
+ {
+ buffer.setBold(str.contains("b"));
+ buffer.setItalic(str.contains("i"));
+ buffer.setUnderline(str.contains("u"));
+ buffer.setStrikeOut(str.contains("s"));
+ buffer.setFixedPitch(str.contains("f"));
+ }
+ return true;
+ }
+
+ void toString(const QStringList &sValue,QString &buffer)
+ {
+ buffer = sValue.join(",");
+ }
+
+ bool fromString(const QString & szValue,QStringList &buffer)
+ {
+#ifdef COMPILE_USE_QT4
+ buffer = szValue.split(",");
+#else
+ buffer = QStringList::split(",",szValue);
+#endif
+ return true;
+ }
+
+}