diff options
| -rw-r--r-- | src/application.cpp | 61 | ||||
| -rw-r--r-- | src/application.h | 11 | ||||
| -rw-r--r-- | src/iconmanager.cpp | 6 | ||||
| -rw-r--r-- | src/main.cpp | 5 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 46 | ||||
| -rw-r--r-- | src/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/newtabpage.cpp | 214 | ||||
| -rw-r--r-- | src/urlbar/urlbar.cpp | 18 | ||||
| -rw-r--r-- | src/urlbar/urlbar.h | 2 | 
9 files changed, 207 insertions, 159 deletions
| diff --git a/src/application.cpp b/src/application.cpp index 233be527..cadfa50f 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -55,10 +55,12 @@  #include <KMessageBox>  #include <KStandardDirs>  #include <ThreadWeaver/Weaver> +#include <KAction>  // Qt Includes  #include <QVBoxLayout> +  QWeakPointer<AdBlockManager> Application::s_adblockManager;  QWeakPointer<BookmarkProvider> Application::s_bookmarkProvider;  QWeakPointer<HistoryManager> Application::s_historyManager; @@ -66,13 +68,20 @@ QWeakPointer<IconManager> Application::s_iconManager;  QWeakPointer<OpenSearchManager> Application::s_opensearchManager;  QWeakPointer<SessionManager> Application::s_sessionManager; +  using namespace ThreadWeaver; +  Application::Application()          : KUniqueApplication() +        , _privateBrowsingAction(0)  {      connect(Weaver::instance(), SIGNAL(jobDone(ThreadWeaver::Job*)),              this, SLOT(loadResolvedUrl(ThreadWeaver::Job*))); + +    _privateBrowsingAction = new KAction(KIcon("view-media-artist"), i18n("Private &Browsing"), this); +    _privateBrowsingAction->setCheckable(true); +    connect(_privateBrowsingAction, SIGNAL(triggered(bool)), this, SLOT(setPrivateBrowsingMode(bool)));  } @@ -575,3 +584,55 @@ bool Application::clearDownloadsHistory()      QFile downloadFile(downloadFilePath);      return downloadFile.remove();  } + + +void Application::setPrivateBrowsingMode(bool b) +{ +// NOTE +// to let work nicely Private Browsing, we need the following: +// - enable WebKit Private Browsing mode :) +// - treat all cookies as session cookies  +//  (so that they do not get saved to a persistent storage). Available from KDE SC 4.5.72, see BUG: 250122 +// - favicons (fixed in rekonq 0.5.87) +// - save actual session (to restore it when Private Mode is closed) and stop storing it +// - disable history saving + +    QWebSettings *settings = QWebSettings::globalSettings(); +    bool isJustEnabled = settings->testAttribute(QWebSettings::PrivateBrowsingEnabled); +    if(isJustEnabled == b) +        return;     // uhm... something goes wrong... +         +    if (b) +    { +        QString caption = i18n("Are you sure you want to turn on private browsing?"); +        QString text = i18n("<b>%1</b>" +                            "<p>rekonq will save your current tabs for when you'll stop private browsing the net..</p>", caption); +         +        int button = KMessageBox::warningContinueCancel(mainWindow(), text, caption, KStandardGuiItem::cont(), KStandardGuiItem::cancel(), i18n("don't ask again") ); +        if (button != KMessageBox::Continue) +            return; +         +        settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); +        _privateBrowsingAction->setChecked(true); +         +        Q_FOREACH(const QWeakPointer<MainWindow> &w, m_mainWindows) +        { +            w.data()->close(); +        } +        loadUrl( KUrl("about:home"), Rekonq::NewWindow); +    } +    else +    { +        Q_FOREACH(const QWeakPointer<MainWindow> &w, m_mainWindows) +        { +            w.data()->close(); +        } + +        settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, false); +        _privateBrowsingAction->setChecked(false); +         +        loadUrl( KUrl("about:blank"), Rekonq::NewWindow); +        if(!sessionManager()->restoreSession()) +            loadUrl( KUrl("about:home"), Rekonq::NewWindow); +    } +} diff --git a/src/application.h b/src/application.h index 8afb956f..b30e337c 100644 --- a/src/application.h +++ b/src/application.h @@ -50,6 +50,9 @@ class MainWindow;  class OpenSearchManager;  class SessionManager; +class KAction; + +  namespace ThreadWeaver {class Job;} @@ -107,6 +110,8 @@ public:      void addDownload(const QString &srcUrl, const QString &destUrl);      DownloadList downloads();      bool clearDownloadsHistory(); +     +    KAction *privateBrowsingAction() { return _privateBrowsingAction; };  public slots:      /** @@ -124,7 +129,6 @@ public slots:      void removeMainWindow(MainWindow *window);  private slots: -      /**       * Any actions that can be delayed until the window is visible       */ @@ -134,6 +138,9 @@ private slots:      void updateConfiguration(); +    // the general place to set private browsing +    void setPrivateBrowsingMode(bool);   +  private:      static QWeakPointer<HistoryManager> s_historyManager;      static QWeakPointer<BookmarkProvider> s_bookmarkProvider; @@ -143,6 +150,8 @@ private:      static QWeakPointer<IconManager> s_iconManager;      MainWindowList m_mainWindows; + +    KAction *_privateBrowsingAction;  };  #endif // APPLICATION_H diff --git a/src/iconmanager.cpp b/src/iconmanager.cpp index 5086c59d..f5b60ea6 100644 --- a/src/iconmanager.cpp +++ b/src/iconmanager.cpp @@ -65,10 +65,6 @@ KIcon IconManager::iconForUrl(const KUrl &url)      // first things first.. avoid infinite loop at startup      if (url.isEmpty() || Application::instance()->mainWindowList().isEmpty())          return KIcon("text-html"); - -    // no icons in private browsing.. -    if(QWebSettings::globalSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)) -        return KIcon("view-media-artist");      QByteArray encodedUrl = url.toEncoded();      // rekonq icons.. @@ -114,7 +110,7 @@ void IconManager::provideIcon(QWebPage *page, const KUrl &url, bool notify)          return;      } -    // no icons in private browsing.. +    // do not load new icons in private browsing..      if(QWebSettings::globalSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled))      {          kDebug() << "Private browsing, private icon..."; diff --git a/src/main.cpp b/src/main.cpp index 2a5ee528..db6a435f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -189,10 +189,7 @@ extern "C" KDE_EXPORT int kdemain(int argc, char **argv)          kWarning() << "rekonq is already running!";          return 0;      } -#if defined(Q_WS_X11) -    // On X11, the raster engine gives better performance than native. -    QApplication::setGraphicsSystem(QString::fromLatin1("raster")); -#endif +      Application app;      return app.exec(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 555e58ae..7b4cf8a3 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -408,11 +408,9 @@ void MainWindow::setupActions()      actionCollection()->addAction(QL1S("page_source"), a);      connect(a, SIGNAL(triggered(bool)), this, SLOT(viewPageSource())); -    a = new KAction(KIcon("view-media-artist"), i18n("Private &Browsing"), this); -    a->setCheckable(true); +    a = Application::instance()->privateBrowsingAction();      actionCollection()->addAction(QL1S("private_browsing"), a); -    connect(a, SIGNAL(triggered(bool)), this, SLOT(privateBrowsing(bool))); - +          a = new KAction(KIcon("edit-clear"), i18n("Clear Private Data..."), this);      actionCollection()->addAction(QL1S("clear_private_data"), a);      connect(a, SIGNAL(triggered(bool)), this, SLOT(clearPrivateData())); @@ -728,42 +726,6 @@ void MainWindow::printRequested(QWebFrame *frame)  } -void MainWindow::privateBrowsing(bool enable) -{ -    QWebSettings *settings = QWebSettings::globalSettings(); -    if (enable && !settings->testAttribute(QWebSettings::PrivateBrowsingEnabled)) -    { -        QString title = i18n("Are you sure you want to turn on private browsing?"); -        QString text = i18n("<b>%1</b>" -                            "<p>When private browsing is turned on," -                            " web pages are not added to the history," -                            " new cookies are not stored, current cookies cannot be accessed," -                            " site icons will not be stored, the session will not be saved." -                            " Until you close the window, you can still click the Back and Forward buttons" -                            " to return to the web pages you have opened.</p>", title); - -        int button = KMessageBox::warningContinueCancel(this, text, title); -        if (button == KMessageBox::Continue) -        { -            settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); -            m_view->urlBar()->setPrivateMode(true); -        } -        else -        { -            actionCollection()->action( QL1S("private_browsing") )->setChecked(false); -        } -    } -    else -    { -        settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, false); -        m_view->urlBar()->setPrivateMode(false); - -        m_lastSearch.clear(); -        m_view->reloadAllTabs(); -    } -} - -  void MainWindow::find(const QString & search)  {      if (!currentTab()) @@ -1349,6 +1311,10 @@ bool MainWindow::queryClose()      if(Application::instance()->sessionSaving())          return true; +    // smooth private browsing mode +    if(QWebSettings::globalSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)) +        return true; +          if (m_view->count() > 1)      {          int answer = KMessageBox::questionYesNoCancel( diff --git a/src/mainwindow.h b/src/mainwindow.h index ad4fa4b8..0395db4d 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -147,9 +147,6 @@ private slots:      void viewPageSource();      void viewFullScreen(bool enable); -    // Tools Menu slots -    void privateBrowsing(bool enable); -      // Settings Menu slot      void preferences(); diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index 36462f8c..7dcc9581 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -60,7 +60,7 @@ NewTabPage::NewTabPage(QWebFrame *frame)          , m_root(frame->documentElement())  {      QString htmlFilePath = KStandardDirs::locate("data", "rekonq/htmls/home.html"); -    QString imagesPath = QString("file://") + KGlobal::dirs()->findResourceDir("data", "rekonq/pics/bg.png") + QString("rekonq/pics"); +    QString imagesPath = QL1S("file://") + KGlobal::dirs()->findResourceDir("data", "rekonq/pics/bg.png") + QL1S("rekonq/pics");      QFile file(htmlFilePath);      bool isOpened = file.open(QIODevice::ReadOnly); @@ -71,7 +71,7 @@ NewTabPage::NewTabPage(QWebFrame *frame)      else      {          m_html = file.readAll(); -        m_html.replace(QString("%2"), imagesPath); +        m_html.replace(QL1S("%2"), imagesPath);      }  } @@ -85,7 +85,7 @@ void NewTabPage::generate(const KUrl &url)  {      if (KUrl("about:preview").isParentOf(url))      { -        if (url.fileName() == QString("add")) +        if (url.fileName() == QL1S("add"))          {              QStringList names = ReKonfig::previewNames();              QStringList urls = ReKonfig::previewUrls(); @@ -102,22 +102,22 @@ void NewTabPage::generate(const KUrl &url)              generate(KUrl("about:favorites"));              return;          } -        if (url.directory() == QString("preview/remove")) +        if (url.directory() == QL1S("preview/remove"))          {              removePreview(url.fileName().toInt());              return;          } -        if (url.directory() == QString("preview/modify")) +        if (url.directory() == QL1S("preview/modify"))          {              int index = url.fileName().toInt();              Application::instance()->mainWindow()->currentTab()->createPreviewSelectorBar(index);              return;          }      } -    if (url.fileName() == QString("clear")) +    if (url.fileName() == QL1S("clear"))      {          Application::instance()->mainWindow()->actionByName("clear_private_data")->trigger(); -        generate(QString("about:" + url.directory())); +        generate( QL1S("about:") + url.directory() );          return;      }      if (url == KUrl("about:bookmarks/edit")) @@ -130,7 +130,7 @@ void NewTabPage::generate(const KUrl &url)      page->mainFrame()->setHtml(m_html);      page->setIsOnRekonqPage(true); -    m_root = page->mainFrame()->documentElement().findFirst("#content"); +    m_root = page->mainFrame()->documentElement().findFirst( QL1S("#content") );      browsingMenu(url); @@ -162,13 +162,13 @@ void NewTabPage::generate(const KUrl &url)          title = i18n("Downloads");      } -    m_root.document().findFirst("title").setPlainText(title); +    m_root.document().findFirst( QL1S("title") ).setPlainText(title);  }  void NewTabPage::favoritesPage()  { -    m_root.addClass("favorites"); +    m_root.addClass( QL1S("favorites") );      const QWebElement add = createLinkItem(i18n("Add Favorite"),                                             QL1S("about:preview/add"), @@ -181,7 +181,7 @@ void NewTabPage::favoritesPage()      if (urls.isEmpty())      { -        m_root.addClass("empty"); +        m_root.addClass( QL1S("empty") );          m_root.setPlainText(i18n("You can add a favorite by clicking the \"Add Favorite\" button in the top-right corner of this page"));          return;      } @@ -207,12 +207,13 @@ void NewTabPage::favoritesPage()  QWebElement NewTabPage::emptyPreview(int index)  { -    QWebElement prev = markup(".thumbnail"); +    QWebElement prev = markup( QL1S(".thumbnail") ); -    prev.findFirst(".preview img").setAttribute("src" , QString("file:///") + -            KIconLoader::global()->iconPath("insert-image", KIconLoader::Desktop)); -    prev.findFirst("span a").setPlainText(i18n("Set a Preview...")); -    prev.findFirst("a").setAttribute("href", QString("about:preview/modify/" + QVariant(index).toString())); +    prev.findFirst( QL1S(".preview img") ).setAttribute( QL1S("src") ,  +                                                         QL1S("file:///") + KIconLoader::global()->iconPath("insert-image", KIconLoader::Desktop)); +    prev.findFirst( QL1S("span a") ).setPlainText(i18n("Set a Preview...")); +    prev.findFirst( QL1S("a") ).setAttribute( QL1S("href"),  +                                              QL1S("about:preview/modify/") + QVariant(index).toString());      setupPreview(prev, index);      //hideControls(prev); @@ -223,12 +224,12 @@ QWebElement NewTabPage::emptyPreview(int index)  QWebElement NewTabPage::loadingPreview(int index, const KUrl &url)  { -    QWebElement prev = markup(".thumbnail"); +    QWebElement prev = markup( QL1S(".thumbnail") ); -    prev.findFirst(".preview img").setAttribute("src" , -            QString("file:///") + KStandardDirs::locate("appdata", "pics/busywidget.gif")); -    prev.findFirst("span a").setPlainText(i18n("Loading Preview...")); -    prev.findFirst("a").setAttribute("href", url.toMimeDataString()); +    prev.findFirst( QL1S(".preview img") ).setAttribute( QL1S("src"),  +                                                         QL1S("file:///") + KStandardDirs::locate("appdata", "pics/busywidget.gif")); +    prev.findFirst( QL1S("span a") ).setPlainText(i18n("Loading Preview...")); +    prev.findFirst( QL1S("a") ).setAttribute( QL1S("href"), url.toMimeDataString());      setupPreview(prev, index);      showControls(prev); @@ -245,13 +246,13 @@ QWebElement NewTabPage::loadingPreview(int index, const KUrl &url)  QWebElement NewTabPage::validPreview(int index, const KUrl &url, const QString &title)  { -    QWebElement prev = markup(".thumbnail"); +    QWebElement prev = markup( QL1S(".thumbnail") );      QString previewPath = QL1S("file://") + WebSnap::imagePathFromUrl(url); -    prev.findFirst(".preview img").setAttribute("src" , previewPath); -    prev.findFirst("a").setAttribute("href", url.toMimeDataString());   // NOTE ? -    prev.findFirst("span a").setAttribute("href", url.toMimeDataString());  // NOTE ? -    prev.findFirst("span a").setPlainText(checkTitle(title)); +    prev.findFirst( QL1S(".preview img") ).setAttribute( QL1S("src") , previewPath); +    prev.findFirst( QL1S("a") ).setAttribute( QL1S("href"), url.toMimeDataString()); +    prev.findFirst( QL1S("span a") ).setAttribute( QL1S("href"), url.toMimeDataString()); +    prev.findFirst( QL1S("span a") ).setPlainText(checkTitle(title));      setupPreview(prev, index);      showControls(prev); @@ -261,40 +262,38 @@ QWebElement NewTabPage::validPreview(int index, const KUrl &url, const QString &  void NewTabPage::hideControls(QWebElement e)  { -    e.findFirst(".remove").setStyleProperty("visibility", "hidden"); -    e.findFirst(".modify").setStyleProperty("visibility", "hidden"); +    e.findFirst( QL1S(".remove") ).setStyleProperty( QL1S("visibility"), QL1S("hidden") ); +    e.findFirst( QL1S(".modify") ).setStyleProperty( QL1S("visibility"), QL1S("hidden") );  }  void NewTabPage::showControls(QWebElement e)  { -    e.findFirst(".remove").setStyleProperty("visibility", "visible"); -    e.findFirst(".modify").setStyleProperty("visibility", "visible"); +    e.findFirst( QL1S(".remove") ).setStyleProperty( QL1S("visibility"), QL1S("visible") ); +    e.findFirst( QL1S(".modify") ).setStyleProperty( QL1S("visibility"), QL1S("visible") );  }  void NewTabPage::setupPreview(QWebElement e, int index)  { -    e.findFirst(".remove img").setAttribute("src", QString("file:///") + -                                            KIconLoader::global()->iconPath("edit-delete", KIconLoader::DefaultState)); -    e.findFirst(".remove").setAttribute("title", "Remove favorite"); -    e.findFirst(".modify img").setAttribute("src", QString("file:///") + -                                            KIconLoader::global()->iconPath("insert-image", KIconLoader::DefaultState)); -    e.findFirst(".modify").setAttribute("title", "Set new favorite"); +    e.findFirst( QL1S(".remove img") ).setAttribute( QL1S("src"), QL1S("file:///") + KIconLoader::global()->iconPath("edit-delete", KIconLoader::DefaultState)); +    e.findFirst( QL1S(".remove") ).setAttribute( QL1S("title"), QL1S("Remove favorite")); +    e.findFirst( QL1S(".modify img") ).setAttribute(  QL1S("src"), QL1S("file:///") + KIconLoader::global()->iconPath("insert-image", KIconLoader::DefaultState)); +    e.findFirst( QL1S(".modify") ).setAttribute(  QL1S("title"), QL1S("Set new favorite")); -    e.findFirst(".modify").setAttribute("href", QString("about:preview/modify/" + QVariant(index).toString())); -    e.findFirst(".remove").setAttribute("href", QString("about:preview/remove/" + QVariant(index).toString())); +    e.findFirst( QL1S(".modify") ).setAttribute( QL1S("href"), QL1S("about:preview/modify/") + QVariant(index).toString() ); +    e.findFirst( QL1S(".remove") ).setAttribute( QL1S("href"), QL1S("about:preview/remove/") + QVariant(index).toString() ); -    e.setAttribute("id", "preview" + QVariant(index).toString()); +    e.setAttribute( QL1S("id"), QL1S("preview") + QVariant(index).toString());  }  void NewTabPage::snapFinished()  {      // Update page, but only if open -    if (m_root.document().findAll("#rekonq-newtabpage").count() == 0) +    if (m_root.document().findAll( QL1S("#rekonq-newtabpage") ).count() == 0)          return; -    if (m_root.findAll(".favorites").count() == 0 && m_root.findAll(".closedTabs").count() == 0) +    if (m_root.findAll( QL1S(".favorites") ).count() == 0 && m_root.findAll( QL1S(".closedTabs") ).count() == 0)          return;      QStringList urls = ReKonfig::previewUrls(); @@ -307,12 +306,12 @@ void NewTabPage::snapFinished()          if (WebSnap::existsImage(url))          { -            QWebElement prev = m_root.findFirst("#preview" + QVariant(i).toString()); -            if (KUrl(prev.findFirst("a").attribute("href")) == url) +            QWebElement prev = m_root.findFirst( QL1S("#preview") + QVariant(i).toString()); +            if (KUrl(prev.findFirst("a").attribute( QL1S("href") )) == url)              {                  QWebElement newPrev = validPreview(i, url, title); -                if (m_root.findAll(".closedTabs").count() != 0) +                if (m_root.findAll( QL1S(".closedTabs") ).count() != 0)                      hideControls(newPrev);                  prev.replace(newPrev); @@ -338,6 +337,7 @@ void NewTabPage::removePreview(int index)      ReKonfig::self()->writeConfig();  } +  void NewTabPage::browsingMenu(const KUrl ¤tUrl)  {      QList<QWebElement> navItems; @@ -374,55 +374,68 @@ void NewTabPage::browsingMenu(const KUrl ¤tUrl)      foreach(QWebElement it, navItems)      { -        const QString aTagString('a'); +        const QString aTagString( QL1C('a') );          const QString hrefAttributeString(QL1S("href"));          if (it.findFirst(aTagString).attribute(hrefAttributeString) == currentUrl.toMimeDataString()) -            it.addClass(QL1S("current")); +            it.addClass( QL1S("current") );          else if (currentUrl == QL1S("about:home") && it.findFirst(aTagString).attribute(hrefAttributeString) == QL1S("about:favorites")) -            it.addClass(QL1S("current")); -        m_root.document().findFirst(QL1S("#navigation")).appendInside(it); +            it.addClass( QL1S("current") ); +        m_root.document().findFirst( QL1S("#navigation") ).appendInside(it);      }  }  void NewTabPage::historyPage()  { -    m_root.addClass("history"); +    m_root.addClass( QL1S("history") );      const QWebElement clearData = createLinkItem(i18n("Clear Private Data"),                                                   QL1S("about:history/clear"),                                                   QL1S("edit-clear"),                                                   KIconLoader::Toolbar); -    m_root.document().findFirst("#actions").appendInside(clearData); +    m_root.document().findFirst( QL1S("#actions") ).appendInside(clearData);      HistoryTreeModel *model = Application::historyManager()->historyTreeModel();      if (model->rowCount() == 0)      { -        m_root.addClass("empty"); +        m_root.addClass( QL1S("empty") );          m_root.setPlainText(i18n("Your browsing history is empty"));          return;      }      int i = 0; +    QString faviconsDir = KStandardDirs::locateLocal("cache" , "favicons/" , true); +    QString icon = QL1S("file://") + KGlobal::dirs()->findResource("icon", "oxygen/16x16/mimetypes/text-html.png");      do      {          QModelIndex index = model->index(i, 0, QModelIndex());          if (model->hasChildren(index))          { -            m_root.appendInside(markup("h3")); +            m_root.appendInside(markup( QL1S("h3") ));              m_root.lastChild().setPlainText(index.data().toString());              for (int j = 0; j < model->rowCount(index); ++j) -            { +            {                                  QModelIndex son = model->index(j, 0, index); +                KUrl u = son.data(HistoryModel::UrlStringRole).toUrl(); + +                QString b = faviconsDir + u.host() + QL1S(".png"); +                if( QFile::exists(b) ) +                    icon = QL1S("file://") + b; +                                  m_root.appendInside(son.data(HistoryModel::DateTimeRole).toDateTime().toString("hh:mm")); -                m_root.appendInside("  "); -                m_root.appendInside(markup("a")); -                m_root.lastChild().setAttribute("href" , son.data(HistoryModel::UrlStringRole).toString()); +                m_root.appendInside( QL1S("  ") ); +                m_root.appendInside(markup( QL1S("img") )); +                m_root.lastChild().setAttribute( QL1S("src"), icon); +                m_root.lastChild().setAttribute( QL1S("width"), QL1S("16")); +                m_root.lastChild().setAttribute( QL1S("height"), QL1S("16")); +                m_root.appendInside( QL1S(" ") ); +                m_root.appendInside(markup( QL1S("a") )); +                m_root.lastChild().setAttribute( QL1S("href") , u.url());                  m_root.lastChild().appendInside(son.data().toString()); -                m_root.appendInside("<br/>"); +                m_root.appendInside( QL1S("<br />") );              }          }          i++; @@ -433,18 +446,18 @@ void NewTabPage::historyPage()  void NewTabPage::bookmarksPage()  { -    m_root.addClass("bookmarks"); +    m_root.addClass( QL1S("bookmarks") );      const QWebElement editBookmarks = createLinkItem(i18n("Edit Bookmarks"),                                                       QL1S("about:bookmarks/edit"),                                                       QL1S("bookmarks-organize"),                                                       KIconLoader::Toolbar); -    m_root.document().findFirst("#actions").appendInside(editBookmarks); +    m_root.document().findFirst( QL1S("#actions") ).appendInside(editBookmarks);      KBookmarkGroup bookGroup = Application::bookmarkProvider()->rootGroup();      if (bookGroup.isNull())      { -        m_root.addClass("empty"); +        m_root.addClass( QL1S("empty") );          m_root.setPlainText(i18n("You have no bookmarks"));          return;      } @@ -460,13 +473,15 @@ void NewTabPage::bookmarksPage()  void NewTabPage::createBookItem(const KBookmark &bookmark, QWebElement parent)  { +    QString cacheDir = QL1S("file://") + KStandardDirs::locateLocal("cache" , "" , true); +    QString icon = QL1S("file://") + KGlobal::dirs()->findResource("icon", "oxygen/16x16/mimetypes/text-html.png");      if (bookmark.isGroup())      {          KBookmarkGroup group = bookmark.toGroup();          KBookmark bm = group.first(); -        parent.appendInside(markup("h3")); +        parent.appendInside(markup( QL1S("h3") ));          parent.lastChild().setPlainText(group.fullText()); -        parent.appendInside(markup(".bookfolder")); +        parent.appendInside(markup( QL1S(".bookfolder") ));          while (!bm.isNull())          {              createBookItem(bm, parent.lastChild()); // it is .bookfolder @@ -475,27 +490,36 @@ void NewTabPage::createBookItem(const KBookmark &bookmark, QWebElement parent)      }      else if (bookmark.isSeparator())      { -        parent.appendInside("<hr/>"); +        parent.appendInside( QL1S("<hr />") );      }      else      { -        parent.appendInside(markup("a")); -        parent.lastChild().setAttribute("href" , bookmark.url().prettyUrl()); +        QString b = bookmark.icon(); +        if(b.contains( QL1S("favicons") )) +            icon = cacheDir + bookmark.icon() + QL1S(".png"); +         +        parent.appendInside(markup( QL1S("img") )); +        parent.lastChild().setAttribute( QL1S("src") , icon); +        parent.lastChild().setAttribute( QL1S("width") , QL1S("16")); +        parent.lastChild().setAttribute( QL1S("height") , QL1S("16")); +        parent.appendInside( QL1S(" ") ); +        parent.appendInside(markup( QL1S("a") )); +        parent.lastChild().setAttribute( QL1S("href") , bookmark.url().prettyUrl());          parent.lastChild().setPlainText(bookmark.fullText()); -        parent.appendInside("<br/>"); +        parent.appendInside( QL1S("<br />") );      }  }  void NewTabPage::closedTabsPage()  { -    m_root.addClass("closedTabs"); +    m_root.addClass( QL1S("closedTabs") );      QList<HistoryItem> links = Application::instance()->mainWindow()->mainView()->recentlyClosedTabs();      if (links.isEmpty())      { -        m_root.addClass("empty"); +        m_root.addClass( QL1S("empty") );          m_root.setPlainText(i18n("There are no recently closed tabs"));          return;      } @@ -512,7 +536,7 @@ void NewTabPage::closedTabsPage()                 ? validPreview(i, item.url, item.title)                 : loadingPreview(i, item.url); -        prev.setAttribute("id", "preview" + QVariant(i).toString()); +        prev.setAttribute( QL1S("id"),  QL1S("preview") + QVariant(i).toString());          hideControls(prev);          m_root.appendInside(prev);      } @@ -525,7 +549,7 @@ QString NewTabPage::checkTitle(const QString &title)      if (t.length() > 23)      {          t.truncate(20); -        t += "..."; +        t +=  QL1S("...");      }      return t;  } @@ -533,69 +557,69 @@ QString NewTabPage::checkTitle(const QString &title)  void NewTabPage::downloadsPage()  { -    m_root.addClass("downloads"); +    m_root.addClass( QL1S("downloads") );      const QWebElement clearData = createLinkItem(i18n("Clear Private Data"),                                                   QL1S("about:downloads/clear"),                                                   QL1S("edit-clear"),                                                   KIconLoader::Toolbar); -    m_root.document().findFirst("#actions").appendInside(clearData); +    m_root.document().findFirst( QL1S("#actions") ).appendInside(clearData);      DownloadList list = Application::instance()->downloads();      if (list.isEmpty())      { -        m_root.addClass("empty"); +        m_root.addClass( QL1S("empty") );          m_root.setPlainText(i18n("There are no recently downloaded files to show"));          return;      }      foreach(const DownloadItem &item, list)      { -        m_root.prependInside(markup("div")); +        m_root.prependInside(markup( QL1S("div") ));          QWebElement div = m_root.firstChild(); -        div.addClass("download"); +        div.addClass( QL1S("download") );          KUrl u = KUrl(item.destUrlString);          QString fName = u.fileName();          QString dir = QL1S("file://") + u.directory(); -        QString file = dir + '/' + fName; +        QString file = dir +  QL1C('/') + fName;          KIconLoader *loader = KIconLoader::global(); -        QString iconPath = "file://" + loader->iconPath(KMimeType::iconNameForUrl(u), KIconLoader::Desktop); +        QString iconPath = QL1S("file://") + loader->iconPath(KMimeType::iconNameForUrl(u), KIconLoader::Desktop); -        div.appendInside(markup("img")); -        div.lastChild().setAttribute("src", iconPath); +        div.appendInside(markup( QL1S("img") )); +        div.lastChild().setAttribute( QL1S("src"), iconPath); -        div.appendInside("<strong>" + fName + "</strong>"); -        div.appendInside(" - "); +        div.appendInside( QL1S("<strong>") + fName +  QL1S("</strong>") ); +        div.appendInside( QL1S(" - ") );          QString date = KGlobal::locale()->formatDateTime(item.dateTime, KLocale::FancyLongDate); -        div.appendInside("<em>" + date + "</em>"); -        div.appendInside("<br/>"); +        div.appendInside( QL1S("<em>") + date +  QL1S("</em>") ); +        div.appendInside( QL1S("<br />") ); -        div.appendInside("<a href=" + item.srcUrlString + '>' + item.srcUrlString + "</a>"); -        div.appendInside("<br/>"); +        div.appendInside( QL1S("<a href=") + item.srcUrlString +  QL1C('>') + item.srcUrlString +  QL1S("</a>") ); +        div.appendInside( QL1S("<br />") ); -        div.appendInside(markup("a")); -        div.lastChild().setAttribute("href", dir); +        div.appendInside(markup( QL1S("a") )); +        div.lastChild().setAttribute( QL1S("href"), dir);          div.lastChild().setPlainText(i18n("Open directory")); -        div.appendInside(" - "); -        div.appendInside(markup("a")); -        div.lastChild().setAttribute("href", file); +        div.appendInside( QL1S(" - ") ); +        div.appendInside(markup( QL1S("a") )); +        div.lastChild().setAttribute( QL1S("href"), file);          div.lastChild().setPlainText(i18n("Open file"));      }  } +  QWebElement NewTabPage::createLinkItem(const QString &title, const QString &urlString, const QString &iconPath, int groupOrSize) const  {      const KIconLoader * const loader = KIconLoader::global(); -    QWebElement nav = markup(QL1S(".link")); -    nav.findFirst(QString('a')).setAttribute(QL1S("href"), urlString); -    nav.findFirst(QL1S("img")).setAttribute(QL1S("src"), -                                                     QString::fromLatin1("file://") + loader->iconPath(iconPath, groupOrSize)); -    nav.findFirst(QL1S("span")).appendInside(title); +    QWebElement nav = markup( QL1S(".link") ); +    nav.findFirst(  QL1S("a") ).setAttribute( QL1S("href"), urlString); +    nav.findFirst( QL1S("img") ).setAttribute( QL1S("src"), QL1S("file://") + loader->iconPath(iconPath, groupOrSize)); +    nav.findFirst( QL1S("span") ).appendInside(title);      return nav;  } diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 3ec0b2fa..1f4a0367 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -79,7 +79,6 @@ void IconButton::mouseReleaseEvent(QMouseEvent* event)  UrlBar::UrlBar(QWidget *parent)          : KLineEdit(parent)          , _tab(0) -        , _privateMode(false)          , _icon(new IconButton(this))          , _suggestionTimer(new QTimer(this))  { @@ -159,7 +158,7 @@ void UrlBar::paintEvent(QPaintEvent *event)      QColor backgroundColor;      QColor foregroundColor; -    if (_privateMode) +    if (QWebSettings::globalSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled))      {          backgroundColor = QColor(220, 220, 220);  // light gray          foregroundColor = Qt::black; @@ -289,12 +288,6 @@ void UrlBar::focusInEvent(QFocusEvent *event)  } -void UrlBar::setPrivateMode(bool on) -{ -    _privateMode = on; -} - -  void UrlBar::dropEvent(QDropEvent *event)  {      KLineEdit::dropEvent(event); @@ -505,8 +498,15 @@ void UrlBar::suggest()  void UrlBar::refreshFavicon()  { +    if(QWebSettings::globalSettings()->testAttribute(QWebSettings::PrivateBrowsingEnabled)) +    { +        _icon->setIcon(KIcon("view-media-artist")); +        return; +    } +          KUrl u = _tab->url(); -    if(u.scheme() == QL1S("about")) { +    if(u.scheme() == QL1S("about"))  +    {          _icon->setIcon(KIcon("arrow-right"));          return;      } diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index dcd0ba5b..4cdd9d9c 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -89,7 +89,6 @@ public:      explicit UrlBar(QWidget *parent = 0);      ~UrlBar(); -    void setPrivateMode(bool on);      void activateSuggestions(bool);  public slots: @@ -124,7 +123,6 @@ private:      QWeakPointer<CompletionWidget> _box;      WebTab *_tab; -    bool _privateMode;      IconButton *_icon;      IconButtonPointerList _rightIconsList; | 
