VirtualBox

Changeset 3818 in vbox for trunk/src


Ignore:
Timestamp:
Jul 25, 2007 8:24:03 AM (17 years ago)
Author:
vboxsync
Message:

2124: VirtualBox LogViewer search mechanism:

LogViewer search mechanism improvements/bugfixes done:

  1. The [Save] button was the default one but was not focused by default (fixed).
  2. The search shortcuts are now (F3/Shift-F3) work even if the search-panel is closed.
  3. Own "ensure-found-string-is-visible" mechanism implemented.
  4. Fixed bug when the clean (without any log files) logger become enabled after "Refresh".
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMLogViewer.ui.h

    r3805 r3818  
    6363                 this, SLOT (findCurrent (const QString &)));
    6464
     65        mButtonNext = new QToolButton (this);
     66        mButtonNext->setEnabled (false);
     67        mButtonNext->setAutoRaise (true);
     68        mButtonNext->setFocusPolicy (QWidget::TabFocus);
     69        mButtonNext->setUsesTextLabel (true);
     70        mButtonNext->setTextPosition (QToolButton::BesideIcon);
     71        connect (mButtonNext, SIGNAL (clicked()), this, SLOT (findNext()));
     72        mButtonNext->setIconSet (VBoxGlobal::iconSet ("list_movedown_16px.png",
     73                                           "list_movedown_disabled_16px.png"));
     74
    6575        mButtonPrev = new QToolButton (this);
    6676        mButtonPrev->setEnabled (false);
     
    7282        mButtonPrev->setIconSet (VBoxGlobal::iconSet ("list_moveup_16px.png",
    7383                                             "list_moveup_disabled_16px.png"));
    74 
    75         mButtonNext = new QToolButton (this);
    76         mButtonNext->setEnabled (false);
    77         mButtonNext->setAutoRaise (true);
    78         mButtonNext->setFocusPolicy (QWidget::TabFocus);
    79         mButtonNext->setUsesTextLabel (true);
    80         mButtonNext->setTextPosition (QToolButton::BesideIcon);
    81         connect (mButtonNext, SIGNAL (clicked()), this, SLOT (findNext()));
    82         mButtonNext->setIconSet (VBoxGlobal::iconSet ("list_movedown_16px.png",
    83                                            "list_movedown_disabled_16px.png"));
    8484
    8585        mCaseSensitive = new QCheckBox (this);
     
    117117
    118118        setFocusProxy (mCaseSensitive);
     119        qApp->installEventFilter (this);
    119120
    120121        languageChange();
     
    140141    }
    141142
    142     void setText (const QString &aText)
    143     {
    144         mSearchString->setText (aText);
    145     }
    146 
    147143private slots:
    148144
     
    173169    {
    174170        QTextBrowser *browser = mViewer->currentLogPage();
     171        if (!browser) return;
     172
    175173        int startPrg = 0, endPrg = 0;
    176174        int startInd = 0, endInd = 0;
     
    196194                browser->setSelection (paragraph, res, paragraph,
    197195                                       res + mSearchString->text().length());
     196                /* ensures the selected word visible */
     197                int curPrg = 0, curInd = 0;
     198                browser->getCursorPosition (&curPrg, &curInd);
     199                QRect rect = browser->paragraphRect (curPrg);
     200                QString string = browser->text (curPrg);
     201                string.truncate (curInd);
     202                int x = rect.x() + browser->fontMetrics().width (string);
     203                int y = rect.y() + browser->pointSize() / 2;
     204                browser->ensureVisible (x, y, 40, 40);
    198205                break;
    199206            }
     
    236243                else if (e->state() == ControlButton && e->key() == Key_F)
    237244                {
    238                     mSearchString->setFocus();
    239                     return true;
     245                    if (mViewer->currentLogPage())
     246                    {
     247                        if (isHidden()) show();
     248                        mSearchString->setFocus();
     249                        return true;
     250                    }
     251                }
     252                /* processing the alpha-numeric keys as the shortcuts to the
     253                 * search panel displaying and search activation */
     254                else if (e->state() == 0 &&
     255                         e->key() >= Qt::Key_Exclam &&
     256                         e->key() <= Qt::Key_AsciiTilde)
     257                {
     258                    if (mViewer->currentLogPage())
     259                    {
     260                        if (isHidden()) show();
     261                        mSearchString->setFocus();
     262                        mSearchString->insert (e->text());
     263                        return true;
     264                    }
    240265                }
    241266
     
    251276    {
    252277        QWidget::showEvent (aEvent);
    253         qApp->installEventFilter (this);
    254278        mSearchString->setFocus();
    255279        mSearchString->selectAll();
     
    260284        if (focusData()->focusWidget()->parent() == this)
    261285           focusNextPrevChild (true);
    262         qApp->removeEventFilter (this);
    263286        QWidget::hideEvent (aEvent);
    264287    }
     
    346369    setTabOrder (mRefreshButton, mCloseButton);
    347370    setTabOrder (mCloseButton, mLogList);
     371
     372    /* make the [Save] button focused by default */
     373    mSaveButton->setFocus();
    348374
    349375    /* applying language settings */
     
    478504            }
    479505        }
    480         if (aEvent->key() >= Qt::Key_Exclam &&
    481             aEvent->key() <= Qt::Key_AsciiTilde &&
    482             mLogList->isEnabled())
    483         {
    484             mSearchPanel->show();
    485             mSearchPanel->setText (aEvent->text());
    486         }
    487     }
    488     else if (aEvent->state() == Qt::ControlButton &&
    489              aEvent->key() == Qt::Key_F)
    490     {
    491         if (mLogList->isEnabled())
    492             mSearchPanel->show();
    493506    }
    494507    else
     
    529542    /* clearing old data if any */
    530543    mLogFilesList.clear();
     544    mLogList->setEnabled (true);
    531545    while (mLogList->count())
    532546    {
     
    624638QTextBrowser* VBoxVMLogViewer::currentLogPage()
    625639{
    626     return static_cast<QTextBrowser*> (mLogList->currentPage());
     640    return mLogList->isEnabled() ?
     641        static_cast<QTextBrowser*> (mLogList->currentPage()) : 0;
    627642}
    628643
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