VirtualBox

Changeset 14046 in vbox


Ignore:
Timestamp:
Nov 10, 2008 10:40:32 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
39102
Message:

FE/Qt4: Tray Support: Styling; Reduced the number of VMs per menu to 10 and added numbering.

Location:
trunk/src/VBox/Frontends/VirtualBox4
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox4/include/VBoxDefs.h

    r13580 r14046  
    2424#define __VBoxDefs_h__
    2525
     26/* Qt includes */
    2627#include <qevent.h>
     28#include <QUuid>
    2729
    2830#define LOG_GROUP LOG_GROUP_GUI
     
    6567#if defined (VBOX_GUI_DEBUG)
    6668
     69#include <QThread>
     70#include <QDateTime>
     71
    6772#include <VBox/types.h> // for uint64_t type
    68 
    69 #include <qthread.h>
    70 #include <qdatetime.h>
    7173
    7274/**
     
    104106#endif // VBOX_GUI_DEBUG
    105107
    106 /* A common namespace for all enums */
     108/** Null UUID constant to be used as a default value for reference parameters */
     109extern const QUuid QUuid_null;
     110
     111/** Common namespace for all enums */
    107112struct VBoxDefs
    108113{
  • trunk/src/VBox/Frontends/VirtualBox4/include/VBoxSelectorWnd.h

    r14022 r14046  
    3636    #include <QSystemTrayIcon>
    3737#endif
    38 #include <QUuid>
    3938
    4039class VBoxSnapshotsWgt;
     
    7069
    7170    void fileMediaMgr();
    72     VBoxVMItem* getSelectedItem();
    73 #ifdef VBOX_GUI_WITH_SYSTRAY
    74     void iconActivated (QSystemTrayIcon::ActivationReason aReason);
    75     void showWindow();
    76 #endif
    7771    void fileSettings();
    7872    void fileExit();
     
    8175    void vmSettings (const QString &aCategory = QString::null,
    8276                     const QString &aControl = QString::null,
    83                      const QUuid &aMachineId = QUuid());
    84     void vmDelete (const QUuid &aMachineId = QUuid());
    85     void vmStart (const QUuid &aMachineId = QUuid());
    86     void vmDiscard (const QUuid &aMachineId = QUuid());
    87     void vmPause (bool, const QUuid &aMachineId = QUuid());
    88     void vmRefresh (const QUuid &aMachineId = QUuid());
    89     void vmShowLogs (const QUuid &aMachineId = QUuid());
     77                     const QUuid & = QUuid_null);
     78    void vmDelete (const QUuid & = QUuid_null);
     79    void vmStart (const QUuid & = QUuid_null);
     80    void vmDiscard (const QUuid & = QUuid_null);
     81    void vmPause (bool, const QUuid & = QUuid_null);
     82    void vmRefresh (const QUuid & = QUuid_null);
     83    void vmShowLogs (const QUuid & = QUuid_null);
    9084
    9185#ifdef VBOX_GUI_WITH_SYSTRAY
    92     void refreshSysTray(bool a_bRetranslate = false);
     86    void refreshSysTray (bool aRetranslate = false);
    9387#endif
     88
    9489    void refreshVMList();
    9590    void refreshVMItem (const QUuid &aID, bool aDetails,
     
    9893
    9994    void showContextMenu (const QPoint &aPoint);
     95
     96#ifdef VBOX_GUI_WITH_SYSTRAY
     97    void trayIconActivated (QSystemTrayIcon::ActivationReason aReason);
     98    void showWindow();
     99#endif
    100100
    101101protected:
     
    142142    QAction *fileExitAction;
    143143    QAction *vmNewAction;
    144 #ifdef VBOX_GUI_WITH_SYSTRAY
    145     QAction *trayShowWindowAction;
    146     QAction *trayExitAction;
    147 #endif
    148144    QAction *vmConfigAction;
    149145    QAction *vmDeleteAction;
     
    154150    QAction *vmShowLogsAction;
    155151
     152#ifdef VBOX_GUI_WITH_SYSTRAY
     153    QAction *mTrayShowWindowAction;
     154    QAction *mTrayExitAction;
     155#endif
     156
    156157    VBoxHelpActions mHelpActions;
    157158
    158159#ifdef VBOX_GUI_WITH_SYSTRAY
    159160    /* The systray icon */
    160     QSystemTrayIcon *trayIcon;
    161     QMenu *trayIconMenu;
     161    QSystemTrayIcon *mTrayIcon;
     162    QMenu *mTrayIconMenu;
    162163#endif
    163164
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxDefs.cpp

    r12286 r14046  
    2323#include <VBoxDefs.h>
    2424
     25const QUuid QUuid_null;
     26
    2527const char* VBoxDefs::GUI_LastWindowPosition = "GUI/LastWindowPostion";
    2628const char* VBoxDefs::GUI_LastWindowPosition_Max = "max";
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxSelectorWnd.cpp

    r14022 r14046  
    408408    fileExitAction->setMenuRole (QAction::QuitRole);
    409409    fileExitAction->setIcon (VBoxGlobal::iconSet (":/exit_16px.png"));
    410 
    411 #ifdef VBOX_GUI_WITH_SYSTRAY
    412     trayShowWindowAction = new QAction (this);
    413     trayShowWindowAction->setIcon (VBoxGlobal::iconSet (":/VirtualBox_16px.png"));
    414     trayShowWindowAction->setText (tr ("Sun xVM VirtualBox"));
    415 
    416     trayExitAction = new QAction (this);
    417     trayExitAction->setMenuRole (QAction::QuitRole);
    418     trayExitAction->setIcon (VBoxGlobal::iconSet (":/exit_16px.png"));
    419 #endif
    420410
    421411    vmNewAction = new QAction (this);
     
    460450        ":/vm_show_logs_disabled_32px.png", ":/show_logs_disabled_16px.png"));
    461451
     452#ifdef VBOX_GUI_WITH_SYSTRAY
     453    mTrayShowWindowAction = new QAction (this);
     454    mTrayShowWindowAction->setIcon (VBoxGlobal::iconSet (":/VirtualBox_16px.png"));
     455    mTrayShowWindowAction->setText (tr ("Sun xVM VirtualBox"));
     456
     457    mTrayExitAction = new QAction (this);
     458    mTrayExitAction->setMenuRole (QAction::QuitRole);
     459    mTrayExitAction->setIcon (VBoxGlobal::iconSet (":/exit_16px.png"));
     460#endif
     461
    462462    mHelpActions.setup (this);
    463463
     
    466466    {
    467467        /* tray menu */
    468         trayIconMenu = new QMenu(this);
     468        mTrayIconMenu = new QMenu (this);
    469469
    470470        /* tray icon */
    471         trayIcon = new QSystemTrayIcon (this);
    472         trayIcon->setIcon(QIcon (":/VirtualBox_16px.png"));
    473         trayIcon->setContextMenu (trayIconMenu);
    474 
    475         connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
    476                 this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
     471        mTrayIcon = new QSystemTrayIcon (this);
     472        mTrayIcon->setIcon (QIcon (":/VirtualBox_16px.png"));
     473        mTrayIcon->setContextMenu (mTrayIconMenu);
     474
     475        connect (mTrayIcon, SIGNAL (activated (QSystemTrayIcon::ActivationReason)),
     476                this, SLOT (trayIconActivated (QSystemTrayIcon::ActivationReason)));
    477477    }
    478478#endif
     
    665665
    666666#ifdef VBOX_GUI_WITH_SYSTRAY
    667     connect (trayShowWindowAction, SIGNAL (triggered()), this, SLOT(showWindow()));
     667    connect (mTrayShowWindowAction, SIGNAL (triggered()), this, SLOT (showWindow()));
    668668#endif
    669669
     
    719719    /* Save vm selector position */
    720720    {
    721         VBoxVMItem *item = getSelectedItem();
     721        VBoxVMItem *item = mVMListView->selectedItem();
    722722        QString curVMId = item ?
    723723            QString (item->id()) :
     
    732732// Public slots
    733733/////////////////////////////////////////////////////////////////////////////
    734 
    735 #ifdef VBOX_GUI_WITH_SYSTRAY
    736 void VBoxSelectorWnd::iconActivated(QSystemTrayIcon::ActivationReason aReason)
    737 {
    738     switch (aReason)
    739     {
    740 
    741     case QSystemTrayIcon::Context:
    742 
    743         refreshSysTray();
    744         break;
    745 
    746     case QSystemTrayIcon::Trigger:
    747         break;
    748 
    749     case QSystemTrayIcon::DoubleClick:
    750 
    751         showWindow();
    752         break;
    753 
    754     case QSystemTrayIcon::MiddleClick:
    755         break;
    756 
    757     default:
    758         break;
    759     }
    760 }
    761 #endif
    762 
    763 VBoxVMItem* VBoxSelectorWnd::getSelectedItem()
    764 {
    765     VBoxVMItem* pItem = NULL;
    766 
    767     if (NULL == pItem)
    768         pItem = mVMListView->selectedItem();
    769 
    770     /* pItem can be NULL here, so don't assert. */
    771     return pItem;
    772 }
    773 
    774 #ifdef VBOX_GUI_WITH_SYSTRAY
    775 void VBoxSelectorWnd::showWindow()
    776 {
    777     showNormal();
    778     setFocus();
    779 }
    780 #endif
    781734
    782735void VBoxSelectorWnd::fileMediaMgr()
     
    836789 *  Opens the VM settings dialog.
    837790 */
    838 void VBoxSelectorWnd::vmSettings (const QString &aCategory, const QString &aControl, const QUuid& aUuid)
     791void VBoxSelectorWnd::vmSettings (const QString &aCategory, const QString &aControl,
     792                                  const QUuid &aUuid /*= QUuid_null*/)
    839793{
    840794    if (!aCategory.isEmpty() && aCategory [0] != '#')
     
    845799    }
    846800
    847     VBoxVMItem *item = mVMModel->itemById (aUuid);
    848     if (NULL == item)
    849         item = getSelectedItem();
     801    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     802                       mVMModel->itemById (aUuid);
    850803
    851804    AssertMsgReturnVoid (item, ("Item must be always selected here"));
     
    888841}
    889842
    890 void VBoxSelectorWnd::vmDelete (const QUuid& aUuid)
    891 {
    892     VBoxVMItem *item = mVMModel->itemById (aUuid);
    893     if (NULL == item)
    894         item = getSelectedItem();
     843void VBoxSelectorWnd::vmDelete (const QUuid &aUuid /*= QUuid_null*/)
     844{
     845    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     846                       mVMModel->itemById (aUuid);
    895847
    896848    AssertMsgReturnVoid (item, ("Item must be always selected here"));
     
    950902}
    951903
    952 void VBoxSelectorWnd::vmStart (const QUuid& aUuid)
    953 {
    954     VBoxVMItem *item = mVMModel->itemById (aUuid);
    955     if (NULL == item)
    956         item = getSelectedItem();
    957 
    958     AssertMsgReturn (item, ("Item must be always selected here"), (void) 0);
     904void VBoxSelectorWnd::vmStart (const QUuid &aUuid /*= QUuid_null*/)
     905{
     906    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     907                       mVMModel->itemById (aUuid);
     908
     909    AssertMsgReturnVoid (item, ("Item must be always selected here"));
    959910
    960911    /* we always get here when mVMListView emits the activated() signal,
     
    1029980}
    1030981
    1031 void VBoxSelectorWnd::vmDiscard (const QUuid& aUuid)
    1032 {
    1033     VBoxVMItem *item = mVMModel->itemById (aUuid);
    1034     if (NULL == item)
    1035         item = getSelectedItem();
    1036 
    1037     AssertMsgReturn (item, ("Item must be always selected here"), (void) 0);
     982void VBoxSelectorWnd::vmDiscard (const QUuid &aUuid /*= QUuid_null*/)
     983{
     984    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     985                       mVMModel->itemById (aUuid);
     986
     987    AssertMsgReturnVoid (item, ("Item must be always selected here"));
    1038988
    1039989    if (!vboxProblem().confirmDiscardSavedState (item->machine()))
     
    10651015}
    10661016
    1067 void VBoxSelectorWnd::vmPause (bool aPause, const QUuid& aUuid)
    1068 {
    1069     VBoxVMItem *item = mVMModel->itemById (aUuid);
    1070     if (NULL == item)
    1071         item = getSelectedItem();
    1072 
    1073     AssertMsgReturn (item, ("Item must be always selected here"), (void) 0);
     1017void VBoxSelectorWnd::vmPause (bool aPause, const QUuid &aUuid /*= QUuid_null*/)
     1018{
     1019    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     1020                       mVMModel->itemById (aUuid);
     1021
     1022    AssertMsgReturnVoid (item, ("Item must be always selected here"));
    10741023
    10751024    CSession session = vboxGlobal().openExistingSession (item->id());
     
    10981047}
    10991048
    1100 void VBoxSelectorWnd::vmRefresh (const QUuid& aUuid)
    1101 {
    1102     VBoxVMItem *item = mVMModel->itemById (aUuid);
    1103     if (NULL == item)
    1104         item = getSelectedItem();
    1105 
    1106     AssertMsgReturn (item, ("Item must be always selected here"), (void) 0);
     1049void VBoxSelectorWnd::vmRefresh (const QUuid &aUuid /*= QUuid_null*/)
     1050{
     1051    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     1052                       mVMModel->itemById (aUuid);
     1053
     1054    AssertMsgReturnVoid (item, ("Item must be always selected here"));
    11071055
    11081056    refreshVMItem (item->id(),
     
    11121060}
    11131061
    1114 void VBoxSelectorWnd::vmShowLogs (const QUuid& aUuid)
    1115 {
    1116     VBoxVMItem *item = mVMModel->itemById (aUuid);
    1117     if (NULL == item)
    1118         item = getSelectedItem();
     1062void VBoxSelectorWnd::vmShowLogs (const QUuid &aUuid /*= QUuid_null*/)
     1063{
     1064    VBoxVMItem *item = aUuid.isNull() ? mVMListView->selectedItem() :
     1065                       mVMModel->itemById (aUuid);
     1066
     1067    AssertMsgReturnVoid (item, ("Item must be always selected here"));
    11191068
    11201069    CMachine machine = item->machine();
     
    11231072
    11241073#ifdef VBOX_GUI_WITH_SYSTRAY
    1125 void VBoxSelectorWnd::refreshSysTray(bool a_bRetranslate)
     1074
     1075void VBoxSelectorWnd::refreshSysTray (bool aRetranslate)
    11261076{
    11271077    if (false == QSystemTrayIcon::isSystemTrayAvailable())
    11281078        return;
    11291079
    1130     Assert(trayIcon);
    1131     Assert(trayIconMenu);
    1132 
    1133     if (!a_bRetranslate)
    1134     {
    1135         trayIcon->setVisible (true);
    1136         trayIconMenu->clear();
    1137         trayIconMenu->addAction (trayExitAction);
    1138         trayIconMenu->addSeparator();
     1080    AssertReturnVoid (mTrayIcon);
     1081    AssertReturnVoid (mTrayIconMenu);
     1082
     1083    if (!aRetranslate)
     1084    {
     1085        mTrayIcon->setVisible (true);
     1086        mTrayIconMenu->clear();
     1087        mTrayIconMenu->addAction (mTrayExitAction);
     1088        mTrayIconMenu->addSeparator();
    11391089    }
    11401090
    11411091    VBoxVMItem* pItem = NULL;
    1142     QMenu* pCurMenu = trayIconMenu;
     1092    QMenu* pCurMenu = mTrayIconMenu;
    11431093    QMenu* pSubMenu = NULL;
    1144     Assert(pCurMenu);
    11451094
    11461095    int iCurItemCount = 0;
     
    11511100        Assert(pItem);
    11521101
    1153         if (a_bRetranslate)
     1102        if (aRetranslate)
    11541103        {
    11551104            pItem->retranslateUi();
     
    11581107        else
    11591108        {
    1160             if (iCurItemCount > 14)     /* 15 machines per sub menu. */
     1109            if (iCurItemCount > 10) /* 10 machines per sub menu. */
    11611110            {
    1162                 pSubMenu = new QMenu (tr("Next 15 machines ..."));
     1111                pSubMenu = new QMenu (tr ("&Other Machines...", "tray menu"));
    11631112                Assert(pSubMenu);
    11641113                pCurMenu->addMenu (pSubMenu);
     
    11951144    }
    11961145
    1197     if (!a_bRetranslate)
    1198     {
    1199         trayIconMenu->addSeparator();
    1200         trayIconMenu->addAction (fileExitAction);
    1201     }
    1202 
    1203 }
    1204 #endif
     1146    if (!aRetranslate)
     1147    {
     1148        mTrayIconMenu->addSeparator();
     1149        mTrayIconMenu->addAction (fileExitAction);
     1150    }
     1151}
     1152
     1153#endif /* #ifdef VBOX_GUI_WITH_SYSTRAY */
    12051154
    12061155void VBoxSelectorWnd::refreshVMList()
     
    12421191                mVMCtxtMenu->exec (mVMListView->mapToGlobal (aPoint));
    12431192}
     1193
     1194#ifdef VBOX_GUI_WITH_SYSTRAY
     1195
     1196void VBoxSelectorWnd::trayIconActivated (QSystemTrayIcon::ActivationReason aReason)
     1197{
     1198    switch (aReason)
     1199    {
     1200        case QSystemTrayIcon::Context:
     1201
     1202            refreshSysTray();
     1203            break;
     1204
     1205        case QSystemTrayIcon::Trigger:
     1206            break;
     1207
     1208        case QSystemTrayIcon::DoubleClick:
     1209
     1210            showWindow();
     1211            break;
     1212
     1213        case QSystemTrayIcon::MiddleClick:
     1214            break;
     1215
     1216        default:
     1217            break;
     1218    }
     1219}
     1220
     1221void VBoxSelectorWnd::showWindow()
     1222{
     1223    showNormal();
     1224    setFocus();
     1225}
     1226
     1227#endif /* #ifdef VBOX_GUI_WITH_SYSTRAY */
    12441228
    12451229// Protected members
     
    14261410                                                bool aRefreshDescription)
    14271411{
    1428     VBoxVMItem *item = getSelectedItem();
     1412    VBoxVMItem *item = mVMListView->selectedItem();
    14291413
    14301414    if (item && item->accessible())
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