00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #include "service.h"
00014
00016
00018
00019 QVariant Service::ConvertToVariant( int nType, void *pValue )
00020 {
00021
00022
00023
00024 if ( nType == QMetaType::type( "QFileInfo" ))
00025 return QVariant::fromValue< QFileInfo >( *((QFileInfo *)pValue) );
00026
00027 if (nType > QMetaType::User)
00028 {
00029 QObject *pObj = *((QObject **)pValue);
00030
00031 return QVariant::fromValue<QObject*>( pObj );
00032 }
00033
00034 return QVariant( nType, pValue );
00035 }
00036
00037
00039
00041
00042 void* Service::ConvertToParameterPtr( int nTypeId,
00043 const QString &sParamType,
00044 void* pParam,
00045 const QString &sValue )
00046 {
00047
00048
00049
00050 switch( nTypeId )
00051 {
00052 case QMetaType::Bool : *(( bool *)pParam) = ToBool( sValue ); break;
00053
00054 case QMetaType::Char : *(( char *)pParam) = ( sValue.length() > 0) ? sValue.at( 0 ).toLatin1() : 0; break;
00055 case QMetaType::UChar : *(( unsigned char *)pParam) = ( sValue.length() > 0) ? sValue.at( 0 ).toLatin1() : 0; break;
00056 case QMetaType::QChar : *(( QChar *)pParam) = ( sValue.length() > 0) ? sValue.at( 0 ) : 0; break;
00057
00058 case QMetaType::Short : *(( short *)pParam) = sValue.toShort (); break;
00059 case QMetaType::UShort : *(( ushort *)pParam) = sValue.toUShort (); break;
00060
00061 case QMetaType::Int : *(( int *)pParam) = sValue.toInt (); break;
00062 case QMetaType::UInt : *(( uint *)pParam) = sValue.toUInt (); break;
00063
00064 case QMetaType::Long : *(( long *)pParam) = sValue.toLong (); break;
00065 case QMetaType::ULong : *(( ulong *)pParam) = sValue.toULong (); break;
00066
00067 case QMetaType::LongLong : *(( qlonglong *)pParam) = sValue.toLongLong (); break;
00068 case QMetaType::ULongLong : *(( qulonglong *)pParam) = sValue.toULongLong (); break;
00069
00070 case QMetaType::Double : *(( double *)pParam) = sValue.toDouble (); break;
00071 case QMetaType::Float : *(( float *)pParam) = sValue.toFloat (); break;
00072
00073 case QMetaType::QString : *(( QString *)pParam) = sValue; break;
00074 case QMetaType::QByteArray : *(( QByteArray *)pParam) = sValue.toUtf8 (); break;
00075
00076 case QMetaType::QDateTime :
00077 {
00078 QDateTime dt = QDateTime::fromString( sValue, Qt::ISODate );
00079 dt.setTimeSpec( Qt::UTC );
00080 *(( QDateTime *)pParam) = dt;
00081 break;
00082 }
00083 case QMetaType::QTime : *(( QTime *)pParam) = QTime::fromString ( sValue, Qt::ISODate ); break;
00084 case QMetaType::QDate : *(( QDate *)pParam) = QDate::fromString ( sValue, Qt::ISODate ); break;
00085 }
00086
00087 return pParam;
00088 }
00089
00091
00093
00094 bool Service::ToBool( const QString &sVal )
00095 {
00096 if (sVal.compare( "1", Qt::CaseInsensitive ) == 0)
00097 return true;
00098
00099 if (sVal.compare( "y", Qt::CaseInsensitive ) == 0)
00100 return true;
00101
00102 if (sVal.compare( "true", Qt::CaseInsensitive ) == 0)
00103 return true;
00104
00105 return false;
00106 }