VirtualBox

Changeset 43631 in vbox


Ignore:
Timestamp:
Oct 12, 2012 12:03:00 PM (12 years ago)
Author:
vboxsync
Message:

FE/Qt: VM group feature UI: Keyboard-handler cleanup (part 2).

Location:
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserHandlerKeyboard.cpp

    r43614 r43631  
    3030    , m_pModel(pParent)
    3131{
     32    /* Setup shift map: */
     33    m_shiftMap[Qt::Key_Up] = UIItemShiftSize_Item;
     34    m_shiftMap[Qt::Key_Down] = UIItemShiftSize_Item;
     35    m_shiftMap[Qt::Key_Home] = UIItemShiftSize_Full;
     36    m_shiftMap[Qt::Key_End] = UIItemShiftSize_Full;
    3237}
    3338
     
    7176#endif /* !Q_WS_MAC */
    7277            {
    73                 /* Get focus and his parent: */
    74                 UIGChooserItem *pFocusItem = model()->focusItem();
    75                 UIGChooserItem *pParentItem = pFocusItem->parentItem();
    76                 UIGChooserItemType type = (UIGChooserItemType)pFocusItem->type();
    77                 QList<UIGChooserItem*> items = pParentItem->items(type);
    78                 int iFocusPosition = items.indexOf(pFocusItem);
    79                 if (iFocusPosition > 0)
    80                 {
    81                     if (pEvent->key() == Qt::Key_Up)
    82                         items.move(iFocusPosition, iFocusPosition - 1);
    83                     else if (pEvent->key() == Qt::Key_Home)
    84                         items.move(iFocusPosition, 0);
    85                     pParentItem->setItems(items, type);
    86                     model()->updateNavigation();
    87                     model()->updateLayout();
    88                 }
    89                 /* Filter-out this event: */
     78                /* Shift item up: */
     79                shift(UIItemShiftDirection_Up, m_shiftMap[pEvent->key()]);
    9080                return true;
    9181            }
     82
    9283            /* Was shift modifier pressed? */
    9384#ifdef Q_WS_MAC
     
    133124                }
    134125            }
     126
    135127            /* There is no modifiers pressed? */
    136128#ifdef Q_WS_MAC
     
    181173#endif /* !Q_WS_MAC */
    182174            {
    183                 /* Get focus and his parent: */
    184                 UIGChooserItem *pFocusItem = model()->focusItem();
    185                 UIGChooserItem *pParentItem = pFocusItem->parentItem();
    186                 UIGChooserItemType type = (UIGChooserItemType)pFocusItem->type();
    187                 QList<UIGChooserItem*> items = pParentItem->items(type);
    188                 int iFocusPosition = items.indexOf(pFocusItem);
    189                 if (iFocusPosition < items.size() - 1)
    190                 {
    191                     if (pEvent->key() == Qt::Key_Down)
    192                         items.move(iFocusPosition, iFocusPosition + 1);
    193                     else if (pEvent->key() == Qt::Key_End)
    194                         items.move(iFocusPosition, items.size() - 1);
    195                     pParentItem->setItems(items, type);
    196                     model()->updateNavigation();
    197                     model()->updateLayout();
    198                 }
    199                 /* Filter-out this event: */
     175                /* Shift item down: */
     176                shift(UIItemShiftDirection_Down, m_shiftMap[pEvent->key()]);
    200177                return true;
    201178            }
     179
    202180            /* Was shift modifier pressed? */
    203181#ifdef Q_WS_MAC
     
    243221                }
    244222            }
     223
    245224            /* There is no modifiers pressed? */
    246225#ifdef Q_WS_MAC
     
    384363}
    385364
     365void UIGChooserHandlerKeyboard::shift(UIItemShiftDirection direction, UIItemShiftSize size) const
     366{
     367    /* Get focus-item and his parent: */
     368    UIGChooserItem *pFocusItem = model()->focusItem();
     369    UIGChooserItem *pParentItem = pFocusItem->parentItem();
     370    /* Get the list of focus-item neighbours: */
     371    UIGChooserItemType type = (UIGChooserItemType)pFocusItem->type();
     372    QList<UIGChooserItem*> items = pParentItem->items(type);
     373    /* Get focus-item position: */
     374    int iFocusPosition = items.indexOf(pFocusItem);
     375
     376    /* Depending on direction: */
     377    switch (direction)
     378    {
     379        case UIItemShiftDirection_Up:
     380        {
     381            /* Is focus-item shiftable? */
     382            if (iFocusPosition == 0)
     383                return;
     384            /* Shift item: */
     385            switch (size)
     386            {
     387                case UIItemShiftSize_Item: items.move(iFocusPosition, iFocusPosition - 1); break;
     388                case UIItemShiftSize_Full: items.move(iFocusPosition, 0); break;
     389                default: break;
     390            }
     391            break;
     392        }
     393        case UIItemShiftDirection_Down:
     394        {
     395            /* Is focus-item shiftable? */
     396            if (iFocusPosition == items.size() - 1)
     397                return;
     398            /* Shift item: */
     399            switch (size)
     400            {
     401                case UIItemShiftSize_Item: items.move(iFocusPosition, iFocusPosition + 1); break;
     402                case UIItemShiftSize_Full: items.move(iFocusPosition, items.size() - 1); break;
     403                default: break;
     404            }
     405            break;
     406        }
     407        default:
     408            break;
     409    }
     410
     411    /* Reassign items: */
     412    pParentItem->setItems(items, type);
     413    /* Update model: */
     414    model()->updateNavigation();
     415    model()->updateLayout();
     416}
     417
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserHandlerKeyboard.h

    r42529 r43631  
    2222/* Qt includes: */
    2323#include <QObject>
     24#include <QMap>
    2425
    2526/* Forward declarations: */
     
    3233    UIKeyboardEventType_Press,
    3334    UIKeyboardEventType_Release
     35};
     36
     37/* Item shift direction: */
     38enum UIItemShiftDirection
     39{
     40    UIItemShiftDirection_Up,
     41    UIItemShiftDirection_Down
     42};
     43
     44/* Item shift size: */
     45enum UIItemShiftSize
     46{
     47    UIItemShiftSize_Item,
     48    UIItemShiftSize_Full
    3449};
    3550
     
    5671    bool handleKeyRelease(QKeyEvent *pEvent) const;
    5772
     73    /* Helper: Item shift delegate: */
     74    void shift(UIItemShiftDirection direction, UIItemShiftSize size) const;
     75
    5876    /* Variables: */
    5977    UIGChooserModel *m_pModel;
     78    QMap<int, UIItemShiftSize> m_shiftMap;
    6079};
    6180
Note: See TracChangeset for help on using the changeset viewer.

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