Warning, file /education/kiten/app/searchstringinput.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 This file is part of Kiten, a KDE Japanese Reference Tool... 0003 SPDX-FileCopyrightText: 2006 Joseph Kerian <jkerian@gmail.com> 0004 SPDX-FileCopyrightText: 2011 Daniel E. Moctezuma <democtezuma@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "searchstringinput.h" 0010 0011 #include "kiten.h" 0012 #include "kitenconfig.h" 0013 0014 #include <KActionCollection> 0015 #include <KHistoryComboBox> 0016 #include <KLocalizedString> 0017 #include <KSelectAction> 0018 #include <KToolBar> 0019 0020 #include <QAction> 0021 #include <QDebug> 0022 #include <QLineEdit> 0023 0024 SearchStringInput::SearchStringInput(Kiten *parent) 0025 : QObject(parent) 0026 { 0027 _parent = parent; 0028 _actionFilterRare = _parent->actionCollection()->add<KSelectAction>(QStringLiteral("filter_rare")); 0029 _actionFilterRare->setText(i18n("Filter Type")); 0030 _actionFilterRare->addAction(i18n("No filter")); 0031 _actionFilterRare->addAction(i18n("Filter out rare")); 0032 _actionFilterRare->addAction(i18n("Common/Uncommon")); 0033 0034 _actionSearchSection = _parent->actionCollection()->add<KSelectAction>(QStringLiteral("search_searchType")); 0035 _actionSearchSection->setText(i18n("Match Type")); 0036 _actionSearchSection->addAction(i18n("Exact Match")); 0037 _actionSearchSection->addAction(i18n("Match Beginning")); 0038 _actionSearchSection->addAction(i18n("Match Ending")); 0039 _actionSearchSection->addAction(i18n("Match Anywhere")); 0040 0041 _actionSelectWordType = _parent->actionCollection()->add<KSelectAction>(QStringLiteral("search_wordType")); 0042 _actionSelectWordType->setText(i18n("Word Type")); 0043 _actionSelectWordType->addAction(i18n("Any")); 0044 _actionSelectWordType->addAction(i18n("Verb")); 0045 _actionSelectWordType->addAction(i18n("Noun")); 0046 _actionSelectWordType->addAction(i18n("Adjective")); 0047 _actionSelectWordType->addAction(i18n("Adverb")); 0048 _actionSelectWordType->addAction(i18n("Prefix")); 0049 _actionSelectWordType->addAction(i18n("Suffix")); 0050 _actionSelectWordType->addAction(i18n("Expression")); 0051 0052 _actionTextInput = new KHistoryComboBox(_parent); 0053 _actionTextInput->setDuplicatesEnabled(false); 0054 _actionTextInput->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); 0055 updateFontFromConfig(); 0056 0057 _actionFocusInput = _parent->actionCollection()->addAction(QStringLiteral("focusinputfield"), this, SLOT(focusInput())); 0058 _parent->actionCollection()->setDefaultShortcut(_actionFocusInput, Qt::CTRL + Qt::Key_L); 0059 _actionFocusInput->setText(i18n("Focus input field")); 0060 0061 QWidgetAction *actionsearchbox = new QWidgetAction(this); 0062 actionsearchbox->setText(i18n("Search Bar")); 0063 actionsearchbox->setDefaultWidget(_actionTextInput); 0064 _parent->actionCollection()->addAction(QStringLiteral("searchbox"), actionsearchbox); 0065 0066 if (!_actionFilterRare || !_actionSearchSection || !_actionSelectWordType || !actionsearchbox) { 0067 qCritical() << "Error creating user interface elements: " << !_actionFilterRare << !_actionSearchSection << !_actionSelectWordType << !actionsearchbox; 0068 } 0069 0070 // connect(actionTextInput, SIGNAL(returnPressed()), this, SIGNAL(search())); 0071 connect(_actionTextInput, static_cast<void (KHistoryComboBox::*)(const QString &)>(&KHistoryComboBox::textActivated), this, &SearchStringInput::test); 0072 } 0073 0074 void SearchStringInput::focusInput() 0075 { 0076 _actionTextInput->setFocus(); 0077 _actionTextInput->lineEdit()->selectAll(); 0078 } 0079 0080 DictQuery SearchStringInput::getSearchQuery() const 0081 { 0082 DictQuery result(_actionTextInput->currentText()); 0083 0084 if (_actionFilterRare->currentItem() == DictQuery::Rare) { 0085 result.setProperty(QStringLiteral("common"), QStringLiteral("1")); 0086 } 0087 0088 result.setFilterType((DictQuery::FilterType)_actionFilterRare->currentItem()); 0089 result.setMatchType((DictQuery::MatchType)_actionSearchSection->currentItem()); 0090 result.setMatchWordType((DictQuery::MatchWordType)_actionSelectWordType->currentItem()); 0091 0092 return result; 0093 } 0094 0095 void SearchStringInput::setDefaultsFromConfig() 0096 { 0097 KitenConfigSkeleton *config = KitenConfigSkeleton::self(); 0098 _actionFilterRare->setCurrentItem(config->filter_rare()); 0099 _actionSearchSection->setCurrentItem(config->search_precision()); 0100 _actionSelectWordType->setCurrentItem(config->search_limit_to_wordtype()); 0101 } 0102 0103 void SearchStringInput::setSearchQuery(const DictQuery &query) 0104 { 0105 qDebug() << "------------------------------Set Triggered"; 0106 // First we set the various actions according to the query 0107 _actionFilterRare->setCurrentItem(query.getFilterType()); 0108 _actionSearchSection->setCurrentItem(query.getMatchType()); 0109 _actionSelectWordType->setCurrentItem(query.getMatchWordType()); 0110 0111 // Secondly we remove aspects that are visible in the gui from the search string 0112 DictQuery copy(query); 0113 foreach (KToolBar *bar, _parent->toolBars()) { 0114 if (bar->widgetForAction(_actionFilterRare) != nullptr) 0115 copy.removeProperty(QStringLiteral("common")); 0116 0117 if (bar->widgetForAction(_actionSelectWordType) != nullptr) 0118 copy.removeProperty(QStringLiteral("type")); 0119 } 0120 0121 _actionTextInput->addToHistory(copy.toString()); // Update history and completion list 0122 _actionTextInput->setCurrentItem(copy.toString(), true); 0123 _actionTextInput->reset(); // Call this manually when you call setCurrentItem 0124 } 0125 0126 void SearchStringInput::test() 0127 { 0128 qDebug() << "test1"; 0129 Q_EMIT search(); 0130 qDebug() << "test2"; 0131 } 0132 0133 void SearchStringInput::updateFontFromConfig() 0134 { 0135 _actionTextInput->setFont(KitenConfigSkeleton::self()->font()); 0136 }