libkdeedu/keduvocdocument
keduvocpersonalpronoun.cpp
Go to the documentation of this file.00001 /*************************************************************************** 00002 Copyright 2007 Frederik Gladhorn <frederik.gladhorn@kdemail.net> 00003 ***************************************************************************/ 00004 00005 /*************************************************************************** 00006 * * 00007 * This program is free software; you can redistribute it and/or modify * 00008 * it under the terms of the GNU General Public License as published by * 00009 * the Free Software Foundation; either version 2 of the License, or * 00010 * (at your option) any later version. * 00011 * * 00012 ***************************************************************************/ 00013 00014 #include "keduvocpersonalpronoun.h" 00015 #include "keduvoccommon_p.h" 00016 #include <KLocalizedString> 00017 #include <KDebug> 00018 00019 class KEduVocPersonalPronoun::Private 00020 { 00021 public: 00022 Private(); 00023 00024 bool m_maleFemaleDifferent; 00025 bool m_neutralExists; 00026 bool m_dualExists; 00027 QMap<KEduVocWordFlags, QString> m_personalpronouns; 00028 }; 00029 00030 00031 KEduVocPersonalPronoun::Private::Private() 00032 { 00033 m_maleFemaleDifferent = false; 00034 m_neutralExists = false; 00035 m_dualExists = false; 00036 } 00037 00038 KEduVocPersonalPronoun::KEduVocPersonalPronoun() 00039 : d( new Private ) 00040 {} 00041 00042 00043 KEduVocPersonalPronoun::KEduVocPersonalPronoun( const KEduVocPersonalPronoun& other ) 00044 : d( new Private ) 00045 { 00046 d->m_maleFemaleDifferent = other.d->m_maleFemaleDifferent; 00047 d->m_neutralExists = other.d->m_neutralExists; 00048 d->m_personalpronouns = other.d->m_personalpronouns; 00049 d->m_dualExists = other.d->m_dualExists; 00050 } 00051 00052 00053 KEduVocPersonalPronoun::~KEduVocPersonalPronoun() 00054 { 00055 delete d; 00056 } 00057 00058 00059 KEduVocPersonalPronoun& KEduVocPersonalPronoun::operator = ( const KEduVocPersonalPronoun& other ) 00060 { 00061 d->m_maleFemaleDifferent = other.d->m_maleFemaleDifferent; 00062 d->m_neutralExists = other.d->m_neutralExists; 00063 d->m_personalpronouns = other.d->m_personalpronouns; 00064 d->m_dualExists = other.d->m_dualExists; 00065 return *this; 00066 } 00067 00068 00069 bool KEduVocPersonalPronoun::operator ==(const KEduVocPersonalPronoun& other) const 00070 { 00071 return d->m_personalpronouns == other.d->m_personalpronouns && 00072 d->m_maleFemaleDifferent == other.d->m_maleFemaleDifferent && 00073 d->m_neutralExists == other.d->m_neutralExists && 00074 d->m_dualExists == other.d->m_dualExists; 00075 } 00076 00077 00078 QString KEduVocPersonalPronoun::personalPronoun(KEduVocWordFlags flags) const 00079 { 00080 QString p = d->m_personalpronouns.value(flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers| KEduVocWordFlag::genders)); 00081 if (p.isEmpty() && !(flags & KEduVocWordFlag::genders) && d->m_maleFemaleDifferent && d->m_neutralExists) 00082 { 00083 kDebug() << "initial flag lookup failed, added neuter gender flag"; 00084 flags |= KEduVocWordFlag::Neuter; 00085 p = d->m_personalpronouns.value(flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers| KEduVocWordFlag::genders)); 00086 } 00087 return p; 00088 } 00089 00090 void KEduVocPersonalPronoun::setPersonalPronoun(const QString & personalpronoun, KEduVocWordFlags flags) 00091 { 00092 d->m_personalpronouns[flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers| KEduVocWordFlag::genders)] = personalpronoun; 00093 } 00094 00095 00096 bool KEduVocPersonalPronoun::maleFemaleDifferent() const 00097 { 00098 return d->m_maleFemaleDifferent; 00099 } 00100 00101 void KEduVocPersonalPronoun::setMaleFemaleDifferent(bool different) 00102 { 00103 d->m_maleFemaleDifferent = different; 00104 } 00105 00106 bool KEduVocPersonalPronoun::neutralExists() const 00107 { 00108 return d->m_neutralExists; 00109 } 00110 00111 void KEduVocPersonalPronoun::setNeutralExists(bool exists) 00112 { 00113 d->m_neutralExists = exists; 00114 } 00115 00116 bool KEduVocPersonalPronoun::dualExists() const 00117 { 00118 return d->m_dualExists; 00119 } 00120 00121 void KEduVocPersonalPronoun::setDualExists(bool exists) 00122 { 00123 d->m_dualExists = exists; 00124 } 00125
KDE 4.2 API Reference