]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinurlnavigator.cpp
DolphinView: Remove -1 interval, add setAutoActivationEnabled
[dolphin.git] / src / dolphinurlnavigator.cpp
index ad45691771be875905e7f1851d1cc4a200459845..5c32538b06b27dbbdf12d7556d24166d90ce5926 100644 (file)
@@ -16,6 +16,8 @@
 #include <KUrlComboBox>
 
 #include <QAbstractButton>
+#include <QKeyEvent>
+#include <QLabel>
 #include <QLayout>
 #include <QLineEdit>
 
@@ -49,6 +51,12 @@ DolphinUrlNavigator::DolphinUrlNavigator(const QUrl &url, QWidget *parent)
     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()
@@ -69,6 +77,9 @@ QSize DolphinUrlNavigator::sizeHint() const
             widthHint += widget->minimumSizeHint().width();
         }
     }
+    if (readOnlyBadgeVisible()) {
+        widthHint += badgeWidget()->sizeHint().width();
+    }
     return QSize(widthHint, KUrlNavigator::sizeHint().height());
 }
 
@@ -111,6 +122,23 @@ void DolphinUrlNavigator::setPlaceholderText(const QString &text)
     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()) {
@@ -118,4 +146,13 @@ void DolphinUrlNavigator::slotReturnPressed()
     }
 }
 
+void DolphinUrlNavigator::keyPressEvent(QKeyEvent *keyEvent)
+{
+    if (keyEvent->key() == Qt::Key_Escape && !isUrlEditable()) {
+        Q_EMIT requestToLoseFocus();
+        return;
+    }
+    KUrlNavigator::keyPressEvent(keyEvent);
+}
+
 #include "moc_dolphinurlnavigator.cpp"