From ea16e02a0243aee24f1805ffce106b924ce2fc02 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 11 Aug 2010 12:59:17 +0200 Subject: Modify NewTabPage::browsingMenu() to use explicit text encoding. Use explicit text encoding in NewTabPage::browsingMenu() with QLatin1String(). Using explicit text encoding has a some advantages: -it is safe if the default codec is changed -the application compile even with QT_NO_CAST_FROM_ASCII Reviewed-by: Andreas Kling --- src/newtabpage.cpp | 85 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index 1c14f3dc..4217bf89 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -345,48 +345,73 @@ void NewTabPage::browsingMenu(const KUrl ¤tUrl) KIconLoader *loader = KIconLoader::global(); - QWebElement nav = markup(".link"); // Favorites - nav.findFirst("a").setAttribute("href", "about:favorites"); - nav.findFirst("img").setAttribute("src" , QString("file:///" + - loader->iconPath("emblem-favorite", KIconLoader::Desktop || KIconLoader::SizeSmall))); - nav.findFirst("span").appendInside(i18n("Favorites")); + // String used for content creation + const QString aTagString('a'); + const QString linkClassString(QLatin1String(".link")); + const QString imgTagString(QLatin1String("img")); + const QString spanTagString(QLatin1String("span")); + const QString hrefAttributeString(QLatin1String("href")); + const QString srcAttributeString(QLatin1String("src")); + const QString fileSchemeString(QLatin1String("file:///")); + + + // Favorites + QWebElement nav = markup(linkClassString); + nav.findFirst(aTagString).setAttribute(hrefAttributeString, + QLatin1String("about:favorites")); + nav.findFirst(imgTagString).setAttribute(srcAttributeString, + fileSchemeString + loader->iconPath(QLatin1String("emblem-favorite"), + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(spanTagString).appendInside(i18n("Favorites")); navItems.append(nav); - nav = markup(".link"); // Closed Tabs - nav.findFirst("a").setAttribute("href", "about:closedTabs"); - nav.findFirst("img").setAttribute("src" , QString("file:///" + - loader->iconPath("tab-close", KIconLoader::Desktop || KIconLoader::SizeSmall))); - nav.findFirst("span").appendInside(i18n("Closed Tabs")); + + // Closed Tabs + nav = markup(linkClassString); + nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:closedTabs")); + nav.findFirst(imgTagString).setAttribute(srcAttributeString, + fileSchemeString + loader->iconPath(QLatin1String("tab-close"), + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(spanTagString).appendInside(i18n("Closed Tabs")); navItems.append(nav); - nav = markup(".link"); // Bookmarks - nav.findFirst("a").setAttribute("href", "about:bookmarks"); - nav.findFirst("img").setAttribute("src" , QString("file:///" + - loader->iconPath("bookmarks", KIconLoader::Desktop || KIconLoader::SizeSmall))); - nav.findFirst("span").appendInside(i18n("Bookmarks")); + + // Bookmarks + nav = markup(linkClassString); + nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:bookmarks")); + nav.findFirst(imgTagString).setAttribute(srcAttributeString, + fileSchemeString + loader->iconPath(QLatin1String("bookmarks"), + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(spanTagString).appendInside(i18n("Bookmarks")); navItems.append(nav); - nav = markup(".link"); // History - nav.findFirst("a").setAttribute("href", "about:history"); - nav.findFirst("img").setAttribute("src" , QString("file:///" + - loader->iconPath("view-history", KIconLoader::Desktop || KIconLoader::SizeSmall))); - nav.findFirst("span").appendInside(i18n("History")); + + // History + nav = markup(linkClassString); + nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:history")); + nav.findFirst(imgTagString).setAttribute(srcAttributeString, + fileSchemeString + loader->iconPath(QLatin1String("view-history"), + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(spanTagString).appendInside(i18n("History")); navItems.append(nav); - nav = markup(".link"); // Downloads - nav.findFirst("a").setAttribute("href", "about:downloads"); - nav.findFirst("img").setAttribute("src" , QString("file:///" + - loader->iconPath("download", KIconLoader::Desktop || KIconLoader::SizeSmall))); - nav.findFirst("span").appendInside(i18n("Downloads")); + + // Downloads + nav = markup(linkClassString); + nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:downloads")); + nav.findFirst(imgTagString).setAttribute(srcAttributeString, + fileSchemeString + loader->iconPath(QLatin1String("download"), + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(spanTagString).appendInside(i18n("Downloads")); navItems.append(nav); foreach(QWebElement it, navItems) { - if (it.findFirst("a").attribute("href") == currentUrl.toMimeDataString()) - it.addClass("current"); - else if (currentUrl == "about:home" && it.findFirst("a").attribute("href") == "about:favorites") - it.addClass("current"); - m_root.document().findFirst("#navigation").appendInside(it); + if (it.findFirst(aTagString).attribute(hrefAttributeString) == currentUrl.toMimeDataString()) + it.addClass(QLatin1String("current")); + else if (currentUrl == QLatin1String("about:home") && it.findFirst(aTagString).attribute(hrefAttributeString) == QLatin1String("about:favorites")) + it.addClass(QLatin1String("current")); + m_root.document().findFirst(QLatin1String("#navigation")).appendInside(it); } } -- cgit v1.2.1 From d2f00e43420e2ed498b3c4cdfe737b9355731fd6 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 11 Aug 2010 13:15:59 +0200 Subject: Fix the file scheme of NewTabPage::browsingMenu() The path added to the scheme is already supposed to be an absolute path, so starting with a '/'. By putting three slashes for the scheme, the final path has four /, which is not a valid url (legacy url). --- src/newtabpage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index 4217bf89..7711d2e7 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -352,7 +352,7 @@ void NewTabPage::browsingMenu(const KUrl ¤tUrl) const QString spanTagString(QLatin1String("span")); const QString hrefAttributeString(QLatin1String("href")); const QString srcAttributeString(QLatin1String("src")); - const QString fileSchemeString(QLatin1String("file:///")); + const QString fileSchemeString(QLatin1String("file://")); // Favorites -- cgit v1.2.1 From 9b4b9d048968dcc670344f5c24fa212c5428aec3 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 11 Aug 2010 13:45:34 +0200 Subject: Refactor NewTabPage::browsingMenu() to clean the creation of item Almost identical code was copied 5 times. It has been replaced by a private function. --- src/newtabpage.cpp | 73 ++++++++++++++++-------------------------------------- src/newtabpage.h | 4 ++- 2 files changed, 24 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index 7711d2e7..2b80b7f0 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -338,75 +338,31 @@ void NewTabPage::removePreview(int index) ReKonfig::self()->writeConfig(); } - void NewTabPage::browsingMenu(const KUrl ¤tUrl) { QList navItems; - KIconLoader *loader = KIconLoader::global(); - - // String used for content creation - const QString aTagString('a'); - const QString linkClassString(QLatin1String(".link")); - const QString imgTagString(QLatin1String("img")); - const QString spanTagString(QLatin1String("span")); - const QString hrefAttributeString(QLatin1String("href")); - const QString srcAttributeString(QLatin1String("src")); - const QString fileSchemeString(QLatin1String("file://")); - - // Favorites - QWebElement nav = markup(linkClassString); - nav.findFirst(aTagString).setAttribute(hrefAttributeString, - QLatin1String("about:favorites")); - nav.findFirst(imgTagString).setAttribute(srcAttributeString, - fileSchemeString + loader->iconPath(QLatin1String("emblem-favorite"), - KIconLoader::Desktop || KIconLoader::SizeSmall)); - nav.findFirst(spanTagString).appendInside(i18n("Favorites")); - navItems.append(nav); + navItems.append(createNavItem(i18n("Favorites"), QLatin1String("about:favorites"), QLatin1String("emblem-favorite"))); // Closed Tabs - nav = markup(linkClassString); - nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:closedTabs")); - nav.findFirst(imgTagString).setAttribute(srcAttributeString, - fileSchemeString + loader->iconPath(QLatin1String("tab-close"), - KIconLoader::Desktop || KIconLoader::SizeSmall)); - nav.findFirst(spanTagString).appendInside(i18n("Closed Tabs")); - navItems.append(nav); - + navItems.append(createNavItem(i18n("Closed Tabs"), QLatin1String("about:closedTabs"), QLatin1String("tab-close"))); // Bookmarks - nav = markup(linkClassString); - nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:bookmarks")); - nav.findFirst(imgTagString).setAttribute(srcAttributeString, - fileSchemeString + loader->iconPath(QLatin1String("bookmarks"), - KIconLoader::Desktop || KIconLoader::SizeSmall)); - nav.findFirst(spanTagString).appendInside(i18n("Bookmarks")); - navItems.append(nav); - + navItems.append(createNavItem(i18n("Bookmarks"), QLatin1String("about:bookmarks"), QLatin1String("bookmarks"))); // History - nav = markup(linkClassString); - nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:history")); - nav.findFirst(imgTagString).setAttribute(srcAttributeString, - fileSchemeString + loader->iconPath(QLatin1String("view-history"), - KIconLoader::Desktop || KIconLoader::SizeSmall)); - nav.findFirst(spanTagString).appendInside(i18n("History")); - navItems.append(nav); - + navItems.append(createNavItem(i18n("History"), QLatin1String("about:history"), QLatin1String("view-history"))); // Downloads - nav = markup(linkClassString); - nav.findFirst(aTagString).setAttribute(hrefAttributeString, QLatin1String("about:downloads")); - nav.findFirst(imgTagString).setAttribute(srcAttributeString, - fileSchemeString + loader->iconPath(QLatin1String("download"), - KIconLoader::Desktop || KIconLoader::SizeSmall)); - nav.findFirst(spanTagString).appendInside(i18n("Downloads")); - navItems.append(nav); + navItems.append(createNavItem(i18n("Downloads"), QLatin1String("about:downloads"), QLatin1String("download"))); foreach(QWebElement it, navItems) { + const QString aTagString('a'); + const QString hrefAttributeString(QLatin1String("href")); + if (it.findFirst(aTagString).attribute(hrefAttributeString) == currentUrl.toMimeDataString()) it.addClass(QLatin1String("current")); else if (currentUrl == QLatin1String("about:home") && it.findFirst(aTagString).attribute(hrefAttributeString) == QLatin1String("about:favorites")) @@ -620,3 +576,16 @@ void NewTabPage::downloadsPage() div.lastChild().setPlainText(i18n("Open file")); } } + +QWebElement NewTabPage::createNavItem(const QString &title, const QString &urlString, const QString &iconPath) const +{ + const KIconLoader * const loader = KIconLoader::global(); + + QWebElement nav = markup(QLatin1String(".link")); + nav.findFirst(QString('a')).setAttribute(QLatin1String("href"), urlString); + nav.findFirst(QLatin1String("img")).setAttribute(QLatin1String("src"), + QString::fromLatin1("file://") + loader->iconPath(iconPath, + KIconLoader::Desktop || KIconLoader::SizeSmall)); + nav.findFirst(QLatin1String("span")).appendInside(title); + return nav; +} diff --git a/src/newtabpage.h b/src/newtabpage.h index ad4941d3..c4e48f5c 100644 --- a/src/newtabpage.h +++ b/src/newtabpage.h @@ -107,7 +107,7 @@ private: * It works for all elements defined here. * */ - inline QWebElement markup(const QString &selector) + inline QWebElement markup(const QString &selector) const { return m_root.document().findFirst("#models > " + selector).clone(); } @@ -115,6 +115,8 @@ private: QString checkTitle(const QString &title); private: + QWebElement createNavItem(const QString &title, const QString &urlString, const QString &iconPath) const; + QString m_html; QWebElement m_root; }; -- cgit v1.2.1 From 89ac1b7f00b1632f655ade8daf34cc3d49df93f3 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 11 Aug 2010 14:34:22 +0200 Subject: Refactor createNavItem to use it everywhere .link items are used Change createNavItem() to a more generic createLinkItem() capable of generating icon of any type. Use the new createLinkItem() in every position where .link items are created. Fix the flags used for icons. The flags were specified with a boolean or operator: KIconLoader::SizeSmall || KIconLoader::Small -> one | All the icon flags have been changed to KIconLoader::Toolbar in order to keep the same behavior as before (Toolbar value equals 1). --- src/newtabpage.cpp | 68 ++++++++++++++++++++++++++++++------------------------ src/newtabpage.h | 3 ++- 2 files changed, 40 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index 2b80b7f0..78496bc2 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -44,7 +44,6 @@ // KDE Includes #include -#include #include #include #include @@ -167,11 +166,10 @@ void NewTabPage::favoritesPage() { m_root.addClass("favorites"); - QWebElement add = markup(".link"); - add.findFirst("a").setAttribute("href", "about:preview/add"); - add.findFirst("img").setAttribute("src" , QString("file:///" + - KIconLoader::global()->iconPath("list-add", KIconLoader::Small || KIconLoader::SizeSmall))); - add.findFirst("span").appendInside(i18n("Add Favorite")); + const QWebElement add = createLinkItem(i18n("Add Favorite"), + QLatin1String("about:preview/add"), + QLatin1String("list-add"), + KIconLoader::Toolbar); m_root.document().findFirst("#actions").appendInside(add); QStringList names = ReKonfig::previewNames(); @@ -343,20 +341,34 @@ void NewTabPage::browsingMenu(const KUrl ¤tUrl) QList navItems; // Favorites - navItems.append(createNavItem(i18n("Favorites"), QLatin1String("about:favorites"), QLatin1String("emblem-favorite"))); - + navItems.append(createLinkItem(i18n("Favorites"), + QLatin1String("about:favorites"), + QLatin1String("emblem-favorite"), + KIconLoader::Toolbar)); // Closed Tabs - navItems.append(createNavItem(i18n("Closed Tabs"), QLatin1String("about:closedTabs"), QLatin1String("tab-close"))); + navItems.append(createLinkItem(i18n("Closed Tabs"), + QLatin1String("about:closedTabs"), + QLatin1String("tab-close"), + KIconLoader::Toolbar)); // Bookmarks - navItems.append(createNavItem(i18n("Bookmarks"), QLatin1String("about:bookmarks"), QLatin1String("bookmarks"))); + navItems.append(createLinkItem(i18n("Bookmarks"), + QLatin1String("about:bookmarks"), + QLatin1String("bookmarks"), + KIconLoader::Toolbar)); // History - navItems.append(createNavItem(i18n("History"), QLatin1String("about:history"), QLatin1String("view-history"))); + navItems.append(createLinkItem(i18n("History"), + QLatin1String("about:history"), + QLatin1String("view-history"), + KIconLoader::Toolbar)); // Downloads - navItems.append(createNavItem(i18n("Downloads"), QLatin1String("about:downloads"), QLatin1String("download"))); + navItems.append(createLinkItem(i18n("Downloads"), + QLatin1String("about:downloads"), + QLatin1String("download"), + KIconLoader::Toolbar)); foreach(QWebElement it, navItems) { @@ -376,11 +388,10 @@ void NewTabPage::historyPage() { m_root.addClass("history"); - QWebElement clearData = markup(".link"); - clearData.findFirst("a").setAttribute("href", "about:history/clear"); - QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("edit-clear", KIconLoader::SizeSmall || KIconLoader::Small)); - clearData.findFirst("img").setAttribute("src" , iconPath); - clearData.findFirst("span").appendInside(i18n("Clear Private Data")); + const QWebElement clearData = createLinkItem(i18n("Clear Private Data"), + QLatin1String("about:history/clear"), + QLatin1String("edit-clear"), + KIconLoader::Toolbar); m_root.document().findFirst("#actions").appendInside(clearData); HistoryTreeModel *model = Application::historyManager()->historyTreeModel(); @@ -422,11 +433,10 @@ void NewTabPage::bookmarksPage() { m_root.addClass("bookmarks"); - QWebElement editBookmarks = markup(".link"); - editBookmarks.findFirst("a").setAttribute("href", "about:bookmarks/edit"); - QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("bookmarks-organize", KIconLoader::SizeSmall || KIconLoader::Small)); - editBookmarks.findFirst("img").setAttribute("src" , iconPath); - editBookmarks.findFirst("span").appendInside(i18n("Edit Bookmarks")); + const QWebElement editBookmarks = createLinkItem(i18n("Edit Bookmarks"), + QLatin1String("about:bookmarks/edit"), + QLatin1String("bookmarks-organize"), + KIconLoader::Toolbar); m_root.document().findFirst("#actions").appendInside(editBookmarks); KBookmarkGroup bookGroup = Application::bookmarkProvider()->rootGroup(); @@ -523,11 +533,10 @@ void NewTabPage::downloadsPage() { m_root.addClass("downloads"); - QWebElement clearData = markup(".link"); - clearData.findFirst("a").setAttribute("href", "about:downloads/clear"); - QString iconPath = QString("file:///" + KIconLoader::global()->iconPath("edit-clear", KIconLoader::SizeSmall || KIconLoader::Small)); - clearData.findFirst("img").setAttribute("src" , iconPath); - clearData.findFirst("span").appendInside(i18n("Clear Private Data")); + const QWebElement clearData = createLinkItem(i18n("Clear Private Data"), + QLatin1String("about:downloads/clear"), + QLatin1String("edit-clear"), + KIconLoader::Toolbar); m_root.document().findFirst("#actions").appendInside(clearData); DownloadList list = Application::instance()->downloads(); @@ -577,15 +586,14 @@ void NewTabPage::downloadsPage() } } -QWebElement NewTabPage::createNavItem(const QString &title, const QString &urlString, const QString &iconPath) const +QWebElement NewTabPage::createLinkItem(const QString &title, const QString &urlString, const QString &iconPath, int groupOrSize) const { const KIconLoader * const loader = KIconLoader::global(); QWebElement nav = markup(QLatin1String(".link")); nav.findFirst(QString('a')).setAttribute(QLatin1String("href"), urlString); nav.findFirst(QLatin1String("img")).setAttribute(QLatin1String("src"), - QString::fromLatin1("file://") + loader->iconPath(iconPath, - KIconLoader::Desktop || KIconLoader::SizeSmall)); + QString::fromLatin1("file://") + loader->iconPath(iconPath, groupOrSize)); nav.findFirst(QLatin1String("span")).appendInside(title); return nav; } diff --git a/src/newtabpage.h b/src/newtabpage.h index c4e48f5c..2560beb2 100644 --- a/src/newtabpage.h +++ b/src/newtabpage.h @@ -33,6 +33,7 @@ #include "rekonq_defines.h" // KDE Includes +#include #include // Qt Includes @@ -115,7 +116,7 @@ private: QString checkTitle(const QString &title); private: - QWebElement createNavItem(const QString &title, const QString &urlString, const QString &iconPath) const; + QWebElement createLinkItem(const QString &title, const QString &urlString, const QString &iconPath, int groupOrSize) const; QString m_html; QWebElement m_root; -- cgit v1.2.1