#include <KUrlComboBox>
#include <QAbstractButton>
+#include <QLabel>
#include <QLayout>
#include <QLineEdit>
DolphinUrlNavigatorsController::registerDolphinUrlNavigator(this);
connect(this, &KUrlNavigator::returnPressed, this, &DolphinUrlNavigator::slotReturnPressed);
+
+ auto readOnlyBadge = new QLabel();
+ readOnlyBadge->setPixmap(QIcon::fromTheme(QStringLiteral("emblem-readonly")).pixmap(12, 12));
+ readOnlyBadge->setToolTip(i18nc("@info:tooltip of a 'locked' symbol in url navigator", "This folder is not writable for you."));
+ readOnlyBadge->hide();
+ setBadgeWidget(readOnlyBadge);
}
DolphinUrlNavigator::~DolphinUrlNavigator()
widthHint += widget->minimumSizeHint().width();
}
}
+ if (readOnlyBadgeVisible()) {
+ widthHint += badgeWidget()->sizeHint().width();
+ }
return QSize(widthHint, KUrlNavigator::sizeHint().height());
}
editor()->lineEdit()->setPlaceholderText(text);
}
+void DolphinUrlNavigator::setReadOnlyBadgeVisible(bool visible)
+{
+ QWidget *readOnlyBadge = badgeWidget();
+ if (readOnlyBadge) {
+ readOnlyBadge->setVisible(visible);
+ }
+}
+
+bool DolphinUrlNavigator::readOnlyBadgeVisible() const
+{
+ QWidget *readOnlyBadge = badgeWidget();
+ if (readOnlyBadge) {
+ return readOnlyBadge->isVisible();
+ }
+ return false;
+}
+
void DolphinUrlNavigator::slotReturnPressed()
{
if (!GeneralSettings::editableUrl()) {
*/
void setPlaceholderText(const QString &text);
+ /**
+ * Sets the visibility of the read-only badge at the end of the breadcrumb.
+ */
+ void setReadOnlyBadgeVisible(bool visible);
+
+ /**
+ * Returns the visibility of the read-only badge at the end of the breadcrumb.
+ */
+ bool readOnlyBadgeVisible() const;
+
public Q_SLOTS:
/**
* Switches to "breadcrumb" mode if the editable mode is not set to be
connect(m_view, &DolphinView::urlChanged, urlNavigator, &DolphinUrlNavigator::setLocationUrl);
connect(urlNavigator, &DolphinUrlNavigator::activated, this, &DolphinViewContainer::activate);
+ urlNavigator->setReadOnlyBadgeVisible(rootItem().isLocalFile() && !rootItem().isWritable());
+
m_urlNavigatorConnected = urlNavigator;
}
m_statusBar->setProgressText(QString());
updateDirectoryLoadingProgress(-1);
}
+
+ if (m_urlNavigatorConnected) {
+ m_urlNavigatorConnected->setReadOnlyBadgeVisible(false);
+ }
}
void DolphinViewContainer::slotDirectoryLoadingCompleted()
} else {
updateStatusBar();
}
+
+ if (m_urlNavigatorConnected) {
+ m_urlNavigatorConnected->setReadOnlyBadgeVisible(rootItem().isLocalFile() && !rootItem().isWritable());
+ }
}
void DolphinViewContainer::slotDirectoryLoadingCanceled()