ktnefproperty.cppGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00031 #include "ktnefproperty.h"
00032 #include "mapi.h"
00033
00034 #include <QtCore/QDateTime>
00035
00036 #include <ctype.h>
00037
00038 using namespace KTnef;
00039
00040 class KTNEFProperty::Private
00041 {
00042 public:
00043 int _key;
00044 int _type;
00045 QVariant _value;
00046 QVariant _name;
00047 };
00048
00049 KTNEFProperty::KTNEFProperty()
00050 : d( new Private )
00051 {
00052 }
00053
00054 KTNEFProperty::KTNEFProperty( int key_, int type_, const QVariant &value_,
00055 const QVariant &name_ )
00056 : d( new Private )
00057 {
00058 d->_key = key_;
00059 d->_type = type_;
00060 d->_value = value_;
00061 d->_name = name_;
00062 }
00063
00064 KTNEFProperty::KTNEFProperty( const KTNEFProperty &p )
00065 : d( new Private )
00066 {
00067 *d = *p.d;
00068 }
00069
00070 KTNEFProperty::~KTNEFProperty()
00071 {
00072 delete d;
00073 }
00074
00075 KTNEFProperty &KTNEFProperty::operator=( const KTNEFProperty &other )
00076 {
00077 if ( this != &other ) {
00078 *d = *other.d;
00079 }
00080
00081 return *this;
00082 }
00083
00084 QString KTNEFProperty::keyString() const
00085 {
00086 if ( d->_name.isValid() ) {
00087 if ( d->_name.type() == QVariant::String ) {
00088 return d->_name.toString();
00089 } else {
00090 return mapiNamedTagString( d->_name.toUInt(), d->_key );
00091 }
00092 } else {
00093 return mapiTagString( d->_key );
00094 }
00095 }
00096
00097 QString KTNEFProperty::formatValue( const QVariant &value, bool beautify )
00098 {
00099 if ( value.type() == QVariant::ByteArray ) {
00100
00101
00102 QByteArray arr = value.toByteArray();
00103 bool printable = true;
00104 for ( int i=qMin( arr.size(), 8 )-1; i>=0 && printable; i-- ) {
00105 printable = ( isprint( arr[ i ] ) != 0 );
00106 }
00107 if ( !printable ) {
00108 QString s;
00109 int i;
00110 int txtCount = beautify ? qMin( arr.size(), 32 ) : arr.size();
00111 for ( i=0; i < txtCount; ++i ) {
00112 s.append( QString().sprintf( "%02X", ( uchar )arr[ i ] ) );
00113 if ( beautify ) {
00114 s.append( " " );
00115 }
00116 }
00117 if ( i < arr.size() ) {
00118 s.append( "... (size=" + QString::number( arr.size() ) + ')' );
00119 }
00120 return s;
00121 }
00122 }
00123
00124
00125 return value.toString();
00126 }
00127
00128 QString KTNEFProperty::valueString() const
00129 {
00130 return formatValue( d->_value );
00131 }
00132
00133 int KTNEFProperty::key() const
00134 {
00135 return d->_key;
00136 }
00137
00138 int KTNEFProperty::type() const
00139 {
00140 return d->_type;
00141 }
00142
00143 QVariant KTNEFProperty::value() const
00144 {
00145 return d->_value;
00146 }
00147
00148 QVariant KTNEFProperty::name() const
00149 {
00150 return d->_name;
00151 }
00152
00153 bool KTNEFProperty::isVector() const
00154 {
00155 return d->_value.type() == QVariant::List;
00156 }
|