diff options
Diffstat (limited to 'ksirc/messageReceiver.cpp')
-rw-r--r-- | ksirc/messageReceiver.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/ksirc/messageReceiver.cpp b/ksirc/messageReceiver.cpp new file mode 100644 index 00000000..f2ac6ee0 --- /dev/null +++ b/ksirc/messageReceiver.cpp @@ -0,0 +1,73 @@ +#include "messageReceiver.h" + +#include <qtextcodec.h> +#include <kcharsets.h> +#include <kglobal.h> +#include <kdebug.h> +#include <assert.h> + +KSircMessageReceiver::KSircMessageReceiver( KSircProcess * _proc ) +{ + proc = _proc; + broadcast = TRUE; +} + +KSircMessageReceiver::~KSircMessageReceiver() +{ +} + +void KSircMessageReceiver::setBroadcast(bool bd) +{ + broadcast = bd; +} + +bool KSircMessageReceiver::getBroadcast() +{ + return broadcast; +} + +filterRuleList *KSircMessageReceiver::defaultRules() +{ + return new filterRuleList(); +} + +UnicodeMessageReceiver::UnicodeMessageReceiver( KSircProcess *process ) + : KSircMessageReceiver( process ), m_encoder( 0 ) +{ +} + +void UnicodeMessageReceiver::sirc_receive( QCString str, bool broadcast ) +{ + assert( encoder() ); + //kdDebug(5008) << "Encoder: " << encoder()->name() << endl; + //kdDebug(5008) << "It gives us: " << encoder()->toUnicode( str ).utf8() << endl; + sirc_receive( encoder()->toUnicode( str ), broadcast ); +} + +void UnicodeMessageReceiver::setEncoding( const QString &encoding ) +{ + m_encoding = encoding; + m_encoder = 0; +} + +QString UnicodeMessageReceiver::encoding() const +{ + if ( m_encoding.isEmpty() ) + return QTextCodec::codecForLocale()->mimeName(); + return m_encoding; +} + +QTextCodec *UnicodeMessageReceiver::encoder() const +{ + if ( m_encoding.isEmpty() ) { + return QTextCodec::codecForLocale(); + } + + if ( !m_encoder ) { + const_cast<UnicodeMessageReceiver *>( this )->m_encoder = KGlobal::charsets()->codecForName( m_encoding ); + assert( m_encoder ); + } + + return m_encoder; +} + |