summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt6
-rw-r--r--src/Messages.sh3
-rw-r--r--src/adblock/adblockmanager.cpp5
-rw-r--r--src/analyzer/networkanalyzer.cpp2
-rw-r--r--src/application.cpp66
-rw-r--r--src/bookmarks/bookmarkcontextmenu.cpp10
-rw-r--r--src/bookmarks/bookmarksmanager.cpp10
-rw-r--r--src/bookmarks/bookmarkstreemodel.cpp2
-rw-r--r--src/clicktoflash.cpp2
-rw-r--r--src/data/home.html44
-rw-r--r--src/data/rekonq.desktop18
-rw-r--r--src/history/historymanager.cpp4
-rw-r--r--src/history/historypanel.cpp6
-rw-r--r--src/main.cpp67
-rw-r--r--src/mainview.cpp25
-rw-r--r--src/mainview.h1
-rw-r--r--src/mainwindow.cpp63
-rw-r--r--src/mainwindow.h4
-rw-r--r--src/newtabpage.cpp5
-rw-r--r--src/protocolhandler.cpp9
-rw-r--r--src/rekonq.kcfg31
-rw-r--r--src/sessionmanager.cpp47
-rw-r--r--src/settings/adblockwidget.h4
-rw-r--r--src/settings/appearancewidget.cpp121
-rw-r--r--src/settings/appearancewidget.h71
-rw-r--r--src/settings/generalwidget.cpp85
-rw-r--r--src/settings/generalwidget.h60
-rw-r--r--src/settings/settings_adblock.ui10
-rw-r--r--src/settings/settings_appearance.ui286
-rw-r--r--src/settings/settings_fonts.ui192
-rw-r--r--src/settings/settings_general.ui25
-rw-r--r--src/settings/settings_tabs.ui2
-rw-r--r--src/settings/settings_webkit.ui41
-rw-r--r--src/settings/settingsdialog.cpp149
-rw-r--r--src/settings/settingsdialog.h4
-rw-r--r--src/settings/tabswidget.cpp53
-rw-r--r--src/settings/tabswidget.h58
-rw-r--r--src/settings/webkitwidget.cpp71
-rw-r--r--src/settings/webkitwidget.h60
-rw-r--r--src/tabbar.cpp5
-rw-r--r--src/urlbar/completionwidget.cpp6
-rw-r--r--src/urlbar/completionwidget.h2
-rw-r--r--src/urlbar/listitem.cpp13
-rw-r--r--src/urlbar/listitem.h2
-rw-r--r--src/urlbar/rsswidget.cpp7
-rw-r--r--src/urlbar/urlbar.cpp15
-rw-r--r--src/urlbar/urlresolver.cpp44
-rw-r--r--src/urlbar/urlresolver.h13
-rw-r--r--src/webpage.cpp400
-rw-r--r--src/webpage.h13
-rw-r--r--src/webtab.cpp3
-rw-r--r--src/webtab.h3
-rw-r--r--src/webview.cpp21
-rw-r--r--src/webview.h2
54 files changed, 1523 insertions, 748 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b79e64fa..d0e5721c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,6 +37,10 @@ SET( rekonq_KDEINIT_SRCS
#----------------------------------------
settings/settingsdialog.cpp
settings/adblockwidget.cpp
+ settings/appearancewidget.cpp
+ settings/generalwidget.cpp
+ settings/tabswidget.cpp
+ settings/webkitwidget.cpp
settings/networkwidget.cpp
#----------------------------------------
bookmarks/bookmarksmanager.cpp
@@ -64,7 +68,7 @@ SET( rekonq_KDEINIT_SRCS
KDE4_ADD_UI_FILES( rekonq_KDEINIT_SRCS
settings/settings_general.ui
settings/settings_tabs.ui
- settings/settings_fonts.ui
+ settings/settings_appearance.ui
settings/settings_webkit.ui
settings/settings_adblock.ui
cleardata.ui
diff --git a/src/Messages.sh b/src/Messages.sh
index efa6adff..86f846c8 100644
--- a/src/Messages.sh
+++ b/src/Messages.sh
@@ -1,2 +1,5 @@
#! /bin/sh
+$EXTRACTRC *.ui */*ui >> rc.cpp || exit 1
$XGETTEXT *.cpp */*.cpp -o $podir/rekonq.pot
+rm -f rc.cpp
+
diff --git a/src/adblock/adblockmanager.cpp b/src/adblock/adblockmanager.cpp
index 48e2369d..39432f88 100644
--- a/src/adblock/adblockmanager.cpp
+++ b/src/adblock/adblockmanager.cpp
@@ -114,6 +114,7 @@ void AdBlockManager::loadSettings(bool checkUpdateDate)
void AdBlockManager::loadRules(const QStringList &rules)
{
+ kDebug() << "LOADING RULES LIST...";
foreach(const QString &stringRule, rules)
{
// ! rules are comments
@@ -259,15 +260,14 @@ void AdBlockManager::updateNextSubscription()
void AdBlockManager::slotResult(KJob *job)
{
- kDebug() << "SLOTRESULT";
if (job->error())
return;
+ kDebug() << "SAVING RULES..";
QList<QByteArray> list = _buffer.split('\n');
QStringList ruleList;
foreach(const QByteArray &ba, list)
{
- kDebug() << ba;
ruleList << QString(ba);
}
loadRules(ruleList);
@@ -282,7 +282,6 @@ void AdBlockManager::slotResult(KJob *job)
void AdBlockManager::subscriptionData(KIO::Job* job, const QByteArray& data)
{
- kDebug() << "subscriptionData";
Q_UNUSED(job)
if (data.isEmpty())
diff --git a/src/analyzer/networkanalyzer.cpp b/src/analyzer/networkanalyzer.cpp
index 53972a9c..22a7c243 100644
--- a/src/analyzer/networkanalyzer.cpp
+++ b/src/analyzer/networkanalyzer.cpp
@@ -48,7 +48,7 @@ NetworkAnalyzer::NetworkAnalyzer(QWidget *parent)
, _requestList(new QTreeWidget(this))
{
QStringList headers;
- headers << i18n("Method") << i18n("Url") << i18n("Response") << i18n("Length") << i18n("Content Type") << i18n("Info");
+ headers << i18n("Method") << i18n("URL") << i18n("Response") << i18n("Length") << i18n("Content Type") << i18n("Info");
_requestList->setHeaderLabels( headers );
_requestList->header()->setResizeMode(0, QHeaderView::ResizeToContents);
diff --git a/src/application.cpp b/src/application.cpp
index 412999d8..9620feb8 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -336,7 +336,10 @@ void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type)
// rapidly show first loading url..
- w->mainView()->urlBar()->setQUrl(url);
+ int tabIndex = w->mainView()->indexOf(tab);
+ Q_ASSERT( tabIndex != -1 );
+ UrlBar *barForTab = qobject_cast<UrlBar *>(w->mainView()->widgetBar()->widget(tabIndex));
+ barForTab->setQUrl(url);
WebView *view = tab->view();
@@ -415,35 +418,46 @@ void Application::newWindow()
void Application::updateConfiguration()
{
- // FIXME:
- // all things related to mainview can be
- // improved/moved/replicated in all the mainwindows
- MainView *view = mainWindow()->mainView();
-
- // ============== General ==================
- view->updateTabBar();
-
// ============== Tabs ==================
- if (ReKonfig::closeTabSelectPrevious())
- view->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab);
- else
- view->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectRightTab);
-
- // =========== Fonts ==============
- QWebSettings *defaultSettings = QWebSettings::globalSettings();
-
- int fnSize = ReKonfig::fontSize();
- int minFnSize = ReKonfig::minFontSize();
+ bool b = ReKonfig::closeTabSelectPrevious();
+ Q_FOREACH(const QWeakPointer<MainWindow> &w, m_mainWindows)
+ {
+ MainView *mv = w.data()->mainView();
+ mv->updateTabBar();
+
+ if (b)
+ mv->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab);
+ else
+ mv->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectRightTab);
+ }
- QFont standardFont = ReKonfig::standardFont();
- defaultSettings->setFontFamily(QWebSettings::StandardFont, standardFont.family());
- defaultSettings->setFontSize(QWebSettings::DefaultFontSize, fnSize);
- defaultSettings->setFontSize(QWebSettings::MinimumFontSize, minFnSize);
+ QWebSettings *defaultSettings = QWebSettings::globalSettings();
+
+ // =========== Fonts ==============
+ defaultSettings->setFontFamily(QWebSettings::StandardFont, ReKonfig::standardFontFamily() );
+ defaultSettings->setFontFamily(QWebSettings::FixedFont, ReKonfig::fixedFontFamily() );
+ defaultSettings->setFontFamily(QWebSettings::SerifFont, ReKonfig::serifFontFamily() );
+ defaultSettings->setFontFamily(QWebSettings::SansSerifFont, ReKonfig::sansSerifFontFamily() );
+ defaultSettings->setFontFamily(QWebSettings::CursiveFont, ReKonfig::cursiveFontFamily());
+ defaultSettings->setFontFamily(QWebSettings::FantasyFont, ReKonfig::fantasyFontFamily());
+
+ // compute font size
+ // (I have to admit I know nothing about these DPI questions..: copied from kwebkitpart, as someone suggested)
+ // font size in pixels = font size in inches × screen dpi
+ int defaultFontSize = ReKonfig::defaultFontSize();
+ int minimumFontSize = ReKonfig::minFontSize();
+
+ int logDpiY = mainWindow()->currentTab()->view()->logicalDpiY();
+ kDebug() << "Logical Dot per Inch Y: " << logDpiY;
+
+ float toPix = (logDpiY < 96.0)
+ ? 96.0/72.0
+ : logDpiY/72.0 ;
- QFont fixedFont = ReKonfig::fixedFont();
- defaultSettings->setFontFamily(QWebSettings::FixedFont, fixedFont.family());
- defaultSettings->setFontSize(QWebSettings::DefaultFixedFontSize, fnSize);
+ defaultSettings->setFontSize(QWebSettings::DefaultFontSize, qRound(defaultFontSize * toPix) );
+ defaultSettings->setFontSize(QWebSettings::MinimumFontSize, qRound(minimumFontSize * toPix) );
+
// ================ WebKit ============================
defaultSettings->setAttribute(QWebSettings::AutoLoadImages, ReKonfig::autoLoadImages());
defaultSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, ReKonfig::dnsPrefetch());
diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp
index 47608710..4422763a 100644
--- a/src/bookmarks/bookmarkcontextmenu.cpp
+++ b/src/bookmarks/bookmarkcontextmenu.cpp
@@ -213,11 +213,12 @@ void BookmarkContextMenu::deleteBookmark()
{
KBookmark bm = bookmark();
bool folder = bm.isGroup();
+ QString name = QString(bm.text()).replace("&&", "&");
if (KMessageBox::warningContinueCancel(
QApplication::activeWindow(),
- folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", bm.text())
- : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", bm.text()),
+ folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", name)
+ : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", name),
folder ? i18n("Bookmark Folder Deletion")
: i18n("Bookmark Deletion"),
KStandardGuiItem::del())
@@ -233,9 +234,10 @@ void BookmarkContextMenu::deleteBookmark()
void BookmarkContextMenu::editBookmark()
{
KBookmark selected = bookmark();
-
+ selected.setFullText(selected.text().replace("&&", "&"));
KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow());
dialog->editBookmark(selected);
+ selected.setFullText(selected.text().replace('&', "&&"));
delete dialog;
}
@@ -317,7 +319,7 @@ void BookmarkContextMenu::bookmarkCurrentPage()
if (selected.isGroup())
parent = selected.toGroup();
- KBookmark newBk = parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl()), "text-html");
+ KBookmark newBk = parent.addBookmark(owner()->currentTitle().replace('&', "&&"), KUrl(owner()->currentUrl()), "text-html");
parent.moveBookmark(newBk, selected.parentGroup().previous(selected));
}
diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp
index 03146ea2..c430078b 100644
--- a/src/bookmarks/bookmarksmanager.cpp
+++ b/src/bookmarks/bookmarksmanager.cpp
@@ -100,8 +100,10 @@ void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bookmark)
if (urlList.length() > 8)
{
if ( !(KMessageBox::warningContinueCancel( Application::instance()->mainWindow(),
- i18n("You are about to open %1 tabs.\nAre you sure ?",
- QString::number( urlList.length() ))
+ i18ncp("%1=Number of tabs. Value is always >=8",
+ "You are about to open %1 tabs.\nAre you sure?",
+ "You are about to open %1 tabs.\nAre you sure?",
+ urlList.length())
) == KMessageBox::Continue)
)
return;
@@ -409,7 +411,9 @@ void BookmarkProvider::fillBookmarkBar(KToolBar *toolBar)
else
{
- toolBar->addAction(new KBookmarkAction(bookmark, m_owner, this));
+ KBookmarkAction* a = new KBookmarkAction(bookmark, m_owner, this);
+ a->setIconText(a->iconText().replace('&', "&&"));
+ toolBar->addAction(a);
}
}
}
diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp
index 06732007..a865a99d 100644
--- a/src/bookmarks/bookmarkstreemodel.cpp
+++ b/src/bookmarks/bookmarkstreemodel.cpp
@@ -75,7 +75,7 @@ QVariant BtmItem::data(int role) const
}
if (m_kbm.isGroup())
{
- tooltip += " [" + QString::number(childCount()) + ' ' + i18n("Items") + ']';
+ tooltip += i18nc("%1=Number of items in bookmark folder", " (%1 items)", childCount());
}
if (!m_kbm.url().url().isEmpty())
{
diff --git a/src/clicktoflash.cpp b/src/clicktoflash.cpp
index e9174470..051919fd 100644
--- a/src/clicktoflash.cpp
+++ b/src/clicktoflash.cpp
@@ -93,7 +93,6 @@ void ClickToFlash::load()
{
if (checkElement(element))
{
- kDebug() << "RETURNED TRUE ...........................";
QWebElement substitute = element.clone();
emit signalLoadClickToFlash(true);
element.replace(substitute);
@@ -108,6 +107,7 @@ void ClickToFlash::load()
bool ClickToFlash::checkElement(QWebElement el)
{
+ // check these two values..
kDebug() << "src: " << QUrl(el.attribute("src"));
kDebug() << "url: " << m_url;
diff --git a/src/data/home.html b/src/data/home.html
index 25236743..cedd8855 100644
--- a/src/data/home.html
+++ b/src/data/home.html
@@ -40,9 +40,7 @@ font: normal bold 1em;
a {
color: #3F7AB7;
text-decoration: none;
--webkit-transition-property: color;
--webkit-transition-duration: 0.5s;
--webkit-transition-timing-function: ease;
+-webkit-transition: color 0.5s ease;
}
a:hover {
color: black;
@@ -81,7 +79,12 @@ height: 16px;
.link {
display: inline-block;
+-webkit-transition: opacity 0.5s ease;
}
+.link:not(.current):hover {
+opacity: 0.6;
+}
+
.link img, .link span {
vertical-align: middle; display: inline-block;
}
@@ -89,15 +92,6 @@ vertical-align: middle; display: inline-block;
color: black;
}
-#actions .link {
--webkit-transition-property: opacity;
--webkit-transition-duration: 0.8s;
--webkit-transition-timing-function: ease;
-opacity: 0.2;
-}
-#actions .link:hover {
-opacity: 1;
-}
#actions .link img {
margin-right: 3px; width: 16px;
}
@@ -141,22 +135,13 @@ background: url(%2/bg.png) no-repeat;
padding: 0 12px;
}
-.thumbnail:hover .preview ,
-.thumbnail:hover .button img {
-opacity: 0.8;
-}
-.button img, .preview {
--webkit-transition-property: opacity;
--webkit-transition-duration: 0.8s;
--webkit-transition-timing-function: ease-in-out;
-}
-
.button img {
display: inline-block;
width: 16px;
height: 16px;
opacity: 0;
}
+
.remove {
float: right;
}
@@ -164,7 +149,20 @@ float: right;
float: left;
}
-.thumbnail a:hover, .thumbnail span {
+.button img, .preview {
+-webkit-transition: opacity 0.8s ease-in-out;
+}
+.thumb-inner:hover .preview {
+opacity: 0.6;
+}
+.thumb-inner:hover .button img {
+opacity: 0.4;
+-webkit-transition: opacity 0.8s ease-out;
+}
+.thumb-inner .button img:hover {
+opacity: 1;
+}
+.thumbnail a:hover {
color:#3F7AB7;
}
diff --git a/src/data/rekonq.desktop b/src/data/rekonq.desktop
index a4eb1b00..e4157082 100644
--- a/src/data/rekonq.desktop
+++ b/src/data/rekonq.desktop
@@ -2,21 +2,39 @@
Name=rekonq
Name[cs]=rekonq
Name[da]=rekonq
+Name[de]=rekonq
+Name[en_GB]=rekonq
+Name[es]=rekonq
+Name[et]=rekonq
+Name[fr]=rekonq
+Name[ga]=rekonq
Name[it]=rekonq
+Name[lt]=rekonq
Name[nds]=Rekonq
+Name[nl]=rekonq
+Name[pl]=rekonq
Name[pt]=rekonq
Name[pt_BR]=rekonq
+Name[ru]=rekonq
Name[sv]=Rekonq
Name[uk]=rekonq
Name[x-test]=xxrekonqxx
Name[zh_CN]=rekonq
+Name[zh_TW]=rekonq
GenericName=WebKit KDE Browser
GenericName[da]=KDE-browser baseret på WebKit
+GenericName[de]=WebKit-basierter Webbrowser für KDE
+GenericName[en_GB]=WebKit KDE Browser
+GenericName[et]=KDE WebKiti veebibrauser
+GenericName[fr]=Navigateur Webkit pour KDE
+GenericName[nl]=Webkit KDE Browser
GenericName[pt]=Navegador do KDE Usando o WebKit
GenericName[pt_BR]=Navegador WebKit do KDE
+GenericName[ru]=Веб-браузер для KDE на базе WebKit
GenericName[sv]=Webkit webbläsare för KDE
GenericName[uk]=Переглядач мережі на WebKit для KDE
GenericName[x-test]=xxWebKit KDE Browserxx
+GenericName[zh_CN]=Webkit KDE 浏览器
Icon=rekonq
Type=Application
Exec=rekonq %u
diff --git a/src/history/historymanager.cpp b/src/history/historymanager.cpp
index 8a29aa90..c0f87935 100644
--- a/src/history/historymanager.cpp
+++ b/src/history/historymanager.cpp
@@ -468,7 +468,7 @@ void HistoryManager::addDownload(const QString &srcUrl, const QString &destUrl)
QFile downloadFile(downloadFilePath);
if (!downloadFile.open(QFile::WriteOnly | QFile::Append))
{
- kDebug() << "azz...";
+ kDebug() << "Unable to open download file (WRITE mode)..";
return;
}
QDataStream out(&downloadFile);
@@ -487,7 +487,7 @@ DownloadList HistoryManager::downloads()
QFile downloadFile(downloadFilePath);
if (!downloadFile.open(QFile::ReadOnly))
{
- kDebug() << "azz...";
+ kDebug() << "Unable to open download file (READ mode)..";
return list;
}
diff --git a/src/history/historypanel.cpp b/src/history/historypanel.cpp
index c8009afd..d8309eed 100644
--- a/src/history/historypanel.cpp
+++ b/src/history/historypanel.cpp
@@ -172,8 +172,10 @@ void HistoryPanel::openAll()
if (allChild.length() > 8)
{
if (!(KMessageBox::warningContinueCancel(this,
- i18n("You are about to open %1 tabs.\nAre you sure ?",
- QString::number(allChild.length()))) == KMessageBox::Continue)
+ i18ncp("%1=Number of tabs. Value is always >=8",
+ "You are about to open %1 tabs.\nAre you sure?",
+ "You are about to open %1 tabs.\nAre you sure?",
+ allChild.length())) == KMessageBox::Continue)
)
return;
}
diff --git a/src/main.cpp b/src/main.cpp
index 5551c55a..296f8679 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -66,34 +66,64 @@ extern "C" KDE_EXPORT int kdemain(int argc, char **argv)
"");
about.addAuthor(ki18n("Lionel Chauvin"),
- ki18n("Developer, Ideas, Mockups. And the icon."),
+ ki18n("Developer, Ideas, Mockups, rekonq Icon"),
"megabigbug@yahoo.fr",
"");
-
+
about.addAuthor(ki18n("Johannes Zellner"),
- ki18n("Patches, suggestions, testing, bugfixing"),
+ ki18n("Patches, Suggestions, Testing, Bugfixing"),
"webmaster@nebulon.de",
"");
about.addAuthor(ki18n("Matthieu Gicquel"),
- ki18n("Developer, Ideas, Tabloid improvements"),
+ ki18n("Developer, Ideas, New Tab Page improvements"),
"matgic78@gmail.com",
"");
about.addAuthor(ki18n("Ronny Scholz"),
- ki18n("(Tons of ) patches, testing, bugfixing"),
+ ki18n("(Tons of) Patches, Testing, Bugfixing"),
"ronny_scholz@web.de",
"");
+ about.addAuthor(ki18n("Yoann Laissus"),
+ ki18n("Developer, History & Bookmarks Improvements"),
+ "yoann.laissus@gmail.com",
+ "");
+
+ about.addAuthor(ki18n("Cédric Bellegarde"),
+ ki18n("Patched code quite everywhere :)"),
+ "gnumdk@adishatz.1s.fr",
+ "");
+
+ about.addAuthor(ki18n("Nikhil Marathe"),
+ ki18n("Bugfixing, Working on Extensions support (not yet available)"),
+ "nsm.nikhil@gmail.com",
+ "");
+
+ about.addAuthor(ki18n("Rohan Garg"),
+ ki18n("Handbook, Maintains a Kubuntu PPA with rekonq git packages"),
+ "rohan16garg@gmail.com",
+ "");
+
+ about.addAuthor(ki18n("Jonathan Raphael Joachim Kolberg"),
+ ki18n("Handbook, Maintains a Kubuntu PPA with rekonq git packages"),
+ "bulldog98@freenet.de",
+ "");
+
// --------------- about credits -----------------------------
- about.addCredit(ki18n("Domrachev Alexandr"),
- ki18n("Developer"),
- "alexandr.domrachev@gmail.com",
+ about.addCredit(ki18n("Lindsay Mathieson"),
+ ki18n("Provided Patches & Hints, Discovered Bugs"),
+ "lindsay.mathieson@gmail.com",
+ "");
+
+ about.addCredit(ki18n("Abdurrahman AVCI"),
+ ki18n("Provided Patches & Hints"),
+ "abdurrahmanavci@gmail.com",
"");
- about.addCredit(ki18n("Henry de Valence"),
- ki18n("Promised help on multitask rekonq"),
- "hdevalence@gmail.com",
+ about.addCredit(ki18n("Domrachev Alexandr"),
+ ki18n("Former Developer"),
+ "alexandr.domrachev@gmail.com",
"");
about.addCredit(ki18n("Abuus"),
@@ -102,32 +132,27 @@ extern "C" KDE_EXPORT int kdemain(int argc, char **argv)
"");
about.addCredit(ki18n("Ivan Čukić"),
- ki18n("Patches, bugfixing and ideas"),
+ ki18n("Patches, Bugfixing and Ideas"),
"ivan@fomentgroup.org",
"");
about.addCredit(ki18n("Adrià Arrufat"),
- ki18n("New tab loading animation"),
+ ki18n("New Tab Page loading animation"),
"swiftscythe@gmail.com",
"");
about.addCredit(ki18n("Pawel Prazak"),
- ki18n("Developer"),
+ ki18n("Former Developer"),
"kojots350@gmail.com",
"");
- about.addCredit(ki18n("Rohan Garg"),
- ki18n("Handbook"),
- "rohan16garg@gmail.com",
- "");
-
about.addCredit(ki18n("Dario Freddi"),
- ki18n("Patches, hints, first KWallet support implementation (not yet included)"),
+ ki18n("Patches, Hints, First implementation of KWallet support"),
"drf@kde.org",
"");
about.addCredit(ki18n("Jon de Andrés Frías"),
- ki18n("first awesome bar implementation (wait next version and you'll see..)"),
+ ki18n("First awesome bar implementation"),
"jondeandres@gmail.com",
"");
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 1c36adcf..0b17ef2a 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -329,6 +329,7 @@ WebTab *MainView::newWebTab(bool focused, bool nearParent)
connect(tab->view(), SIGNAL(iconChanged()), this, SLOT(webViewIconChanged()));
connect(tab->view(), SIGNAL(titleChanged(const QString &)), this, SLOT(webViewTitleChanged(const QString &)));
connect(tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(webViewUrlChanged(const QUrl &)));
+ connect(tab->view(), SIGNAL(zoomChanged(qreal)), m_parentWindow, SLOT(setZoomSliderFactor(qreal)));
// connecting webPage signals with mainview
connect(tab->view()->page(), SIGNAL(windowCloseRequested()), this, SLOT(windowCloseRequested()));
@@ -512,6 +513,8 @@ void MainView::closeTab(int index, bool del)
UrlBar *urlbar = _widgetBar->urlBar(index);
_widgetBar->removeWidget(urlbar);
+ _widgetBar->setCurrentIndex(m_currentTabIndex);
+
if (del)
{
tab->deleteLater(); // tab is scheduled for deletion.
@@ -592,11 +595,10 @@ void MainView::webViewIconChanged()
void MainView::webViewTitleChanged(const QString &title)
{
- QString tabTitle = title;
- if (title.isEmpty())
- {
- tabTitle = i18n("(Untitled)");
- }
+ QString viewTitle = title.isEmpty()? i18n("(Untitled)") : title;
+ QString tabTitle = viewTitle;
+ tabTitle.replace('&', "&&");
+
WebView *view = qobject_cast<WebView *>(sender());
int index = indexOf(view->parentWidget());
if (-1 != index)
@@ -605,7 +607,7 @@ void MainView::webViewTitleChanged(const QString &title)
}
if (currentIndex() == index)
{
- emit currentTitle(tabTitle);
+ emit currentTitle(viewTitle);
}
Application::historyManager()->updateHistoryEntry(view->url(), tabTitle);
}
@@ -657,6 +659,17 @@ void MainView::openClosedTab()
}
}
+void MainView::switchToTab()
+{
+ // uses the sender to determine the tab index
+ QAction *sender = static_cast<QAction*>(QObject::sender());
+ int index = sender->data().toInt();
+ index -= 1; // to compensate for off by 1 presented to the user
+ if( index < 0 || index >= count() )
+ return;
+ setCurrentIndex( index );
+}
+
QLabel *MainView::animatedLoading(int index, bool addMovie)
{
if (index == -1)
diff --git a/src/mainview.h b/src/mainview.h
index 0cff4c81..636d37ac 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -135,6 +135,7 @@ public slots:
void detachTab(int index = -1);
void openClosedTabs();
void openClosedTab();
+ void switchToTab();
// WEB slot actions
void webReload();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 2287370c..dc29d2eb 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -320,7 +320,9 @@ void MainWindow::setupActions()
browserLoading(false); //first init for blank start page
a = new KAction(i18n("Open Location"), this);
- a->setShortcut(Qt::CTRL + Qt::Key_L);
+ KShortcut openLocationShortcut(Qt::CTRL + Qt::Key_L);
+ openLocationShortcut.setAlternate(Qt::Key_F6);
+ a->setShortcut(openLocationShortcut);
actionCollection()->addAction(QL1S("open_location"), a);
connect(a, SIGNAL(triggered(bool)) , this, SLOT(openLocation()));
@@ -398,6 +400,16 @@ void MainWindow::setupActions()
closedTabsMenu->setDelayed(false);
actionCollection()->addAction(QL1S("closed_tab_menu"), closedTabsMenu);
+ // shortcuts for quickly switching to a tab
+ for( int i = 1; i <= 9; i++ ) {
+ a = new KAction(i18n("Switch to Tab %1", i), this);
+ a->setShortcut(KShortcut( QString("Alt+%1").arg(i) ));
+ a->setData( QVariant(i) );
+ actionCollection()->addAction(QL1S(("switch_tab_" + QString::number(i)).toAscii()), a);
+ connect(a, SIGNAL(triggered(bool)), m_view, SLOT(switchToTab()));
+ }
+
+
// ============================== Indexed Tab Actions ====================================
a = new KAction(KIcon("tab-close"), i18n("&Close Tab"), this);
actionCollection()->addAction(QL1S("close_tab"), a);
@@ -597,8 +609,19 @@ void MainWindow::openLocation()
void MainWindow::fileSaveAs()
{
- KUrl srcUrl = currentTab()->url();
-
+ KUrl srcUrl;
+ WebTab *w = currentTab();
+ if (w->page()->isOnRekonqPage())
+ {
+ QWebElement el = w->page()->mainFrame()->documentElement();
+ srcUrl = KUrl( el.findFirst("object").attribute("data") );
+ }
+ else
+ {
+ srcUrl = w->url();
+ }
+ kDebug() << "URL to save: " << srcUrl;
+
QString name = srcUrl.fileName();
if (name.isNull())
{
@@ -634,7 +657,6 @@ void MainWindow::preferences()
void MainWindow::updateActions()
{
bool rekonqPage = currentTab()->page()->isOnRekonqPage();
- kDebug() << "UPDATE ACTIONS: rekonq page = " << rekonqPage;
QAction *historyBackAction = actionByName(KStandardAction::name(KStandardAction::Back));
if( rekonqPage )
@@ -658,7 +680,7 @@ void MainWindow::updateActions()
if (am->menu())
am->menu()->clear();
- foreach (HistoryItem item, mainView()->recentlyClosedTabs())
+ foreach (const HistoryItem &item, mainView()->recentlyClosedTabs())
{
KAction *a = new KAction(Application::icon(item.url), item.title, this);
a->setData(item.url);
@@ -884,7 +906,7 @@ void MainWindow::setZoomFactor(int factor)
void MainWindow::setZoomSliderFactor(qreal factor)
{
- m_zoomSlider->setValue(factor*10);
+ m_zoomSlider->setValue(factor * 10);
}
@@ -942,26 +964,8 @@ void MainWindow::viewPageSource()
if (!currentTab())
return;
- KUrl url(currentTab()->url());
- bool isTempFile = false;
- if (!url.isLocalFile())
- {
- KTemporaryFile sourceFile;
-
- /// TODO: autochoose tempfile suffix
- sourceFile.setSuffix(QString(".html"));
- sourceFile.setAutoRemove(false);
-
- if (sourceFile.open())
- {
- sourceFile.write(currentTab()->page()->mainFrame()->toHtml().toUtf8());
-
- url = KUrl();
- url.setPath(sourceFile.fileName());
- isTempFile = true;
- }
- }
- KRun::runUrl(url, QL1S("text/plain"), this, isTempFile);
+ KUrl url = currentTab()->url();
+ KRun::runUrl(url, QL1S("text/plain"), this, false);
}
@@ -1314,7 +1318,7 @@ void MainWindow::setEncoding(QAction *qa)
{
QString currentCodec = qa->text().toLatin1();
currentCodec = currentCodec.remove('&');
- kDebug() << currentCodec;
+ kDebug() << "Setting codec: " << currentCodec;
currentTab()->page()->settings()->setDefaultTextEncoding(currentCodec);
}
@@ -1331,7 +1335,6 @@ void MainWindow::populateEncodingMenu()
codecs.sort();
QString currentCodec = currentTab()->page()->settings()->defaultTextEncoding();
- kDebug() << "Current Codec: " << currentCodec;
m_encodingMenu->clear();
KMenu *isoMenu = new KMenu( QL1S("ISO"), m_encodingMenu);
@@ -1380,8 +1383,8 @@ bool MainWindow::queryClose()
{
int answer = KMessageBox::questionYesNoCancel(
this,
- i18np("Are you sure you want to close the window?\n" "You have 1 tab open",
- "Are you sure you want to close the window?\n" "You have %1 tabs open" ,
+ i18np("Are you sure you want to close the window?\n" "You have 1 tab open.",
+ "Are you sure you want to close the window?\n" "You have %1 tabs open.",
m_view->count()),
i18n("Are you sure you want to close the window?"),
KStandardGuiItem::quit(),
diff --git a/src/mainwindow.h b/src/mainwindow.h
index ffc91086..8acbef56 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -78,8 +78,6 @@ public:
virtual QSize sizeHint() const;
void setWidgetsVisible(bool makeFullScreen);
- void setZoomSliderFactor(qreal factor);
-
private:
void setupActions();
void setupTools();
@@ -103,6 +101,8 @@ public slots:
void updateActions();
+ void setZoomSliderFactor(qreal factor);
+
signals:
// switching tabs
void ctrlTabPressed();
diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp
index b3b9cf65..9c381f97 100644
--- a/src/newtabpage.cpp
+++ b/src/newtabpage.cpp
@@ -380,8 +380,7 @@ void NewTabPage::browsingMenu(const KUrl &currentUrl)
nav.findFirst("span").appendInside(i18n("Downloads"));
navItems.append(nav);
- QWebElement it;
- foreach(it, navItems)
+ foreach(QWebElement it, navItems)
{
if (it.findFirst("a").attribute("href") == currentUrl.toMimeDataString())
it.addClass("current");
@@ -582,7 +581,7 @@ void NewTabPage::downloadsPage()
div.appendInside("<em>" + date + "</em>");
div.appendInside("<br/>");
- div.appendInside(item.srcUrlString);
+ div.appendInside("<a href=" + item.srcUrlString + '>' + item.srcUrlString + "</a>");
div.appendInside("<br/>");
div.appendInside(markup("a"));
diff --git a/src/protocolhandler.cpp b/src/protocolhandler.cpp
index 3a9d61ef..568aa400 100644
--- a/src/protocolhandler.cpp
+++ b/src/protocolhandler.cpp
@@ -339,7 +339,7 @@ void ProtocolHandler::slotMostLocalUrlResult(KJob *job)
*/
void ProtocolHandler::abpHandling()
{
- kDebug() << _url;
+ kDebug() << "handling abp url: " << _url;
QString path = _url.path();
if (path != QL1S("subscribe"))
@@ -348,16 +348,9 @@ void ProtocolHandler::abpHandling()
QMap<QString, QString> map = _url.queryItems(KUrl::CaseInsensitiveKeys);
QString location = map.value(QL1S("location"));
- kDebug() << location;
-
QString title = map.value(QL1S("title"));
- kDebug() << title;
-
QString requireslocation = map.value(QL1S("requireslocation"));
- kDebug() << requireslocation;
-
QString requirestitle = map.value(QL1S("requirestitle"));
- kDebug() << requirestitle;
QString info;
if (requirestitle.isEmpty() || requireslocation.isEmpty())
diff --git a/src/rekonq.kcfg b/src/rekonq.kcfg
index 6769b4f5..1d6139ac 100644
--- a/src/rekonq.kcfg
+++ b/src/rekonq.kcfg
@@ -9,6 +9,7 @@
<include>QtWebKit</include>
<include>QDateTime</include>
<include>KUrl</include>
+<include>KGlobalSettings</include>
<kcfgfile name="rekonqrc" />
@@ -69,8 +70,8 @@
<entry name="searchEngine" type="Int">
<default>0</default>
</entry>
- <entry name="disableAutoScroll" type="Bool">
- <default>false</default>
+ <entry name="autoScroll" type="Bool">
+ <default>true</default>
</entry>
</group>
@@ -100,17 +101,29 @@
<!-- Fonts Settings -->
<group name="Fonts">
- <entry name="standardFont" type="Font">
- <default code="true">QFont(QWebSettings::globalSettings()->fontFamily(QWebSettings::StandardFont))</default>
+ <entry name="standardFontFamily" type="String">
+ <default code="true">KGlobalSettings::generalFont().family()</default>
+ </entry>
+ <entry name="fixedFontFamily" type="String">
+ <default code="true">KGlobalSettings::fixedFont().family()</default>
+ </entry>
+ <entry name="serifFontFamily" type="String">
+ <default code="true">QWebSettings::globalSettings()->fontFamily(QWebSettings::SerifFont)</default>
</entry>
- <entry name="fixedFont" type="Font">
- <default code="true">QFont(QWebSettings::globalSettings()->fontFamily(QWebSettings::FixedFont))</default>
+ <entry name="sansSerifFontFamily" type="String">
+ <default code="true">QWebSettings::globalSettings()->fontFamily(QWebSettings::SansSerifFont)</default>
</entry>
- <entry name="fontSize" type="Int">
- <default>16</default>
+ <entry name="cursiveFontFamily" type="String">
+ <default code="true">QWebSettings::globalSettings()->fontFamily(QWebSettings::CursiveFont)</default>
+ </entry>
+ <entry name="fantasyFontFamily" type="String">
+ <default code="true">QWebSettings::globalSettings()->fontFamily(QWebSettings::FantasyFont)</default>
+ </entry>
+ <entry name="defaultFontSize" type="Int">
+ <default>12</default>
</entry>
<entry name="minFontSize" type="Int">
- <default>8</default>
+ <default>7</default>
</entry>
</group>
diff --git a/src/sessionmanager.cpp b/src/sessionmanager.cpp
index 97d9bc36..6eb0cb6c 100644
--- a/src/sessionmanager.cpp
+++ b/src/sessionmanager.cpp
@@ -110,33 +110,34 @@ bool SessionManager::restoreSession()
if (line == QString("window"))
{
line = in.readLine();
- kDebug() << "New Window line: " << line;
Application::instance()->loadUrl( KUrl(line), Rekonq::NewWindow);
}
- else if (line == QString("currenttab"))
- {
- kDebug() << "Set Current Tab Line" << endl;
- line = in.readLine();
- bool ok;
- int idx = line.toInt(&ok);
- if (ok)
- {
- kDebug() << "Setting current tab to " << idx << endl;
- // Get last mainwindow created which will be first one in mainwindow list
- MainWindowList wl = Application::instance()->mainWindowList();
- if (wl.count() > 0)
- {
- MainView *mv = wl[0].data()->mainView();
- emit mv->tabBar()->setCurrentIndex(idx);
- }
- }
- else
- kDebug() << "Failed to convert currenttab index line <" << line << "> to in value" << endl;
- }
else
{
- kDebug() << "New Current Tab line: " << line;
- Application::instance()->loadUrl( KUrl(line), Rekonq::NewCurrentTab);
+ if (line == QString("currenttab"))
+ {
+ line = in.readLine();
+ bool ok;
+ int idx = line.toInt(&ok);
+ if (ok)
+ {
+ // Get last mainwindow created which will be first one in mainwindow list
+ MainWindowList wl = Application::instance()->mainWindowList();
+ if (wl.count() > 0)
+ {
+ MainView *mv = wl[0].data()->mainView();
+ emit mv->tabBar()->setCurrentIndex(idx);
+ }
+ }
+ else
+ {
+ kDebug() << "Failed to convert currenttab index line <" << line << "> to in value" << endl;
+ }
+ }
+ else
+ {
+ Application::instance()->loadUrl( KUrl(line), Rekonq::NewCurrentTab);
+ }
}
}
while (!line.isEmpty());
diff --git a/src/settings/adblockwidget.h b/src/settings/adblockwidget.h
index 1ed9aaa6..38a02636 100644
--- a/src/settings/adblockwidget.h
+++ b/src/settings/adblockwidget.h
@@ -32,8 +32,8 @@
#include "ui_settings_adblock.h"
// Qt Includes
-#include <QWidget>
-#include <QTreeWidgetItem>
+#include <QtGui/QWidget>
+#include <QtGui/QTreeWidgetItem>
class AdBlockWidget : public QWidget, private Ui::adblock
diff --git a/src/settings/appearancewidget.cpp b/src/settings/appearancewidget.cpp
new file mode 100644
index 00000000..20793d0a
--- /dev/null
+++ b/src/settings/appearancewidget.cpp
@@ -0,0 +1,121 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "appearancewidget.h"
+#include "appearancewidget.moc"
+
+// Auto Includes
+#include "rekonq.h"
+
+
+AppearanceWidget::AppearanceWidget(QWidget *parent)
+ : QWidget(parent)
+ , _changed(false)
+{
+ setupUi(this);
+
+ fixedFontChooser->setOnlyFixed(true);
+
+ standardFontChooser->setCurrentFont( QFont( ReKonfig::standardFontFamily() ) );
+ fixedFontChooser->setCurrentFont( QFont( ReKonfig::fixedFontFamily() ) );
+ serifFontChooser->setCurrentFont( QFont( ReKonfig::serifFontFamily() ) );
+ sansSerifFontChooser->setCurrentFont( QFont( ReKonfig::sansSerifFontFamily() ) );
+ cursiveFontChooser->setCurrentFont( QFont( ReKonfig::cursiveFontFamily() ) );
+ fantasyFontChooser->setCurrentFont( QFont( ReKonfig::fantasyFontFamily() ) );
+
+ connect(standardFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotStandardFont(const QFont &)));
+ connect(fixedFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotFixedFont(const QFont &)));
+ connect(serifFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotSerifFont(const QFont &)));
+ connect(sansSerifFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotSansSerifFont(const QFont &)));
+ connect(cursiveFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotCursiveFont(const QFont &)));
+ connect(fantasyFontChooser, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(slotFantasyFont(const QFont &)));
+}
+
+
+void AppearanceWidget::save()
+{
+ ReKonfig::setStandardFontFamily(reFont[0]);
+ ReKonfig::setFixedFontFamily(reFont[1]);
+ ReKonfig::setSerifFontFamily(reFont[2]);
+ ReKonfig::setSansSerifFontFamily(reFont[3]);
+ ReKonfig::setCursiveFontFamily(reFont[4]);
+ ReKonfig::setFantasyFontFamily(reFont[5]);
+}
+
+
+bool AppearanceWidget::changed()
+{
+ return _changed;
+}
+
+
+void AppearanceWidget::hasChanged()
+{
+ _changed = true;
+}
+
+
+void AppearanceWidget::slotStandardFont(const QFont &f)
+{
+ reFont[0] = f.family();
+ hasChanged();
+}
+
+
+void AppearanceWidget::slotFixedFont(const QFont &f)
+{
+ reFont[1] = f.family();
+ hasChanged();
+}
+
+
+void AppearanceWidget::slotSerifFont(const QFont &f)
+{
+ reFont[2] = f.family();
+ hasChanged();
+}
+
+
+void AppearanceWidget::slotSansSerifFont(const QFont &f)
+{
+ reFont[3] = f.family();
+ hasChanged();
+}
+
+
+void AppearanceWidget::slotCursiveFont(const QFont &f)
+{
+ reFont[4] = f.family();
+ hasChanged();
+}
+
+
+void AppearanceWidget::slotFantasyFont(const QFont &f)
+{
+ reFont[5] = f.family();
+ hasChanged();
+}
diff --git a/src/settings/appearancewidget.h b/src/settings/appearancewidget.h
new file mode 100644
index 00000000..ea3de6a1
--- /dev/null
+++ b/src/settings/appearancewidget.h
@@ -0,0 +1,71 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef APPEARANCE_WIDGET_H
+#define APPEARANCE_WIDGET_H
+
+
+// Rekonq Includes
+#include "rekonq_defines.h"
+
+// Ui Includes
+#include "ui_settings_appearance.h"
+
+// Qt Includes
+#include <QtGui/QWidget>
+
+
+class AppearanceWidget : public QWidget, private Ui::appearance
+{
+ Q_OBJECT
+
+public:
+ AppearanceWidget(QWidget *parent = 0);
+
+ void save();
+ bool changed();
+
+signals:
+ void changed(bool);
+
+private slots:
+ void hasChanged();
+
+ void slotStandardFont(const QFont &);
+ void slotFixedFont(const QFont &);
+ void slotSerifFont(const QFont &);
+ void slotSansSerifFont(const QFont &);
+ void slotCursiveFont(const QFont &);
+ void slotFantasyFont(const QFont &);
+
+private:
+ bool _changed;
+
+ QString reFont[6];
+
+};
+
+#endif // APPEARANCE_WIDGET_H
diff --git a/src/settings/generalwidget.cpp b/src/settings/generalwidget.cpp
new file mode 100644
index 00000000..09c9e5c7
--- /dev/null
+++ b/src/settings/generalwidget.cpp
@@ -0,0 +1,85 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "generalwidget.h"
+#include "generalwidget.moc"
+
+// Auto Includes
+#include "rekonq.h"
+
+// Local Includes
+#include "application.h"
+#include "mainwindow.h"
+#include "webtab.h"
+
+
+GeneralWidget::GeneralWidget(QWidget *parent)
+ : QWidget(parent)
+ , _changed(false)
+{
+ setupUi(this);
+
+ connect(setHomeToCurrentPageButton, SIGNAL(clicked()), this, SLOT(setHomeToCurrentPage()));
+
+ disableHomeSettings(ReKonfig::useNewTabPage());
+
+ connect(kcfg_useNewTabPage, SIGNAL(toggled(bool)), this, SLOT(disableHomeSettings(bool)));
+}
+
+
+void GeneralWidget::save()
+{
+}
+
+
+bool GeneralWidget::changed()
+{
+ return _changed;
+}
+
+
+void GeneralWidget::hasChanged()
+{
+}
+
+
+void GeneralWidget::setHomeToCurrentPage()
+{
+ MainWindow *mw = Application::instance()->mainWindow();
+ WebTab *webTab = mw->currentTab();
+ if (webTab)
+ {
+ kcfg_homePage->setText(webTab->url().prettyUrl());
+ }
+}
+
+
+void GeneralWidget::disableHomeSettings(bool b)
+{
+ kcfg_homePage->setEnabled(!b);
+ setHomeToCurrentPageButton->setEnabled(!b);
+}
diff --git a/src/settings/generalwidget.h b/src/settings/generalwidget.h
new file mode 100644
index 00000000..d669fd04
--- /dev/null
+++ b/src/settings/generalwidget.h
@@ -0,0 +1,60 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef GENERAL_WIDGET_H
+#define GENERAL_WIDGET_H
+
+
+// Ui Includes
+#include "ui_settings_general.h"
+
+// Qt Includes
+#include <QtGui/QWidget>
+
+
+class GeneralWidget : public QWidget, private Ui::general
+{
+ Q_OBJECT
+
+public:
+ GeneralWidget(QWidget *parent = 0);
+
+ void save();
+ bool changed();
+
+signals:
+ void changed(bool);
+
+private slots:
+ void hasChanged();
+ void setHomeToCurrentPage();
+ void disableHomeSettings(bool);
+
+private:
+ bool _changed;
+};
+
+#endif // GENERAL_WIDGET_H
diff --git a/src/settings/settings_adblock.ui b/src/settings/settings_adblock.ui
index 699aef4d..8933fe60 100644
--- a/src/settings/settings_adblock.ui
+++ b/src/settings/settings_adblock.ui
@@ -17,14 +17,14 @@
<item>
<widget class="QCheckBox" name="checkEnableAdblock">
<property name="text">
- <string>&amp;Enable AdBlock</string>
+ <string>&amp;Enable Ad Block</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkHideAds">
<property name="text">
- <string>&amp;Hide filtered Elements</string>
+ <string>&amp;Hide filtered elements</string>
</property>
</widget>
</item>
@@ -128,6 +128,9 @@
</item>
<item>
<widget class="QToolButton" name="insertButton">
+ <property name="toolTip">
+ <string>Add filter expression</string>
+ </property>
<property name="text">
<string>...</string>
</property>
@@ -135,6 +138,9 @@
</item>
<item>
<widget class="QToolButton" name="removeButton">
+ <property name="toolTip">
+ <string>Remove filter expression</string>
+ </property>
<property name="text">
<string>...</string>
</property>
diff --git a/src/settings/settings_appearance.ui b/src/settings/settings_appearance.ui
new file mode 100644
index 00000000..7ec23484
--- /dev/null
+++ b/src/settings/settings_appearance.ui
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>appearance</class>
+ <widget class="QWidget" name="appearance">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>351</width>
+ <height>455</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Appearance</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Fonts</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Standard font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KFontComboBox" name="standardFontChooser"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Fixed font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="KFontComboBox" name="fixedFontChooser"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Serif font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="KFontComboBox" name="serifFontChooser"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Sans Serif font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="KFontComboBox" name="sansSerifFontChooser"/>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Cursive font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="KFontComboBox" name="cursiveFontChooser"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Fantasy font:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="KFontComboBox" name="fantasyFontChooser"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Default font size:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KIntNumInput" name="kcfg_defaultFontSize"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Minimal font size:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="KIntNumInput" name="kcfg_minFontSize"/>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>User Style Sheet</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="minimumSize">
+ <size>
+ <width>150</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>User CSS path:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="KUrlRequester" name="kcfg_userCSS">
+ <property name="filter">
+ <string>*.css</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_5">
+ <property name="title">
+ <string>Misc</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="kcfg_autoScroll">
+ <property name="toolTip">
+ <string>Toggle automatic scrolling on middle click in a web page</string>
+ </property>
+ <property name="text">
+ <string>Auto-scroll on middle-click</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>KUrlRequester</class>
+ <extends>QFrame</extends>
+ <header>kurlrequester.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KFontComboBox</class>
+ <extends>KComboBox</extends>
+ <header>kfontcombobox.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KComboBox</class>
+ <extends>QComboBox</extends>
+ <header>kcombobox.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KIntNumInput</class>
+ <extends>QWidget</extends>
+ <header>knuminput.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/settings/settings_fonts.ui b/src/settings/settings_fonts.ui
deleted file mode 100644
index 52c7872e..00000000
--- a/src/settings/settings_fonts.ui
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>fonts</class>
- <widget class="QWidget" name="fonts">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>414</width>
- <height>298</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Appearance</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Fonts</string>
- </property>
- <layout class="QFormLayout" name="formLayout">
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Standard font:</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="KFontComboBox" name="kcfg_standardFont">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Fixed font:</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="KFontComboBox" name="kcfg_fixedFont">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>Dimension</string>
- </property>
- <layout class="QFormLayout" name="formLayout_2">
- <item row="0" column="0">
- <widget class="QLabel" name="label_3">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Font size:</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="kcfg_fontSize">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_4">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Minimal font size:</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QSpinBox" name="kcfg_minFontSize">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>KFontComboBox</class>
- <extends>KComboBox</extends>
- <header>kfontcombobox.h</header>
- </customwidget>
- <customwidget>
- <class>KComboBox</class>
- <extends>QComboBox</extends>
- <header>kcombobox.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/settings/settings_general.ui b/src/settings/settings_general.ui
index c0060d76..92e409a2 100644
--- a/src/settings/settings_general.ui
+++ b/src/settings/settings_general.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>552</width>
- <height>512</height>
+ <width>464</width>
+ <height>462</height>
</rect>
</property>
<property name="windowTitle">
@@ -141,7 +141,7 @@
<item row="0" column="1">
<widget class="QCheckBox" name="kcfg_useNewTabPage">
<property name="text">
- <string>Use New Tab Page</string>
+ <string>Use the New Tab Page as home page</string>
</property>
</widget>
</item>
@@ -244,25 +244,6 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupBox_5">
- <property name="title">
- <string>Navigation</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QCheckBox" name="kcfg_disableAutoScroll">
- <property name="toolTip">
- <string>Disable automatic scrolling on middle click in a web page</string>
- </property>
- <property name="text">
- <string>Disable auto scrolling</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
diff --git a/src/settings/settings_tabs.ui b/src/settings/settings_tabs.ui
index 8bc3ae70..138b5b5c 100644
--- a/src/settings/settings_tabs.ui
+++ b/src/settings/settings_tabs.ui
@@ -73,7 +73,7 @@
</size>
</property>
<property name="text">
- <string>New tab page starts with:</string>
+ <string>New Tab Page starts with:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
diff --git a/src/settings/settings_webkit.ui b/src/settings/settings_webkit.ui
index e87e3fec..58fbe459 100644
--- a/src/settings/settings_webkit.ui
+++ b/src/settings/settings_webkit.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>643</width>
- <height>560</height>
+ <width>480</width>
+ <height>377</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -192,38 +192,6 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>User Style Sheet</string>
- </property>
- <layout class="QFormLayout" name="formLayout_2">
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>User CSS path:</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="KUrlRequester" name="kcfg_userCSS">
- <property name="filter">
- <string>*.css</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -240,11 +208,6 @@
</widget>
<customwidgets>
<customwidget>
- <class>KUrlRequester</class>
- <extends>QFrame</extends>
- <header>kurlrequester.h</header>
- </customwidget>
- <customwidget>
<class>KComboBox</class>
<extends>QComboBox</extends>
<header>kcombobox.h</header>
diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp
index 3f701c5b..27d40467 100644
--- a/src/settings/settingsdialog.cpp
+++ b/src/settings/settingsdialog.cpp
@@ -36,15 +36,15 @@
#include "application.h"
#include "mainwindow.h"
#include "webtab.h"
-#include "adblockwidget.h"
-#include "networkwidget.h"
#include "searchengine.h"
-//Ui Includes
-#include "ui_settings_general.h"
-#include "ui_settings_tabs.h"
-#include "ui_settings_fonts.h"
-#include "ui_settings_webkit.h"
+// Widget Includes
+#include "adblockwidget.h"
+#include "networkwidget.h"
+#include "generalwidget.h"
+#include "appearancewidget.h"
+#include "webkitwidget.h"
+#include "tabswidget.h"
// KDE Includes
#include <KConfig>
@@ -61,76 +61,79 @@
class Private
{
private:
+ Private(SettingsDialog *parent);
- Ui::general generalUi;
- Ui::tabs tabsUi;
- Ui::fonts fontsUi;
- Ui::webkit webkitUi;
-
- AdBlockWidget *adBlockWidg;
+private:
+ GeneralWidget *generalWidg;
+ TabsWidget *tabsWidg;
+ AppearanceWidget *appearanceWidg;
+ WebKitWidget *webkitWidg;
NetworkWidget *networkWidg;
-
+ AdBlockWidget *adBlockWidg;
+
KCModuleProxy *ebrowsingModule;
KShortcutsEditor *shortcutsEditor;
- Private(SettingsDialog *parent);
-
friend class SettingsDialog;
};
Private::Private(SettingsDialog *parent)
{
- QWidget *widget;
KPageWidgetItem *pageItem;
- widget = new QWidget;
- generalUi.setupUi(widget);
- widget->layout()->setMargin(0);
- pageItem = parent->addPage(widget , i18n("General"));
+ // -- 1
+ generalWidg = new GeneralWidget(parent);
+ generalWidg->layout()->setMargin(0);
+ pageItem = parent->addPage(generalWidg, i18n("General"));
pageItem->setIcon(KIcon("rekonq"));
- widget = new QWidget;
- tabsUi.setupUi(widget);
- widget->layout()->setMargin(0);
- pageItem = parent->addPage(widget , i18n("Tabs"));
+ // -- 2
+ tabsWidg = new TabsWidget(parent);
+ tabsWidg->layout()->setMargin(0);
+ pageItem = parent->addPage(tabsWidg, i18n("Tabs"));
pageItem->setIcon(KIcon("tab-duplicate"));
-
- widget = new QWidget;
- fontsUi.setupUi(widget);
- widget->layout()->setMargin(0);
- pageItem = parent->addPage(widget , i18n("Fonts"));
+
+ // -- 3
+ appearanceWidg = new AppearanceWidget(parent);
+ appearanceWidg->layout()->setMargin(0);
+ pageItem = parent->addPage(appearanceWidg, i18n("Appearance"));
pageItem->setIcon(KIcon("preferences-desktop-font"));
-
- widget = new QWidget;
- webkitUi.setupUi(widget);
- widget->layout()->setMargin(0);
- pageItem = parent->addPage(widget , i18n("WebKit"));
+
+ // -- 4
+ webkitWidg = new WebKitWidget(parent);
+ webkitWidg->layout()->setMargin(0);
+ pageItem = parent->addPage(webkitWidg, i18n("WebKit"));
QString webkitIconPath = KStandardDirs::locate("appdata", "pics/webkit-icon.png");
KIcon webkitIcon = KIcon(QIcon(webkitIconPath));
pageItem->setIcon(webkitIcon);
-
+
+ // -- 5
networkWidg = new NetworkWidget(parent);
networkWidg->layout()->setMargin(0);
pageItem = parent->addPage(networkWidg , i18n("Network"));
pageItem->setIcon(KIcon("preferences-system-network"));
+ // -- 6
adBlockWidg = new AdBlockWidget(parent);
adBlockWidg->layout()->setMargin(0);
pageItem = parent->addPage(adBlockWidg , i18n("Ad Block"));
pageItem->setIcon(KIcon("preferences-web-browser-adblock"));
+ // -- 7
shortcutsEditor = new KShortcutsEditor(Application::instance()->mainWindow()->actionCollection(), parent);
pageItem = parent->addPage(shortcutsEditor , i18n("Shortcuts"));
pageItem->setIcon(KIcon("configure-shortcuts"));
+ // -- 8
KCModuleInfo ebrowsingInfo("ebrowsing.desktop");
ebrowsingModule = new KCModuleProxy(ebrowsingInfo, parent);
pageItem = parent->addPage(ebrowsingModule, i18n(ebrowsingInfo.moduleName().toLocal8Bit()));
pageItem->setIcon(KIcon(ebrowsingInfo.icon()));
- // WARNING remember wheh changing here that the smallest netbooks
+ // WARNING
+ // remember wheh changing here that the smallest netbooks
// have a 1024x576 resolution. So DON'T bother that limits!!
parent->setMinimumSize(700, 525);
}
@@ -148,25 +151,20 @@ SettingsDialog::SettingsDialog(QWidget *parent)
setModal(true);
readConfig();
-
- connect(d->generalUi.setHomeToCurrentPageButton, SIGNAL(clicked()), this, SLOT(setHomeToCurrentPage()));
-
- // new tab page
- disableHomeSettings(ReKonfig::useNewTabPage());
- connect(d->generalUi.kcfg_useNewTabPage, SIGNAL(toggled(bool)), this, SLOT(disableHomeSettings(bool)));
// update buttons
- connect(d->adBlockWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
+ connect(d->generalWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
+ connect(d->tabsWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
+ connect(d->appearanceWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
+ connect(d->webkitWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
connect(d->networkWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
+ connect(d->adBlockWidg, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
connect(d->ebrowsingModule, SIGNAL(changed(bool)), this, SLOT(updateButtons()));
-
connect(d->shortcutsEditor, SIGNAL(keyChange()), this, SLOT(updateButtons()));
// save settings
connect(this, SIGNAL(applyClicked()), this, SLOT(saveSettings()));
connect(this, SIGNAL(okClicked()), this, SLOT(saveSettings()));
-
- setWebSettingsToolTips();
}
@@ -176,29 +174,9 @@ SettingsDialog::~SettingsDialog()
}
-void SettingsDialog::setWebSettingsToolTips()
-{
- d->webkitUi.kcfg_autoLoadImages->setToolTip(i18n("Specifies whether images are automatically loaded in web pages."));
- d->webkitUi.kcfg_dnsPrefetch->setToolTip(i18n("Specifies whether WebKit will try to prefetch DNS entries to speed up browsing."));
- d->webkitUi.kcfg_javascriptEnabled->setToolTip(i18n("Enables the execution of JavaScript programs."));
- d->webkitUi.kcfg_javaEnabled->setToolTip(i18n("Enables support for Java applets."));
- d->webkitUi.kcfg_pluginsEnabled->setToolTip(i18n("Enables support for plugins in web pages."));
- d->webkitUi.kcfg_javascriptCanOpenWindows->setToolTip(i18n("If enabled, JavaScript programs are allowed to open new windows."));
- d->webkitUi.kcfg_javascriptCanAccessClipboard->setToolTip(i18n("If enabled, JavaScript programs are allowed to read from and to write to the clipboard."));
- d->webkitUi.kcfg_linksIncludedInFocusChain->setToolTip(i18n("If enabled, hyperlinks are included in the keyboard focus chain."));
- d->webkitUi.kcfg_zoomTextOnly->setToolTip(i18n("If enabled, the zoom factor on a frame is only applied to the text."));
- d->webkitUi.kcfg_printElementBackgrounds->setToolTip(i18n("If enabled, background colors and images are also drawn when the page is printed."));
- d->webkitUi.kcfg_offlineStorageDatabaseEnabled->setToolTip(i18n("Enables support for the HTML 5 offline storage feature."));
- d->webkitUi.kcfg_offlineWebApplicationCacheEnabled->setToolTip(i18n("Enables support for the HTML 5 web application cache feature."));
- d->webkitUi.kcfg_localStorageEnabled->setToolTip(i18n("Enables support for the HTML 5 local storage feature."));
-}
-
-
// we need this function to UPDATE the config widget data..
void SettingsDialog::readConfig()
{
- // ======= Fonts
- d->fontsUi.kcfg_fixedFont->setOnlyFixed(true);
}
@@ -209,15 +187,20 @@ void SettingsDialog::saveSettings()
return;
ReKonfig::self()->writeConfig();
- d->ebrowsingModule->save();
- d->shortcutsEditor->save();
- d->adBlockWidg->save();
+
+ d->generalWidg->save();
+ d->tabsWidg->save();
+ d->appearanceWidg->save();
+ d->webkitWidg->save();
d->networkWidg->save();
+ d->adBlockWidg->save();
+ d->shortcutsEditor->save();
+ d->ebrowsingModule->save();
+
SearchEngine::loadDefaultWS();
SearchEngine::loadDelimiter();
SearchEngine::loadFavorites();
-
updateButtons();
emit settingsChanged("ReKonfig");
}
@@ -226,27 +209,13 @@ void SettingsDialog::saveSettings()
bool SettingsDialog::hasChanged()
{
return KConfigDialog::hasChanged()
- || d->adBlockWidg->changed()
+ || d->generalWidg->changed()
+ || d->tabsWidg->changed()
+ || d->appearanceWidg->changed()
+ || d->webkitWidg->changed()
|| d->networkWidg->changed()
+ || d->adBlockWidg->changed()
|| d->ebrowsingModule->changed()
|| d->shortcutsEditor->isModified();
;
}
-
-
-void SettingsDialog::setHomeToCurrentPage()
-{
- MainWindow *mw = static_cast<MainWindow*>(parent());
- WebTab *webTab = mw->currentTab();
- if (webTab)
- {
- d->generalUi.kcfg_homePage->setText(webTab->url().prettyUrl());
- }
-}
-
-
-void SettingsDialog::disableHomeSettings(bool b)
-{
- d->generalUi.kcfg_homePage->setEnabled(!b);
- d->generalUi.setHomeToCurrentPageButton->setEnabled(!b);
-}
diff --git a/src/settings/settingsdialog.h b/src/settings/settingsdialog.h
index cade78e3..c25db74b 100644
--- a/src/settings/settingsdialog.h
+++ b/src/settings/settingsdialog.h
@@ -52,14 +52,10 @@ public:
private:
Private* const d;
- void setWebSettingsToolTips();
private slots:
void readConfig();
void saveSettings();
-
- void setHomeToCurrentPage();
- void disableHomeSettings(bool);
};
#endif // SETTINGS_DIALOG_H
diff --git a/src/settings/tabswidget.cpp b/src/settings/tabswidget.cpp
new file mode 100644
index 00000000..aa555339
--- /dev/null
+++ b/src/settings/tabswidget.cpp
@@ -0,0 +1,53 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Local Includes
+#include "tabswidget.h"
+#include "tabswidget.moc"
+
+
+TabsWidget::TabsWidget(QWidget *parent)
+ : QWidget(parent)
+ , _changed(false)
+{
+ setupUi(this);
+}
+
+
+void TabsWidget::save()
+{
+}
+
+
+bool TabsWidget::changed()
+{
+ return _changed;
+}
+
+
+void TabsWidget::hasChanged()
+{
+}
diff --git a/src/settings/tabswidget.h b/src/settings/tabswidget.h
new file mode 100644
index 00000000..f1ff8a52
--- /dev/null
+++ b/src/settings/tabswidget.h
@@ -0,0 +1,58 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef TABS_WIDGET_H
+#define TABS_WIDGET_H
+
+
+// Ui Includes
+#include "ui_settings_tabs.h"
+
+// Qt Includes
+#include <QtGui/QWidget>
+
+
+class TabsWidget : public QWidget, private Ui::tabs
+{
+ Q_OBJECT
+
+public:
+ TabsWidget(QWidget *parent = 0);
+
+ void save();
+ bool changed();
+
+signals:
+ void changed(bool);
+
+private slots:
+ void hasChanged();
+
+private:
+ bool _changed;
+};
+
+#endif // TABS_WIDGET_H
diff --git a/src/settings/webkitwidget.cpp b/src/settings/webkitwidget.cpp
new file mode 100644
index 00000000..f9d94d76
--- /dev/null
+++ b/src/settings/webkitwidget.cpp
@@ -0,0 +1,71 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Local Includes
+#include "webkitwidget.h"
+#include "webkitwidget.moc"
+
+
+WebKitWidget::WebKitWidget(QWidget *parent)
+ : QWidget(parent)
+ , _changed(false)
+{
+ setupUi(this);
+}
+
+
+void WebKitWidget::save()
+{
+}
+
+
+bool WebKitWidget::changed()
+{
+ return _changed;
+}
+
+
+void WebKitWidget::hasChanged()
+{
+}
+
+
+void WebKitWidget::setWebSettingsToolTips()
+{
+ kcfg_autoLoadImages->setToolTip(i18n("Specifies whether images are automatically loaded in web pages."));
+ kcfg_dnsPrefetch->setToolTip(i18n("Specifies whether WebKit will try to prefetch DNS entries to speed up browsing."));
+ kcfg_javascriptEnabled->setToolTip(i18n("Enables the execution of JavaScript programs."));
+ kcfg_javaEnabled->setToolTip(i18n("Enables support for Java applets."));
+ kcfg_pluginsEnabled->setToolTip(i18n("Enables support for plugins in web pages."));
+ kcfg_javascriptCanOpenWindows->setToolTip(i18n("If enabled, JavaScript programs are allowed to open new windows."));
+ kcfg_javascriptCanAccessClipboard->setToolTip(i18n("If enabled, JavaScript programs are allowed to read from and to write to the clipboard."));
+ kcfg_linksIncludedInFocusChain->setToolTip(i18n("If enabled, hyperlinks are included in the keyboard focus chain."));
+ kcfg_zoomTextOnly->setToolTip(i18n("If enabled, the zoom factor on a frame is only applied to the text."));
+ kcfg_printElementBackgrounds->setToolTip(i18n("If enabled, background colors and images are also drawn when the page is printed."));
+ kcfg_offlineStorageDatabaseEnabled->setToolTip(i18n("Enables support for the HTML 5 offline storage feature."));
+ kcfg_offlineWebApplicationCacheEnabled->setToolTip(i18n("Enables support for the HTML 5 web application cache feature."));
+ kcfg_localStorageEnabled->setToolTip(i18n("Enables support for the HTML 5 local storage feature."));
+}
diff --git a/src/settings/webkitwidget.h b/src/settings/webkitwidget.h
new file mode 100644
index 00000000..b1eb8d76
--- /dev/null
+++ b/src/settings/webkitwidget.h
@@ -0,0 +1,60 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef WEBKIT_WIDGET_H
+#define WEBKIT_WIDGET_H
+
+
+// Ui Includes
+#include "ui_settings_webkit.h"
+
+// Qt Includes
+#include <QtGui/QWidget>
+
+
+class WebKitWidget : public QWidget, private Ui::webkit
+{
+ Q_OBJECT
+
+public:
+ WebKitWidget(QWidget *parent = 0);
+
+ void save();
+ bool changed();
+
+signals:
+ void changed(bool);
+
+private slots:
+ void hasChanged();
+
+private:
+ void setWebSettingsToolTips();
+
+ bool _changed;
+};
+
+#endif // WEBKIT_WIDGET_H
diff --git a/src/tabbar.cpp b/src/tabbar.cpp
index 1274d813..5d6b7b2c 100644
--- a/src/tabbar.cpp
+++ b/src/tabbar.cpp
@@ -186,6 +186,11 @@ void TabBar::showTabPreview(int tab)
void TabBar::mouseMoveEvent(QMouseEvent *event)
{
+ if (count() == 1)
+ {
+ return;
+ }
+
if (event->buttons() & Qt::LeftButton)
{
// hide addNewTabButton when moving tabs
diff --git a/src/urlbar/completionwidget.cpp b/src/urlbar/completionwidget.cpp
index acec2d4f..a71e9611 100644
--- a/src/urlbar/completionwidget.cpp
+++ b/src/urlbar/completionwidget.cpp
@@ -79,7 +79,7 @@ void CompletionWidget::insertSearchList(const UrlSearchList &list, const QString
{
ListItem *suggestion = ListItemFactory::create(item, text, this);
suggestion->setBackgroundRole(i % 2 ? QPalette::AlternateBase : QPalette::Base);
- connect(suggestion, SIGNAL(itemClicked(ListItem *, Qt::MouseButton)), this, SLOT(itemChosen(ListItem *, Qt::MouseButton)));
+ connect(suggestion, SIGNAL(itemClicked(ListItem *, Qt::MouseButton, Qt::KeyboardModifiers)), this, SLOT(itemChosen(ListItem *, Qt::MouseButton, Qt::KeyboardModifiers)));
connect(this, SIGNAL(nextItemSubChoice()), suggestion, SLOT(nextItemSubChoice()));
suggestion->setObjectName(QString::number(i++));
layout()->addWidget(suggestion);
@@ -270,9 +270,9 @@ void CompletionWidget::setVisible(bool visible)
}
-void CompletionWidget::itemChosen(ListItem *item, Qt::MouseButton button)
+void CompletionWidget::itemChosen(ListItem *item, Qt::MouseButton button, Qt::KeyboardModifiers modifier)
{
- if (button == Qt::MidButton)
+ if (button == Qt::MidButton || modifier == Qt::ControlModifier)
emit chosenUrl(item->url(), Rekonq::NewCurrentTab);
else
emit chosenUrl(item->url(), Rekonq::CurrentTab);
diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h
index 90cd2b23..18212d0f 100644
--- a/src/urlbar/completionwidget.h
+++ b/src/urlbar/completionwidget.h
@@ -64,7 +64,7 @@ public:
void suggestUrls(const QString &text);
private slots:
- void itemChosen(ListItem *item, Qt::MouseButton = Qt::LeftButton);
+ void itemChosen(ListItem *item, Qt::MouseButton = Qt::LeftButton, Qt::KeyboardModifiers = Qt::NoModifier);
signals:
void chosenUrl(const KUrl &, Rekonq::OpenType);
diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp
index 13535a74..78a929a8 100644
--- a/src/urlbar/listitem.cpp
+++ b/src/urlbar/listitem.cpp
@@ -129,7 +129,7 @@ void ListItem::leaveEvent(QEvent *e)
void ListItem::mousePressEvent(QMouseEvent *e)
{
- emit itemClicked(this, e->button());
+ emit itemClicked(this, e->button(), e->modifiers());
QWidget::mousePressEvent(e);
}
@@ -220,7 +220,16 @@ PreviewListItem::PreviewListItem(const UrlSearchItem &item, const QString &text,
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->setMargin(0);
- vLayout->addWidget(new TextLabel(item.title, text, this));
+
+ QString title = item.title;
+ if (title.isEmpty())
+ {
+ title = item.url.url();
+ title = title.remove("http://");
+ title.truncate(title.indexOf("/"));
+ }
+
+ vLayout->addWidget(new TextLabel(title, text, this));
vLayout->addWidget(new TextLabel("<i>" + item.url.url() + "</i>", text, this));
hLayout->addLayout(vLayout);
diff --git a/src/urlbar/listitem.h b/src/urlbar/listitem.h
index c26a1893..dcb4f76d 100644
--- a/src/urlbar/listitem.h
+++ b/src/urlbar/listitem.h
@@ -66,7 +66,7 @@ public slots:
virtual void nextItemSubChoice();
signals:
- void itemClicked(ListItem *item, Qt::MouseButton);
+ void itemClicked(ListItem *item, Qt::MouseButton, Qt::KeyboardModifiers);
protected:
virtual void paintEvent(QPaintEvent *event);
diff --git a/src/urlbar/rsswidget.cpp b/src/urlbar/rsswidget.cpp
index 35095c07..6cd63b95 100644
--- a/src/urlbar/rsswidget.cpp
+++ b/src/urlbar/rsswidget.cpp
@@ -115,9 +115,12 @@ RSSWidget::~RSSWidget()
void RSSWidget::showAt(const QPoint &pos)
{
+ adjustSize();
+
QPoint p;
- p.setX(pos.x() - 200);
+ p.setX(pos.x() - width());
p.setY(pos.y() + 10);
+
move(p);
show();
}
@@ -160,7 +163,7 @@ void RSSWidget::addWithAkregator(const QString &url)
if (!reply.isValid())
{
- KMessageBox::error(0, QString(i18n("Could not add stream to akregator, Please add it manually :")
+ KMessageBox::error(0, QString(i18n("Could not add feed to Akregator. Please add it manually:")
+ "<br /><br /> <a href=\"" + url + "\">" + url + "</a>"));
}
}
diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp
index 6ec461a2..b46eccdb 100644
--- a/src/urlbar/urlbar.cpp
+++ b/src/urlbar/urlbar.cpp
@@ -91,7 +91,7 @@ UrlBar::UrlBar(QWidget *parent)
setUrlDropsEnabled(true);
// tooltip
- setToolTip(i18n("Type here to search your bookmarks, history and the web.."));
+ setToolTip(i18n("Type here to search your bookmarks, history and the web..."));
// accept focus, via tabbing, clicking & wheeling
setFocusPolicy(Qt::WheelFocus);
@@ -101,6 +101,8 @@ UrlBar::UrlBar(QWidget *parent)
_tab = qobject_cast<WebTab *>(parent);
+ connect(_tab, SIGNAL(loadProgressing()), this, SLOT(update()));
+
connect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setQUrl(const QUrl &)));
connect(_tab->view(), SIGNAL(loadFinished(bool)), this, SLOT(loadFinished()));
connect(_tab->view(), SIGNAL(loadStarted()), this, SLOT(clearRightIcons()));
@@ -152,7 +154,7 @@ void UrlBar::activated(const KUrl& url, Rekonq::OpenType type)
void UrlBar::paintEvent(QPaintEvent *event)
-{
+{
QColor backgroundColor;
if (_privateMode)
{
@@ -177,10 +179,13 @@ void UrlBar::paintEvent(QPaintEvent *event)
}
else
{
- QColor loadingColor = QColor(116, 192, 250);
+ // NOTE: I chose this instead of the old QColor(116, 192, 250)
+ // to try respecting style colors
+ QColor loadingColor = Application::palette().color(QPalette::ToolTipBase);
- QLinearGradient gradient(0, 0, width(), 0);
+ QLinearGradient gradient( QPoint(0, 0), QPoint(width(), height()) );
gradient.setColorAt(0, loadingColor);
+ gradient.setColorAt(((double)progr) / 100 - .000001, loadingColor);
gradient.setColorAt(((double)progr) / 100, backgroundColor);
p.setBrush(QPalette::Base, gradient);
}
@@ -198,7 +203,7 @@ void UrlBar::paintEvent(QPaintEvent *event)
painter.setPen(Qt::gray);
painter.drawText(textRect,
Qt::AlignVCenter | Qt::AlignCenter,
- i18n("Type here to search your bookmarks, history and the web..")
+ i18n("Type here to search your bookmarks, history and the web...")
);
}
}
diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp
index 21e3fe9c..7333e305 100644
--- a/src/urlbar/urlresolver.cpp
+++ b/src/urlbar/urlresolver.cpp
@@ -74,7 +74,7 @@ UrlResolver::UrlResolver(const QString &typedUrl)
{
kDebug() << "browse regexp empty. Setting value..";
- QString protocol = "^(http://|https://|file://|ftp://)";
+ QString protocol = "^(http://|https://|file://|ftp://|man:|info:)";
QString local = "^/";
@@ -91,7 +91,7 @@ UrlResolver::UrlResolver(const QString &typedUrl)
"y[etu]|z[amw]|aero|arpa|biz|com|coop|edu|info|int|gov|mil|museum|name|net|org|"\
"pro)";
- _browseRegexp = QRegExp("(" + protocol + ")|(" + local + ")|(" + address + ")|(" + ipv6 + ")|(" + ipv4 +")");
+ _browseRegexp = QRegExp('(' + protocol + ")|(" + local + ")|(" + address + ")|(" + ipv6 + ")|(" + ipv4 +')');
}
}
@@ -141,12 +141,23 @@ UrlSearchList UrlResolver::orderedSearchItems()
int checkPoint = 9 - firstResults;
UrlSearchList historyList = historyResolution();
+ UrlSearchItem privileged = privilegedItem(&historyList);
int historyResults = historyList.count();
+
+ UrlSearchList bookmarksList = bookmarksResolution();
+ if (privileged.type == UrlSearchItem::Undefined)
+ {
+ privileged = privilegedItem(&bookmarksList);
+ }
+
+ if (privileged.type != UrlSearchItem::Undefined)
+ {
+ list.insert(0,privileged);
+ }
- UrlSearchList bookmarksList = bookmarksResolution();
- int bookmarkResults = bookmarksList.count();
+ int bookmarksResults = bookmarksList.count();
- if (historyResults + bookmarkResults > checkPoint)
+ if (historyResults + bookmarksResults > checkPoint)
{
historyList = historyList.mid(0, 3);
bookmarksList = bookmarksList.mid(0, 3);
@@ -178,8 +189,6 @@ UrlSearchList UrlResolver::orderedSearchItems()
list << i;
}
- list = placeTypedDomaineNameOnTop(list);
-
return list;
}
@@ -246,22 +255,19 @@ UrlSearchList UrlResolver::bookmarksResolution()
}
-UrlSearchList UrlResolver::placeTypedDomaineNameOnTop(UrlSearchList list)
+UrlSearchItem UrlResolver::privilegedItem(UrlSearchList* list)
{
- int i = 0;
- bool found = false;
-
- while(i<list.count() && !found)
+ int i=0;
+ while(i<list->count())
{
- UrlSearchItem item = list.at(i);
- if (item.url.url().contains("."+_typedString+".") || item.url.url().contains("/"+_typedString+"."))
+ UrlSearchItem item = list->at(i);
+ kDebug() << item.url.host();
+ if (item.url.host().contains( _typedString + QL1C('.') ) )
{
- list.removeAt(i);
- list.insert(0,item);
- found = true;
+ list->removeAt(i);
+ return item;
}
i++;
}
-
- return list;
+ return UrlSearchItem();
}
diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h
index 0c7df8c8..2249ea32 100644
--- a/src/urlbar/urlresolver.h
+++ b/src/urlbar/urlresolver.h
@@ -45,6 +45,7 @@ public:
enum types
{
+ Undefined = 0x00000000,
Search = 0x00000001,
Browse = 0x00000010,
History = 0x00000100,
@@ -54,7 +55,15 @@ public:
int type;
KUrl url;
QString title;
-
+
+ UrlSearchItem(const UrlSearchItem &item)
+ : type(item.type), url(item.url), title(item.title)
+ {};
+
+ UrlSearchItem()
+ : type(UrlSearchItem::Undefined), url(KUrl()), title("")
+ {};
+
UrlSearchItem(const int &_type, const KUrl &_url, const QString &_title = QString())
: type(_type), url(_url), title(_title)
{};
@@ -82,7 +91,7 @@ private:
UrlSearchList historyResolution();
UrlSearchList qurlFromUserInputResolution();
UrlSearchList bookmarksResolution();
- UrlSearchList placeTypedDomaineNameOnTop(UrlSearchList list);
+ UrlSearchItem privilegedItem(UrlSearchList* list);
static QRegExp _browseRegexp;
};
diff --git a/src/webpage.cpp b/src/webpage.cpp
index 9da75a91..4a8c8b6b 100644
--- a/src/webpage.cpp
+++ b/src/webpage.cpp
@@ -97,6 +97,75 @@ static bool domainSchemeMatch(const QUrl& u1, const QUrl& u2)
}
+// NOTE
+// This is heavily based on the one from KdeWebKit and
+// extended to provide the extra functionality we need:
+// 1. KGet Integration
+// 2. Save downloads history
+static bool downloadResource (const KUrl& srcUrl, const KIO::MetaData& metaData = KIO::MetaData(),
+ QWidget* parent = 0, const QString& suggestedName = QString())
+{
+ KUrl destUrl;
+
+ int result = KIO::R_OVERWRITE;
+ const QUrl fileName ((suggestedName.isEmpty() ? srcUrl.fileName() : suggestedName));
+
+ do
+ {
+ destUrl = KFileDialog::getSaveFileName(fileName, QString(), parent);
+
+ if(destUrl.isEmpty())
+ return false;
+
+ if (destUrl.isLocalFile())
+ {
+ QFileInfo finfo (destUrl.toLocalFile());
+ if (finfo.exists())
+ {
+ QDateTime now = QDateTime::currentDateTime();
+ KIO::RenameDialog dlg (parent, i18n("Overwrite File?"), srcUrl, destUrl,
+ KIO::RenameDialog_Mode(KIO::M_OVERWRITE | KIO::M_SKIP),
+ -1, finfo.size(),
+ now.toTime_t(), finfo.created().toTime_t(),
+ now.toTime_t(), finfo.lastModified().toTime_t());
+ result = dlg.exec();
+ }
+ }
+ }
+ while (result == KIO::R_CANCEL && destUrl.isValid());
+
+ // Save download on history manager
+ Application::historyManager()->addDownload(srcUrl.pathOrUrl() , destUrl.pathOrUrl());
+
+ if (ReKonfig::kgetDownload())
+ {
+ //KGet integration:
+ if (!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget"))
+ {
+ KToolInvocation::kdeinitExecWait("kget");
+ }
+ QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main");
+ if (kget.isValid())
+ {
+ kget.call("addTransfer", srcUrl.prettyUrl(), destUrl.prettyUrl(), true);
+ return true;
+ }
+ return false;
+ }
+
+ KIO::Job *job = KIO::file_copy(srcUrl, destUrl, -1, KIO::Overwrite);
+
+ if (!metaData.isEmpty())
+ job->setMetaData(metaData);
+
+ job->addMetaData(QL1S("MaxCacheSize"), QL1S("0")); // Don't store in http cache.
+ job->addMetaData(QL1S("cache"), QL1S("cache")); // Use entry from cache if available.
+ job->uiDelegate()->setAutoErrorHandlingEnabled(true);
+ return true;
+
+}
+
+
// ---------------------------------------------------------------------------------
@@ -148,8 +217,6 @@ WebPage::~WebPage()
bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type)
{
_isOnRekonqPage = false;
- kDebug() << "ACCEPT_NAVIGATION false";
-
_loadingUrl = request.url();
KIO::AccessManager *manager = qobject_cast<KIO::AccessManager*>(networkAccessManager());
@@ -218,8 +285,6 @@ bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &r
WebPage *WebPage::createWindow(QWebPage::WebWindowType type)
{
- kDebug() << "WebPage createWindow slot";
-
// added to manage web modal dialogs
if (type == QWebPage::WebModalDialog)
kDebug() << "Modal Dialog";
@@ -250,115 +315,151 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply)
if (_protHandler.postHandling(reply->request(), mainFrame()))
return;
- if (reply->error() == QNetworkReply::NoError)
- {
- KUrl replyUrl = reply->url();
+ if (reply->error() != QNetworkReply::NoError)
+ return;
+
+ KUrl replyUrl = reply->url();
- // HACK -------------------------------------------
- QString mimeType;
- QString suggestedFileName;
-
- QString app = reply->header(QNetworkRequest::ContentTypeHeader).toString();
- QStringList headerList = app.split( ';' );
-
- kDebug() << headerList;
- kDebug() << headerList.count();
-
- if(headerList.count() > 0)
+ // HACK -------------------------------------------
+ // This is done to fix #231204 && #212808
+
+ QString mimeType;
+ QString suggestedFileName;
+
+ QString app = reply->header(QNetworkRequest::ContentTypeHeader).toString();
+ QStringList headerList = app.split( ';' );
+
+ if(headerList.count() > 0)
+ {
+ mimeType = headerList.takeFirst().trimmed();
+ Q_FOREACH(const QString &head, headerList)
{
- mimeType = headerList.takeFirst().trimmed();
- Q_FOREACH(const QString &head, headerList)
+ if( head.contains( QL1S("name") ) )
{
- if( head.contains( QL1S("name") ) )
- {
- // this is not so sure.. :)
- suggestedFileName = head;
- suggestedFileName = suggestedFileName.remove( QL1S("name=") );
- suggestedFileName = suggestedFileName.remove( '"' );
- suggestedFileName = suggestedFileName.trimmed();
- break;
- }
+ // this is not so sure.. :)
+ suggestedFileName = head;
+ suggestedFileName = suggestedFileName.remove( QL1S("name=") );
+ suggestedFileName = suggestedFileName.remove( '"' );
+ suggestedFileName = suggestedFileName.trimmed();
+ break;
}
}
- else
+ }
+ else
+ {
+ mimeType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
+ }
+
+ // NOTE
+ // This part has been copied from KWebPage::downloadResponse code
+ if (reply->hasRawHeader("Content-Disposition"))
+ {
+ KIO::MetaData metaData = reply->attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap();
+ if (metaData.value(QL1S("content-disposition-type")).compare(QL1S("attachment"), Qt::CaseInsensitive) == 0)
{
- mimeType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
+ suggestedFileName = metaData.value(QL1S("content-disposition-filename"));
+ }
+ else
+ {
+ const QString value = QL1S(reply->rawHeader("Content-Disposition").simplified());
+ if (value.startsWith(QL1S("attachment"), Qt::CaseInsensitive))
+ {
+ const int length = value.size();
+ int pos = value.indexOf(QL1S("filename"), 0, Qt::CaseInsensitive);
+ if (pos > -1)
+ {
+ pos += 9;
+ while (pos < length && (value.at(pos) == QL1C(' ') || value.at(pos) == QL1C('=') || value.at(pos) == QL1C('"')))
+ pos++;
+
+ int endPos = pos;
+ while (endPos < length && value.at(endPos) != QL1C('"') && value.at(endPos) != QL1C(';'))
+ endPos++;
+
+ if (endPos > pos)
+ {
+ suggestedFileName = value.mid(pos, (endPos-pos)).trimmed();
+ }
+ }
+ }
}
- // ------------------------------------------------
-
- KService::Ptr appService = KMimeTypeTrader::self()->preferredService(mimeType);
+ }
+
+ kDebug() << "Detected MimeType = " << mimeType;
+ kDebug() << "Suggested File Name = " << suggestedFileName;
+ // ------------------------------------------------
+
+ KService::Ptr appService = KMimeTypeTrader::self()->preferredService(mimeType);
- bool isLocal = replyUrl.isLocalFile();
+ bool isLocal = replyUrl.isLocalFile();
- if (appService.isNull()) // no service can handle this. We can just download it..
- {
- kDebug() << "no service can handle this. We can just download it..";
+ if (appService.isNull()) // no service can handle this. We can just download it..
+ {
+ kDebug() << "no service can handle this. We can just download it..";
- isLocal
- ? KMessageBox::sorry(view(), i18n("No service can handle this :("))
- : downloadThings(reply->request(), suggestedFileName);
+ isLocal
+ ? KMessageBox::sorry(view(), i18n("No service can handle this :("))
+ : downloadReply(reply, suggestedFileName);
- return;
- }
-
- if (!isLocal)
- {
+ return;
+ }
- KParts::BrowserOpenOrSaveQuestion dlg(Application::instance()->mainWindow(), replyUrl, mimeType);
- if(!suggestedFileName.isEmpty())
- dlg.setSuggestedFileName(suggestedFileName);
-
- switch (dlg.askEmbedOrSave())
- {
- case KParts::BrowserOpenOrSaveQuestion::Save:
- kDebug() << "service handling: download!";
- downloadThings(reply->request(), suggestedFileName);
- return;
+ if (!isLocal)
+ {
- case KParts::BrowserOpenOrSaveQuestion::Cancel:
- return;
+ KParts::BrowserOpenOrSaveQuestion dlg(Application::instance()->mainWindow(), replyUrl, mimeType);
+ if(!suggestedFileName.isEmpty())
+ dlg.setSuggestedFileName(suggestedFileName);
+
+ switch (dlg.askEmbedOrSave())
+ {
+ case KParts::BrowserOpenOrSaveQuestion::Save:
+ kDebug() << "user choice: no services, just download!";
+ downloadReply(reply, suggestedFileName);
+ return;
- default: // non extant case
- break;
- }
- }
+ case KParts::BrowserOpenOrSaveQuestion::Cancel:
+ return;
- // case KParts::BrowserRun::Embed
- KService::List partServices = KMimeTypeTrader::self()->query(mimeType, QL1S("KParts/ReadOnlyPart"));
- if (partServices.count() > 0)
- {
- QString p = replyUrl.pathOrUrl();
-
- // A part can handle this. Embed it!
- QString html;
- html += "<html>";
- html += "<head>";
- html += "<title>";
- html += p;
- html += "</title>";
- html += "<style type=\"text/css\">";
- html += "* { border: 0; padding: 0; margin: 0; }";
- html += "</style>";
- html += "</head>";
- html += "<body>";
- html += "<object type=\"" + mimeType + "\" data=\"" + p + "\" width=\"100%\" height=\"100%\" />";
- html += "</body>";
- html += "</html>";
-
- mainFrame()->setHtml(html);
- _isOnRekonqPage = true;
- kDebug() << "EMBED true";
- Application::instance()->mainWindow()->mainView()->urlBar()->setQUrl(replyUrl);
- Application::instance()->mainWindow()->updateActions();
- }
- else
- {
- // No parts, just app services. Load it!
- KRun::run(*appService, replyUrl, 0);
+ default: // non extant case
+ break;
}
+ }
- return;
+ // case KParts::BrowserRun::Embed
+ KService::List partServices = KMimeTypeTrader::self()->query(mimeType, QL1S("KParts/ReadOnlyPart"));
+ if (partServices.count() > 0)
+ {
+ QString p = replyUrl.pathOrUrl();
+
+ // A part can handle this. Embed it!
+ QString html;
+ html += "<html>";
+ html += "<head>";
+ html += "<title>";
+ html += p;
+ html += "</title>";
+ html += "<style type=\"text/css\">";
+ html += "* { border: 0; padding: 0; margin: 0; }";
+ html += "</style>";
+ html += "</head>";
+ html += "<body>";
+ html += "<object type=\"" + mimeType + "\" data=\"" + p + "\" width=\"100%\" height=\"100%\" />";
+ html += "</body>";
+ html += "</html>";
+
+ mainFrame()->setHtml(html);
+ _isOnRekonqPage = true;
+ Application::instance()->mainWindow()->mainView()->urlBar()->setQUrl(replyUrl);
+ Application::instance()->mainWindow()->updateActions();
}
+ else
+ {
+ // No parts, just app services. Load it!
+ KRun::run(*appService, replyUrl, 0);
+ }
+
+ return;
}
@@ -392,7 +493,7 @@ void WebPage::manageNetworkErrors(QNetworkReply *reply)
&& !domainSchemeMatch(reply->url(), _sslInfo.url())
)
{
- //kDebug() << "Reseting cached SSL info...";
+ // Reseting cached SSL info...
_sslInfo = WebSslInfo();
}
@@ -410,34 +511,37 @@ void WebPage::manageNetworkErrors(QNetworkReply *reply)
}
break;
+ case QNetworkReply::OperationCanceledError: // operation canceled via abort() or close() calls
+ // ignore this..
+ return;
+
case QNetworkReply::ContentAccessDenied: // access to remote content denied (similar to HTTP error 401)
kDebug() << "We (hopefully) are managing this through the adblock :)";
break;
case QNetworkReply::UnknownNetworkError: // unknown network-related error detected
- if (_protHandler.postHandling(reply->request(), mainFrame()))
- break;
+ _protHandler.postHandling(reply->request(), mainFrame());
+ return;
case QNetworkReply::ConnectionRefusedError: // remote server refused connection
case QNetworkReply::HostNotFoundError: // invalid hostname
case QNetworkReply::TimeoutError: // connection time out
- case QNetworkReply::OperationCanceledError: // operation canceled via abort() or close() calls
case QNetworkReply::ProxyNotFoundError: // invalid proxy hostname
case QNetworkReply::ContentOperationNotPermittedError: // operation requested on remote content not permitted
case QNetworkReply::ContentNotFoundError: // remote content not found on server (similar to HTTP error 404)
case QNetworkReply::ProtocolUnknownError: // Unknown protocol
case QNetworkReply::ProtocolInvalidOperationError: // requested operation is invalid for this protocol
+ kDebug() << "ERROR " << reply->error() << ": " << reply->errorString();
if (reply->url() == _loadingUrl)
{
mainFrame()->setHtml(errorPage(reply));
_isOnRekonqPage = true;
- kDebug() << "ERROR true";
}
break;
default:
- kDebug() << "Nothing to do here..";
+ // Nothing to do here..
break;
}
@@ -487,89 +591,23 @@ QString WebPage::errorPage(QNetworkReply *reply)
}
-// WARNING
-// this code is actually copied from KWebPage::downloadRequest to save
-// downloads data before. If you have some better ideas about,
-// feel free to let us know about :)
-void WebPage::downloadThings(const QNetworkRequest &request, const QString &suggestedFileName)
+void WebPage::downloadReply(const QNetworkReply *reply, const QString &suggestedFileName)
{
- KUrl destUrl;
- KUrl srcUrl(request.url());
-
- if( !ReKonfig::kgetDownload() && suggestedFileName.isEmpty() )
- {
- kDebug() << "Using KWebPage downloadRequest..";
- Application::historyManager()->addDownload(srcUrl.pathOrUrl() , destUrl.pathOrUrl());
- KWebPage::downloadRequest(request);
- return;
- }
-
- int result = KIO::R_OVERWRITE;
-
- do
- {
- QString fName = suggestedFileName.isEmpty()
- ? srcUrl.fileName()
- : suggestedFileName;
-
- destUrl = KFileDialog::getSaveFileName(fName, QString(), view());
-
- if (destUrl.isLocalFile())
- {
- QFileInfo finfo(destUrl.toLocalFile());
- if (finfo.exists())
- {
- QDateTime now = QDateTime::currentDateTime();
- QPointer<KIO::RenameDialog> dlg = new KIO::RenameDialog(view(),
- i18n("Overwrite File?"),
- srcUrl,
- destUrl,
- KIO::RenameDialog_Mode(KIO::M_OVERWRITE | KIO::M_SKIP),
- -1,
- finfo.size(),
- now.toTime_t(),
- finfo.created().toTime_t(),
- now.toTime_t(),
- finfo.lastModified().toTime_t()
- );
- result = dlg->exec();
- delete dlg;
- }
- }
- }
- while (result == KIO::R_CANCEL && destUrl.isValid());
+ downloadResource( reply->url(), KIO::MetaData(), view(), suggestedFileName);
+}
- if (result == KIO::R_OVERWRITE && destUrl.isValid())
- {
- // now store data
- // now, destUrl, srcUrl
- Application::historyManager()->addDownload(srcUrl.pathOrUrl() , destUrl.pathOrUrl());
- if (ReKonfig::kgetDownload())
- {
- //KGet integration:
- if (!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kget"))
- {
- KToolInvocation::kdeinitExecWait("kget");
- }
- QDBusInterface kget("org.kde.kget", "/KGet", "org.kde.kget.main");
- if (kget.isValid())
- {
- kget.call("addTransfer", srcUrl.prettyUrl(), destUrl.prettyUrl(), true);
- return;
- }
- }
+void WebPage::downloadRequest(const QNetworkRequest &request)
+{
+ downloadResource(request.url(),
+ request.attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap(),
+ view());
+}
- // else, use KIO or fallback to it
- KIO::Job *job = KIO::file_copy(srcUrl, destUrl, -1, KIO::Overwrite);
- QVariant attr = request.attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData));
- if (attr.isValid() && attr.type() == QVariant::Map)
- job->setMetaData(KIO::MetaData(attr.toMap()));
- job->addMetaData(QL1S("MaxCacheSize"), QL1S("0")); // Don't store in http cache.
- job->addMetaData(QL1S("cache"), QL1S("cache")); // Use entry from cache if available.
- job->uiDelegate()->setAutoErrorHandlingEnabled(true);
- }
+void WebPage::downloadUrl(const KUrl &url)
+{
+ downloadResource( url, KIO::MetaData(), view() );
}
@@ -580,14 +618,14 @@ void WebPage::downloadAllContentsWithKGet(QPoint)
KUrl relativeUrl;
QWebElementCollection images = mainFrame()->documentElement().findAll("img");
- foreach(QWebElement img, images)
+ foreach(const QWebElement &img, images)
{
relativeUrl.setEncodedUrl(img.attribute("src").toUtf8(), KUrl::TolerantMode);
contents << baseUrl.resolved(relativeUrl).toString();
}
QWebElementCollection links = mainFrame()->documentElement().findAll("a");
- foreach(QWebElement link, links)
+ foreach(const QWebElement &link, links)
{
relativeUrl.setEncodedUrl(link.attribute("href").toUtf8(), KUrl::TolerantMode);
contents << baseUrl.resolved(relativeUrl).toString();
diff --git a/src/webpage.h b/src/webpage.h
index eff4c3fc..f3d201c2 100644
--- a/src/webpage.h
+++ b/src/webpage.h
@@ -68,7 +68,10 @@ public:
public slots:
void downloadAllContentsWithKGet(QPoint);
-
+
+ virtual void downloadRequest(const QNetworkRequest &request);
+ virtual void downloadUrl(const KUrl &url);
+
protected:
WebPage *createWindow(WebWindowType type);
@@ -83,13 +86,7 @@ private slots:
void showSSLInfo(QPoint);
void updateImage(bool ok);
- /**
- * This new slot is needed to provide integration between rekonq & KGet,
- * to better manage file names and to not overwrite KWebPage default behavior on need
- *
- * @see KWebPage::downloadRequest.
- */
- void downloadThings(const QNetworkRequest &request, const QString &suggestedFileName = QString());
+ void downloadReply(const QNetworkReply *reply, const QString &suggestedFileName = QString());
private:
QString errorPage(QNetworkReply *reply);
diff --git a/src/webtab.cpp b/src/webtab.cpp
index a6bedc97..9e168d36 100644
--- a/src/webtab.cpp
+++ b/src/webtab.cpp
@@ -124,6 +124,7 @@ KUrl WebTab::url()
void WebTab::updateProgress(int p)
{
m_progress = p;
+ emit loadProgressing();
}
@@ -183,7 +184,7 @@ void WebTab::showRSSInfo(QPoint pos)
QMap<KUrl, QString> map;
- foreach(QWebElement el, col)
+ foreach(const QWebElement &el, col)
{
QString urlString;
if (el.attribute("href").startsWith(QL1S("http")))
diff --git a/src/webtab.h b/src/webtab.h
index bc07a3e9..e34bbccf 100644
--- a/src/webtab.h
+++ b/src/webtab.h
@@ -67,6 +67,9 @@ private slots:
void createWalletBar(const QString &, const QUrl &);
void showRSSInfo(QPoint pos);
+signals:
+ void loadProgressing();
+
private:
WebView *_view;
diff --git a/src/webview.cpp b/src/webview.cpp
index 99c48f0b..061dd256 100644
--- a/src/webview.cpp
+++ b/src/webview.cpp
@@ -77,7 +77,7 @@ WebView::WebView(QWidget* parent)
// download system
connect(this, SIGNAL(linkShiftClicked(const KUrl &)), page, SLOT(downloadUrl(const KUrl &)));
- connect(page, SIGNAL(downloadRequested(const QNetworkRequest &)), page, SLOT(downloadThings(const QNetworkRequest &)));
+ connect(page, SIGNAL(downloadRequested(const QNetworkRequest &)), page, SLOT(downloadRequest(const QNetworkRequest &)));
// middle click || ctrl + click signal
connect(this, SIGNAL(linkMiddleOrCtrlClicked(const KUrl &)), this, SLOT(loadUrlInNewTab(const KUrl &)));
@@ -316,7 +316,7 @@ void WebView::mousePressEvent(QMouseEvent *event)
}
QWebHitTestResult result = page()->mainFrame()->hitTestContent(event->pos());
- _canEnableAutoScroll = !ReKonfig::disableAutoScroll() && !result.isContentEditable() && result.linkUrl().isEmpty();
+ _canEnableAutoScroll = ReKonfig::autoScroll() && !result.isContentEditable() && result.linkUrl().isEmpty();
switch (event->button())
{
@@ -496,6 +496,23 @@ void WebView::keyPressEvent(QKeyEvent *event)
KWebView::keyPressEvent(event);
}
+void WebView::wheelEvent(QWheelEvent *event)
+{
+ // Sync with the zoom slider
+ if (event->modifiers() == Qt::ControlModifier)
+ {
+ emit zoomChanged(zoomFactor());
+ }
+
+ KWebView::wheelEvent(event);
+
+ // Limits of the slider
+ if (zoomFactor() > 1.9)
+ setZoomFactor(1.9);
+ else if (zoomFactor() < 0.1)
+ setZoomFactor(0.1);
+}
+
void WebView::inspect()
{
diff --git a/src/webview.h b/src/webview.h
index bac12e99..a4ba676c 100644
--- a/src/webview.h
+++ b/src/webview.h
@@ -56,6 +56,7 @@ protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
+ void wheelEvent(QWheelEvent *event);
private slots:
void search();
@@ -73,6 +74,7 @@ private slots:
signals:
void loadUrl(const KUrl &, const Rekonq::OpenType &);
+ void zoomChanged(qreal);
private:
QPoint _mousePos;