parley
browserwidget.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "browserwidget.h"
00017
00018 #include <keduvocexpression.h>
00019 #include <kdebug.h>
00020 #include <KHTMLPart>
00021
00022 #include <QDragEnterEvent>
00023
00024
00025 BrowserWidget::BrowserWidget(QWidget *parent) : QWidget(parent)
00026 {
00027 setupUi(this);
00028 m_currentTranslation = -1;
00029 m_entry = 0;
00030 m_currentProvider = 0;
00031
00032 m_htmlPart = new KHTMLPart(widget);
00033 QHBoxLayout *layout = new QHBoxLayout(widget);
00034 widget->setLayout(layout);
00035 layout->addWidget(m_htmlPart->widget());
00036
00037 connect(m_htmlPart->browserExtension(),
00038 SIGNAL(openUrlRequest(const KUrl&, const KParts::OpenUrlArguments&, const KParts::BrowserArguments&)),
00039 this, SLOT(openUrl(const KUrl&)));
00040
00041 connect(showCurrentButton, SIGNAL(clicked()), SLOT(showCurrentTranslation()));
00042
00043 setupProviders();
00044 connect(providerComboBox, SIGNAL(currentIndexChanged(int)), SLOT(providerChanged(int)));
00045
00046 m_htmlPart->setJavaEnabled(false);
00047 m_htmlPart->setPluginsEnabled(false);
00048 m_htmlPart->setJScriptEnabled(true);
00049 m_htmlPart->setMetaRefreshEnabled(true);
00050 m_htmlPart->setDNDEnabled(true);
00051 }
00052
00053 void BrowserWidget::setupProviders()
00054 {
00055 providerComboBox->clear();
00056
00057 DictionaryProvider provider;
00058 provider.name="De-Es Beolingus";
00059 provider.url="http://beolingus.org/dings.cgi?service=dees&query=\\{@}";
00060 provider.languages << "de" << "es";
00061 m_providers.append(provider);
00062 providerComboBox->addItem(provider.name);
00063
00064 provider.name="De-En Beolingus";
00065 provider.url="http://beolingus.org/dings.cgi?query=\\{@}";
00066 provider.languages << "de" << "en";
00067 m_providers.append(provider);
00068 providerComboBox->addItem(provider.name);
00069
00070 provider.name="De-En Leo";
00071 provider.url="http://dict.leo.org/?search=\\{@}";
00072 provider.languages << "de" << "en";
00073 m_providers.append(provider);
00074 providerComboBox->addItem(provider.name);
00075
00076 provider.name="De-Es Leo";
00077 provider.url="http://dict.leo.org/?lp=esde&search=\\{@}";
00078 provider.languages << "de" << "es";
00079 m_providers.append(provider);
00080 providerComboBox->addItem(provider.name);
00081
00082 provider.name="De-Fr Leo";
00083 provider.url="http://dict.leo.org/?lp=frde&search=\\{@}";
00084 provider.languages << "de" << "fr";
00085 m_providers.append(provider);
00086 providerComboBox->addItem(provider.name);
00087
00088 provider.name="De-Es Pons";
00089 provider.url="http://www.ponsline.de/cgi-bin/wb/w.pl?von=pons.de&Richtung=Spanisch&Begriff=\\{@}";
00090 provider.languages << "de" << "es";
00091 m_providers.append(provider);
00092 providerComboBox->addItem(provider.name);
00093
00094 provider.name="Ru-En Multitran";
00095 provider.url="http://multitran.ru/c/m.exe?SHL=1&CL=1&l1=1&s=\\{@}";
00096 provider.languages << "ru" << "en";
00097 m_providers.append(provider);
00098 providerComboBox->addItem(provider.name);
00099
00100 provider.name="Ru-De Multitran";
00101 provider.url="http://multitran.ru/c/m.exe?SHL=1&CL=1&l1=3&s=\\{@}";
00102 provider.languages << "ru" << "de";
00103 m_providers.append(provider);
00104 providerComboBox->addItem(provider.name);
00105
00106 provider.name="Ru-Fr Multitran";
00107 provider.url="http://multitran.ru/c/m.exe?SHL=1&CL=1&l1=4&s=\\{@}";
00108 provider.languages << "ru" << "fr";
00109 m_providers.append(provider);
00110 providerComboBox->addItem(provider.name);
00111
00112 }
00113
00114 void BrowserWidget::setTranslation(KEduVocExpression* entry, int translation)
00115 {
00116 m_currentTranslation = translation;
00117 m_entry = entry;
00118
00119 if (followTableCheckBox->isChecked()) {
00120 showCurrentTranslation();
00121 }
00122 }
00123
00124 void BrowserWidget::showCurrentTranslation()
00125 {
00126 if (m_entry) {
00127 if (m_entry->translation(m_currentTranslation)) {
00128 QString text = m_entry->translation(m_currentTranslation)->text();
00129 m_htmlPart->openUrl(KUrl(QString(m_providers.value(m_currentProvider).url.replace("\\{@}", text))));
00130 }
00131 }
00132 }
00133
00134 void BrowserWidget::openUrl(const KUrl & targetUrl)
00135 {
00136 m_htmlPart->openUrl(targetUrl);
00137 }
00138
00139 void BrowserWidget::providerChanged(int provider)
00140 {
00141 m_currentProvider = provider;
00142 showCurrentTranslation();
00143 }
00144
00145
00146 #include "browserwidget.moc"
00147