b341a780162d809b187a8f35a10bba7642b69798vboxsync/** @file
d34409ad02ea0d28e08a6c4b089a412fdb3b4c9cvboxsync * VBox Qt GUI - UIMachineWindowNormal class declaration.
b341a780162d809b187a8f35a10bba7642b69798vboxsync */
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync/*
8d1ef2acf41d1d8a0f69bfe0ac1f41638160399cvboxsync * Copyright (C) 2010-2012 Oracle Corporation
b341a780162d809b187a8f35a10bba7642b69798vboxsync *
b341a780162d809b187a8f35a10bba7642b69798vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
b341a780162d809b187a8f35a10bba7642b69798vboxsync * available from http://www.virtualbox.org. This file is free software;
b341a780162d809b187a8f35a10bba7642b69798vboxsync * you can redistribute it and/or modify it under the terms of the GNU
b341a780162d809b187a8f35a10bba7642b69798vboxsync * General Public License (GPL) as published by the Free Software
b341a780162d809b187a8f35a10bba7642b69798vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
b341a780162d809b187a8f35a10bba7642b69798vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
b341a780162d809b187a8f35a10bba7642b69798vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
b341a780162d809b187a8f35a10bba7642b69798vboxsync */
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync#ifndef __UIMachineWindowNormal_h__
b341a780162d809b187a8f35a10bba7642b69798vboxsync#define __UIMachineWindowNormal_h__
b341a780162d809b187a8f35a10bba7642b69798vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync/* Local includes: */
b341a780162d809b187a8f35a10bba7642b69798vboxsync#include "UIMachineWindow.h"
b341a780162d809b187a8f35a10bba7642b69798vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync/* Forward declarations: */
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsyncclass CMediumAttachment;
b341a780162d809b187a8f35a10bba7642b69798vboxsyncclass UIIndicatorsPool;
b341a780162d809b187a8f35a10bba7642b69798vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync/* Normal machine-window implementation: */
8d1ef2acf41d1d8a0f69bfe0ac1f41638160399cvboxsyncclass UIMachineWindowNormal : public UIMachineWindow
b341a780162d809b187a8f35a10bba7642b69798vboxsync{
b341a780162d809b187a8f35a10bba7642b69798vboxsync Q_OBJECT;
b341a780162d809b187a8f35a10bba7642b69798vboxsync
17c25ccb46094444fee2c0c2448dda151c70c0b9vboxsyncsignals:
17c25ccb46094444fee2c0c2448dda151c70c0b9vboxsync
17c25ccb46094444fee2c0c2448dda151c70c0b9vboxsync /** Notifies about geometry change. */
17c25ccb46094444fee2c0c2448dda151c70c0b9vboxsync void sigGeometryChange(const QRect &rect);
17c25ccb46094444fee2c0c2448dda151c70c0b9vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsyncprotected:
b341a780162d809b187a8f35a10bba7642b69798vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Constructor: */
cae5cca5168e18e168df5541b11f462b60062a7avboxsync UIMachineWindowNormal(UIMachineLogic *pMachineLogic, ulong uScreenId);
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsyncprivate slots:
b341a780162d809b187a8f35a10bba7642b69798vboxsync
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync#ifdef Q_WS_X11
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync /** X11: Performs machine-window async geometry normalization. */
245206f396fceac92b791f6403f73e0b250826a0vboxsync void sltNormalizeGeometry() { normalizeGeometry(true /* adjust position */); }
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync#endif /* Q_WS_X11 */
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Session event-handlers: */
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltMachineStateChanged();
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltMediumChange(const CMediumAttachment &attachment);
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltUSBControllerChange();
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltUSBDeviceStateChange();
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltNetworkAdapterChange();
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync void sltSharedFolderChange();
41efb8907f48385457ad2c28f18614d80869fbe6vboxsync void sltVideoCaptureChange();
103b0154d1ec1325cacf0cabaedab9581a317ce2vboxsync void sltCPUExecutionCapChange();
cf7696ec31e368b66b1ad49a4b03beadd5d62ba8vboxsync
383d0fadab48f49dafbf602e05e8348724486a04vboxsync#ifndef RT_OS_DARWIN
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync /** Handles menu-bar configuration-change. */
fb84639c1f4fd5c78a79e35c19514d893cb54d8fvboxsync void sltHandleMenuBarConfigurationChange(const QString &strMachineID);
914fba9dd0e59599f508013e2d0c9d773b44e345vboxsync /** Handles menu-bar context-menu-request. */
914fba9dd0e59599f508013e2d0c9d773b44e345vboxsync void sltHandleMenuBarContextMenuRequest(const QPoint &position);
383d0fadab48f49dafbf602e05e8348724486a04vboxsync#endif /* !RT_OS_DARWIN */
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync /** Handles status-bar configuration-change. */
fb84639c1f4fd5c78a79e35c19514d893cb54d8fvboxsync void sltHandleStatusBarConfigurationChange(const QString &strMachineID);
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync /** Handles status-bar context-menu-request. */
a8a87857da07e4e9d7e40c5c3c2c02287a515f6fvboxsync void sltHandleStatusBarContextMenuRequest(const QPoint &position);
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync /** Handles status-bar indicator context-menu-request. */
68d8fe9a6399c8ecdf67ba2f5711667cd9bcf192vboxsync void sltHandleIndicatorContextMenuRequest(IndicatorType indicatorType, const QPoint &position);
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsyncprivate:
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync /* Prepare helpers: */
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync void prepareSessionConnections();
4759f52dfc0c5362f3cf176490786142d85a73e9vboxsync#ifndef Q_WS_MAC
b341a780162d809b187a8f35a10bba7642b69798vboxsync void prepareMenu();
4759f52dfc0c5362f3cf176490786142d85a73e9vboxsync#endif /* !Q_WS_MAC */
b341a780162d809b187a8f35a10bba7642b69798vboxsync void prepareStatusBar();
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync void prepareVisualState();
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync void loadSettings();
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync /* Cleanup helpers: */
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync void saveSettings();
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync //coid cleanupVisualState() {}
68d8fe9a6399c8ecdf67ba2f5711667cd9bcf192vboxsync //void cleanupStatusBar() {}
4759f52dfc0c5362f3cf176490786142d85a73e9vboxsync#ifndef Q_WS_MAC
499be9a0008af6b44433986c7002727ac06513a9vboxsync //void cleanupMenu() {}
4759f52dfc0c5362f3cf176490786142d85a73e9vboxsync#endif /* !Q_WS_MAC */
499be9a0008af6b44433986c7002727ac06513a9vboxsync //void cleanupConsoleConnections() {}
b341a780162d809b187a8f35a10bba7642b69798vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Show stuff: */
19a29c5b8ea65c618ae3825b6cf84bc3688a36b0vboxsync void showInNecessaryMode();
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync /* Helper: Machine-window geometry stuff: */
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync void normalizeGeometry(bool fAdjustPosition);
2a54a98806b7ab4fb07a7f7be0e596da2c4c7397vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Update stuff: */
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync void updateAppearanceOf(int aElement);
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync
383d0fadab48f49dafbf602e05e8348724486a04vboxsync#ifndef Q_WS_MAC
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync /** Updates menu-bar content. */
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync void updateMenu();
383d0fadab48f49dafbf602e05e8348724486a04vboxsync#endif /* !Q_WS_MAC */
6c8f9cbcc7235aaa38f2b461ce4200f0afee3dd4vboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Event handler: */
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync bool event(QEvent *pEvent);
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync /* Helpers: */
4905ec5ae003d59c5f9d23af549a6d96280f2807vboxsync bool isMaximizedChecked();
a863d9f744a099bf656aae460db84a2a9a686920vboxsync
68d8fe9a6399c8ecdf67ba2f5711667cd9bcf192vboxsync /** Holds the indicator-pool instance. */
b341a780162d809b187a8f35a10bba7642b69798vboxsync UIIndicatorsPool *m_pIndicatorsPool;
4a7a0d68cae413e6f422d597644c16681f475bdavboxsync
68d8fe9a6399c8ecdf67ba2f5711667cd9bcf192vboxsync /** Holds current window geometry. */
b341a780162d809b187a8f35a10bba7642b69798vboxsync QRect m_normalGeometry;
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync /* Factory support: */
b341a780162d809b187a8f35a10bba7642b69798vboxsync friend class UIMachineWindow;
b341a780162d809b187a8f35a10bba7642b69798vboxsync};
b341a780162d809b187a8f35a10bba7642b69798vboxsync
b341a780162d809b187a8f35a10bba7642b69798vboxsync#endif // __UIMachineWindowNormal_h__
3488e51e244adfc756837287fbfbcc03eca8bf7avboxsync