VirtualBox

Changeset 77376 in vbox


Ignore:
Timestamp:
Feb 20, 2019 12:32:25 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128924
Message:

FE/Qt: bugref:9080. Save/load dialog geometry

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp

    r77014 r77376  
    7373const char *UIExtraDataDefs::GUI_RecentFolderCD = "GUI/RecentFolderCD";
    7474const char *UIExtraDataDefs::GUI_RecentFolderFD = "GUI/RecentFolderFD";
    75 const char *UIExtraDataDefs::GUI_RecentFolderVISOContent = "GUI/RecentFolderVISOContent";
    7675const char *UIExtraDataDefs::GUI_RecentListHD = "GUI/RecentListHD";
    7776const char *UIExtraDataDefs::GUI_RecentListCD = "GUI/RecentListCD";
    7877const char *UIExtraDataDefs::GUI_RecentListFD = "GUI/RecentListFD";
    7978
     79/* Viso Creator: */
     80const char *UIExtraDataDefs::GUI_VisoCreator_RecentFolder   = "GUI/VisoCreator/RecentFolder";
     81const char *UIExtraDataDefs::GUI_VisoCreator_DialogGeometry = "GUI/VisoCreator/DialogGeometry";
    8082
    8183/* VirtualBox Manager: */
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r77362 r77376  
    136136        /** Holds recent folder for floppy-disks. */
    137137        SHARED_LIBRARY_STUFF extern const char *GUI_RecentFolderFD;
    138         /** Holds recent folder for VISO creation content. */
    139         SHARED_LIBRARY_STUFF extern const char *GUI_RecentFolderVISOContent;
    140138        /** Holds the list of recently used hard-drives. */
    141139        SHARED_LIBRARY_STUFF extern const char *GUI_RecentListHD;
     
    144142        /** Holds the list of recently used floppy-disks. */
    145143        SHARED_LIBRARY_STUFF extern const char *GUI_RecentListFD;
     144    /** @} */
     145
     146    /** @name Settings: Viso Creator
     147      * @{ */
     148        /** Holds recent folder for Viso creation content. */
     149        SHARED_LIBRARY_STUFF extern const char *GUI_VisoCreator_RecentFolder;
     150        /** Holds dialog geometry for Viso creation dialog. */
     151        SHARED_LIBRARY_STUFF extern const char *GUI_VisoCreator_DialogGeometry;
    146152    /** @} */
    147153
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r77014 r77376  
    19571957           << GUI_ActivateHoveredMachineWindow
    19581958           << GUI_Input_SelectorShortcuts << GUI_Input_MachineShortcuts
    1959            << GUI_RecentFolderHD << GUI_RecentFolderCD << GUI_RecentFolderFD << GUI_RecentFolderVISOContent
     1959           << GUI_RecentFolderHD << GUI_RecentFolderCD << GUI_RecentFolderFD
     1960           << GUI_VisoCreator_RecentFolder << GUI_VisoCreator_DialogGeometry
    19601961           << GUI_RecentListHD << GUI_RecentListCD << GUI_RecentListFD
    19611962           << GUI_LastSelectorWindowPosition << GUI_SplitterSizes
     
    26182619}
    26192620
    2620 QString UIExtraDataManager::recentFolderForVISOContent()
    2621 {
    2622     return extraDataString(GUI_RecentFolderVISOContent);
    2623 }
    2624 
    26252621void UIExtraDataManager::setRecentFolderForHardDrives(const QString &strValue)
    26262622{
     
    26382634}
    26392635
    2640 void UIExtraDataManager::setRecentFolderForVISOContent(const QString &strValue)
    2641 {
    2642     setExtraDataString(GUI_RecentFolderVISOContent, strValue);
    2643 }
    2644 
    26452636QStringList UIExtraDataManager::recentListOfHardDrives()
    26462637{
     
    26712662{
    26722663    setExtraDataStringList(GUI_RecentListFD, value);
     2664}
     2665
     2666QString UIExtraDataManager::visoCreatorRecentFolder()
     2667{
     2668    return extraDataString(GUI_VisoCreator_RecentFolder);
     2669}
     2670
     2671void UIExtraDataManager::setVisoCreatorRecentFolder(const QString &strValue)
     2672{
     2673    setExtraDataString(GUI_VisoCreator_RecentFolder, strValue);
     2674}
     2675
     2676QRect UIExtraDataManager::visoCreatorDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry)
     2677{
     2678    return dialogGeometry(GUI_VisoCreator_DialogGeometry, pWidget, defaultGeometry);
     2679}
     2680
     2681void UIExtraDataManager::setVisoCreatorDialogGeometry(const QRect &geometry, bool fMaximized)
     2682{
     2683    setDialogGeometry(GUI_VisoCreator_DialogGeometry, geometry, fMaximized);
     2684}
     2685
     2686bool UIExtraDataManager::visoCreatorDialogShouldBeMaximized()
     2687{
     2688    /* Get corresponding extra-data: */
     2689    const QStringList data = extraDataStringList(GUI_VisoCreator_DialogGeometry);
     2690
     2691    /* Make sure 5th item has required value: */
     2692    return data.size() == 5 && data[4] == GUI_Geometry_State_Max;
    26732693}
    26742694
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h

    r77014 r77376  
    269269        /** Returns recent folder for floppy-disks. */
    270270        QString recentFolderForFloppyDisks();
    271         /** Returns recent folder for VISO creation content. */
    272         QString recentFolderForVISOContent();
    273271        /** Defines recent folder for hard-drives as @a strValue. */
    274272        void setRecentFolderForHardDrives(const QString &strValue);
     
    277275        /** Defines recent folder for floppy-disk as @a strValue. */
    278276        void setRecentFolderForFloppyDisks(const QString &strValue);
    279         /** Defines recent folder for VISO creation content as @a strValue. */
    280         void setRecentFolderForVISOContent(const QString &strValue);
    281277
    282278        /** Returns the list of recently used hard-drives. */
     
    292288        /** Defines the list of recently used floppy-disks as @a value. */
    293289        void setRecentListOfFloppyDisks(const QStringList &value);
     290    /** @} */
     291
     292    /** @name Viso Creator
     293      * @{ */
     294        /** Returns recent folder for Viso creation content. */
     295        QString visoCreatorRecentFolder();
     296        /** Defines recent folder for Viso creation content as @a strValue. */
     297        void setVisoCreatorRecentFolder(const QString &strValue);
     298        /** Returns the Viso creation dialog geometry. */
     299        QRect visoCreatorDialogGeometry(QWidget *pWidget, const QRect &defaultGeometry);
     300        /** Defines the Viso creation dialog geometry. */
     301        void setVisoCreatorDialogGeometry(const QRect &geometry, bool fMaximized);
     302        /** Returns whether the Viso creation dialog should be maximized. */
     303        bool visoCreatorDialogShouldBeMaximized();
    294304    /** @} */
    295305
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp

    r77359 r77376  
    27212721
    27222722    QWidget *pDialogParent = windowManager().realParentWindow(pParent);
    2723     QPointer<UIVisoCreator> pVisoCreator = new UIVisoCreator(pDialogParent, strMachineName);
     2723    UIVisoCreator *pVisoCreator = new UIVisoCreator(pDialogParent, strMachineName);
    27242724
    27252725    if (!pVisoCreator)
    27262726        return QString();
    27272727    windowManager().registerNewParent(pVisoCreator, pDialogParent);
    2728     pVisoCreator->setCurrentPath(gEDataManager->recentFolderForVISOContent());
     2728    pVisoCreator->setCurrentPath(gEDataManager->visoCreatorRecentFolder());
    27292729
    27302730    if (pVisoCreator->exec(false /* not application modal */))
     
    27362736
    27372737        if (files.empty() || files[0].isEmpty())
     2738        {
     2739            delete pVisoCreator;
    27382740            return QUuid();
    2739 
    2740         gEDataManager->setRecentFolderForVISOContent(pVisoCreator->currentPath());
     2741        }
     2742
     2743        gEDataManager->setVisoCreatorRecentFolder(pVisoCreator->currentPath());
    27412744
    27422745        /* Produce the VISO. */
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp

    r77332 r77376  
    2424/* GUI includes: */
    2525#include "QIDialogButtonBox.h"
     26#include "UIDesktopWidgetWatchdog.h"
     27#include "UIExtraDataManager.h"
    2628#include "UIIconPool.h"
    2729#include "UIToolBar.h"
     
    3133#include "UIVisoCreatorOptionsPanel.h"
    3234#include "UIVisoContentBrowser.h"
    33 
     35#include "VBoxGlobal.h"
    3436
    3537UIVisoCreator::UIVisoCreator(QWidget *pParent /* =0 */, const QString& strMachineName /* = QString() */)
     
    5557{
    5658    m_visoOptions.m_strVisoName = !strMachineName.isEmpty() ? strMachineName : "ad-hoc";
     59    loadSettings();
    5760    prepareActions();
    5861    prepareWidgets();
     
    6568UIVisoCreator::~UIVisoCreator()
    6669{
     70    saveSettings();
    6771}
    6872
     
    540544    m_pVerticalToolBar->addWidget(bottomSpacerWidget);
    541545}
     546
     547void UIVisoCreator::loadSettings()
     548{
     549    const QRect desktopRect = gpDesktop->availableGeometry(this);
     550    int iDefaultWidth = desktopRect.width() / 2;
     551    int iDefaultHeight = desktopRect.height() * 3 / 4;
     552
     553    QRect defaultGeometry(0, 0, iDefaultWidth, iDefaultHeight);
     554    QWidget *pParent = qobject_cast<QWidget*>(parent());
     555    if (pParent)
     556        defaultGeometry.moveCenter(pParent->geometry().center());
     557
     558    /* Load geometry from extradata: */
     559    QRect geometry = gEDataManager->visoCreatorDialogGeometry(this, defaultGeometry);
     560    setDialogGeometry(geometry);
     561}
     562
     563void UIVisoCreator::saveSettings() const
     564{
     565    /* Save window geometry to extradata: */
     566    const QRect saveGeometry = geometry();
     567#ifdef VBOX_WS_MAC
     568    /* darwinIsWindowMaximized expects a non-const QWidget*. thus const_cast: */
     569    QWidget *pw = const_cast<QWidget*>(qobject_cast<const QWidget*>(this));
     570    gEDataManager->setVisoCreatorDialogGeometry(saveGeometry, ::darwinIsWindowMaximized(pw));
     571#else /* !VBOX_WS_MAC */
     572    gEDataManager->setVisoCreatorDialogGeometry(saveGeometry, isMaximized());
     573#endif /* !VBOX_WS_MAC */
     574}
     575
     576void UIVisoCreator::setDialogGeometry(const QRect &geometry)
     577{
     578#ifdef VBOX_WS_MAC
     579    /* Use the old approach for OSX: */
     580    move(geometry.topLeft());
     581    resize(geometry.size());
     582#else /* VBOX_WS_MAC */
     583    /* Use the new approach for Windows/X11: */
     584    VBoxGlobal::setTopLevelGeometry(this, geometry);
     585#endif /* !VBOX_WS_MAC */
     586
     587    /* Maximize (if necessary): */
     588    if (gEDataManager->visoCreatorDialogShouldBeMaximized())
     589        showMaximized();
     590}
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h

    r77330 r77376  
    121121      *  - assign it to the most recently "unhidden" panel */
    122122    void manageEscapeShortCut();
     123    void loadSettings();
     124    void saveSettings() const;
     125    void setDialogGeometry(const QRect &geometry);
    123126
    124127    QAction              *m_pActionConfiguration;
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