Index: trunk/src/VBox/Frontends/VirtualBox4/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/Makefile.kmk	(revision 8739)
+++ trunk/src/VBox/Frontends/VirtualBox4/Makefile.kmk	(revision 8740)
@@ -491,4 +491,5 @@
 	src/QIAbstractDialog.cpp \
 	src/QIDialog.cpp \
+	src/QIDialogButtonBox.cpp \
 	src/QIListView.cpp \
 	src/QILineEdit.cpp \
Index: trunk/src/VBox/Frontends/VirtualBox4/include/QIDialogButtonBox.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/include/QIDialogButtonBox.h	(revision 8740)
+++ trunk/src/VBox/Frontends/VirtualBox4/include/QIDialogButtonBox.h	(revision 8740)
@@ -0,0 +1,46 @@
+/** @file
+ *
+ * VBox frontends: Qt GUI ("VirtualBox"):
+ * VirtualBox Qt extensions: QIDialogButtonBox class declaration
+ */
+
+/*
+ * Copyright (C) 2008 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * 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 __QIDialogButtonBox_h__
+#define __QIDialogButtonBox_h__
+
+/* Qt includes */
+#include <QDialogButtonBox>
+
+class QIDialogButtonBox: public QDialogButtonBox
+{
+public:
+    QIDialogButtonBox (QWidget *aParent = 0) :QDialogButtonBox (aParent) {}
+    QIDialogButtonBox (Qt::Orientation aOrientation, QWidget *aParent = 0) :QDialogButtonBox (aOrientation, aParent) {}
+    QIDialogButtonBox (StandardButtons aButtons, Qt::Orientation aOrientation = Qt::Horizontal, QWidget *aParent = 0);
+
+    QPushButton *addButton (const QString &aText, ButtonRole aRole);
+    QPushButton *addButton (StandardButton aButton);
+
+    void setStandardButtons (StandardButtons aButtons);
+
+private:
+    void initHelpButton();
+};
+
+#endif /* __QIDialogButtonBox_h__ */
+
Index: trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSnapshotDetailsDlg.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSnapshotDetailsDlg.h	(revision 8740)
+++ trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSnapshotDetailsDlg.h	(revision 8740)
@@ -0,0 +1,50 @@
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * VBoxSnapshotDetailsDlg class declaration
+ */
+
+/*
+ * Copyright (C) 2006-2008 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * 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 __VBoxSnapshotDetailsDlg_h__
+#define __VBoxSnapshotDetailsDlg_h__
+
+#include <VBoxSnapshotDetailsDlg.gen.h>
+#include <COMDefs.h>
+
+class VBoxSnapshotDetailsDlg : public QDialog, public Ui::VBoxSnapshotDetailsDlg
+{
+    Q_OBJECT;
+
+public:
+
+    VBoxSnapshotDetailsDlg (QWidget *aParent);
+
+    void getFromSnapshot (const CSnapshot &aSnapshot);
+    void putBackToSnapshot();
+
+private slots:
+
+    void onNameChanged (const QString &aText);
+
+private:
+
+    CSnapshot mSnapshot;
+};
+
+#endif // __VBoxSnapshotDetailsDlg_h__
+
Index: trunk/src/VBox/Frontends/VirtualBox4/src/QIDialogButtonBox.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/QIDialogButtonBox.cpp	(revision 8740)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/QIDialogButtonBox.cpp	(revision 8740)
@@ -0,0 +1,65 @@
+/** @file
+ *
+ * VBox frontends: Qt GUI ("VirtualBox"):
+ * VirtualBox Qt extensions: QIDialogButtonBox class implementation
+ */
+
+/*
+ * Copyright (C) 2008 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * 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.
+ */
+
+#include "QIDialogButtonBox.h"
+
+/* Qt includes */
+#include <QPushButton>
+
+QIDialogButtonBox::QIDialogButtonBox (StandardButtons aButtons, Qt::Orientation aOrientation, QWidget *aParent)
+   : QDialogButtonBox (aButtons, aOrientation, aParent)
+{
+    initHelpButton ();
+}
+
+QPushButton *QIDialogButtonBox::addButton (const QString &aText, ButtonRole aRole)
+{
+    QPushButton *btn = QDialogButtonBox::addButton (aText, aRole);
+    initHelpButton();
+    return btn;
+}
+
+QPushButton *QIDialogButtonBox::addButton (StandardButton aButton)
+{
+    QPushButton *btn = QDialogButtonBox::addButton (aButton);
+    initHelpButton();
+    return btn;
+}
+
+void QIDialogButtonBox::setStandardButtons (StandardButtons aButtons)
+{
+    QDialogButtonBox::setStandardButtons (aButtons);
+    initHelpButton();
+}
+
+void QIDialogButtonBox::initHelpButton()
+{
+    QPushButton *btn = button (QDialogButtonBox::Help);
+    if (btn)
+    {
+        if (btn->text() == tr ("Help"))
+            btn->setText (tr ("&Help"));
+        if (btn->shortcut().isEmpty())
+            btn->setShortcut (QKeySequence (tr ("F1"))); 
+    }
+}
+
Index: trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSnapshotDetailsDlg.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSnapshotDetailsDlg.cpp	(revision 8740)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSnapshotDetailsDlg.cpp	(revision 8740)
@@ -0,0 +1,79 @@
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * VBoxSnapshotDetailsDlg class implementation
+ */
+
+/*
+ * Copyright (C) 2006-2008 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * 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.
+ */
+
+#include <VBoxSnapshotDetailsDlg.h>
+#include <VBoxGlobal.h>
+#include <VBoxProblemReporter.h>
+#include <VBoxUtils.h>
+
+/* Qt includes */
+#include <QPushButton>
+
+VBoxSnapshotDetailsDlg::VBoxSnapshotDetailsDlg (QWidget *aParent)
+    : QDialog (aParent)
+{
+    /* Apply UI decorations */
+    setupUi (this);
+
+    /* Setup mTeSummary browser. */
+    mTeSummary->viewport()->setAutoFillBackground (false);
+    mTeSummary->setFocus();
+
+    /* Setup connections */
+    connect (mLeName, SIGNAL (textChanged (const QString&)),
+             this, SLOT (onNameChanged (const QString&)));
+    connect (mButtonBox, SIGNAL (helpRequested()),
+             &vboxProblem(), SLOT (showHelpHelpDialog()));
+
+    resize (450, 450);
+}
+
+void VBoxSnapshotDetailsDlg::getFromSnapshot (const CSnapshot &aSnapshot)
+{
+    mSnapshot = aSnapshot;
+    CMachine machine = aSnapshot.GetMachine();
+
+    /* Get properties */
+    mLeName->setText (aSnapshot.GetName());
+    mTeDescription->setText (aSnapshot.GetDescription());
+
+    /* Compose summary */
+    mTeSummary->setText (
+        vboxGlobal().detailsReport (machine, false /* isNewVM */,
+                                             false /* withLinks */));
+    setWindowTitle (tr ("Details of %1 (%2)")
+                    .arg (mSnapshot.GetName()).arg (machine.GetName()));
+}
+
+void VBoxSnapshotDetailsDlg::putBackToSnapshot()
+{
+    AssertReturn (!mSnapshot.isNull(), (void) 0);
+
+    mSnapshot.SetName (mLeName->text());
+    mSnapshot.SetDescription (mTeDescription->toPlainText());
+}
+
+void VBoxSnapshotDetailsDlg::onNameChanged (const QString &aText)
+{
+    mButtonBox->button (QDialogButtonBox::Ok)->setEnabled (!aText.trimmed().isEmpty());
+}
+
Index: trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxSnapshotDetailsDlg.ui
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxSnapshotDetailsDlg.ui	(revision 8739)
+++ trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxSnapshotDetailsDlg.ui	(revision 8740)
@@ -1,3 +1,20 @@
 <ui version="4.0" >
+ <comment>
+ VBox frontends: Qt4 GUI ("VirtualBox"):
+
+ Copyright (C) 2008 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;
+ you can redistribute it and/or modify it under the terms of the GNU
+ 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.
+ </comment>
  <class>VBoxSnapshotDetailsDlg</class>
  <widget class="QDialog" name="VBoxSnapshotDetailsDlg" >
@@ -108,52 +125,55 @@
    </item>
    <item>
-    <layout class="QHBoxLayout" >
-     <item>
-      <widget class="QPushButton" name="mBtnHelp" >
-       <property name="text" >
-        <string>Help</string>
-       </property>
-       <property name="shortcut" >
-        <string>F1</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer>
-       <property name="orientation" >
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" >
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="mBtnOk" >
-       <property name="text" >
-        <string>&amp;OK</string>
-       </property>
-       <property name="default" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="mBtnCancel" >
-       <property name="text" >
-        <string>Cancel</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+    <widget class="QIDialogButtonBox" name="mButtonBox" >
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QIDialogButtonBox</class>
+   <extends>QDialogButtonBox</extends>
+   <header>QIDialogButtonBox.h</header>
+  </customwidget>
+ </customwidgets>
  <resources>
   <include location="../VirtualBox.qrc" />
  </resources>
- <connections/>
+ <connections>
+  <connection>
+   <sender>mButtonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>VBoxSnapshotDetailsDlg</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>203</x>
+     <y>365</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>203</x>
+     <y>193</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mButtonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>VBoxSnapshotDetailsDlg</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>203</x>
+     <y>365</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>203</x>
+     <y>193</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
