/***************************************************************************
- * Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
+ * Copyright (C) 2006 by Peter Penz (<peter.penz@gmx.at>) *
* Copyright (C) 2006 by Aaron J. Seigo (<aseigo@kde.org>) *
* Copyright (C) 2006 by Patrice Tremblay *
* *
#include "urlnavigator.h"
-#include <assert.h>
+#include "bookmarkselector.h"
+#include "dolphinsettings.h"
+#include "generalsettings.h"
+#include "protocolcombo.h"
+#include "urlnavigatorbutton.h"
-#include <qcombobox.h>
-#include <qfont.h>
-#include <qlabel.h>
-#include <q3listbox.h>
-#include <qlineedit.h>
-#include <qobject.h>
-#include <q3popupmenu.h>
-#include <qpushbutton.h>
-#include <qsizepolicy.h>
-#include <qtooltip.h>
-//Added by qt3to4:
-#include <QDir>
-#include <Q3ValueList>
-#include <QKeyEvent>
-#include <QCheckBox>
+#include <assert.h>
-#include <kaction.h>
-#include <kactioncollection.h>
-#include <kiconloader.h>
-#include <kio/job.h>
#include <kfileitem.h>
#include <klocale.h>
#include <kprotocolinfo.h>
-#include <kurl.h>
#include <kurlcombobox.h>
#include <kurlcompletion.h>
-#include <kbookmarkmanager.h>
-#include <kvbox.h>
-#include "bookmarkselector.h"
-#include "dolphinsettings.h"
-#include "generalsettings.h"
-#include "protocolcombo.h"
-#include "urlnavigatorbutton.h"
+#include <QDir>
+#include <QCheckBox>
+#include <QLabel>
+#include <QLineEdit>
UrlNavigator::HistoryElem::HistoryElem() :
m_url(),
const KUrl& UrlNavigator::url() const
{
assert(!m_history.empty());
- return m_history[m_historyIndex].url();
+ QLinkedList<HistoryElem>::const_iterator it = m_history.begin();
+ it += m_historyIndex;
+ return (*it).url();
}
KUrl UrlNavigator::url(int index) const
return path;
}
-const Q3ValueList<UrlNavigator::HistoryElem>& UrlNavigator::history(int& index) const
+const QLinkedList<UrlNavigator::HistoryElem>& UrlNavigator::history(int& index) const
{
index = m_historyIndex;
return m_history;
void UrlNavigator::editUrl(bool editOrBrowse)
{
setUrlEditable(editOrBrowse);
-
- if (editOrBrowse)
- {
+ if (editOrBrowse) {
m_pathBox->setFocus();
}
}
void UrlNavigator::dropUrls(const KUrl::List& urls,
const KUrl& destination)
{
- kDebug() << "------------------- URLS dropped" << endl;
emit urlsDropped(urls, destination);
}
// Check whether the previous element of the history has the same Url.
// If yes, just go forward instead of inserting a duplicate history
// element.
- const KUrl& nextUrl = m_history[m_historyIndex - 1].url();
+ QLinkedList<HistoryElem>::const_iterator it = m_history.begin();
+ it += m_historyIndex - 1;
+ const KUrl& nextUrl = (*it).url();
if (transformedUrl == nextUrl) {
goForward();
// kDebug() << "goin' forward in history" << endl;
}
}
- const KUrl& currUrl = m_history[m_historyIndex].url();
+ QLinkedList<HistoryElem>::iterator it = m_history.begin() + m_historyIndex;
+ const KUrl& currUrl = (*it).url();
if (currUrl == transformedUrl) {
// don't insert duplicate history elements
// kDebug() << "currUrl == transformedUrl" << endl;
}
updateHistoryElem();
-
- const Q3ValueListIterator<UrlNavigator::HistoryElem> it = m_history.at(m_historyIndex);
m_history.insert(it, HistoryElem(transformedUrl));
updateContent();
void UrlNavigator::storeContentsPosition(int x, int y)
{
- m_history[m_historyIndex].setContentsX(x);
- m_history[m_historyIndex].setContentsY(y);
+ QLinkedList<HistoryElem>::iterator it = m_history.begin() + m_historyIndex;
+ (*it).setContentsX(x);
+ (*it).setContentsY(y);
}
void UrlNavigator::keyReleaseEvent(QKeyEvent* event)
m_pathBox->setUrls(urls, KUrlComboBox::RemoveBottom);
setUrl(typedUrl);
- // The Url might have been adjusted by UrlNavigator::setUrl(), hence
+ // The URL might have been adjusted by UrlNavigator::setUrl(), hence
// synchronize the result in the path box.
m_pathBox->setUrl(url());
}
url.setProtocol(protocol);
//url.setPath(KProtocolInfo::protocolClass(protocol) == ":local" ? "/" : "");
url.setPath("/");
- Q3ValueList<QWidget*>::const_iterator it = m_navButtons.constBegin();
- while (it != m_navButtons.constEnd()) {
+ QLinkedList<UrlNavigatorButton*>::const_iterator it = m_navButtons.begin();
+ const QLinkedList<UrlNavigatorButton*>::const_iterator itEnd = m_navButtons.end();
+ while (it != itEnd) {
(*it)->close();
(*it)->deleteLater();
++it;
assert(m_historyIndex >= 0);
const KFileItem* item = 0; // TODO: m_dolphinView->currentFileItem();
if (item != 0) {
- m_history[m_historyIndex].setCurrentFileName(item->name());
+ QLinkedList<HistoryElem>::iterator it = m_history.begin() + m_historyIndex;
+ (*it).setCurrentFileName(item->name());
}
}
void UrlNavigator::updateContent()
{
- // delete all existing Url navigator buttons
- Q3ValueList<QWidget*>::const_iterator it = m_navButtons.constBegin();
- while (it != m_navButtons.constEnd()) {
- (*it)->close();
- (*it)->deleteLater();
- ++it;
- }
- m_navButtons.clear();
-
m_bookmarkSelector->updateSelection(url());
m_toggleButton->setToolTip(QString());
delete m_protocols; m_protocols = 0;
delete m_protocolSeparator; m_protocolSeparator = 0;
delete m_host; m_host = 0;
+ deleteButtons();
m_toggleButton->setToolTip(i18n("Browse (%1, Escape)", shortcut));
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
m_pathBox->hide();
- QString dir_name;
// get the data from the currently selected bookmark
KBookmark bookmark = m_bookmarkSelector->selectedBookmark();
}
const uint len = bookmarkPath.length();
- // calculate the start point for the Url navigator buttons by counting
- // the slashs inside the bookmark Url
+ // calculate the start point for the URL navigator buttons by counting
+ // the slashs inside the bookmark URL
int slashCount = 0;
for (uint i = 0; i < len; ++i) {
if (bookmarkPath.at(i) == QChar('/')) {
if (!url().isLocalFile() && bookmark.isNull()) {
QString protocol = url().protocol();
if (!m_protocols) {
+ deleteButtons();
m_protocols = new ProtocolCombo(protocol, this);
connect(m_protocols, SIGNAL(activated(const QString&)),
this, SLOT(slotProtocolChanged(const QString&)));
}
m_protocols->show();
- if (KProtocolInfo::protocolClass(protocol) != ":local")
- {
+ if (KProtocolInfo::protocolClass(protocol) != ":local") {
QString hostText = url().host();
- if (!url().user().isEmpty())
- {
+ if (!url().user().isEmpty()) {
hostText = url().user() + "@" + hostText;
}
}
}
- // create Url navigator buttons
- int idx = slashCount;
- bool hasNext = true;
- do {
- dir_name = path.section('/', idx, idx);
- const bool isFirstButton = (idx == slashCount);
- hasNext = isFirstButton || !dir_name.isEmpty();
- if (hasNext) {
- UrlNavigatorButton* button = new UrlNavigatorButton(idx, this);
- if (isFirstButton) {
- // the first Url navigator button should get the name of the
- // bookmark instead of the directory name
- QString text = bookmark.text();
- if (text.isEmpty()) {
- if (url().isLocalFile())
- {
- text = i18n("Custom Path");
- }
- else
- {
- delete button;
- ++idx;
- continue;
- }
+ updateButtons(path, slashCount);
+ }
+}
+
+void UrlNavigator::updateButtons(const QString& path, int startIndex)
+{
+ QLinkedList<UrlNavigatorButton*>::iterator it = m_navButtons.begin();
+ const QLinkedList<UrlNavigatorButton*>::const_iterator itEnd = m_navButtons.end();
+ bool createButton = false;
+
+ int idx = startIndex;
+ bool hasNext = true;
+ do {
+ createButton = (it == itEnd);
+
+ const QString dirName = path.section('/', idx, idx);
+ const bool isFirstButton = (idx == startIndex);
+ hasNext = isFirstButton || !dirName.isEmpty();
+ if (hasNext) {
+ QString text;
+ if (isFirstButton) {
+ // the first URL navigator button should get the name of the
+ // bookmark instead of the directory name
+ const KBookmark bookmark = m_bookmarkSelector->selectedBookmark();
+ text = bookmark.text();
+ if (text.isEmpty()) {
+ if (url().isLocalFile()) {
+ text = i18n("Custom Path");
+ }
+ else {
+ ++idx;
+ continue;
}
- button->setText(text);
}
+ }
+
+ UrlNavigatorButton* button = 0;
+ if (createButton) {
+ button = new UrlNavigatorButton(idx, this);
+ }
+ else {
+ button = *it;
+ button->setIndex(idx);
+ }
+
+ if (isFirstButton) {
+ button->setText(text);
+ }
+
+ if (createButton) {
button->show();
m_navButtons.append(button);
- ++idx;
}
- } while (hasNext);
+ else {
+ ++it;
+ }
+ ++idx;
+ }
+ } while (hasNext);
+
+ // delete buttons which are not used anymore
+ QLinkedList<UrlNavigatorButton*>::iterator itBegin = it;
+ while (it != itEnd) {
+ (*it)->close();
+ (*it)->deleteLater();
+ ++it;
+ }
+ m_navButtons.erase(itBegin, m_navButtons.end());
+}
+
+void UrlNavigator::deleteButtons()
+{
+ QLinkedList<UrlNavigatorButton*>::iterator itBegin = m_navButtons.begin();
+ QLinkedList<UrlNavigatorButton*>::iterator itEnd = m_navButtons.end();
+ QLinkedList<UrlNavigatorButton*>::iterator it = itBegin;
+ while (it != itEnd) {
+ (*it)->close();
+ (*it)->deleteLater();
+ ++it;
}
+ m_navButtons.erase(itBegin, itEnd);
}
#include "urlnavigator.moc"