00001 #include "BilingualKey.h" 00002 00003 BilingualKey::BilingualKey() { 00004 } 00005 00006 BilingualKey::BilingualKey( const QString& stringKey ) 00007 : lang1( stringKey.left( 2 ) ), lang2( stringKey.right( 2 ) ) { 00008 } 00009 00010 BilingualKey::BilingualKey( const QString& firstLanguage, const QString& secondLanguage ) { 00011 // Sort the languages. 00012 if( firstLanguage.compare( secondLanguage ) < 0 ) { 00013 lang1 = firstLanguage; 00014 lang2 = secondLanguage; 00015 } 00016 else { 00017 lang1 = secondLanguage; 00018 lang2 = firstLanguage; 00019 } 00020 } 00021 00022 BilingualKey::BilingualKey( const BilingualKey& key ) 00023 : lang1( key.lang1 ), lang2( key.lang2 ) { 00024 } 00025 00026 BilingualKey::~BilingualKey() { 00027 } 00028 00029 const QString& BilingualKey::getFirstLanguage() const { 00030 return( lang1 ); 00031 } 00032 00033 const QString& BilingualKey::getSecondLanguage() const { 00034 return( lang2 ); 00035 } 00036 00037 bool BilingualKey::contains( const QString& language ) const { 00038 return( lang1 == language || lang2 == language ); 00039 } 00040 00041 QString BilingualKey::toString() const { 00042 return( QString( lang1 + QString( "-" ) + lang2 ) ); 00043 } 00044 00045 BilingualKey& BilingualKey::operator=( const BilingualKey& key ) { 00046 if( this != &key ) { 00047 lang1 = key.getFirstLanguage(); 00048 lang2 = key.getSecondLanguage(); 00049 } 00050 return( *this ); 00051 } 00052 00053 bool operator==( const BilingualKey& left, const BilingualKey& right ) { 00054 return( left.toString().compare( right.toString() ) == 0 ); 00055 } 00056 00057 bool operator<( const BilingualKey& left, const BilingualKey& right ) { 00058 return( left.toString().compare( right.toString() ) < 0 ); 00059 } 00060 00061 QDataStream& operator<<( QDataStream& out, const BilingualKey& key ) { 00062 out << key.lang1 << key.lang2; 00063 return( out ); 00064 } 00065 00066 QDataStream& operator>>( QDataStream& in, BilingualKey& key ) { 00067 QString tempLang1; 00068 QString tempLang2; 00069 00070 in >> tempLang1 >> tempLang2; 00071 key = BilingualKey( tempLang1, tempLang2 ); 00072 00073 return( in ); 00074 }