VirtualBox

source: vbox/trunk/src/VBox/Frontends/VirtualBox4/include/VBoxProblemReporter.h@ 7342

Last change on this file since 7342 was 7342, checked in by vboxsync, 17 years ago

FE/Qt: Added support for user notification about settings file auto-conversion (#2705).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 13.4 KB
Line 
1/** @file
2 *
3 * VBox frontends: Qt GUI ("VirtualBox"):
4 * VBoxProblemReporter class declaration
5 */
6
7/*
8 * Copyright (C) 2006-2007 innotek GmbH
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
19#ifndef __VBoxProblemReporter_h__
20#define __VBoxProblemReporter_h__
21
22#include "COMDefs.h"
23#include "QIMessageBox.h"
24
25#include <qobject.h>
26
27class Q3Process;
28
29class VBoxProblemReporter : public QObject
30{
31 Q_OBJECT
32
33public:
34
35 enum Type {
36 Info = 1,
37 Question,
38 Warning,
39 Error,
40 Critical,
41 GuruMeditation
42 };
43 enum {
44 AutoConfirmed = 0x8000
45 };
46
47 static VBoxProblemReporter &instance();
48
49 bool isValid();
50
51 // helpers
52
53 int message (QWidget *aParent, Type aType, const QString &aMessage,
54 const QString &aDetails = QString::null,
55 const char *aAutoConfirmId = 0,
56 int aButton1 = 0, int aButton2 = 0, int aButton3 = 0,
57 const QString &aText1 = QString::null,
58 const QString &aText2 = QString::null,
59 const QString &aText3 = QString::null);
60
61 int message (QWidget *aParent, Type aType, const QString &aMessage,
62 const char *aAutoConfirmId,
63 int aButton1 = 0, int aButton2 = 0, int aButton3 = 0,
64 const QString &aText1 = QString::null,
65 const QString &aText2 = QString::null,
66 const QString &aText3 = QString::null)
67 {
68 return message (aParent, aType, aMessage, QString::null, aAutoConfirmId,
69 aButton1, aButton2, aButton3, aText1, aText2, aText3);
70 }
71
72 bool messageYesNo (QWidget *aParent, Type aType, const QString &aMessage,
73 const QString &aDetails = QString::null,
74 const char *aAutoConfirmId = 0,
75 const QString &aYesText = QString::null,
76 const QString &aNoText = QString::null)
77 {
78 return (message (aParent, aType, aMessage, aDetails, aAutoConfirmId,
79 QIMessageBox::Yes | QIMessageBox::Default,
80 QIMessageBox::No | QIMessageBox::Escape,
81 0,
82 aYesText, aNoText, QString::null) &
83 QIMessageBox::ButtonMask) == QIMessageBox::Yes;
84 }
85
86 bool messageYesNo (QWidget *aParent, Type aType, const QString &aMessage,
87 const char *aAutoConfirmId,
88 const QString &aYesText = QString::null,
89 const QString &aNoText = QString::null)
90 {
91 return messageYesNo (aParent, aType, aMessage, QString::null,
92 aAutoConfirmId, aYesText, aNoText);
93 }
94
95 bool messageOkCancel (QWidget *aParent, Type aType, const QString &aMessage,
96 const QString &aDetails = QString::null,
97 const char *aAutoConfirmId = 0,
98 const QString &aOkText = QString::null,
99 const QString &aCancelText = QString::null)
100 {
101 return (message (aParent, aType, aMessage, aDetails, aAutoConfirmId,
102 QIMessageBox::Ok | QIMessageBox::Default,
103 QIMessageBox::Cancel | QIMessageBox::Escape,
104 0,
105 aOkText, aCancelText, QString::null) &
106 QIMessageBox::ButtonMask) == QIMessageBox::Ok;
107 }
108
109 bool messageOkCancel (QWidget *aParent, Type aType, const QString &aMessage,
110 const char *aAutoConfirmId,
111 const QString &aOkText = QString::null,
112 const QString &aCancelText = QString::null)
113 {
114 return messageOkCancel (aParent, aType, aMessage, QString::null,
115 aAutoConfirmId, aOkText, aCancelText);
116 }
117
118 bool showModalProgressDialog (CProgress &aProgress, const QString &aTitle,
119 QWidget *aParent, int aMinDuration = 2000);
120
121 QWidget *mainWindowShown();
122
123 // problem handlers
124
125#ifdef Q_WS_X11
126 void cannotFindLicenseFiles (const QString &aPath);
127 void cannotOpenLicenseFile (QWidget *aParent, const QString &aPath);
128#endif
129
130 void cannotOpenURL (const QString &aURL);
131 void cannotCopyFile (const QString &aSrc, const QString &aDst, int aVRC);
132
133 void cannotFindLanguage (const QString &aLangID, const QString &aNlsPath);
134 void cannotLoadLanguage (const QString &aLangFile);
135
136 void cannotInitCOM (HRESULT rc);
137 void cannotCreateVirtualBox (const CVirtualBox &vbox);
138
139 void cannotSaveGlobalSettings (const CVirtualBox &vbox,
140 QWidget *parent = 0);
141
142 void cannotLoadGlobalConfig (const CVirtualBox &vbox, const QString &error);
143 void cannotSaveGlobalConfig (const CVirtualBox &vbox);
144 void cannotSetSystemProperties (const CSystemProperties &props);
145 void cannotAccessUSB (const COMBase &obj);
146
147 void cannotCreateMachine (const CVirtualBox &vbox,
148 QWidget *parent = 0);
149 void cannotCreateMachine (const CVirtualBox &vbox, const CMachine &machine,
150 QWidget *parent = 0);
151 void cannotApplyMachineSettings (const CMachine &machine, const COMResult &res);
152 void cannotSaveMachineSettings (const CMachine &machine,
153 QWidget *parent = 0);
154 void cannotLoadMachineSettings (const CMachine &machine,
155 bool strict = true,
156 QWidget *parent = 0);
157
158 void cannotStartMachine (const CConsole &console);
159 void cannotStartMachine (const CProgress &progress);
160 void cannotPauseMachine (const CConsole &console);
161 void cannotResumeMachine (const CConsole &console);
162 void cannotACPIShutdownMachine (const CConsole &console);
163 void cannotSaveMachineState (const CConsole &console);
164 void cannotSaveMachineState (const CProgress &progress);
165 void cannotTakeSnapshot (const CConsole &console);
166 void cannotTakeSnapshot (const CProgress &progress);
167 void cannotStopMachine (const CConsole &console);
168 void cannotDeleteMachine (const CVirtualBox &vbox, const CMachine &machine);
169 void cannotDiscardSavedState (const CConsole &console);
170
171 void cannotSetSnapshotFolder (const CMachine &aMachine, const QString &aPath);
172 void cannotDiscardSnapshot (const CConsole &console, const CSnapshot &snapshot);
173 void cannotDiscardSnapshot (const CProgress &progress, const CSnapshot &snapshot);
174 void cannotDiscardCurrentState (const CConsole &console);
175 void cannotDiscardCurrentState (const CProgress &progress);
176 void cannotDiscardCurrentSnapshotAndState (const CConsole &console);
177 void cannotDiscardCurrentSnapshotAndState (const CProgress &progress);
178
179 void cannotFindMachineByName (const CVirtualBox &vbox, const QString &name);
180
181 void cannotEnterSeamlessMode (ULONG aWidth, ULONG aHeight, ULONG aBpp);
182
183 bool confirmMachineDeletion (const CMachine &machine);
184 bool confirmDiscardSavedState (const CMachine &machine);
185
186 bool confirmReleaseImage (QWidget *parent, const QString &usage);
187
188 void sayCannotOverwriteHardDiskImage (QWidget *parent, const QString &src);
189 int confirmHardDiskImageDeletion (QWidget *parent, const QString &src);
190 void cannotDeleteHardDiskImage (QWidget *parent, const CVirtualDiskImage &vdi);
191
192 bool confirmHardDiskUnregister (QWidget *parent, const QString &src);
193
194 void cannotCreateHardDiskImage (
195 QWidget *parent, const CVirtualBox &vbox, const QString &src,
196 const CVirtualDiskImage &vdi, const CProgress &progress);
197 void cannotAttachHardDisk (QWidget *parent, const CMachine &m, const QUuid &id,
198 KDiskControllerType ctl, LONG dev);
199 void cannotDetachHardDisk (QWidget *parent, const CMachine &m,
200 KDiskControllerType ctl, LONG dev);
201 void cannotRegisterMedia (QWidget *parent, const CVirtualBox &vbox,
202 VBoxDefs::DiskType type, const QString &src);
203 void cannotUnregisterMedia (QWidget *parent, const CVirtualBox &vbox,
204 VBoxDefs::DiskType type, const QString &src);
205
206 void cannotOpenSession (const CSession &session);
207 void cannotOpenSession (const CVirtualBox &vbox, const CMachine &machine,
208 const CProgress &progress = CProgress());
209
210 void cannotGetMediaAccessibility (const CUnknown &unk);
211
212/// @todo (r=dmik) later
213// void cannotMountMedia (const CUnknown &unk);
214// void cannotUnmountMedia (const CUnknown &unk);
215
216#if defined Q_WS_WIN
217 void cannotCreateHostInterface (const CHost &host, const QString &name,
218 QWidget *parent = 0);
219 void cannotCreateHostInterface (const CProgress &progress, const QString &name,
220 QWidget *parent = 0);
221 void cannotRemoveHostInterface (const CHost &host,
222 const CHostNetworkInterface &iface,
223 QWidget *parent = 0);
224 void cannotRemoveHostInterface (const CProgress &progress,
225 const CHostNetworkInterface &iface,
226 QWidget *parent = 0);
227#endif
228
229 void cannotAttachUSBDevice (const CConsole &console, const QString &device);
230 void cannotAttachUSBDevice (const CConsole &console, const QString &device,
231 const CVirtualBoxErrorInfo &error);
232 void cannotDetachUSBDevice (const CConsole &console, const QString &device);
233 void cannotDetachUSBDevice (const CConsole &console, const QString &device,
234 const CVirtualBoxErrorInfo &error);
235
236 void cannotCreateSharedFolder (QWidget *, const CMachine &,
237 const QString &, const QString &);
238 void cannotRemoveSharedFolder (QWidget *, const CMachine &,
239 const QString &, const QString &);
240 void cannotCreateSharedFolder (QWidget *, const CConsole &,
241 const QString &, const QString &);
242 void cannotRemoveSharedFolder (QWidget *, const CConsole &,
243 const QString &, const QString &);
244
245 int cannotFindGuestAdditions (const QString &aSrc1, const QString &aSrc2);
246 void cannotDownloadGuestAdditions (const QString &aURL,
247 const QString &aReason);
248 bool confirmDownloadAdditions (const QString &aURL, ulong aSize);
249 bool confirmMountAdditions (const QString &aURL, const QString &aSrc);
250 void warnAboutTooOldAdditions (QWidget *, const QString &, const QString &);
251 void warnAboutOldAdditions (QWidget *, const QString &, const QString &);
252 void warnAboutNewAdditions (QWidget *, const QString &, const QString &);
253
254 void cannotConnectRegister (QWidget *aParent,
255 const QString &aURL,
256 const QString &aReason);
257 void showRegisterResult (QWidget *aParent,
258 const QString &aResult);
259
260 bool confirmInputCapture (bool *aAutoConfirmed = NULL);
261 void remindAboutAutoCapture();
262 void remindAboutMouseIntegration (bool aSupportsAbsolute);
263 bool remindAboutPausedVMInput();
264
265 int warnAboutAutoConvertedSettings (const QString &aFormatVersion,
266 const QString &aFileList);
267
268 bool remindAboutInaccessibleMedia();
269
270 bool confirmGoingFullscreen (const QString &aHotKey);
271 bool confirmGoingSeamless (const QString &aHotKey);
272
273 void remindAboutWrongColorDepth (ulong aRealBPP, ulong aWantedBPP);
274
275 bool remindAboutGuruMeditation (const CConsole &aConsole,
276 const QString &aLogFolder);
277
278 bool confirmVMReset (QWidget *aParent);
279
280 bool confirmHardDisklessMachine (QWidget *aParent);
281
282 void cannotRunInSelectorMode();
283
284 void showRuntimeError (const CConsole &console, bool fatal,
285 const QString &errorID,
286 const QString &errorMsg);
287
288 static QString formatErrorInfo (const COMErrorInfo &aInfo,
289 HRESULT aWrapperRC = S_OK);
290
291 static QString formatErrorInfo (const CVirtualBoxErrorInfo &aInfo)
292 {
293 return formatErrorInfo (COMErrorInfo (aInfo));
294 }
295
296 static QString formatErrorInfo (const COMBase &aWrapper)
297 {
298 Assert (aWrapper.lastRC() != S_OK);
299 return formatErrorInfo (aWrapper.errorInfo(), aWrapper.lastRC());
300 }
301
302 static QString formatErrorInfo (const COMResult &aRC)
303 {
304 Assert (aRC.rc() != S_OK);
305 return formatErrorInfo (aRC.errorInfo(), aRC.rc());
306 }
307
308public slots:
309
310 void showHelpWebDialog();
311 void showHelpAboutDialog();
312 void showHelpHelpDialog();
313 void resetSuppressedMessages();
314
315private:
316
317 friend VBoxProblemReporter &vboxProblem();
318
319 static QString doFormatErrorInfo (const COMErrorInfo &aInfo,
320 HRESULT aWrapperRC = S_OK);
321};
322
323inline VBoxProblemReporter &vboxProblem() { return VBoxProblemReporter::instance(); }
324
325#endif // __VBoxProblemReporter_h__
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette