diff options
Diffstat (limited to 'WebKitTools/MiniBrowser/qt/BrowserWindow.cpp')
-rw-r--r-- | WebKitTools/MiniBrowser/qt/BrowserWindow.cpp | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/WebKitTools/MiniBrowser/qt/BrowserWindow.cpp b/WebKitTools/MiniBrowser/qt/BrowserWindow.cpp index a703788..4c56c3b 100644 --- a/WebKitTools/MiniBrowser/qt/BrowserWindow.cpp +++ b/WebKitTools/MiniBrowser/qt/BrowserWindow.cpp @@ -30,15 +30,19 @@ #include "WKPageNamespace.h" -BrowserWindow::BrowserWindow() +BrowserWindow::BrowserWindow(QGraphicsWKView::BackingStoreType type) + : m_backingStoreType(type) { setAttribute(Qt::WA_DeleteOnClose); m_menu = new QMenuBar(); - m_browser = new BrowserView(); + m_browser = new BrowserView(m_backingStoreType); m_addressBar = new QLineEdit(); m_menu->addAction("New Window", this, SLOT(newWindow())); + m_menu->addAction("Change User Agent", this, SLOT(showUserAgentDialog())); + + m_menu->addSeparator(); m_menu->addAction("Quit", this, SLOT(close())); m_browser->setFocus(Qt::OtherFocusReason); @@ -60,6 +64,9 @@ BrowserWindow::BrowserWindow() m_browser->setFocus(Qt::OtherFocusReason); + QShortcut* selectAddressBar = new QShortcut(Qt::CTRL | Qt::Key_L, this); + connect(selectAddressBar, SIGNAL(activated()), this, SLOT(openLocation())); + resize(960, 640); show(); } @@ -72,11 +79,17 @@ void BrowserWindow::load(const QString& url) BrowserWindow* BrowserWindow::newWindow(const QString& url) { - BrowserWindow* window = new BrowserWindow(); + BrowserWindow* window = new BrowserWindow(m_backingStoreType); window->load(url); return window; } +void BrowserWindow::openLocation() +{ + m_addressBar->selectAll(); + m_addressBar->setFocus(); +} + void BrowserWindow::changeLocation() { QString string = m_addressBar->text(); @@ -112,6 +125,53 @@ void BrowserWindow::urlChanged(const QUrl& url) m_addressBar->setText(url.toString()); } +void BrowserWindow::updateUserAgentList() +{ + QWKPage* page = m_browser->view()->page(); + + QFile file(":/useragentlist.txt"); + + if (file.open(QIODevice::ReadOnly)) { + while (!file.atEnd()) + m_userAgentList << file.readLine().trimmed(); + file.close(); + } + + Q_ASSERT(!m_userAgentList.isEmpty()); + + if (!(page->customUserAgent().isEmpty() || m_userAgentList.contains(page->customUserAgent()))) + m_userAgentList << page->customUserAgent(); +} + +void BrowserWindow::showUserAgentDialog() +{ + updateUserAgentList(); + + QDialog dialog(this); + dialog.setWindowTitle("Change User Agent"); + dialog.resize(size().width() * 0.7, dialog.size().height()); + QVBoxLayout* layout = new QVBoxLayout(&dialog); + dialog.setLayout(layout); + + QComboBox* combo = new QComboBox(&dialog); + combo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); + combo->setEditable(true); + combo->insertItems(0, m_userAgentList); + layout->addWidget(combo); + + int index = combo->findText(m_browser->view()->page()->customUserAgent()); + combo->setCurrentIndex(index); + + QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel + , Qt::Horizontal, &dialog); + connect(buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject())); + layout->addWidget(buttonBox); + + if (dialog.exec() && !combo->currentText().isEmpty()) + m_browser->view()->page()->setCustomUserAgent(combo->currentText()); +} + BrowserWindow::~BrowserWindow() { delete m_addressBar; |