From e9ae80694875f869892f13f4fcaf1170a00dea41 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kommander/editor/actionlistview.cpp | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 kommander/editor/actionlistview.cpp (limited to 'kommander/editor/actionlistview.cpp') diff --git a/kommander/editor/actionlistview.cpp b/kommander/editor/actionlistview.cpp new file mode 100644 index 00000000..0db57f76 --- /dev/null +++ b/kommander/editor/actionlistview.cpp @@ -0,0 +1,111 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "actionlistview.h" +#include +#include + +#include + +ActionListView::ActionListView( QWidget *parent, const char *name ) + : QListView( parent, name ) +{ + header()->setStretchEnabled( true ); + setRootIsDecorated( true ); + setSorting( -1 ); + connect( this, SIGNAL( contextMenuRequested( QListViewItem *, const QPoint &, int ) ), + this, SLOT( rmbMenu( QListViewItem *, const QPoint & ) ) ); +} + +ActionItem::ActionItem( QListView *lv, QAction *ac ) + : QListViewItem( lv ), a( 0 ), g( 0 ) +{ + if ( ac->inherits( "QActionGroup" ) ) + g = (QDesignerActionGroup*)ac; + else + a = (QDesignerAction*)ac; + setDragEnabled( true ); +} + +ActionItem::ActionItem( QListViewItem *i, QAction *ac ) + : QListViewItem( i ), a( 0 ), g( 0 ) +{ + if ( ac->inherits( "QActionGroup" ) ) + g = (QDesignerActionGroup*)ac; + else + a = (QDesignerAction*)ac; + setDragEnabled( true ); + moveToEnd(); +} + +void ActionItem::moveToEnd() +{ + QListViewItem *i = this; + while ( i->nextSibling() ) + i = i->nextSibling(); + if ( i != this ) + moveItem( i ); +} + +QDragObject *ActionListView::dragObject() +{ + ActionItem *i = (ActionItem*)currentItem(); + if ( !i ) + return 0; + QStoredDrag *drag = 0; + if ( i->action() ) { + drag = new QStoredDrag( "application/x-designer-actions", viewport() ); + QString s = QString::number( (long)i->action() ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( i->action()->iconSet().pixmap() ); + } else { + drag = new QStoredDrag( "application/x-designer-actiongroup", viewport() ); + QString s = QString::number( (long)i->actionGroup() ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( i->actionGroup()->iconSet().pixmap() ); + } + return drag; +} + +void ActionListView::rmbMenu( QListViewItem *i, const QPoint &p ) +{ + QPopupMenu *popup = new QPopupMenu( this ); + popup->insertItem( i18n("New &Action" ), 0 ); + popup->insertItem( i18n("New Action &Group" ), 1 ); + popup->insertItem( i18n("New &Dropdown Action Group" ), 2 ); + if ( i ) { + popup->insertSeparator(); + popup->insertItem( i18n("&Connect Action..." ), 3 ); + popup->insertSeparator(); + popup->insertItem( i18n("Delete Action" ), 4 ); + } + int res = popup->exec( p ); + if ( res == 0 ) + emit insertAction(); + else if ( res == 1 ) + emit insertActionGroup(); + else if ( res == 2 ) + emit insertDropDownActionGroup(); + else if ( res == 3 ) + emit connectAction(); + else if ( res == 4 ) + emit deleteAction(); +} +#include "actionlistview.moc" -- cgit v1.2.1