summaryrefslogtreecommitdiffstats
path: root/WebKitTools/MiniBrowser/qt/BrowserWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/MiniBrowser/qt/BrowserWindow.cpp')
-rw-r--r--WebKitTools/MiniBrowser/qt/BrowserWindow.cpp66
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;