Even though the last alpha was .91 this one is going to be 82 as I'd like to have...
[kdevelopdvcssupport.git] / plugins / projectmanagerview / projectbuildsetwidget.cpp
blob0999bcd73552fe405eeb9b0be585a1291610efe6
1 /***************************************************************************
2 * This file is part of KDevelop *
3 * Copyright 2007 Andreas Pakulat <apaku@gmx.de> *
4 * *
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. *
9 * *
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. *
14 * *
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>
25 #include <QTreeView>
26 #include <QToolButton>
27 #include <QItemSelectionModel>
28 #include <QStringListModel>
29 #include <QModelIndex>
30 #include <QStandardItemModel>
32 #include <kdebug.h>
33 #include <kicon.h>
34 #include <kmenu.h>
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,
47 QWidget* parent )
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()
83 delete m_ui;
86 void ProjectBuildSetWidget::showContextMenu( const QPoint& p )
88 KMenu m;
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()
104 QList<int> rows;
105 foreach( QItemSelectionRange range, m_ui->itemView->selectionModel()->selection() )
107 m_view->plugin()->buildSet()->removeRows( range.top(), range.height() );