X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4bf793794fd3842b857acde4af5db83be3a1f15d..b5cc2a6924cfd8f59611d3cec2edbb00a08b4ff1:/src/urlnavigator.cpp diff --git a/src/urlnavigator.cpp b/src/urlnavigator.cpp index c30e6ed55..f1b39fb32 100644 --- a/src/urlnavigator.cpp +++ b/src/urlnavigator.cpp @@ -23,13 +23,14 @@ #include "bookmarkselector.h" #include "dolphinsettings.h" -#include "generalsettings.h" +#include "dolphin_generalsettings.h" #include "protocolcombo.h" #include "urlnavigatorbutton.h" #include #include +#include #include #include #include @@ -37,12 +38,12 @@ #include #include -#include #include #include #include #include #include +#include UrlNavigator::HistoryElem::HistoryElem() : m_url(), @@ -68,11 +69,13 @@ UrlNavigator::UrlNavigator(const KUrl& url, QWidget* parent) : QWidget(parent), m_active(true), + m_showHiddenFiles(false), m_historyIndex(0), m_layout(0), m_protocols(0), m_protocolSeparator(0), - m_host(0) + m_host(0), + m_filler(0) { m_layout = new QHBoxLayout(); m_layout->setSpacing(0); @@ -81,21 +84,28 @@ UrlNavigator::UrlNavigator(const KUrl& url, m_history.prepend(HistoryElem(url)); QFontMetrics fontMetrics(font()); - setMinimumHeight(fontMetrics.height() + 8); - - m_toggleButton = new QCheckBox(); + setMinimumHeight(fontMetrics.height() + 10); + + // intialize toggle button which switches between the breadcrumb view + // and the traditional view + m_toggleButton = new QToolButton(); + m_toggleButton->setCheckable(true); + m_toggleButton->setAutoRaise(true); + m_toggleButton->setIcon(KIcon("editinput")); // TODO: is just a placeholder icon (?) m_toggleButton->setFocusPolicy(Qt::NoFocus); m_toggleButton->setMinimumHeight(minimumHeight()); connect(m_toggleButton, SIGNAL(clicked()), - this, SLOT(slotClicked())); + this, SLOT(switchView())); if (DolphinSettings::instance().generalSettings()->editableUrl()) { m_toggleButton->toggle(); } + // initialize the bookmark selector m_bookmarkSelector = new BookmarkSelector(this); connect(m_bookmarkSelector, SIGNAL(bookmarkActivated(const KUrl&)), this, SLOT(setUrl(const KUrl&))); + // initialize the path box of the traditional view m_pathBox = new KUrlComboBox(KUrlComboBox::Directories, true, this); KUrlCompletion* kurlCompletion = new KUrlCompletion(KUrlCompletion::DirCompletion); @@ -113,13 +123,13 @@ UrlNavigator::UrlNavigator(const KUrl& url, // Append a filler widget at the end, which automatically resizes to the // maximum available width. This assures that the URL navigator uses the // whole width, so that the clipboard content can be dropped. - QWidget* filler = new QWidget(); - filler->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + m_filler = new QWidget(); + m_filler->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_layout->addWidget(m_toggleButton); m_layout->addWidget(m_bookmarkSelector); m_layout->addWidget(m_pathBox); - m_layout->addWidget(filler); + m_layout->addWidget(m_filler); setLayout(m_layout); updateContent(); @@ -194,7 +204,7 @@ void UrlNavigator::setUrlEditable(bool editable) { if (isUrlEditable() != editable) { m_toggleButton->toggle(); - slotClicked(); + switchView(); } } @@ -222,6 +232,11 @@ void UrlNavigator::setActive(bool active) } } +void UrlNavigator::setShowHiddenFiles( bool show ) +{ + m_showHiddenFiles = show; +} + void UrlNavigator::dropUrls(const KUrl::List& urls, const KUrl& destination) { @@ -231,6 +246,14 @@ void UrlNavigator::dropUrls(const KUrl::List& urls, void UrlNavigator::setUrl(const KUrl& url) { QString urlStr(url.pathOrUrl()); + + // TODO: a patch has been submitted by Filip Brcic which adjusts + // the URL for tar and zip files. See https://bugs.kde.org/show_bug.cgi?id=142781 + // for details. The URL navigator part of the patch has not been committed yet, + // as the URL navigator will be subject of change and + // we might think of a more generic approach to check the protocol + MIME type for + // this use case. + //kDebug() << "setUrl(" << url << ")" << endl; if ( urlStr.length() > 0 && urlStr.at(0) == '~') { // replace '~' by the home directory @@ -334,7 +357,7 @@ void UrlNavigator::slotReturnPressed(const QString& text) KUrl typedUrl(text); if (typedUrl.hasPass()) { - typedUrl.setPass(QString::null); + typedUrl.setPass(QString()); } QStringList urls = m_pathBox->urls(); @@ -421,7 +444,9 @@ void UrlNavigator::slotProtocolChanged(const QString& protocol) else { if (!m_host) { m_protocolSeparator = new QLabel("://", this); + appendWidget(m_protocolSeparator); m_host = new QLineEdit(this); + appendWidget(m_host); connect(m_host, SIGNAL(lostFocus()), this, SLOT(slotRemoteHostActivated())); @@ -450,16 +475,16 @@ kDebug() << "received redirection from " << oldUrl << " to " << newUrl << endl; m_urls.append(newUrl);*/ } -void UrlNavigator::slotClicked() +void UrlNavigator::switchView() { + updateContent(); if (isUrlEditable()) { m_pathBox->setFocus(); - updateContent(); } else { setUrl(m_pathBox->currentText()); - emit requestActivation(); } + emit requestActivation(); } void UrlNavigator::updateHistoryElem() @@ -490,6 +515,7 @@ void UrlNavigator::updateContent() delete m_protocolSeparator; m_protocolSeparator = 0; delete m_host; m_host = 0; deleteButtons(); + m_filler->hide(); m_toggleButton->setToolTip(i18n("Browse (%1, Escape)", shortcut)); @@ -502,6 +528,7 @@ void UrlNavigator::updateContent() setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_pathBox->hide(); + m_filler->show(); // get the data from the currently selected bookmark KBookmark bookmark = m_bookmarkSelector->selectedBookmark(); @@ -541,6 +568,7 @@ void UrlNavigator::updateContent() if (!m_protocols) { deleteButtons(); m_protocols = new ProtocolCombo(protocol, this); + appendWidget(m_protocols); connect(m_protocols, SIGNAL(activated(const QString&)), this, SLOT(slotProtocolChanged(const QString&))); } @@ -553,7 +581,7 @@ void UrlNavigator::updateContent() QString hostText = url().host(); if (!url().user().isEmpty()) { - hostText = url().user() + "@" + hostText; + hostText = url().user() + '@' + hostText; } if (!m_host) {