~ubuntu-branches/ubuntu/trusty/virtualbox-ose/trusty

« back to all changes in this revision

Viewing changes to src/VBox/Frontends/VirtualBox/include/VBoxApplianceEditorWgt.h

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2009-12-18 16:44:29 UTC
  • mfrom: (0.3.3 upstream) (0.4.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091218164429-jd34ccexpv5na11a
Tags: 3.1.2-dfsg-1ubuntu1
* Merge from Debian unstable (LP: #498219), remaining changes:
  - Disable update action
    - debian/patches/u01-disable-update-action.dpatch
  - VirtualBox should go in Accessories, not in System tools (LP: #288590)
    - debian/virtualbox-ose-qt.files/virtualbox-ose.desktop
  - Add Apport hook
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Add Launchpad integration
    - debian/control
    - debian/lpi-bug.xpm
    - debian/patches/u02-lp-integration.dpatch
* Fixes the following bugs:
  - Kernel module fails to build with Linux >= 2.6.32 (LP: #474625)
  - X.Org drivers need to be rebuilt against X-Server 1.7 (LP: #495935)
  - The *-source packages try to build the kernel modules even though the
    kernel headers aren't available (LP: #473334)
* Replace *-source packages with transitional packages for *-dkms.
* Adapt u01-disable-update-action.dpatch and u02-lp-integration.dpatch for
  new upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/** @file
2
 
 *
3
 
 * VBox frontends: Qt4 GUI ("VirtualBox"):
4
 
 * VBoxApplianceEditorWgt class declaration
5
 
 */
6
 
 
7
 
/*
8
 
 * Copyright (C) 2009 Sun Microsystems, Inc.
9
 
 *
10
 
 * This file is part of VirtualBox Open Source Edition (OSE), as
11
 
 * available from http://www.virtualbox.org. This file is free software;
12
 
 * you can redistribute it and/or modify it under the terms of the GNU
13
 
 * General Public License (GPL) as published by the Free Software
14
 
 * Foundation, in version 2 as it comes in the "COPYING" file of the
15
 
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16
 
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17
 
 *
18
 
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19
 
 * Clara, CA 95054 USA or visit http://www.sun.com if you need
20
 
 * additional information or have any questions.
21
 
 */
22
 
 
23
 
#ifndef __VBoxApplianceEditorWgt_h__
24
 
#define __VBoxApplianceEditorWgt_h__
25
 
 
26
 
/* VBox includes */
27
 
#include "COMDefs.h"
28
 
#include "VBoxApplianceEditorWgt.gen.h"
29
 
#include "QIWithRetranslateUI.h"
30
 
 
31
 
/* Qt includes */
32
 
#include <QSortFilterProxyModel>
33
 
#include <QItemDelegate>
34
 
 
35
 
/* VBox forward declarations */
36
 
class ModelItem;
37
 
 
38
 
////////////////////////////////////////////////////////////////////////////////
39
 
// Globals
40
 
 
41
 
enum TreeViewSection { DescriptionSection = 0, OriginalValueSection, ConfigValueSection };
42
 
 
43
 
////////////////////////////////////////////////////////////////////////////////
44
 
// ModelItem
45
 
 
46
 
enum ModelItemType { RootType, VirtualSystemType, HardwareType };
47
 
 
48
 
/* This & the following derived classes represent the data items of a Virtual
49
 
   System. All access/manipulation is done with the help of virtual functions
50
 
   to keep the interface clean. ModelItem is able to handle tree structures
51
 
   with a parent & several children's. */
52
 
class ModelItem
53
 
{
54
 
public:
55
 
    ModelItem (int aNumber, ModelItemType aType, ModelItem *aParent = NULL);
56
 
 
57
 
    ~ModelItem();
58
 
 
59
 
    ModelItem *parent() const { return mParentItem; }
60
 
 
61
 
    void appendChild (ModelItem *aChild);
62
 
    ModelItem * child (int aRow) const;
63
 
 
64
 
    int row() const;
65
 
 
66
 
    int childCount() const;
67
 
    int columnCount() const { return 3; }
68
 
 
69
 
    virtual Qt::ItemFlags itemFlags (int /* aColumn */) const { return 0; }
70
 
    virtual bool setData (int /* aColumn */, const QVariant & /* aValue */, int /* aRole */) { return false; }
71
 
    virtual QVariant data (int /* aColumn */, int /* aRole */) const { return QVariant(); }
72
 
    virtual QWidget * createEditor (QWidget * /* aParent */, const QStyleOptionViewItem & /* aOption */, const QModelIndex & /* aIndex */) const { return NULL; }
73
 
    virtual bool setEditorData (QWidget * /* aEditor */, const QModelIndex & /* aIndex */) const { return false; }
74
 
    virtual bool setModelData (QWidget * /* aEditor */, QAbstractItemModel * /* aModel */, const QModelIndex & /* aIndex */) { return false; }
75
 
 
76
 
    virtual void restoreDefaults() {}
77
 
    virtual void putBack (QVector<BOOL>& aFinalStates, QVector<QString>& aFinalValues, QVector<QString>& aFinalExtraValues);
78
 
 
79
 
    ModelItemType type() const { return mType; }
80
 
 
81
 
protected:
82
 
    /* Protected member vars */
83
 
    int mNumber;
84
 
    ModelItemType mType;
85
 
 
86
 
    ModelItem *mParentItem;
87
 
    QList<ModelItem*> mChildItems;
88
 
};
89
 
 
90
 
////////////////////////////////////////////////////////////////////////////////
91
 
// VirtualSystemItem
92
 
 
93
 
/* This class represent a Virtual System with an index. */
94
 
class VirtualSystemItem: public ModelItem
95
 
{
96
 
public:
97
 
    VirtualSystemItem (int aNumber, CVirtualSystemDescription aDesc, ModelItem *aParent);
98
 
 
99
 
    virtual QVariant data (int aColumn, int aRole) const;
100
 
 
101
 
    virtual void putBack (QVector<BOOL>& aFinalStates, QVector<QString>& aFinalValues, QVector<QString>& aFinalExtraValues);
102
 
 
103
 
private:
104
 
    CVirtualSystemDescription mDesc;
105
 
};
106
 
 
107
 
////////////////////////////////////////////////////////////////////////////////
108
 
// HardwareItem
109
 
 
110
 
/* This class represent an hardware item of a Virtual System. All values of
111
 
   KVirtualSystemDescriptionType are supported & handled differently. */
112
 
class HardwareItem: public ModelItem
113
 
{
114
 
    friend class VirtualSystemSortProxyModel;
115
 
public:
116
 
 
117
 
    HardwareItem (int aNumber,
118
 
                  KVirtualSystemDescriptionType aType,
119
 
                  const QString &aRef,
120
 
                  const QString &aOrigValue,
121
 
                  const QString &aConfigValue,
122
 
                  const QString &aExtraConfigValue,
123
 
                  ModelItem *aParent);
124
 
 
125
 
    virtual void putBack (QVector<BOOL>& aFinalStates, QVector<QString>& aFinalValues, QVector<QString>& aFinalExtraValues);
126
 
 
127
 
    virtual bool setData (int aColumn, const QVariant &aValue, int aRole);
128
 
    virtual QVariant data (int aColumn, int aRole) const;
129
 
 
130
 
    virtual Qt::ItemFlags itemFlags (int aColumn) const;
131
 
 
132
 
    virtual QWidget * createEditor (QWidget *aParent, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
133
 
    virtual bool setEditorData (QWidget *aEditor, const QModelIndex &aIndex) const;
134
 
 
135
 
    virtual bool setModelData (QWidget *aEditor, QAbstractItemModel *aModel, const QModelIndex &aIndex);
136
 
 
137
 
    virtual void restoreDefaults()
138
 
    {
139
 
        mConfigValue = mConfigDefaultValue;
140
 
        mCheckState = Qt::Checked;
141
 
    }
142
 
 
143
 
private:
144
 
 
145
 
    /* Private member vars */
146
 
    KVirtualSystemDescriptionType mType;
147
 
    QString mRef;
148
 
    QString mOrigValue;
149
 
    QString mConfigValue;
150
 
    QString mConfigDefaultValue;
151
 
    QString mExtraConfigValue;
152
 
    Qt::CheckState mCheckState;
153
 
};
154
 
 
155
 
////////////////////////////////////////////////////////////////////////////////
156
 
// VirtualSystemModel
157
 
 
158
 
class VirtualSystemModel: public QAbstractItemModel
159
 
{
160
 
 
161
 
public:
162
 
    VirtualSystemModel (QVector<CVirtualSystemDescription>& aVSDs, QObject *aParent = NULL);
163
 
 
164
 
    QModelIndex index (int aRow, int aColumn, const QModelIndex &aParent = QModelIndex()) const;
165
 
    QModelIndex parent (const QModelIndex &aIndex) const;
166
 
    int rowCount (const QModelIndex &aParent = QModelIndex()) const;
167
 
    int columnCount (const QModelIndex &aParent = QModelIndex()) const;
168
 
    bool setData (const QModelIndex &aIndex, const QVariant &aValue, int aRole);
169
 
    QVariant data (const QModelIndex &aIndex, int aRole = Qt::DisplayRole) const;
170
 
    Qt::ItemFlags flags (const QModelIndex &aIndex) const;
171
 
    QVariant headerData (int aSection, Qt::Orientation aOrientation, int aRole) const;
172
 
 
173
 
    QModelIndex buddy (const QModelIndex &aIndex) const;
174
 
 
175
 
    void restoreDefaults (const QModelIndex& aParent = QModelIndex());
176
 
    void putBack();
177
 
 
178
 
private:
179
 
    /* Private member vars */
180
 
    ModelItem *mRootItem;
181
 
};
182
 
 
183
 
////////////////////////////////////////////////////////////////////////////////
184
 
// VirtualSystemDelegate
185
 
 
186
 
/* The delegate is used for creating/handling the different editors for the
187
 
   various types we support. This class forward the requests to the virtual
188
 
   methods of our different ModelItems. If this is not possible the default
189
 
   methods of QItemDelegate are used to get some standard behavior. Note: We
190
 
   have to handle the proxy model ourself. I really don't understand why Qt is
191
 
   not doing this for us. */
192
 
class VirtualSystemDelegate: public QItemDelegate
193
 
{
194
 
public:
195
 
    VirtualSystemDelegate (QAbstractProxyModel *aProxy, QObject *aParent = NULL);
196
 
 
197
 
    QWidget * createEditor (QWidget *aParent, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
198
 
    void setEditorData (QWidget *aEditor, const QModelIndex &aIndex) const;
199
 
    void setModelData (QWidget *aEditor, QAbstractItemModel *aModel, const QModelIndex &aIndex) const;
200
 
    void updateEditorGeometry (QWidget *aEditor, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
201
 
 
202
 
    QSize sizeHint (const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const
203
 
    {
204
 
        QSize size = QItemDelegate::sizeHint (aOption, aIndex);
205
 
#ifdef Q_WS_MAC
206
 
        int h = 28;
207
 
#else /* Q_WS_MAC */
208
 
        int h = 24;
209
 
#endif /* Q_WS_MAC */
210
 
        size.setHeight (RT_MAX (h, size.height()));
211
 
        return size;
212
 
    }
213
 
private:
214
 
    /* Private member vars */
215
 
    QAbstractProxyModel *mProxy;
216
 
};
217
 
 
218
 
////////////////////////////////////////////////////////////////////////////////
219
 
// VirtualSystemSortProxyModel
220
 
 
221
 
class VirtualSystemSortProxyModel: public QSortFilterProxyModel
222
 
{
223
 
public:
224
 
    VirtualSystemSortProxyModel (QObject *aParent = NULL);
225
 
 
226
 
protected:
227
 
    bool filterAcceptsRow (int aSourceRow, const QModelIndex & aSourceParent) const;
228
 
    bool lessThan (const QModelIndex &aLeft, const QModelIndex &aRight) const;
229
 
 
230
 
    static KVirtualSystemDescriptionType mSortList[];
231
 
 
232
 
    QList<KVirtualSystemDescriptionType> mFilterList;
233
 
};
234
 
 
235
 
////////////////////////////////////////////////////////////////////////////////
236
 
// VBoxApplianceEditorWgt
237
 
 
238
 
class VBoxApplianceEditorWgt : public QIWithRetranslateUI<QWidget>,
239
 
                               public Ui::VBoxApplianceEditorWgt
240
 
{
241
 
    Q_OBJECT;
242
 
 
243
 
public:
244
 
    VBoxApplianceEditorWgt (QWidget *aParent = NULL);
245
 
 
246
 
    bool isValid() const { return mAppliance != NULL; }
247
 
    CAppliance* appliance() const { return mAppliance; }
248
 
 
249
 
    static int minGuestRAM() { return mMinGuestRAM; }
250
 
    static int maxGuestRAM() { return mMaxGuestRAM; }
251
 
    static int minGuestCPUCount() { return mMinGuestCPUCount; }
252
 
    static int maxGuestCPUCount() { return mMaxGuestCPUCount; }
253
 
 
254
 
public slots:
255
 
    void restoreDefaults();
256
 
 
257
 
protected:
258
 
    virtual void retranslateUi();
259
 
 
260
 
    /* Protected member vars */
261
 
    CAppliance *mAppliance;
262
 
    VirtualSystemModel *mModel;
263
 
 
264
 
private:
265
 
    static void initSystemSettings();
266
 
 
267
 
    /* Private member vars */
268
 
    static int mMinGuestRAM;
269
 
    static int mMaxGuestRAM;
270
 
    static int mMinGuestCPUCount;
271
 
    static int mMaxGuestCPUCount;
272
 
};
273
 
 
274
 
#endif /* __VBoxApplianceEditorWgt_h__ */
275