VirtualBox

Changeset 44831 in vbox


Ignore:
Timestamp:
Feb 26, 2013 4:01:56 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
83971
Message:

FE/Qt: Multi-screen support: Cleanup multi-screen layout (part 3).

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp

    r44830 r44831  
    4242    : m_pMachineLogic(pMachineLogic)
    4343    , m_pScreenMap(new QMap<int, int>())
     44    , m_pViewMenu(0)
    4445{
    4546    /* Calculate host/guest screen count: */
     
    5051UIMultiScreenLayout::~UIMultiScreenLayout()
    5152{
     53    /* Cleanup screen-map: */
    5254    delete m_pScreenMap;
    53     while (!m_screenMenuList.isEmpty())
    54     {
    55         delete m_screenMenuList.first();
    56         m_screenMenuList.removeFirst();
    57     }
     55    /* Cleanup view-menu: */
     56    cleanupViewMenu();
    5857}
    5958
    6059void UIMultiScreenLayout::setViewMenu(QMenu *pViewMenu)
    6160{
    62     if (m_cHostScreens > 1)
    63     {
    64         pViewMenu->addSeparator();
    65         for (int i = 0; i < m_cGuestScreens; ++i)
    66         {
    67             m_screenMenuList << pViewMenu->addMenu(tr("Virtual Screen %1").arg(i + 1));
    68             m_screenMenuList.last()->menuAction()->setData(true);
    69             QActionGroup *pScreenGroup = new QActionGroup(m_screenMenuList.last());
    70             pScreenGroup->setExclusive(true);
    71             connect(pScreenGroup, SIGNAL(triggered(QAction*)), this, SLOT(sltScreenLayoutChanged(QAction*)));
    72             for (int a = 0; a < m_cHostScreens; ++a)
    73             {
    74                 QAction *pAction = pScreenGroup->addAction(tr("Use Host Screen %1").arg(a + 1));
    75                 pAction->setCheckable(true);
    76                 pAction->setData(RT_MAKE_U32(i, a));
    77             }
    78             m_screenMenuList.last()->addActions(pScreenGroup->actions());
    79         }
    80     }
     61    /* Assign view-menu: */
     62    m_pViewMenu = pViewMenu;
     63    /* Prepare view-menu: */
     64    prepareViewMenu();
    8165}
    8266
     
    284268}
    285269
     270void UIMultiScreenLayout::prepareViewMenu()
     271{
     272    /* Make sure view-menu was set: */
     273    if (!m_pViewMenu)
     274        return;
     275
     276    /* Cleanup menu first: */
     277    cleanupViewMenu();
     278
     279    /* If we do have more than one host screen: */
     280    if (m_cHostScreens > 1)
     281    {
     282        for (int i = 0; i < m_cGuestScreens; ++i)
     283        {
     284            m_screenMenuList << m_pViewMenu->addMenu(tr("Virtual Screen %1").arg(i + 1));
     285            m_screenMenuList.last()->menuAction()->setData(true);
     286            QActionGroup *pScreenGroup = new QActionGroup(m_screenMenuList.last());
     287            pScreenGroup->setExclusive(true);
     288            connect(pScreenGroup, SIGNAL(triggered(QAction*)), this, SLOT(sltScreenLayoutChanged(QAction*)));
     289            for (int a = 0; a < m_cHostScreens; ++a)
     290            {
     291                QAction *pAction = pScreenGroup->addAction(tr("Use Host Screen %1").arg(a + 1));
     292                pAction->setCheckable(true);
     293                pAction->setData(RT_MAKE_U32(i, a));
     294            }
     295            m_screenMenuList.last()->addActions(pScreenGroup->actions());
     296        }
     297    }
     298}
     299
     300void UIMultiScreenLayout::cleanupViewMenu()
     301{
     302    /* Make sure view-menu was set: */
     303    if (!m_pViewMenu)
     304        return;
     305
     306    /* Cleanup view-menu actions: */
     307    while (!m_screenMenuList.isEmpty())
     308        delete m_screenMenuList.takeFirst();
     309}
     310
    286311quint64 UIMultiScreenLayout::memoryRequirements(const QMap<int, int> *pScreenLayout) const
    287312{
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.h

    r44830 r44831  
    6868    void calculateHostMonitorCount();
    6969    void calculateGuestScreenCount();
     70    void prepareViewMenu();
     71
     72    /* Helper: Cleanup stuff: */
     73    void cleanupViewMenu();
    7074
    7175    /* Other helpers: */
     
    7781    int m_cHostScreens;
    7882    QMap<int, int> *m_pScreenMap;
     83    QMenu *m_pViewMenu;
    7984    QList<QMenu*> m_screenMenuList;
    8085};
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