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::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 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 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 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); }
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); }