]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Show a "Loading..." placeholder text
authorMufeed Ali <fushinari@protonmail.com>
Tue, 29 Jun 2021 13:52:57 +0000 (13:52 +0000)
committerNate Graham <nate@kde.org>
Tue, 29 Jun 2021 13:52:57 +0000 (13:52 +0000)
Since a placeholder text is being used when the folder is empty, it
also makes sense to show a similar placeholder text when the view is
still loading, especially now that the status bar which previously
contained a loading indicator now disappears when a folder is loading.

src/views/dolphinview.cpp
src/views/dolphinview.h

index ce77dd325c28023f6a56c28691d4537555fa0146..9d253c4e0cb936825d11649d673b0e2873b5eb7a 100644 (file)
@@ -88,7 +88,8 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
     m_markFirstNewlySelectedItemAsCurrent(false),
     m_versionControlObserver(nullptr),
     m_twoClicksRenamingTimer(nullptr),
-    m_placeholderLabel(nullptr)
+    m_placeholderLabel(nullptr),
+    m_showLoadingPlaceholderTimer(nullptr)
 {
     m_topLayout = new QVBoxLayout(this);
     m_topLayout->setSpacing(0);
@@ -126,6 +127,11 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
     connect(m_container->horizontalScrollBar(), &QScrollBar::valueChanged, this, [=] { hideToolTip(); });
     connect(m_container->verticalScrollBar(), &QScrollBar::valueChanged, this, [=] { hideToolTip(); });
 
+    m_showLoadingPlaceholderTimer = new QTimer(this);
+    m_showLoadingPlaceholderTimer->setInterval(500);
+    m_showLoadingPlaceholderTimer->setSingleShot(true);
+    connect(m_showLoadingPlaceholderTimer, &QTimer::timeout, this, &DolphinView::showLoadingPlaceholder);
+
     // Show some placeholder text for empty folders
     // This is made using a heavily-modified QLabel rather than a KTitleWidget
     // because KTitleWidget can't be told to turn off mouse-selectable text
@@ -2064,10 +2070,23 @@ void DolphinView::slotSwipeUp()
     Q_EMIT goUpRequested();
 }
 
+void DolphinView::showLoadingPlaceholder()
+{
+    m_placeholderLabel->setText(i18n("Loading..."));
+    m_placeholderLabel->setVisible(true);
+}
+
 void DolphinView::updatePlaceholderLabel()
 {
-    if (m_loading || itemsCount() > 0) {
+    m_showLoadingPlaceholderTimer->stop();
+    if (itemsCount() > 0) {
+        m_placeholderLabel->setVisible(false);
+        return;
+    }
+
+    if (m_loading) {
         m_placeholderLabel->setVisible(false);
+        m_showLoadingPlaceholderTimer->start();
         return;
     }
 
@@ -2085,7 +2104,7 @@ void DolphinView::updatePlaceholderLabel()
         m_placeholderLabel->setText(i18n("No shared folders found"));
     } else if (m_url.scheme() == QLatin1String("network")) {
         m_placeholderLabel->setText(i18n("No relevant network resources found"));
-    } else if (m_url.scheme() == QLatin1String("mtp")) {
+    } else if (m_url.scheme() == QLatin1String("mtp") && m_url.path() == QLatin1String("/")) {
         m_placeholderLabel->setText(i18n("No MTP-compatible devices found"));
     } else if (m_url.scheme() == QLatin1String("bluetooth")) {
         m_placeholderLabel->setText(i18n("No Bluetooth devices found"));
index bb093774fc6576aed1407223856bfdff6753e75c..e4d7798300bee6f4cb0ccfbd392e9ddef5501fc8 100644 (file)
@@ -839,6 +839,7 @@ private:
 
 private:
     void updatePalette();
+    void showLoadingPlaceholder();
 
     bool m_active;
     bool m_tabsForFiles;
@@ -878,6 +879,7 @@ private:
     QTimer* m_twoClicksRenamingTimer;
     QUrl m_twoClicksRenamingItemUrl;
     QLabel* m_placeholderLabel;
+    QTimer* m_showLoadingPlaceholderTimer;
 
     // For unit tests
     friend class TestBase;