UIMediumManager.h revision c58f1213e628a545081c70e26c6b67a841cff880
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync/** @file
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync *
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * VBox frontends: Qt4 GUI ("VirtualBox"):
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * UIMediumManager class declaration
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2012 Oracle Corporation
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync *
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * available from http://www.virtualbox.org. This file is free software;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * you can redistribute it and/or modify it under the terms of the GNU
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * General Public License (GPL) as published by the Free Software
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#ifndef __UIMediumManager_h__
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#define __UIMediumManager_h__
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync/* GUI includes */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#include "UIMediumManager.gen.h"
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#include "QIMainDialog.h"
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#include "QIWithRetranslateUI.h"
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#include "VBoxMediaComboBox.h"
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync/* COM includes: */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#include "CMachine.h"
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync/* Forward declarations: */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncclass MediaItem;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncclass VBoxProgressBar;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncclass UIToolBar;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncclass UIMediumManager : public QIWithRetranslateUI2<QIMainDialog>,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync public Ui::UIMediumManager
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync{
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync Q_OBJECT;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync enum TabIndex { HDTab = 0, CDTab, FDTab };
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync enum ItemAction { ItemAction_Added, ItemAction_Updated, ItemAction_Removed };
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync enum Action { Action_Select, Action_Edit, Action_Copy, Action_Modify, Action_Remove, Action_Release };
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncpublic:
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync UIMediumManager (QWidget *aParent = NULL,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync Qt::WindowFlags aFlags = Qt::Dialog);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync ~UIMediumManager();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void setup (UIMediumType aType, bool aDoSelect,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool aRefresh = true,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync const CMachine &aSessionMachine = CMachine(),
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync const QString &aSelectId = QString::null,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool aShowDiffs = true,
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync const QStringList &aUsedMediaIds = QStringList());
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync static void showModeless (QWidget *aParent = NULL, bool aRefresh = true);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString selectedId() const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString selectedLocation() const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool showDiffs() const { return mShowDiffs; };
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool inAttachMode() const { return !mSessionMachine.isNull(); };
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncpublic slots:
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void refreshAll();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncprotected:
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void retranslateUi();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync virtual void closeEvent (QCloseEvent *aEvent);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync virtual bool eventFilter (QObject *aObject, QEvent *aEvent);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncprivate slots:
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumAdded (const UIMedium &aMedium);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumUpdated (const UIMedium &aMedium);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumRemoved (UIMediumType aType, const QString &aId);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumEnumStarted();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumEnumerated (const UIMedium &aMedium);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void mediumEnumFinished (const VBoxMediaList &aList);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doNewMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doAddMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doCopyMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doModifyMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doRemoveMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void doReleaseMedium();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool releaseMediumFrom (const UIMedium &aMedium, const QString &aMachineId);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void processCurrentChanged (int index = -1);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void processCurrentChanged (QTreeWidgetItem *aItem, QTreeWidgetItem *aPrevItem = 0);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void processDoubleClick (QTreeWidgetItem *aItem, int aColumn);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void showContextMenu (const QPoint &aPos);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void machineStateChanged(QString strId, KMachineState state);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void makeRequestForAdjustTable();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void performTablesAdjustment();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsyncprivate:
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QTreeWidget* treeWidget (UIMediumType aType) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync UIMediumType currentTreeWidgetType() const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QTreeWidget* currentTreeWidget() const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QTreeWidgetItem* selectedItem (const QTreeWidget *aTree) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync MediaItem* toMediaItem (QTreeWidgetItem *aItem) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void setCurrentItem (QTreeWidget *aTree, QTreeWidgetItem *aItem);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void addMediumToList (const QString &aLocation, UIMediumType aType);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync MediaItem* createHardDiskItem (QTreeWidget *aTree, const UIMedium &aMedium) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void updateTabIcons (MediaItem *aItem, ItemAction aAction);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync MediaItem* searchItem (QTreeWidget *aTree, const QString &aId) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool checkMediumFor (MediaItem *aItem, Action aAction);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool checkDndUrls (const QList<QUrl> &aUrls) const;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void addDndUrls (const QList<QUrl> &aUrls);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void clearInfoPanes();
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync void prepareToRefresh (int aTotal = 0);
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString formatPaneText (const QString &aText, bool aCompact = true, const QString &aElipsis = "middle");
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Private member vars */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Window status */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mDoSelect;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync static UIMediumManager *mModelessDialog;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync VBoxProgressBar *mProgressBar;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* The global VirtualBox instance */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync CVirtualBox mVBox;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Type if we are in the select modus */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync int mType;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mShowDiffs : 1;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mSetupMode : 1;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Icon definitions */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QIcon mHardDiskIcon;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QIcon mDVDImageIcon;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QIcon mFloppyImageIcon;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Menu & Toolbar */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QMenu *mActionsContextMenu;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QMenu *mActionsMenu;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync UIToolBar *mToolBar;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mNewAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mAddAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mCopyAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mModifyAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mRemoveAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mReleaseAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QAction *mRefreshAction;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync /* Machine */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync CMachine mSessionMachine;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString mSessionMachineId;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mHardDisksInaccessible;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mDVDImagesInaccessible;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync bool mFloppyImagesInaccessible;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString mHDSelectedId;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString mCDSelectedId;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QString mFDSelectedId;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync QStringList mUsedMediaIds;
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync};
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync#endif /* __UIMediumManager_h__ */
8230e6f6671b538d39c7ef6d8484cf516a983ef4vboxsync