void Test_KCompletion::substringCompletion_Insertion() { KCompletion completion; completion.setSoundsEnabled(false); completion.setCompletionMode(KGlobalSettings::CompletionAuto); completion.setOrder(KCompletion::Insertion); completion.setItems(strings); QVERIFY(completion.items().count() == 4); QStringList matches = completion.substringCompletion("c"); QVERIFY(matches.count() == 4); QCOMPARE(matches[0], clampet); QCOMPARE(matches[1], coolcat); QCOMPARE(matches[2], carpet); QCOMPARE(matches[3], carp); matches = completion.substringCompletion("ca"); QVERIFY(matches.count() == 3); QCOMPARE(matches[0], coolcat); QCOMPARE(matches[1], carpet); QCOMPARE(matches[2], carp); matches = completion.substringCompletion("car"); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], carp); matches = completion.substringCompletion("pet"); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], clampet); QCOMPARE(matches[1], carpet); }
void MetaQueryWidget::populateComboBox( QStringList results ) { QObject* query = sender(); if( !query ) return; QWeakPointer<KComboBox> combo = m_runningQueries.value(query); if( combo.isNull() ) return; // note: adding items seems to reset the edit text, so we have // to take care of that. disconnect( combo.data(), 0, this, 0 ); // want the results unique and sorted const QSet<QString> dataSet = results.toSet(); QStringList dataList = dataSet.toList(); dataList.sort(); combo.data()->addItems( dataList ); KCompletion* comp = combo.data()->completionObject(); comp->setItems( dataList ); // reset the text and re-enable the signal combo.data()->setEditText( m_filter.value ); connect( combo.data(), SIGNAL(editTextChanged( const QString& ) ), SLOT(valueChanged(const QString&)) ); }
void Test_KCompletion::sortedOrder() { KCompletion completion; completion.setSoundsEnabled(false); QSignalSpy spy1(&completion, SIGNAL(match(QString))); QSignalSpy spy3(&completion, SIGNAL(multipleMatches())); completion.setOrder(KCompletion::Sorted); QVERIFY(completion.order() == KCompletion::Sorted); completion.setItems(strings); QVERIFY(completion.items().count() == 4); completion.setCompletionMode(KGlobalSettings::CompletionShell); QCOMPARE(completion.makeCompletion("ca"), QString("carp")); QVERIFY(spy1.count() == 1); QCOMPARE(spy1.takeFirst().at(0).toString(), QString("carp")); QVERIFY(spy3.count() == 1); spy3.takeFirst(); QSignalSpy spy2(&completion, SIGNAL(matches(QStringList))); completion.makeCompletion("ca"); QCOMPARE(spy2.count(), 1); QVERIFY(spy3.count() == 0); // shouldn't be signaled on 2nd call QStringList matches = spy2.takeFirst().at(0).toStringList(); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carp); QCOMPARE(matches[1], carpet); completion.setCompletionMode(KGlobalSettings::CompletionAuto); QCOMPARE(completion.makeCompletion("ca"), carp); QVERIFY(spy1.count() == 1); QCOMPARE(spy1.takeFirst().at(0).toString(), carp); }
void Test_KCompletion::allMatches_Weighted() { KCompletion completion; completion.setSoundsEnabled(false); completion.setCompletionMode(KGlobalSettings::CompletionAuto); completion.setOrder(KCompletion::Weighted); completion.setItems(wstrings); QVERIFY(completion.items().count() == 4); QStringList matches = completion.allMatches("c"); QVERIFY(matches.count() == 4); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], clampet); QCOMPARE(matches[2], coolcat); QCOMPARE(matches[3], carp); matches = completion.allMatches("ca"); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], carp); matches = completion.allMatches("pet"); QVERIFY(matches.count() == 0); }
void KHistoryComboBox::setHistoryItems( const QStringList &items, bool setCompletionList ) { QStringList insertingItems = items; KComboBox::clear(); // limit to maxCount() const int itemCount = insertingItems.count(); const int toRemove = itemCount - maxCount(); if (toRemove >= itemCount) { insertingItems.clear(); } else { for (int i = 0; i < toRemove; ++i) insertingItems.pop_front(); } insertItems( insertingItems ); if ( setCompletionList && useCompletion() ) { // we don't have any weighting information here ;( KCompletion *comp = completionObject(); comp->setOrder( KCompletion::Insertion ); comp->setItems( insertingItems ); comp->setOrder( KCompletion::Weighted ); } clearEditText(); }
void Test_KCompletion::allMatches_Insertion() { KCompletion completion; completion.setSoundsEnabled(false); completion.setCompletionMode(KCompletion::CompletionAuto); completion.setOrder(KCompletion::Insertion); completion.setItems(strings); QVERIFY(completion.items().count() == 4); QStringList matches = completion.allMatches(QStringLiteral("c")); QVERIFY(matches.count() == 4); QCOMPARE(matches[0], clampet); QCOMPARE(matches[1], coolcat); QCOMPARE(matches[2], carpet); QCOMPARE(matches[3], carp); matches = completion.allMatches(QStringLiteral("ca")); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], carp); matches = completion.allMatches(QStringLiteral("pet")); QVERIFY(matches.count() == 0); }
void Test_KCompletion::substringCompletion_Weighted() { KCompletion completion; completion.setSoundsEnabled(false); completion.setCompletionMode(KCompletion::CompletionAuto); completion.setOrder(KCompletion::Weighted); completion.setItems(wstrings); QVERIFY(completion.items().count() == 4); QStringList matches = completion.substringCompletion(QStringLiteral("c")); QVERIFY(matches.count() == 4); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], clampet); QCOMPARE(matches[2], coolcat); QCOMPARE(matches[3], carp); matches = completion.substringCompletion(QStringLiteral("ca")); QVERIFY(matches.count() == 3); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], coolcat); QCOMPARE(matches[2], carp); matches = completion.substringCompletion(QStringLiteral("car")); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], carp); matches = completion.substringCompletion(QStringLiteral("pet")); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], clampet); }
void // virtual KClassicGreeter::loadUsers( const QStringList &users ) { KCompletion *userNamesCompletion = new KCompletion; userNamesCompletion->setItems( users ); loginEdit->setCompletionObject( userNamesCompletion ); loginEdit->setAutoDeleteCompletionObject( true ); loginEdit->setCompletionMode( KGlobalSettings::CompletionAuto ); }
ConsoleDockWidget::ConsoleDockWidget( ProjectModel *projectModel, KActionMenu *showDocksAction, QWidget *parent ) : AbstractDockWidget( i18nc("@title:window Dock title", "Console"), showDocksAction, parent ), m_consoleWidget(0), m_commandLineEdit(0), m_cancelButton(0), m_consoleHistoryIndex(-1), m_projectModel(projectModel), m_state(WaitingForInput) { setObjectName( "console" ); setWhatsThis( i18nc("@info:whatsthis", "<title>A debugger console</title>" "<para>Provides some commands (type <icode>.help</icode>) and can " "execute script code in the current script context. If values are altered " "by a console command they are also altered in a running script.</para>") ); QWidget *container = new QWidget( this ); container->setMinimumSize( 150, 100 ); m_consoleWidget = new QPlainTextEdit( container ); m_consoleWidget->setReadOnly( true ); m_consoleWidget->setFont( KGlobalSettings::fixedFont() ); m_consoleWidget->setContextMenuPolicy( Qt::CustomContextMenu ); m_commandLineEdit = new KLineEdit( container ); m_commandLineEdit->setFont( KGlobalSettings::fixedFont() ); m_commandLineEdit->setClickMessage( i18nc("@info/plain", "Enter a command, eg. '.help'") ); m_cancelButton = new QToolButton( container ); m_cancelButton->setToolButtonStyle( Qt::ToolButtonIconOnly ); m_cancelButton->setToolTip( i18nc("@info:tooltip", "Cancel evaluation and abort debugger") ); m_cancelButton->setIcon( KIcon("process-stop") ); m_cancelButton->hide(); QHBoxLayout *inputBarLayout = new QHBoxLayout(); inputBarLayout->setContentsMargins( 0, 0, 0, 0 ); inputBarLayout->addWidget( m_commandLineEdit ); inputBarLayout->addWidget( m_cancelButton ); QVBoxLayout *consoleLayout = new QVBoxLayout( container ); consoleLayout->setSpacing( 0 ); consoleLayout->setContentsMargins( 0, 0, 0, 0 ); consoleLayout->addWidget( m_consoleWidget ); consoleLayout->addLayout( inputBarLayout ); setWidget( container ); connect( m_consoleWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenu(QPoint)) ); connect( m_commandLineEdit, SIGNAL(returnPressed(QString)), this, SLOT(executeCommand(QString)) ); connect( m_cancelButton, SIGNAL(clicked(bool)), this, SLOT(cancelEvaluation()) ); m_consoleHistoryIndex = -1; m_commandLineEdit->installEventFilter( this ); KCompletion *completion = m_commandLineEdit->completionObject(); completion->setItems( Debugger::ConsoleCommand::defaultCompletions() ); connect( projectModel, SIGNAL(activeProjectAboutToChange(Project*,Project*)), this, SLOT(activeProjectAboutToChange(Project*,Project*)) ); setState( WaitingForInput ); }
void JourneySearchParser::doCorrections( KLineEdit *lineEdit, QString *searchLine, int cursorPos, const QStringList &words, int removedWordsFromLeft ) { int selStart = -1; int selLength = 0; int pos = searchLine->lastIndexOf( ' ', cursorPos - 1 ); int posEnd = searchLine->indexOf( ' ', cursorPos ); if ( posEnd == -1 ) { posEnd = searchLine->length(); } QString lastWordBeforeCursor; if ( posEnd == cursorPos && pos != -1 && !( lastWordBeforeCursor = searchLine->mid( pos, posEnd - pos ).trimmed() ).isEmpty() ) { if ( timeKeywordsAt().contains( lastWordBeforeCursor, Qt::CaseInsensitive ) ) { // Automatically add the current time after 'at' QString formattedTime = KGlobal::locale()->formatTime( QTime::currentTime() ); searchLine->insert( posEnd, ' ' + formattedTime ); selStart = posEnd + 1; // +1 for the added space selLength = formattedTime.length(); } else if ( timeKeywordsIn().contains( lastWordBeforeCursor, Qt::CaseInsensitive ) ) { // Automatically add '5 minutes' after 'in' searchLine->insert( posEnd, ' ' + relativeTimeString(5) ); selStart = posEnd + 1; // +1 for the added space selLength = 1; // only select the number (5) } else { QStringList completionItems; completionItems << timeKeywordsAt() << timeKeywordsIn() << timeKeywordsTomorrow() << departureKeywords() << arrivalKeywords(); KCompletion *comp = lineEdit->completionObject( false ); comp->setItems( completionItems ); comp->setIgnoreCase( true ); QString completion = comp->makeCompletion( lastWordBeforeCursor ); setJourneySearchWordCompletion( lineEdit, completion ); } } // Select an appropriate substring after inserting something if ( selStart != -1 ) { QStringList removedWords = ( QStringList )words.mid( 0, removedWordsFromLeft ); QString removedPart = removedWords.join( " " ).trimmed(); QString correctedSearch; if ( removedPart.isEmpty() ) { correctedSearch = *searchLine; } else { correctedSearch = removedPart + ' ' + *searchLine; selStart += removedPart.length() + 1; } lineEdit->setText( correctedSearch ); lineEdit->setSelection( selStart, selLength ); } }
void Test_KCompletion::cycleMatches_Weighted() { KCompletion completion; completion.setSoundsEnabled(false); completion.setOrder(KCompletion::Weighted); completion.setItems(wstrings); completion.setCompletionMode(KGlobalSettings::CompletionAuto); completion.makeCompletion("ca"); QCOMPARE(completion.nextMatch(), carpet); QCOMPARE(completion.nextMatch(), carp); QCOMPARE(completion.previousMatch(), carpet); QCOMPARE(completion.previousMatch(), carp); }
void Test_KCompletion::cycleMatches_Sorted() { KCompletion completion; completion.setSoundsEnabled(false); completion.setOrder(KCompletion::Sorted); completion.setItems(strings); completion.setCompletionMode(KCompletion::CompletionAuto); completion.makeCompletion(QStringLiteral("ca")); QCOMPARE(completion.nextMatch(), carp); QCOMPARE(completion.nextMatch(), carpet); QCOMPARE(completion.previousMatch(), carp); QCOMPARE(completion.previousMatch(), carpet); }
FITSHeaderEditAddUnitDialog::FITSHeaderEditAddUnitDialog(const QString& unit, QWidget *parent) : KDialog(parent) { QWidget* mainWidget = new QWidget(this); ui.setupUi(mainWidget); setMainWidget( mainWidget ); setWindowTitle(i18n("Specify the new unit")); setButtons( KDialog::Ok | KDialog::Cancel ); setButtonText(KDialog::Ok, i18n("&Add unit")); KCompletion* keyCompletion = new KCompletion; keyCompletion->setItems(FITSFilter::units()); if (!unit.isEmpty()) { ui.kleUnit->setText(unit); } ui.kleUnit->setCompletionObject(keyCompletion); ui.kleUnit->setAutoDeleteCompletionObject(true); connect(this, SIGNAL(okClicked()), this, SLOT(addUnit())); setAttribute(Qt::WA_DeleteOnClose); }
/*! \class FITSHeaderEditNewKeywordDialog * \brief Dialog class for adding new keywords to the FITSHeaderEditDialog's table. * \since 2.2.0 * \ingroup widgets */ FITSHeaderEditNewKeywordDialog::FITSHeaderEditNewKeywordDialog(QWidget *parent) : KDialog(parent) { QWidget* mainWidget = new QWidget(this); ui.setupUi(mainWidget); setMainWidget( mainWidget ); setWindowTitle(i18n("Specify the new keyword")); setButtons( KDialog::Ok | KDialog::Cancel ); setButtonText(KDialog::Ok, i18n("&Add keyword")); setAttribute(Qt::WA_DeleteOnClose); KCompletion* keyCompletion = new KCompletion; keyCompletion->setItems(FITSFilter::standardKeywords()); ui.kleKey->setCompletionObject(keyCompletion); ui.kleKey->setAutoDeleteCompletionObject(true); ui.kleValue->setPlaceholderText(i18n("Specify the value")); ui.kleComment->setPlaceholderText(i18n("Specify the comment")); ui.kleKey->setMaxLength(FLEN_KEYWORD); ui.kleValue->setMaxLength(FLEN_VALUE); ui.kleComment->setMaxLength(FLEN_COMMENT); }
AddEditLink::AddEditLink( QWidget *parent ) : KDialog( parent ) { setAttribute(Qt::WA_DeleteOnClose); QWidget *dialog = new QWidget( this ); ui.setupUi( dialog ); ui.btnClear->setIcon(KIcon("edit-clear")); this->setMainWidget( dialog ); this->resize( dialog->width(), dialog->height() ); confGroup = new KConfigGroup( KGlobal::config(), QString::fromLatin1("AddEditLinkDialog") ); QStringList linksList = confGroup->readEntry("LinksCache", QStringList()); ui.txtAddress->addItems(linksList); KCompletion *comp = ui.txtAddress->completionObject( true ); comp->setItems(linksList); ui.txtAddress->setCompletionMode(KGlobalSettings::CompletionPopupAuto); ui.txtAddress->setFocus(); resize( confGroup->readEntry("Size", this->size()) ); connect(ui.btnClear, SIGNAL(clicked(bool)), SLOT(slotClearLinkCache()) ); }
void Test_KCompletion::weightedOrder() { KCompletion completion; completion.setSoundsEnabled(false); QSignalSpy spy1(&completion, SIGNAL(match(QString))); QSignalSpy spy3(&completion, SIGNAL(multipleMatches())); completion.setOrder(KCompletion::Weighted); QVERIFY(completion.order() == KCompletion::Weighted); completion.setItems(wstrings); QVERIFY(completion.items().count() == 4); completion.setCompletionMode(KCompletion::CompletionShell); QCOMPARE(completion.makeCompletion(QStringLiteral("ca")), QStringLiteral("carp")); spy1.takeFirst(); // empty the list QVERIFY(spy3.count() == 1); spy3.takeFirst(); QSignalSpy spy2(&completion, SIGNAL(matches(QStringList))); completion.makeCompletion(QStringLiteral("ca")); QCOMPARE(spy2.count(), 1); QVERIFY(spy3.count() == 0); // shouldn't be signaled on 2nd call QStringList matches = spy2.takeFirst().at(0).toStringList(); QVERIFY(matches.count() == 2); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], carp); completion.setCompletionMode(KCompletion::CompletionAuto); QCOMPARE(completion.makeCompletion(QStringLiteral("ca")), carpet); matches = completion.substringCompletion(QStringLiteral("ca")); QVERIFY(matches.count() == 3); QCOMPARE(matches[0], carpet); QCOMPARE(matches[1], coolcat); QCOMPARE(matches[2], carp); }