dependenciespanel.h 3.52 KB
Newer Older
1
/**************************************************************************
con's avatar
con committed
2 3 4
**
** This file is part of Qt Creator
**
5
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
con's avatar
con committed
6
**
7
** Contact: Nokia Corporation (qt-info@nokia.com)
con's avatar
con committed
8
**
9
** Commercial Usage
10
**
11 12 13 14
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
15
**
16
** GNU Lesser General Public License Usage
17
**
18 19 20 21 22 23
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24
**
25
** If you are unsure which license is appropriate for your use, please
hjk's avatar
hjk committed
26
** contact the sales department at http://qt.nokia.com/contact.
con's avatar
con committed
27
**
28
**************************************************************************/
hjk's avatar
hjk committed
29

con's avatar
con committed
30 31 32
#ifndef DEPENDENCIESDIALOG_H
#define DEPENDENCIESDIALOG_H

33
#include "iprojectproperties.h"
dt's avatar
dt committed
34
#include <utils/detailswidget.h>
con's avatar
con committed
35

dt's avatar
dt committed
36
#include <QtCore/QSize>
37
#include <QtGui/QWidget>
dt's avatar
dt committed
38 39
#include <QtGui/QLabel>
#include <QtGui/QTreeView>
con's avatar
con committed
40 41 42 43 44 45 46 47

namespace ProjectExplorer {

class Project;
class SessionManager;

namespace Internal {

48
class DependenciesWidget;
con's avatar
con committed
49

50
class DependenciesPanelFactory : public IPanelFactory
con's avatar
con committed
51 52
{
public:
53 54
    DependenciesPanelFactory(SessionManager *session);

con's avatar
con committed
55
    QString displayName() const;
56
    bool supports(Project *project);
57
    IPropertiesPanel *createPanel(Project *project);
58 59 60 61

private:
    SessionManager *m_session;
};
con's avatar
con committed
62 63


64
class DependenciesPanel : public IPropertiesPanel
65 66 67 68
{
public:
    DependenciesPanel(SessionManager *session, Project *project);
    ~DependenciesPanel();
69
    QString displayName() const;
70 71
    QWidget *widget() const;
    QIcon icon() const;
con's avatar
con committed
72 73

private:
74
    DependenciesWidget *m_widget;
75
    const QIcon m_icon;
con's avatar
con committed
76 77
};

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
//
// DependenciesModel
//

class DependenciesModel : public QAbstractListModel
{
    Q_OBJECT
public:
    DependenciesModel(SessionManager *session, Project *project, QObject *parent = 0);
    ~DependenciesModel();

    int rowCount(const QModelIndex &index) const;
    int columnCount(const QModelIndex &index) const;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
    Qt::ItemFlags flags(const QModelIndex &index) const;

public slots:
    void resetModel();

private:
    SessionManager *m_session;
    Project *m_project;
    QList<Project *> m_projects;
};

dt's avatar
dt committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
class DependenciesView : public QTreeView
{
    Q_OBJECT
public:
    DependenciesView(QWidget *parent);
    ~DependenciesView();
    virtual QSize sizeHint() const;
    virtual void setModel(QAbstractItemModel *model);
private slots:
    void updateSizeHint();
private:
    QSize m_sizeHint;
};

class DependenciesWidget : public QWidget
{
    Q_OBJECT
public:
    DependenciesWidget(SessionManager *session, Project *project,
                       QWidget *parent = 0);
private slots:
    void updateDetails();

private:
    SessionManager *m_session;
    Project *m_project;
    DependenciesModel *m_model;
dt's avatar
dt committed
131
    Utils::DetailsWidget *m_detailsContainer;
dt's avatar
dt committed
132 133
};

con's avatar
con committed
134 135 136 137
} // namespace Internal
} // namespace ProjectExplorer

#endif // DEPENDENCIESDIALOG_H