예제 #1
0
SnippetCompleter::SnippetCompleter(SnippetCollection *collection, QWidget *parentWidget) :
    QObject(parentWidget),
    snippetCollection(collection),
    completer(new QCompleter(this))
{
    completer->setWidget(parentWidget);
    completer->setCompletionMode(QCompleter::PopupCompletion);
    completer->setCaseSensitivity(Qt::CaseSensitive);

    connect(completer, SIGNAL(activated(QString)),
            this, SLOT(insertSnippet(QString)));

    CompletionListModel *model = new CompletionListModel(completer);
    connect(collection, SIGNAL(collectionChanged(SnippetCollection::CollectionChangedType,Snippet)),
            model, SLOT(snippetCollectionChanged(SnippetCollection::CollectionChangedType,Snippet)));
    completer->setModel(model);
}
예제 #2
0
void SnippetCompleter::performCompletion(const QString &textUnderCursor, const QStringList &words, const QRect &popupRect)
{
    const QString completionPrefix = textUnderCursor;

    // TODO: find more elegant solution
    qobject_cast<CompletionListModel*>(completer->model())->setWords(words);

    if (completionPrefix != completer->completionPrefix()) {
        completer->setCompletionPrefix(completionPrefix);
        completer->popup()->setCurrentIndex(completer->completionModel()->index(0, 0));
    }

    if (completer->completionCount() == 1) {
        insertSnippet(completer->currentCompletion());
    } else {
        QRect rect = popupRect;
        rect.setWidth(completer->popup()->sizeHintForColumn(0) +
                completer->popup()->verticalScrollBar()->sizeHint().width());
        completer->complete(rect);
    }
}
예제 #3
0
SnippetWidget::SnippetWidget(KMComposerEditorNg *editor, KActionCollection *actionCollection, QWidget *parent)
    : QTreeView(parent)
{
    header()->hide();
    setAcceptDrops(true);
    setDragEnabled(true);
    setRootIsDecorated(true);
    setAlternatingRowColors(true);
    mSnippetsManager = new MailCommon::SnippetsManager(actionCollection, this, this);
    mSnippetsManager->setEditor(editor, "insertPlainText", SIGNAL(insertSnippet()));

    setModel(mSnippetsManager->model());
    setSelectionModel(mSnippetsManager->selectionModel());

    connect(this, &QAbstractItemView::activated,
            mSnippetsManager->editSnippetAction(), &QAction::trigger);
    connect(mSnippetsManager->model(), &QAbstractItemModel::rowsInserted,
            this, &QTreeView::expandAll);
    connect(mSnippetsManager->model(), &QAbstractItemModel::rowsRemoved,
            this, &QTreeView::expandAll);

    expandAll();
}
예제 #4
0
QModelIndex SnippetsTableModel::createSnippet()
{
    Snippet snippet(m_activeGroupId);
    return insertSnippet(snippet);
}