Changeset 76778 in webkit


Ignore:
Timestamp:
Jan 27, 2011 2:25:17 AM (13 years ago)
Author:
zoltan@webkit.org
Message:

[Qt] Add simple zooming features to MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=53231

Reviewed by Andreas Kling.

Add View menu and Zoom In, Zoom Out, Zoom Reset actions to MiniBrowser.

  • MiniBrowser/qt/BrowserWindow.cpp:

(BrowserWindow::BrowserWindow):
(BrowserWindow::zoomIn):
(BrowserWindow::zoomOut):
(BrowserWindow::resetZoom):
(BrowserWindow::updateUserAgentList):
(BrowserWindow::applyZoom):

  • MiniBrowser/qt/BrowserWindow.h:
Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r76769 r76778  
     12011-01-27  Zoltan Horvath  <zoltan@webkit.org>
     2
     3        Reviewed by Andreas Kling.
     4
     5        [Qt] Add simple zooming features to MiniBrowser
     6        https://bugs.webkit.org/show_bug.cgi?id=53231
     7
     8        Add View menu and Zoom In, Zoom Out, Zoom Reset actions to MiniBrowser.
     9
     10        * MiniBrowser/qt/BrowserWindow.cpp:
     11        (BrowserWindow::BrowserWindow):
     12        (BrowserWindow::zoomIn):
     13        (BrowserWindow::zoomOut):
     14        (BrowserWindow::resetZoom):
     15        (BrowserWindow::updateUserAgentList):
     16        (BrowserWindow::applyZoom):
     17        * MiniBrowser/qt/BrowserWindow.h:
     18
    1192011-01-26  Maciej Stachowiak  <mjs@apple.com>
    220
  • trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp

    r76503 r76778  
    3737QGraphicsWKView::BackingStoreType BrowserWindow::backingStoreTypeForNewWindow = QGraphicsWKView::Simple;
    3838
     39QVector<int> BrowserWindow::m_zoomLevels;
     40
    3941BrowserWindow::BrowserWindow(QWKContext* context)
     42    : m_currentZoom(100) ,
     43      m_browser(new BrowserView(backingStoreTypeForNewWindow, context))
    4044{
    4145    setAttribute(Qt::WA_DeleteOnClose);
     46
     47    connect(m_browser->view(), SIGNAL(loadProgress(int)), SLOT(loadProgress(int)));
     48    connect(m_browser->view(), SIGNAL(titleChanged(const QString&)), SLOT(titleChanged(const QString&)));
     49    connect(m_browser->view(), SIGNAL(urlChanged(const QUrl&)), SLOT(urlChanged(const QUrl&)));
     50
     51    this->setCentralWidget(m_browser);
     52    m_browser->setFocus(Qt::OtherFocusReason);
    4253
    4354    QMenu* fileMenu = menuBar()->addMenu("&File");
     
    4758    fileMenu->addAction("Quit", this, SLOT(close()));
    4859
     60    QMenu* viewMenu = menuBar()->addMenu("&View");
     61    viewMenu->addAction(page()->action(QWKPage::Stop));
     62    viewMenu->addAction(page()->action(QWKPage::Reload));
     63    viewMenu->addSeparator();
     64    QAction* zoomIn = viewMenu->addAction("Zoom &In", this, SLOT(zoomIn()));
     65    QAction* zoomOut = viewMenu->addAction("Zoom &Out", this, SLOT(zoomOut()));
     66    QAction* resetZoom = viewMenu->addAction("Reset Zoom", this, SLOT(resetZoom()));
     67
     68    zoomIn->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Plus));
     69    zoomOut->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Minus));
     70    resetZoom->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_0));
     71
    4972    QMenu* toolsMenu = menuBar()->addMenu("&Develop");
    5073    toolsMenu->addAction("Change User Agent", this, SLOT(showUserAgentDialog()));
    51 
    52     m_browser = new BrowserView(backingStoreTypeForNewWindow, context);
    53     connect(m_browser->view(), SIGNAL(loadProgress(int)), SLOT(loadProgress(int)));
    54     connect(m_browser->view(), SIGNAL(titleChanged(const QString&)), SLOT(titleChanged(const QString&)));
    55     connect(m_browser->view(), SIGNAL(urlChanged(const QUrl&)), SLOT(urlChanged(const QUrl&)));
    56 
    57     this->setCentralWidget(m_browser);
    58     m_browser->setFocus(Qt::OtherFocusReason);
    5974
    6075    m_addressBar = new QLineEdit();
     
    7287
    7388    page()->setCreateNewPageFunction(newPageFunction);
     89
     90    // the zoom values are chosen to be like in Mozilla Firefox 3
     91    if (!m_zoomLevels.count()) {
     92        m_zoomLevels << 30 << 50 << 67 << 80 << 90;
     93        m_zoomLevels << 100;
     94        m_zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
     95    }
    7496
    7597    resize(960, 640);
     
    154176}
    155177
     178void BrowserWindow::zoomIn()
     179{
     180    int i = m_zoomLevels.indexOf(m_currentZoom);
     181    Q_ASSERT(i >= 0);
     182    if (i < m_zoomLevels.count() - 1)
     183        m_currentZoom = m_zoomLevels[i + 1];
     184
     185    applyZoom();
     186}
     187
     188void BrowserWindow::zoomOut()
     189{
     190    int i = m_zoomLevels.indexOf(m_currentZoom);
     191    Q_ASSERT(i >= 0);
     192    if (i > 0)
     193        m_currentZoom = m_zoomLevels[i - 1];
     194
     195    applyZoom();
     196}
     197
     198void BrowserWindow::resetZoom()
     199{
     200    m_currentZoom = 100;
     201    applyZoom();
     202}
     203
     204void BrowserWindow::showUserAgentDialog()
     205{
     206    updateUserAgentList();
     207
     208    QDialog dialog(this);
     209    dialog.setWindowTitle("Change User Agent");
     210    dialog.resize(size().width() * 0.7, dialog.size().height());
     211    QVBoxLayout* layout = new QVBoxLayout(&dialog);
     212    dialog.setLayout(layout);
     213
     214    QComboBox* combo = new QComboBox(&dialog);
     215    combo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
     216    combo->setEditable(true);
     217    combo->insertItems(0, m_userAgentList);
     218    layout->addWidget(combo);
     219
     220    int index = combo->findText(page()->customUserAgent());
     221    combo->setCurrentIndex(index);
     222
     223    QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel
     224                                                      , Qt::Horizontal, &dialog);
     225    connect(buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
     226    connect(buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
     227    layout->addWidget(buttonBox);
     228
     229    if (dialog.exec() && !combo->currentText().isEmpty())
     230        page()->setCustomUserAgent(combo->currentText());
     231}
     232
    156233void BrowserWindow::updateUserAgentList()
    157234{
     
    173250}
    174251
    175 void BrowserWindow::showUserAgentDialog()
    176 {
    177     updateUserAgentList();
    178 
    179     QDialog dialog(this);
    180     dialog.setWindowTitle("Change User Agent");
    181     dialog.resize(size().width() * 0.7, dialog.size().height());
    182     QVBoxLayout* layout = new QVBoxLayout(&dialog);
    183     dialog.setLayout(layout);
    184 
    185     QComboBox* combo = new QComboBox(&dialog);
    186     combo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
    187     combo->setEditable(true);
    188     combo->insertItems(0, m_userAgentList);
    189     layout->addWidget(combo);
    190 
    191     int index = combo->findText(page()->customUserAgent());
    192     combo->setCurrentIndex(index);
    193 
    194     QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel
    195                                                       , Qt::Horizontal, &dialog);
    196     connect(buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
    197     connect(buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
    198     layout->addWidget(buttonBox);
    199 
    200     if (dialog.exec() && !combo->currentText().isEmpty())
    201         page()->setCustomUserAgent(combo->currentText());
     252void BrowserWindow::applyZoom()
     253{
     254    page()->setPageZoomFactor(qreal(m_currentZoom) / 100.0);
    202255}
    203256
  • trunk/Tools/MiniBrowser/qt/BrowserWindow.h

    r76503 r76778  
    5757    void urlChanged(const QUrl&);
    5858    void openFile();
     59
     60    void zoomIn();
     61    void zoomOut();
     62    void resetZoom();
     63
    5964    void showUserAgentDialog();
    6065
    6166private:
    6267    void updateUserAgentList();
     68
     69    void applyZoom();
     70
     71    static QVector<int> m_zoomLevels;
     72    int m_currentZoom;
    6373
    6474    BrowserView* m_browser;
Note: See TracChangeset for help on using the changeset viewer.