diff --git a/krusader/GUI/mediabutton.cpp b/krusader/GUI/mediabutton.cpp --- a/krusader/GUI/mediabutton.cpp +++ b/krusader/GUI/mediabutton.cpp @@ -169,6 +169,18 @@ mountCheckerTimer.start(1000); } +bool isMountPointHidden(KConfigGroup *_config, const QString &mountPoint) { + printf("isMountPointHidden is called for '%s'\n", mountPoint.toStdString().c_str()); + QStringList defaultHiddenMountpoints; // Empty list + QStringList hiddenMountPoints = _config->readEntry("Hidden Mountpoints", defaultHiddenMountpoints); + for (auto &listEntry : hiddenMountPoints) { + if (mountPoint == listEntry) { + return true; + } + } + return false; +} + bool MediaButton::getNameAndIcon(Solid::Device & device, QString &name, QIcon &iconOut) { auto *access = device.as(); @@ -220,6 +232,10 @@ return false; } + if (isMountPointHidden(&cfg, path)) { + return false; + } + if (printSize) { QString showSizeSetting = cfg.readEntry("ShowSize", "Always"); if (showSizeSetting == "WhenNoLabel") diff --git a/krusader/Konfigurator/kgpanel.h b/krusader/Konfigurator/kgpanel.h --- a/krusader/Konfigurator/kgpanel.h +++ b/krusader/Konfigurator/kgpanel.h @@ -55,7 +55,11 @@ void setupMediaMenuTab(); void setupLayoutTab(); void setupView(KrViewInstance *instance, QWidget *parent); + void createIgnoredMountpointsList(QWidget *tab, QBoxLayout *tabLayout); + void slotAddMountpoint(); + void slotRemoveMountpoint(); QTabWidget *tabWidget; + KonfiguratorListBox *listBox; }; #endif /* __KGPANEL_H__ */ diff --git a/krusader/Konfigurator/kgpanel.cpp b/krusader/Konfigurator/kgpanel.cpp --- a/krusader/Konfigurator/kgpanel.cpp +++ b/krusader/Konfigurator/kgpanel.cpp @@ -33,6 +33,7 @@ #include #include +#include #include "../GUI/krtreewidget.h" #include "../Panel/krsearchbar.h" @@ -40,6 +41,8 @@ #include "../Panel/PanelView/krview.h" #include "../Panel/PanelView/krviewfactory.h" #include "../Panel/krlayoutfactory.h" +#include "../icon.h" +#include "../krglobal.h" enum { PAGE_GENERAL = 0, @@ -699,12 +702,67 @@ sizeof(showSizeValues) / sizeof(*showSizeValues), tab, false, false, PAGE_MEDIA_MENU); showSizeHBox->addWidget(showSizeCmb); + createIgnoredMountpointsList(tab, tabLayout); showSizeHBox->addStretch(); tabLayout->addLayout(showSizeHBox); tabLayout->addStretch(); } +void KgPanel::createIgnoredMountpointsList(QWidget *tab, QBoxLayout *tabLayout) { + QWidget *vboxWidget2 = new QWidget(tab); + tabLayout->addWidget(vboxWidget2); + auto *vbox2 = new QVBoxLayout(vboxWidget2); + + QWidget *hboxWidget3 = new QWidget(vboxWidget2); + vbox2->addWidget(hboxWidget3); + + auto *hbox3 = new QHBoxLayout(hboxWidget3); + + QLabel *atomLabel = new QLabel(i18n("Hide following mountpoints:"), hboxWidget3); + hbox3->addWidget(atomLabel); + + int size = QFontMetrics(atomLabel->font()).height(); + + auto *addButton = new QToolButton(hboxWidget3); + hbox3->addWidget(addButton); + + QPixmap iconPixmap = Icon("list-add").pixmap(size); + addButton->setFixedSize(iconPixmap.width() + 4, iconPixmap.height() + 4); + addButton->setIcon(QIcon(iconPixmap)); + connect(addButton, &QToolButton::clicked, this, &KgPanel::slotAddMountpoint); + + auto *removeButton = new QToolButton(hboxWidget3); + hbox3->addWidget(removeButton); + + iconPixmap = Icon("list-remove").pixmap(size); + removeButton->setFixedSize(iconPixmap.width() + 4, iconPixmap.height() + 4); + removeButton->setIcon(QIcon(iconPixmap)); + connect(removeButton, &QToolButton::clicked, this, &KgPanel::slotRemoveMountpoint); + + QStringList defaultHiddenMountpoints; // Empty list + listBox = createListBox("MediaMenu", "Hidden Mountpoints", + defaultHiddenMountpoints, vboxWidget2, true, PAGE_MEDIA_MENU); + vbox2->addWidget(listBox); +} + +void KgPanel::slotAddMountpoint() { + bool ok; + QString atomExt = QInputDialog::getText(this, i18n("Add new hidden mount point"), i18n("Mount point:"), + QLineEdit::Normal, QString(), &ok); + + if (ok) { + listBox->addItem(atomExt); + } +} + +void KgPanel::slotRemoveMountpoint() { + QList list = listBox->selectedItems(); + + for (int i = 0; i != list.count(); i++) + listBox->removeItem(list[i]->text()); +} + void KgPanel::slotEnablePanelToolbar() { bool enableTB = buttonsCheckboxes->find("Panel Toolbar visible")->isChecked();