1 /***************************************************************************
2 * This file is part of KDevelop *
3 * Copyright 2007 Andreas Pakulat <apaku@gmx.de> *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU Library General Public License as *
7 * published by the Free Software Foundation; either version 2 of the *
8 * License, or (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU Library General Public *
16 * License along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
21 #include "projectbuildsetwidget.h"
23 #include <QVBoxLayout>
24 #include <QHBoxLayout>
26 #include <QToolButton>
27 #include <QItemSelectionModel>
28 #include <QStringListModel>
29 #include <QModelIndex>
30 #include <QStandardItemModel>
36 #include <project/projectmodel.h>
37 #include <interfaces/iproject.h>
39 #include "projectmanagerviewplugin.h"
40 #include "projectmanagerview.h"
41 #include "projectbuildsetmodel.h"
43 #include "ui_projectbuildsetwidget.h"
44 #include <QHeaderView>
46 ProjectBuildSetWidget::ProjectBuildSetWidget( ProjectManagerView
* view
,
48 : QWidget( parent
), m_view(view
),
49 m_ui( new Ui::ProjectBuildSetWidget
)
51 m_ui
->setupUi( this );
52 m_ui
->addItemButton
->setToolButtonStyle( Qt::ToolButtonIconOnly
);
53 m_ui
->addItemButton
->setIcon( KIcon( "list-add" ) );
55 connect( m_ui
->addItemButton
, SIGNAL( clicked() ),
56 this, SLOT( addItems() ) );
58 m_ui
->removeItemButton
->setToolButtonStyle( Qt::ToolButtonIconOnly
);
59 m_ui
->removeItemButton
->setIcon( KIcon( "list-remove" ) );
61 connect( m_ui
->removeItemButton
, SIGNAL( clicked() ),
62 this, SLOT( removeItems() ) );
65 m_ui
->itemView
->horizontalHeader()->setStretchLastSection(true);
66 m_ui
->itemView
->setModel( m_view
->plugin()->buildSet() );
67 m_ui
->itemView
->setContextMenuPolicy( Qt::CustomContextMenu
);
68 connect( m_ui
->itemView
, SIGNAL( customContextMenuRequested( const QPoint
& ) ),
69 SLOT(showContextMenu(const QPoint
&) ) );
70 connect( m_ui
->itemView
->selectionModel(), SIGNAL(selectionChanged(const QItemSelection
&, const QItemSelection
&) ),
71 this, SLOT(selectionChanged()) );
72 layout()->setMargin(0);
75 void ProjectBuildSetWidget::selectionChanged()
77 m_ui
->removeItemButton
->setEnabled( !m_ui
->itemView
->selectionModel()->selectedRows().isEmpty() );
78 m_ui
->addItemButton
->setEnabled( !m_view
->selectedItems().isEmpty() );
81 ProjectBuildSetWidget::~ProjectBuildSetWidget()
86 void ProjectBuildSetWidget::showContextMenu( const QPoint
& p
)
89 m
.setTitle( i18n("Buildset") );
90 m
.addAction( i18n( "Remove from buildset" ), this, SLOT( removeItems() ) );
91 m
.exec( m_ui
->itemView
->mapToGlobal( p
) );
94 void ProjectBuildSetWidget::addItems()
96 foreach( KDevelop::ProjectBaseItem
* item
, m_view
->selectedItems() )
98 m_view
->plugin()->buildSet()->addProjectItem( item
);
102 void ProjectBuildSetWidget::removeItems()
105 foreach( QItemSelectionRange range
, m_ui
->itemView
->selectionModel()->selection() )
107 m_view
->plugin()->buildSet()->removeRows( range
.top(), range
.height() );