void KateFileTree::slotFixOpenWithMenu() { QMenu *menu = (QMenu*)sender(); menu->clear(); KTextEditor::Document *doc = model()->data(m_indexContextMenu, KateFileTreeModel::DocumentRole).value<KTextEditor::Document *>(); if (!doc) return; // get a list of appropriate services. KMimeType::Ptr mime = KMimeType::mimeType(doc->mimeType()); //kDebug(13001) << "mime type: " << mime->name(); QAction *a = 0; KService::List offers = KMimeTypeTrader::self()->query(mime->name(), "Application"); // for each one, insert a menu item... for(KService::List::Iterator it = offers.begin(); it != offers.end(); ++it) { KService::Ptr service = *it; if (service->name() == "Kate") continue; a = menu->addAction(KIcon(service->icon()), service->name()); a->setData(service->entryPath()); } // append "Other..." to call the KDE "open with" dialog. a = menu->addAction(i18n("&Other...")); a->setData(QString()); }
void ModelTest::completionItems() { KTextEditor::Document* doc = KTextEditor::Editor::instance()->createDocument(0); QFETCH(QString, text); QFETCH(QString, type); KTextEditor::Cursor position; QString textBeforeCursor = text.left(text.indexOf('|')); position.setLine(textBeforeCursor.count('\n')); position.setColumn(textBeforeCursor.mid(textBeforeCursor.lastIndexOf('\n')).length()); text.replace('|', ""); QTemporaryFile file("XXXXXXXXX."+type); file.open(); file.write(text.toUtf8()); file.close(); doc->openUrl(KUrl("file://"+QDir::current().absoluteFilePath(file.fileName()))); QCOMPARE(doc->mimeType(), QString("text/")+type); KTextEditor::View* view = doc->createView(0); CodeCompletionModel* model = new CodeCompletionModel(doc); QCOMPARE(model->rowCount(), 0); model->completionInvoked(view, model->completionRange(view, position), KTextEditor::CodeCompletionModel::ManualInvocation); QStringList completions; for (int i=0; i < model->rowCount(); ++i) { completions << model->data(model->index(i, CodeCompletionModel::Name), Qt::DisplayRole).toString(); } kDebug() << "completions" << completions; QFETCH(QStringList, result); foreach (const QString &i, result) { QVERIFY(completions.contains(i)); }