VirtualBox

Changeset 78595 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 20, 2019 11:17:50 AM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:6143. Parsing the layout file.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp

    r78567 r78595  
    1919#include <QApplication>
    2020#include <QFile>
    21 #include <QMenu>
    2221#include <QPushButton>
    23 #include <QSplitter>
    2422#include <QXmlStreamReader>
    2523#include <QVBoxLayout>
     
    3533#include "CEventSource.h"
    3634
     35struct SoftKeyboardKey
     36{
     37    int      m_iWidth;
     38    QString  m_strLabel;
     39    LONG     m_scanCode;
     40};
     41
     42struct SoftKeyboardRow
     43{
     44    int m_iHeight;
     45    QList<SoftKeyboardKey> m_keys;
     46};
     47
     48struct SoftKeyboardLayout
     49{
     50    QList<SoftKeyboardRow> m_rows;
     51};
     52
    3753/*********************************************************************************************************************************
    3854*   UIKeyboardLayoutReader definition.                                                                                  *
     
    4460public:
    4561
    46     bool parseXMLFile(const QString &strFileName);
     62    bool parseXMLFile(const QString &strFileName, SoftKeyboardLayout &layout);
    4763
    4864private:
    4965
    50     bool parseRow();
    51     bool parseKey();
     66    bool parseRow(SoftKeyboardLayout &layout);
     67    bool parseKey(SoftKeyboardRow &row);
    5268    QXmlStreamReader m_xmlReader;
    5369};
     
    6480public:
    6581
    66     UISoftKeyboardKey(QWidget *pParent);
     82    UISoftKeyboardKey(QWidget *pParent = 0);
     83    void setAspectRatio(float fRatio);
     84
     85protected:
     86
     87    virtual void resizeEvent(QResizeEvent *pEvent);
     88
     89private:
     90
     91    float m_fAspectRatio;
    6792};
    6893
     
    7196*********************************************************************************************************************************/
    7297
    73 bool UIKeyboardLayoutReader::parseXMLFile(const QString &strFileName)
     98bool UIKeyboardLayoutReader::parseXMLFile(const QString &strFileName, SoftKeyboardLayout &layout)
    7499{
    75100    QFile xmlFile(strFileName);
     
    88113    {
    89114        if (m_xmlReader.name() == "row")
    90             parseRow();
     115            parseRow(layout);
    91116        else
    92117            m_xmlReader.skipCurrentElement();
     
    96121}
    97122
    98 bool UIKeyboardLayoutReader::parseRow()
    99 {
     123bool UIKeyboardLayoutReader::parseRow(SoftKeyboardLayout &layout)
     124{
     125    layout.m_rows.append(SoftKeyboardRow());
     126    SoftKeyboardRow &row = layout.m_rows.last();
    100127    while (m_xmlReader.readNextStartElement())
    101128    {
    102129        if (m_xmlReader.name() == "key")
    103             parseKey();
     130            parseKey(row);
     131        else if (m_xmlReader.name() == "height")
     132            row.m_iHeight = m_xmlReader.readElementText().toInt();
    104133        else
    105134            m_xmlReader.skipCurrentElement();
    106135    }
    107 
    108136    return true;
    109137}
    110138
    111 bool UIKeyboardLayoutReader::parseKey()
    112 {
     139bool UIKeyboardLayoutReader::parseKey(SoftKeyboardRow &row)
     140{
     141    row.m_keys.append(SoftKeyboardKey());
     142    SoftKeyboardKey &key = row.m_keys.last();
    113143    while (m_xmlReader.readNextStartElement())
    114144    {
    115 
    116         // if (m_xmlReader.name() == "key")
    117         //     parseKey();
    118         // else
     145        if (m_xmlReader.name() == "width")
     146            key.m_iWidth = m_xmlReader.readElementText().toInt();
     147        else if (m_xmlReader.name() == "label")
     148            key.m_strLabel = m_xmlReader.readElementText();
     149        else if (m_xmlReader.name() == "scancode")
     150            key.m_scanCode = m_xmlReader.readElementText().toInt();
     151        else
    119152            m_xmlReader.skipCurrentElement();
    120153    }
    121 
    122154    return true;
    123155}
     
    127159*********************************************************************************************************************************/
    128160
    129 UISoftKeyboardKey::UISoftKeyboardKey(QWidget *pParent)
     161UISoftKeyboardKey::UISoftKeyboardKey(QWidget *pParent /* = 0 */)
    130162    :QPushButton(pParent)
    131 {
     163    , m_fAspectRatio(1.f)
     164{
     165}
     166
     167void UISoftKeyboardKey::setAspectRatio(float fRatio)
     168{
     169    m_fAspectRatio = fRatio;
     170}
     171
     172void UISoftKeyboardKey::resizeEvent(QResizeEvent *pEvent)
     173{
     174    // QWidget::resize(qMin(pEvent->size().width(),pEvent->size().height()),
     175    //                 qMin(pEvent->size().width(),pEvent->size().height()));
     176
     177    QPushButton::resizeEvent(pEvent);
    132178}
    133179
     
    141187    :QIWithRetranslateUI<QWidget>(pParent)
    142188    , m_pMainLayout(0)
     189    , m_pContainerLayout(0)
    143190    , m_pToolBar(0)
    144191    , m_fShowToolbar(fShowToolbar)
    145192    , m_strMachineName(strMachineName)
    146193{
     194    prepareObjects();
    147195    parseLayout();
    148     prepareObjects();
    149196    prepareConnections();
    150197    prepareToolBar();
     
    162209}
    163210
     211void UISoftKeyboard::resizeEvent(QResizeEvent *pEvent)
     212{
     213    QIWithRetranslateUI<QWidget>::resizeEvent(pEvent);
     214}
     215
    164216void UISoftKeyboard::prepareObjects()
    165217{
     218    setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
    166219    /* Create layout: */
    167     m_pMainLayout = new QVBoxLayout(this);
     220
     221    m_pMainLayout = new QHBoxLayout(this);
    168222    if (!m_pMainLayout)
    169223        return;
     224    QWidget *pContainerWidget = new QWidget;
     225    if (!pContainerWidget)
     226        return;
     227    pContainerWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
     228    pContainerWidget->setStyleSheet("background-color:red;");
     229
     230    m_pMainLayout->addWidget(pContainerWidget);
     231
     232    m_pContainerLayout = new QVBoxLayout;
     233    m_pContainerLayout->setSpacing(0);
     234    pContainerWidget->setLayout(m_pContainerLayout);
    170235
    171236    /* Configure layout: */
    172     m_pMainLayout->setSpacing(0);
     237
    173238}
    174239
     
    191256void UISoftKeyboard::parseLayout()
    192257{
     258    if (!m_pContainerLayout)
     259        return;
     260
    193261    UIKeyboardLayoutReader reader;
    194     if (!reader.parseXMLFile(":/us_layout.xml"))
    195     {
     262    SoftKeyboardLayout layout;
     263    if (!reader.parseXMLFile(":/us_layout.xml", layout))
     264        return;
     265
     266    for (int i = 0; i < layout.m_rows.size(); ++i)
     267    {
     268        QHBoxLayout *pRowLayout = new QHBoxLayout;
     269        pRowLayout->setSpacing(0);
     270        for (int j = 0; j < layout.m_rows[i].m_keys.size(); ++j)
     271        {
     272            UISoftKeyboardKey *pKey = new UISoftKeyboardKey;
     273            pRowLayout->addWidget(pKey);
     274            //m_pContainerLayout->addWidget(pKey, i, j);
     275            //pKey->setFixedSize(layout.m_rows[i].m_keys[j].m_iWidth, layout.m_rows[i].m_iHeight);
     276            pKey->setText(layout.m_rows[i].m_keys[j].m_strLabel);
     277            //if (j != 3)
     278
     279
     280            // else
     281            //m_pContainerLayout->setColumnStretch(j, 0);
     282            //m_pContainerLayout->addSpacing(2);
     283            // QSpacerItem *pSpacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
     284            // m_pContainerLayout->addItem(pSpacer);
     285        }
     286        //pRowLayout->addStretch(1);
     287        //m_pContainerLayout->setColumnStretch(layout.m_rows[i].m_keys.size()-1, 1);
     288        m_pContainerLayout->addLayout(pRowLayout);
    196289    }
    197290}
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h

    r78567 r78595  
    3636/* Forward declarations: */
    3737class UISoftKeyboardKey;
     38class QHBoxLayout;
    3839class QVBoxLayout;
    3940class UIToolBar;
     41
    4042
    4143class UISoftKeyboard : public QIWithRetranslateUI<QWidget>
     
    5153protected:
    5254
    53     void retranslateUi();
     55    virtual void retranslateUi();
     56    virtual void resizeEvent(QResizeEvent *pEvent);
    5457
    5558private slots:
     
    6467    void parseLayout();
    6568
    66     QVBoxLayout   *m_pMainLayout;
     69    QHBoxLayout   *m_pMainLayout;
     70    QVBoxLayout   *m_pContainerLayout;
    6771    UIToolBar     *m_pToolBar;
    6872    const bool    m_fShowToolbar;
  • trunk/src/VBox/Frontends/VirtualBox/xml/us_layout.xml

    r78567 r78595  
    44        <height>50</height>
    55        <key>
    6             <width>30</width>
     6            <width>50</width>
    77            <label>Key1</label>
    88            <scancode>X11</scancode>
    99        </key>
     10        <key>
     11            <width>150</width>
     12            <label>Key2</label>
     13            <scancode>X11</scancode>
     14        </key>
     15        <key>
     16            <width>20</width>
     17            <label>Key3</label>
     18            <scancode>X11</scancode>
     19        </key>
     20        <key>
     21            <width>50</width>
     22            <label>Key4</label>
     23            <scancode>X11</scancode>
     24        </key>
     25
    1026    </row>
     27
     28    <row>
     29        <height>30</height>
     30        <key>
     31            <width>150</width>
     32            <label>Key2</label>
     33            <scancode>X11</scancode>
     34        </key>
     35        <key>
     36            <width>20</width>
     37            <label>Key3</label>
     38            <scancode>X11</scancode>
     39        </key>
     40        <key>
     41            <width>50</width>
     42            <label>Key4</label>
     43            <scancode>X11</scancode>
     44        </key>
     45
     46    </row>
     47
    1148</layout>
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