1d0825bca7fe65beaee391d30da42e937db621564Steve Block/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 3d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in> 4d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 George Staikos <staikos@kde.org> 5d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> 6d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Zack Rusin <zack@kde.org> 7d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org> 8d0825bca7fe65beaee391d30da42e937db621564Steve Block * 9d0825bca7fe65beaee391d30da42e937db621564Steve Block * All rights reserved. 10d0825bca7fe65beaee391d30da42e937db621564Steve Block * 11d0825bca7fe65beaee391d30da42e937db621564Steve Block * Redistribution and use in source and binary forms, with or without 12d0825bca7fe65beaee391d30da42e937db621564Steve Block * modification, are permitted provided that the following conditions 13d0825bca7fe65beaee391d30da42e937db621564Steve Block * are met: 14d0825bca7fe65beaee391d30da42e937db621564Steve Block * 1. Redistributions of source code must retain the above copyright 15d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer. 16d0825bca7fe65beaee391d30da42e937db621564Steve Block * 2. Redistributions in binary form must reproduce the above copyright 17d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer in the 18d0825bca7fe65beaee391d30da42e937db621564Steve Block * documentation and/or other materials provided with the distribution. 19d0825bca7fe65beaee391d30da42e937db621564Steve Block * 20d0825bca7fe65beaee391d30da42e937db621564Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 21d0825bca7fe65beaee391d30da42e937db621564Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22d0825bca7fe65beaee391d30da42e937db621564Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23d0825bca7fe65beaee391d30da42e937db621564Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 24d0825bca7fe65beaee391d30da42e937db621564Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25d0825bca7fe65beaee391d30da42e937db621564Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26d0825bca7fe65beaee391d30da42e937db621564Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27d0825bca7fe65beaee391d30da42e937db621564Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 28d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29d0825bca7fe65beaee391d30da42e937db621564Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31d0825bca7fe65beaee391d30da42e937db621564Steve Block */ 32d0825bca7fe65beaee391d30da42e937db621564Steve Block 33d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "mainwindow.h" 34d0825bca7fe65beaee391d30da42e937db621564Steve Block 35d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "locationedit.h" 36d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "utils.h" 37d0825bca7fe65beaee391d30da42e937db621564Steve Block 3868513a70bcd92384395513322f1b801e7bf9c729Steve BlockMainWindow::MainWindow() 39d0825bca7fe65beaee391d30da42e937db621564Steve Block : m_page(new WebPage(this)) 4068513a70bcd92384395513322f1b801e7bf9c729Steve Block , m_toolBar(0) 41a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch , urlEdit(0) 42d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 43d0825bca7fe65beaee391d30da42e937db621564Steve Block setAttribute(Qt::WA_DeleteOnClose); 44e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if (qgetenv("QTTESTBROWSER_USE_ARGB_VISUALS").toInt() == 1) 45d0825bca7fe65beaee391d30da42e937db621564Steve Block setAttribute(Qt::WA_TranslucentBackground); 46d0825bca7fe65beaee391d30da42e937db621564Steve Block 47d0825bca7fe65beaee391d30da42e937db621564Steve Block buildUI(); 48d0825bca7fe65beaee391d30da42e937db621564Steve Block} 49d0825bca7fe65beaee391d30da42e937db621564Steve Block 50d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::buildUI() 51d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 52a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if defined(Q_OS_SYMBIAN) 53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch delete urlEdit; 54a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 5568513a70bcd92384395513322f1b801e7bf9c729Steve Block delete m_toolBar; 5668513a70bcd92384395513322f1b801e7bf9c729Steve Block 5768513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar = addToolBar("Navigation"); 58f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#if defined(Q_OS_SYMBIAN) 5968513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->setIconSize(QSize(16, 16)); 608a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#endif 61ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block QAction* reloadAction = page()->action(QWebPage::Reload); 62ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block connect(reloadAction, SIGNAL(triggered()), this, SLOT(changeLocation())); 63ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 6468513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->addAction(page()->action(QWebPage::Back)); 6568513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->addAction(page()->action(QWebPage::Forward)); 6668513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->addAction(reloadAction); 6768513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->addAction(page()->action(QWebPage::Stop)); 68d0825bca7fe65beaee391d30da42e937db621564Steve Block 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_INPUTDIALOG 7068513a70bcd92384395513322f1b801e7bf9c729Steve Block urlEdit = new LocationEdit(m_toolBar); 71d0825bca7fe65beaee391d30da42e937db621564Steve Block urlEdit->setSizePolicy(QSizePolicy::Expanding, urlEdit->sizePolicy().verticalPolicy()); 72d0825bca7fe65beaee391d30da42e937db621564Steve Block connect(urlEdit, SIGNAL(returnPressed()), SLOT(changeLocation())); 7368513a70bcd92384395513322f1b801e7bf9c729Steve Block QCompleter* completer = new QCompleter(m_toolBar); 74d0825bca7fe65beaee391d30da42e937db621564Steve Block urlEdit->setCompleter(completer); 75d0825bca7fe65beaee391d30da42e937db621564Steve Block completer->setModel(&urlModel); 76f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#if defined(Q_OS_SYMBIAN) 778a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block addToolBarBreak(); 788a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block addToolBar("Location")->addWidget(urlEdit); 798a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#else 8068513a70bcd92384395513322f1b801e7bf9c729Steve Block m_toolBar->addWidget(urlEdit); 818a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#endif 82d0825bca7fe65beaee391d30da42e937db621564Steve Block 83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block connect(page()->mainFrame(), SIGNAL(urlChanged(QUrl)), this, SLOT(setAddressUrl(QUrl))); 84d0825bca7fe65beaee391d30da42e937db621564Steve Block connect(page(), SIGNAL(loadProgress(int)), urlEdit, SLOT(setProgress(int))); 8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 872bde8e466a4451c7319e3a072d118917957d6554Steve Block connect(page()->mainFrame(), SIGNAL(loadStarted()), this, SLOT(onLoadStarted())); 882bde8e466a4451c7319e3a072d118917957d6554Steve Block connect(page()->mainFrame(), SIGNAL(iconChanged()), this, SLOT(onIconChanged())); 892bde8e466a4451c7319e3a072d118917957d6554Steve Block connect(page()->mainFrame(), SIGNAL(titleChanged(QString)), this, SLOT(onTitleChanged(QString))); 90d0825bca7fe65beaee391d30da42e937db621564Steve Block connect(page(), SIGNAL(windowCloseRequested()), this, SLOT(close())); 91d0825bca7fe65beaee391d30da42e937db621564Steve Block 9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_SHORTCUT 93d0825bca7fe65beaee391d30da42e937db621564Steve Block // short-cuts 94d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Back)->setShortcut(QKeySequence::Back); 95d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Stop)->setShortcut(Qt::Key_Escape); 96d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Forward)->setShortcut(QKeySequence::Forward); 97d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Reload)->setShortcut(QKeySequence::Refresh); 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_UNDOSTACK 99d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Undo)->setShortcut(QKeySequence::Undo); 100d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Redo)->setShortcut(QKeySequence::Redo); 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 102d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Cut)->setShortcut(QKeySequence::Cut); 103d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Copy)->setShortcut(QKeySequence::Copy); 104d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::Paste)->setShortcut(QKeySequence::Paste); 105cad810f21b803229eb11403f9209855525a25d57Steve Block page()->action(QWebPage::SelectAll)->setShortcut(QKeySequence::SelectAll); 106d0825bca7fe65beaee391d30da42e937db621564Steve Block 107d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::ToggleBold)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_B)); 108d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::ToggleItalic)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_I)); 109d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->action(QWebPage::ToggleUnderline)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_U)); 11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 111d0825bca7fe65beaee391d30da42e937db621564Steve Block} 112d0825bca7fe65beaee391d30da42e937db621564Steve Block 11368513a70bcd92384395513322f1b801e7bf9c729Steve Blockvoid MainWindow::setPage(WebPage* page) 11468513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 1154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (page && m_page) 1164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang page->setUserAgent(m_page->userAgentForUrl(QUrl())); 1174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 11868513a70bcd92384395513322f1b801e7bf9c729Steve Block delete m_page; 11968513a70bcd92384395513322f1b801e7bf9c729Steve Block m_page = page; 12068513a70bcd92384395513322f1b801e7bf9c729Steve Block 12168513a70bcd92384395513322f1b801e7bf9c729Steve Block buildUI(); 12268513a70bcd92384395513322f1b801e7bf9c729Steve Block} 12368513a70bcd92384395513322f1b801e7bf9c729Steve Block 12468513a70bcd92384395513322f1b801e7bf9c729Steve BlockWebPage* MainWindow::page() const 125d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 126d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_page; 127d0825bca7fe65beaee391d30da42e937db621564Steve Block} 128d0825bca7fe65beaee391d30da42e937db621564Steve Block 129dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid MainWindow::setAddressUrl(const QUrl& url) 130dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 1316b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner setAddressUrl(url.toString(QUrl::RemoveUserInfo)); 132dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 133dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 134d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::setAddressUrl(const QString& url) 135d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_INPUTDIALOG 1376b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (!url.contains("about:")) 1386b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner urlEdit->setText(url); 13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 140d0825bca7fe65beaee391d30da42e937db621564Steve Block} 141d0825bca7fe65beaee391d30da42e937db621564Steve Block 142d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::addCompleterEntry(const QUrl& url) 143d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 144d0825bca7fe65beaee391d30da42e937db621564Steve Block QUrl::FormattingOptions opts; 145d0825bca7fe65beaee391d30da42e937db621564Steve Block opts |= QUrl::RemoveScheme; 146d0825bca7fe65beaee391d30da42e937db621564Steve Block opts |= QUrl::RemoveUserInfo; 147d0825bca7fe65beaee391d30da42e937db621564Steve Block opts |= QUrl::StripTrailingSlash; 148d0825bca7fe65beaee391d30da42e937db621564Steve Block QString s = url.toString(opts); 149d0825bca7fe65beaee391d30da42e937db621564Steve Block s = s.mid(2); 150d0825bca7fe65beaee391d30da42e937db621564Steve Block if (s.isEmpty()) 151d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 152d0825bca7fe65beaee391d30da42e937db621564Steve Block 153d0825bca7fe65beaee391d30da42e937db621564Steve Block if (!urlList.contains(s)) 154d0825bca7fe65beaee391d30da42e937db621564Steve Block urlList += s; 155d0825bca7fe65beaee391d30da42e937db621564Steve Block urlModel.setStringList(urlList); 156d0825bca7fe65beaee391d30da42e937db621564Steve Block} 157d0825bca7fe65beaee391d30da42e937db621564Steve Block 158d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::load(const QString& url) 159d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 160d0825bca7fe65beaee391d30da42e937db621564Steve Block QUrl qurl = urlFromUserInput(url); 161d0825bca7fe65beaee391d30da42e937db621564Steve Block if (qurl.scheme().isEmpty()) 162d0825bca7fe65beaee391d30da42e937db621564Steve Block qurl = QUrl("http://" + url + "/"); 163d0825bca7fe65beaee391d30da42e937db621564Steve Block load(qurl); 164d0825bca7fe65beaee391d30da42e937db621564Steve Block} 165d0825bca7fe65beaee391d30da42e937db621564Steve Block 166d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::load(const QUrl& url) 167d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 168d0825bca7fe65beaee391d30da42e937db621564Steve Block if (!url.isValid()) 169d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 170d0825bca7fe65beaee391d30da42e937db621564Steve Block 171d0825bca7fe65beaee391d30da42e937db621564Steve Block setAddressUrl(url.toString()); 172d0825bca7fe65beaee391d30da42e937db621564Steve Block page()->mainFrame()->load(url); 173d0825bca7fe65beaee391d30da42e937db621564Steve Block} 174d0825bca7fe65beaee391d30da42e937db621564Steve Block 1752fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockQString MainWindow::addressUrl() const 1762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#ifndef QT_NO_INPUTDIALOG 1782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return urlEdit->text(); 1792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 1802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return QString(); 1812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 183d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::changeLocation() 184d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_INPUTDIALOG 186d0825bca7fe65beaee391d30da42e937db621564Steve Block QString string = urlEdit->text(); 187ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block QUrl mainFrameURL = page()->mainFrame()->url(); 188ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 189ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block if (mainFrameURL.isValid() && string == mainFrameURL.toString()) { 190ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block page()->triggerAction(QWebPage::Reload); 191ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block return; 192ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block } 193ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 194d0825bca7fe65beaee391d30da42e937db621564Steve Block load(string); 19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 196d0825bca7fe65beaee391d30da42e937db621564Steve Block} 197d0825bca7fe65beaee391d30da42e937db621564Steve Block 198d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid MainWindow::openFile() 199d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_FILEDIALOG 201d0825bca7fe65beaee391d30da42e937db621564Steve Block static const QString filter("HTML Files (*.htm *.html);;Text Files (*.txt);;Image Files (*.gif *.jpg *.png);;All Files (*)"); 202d0825bca7fe65beaee391d30da42e937db621564Steve Block 203d0825bca7fe65beaee391d30da42e937db621564Steve Block QFileDialog fileDialog(this, tr("Open"), QString(), filter); 204d0825bca7fe65beaee391d30da42e937db621564Steve Block fileDialog.setAcceptMode(QFileDialog::AcceptOpen); 205d0825bca7fe65beaee391d30da42e937db621564Steve Block fileDialog.setFileMode(QFileDialog::ExistingFile); 206d0825bca7fe65beaee391d30da42e937db621564Steve Block fileDialog.setOptions(QFileDialog::ReadOnly); 207d0825bca7fe65beaee391d30da42e937db621564Steve Block 208d0825bca7fe65beaee391d30da42e937db621564Steve Block if (fileDialog.exec()) { 209d0825bca7fe65beaee391d30da42e937db621564Steve Block QString selectedFile = fileDialog.selectedFiles()[0]; 210d0825bca7fe65beaee391d30da42e937db621564Steve Block if (!selectedFile.isEmpty()) 211d0825bca7fe65beaee391d30da42e937db621564Steve Block load(QUrl::fromLocalFile(selectedFile)); 212d0825bca7fe65beaee391d30da42e937db621564Steve Block } 21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 214d0825bca7fe65beaee391d30da42e937db621564Steve Block} 215d0825bca7fe65beaee391d30da42e937db621564Steve Block 216e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid MainWindow::openLocation() 217e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef QT_NO_INPUTDIALOG 219e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke urlEdit->selectAll(); 220e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke urlEdit->setFocus(); 22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 222e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 2232bde8e466a4451c7319e3a072d118917957d6554Steve Block 2242bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid MainWindow::onIconChanged() 2252bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 2262bde8e466a4451c7319e3a072d118917957d6554Steve Block#ifndef QT_NO_INPUTDIALOG 2272bde8e466a4451c7319e3a072d118917957d6554Steve Block urlEdit->setPageIcon(page()->mainFrame()->icon()); 2282bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 2292bde8e466a4451c7319e3a072d118917957d6554Steve Block} 2302bde8e466a4451c7319e3a072d118917957d6554Steve Block 2312bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid MainWindow::onLoadStarted() 2322bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 2332bde8e466a4451c7319e3a072d118917957d6554Steve Block#ifndef QT_NO_INPUTDIALOG 2342bde8e466a4451c7319e3a072d118917957d6554Steve Block urlEdit->setPageIcon(QIcon()); 2352bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 2362bde8e466a4451c7319e3a072d118917957d6554Steve Block} 2372bde8e466a4451c7319e3a072d118917957d6554Steve Block 2382bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid MainWindow::onTitleChanged(const QString& title) 2392bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 2402bde8e466a4451c7319e3a072d118917957d6554Steve Block if (title.isEmpty()) 2412bde8e466a4451c7319e3a072d118917957d6554Steve Block setWindowTitle(QCoreApplication::applicationName()); 2422bde8e466a4451c7319e3a072d118917957d6554Steve Block else 2432bde8e466a4451c7319e3a072d118917957d6554Steve Block setWindowTitle(QString::fromLatin1("%1 - %2").arg(title).arg(QCoreApplication::applicationName())); 2442bde8e466a4451c7319e3a072d118917957d6554Steve Block} 245