You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.0 KiB
101 lines
3.0 KiB
/*
|
|
translatorguiclient.cpp
|
|
|
|
Kopete Translator plugin
|
|
|
|
Copyright (c) 2003-2004 by Olivier Goffart <ogoffart @ kde.org>
|
|
|
|
Kopete (c) 2003-2004 by the Kopete developers <kopete-devel@kde.org>
|
|
|
|
*************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
*************************************************************************
|
|
*/
|
|
|
|
#include <tqvariant.h>
|
|
|
|
#include <kdebug.h>
|
|
#include <tdeaction.h>
|
|
#include <klocale.h>
|
|
|
|
#include "kopetechatsession.h"
|
|
#include "kopeteview.h"
|
|
#include "kopetecontact.h"
|
|
#include "kopetemetacontact.h"
|
|
#include "kopetemessage.h"
|
|
|
|
#include "translatorplugin.h"
|
|
#include "translatorguiclient.h"
|
|
#include "translatorlanguages.h"
|
|
|
|
TranslatorGUIClient::TranslatorGUIClient( Kopete::ChatSession *parent, const char *name )
|
|
: TQObject( parent, name ), KXMLGUIClient( parent )
|
|
{
|
|
setInstance( TranslatorPlugin::plugin()->instance() );
|
|
connect( TranslatorPlugin::plugin(), TQT_SIGNAL( destroyed( TQObject * ) ), this, TQT_SLOT( deleteLater() ) );
|
|
|
|
m_manager = parent;
|
|
|
|
new TDEAction( i18n( "Translate" ), "locale", CTRL + Key_T, this, TQT_SLOT( slotTranslateChat() ), actionCollection(), "translateCurrentMessage" );
|
|
|
|
setXMLFile( "translatorchatui.rc" );
|
|
}
|
|
|
|
TranslatorGUIClient::~TranslatorGUIClient()
|
|
{
|
|
}
|
|
|
|
void TranslatorGUIClient::slotTranslateChat()
|
|
{
|
|
if ( !m_manager->view() )
|
|
return;
|
|
|
|
Kopete::Message msg = m_manager->view()->currentMessage();
|
|
TQString body = msg.plainBody();
|
|
if ( body.isEmpty() )
|
|
return;
|
|
|
|
TQString src_lang = TranslatorPlugin::plugin()->m_myLang;
|
|
TQString dst_lang;
|
|
|
|
TQPtrList<Kopete::Contact> list = m_manager->members();
|
|
Kopete::MetaContact *to = list.first()->metaContact();
|
|
dst_lang = to->pluginData( TranslatorPlugin::plugin(), "languageKey" );
|
|
if ( dst_lang.isEmpty() || dst_lang == "null" )
|
|
{
|
|
kdDebug( 14308 ) << k_funcinfo << "Cannot determine dst Metacontact language (" << to->displayName() << ")" << endl;
|
|
return;
|
|
}
|
|
|
|
// We search for src_dst
|
|
TranslatorPlugin::plugin()->translateMessage( body, src_lang, dst_lang, this, TQT_SLOT( messageTranslated( const TQVariant & ) ) );
|
|
}
|
|
|
|
void TranslatorGUIClient::messageTranslated( const TQVariant &result )
|
|
{
|
|
TQString translated = result.toString();
|
|
if ( translated.isEmpty() )
|
|
{
|
|
kdDebug( 14308 ) << k_funcinfo << "Empty string returned" << endl;
|
|
return;
|
|
}
|
|
|
|
//if the user close the window before the translation arrive, return
|
|
if ( !m_manager->view() )
|
|
return;
|
|
|
|
Kopete::Message msg = m_manager->view()->currentMessage();
|
|
msg.setBody( translated );
|
|
m_manager->view()->setCurrentMessage( msg );
|
|
}
|
|
|
|
#include "translatorguiclient.moc"
|
|
|
|
// vim: set noet ts=4 sts=4 sw=4:
|
|
|