VirtualBox

Changeset 81284 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Oct 15, 2019 11:06:09 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133979
Message:

FE/Qt: Reworking QIManagerDialog to inherit QIWithRestorableGeometry template thus allowing it's children to save/restore geometry using standard well-known approach.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIManagerDialog.cpp

    r81227 r81284  
    231231    }
    232232}
    233 
    234 void QIManagerDialog::setDialogGeometry(const QRect &geometry)
    235 {
    236 #if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN)
    237     /* Use the old approach for OSX/Win: */
    238     move(geometry.topLeft());
    239     resize(geometry.size());
    240 #else /* !VBOX_WS_MAC && !VBOX_WS_WIN */
    241     /* Use the new approach otherwise: */
    242     UICommon::setTopLevelGeometry(this, geometry);
    243 #endif /* !VBOX_WS_MAC && !VBOX_WS_WIN */
    244 
    245     /* Maximize (if necessary): */
    246     if (shouldBeMaximized())
    247         showMaximized();
    248 }
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIManagerDialog.h

    r76581 r81284  
    2727
    2828/* GUI includes: */
     29#include "QIWithRestorableGeometry.h"
    2930#include "UILibraryDefs.h"
    3031
     
    8586
    8687/** QMainWindow sub-class used as various manager dialogs. */
    87 class SHARED_LIBRARY_STUFF QIManagerDialog : public QMainWindow
     88class SHARED_LIBRARY_STUFF QIManagerDialog : public QIWithRestorableGeometry<QMainWindow>
    8889{
    8990    Q_OBJECT;
     
    174175    /** @} */
    175176
    176     /** @name Functions related to geometry restoration.
    177      * @{ */
    178         /** Sets the position and size of the dialog. */
    179         void setDialogGeometry(const QRect &geometry);
    180         /** Returns whether the window should be maximized when geometry being restored. */
    181         virtual bool shouldBeMaximized() const { return false; }
    182     /** @} */
    183 
    184177private:
    185178
  • trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIFileManagerDialog.cpp

    r79365 r81284  
    111111void UIFileManagerDialog::loadSettings()
    112112{
    113     const QRect desktopRect = gpDesktop->availableGeometry(this);
    114     int iDefaultWidth = desktopRect.width() / 2;
    115     int iDefaultHeight = desktopRect.height() * 3 / 4;
    116 
    117     QRect defaultGeometry(0, 0, iDefaultWidth, iDefaultHeight);
     113    /* Invent default window geometry: */
     114    const QRect availableGeo = gpDesktop->availableGeometry(this);
     115    const int iDefaultWidth = availableGeo.width() / 2;
     116    const int iDefaultHeight = availableGeo.height() * 3 / 4;
     117    QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight);
    118118    if (centerWidget())
    119         defaultGeometry.moveCenter(centerWidget()->geometry().center());
     119        defaultGeo.moveCenter(centerWidget()->geometry().center());
     120    else
     121        defaultGeo.moveCenter(availableGeo.center());
    120122
    121123    /* Load geometry from extradata: */
    122     QRect geometry = gEDataManager->fileManagerDialogGeometry(this, defaultGeometry);
    123 
    124     /* Restore geometry: */
     124    const QRect geo = gEDataManager->fileManagerDialogGeometry(this, defaultGeo);
    125125    LogRel2(("GUI: UIFileManagerDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
    126              geometry.x(), geometry.y(), geometry.width(), geometry.height()));
    127     setDialogGeometry(geometry);
     126             geo.x(), geo.y(), geo.width(), geo.height()));
     127    restoreGeometry(geo);
    128128}
    129129
    130130void UIFileManagerDialog::saveSettings() const
    131131{
    132     /* Save window geometry to extradata: */
    133     const QRect saveGeometry = geometry();
    134 #ifdef VBOX_WS_MAC
    135     /* darwinIsWindowMaximized expects a non-const QWidget*. thus const_cast: */
    136     QWidget *pw = const_cast<QWidget*>(qobject_cast<const QWidget*>(this));
    137     gEDataManager->setFileManagerDialogGeometry(saveGeometry, ::darwinIsWindowMaximized(pw));
    138 #else /* !VBOX_WS_MAC */
    139     gEDataManager->setFileManagerDialogGeometry(saveGeometry, isMaximized());
    140 #endif /* !VBOX_WS_MAC */
    141     LogRel2(("GUI: File Manager Dialog: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
    142              saveGeometry.x(), saveGeometry.y(), saveGeometry.width(), saveGeometry.height()));
     132    /* Save geometry to extradata: */
     133    const QRect geo = currentGeometry();
     134    LogRel2(("GUI: UIFileManagerDialog: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
     135             geo.x(), geo.y(), geo.width(), geo.height()));
     136    gEDataManager->setFileManagerDialogGeometry(geo, isCurrentlyMaximized());
    143137}
    144138
  • trunk/src/VBox/Frontends/VirtualBox/src/guestctrl/UIGuestProcessControlDialog.cpp

    r79365 r81284  
    106106void UIGuestProcessControlDialog::loadSettings()
    107107{
    108     const QRect desktopRect = gpDesktop->availableGeometry(this);
    109     int iDefaultWidth = desktopRect.width() / 2;
    110     int iDefaultHeight = desktopRect.height() * 3 / 4;
    111 
    112     QRect defaultGeometry(0, 0, iDefaultWidth, iDefaultHeight);
     108    /* Invent default window geometry: */
     109    const QRect availableGeo = gpDesktop->availableGeometry(this);
     110    const int iDefaultWidth = availableGeo.width() / 2;
     111    const int iDefaultHeight = availableGeo.height() * 3 / 4;
     112    QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight);
    113113    if (centerWidget())
    114         defaultGeometry.moveCenter(centerWidget()->geometry().center());
     114        defaultGeo.moveCenter(centerWidget()->geometry().center());
     115    else
     116        defaultGeo.moveCenter(availableGeo.center());
    115117
    116118    /* Load geometry from extradata: */
    117     QRect geometry = gEDataManager->guestProcessControlDialogGeometry(this, defaultGeometry);
    118 
    119     /* Restore geometry: */
     119    QRect geo = gEDataManager->guestProcessControlDialogGeometry(this, defaultGeo);
    120120    LogRel2(("GUI: UIGuestProcessControlDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
    121              geometry.x(), geometry.y(), geometry.width(), geometry.height()));
    122     setDialogGeometry(geometry);
     121             geo.x(), geo.y(), geo.width(), geo.height()));
     122    restoreGeometry(geo);
    123123}
    124124
    125125void UIGuestProcessControlDialog::saveSettings() const
    126126{
    127     /* Save window geometry to extradata: */
    128     const QRect saveGeometry = geometry();
    129 #ifdef VBOX_WS_MAC
    130     /* darwinIsWindowMaximized expects a non-const QWidget*. thus const_cast: */
    131     QWidget *pw = const_cast<QWidget*>(qobject_cast<const QWidget*>(this));
    132     gEDataManager->setGuestProcessControlDialogGeometry(saveGeometry, ::darwinIsWindowMaximized(pw));
    133 #else /* !VBOX_WS_MAC */
    134     gEDataManager->setGuestProcessControlDialogGeometry(saveGeometry, isMaximized());
    135 #endif /* !VBOX_WS_MAC */
    136     LogRel2(("GUI: Guest Process Control Dialog: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
    137              saveGeometry.x(), saveGeometry.y(), saveGeometry.width(), saveGeometry.height()));
     127    /* Save geometry to extradata: */
     128    const QRect geo = currentGeometry();
     129    LogRel2(("GUI: UIGuestProcessControlDialog: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
     130             geo.x(), geo.y(), geo.width(), geo.height()));
     131    gEDataManager->setGuestProcessControlDialogGeometry(geo, isCurrentlyMaximized());
    138132}
    139133
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerDialog.cpp

    r79365 r81284  
    115115void UIVMLogViewerDialog::loadSettings()
    116116{
    117     /* Acquire widget: */
     117    /* Invent default window geometry: */
     118    const QRect availableGeo = gpDesktop->availableGeometry(this);
     119    int iDefaultWidth = availableGeo.width() / 2;
     120    int iDefaultHeight = availableGeo.height() * 3 / 4;
     121    /* Try obtain the default width of the current logviewer: */
    118122    const UIVMLogViewerWidget *pWidget = qobject_cast<const UIVMLogViewerWidget*>(widget());
    119 
    120     /* Restore window geometry: */
    121     const QRect desktopRect = gpDesktop->availableGeometry(this);
    122     int iDefaultWidth = desktopRect.width() / 2;
    123     int iDefaultHeight = desktopRect.height() * 3 / 4;
    124 
    125     /* Try obtain the default width of the current logviewer: */
    126123    if (pWidget)
    127124    {
    128         int iWidth = pWidget->defaultLogPageWidth();
     125        const int iWidth = pWidget->defaultLogPageWidth();
    129126        if (iWidth != 0)
    130127            iDefaultWidth = iWidth;
    131128    }
    132 
    133     QRect defaultGeometry(0, 0, iDefaultWidth, iDefaultHeight);
     129    QRect defaultGeo(0, 0, iDefaultWidth, iDefaultHeight);
    134130    if (centerWidget())
    135         defaultGeometry.moveCenter(centerWidget()->geometry().center());
     131        defaultGeo.moveCenter(centerWidget()->geometry().center());
     132    else
     133        defaultGeo.moveCenter(availableGeo.center());
    136134
    137135    /* Load geometry from extradata: */
    138     QRect geometry = gEDataManager->logWindowGeometry(this, defaultGeometry);
    139 
    140     /* Restore geometry: */
    141     LogRel2(("GUI: UIVMLogViewer: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
    142              geometry.x(), geometry.y(), geometry.width(), geometry.height()));
    143     setDialogGeometry(geometry);
     136    const QRect geo = gEDataManager->logWindowGeometry(this, defaultGeo);
     137    LogRel2(("GUI: UIVMLogViewerDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
     138             geo.x(), geo.y(), geo.width(), geo.height()));
     139    restoreGeometry(geo);
    144140}
    145141
    146142void UIVMLogViewerDialog::saveSettings() const
    147143{
    148     /* Save window geometry to extradata: */
    149     const QRect saveGeometry = geometry();
    150 #ifdef VBOX_WS_MAC
    151     /* darwinIsWindowMaximized expects a non-const QWidget*. thus const_cast: */
    152     QWidget *pw = const_cast<QWidget*>(qobject_cast<const QWidget*>(this));
    153     gEDataManager->setLogWindowGeometry(saveGeometry, ::darwinIsWindowMaximized(pw));
    154 #else /* !VBOX_WS_MAC */
    155     gEDataManager->setLogWindowGeometry(saveGeometry, isMaximized());
    156 #endif /* !VBOX_WS_MAC */
    157     LogRel2(("GUI: UIVMLogViewer: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
    158              saveGeometry.x(), saveGeometry.y(), saveGeometry.width(), saveGeometry.height()));
     144    /* Save geometry to extradata: */
     145    const QRect geo = currentGeometry();
     146    LogRel2(("GUI: UIVMLogViewerDialog: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
     147             geo.x(), geo.y(), geo.width(), geo.height()));
     148    gEDataManager->setLogWindowGeometry(geo, isCurrentlyMaximized());
    159149}
    160150
Note: See TracChangeset for help on using the changeset viewer.

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