mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
93 lines
3.4 KiB
C++
93 lines
3.4 KiB
C++
/***************************************************************************
|
|
* snippet feature from kdevelop/plugins/snippet/ *
|
|
* *
|
|
* Copyright (C) 2007 by Robert Gruber *
|
|
* rgruber@users.sourceforge.net *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "snippetwidget.h"
|
|
|
|
#include "editor/kmcomposereditor.h"
|
|
|
|
#include <mailcommon/snippets/snippetsmanager.h>
|
|
|
|
#include <kactioncollection.h>
|
|
#include <klocale.h>
|
|
#include <kmenu.h>
|
|
|
|
#include <QContextMenuEvent>
|
|
#include <QHeaderView>
|
|
|
|
SnippetWidget::SnippetWidget( KMComposerEditor *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, SIGNAL(activated(QModelIndex)),
|
|
mSnippetsManager->editSnippetAction(), SLOT(trigger()) );
|
|
connect( mSnippetsManager->model(), SIGNAL(rowsInserted(QModelIndex,int,int)),
|
|
this, SLOT(expandAll()) );
|
|
connect( mSnippetsManager->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
|
|
this, SLOT(expandAll()) );
|
|
|
|
expandAll();
|
|
}
|
|
|
|
SnippetWidget::~SnippetWidget()
|
|
{
|
|
}
|
|
|
|
void SnippetWidget::contextMenuEvent( QContextMenuEvent *event )
|
|
{
|
|
KMenu popup;
|
|
|
|
const bool itemSelected = mSnippetsManager->selectionModel()->hasSelection();
|
|
|
|
bool canAddSnippet = true;
|
|
if ( itemSelected ) {
|
|
popup.addTitle( mSnippetsManager->selectedName() );
|
|
if ( mSnippetsManager->snippetGroupSelected() ) {
|
|
popup.addAction( mSnippetsManager->editSnippetGroupAction() );
|
|
popup.addAction( mSnippetsManager->deleteSnippetGroupAction() );
|
|
} else {
|
|
canAddSnippet = false; // subsnippets are not permitted
|
|
popup.addAction( mSnippetsManager->addSnippetAction() );
|
|
popup.addAction( mSnippetsManager->editSnippetAction() );
|
|
popup.addAction( mSnippetsManager->deleteSnippetAction() );
|
|
popup.addAction( mSnippetsManager->insertSnippetAction() );
|
|
}
|
|
popup.addSeparator();
|
|
} else {
|
|
popup.addTitle( i18n( "Text Snippets" ) );
|
|
}
|
|
if ( canAddSnippet ) {
|
|
popup.addAction( mSnippetsManager->addSnippetAction() );
|
|
}
|
|
popup.addAction( mSnippetsManager->addSnippetGroupAction() );
|
|
|
|
popup.exec( event->globalPos() );
|
|
}
|
|
|
|
void SnippetWidget::dropEvent ( QDropEvent * event )
|
|
{
|
|
if ( event->source() == this ) {
|
|
event->setDropAction( Qt::MoveAction );
|
|
}
|
|
QTreeView::dropEvent( event );
|
|
}
|
|
|