• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

kmail

  • sources
  • kde-4.12
  • kdepim
  • kmail
  • editor
snippetwidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * snippet feature from kdevelop/plugins/snippet/ *
3  * *
4  * Copyright (C) 2007 by Robert Gruber *
5  * rgruber@users.sourceforge.net *
6  * *
7  * This program is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * (at your option) any later version. *
11  * *
12  ***************************************************************************/
13 
14 #include "snippetwidget.h"
15 
16 #include "editor/kmcomposereditor.h"
17 
18 #include <mailcommon/snippets/snippetsmanager.h>
19 
20 #include <kactioncollection.h>
21 #include <klocale.h>
22 #include <kmenu.h>
23 
24 #include <QContextMenuEvent>
25 #include <QHeaderView>
26 
27 SnippetWidget::SnippetWidget( KMComposerEditor *editor, KActionCollection *actionCollection, QWidget *parent )
28  : QTreeView( parent )
29 {
30  header()->hide();
31  setAcceptDrops( true );
32  setDragEnabled( true );
33  setRootIsDecorated( true );
34  setAlternatingRowColors( true );
35  mSnippetsManager = new MailCommon::SnippetsManager( actionCollection, this, this );
36  mSnippetsManager->setEditor( editor, "insertPlainText", SIGNAL(insertSnippet()) );
37 
38  setModel( mSnippetsManager->model() );
39  setSelectionModel( mSnippetsManager->selectionModel() );
40 
41  connect( this, SIGNAL(activated(QModelIndex)),
42  mSnippetsManager->editSnippetAction(), SLOT(trigger()) );
43  connect( mSnippetsManager->model(), SIGNAL(rowsInserted(QModelIndex,int,int)),
44  this, SLOT(expandAll()) );
45  connect( mSnippetsManager->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
46  this, SLOT(expandAll()) );
47 
48  expandAll();
49 }
50 
51 SnippetWidget::~SnippetWidget()
52 {
53 }
54 
55 void SnippetWidget::contextMenuEvent( QContextMenuEvent *event )
56 {
57  KMenu popup;
58 
59  const bool itemSelected = mSnippetsManager->selectionModel()->hasSelection();
60 
61  bool canAddSnippet = true;
62  if ( itemSelected ) {
63  popup.addTitle( mSnippetsManager->selectedName() );
64  if ( mSnippetsManager->snippetGroupSelected() ) {
65  popup.addAction( mSnippetsManager->editSnippetGroupAction() );
66  popup.addAction( mSnippetsManager->deleteSnippetGroupAction() );
67  } else {
68  canAddSnippet = false; // subsnippets are not permitted
69  popup.addAction( mSnippetsManager->addSnippetAction() );
70  popup.addAction( mSnippetsManager->editSnippetAction() );
71  popup.addAction( mSnippetsManager->deleteSnippetAction() );
72  popup.addAction( mSnippetsManager->insertSnippetAction() );
73  }
74  popup.addSeparator();
75  } else {
76  popup.addTitle( i18n( "Text Snippets" ) );
77  }
78  if ( canAddSnippet ) {
79  popup.addAction( mSnippetsManager->addSnippetAction() );
80  }
81  popup.addAction( mSnippetsManager->addSnippetGroupAction() );
82 
83  popup.exec( event->globalPos() );
84 }
85 
86 void SnippetWidget::dropEvent ( QDropEvent * event )
87 {
88  if ( event->source() == this ) {
89  event->setDropAction( Qt::MoveAction );
90  }
91  QTreeView::dropEvent( event );
92 }
93 
kmcomposereditor.h
QWidget
SnippetWidget::contextMenuEvent
void contextMenuEvent(QContextMenuEvent *)
Definition: snippetwidget.cpp:55
snippetwidget.h
QTreeView
KMComposerEditor
Definition: kmcomposereditor.h:31
SnippetWidget::~SnippetWidget
~SnippetWidget()
Definition: snippetwidget.cpp:51
SnippetWidget::dropEvent
void dropEvent(QDropEvent *)
Definition: snippetwidget.cpp:86
SnippetWidget::SnippetWidget
SnippetWidget(KMComposerEditor *editor, KActionCollection *actionCollection, QWidget *parent=0)
Definition: snippetwidget.cpp:27
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:52 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kmail

Skip menu "kmail"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal