diff --git a/src/linguist/linguist/mainwindow.cpp b/src/linguist/linguist/mainwindow.cpp index 9f7109c8545f9e62c7f85c31c44580221f4bb625..355754b212b72c070ca331ff817f04adefb15ef2 100644 --- a/src/linguist/linguist/mainwindow.cpp +++ b/src/linguist/linguist/mainwindow.cpp @@ -1933,6 +1933,10 @@ void MainWindow::setupMenuBar() connect(m_ui.actionIncreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(increaseFontSize())); connect(m_ui.actionDecreaseZoom, SIGNAL(triggered()), m_messageEditor, SLOT(decreaseFontSize())); connect(m_ui.actionResetZoomToDefault, SIGNAL(triggered()), m_messageEditor, SLOT(resetFontSize())); + connect(m_ui.actionShowMoreGuesses, SIGNAL(triggered()), m_phraseView, SLOT(moreGuesses())); + connect(m_ui.actionShowFewerGuesses, SIGNAL(triggered()), m_phraseView, SLOT(fewerGuesses())); + connect(m_phraseView, SIGNAL(showFewerGuessesAvailable(bool)), m_ui.actionShowFewerGuesses, SLOT(setEnabled(bool))); + connect(m_ui.actionResetGuessesToDefault, SIGNAL(triggered()), m_phraseView, SLOT(resetNumGuesses())); m_ui.menuViewViews->addAction(m_contextDock->toggleViewAction()); m_ui.menuViewViews->addAction(m_messagesDock->toggleViewAction()); m_ui.menuViewViews->addAction(m_phrasesDock->toggleViewAction()); @@ -2622,6 +2626,8 @@ void MainWindow::readConfig() m_messageEditor->setFontSize( config.value(settingPath("Options/EditorFontsize"), font().pointSize()).toReal()); + m_phraseView->setMaxCandidates(config.value(settingPath("Options/NumberOfGuesses"), + PhraseView::getDefaultMaxCandidates()).toInt()); recentFiles().readConfig(); @@ -2657,6 +2663,7 @@ void MainWindow::writeConfig() recentFiles().writeConfig(); config.setValue(settingPath("Options/EditorFontsize"), m_messageEditor->fontSize()); + config.setValue(settingPath("Options/NumberOfGuesses"), m_phraseView->getMaxCandidates()); config.beginWriteArray(settingPath("OpenedPhraseBooks"), m_phraseBooks.size()); diff --git a/src/linguist/linguist/mainwindow.ui b/src/linguist/linguist/mainwindow.ui index c090159125239a35c1c9934d40712b51eabf0527..6b4922e16aa04923c1d39646e5389dc9d2e837cd 100644 --- a/src/linguist/linguist/mainwindow.ui +++ b/src/linguist/linguist/mainwindow.ui @@ -110,6 +110,15 @@ <addaction name="separator"/> <addaction name="actionResetZoomToDefault"/> </widget> + <widget class="QMenu" name="menuGuesses"> + <property name="title"> + <string>Guesses</string> + </property> + <addaction name="actionShowMoreGuesses"/> + <addaction name="actionShowFewerGuesses"/> + <addaction name="separator"/> + <addaction name="actionResetGuessesToDefault"/> + </widget> <addaction name="actionResetSorting"/> <addaction name="actionDisplayGuesses"/> <addaction name="actionStatistics"/> @@ -117,6 +126,7 @@ <addaction name="actionVisualizeWhitespace"/> <addaction name="separator"/> <addaction name="menuZoom"/> + <addaction name="menuGuesses"/> <addaction name="separator"/> <addaction name="menuToolbars"/> <addaction name="menuViewViews"/> @@ -926,6 +936,30 @@ <string>Ctrl+0</string> </property> </action> + <action name="actionShowMoreGuesses"> + <property name="text"> + <string>Show more</string> + </property> + <property name="shortcut"> + <string>Alt++</string> + </property> + </action> + <action name="actionShowFewerGuesses"> + <property name="text"> + <string>Show fewer</string> + </property> + <property name="shortcut"> + <string>Alt+-</string> + </property> + </action> + <action name="actionResetGuessesToDefault"> + <property name="text"> + <string>Reset to default</string> + </property> + <property name="shortcut"> + <string>Alt+0</string> + </property> + </action> </widget> <resources/> <connections/> diff --git a/src/linguist/linguist/phraseview.cpp b/src/linguist/linguist/phraseview.cpp index e1d31954ebbd6a9134b35e379c318ec4001fba5e..39b02c8cd5de69acca51770cebe1608300aa2faa 100644 --- a/src/linguist/linguist/phraseview.cpp +++ b/src/linguist/linguist/phraseview.cpp @@ -44,9 +44,6 @@ QT_BEGIN_NAMESPACE -// Maximum number of guesses to display -static const int MaxCandidates = 5; - static QString phraseViewHeaderKey() { return settingPath("PhraseViewHeader"); @@ -154,6 +151,30 @@ void PhraseView::editPhrase() edit(currentIndex()); } +void PhraseView::setMaxCandidates(const int max) +{ + m_maxCandidates = max; + emit showFewerGuessesAvailable(m_maxCandidates > DefaultMaxCandidates); +} + +void PhraseView::moreGuesses() +{ + setMaxCandidates(m_maxCandidates + DefaultMaxCandidates); + setSourceText(m_modelIndex, m_sourceText); +} + +void PhraseView::fewerGuesses() +{ + setMaxCandidates(m_maxCandidates - DefaultMaxCandidates); + setSourceText(m_modelIndex, m_sourceText); +} + +void PhraseView::resetNumGuesses() +{ + setMaxCandidates(DefaultMaxCandidates); + setSourceText(m_modelIndex, m_sourceText); +} + static CandidateList similarTextHeuristicCandidates(MultiDataModel *model, int mi, const char *text, int maxCandidates) { @@ -217,7 +238,7 @@ void PhraseView::setSourceText(int model, const QString &sourceText) if (!sourceText.isEmpty() && m_doGuesses) { CandidateList cl = similarTextHeuristicCandidates(m_dataModel, model, - sourceText.toLatin1(), MaxCandidates); + sourceText.toLatin1(), m_maxCandidates); int n = 0; foreach (const Candidate &candidate, cl) { QString def; diff --git a/src/linguist/linguist/phraseview.h b/src/linguist/linguist/phraseview.h index 2e315b7599bd2e06453f19233e0b9e6d537f1d76..fbc4610fe04ee1802554e3f0bd6e15e6e2f62892 100644 --- a/src/linguist/linguist/phraseview.h +++ b/src/linguist/linguist/phraseview.h @@ -36,6 +36,8 @@ QT_BEGIN_NAMESPACE +static const int DefaultMaxCandidates = 5; + class MultiDataModel; class PhraseModel; @@ -73,9 +75,13 @@ public: public slots: void toggleGuessing(); void update(); + int getMaxCandidates() const { return m_maxCandidates; } + void setMaxCandidates(const int max); + static int getDefaultMaxCandidates() { return DefaultMaxCandidates; } signals: void phraseSelected(int latestModel, const QString &phrase); + void showFewerGuessesAvailable(bool canShow); protected: // QObject @@ -88,6 +94,9 @@ private slots: void selectPhrase(const QModelIndex &index); void selectPhrase(); void editPhrase(); + void moreGuesses(); + void fewerGuesses(); + void resetNumGuesses(); private: QList<Phrase *> getPhrases(int model, const QString &sourceText); @@ -100,6 +109,7 @@ private: QString m_sourceText; int m_modelIndex; bool m_doGuesses; + int m_maxCandidates = DefaultMaxCandidates; }; QT_END_NAMESPACE