btlayout = new QHBoxLayout;
resultPages = new QTabWidget;
- resultPages->setTabPosition(QTabWidget::West);
+ resultPages->setStyleSheet("QTabBar::tab { height: 50px }");
mlayout->addWidget(resultPages);
- btnClear = new QPushButton;
+ btnPron = new QCheckBox();
+ btnPron->setIcon(QIcon("/usr/share/icons/hicolor/48x48/hildon/general_conference_avatar.png"));
+ btnClear = new QPushButton; /* Clearbutton */
btnClear->setIcon(QIcon("/usr/share/icons/hicolor/64x64/hildon/general_delete.png"));
- wordinput = new QLineEdit;
+ wordinput = new QLineEdit; /* Word input */
+ btlayout->addWidget(btnPron);
btlayout->addWidget(btnClear);
btlayout->addWidget(wordinput);
- btnLookup = new QPushButton; // Lookup button
+ btnLookup = new QPushButton; /* Lookup button */
btnLookup->setIcon(QIcon("/usr/share/icons/hicolor/64x64/hildon/general_search.png"));
btlayout->addWidget(btnLookup);
connect(wordinput, SIGNAL(returnPressed()), this, SLOT(startLookup()));
connect(btnLookup, SIGNAL(clicked()), this, SLOT(startLookup()));
+ connect(btnPron, SIGNAL(clicked()), this, SLOT(startLookup()));
/* Icon */
QIcon *icon = new QIcon();
QMenu *menu = ui->menuBar->addMenu(tr("Top menu"));
QAction *act_about = menu->addAction(tr("About"));
connect(act_about, SIGNAL(triggered()), aboutDialog, SLOT(show()));
+ /* Menu filters */
+ QActionGroup *filterGroup = new QActionGroup(this);
+ filterGroup->setExclusive(true);
+ filFrench = new QAction(tr("Search French"), filterGroup);
+ filFrench->setCheckable(true);
+ filFrench->setChecked(true);
+ filItalian = new QAction(tr("Search Italian"), filterGroup);
+ filItalian->setCheckable(true);
+ menu->addActions(filterGroup->actions());
+ connect(filItalian, SIGNAL(changed()), this, SLOT(switchLang()));
+ connect(filFrench, SIGNAL(changed()), this, SLOT(switchLang()));
}
MainWindow::~MainWindow()
freVerbDic = new FrenchVerbDictionary(true);
}
+void MainWindow::switchLang()
+{
+ FrenchVerbDictionary::Language curlang = freVerbDic->getLanguage();
+ FrenchVerbDictionary::Language targetlang = filItalian->isChecked() ? FrenchVerbDictionary::ITALIAN
+ : FrenchVerbDictionary::FRENCH;
+ if (curlang == targetlang) {
+ return;
+ }
+ /* If lang change */
+ std::string conjFN, verbsFN;
+ FrenchVerbDictionary::getXMLFilenames(conjFN, verbsFN, targetlang);
+ delete freVerbDic;
+ freVerbDic = new FrenchVerbDictionary(conjFN, verbsFN, true, targetlang);
+}
+
void MainWindow::startLookup()
{
QString input = wordinput->text().trimmed();
* obtain its complete conjugation.
*/
std::vector<InflectionDesc> infles;
- bool includePronouns = FALSE; // TODO: Will get this value from external
- bool isItalian = FALSE; // TODO: Will get this value from external
+ bool includePronouns = btnPron->isChecked();
+ bool isItalian = filItalian->isChecked(); // TODO: Will get this value from external
-#ifndef QT_NO_DEBUG
- timer.start();
- qDebug() << "Start " << timer.elapsed();
-#endif
freVerbDic->deconjugate(word, infles);
resultPages->setUpdatesEnabled(false);
{
const InflectionDesc &d = *it;
-#ifndef QT_NO_DEBUG
- qDebug() << ">> Infinitive " << d.infinitive.c_str();
- qDebug() << " Template " << d.templateName.c_str();
-#endif
/* If this infinitive has been conjugated, we skip to the next infinitive */
if (d.infinitive == prevUTF8Infinitive && d.templateName == prevTemplateName) {
continue;
}
- /* FIXME:
- * In original source (Verbiste), this checking is done later,
- * after getConjugation(). I place it here to avoid calling again
- * multitimes getConjugation(), which is very slow.
- * We need to test more to see which place is more correct.
- */
VVVS conjug;
-#ifndef QT_NO_DEBUG
- qDebug() << " START getConjugation " << timer.elapsed();
-#endif
- getConjugation(*freVerbDic, d.infinitive, d.templateName, conjug,
- #ifndef QT_NO_DEBUG
- timer,
- #endif
- includePronouns);
-
-#ifndef QT_NO_DEBUG
- qDebug() << " getConjugation() returns: " << timer.elapsed();
-#endif
+ getConjugation(*freVerbDic, d.infinitive, d.templateName, conjug, includePronouns);
if (conjug.size() == 0 // if no tenses
|| conjug[0].size() == 0 // if no infinitive tense
}
std::string utf8Infinitive = conjug[0][0][0];
-#ifndef QT_NO_DEBUG
- qDebug() << " Infinitive " << utf8Infinitive.c_str();
- qDebug() << " Template " << d.templateName.c_str();
-#endif
/* Add result to GUI (not show yet) */
ResultPage *rsp = addResultPage(utf8Infinitive);