X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d8ab89171dacd45051060a622aade64e51743cad..abf17941f7:/src/urlnavigatorbutton.cpp diff --git a/src/urlnavigatorbutton.cpp b/src/urlnavigatorbutton.cpp index 9fe2186da..3be037ced 100644 --- a/src/urlnavigatorbutton.cpp +++ b/src/urlnavigatorbutton.cpp @@ -19,32 +19,24 @@ ***************************************************************************/ #include "urlnavigatorbutton.h" -#include -#include -#include -#include -#include -//Added by qt3to4: -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include "urlnavigator.h" -#include "dolphinview.h" -#include "dolphinmainwindow.h" + +#include +#include +#include +#include + +#include +#include +#include UrlNavigatorButton::UrlNavigatorButton(int index, UrlNavigator* parent) : UrlButton(parent), m_index(-1), + m_popupDelay(0), m_listJob(0) { setAcceptDrops(true); @@ -53,6 +45,7 @@ UrlNavigatorButton::UrlNavigatorButton(int index, UrlNavigator* parent) : connect(this, SIGNAL(clicked()), this, SLOT(updateNavigatorUrl())); m_popupDelay = new QTimer(this); + m_popupDelay->setSingleShot(true); connect(m_popupDelay, SIGNAL(timeout()), this, SLOT(startListJob())); connect(this, SIGNAL(pressed()), this, SLOT(startPopupDelay())); } @@ -117,10 +110,7 @@ void UrlNavigatorButton::paintEvent(QPaintEvent* event) } // dimm the colors if the parent view does not have the focus - const DolphinView* parentView = urlNavigator()->dolphinView(); - const DolphinMainWindow* dolphin = parentView->mainWindow(); - - const bool isActive = (dolphin->activeView() == parentView); + const bool isActive = urlNavigator()->isActive(); if (!isActive) { QColor dimmColor(palette().brush(QPalette::Background).color()); foregroundColor = mixColors(foregroundColor, dimmColor); @@ -218,8 +208,7 @@ void UrlNavigatorButton::dropEvent(QDropEvent* event) QString path(urlNavigator()->url().prettyUrl()); path = path.section('/', 0, m_index + 2); - DolphinMainWindow* win = urlNavigator()->dolphinView()->mainWindow(); - win->dropUrls(urls, KUrl(path)); + urlNavigator()->dropUrls(urls, KUrl(path)); setDisplayHintEnabled(DraggedHint, false); update(); @@ -247,29 +236,28 @@ void UrlNavigatorButton::dragLeaveEvent(QDragLeaveEvent* event) void UrlNavigatorButton::updateNavigatorUrl() { + stopPopupDelay(); + if (m_index < 0) { return; } - UrlNavigator* navigator = urlNavigator(); - assert(navigator != 0); - navigator->setUrl(navigator->url(m_index)); + urlNavigator()->setUrl(urlNavigator()->url(m_index)); } void UrlNavigatorButton::startPopupDelay() { - if (m_popupDelay->isActive() || m_listJob || m_index < 0) { + if (m_popupDelay->isActive() || (m_listJob != 0) || (m_index < 0)) { return; } - m_popupDelay->setSingleShot(true); m_popupDelay->start(300); } void UrlNavigatorButton::stopPopupDelay() { m_popupDelay->stop(); - if (m_listJob) { + if (m_listJob != 0) { m_listJob->kill(); m_listJob = 0; } @@ -277,11 +265,11 @@ void UrlNavigatorButton::stopPopupDelay() void UrlNavigatorButton::startListJob() { - if (m_listJob) { + if (m_listJob != 0) { return; } - KUrl url = urlNavigator()->url(m_index); + const KUrl& url = urlNavigator()->url(m_index); m_listJob = KIO::listDir(url, false, false); m_subdirs.clear(); // just to be ++safe @@ -300,7 +288,7 @@ void UrlNavigatorButton::entriesList(KIO::Job* job, const KIO::UDSEntryList& ent KIO::UDSEntryList::const_iterator itEnd = entries.constEnd(); while (it != itEnd) { QString name; - bool isDir = false; + //bool isDir = false; KIO::UDSEntry entry = *it; /* KDE3 reference: @@ -348,20 +336,22 @@ void UrlNavigatorButton::listJobFinished(KJob* job) setDisplayHintEnabled(PopupActiveHint, true); update(); // ensure the button is drawn highlighted - Q3PopupMenu* dirsMenu = new Q3PopupMenu(this); - //setMenu(dirsMenu); + + KMenu* dirsMenu = new KMenu(this); QStringList::const_iterator it = m_subdirs.constBegin(); QStringList::const_iterator itEnd = m_subdirs.constEnd(); int i = 0; while (it != itEnd) { - dirsMenu->insertItem(*it, i); + QAction* action = new QAction(*it, this); + action->setData(i); + dirsMenu->addAction(action); ++it; ++i; } - int result = dirsMenu->exec(urlNavigator()->mapToGlobal(geometry().bottomLeft())); - - if (result != -1) { + const QAction* action = dirsMenu->exec(urlNavigator()->mapToGlobal(geometry().bottomLeft())); + if (action != 0) { + const int result = action->data().toInt(); KUrl url = urlNavigator()->url(m_index); url.addPath(m_subdirs[result]); urlNavigator()->setUrl(url); @@ -370,6 +360,8 @@ void UrlNavigatorButton::listJobFinished(KJob* job) m_listJob = 0; m_subdirs.clear(); delete dirsMenu; + dirsMenu = 0; + setDisplayHintEnabled(PopupActiveHint, false); }