You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.4 KiB
93 lines
3.4 KiB
/*************************************************************************** |
|
* 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 ); |
|
} |
|
|
|
|