VBoxVMSettingsHD.h revision 46b70dff18c3a9d29e3dd43de2c84ed6d29044ed
/** @file
*
* VBox frontends: Qt4 GUI ("VirtualBox"):
* VBoxVMSettingsHD class declaration
*/
/*
* Copyright (C) 2006-2009 Sun Microsystems, Inc.
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 USA or visit http://www.sun.com if you need
* additional information or have any questions.
*/
#ifndef __VBoxVMSettingsHD_h__
#define __VBoxVMSettingsHD_h__
/* Global includes */
#include <QItemDelegate>
#include <QPointer>
/* Local includes */
#include "VBoxSettingsPage.h"
#include "VBoxVMSettingsHD.gen.h"
#include "COMDefs.h"
/* Local forwardes */
/* Internal Types */
enum ItemState
{
State_DefaultItem = 0,
State_CollapsedItem = 1,
State_ExpandedItem = 2,
};
/* Pixmap Storage Pool */
{
enum PixmapType
{
InvalidPixmap = -1,
AddControllerEn = 0,
AddControllerDis = 1,
DelControllerEn = 2,
DelControllerDis = 3,
AddAttachmentEn = 4,
AddAttachmentDis = 5,
DelAttachmentEn = 6,
DelAttachmentDis = 7,
IDEController = 8,
IDEExpand = 9,
IDECollapse = 10,
SATAController = 11,
SATAExpand = 12,
SATACollapse = 13,
SCSIController = 14,
SCSIExpand = 15,
SCSICollapse = 16,
FloppyController = 17,
FloppyExpand = 18,
FloppyCollapse = 19,
HDAttachmentEn = 20,
CDAttachmentEn = 21,
FDAttachmentEn = 22,
HDAttachmentAddEn = 23,
HDAttachmentAddDis = 24,
CDAttachmentAddEn = 25,
CDAttachmentAddDis = 26,
FDAttachmentAddEn = 27,
FDAttachmentAddDis = 28,
VMMEn = 29,
VMMDis = 30,
};
};
/* Abstract Controller Type */
{
KStorageBus busType() const;
KStorageControllerType ctrType() const;
ControllerTypeList ctrTypes() const;
};
/* IDE Controller Type */
{
DeviceTypeList deviceTypeList() const;
KStorageControllerType first() const;
};
/* SATA Controller Type */
{
DeviceTypeList deviceTypeList() const;
KStorageControllerType first() const;
};
/* SCSI Controller Type */
{
DeviceTypeList deviceTypeList() const;
KStorageControllerType first() const;
};
/* Floppy Controller Type */
{
DeviceTypeList deviceTypeList() const;
KStorageControllerType first() const;
};
/* Abstract Item */
{
enum ItemType
{
Type_InvalidItem = 0,
Type_RootItem = 1,
Type_ControllerItem = 2,
};
virtual ~AbstractItem();
AbstractItem* parent() const;
virtual int childCount() const = 0;
};
/* Root Item */
{
RootItem();
~RootItem();
int childCount() const;
};
/* Controller Item */
{
~ControllerItem();
KStorageBus ctrBusType() const;
KStorageControllerType ctrType() const;
ControllerTypeList ctrTypes() const;
SlotsList ctrAllSlots() const;
SlotsList ctrUsedSlots() const;
DeviceTypeList ctrDeviceTypeList() const;
QStringList ctrUsedMediumIds() const;
int childCount() const;
};
/* Attachment Item */
{
StorageSlot attSlot() const;
KDeviceType attDeviceType() const;
DeviceTypeList attDeviceTypes() const;
QString attMediumId() const;
bool attIsShowDiffs() const;
bool attIsHostDrive() const;
bool attIsPassthrough() const;
void setAttIsShowDiffs (bool aAttIsShowDiffs);
void setAttIsPassthrough (bool aPassthrough);
QString attLogicalSize() const;
QString attLocation() const;
void cache();
int childCount() const;
bool mAttIsShowDiffs;
bool mAttIsHostDrive;
bool mAttIsPassthrough;
};
/* Storage Model */
{
enum DataRole
{
};
enum ToolTipType
{
DefaultToolTip = 0,
ExpanderToolTip = 1,
HDAdderToolTip = 2,
CDAdderToolTip = 3,
FDAdderToolTip = 4
};
~StorageModel();
QModelIndex root() const;
QModelIndex addController (const QString &aCtrName, KStorageBus aBusType, KStorageControllerType aCtrType);
};
/* Storage Delegate */
{
void paint (QPainter *aPainter, const QStyleOptionViewItem &aOption, const QModelIndex &aIndex) const;
};
/**
* QWidget class reimplementation.
* Used as HD Settings widget.
*/
{
void storageChanged();
void putBackTo();
void retranslateUi();
void addController();
void addIDEController();
void addSATAController();
void addSCSIController();
void addFloppyController();
void delController();
void delAttachment();
void getInformation();
void setInformation();
void onVmmInvoked();
void updateActionsState();
void onRowRemoved();
void onCurrentItemChanged();
bool mIsLoadingInProgress;
bool mIsPolished;
};
#endif // __VBoxVMSettingsHD_h__