return m_sortFoldersFirst;
}
+void KFileItemModel::setShowHiddenFiles(bool show)
+{
+ KDirLister* dirLister = m_dirLister.data();
+ if (dirLister) {
+ dirLister->setShowingDotFiles(show);
+ dirLister->emitChanges();
+ if (show) {
+ slotCompleted();
+ }
+ }
+}
+
+bool KFileItemModel::showHiddenFiles() const
+{
+ const KDirLister* dirLister = m_dirLister.data();
+ return dirLister ? dirLister->showingDotFiles() : false;
+}
+
QMimeData* KFileItemModel::createMimeData(const QSet<int>& indexes) const
{
QMimeData* data = new QMimeData();
*
* Also the recursive expansion of sub-directories is supported by
* KFileItemModel::setExpanded().
+ *
+ * TODO: In the longterm instead of passing a KDirLister just an URL should
+ * be passed and a KDirLister used internally. This solves the following issues:
+ * - The user of the API does not need to decide whether he listens to KDirLister
+ * or KFileItemModel.
+ * - It resolves minor conceptual differences between KDirLister and KFileItemModel.
+ * E.g. there is no way for KFileItemModel to check whether a completed() signal
+ * will be emitted after newItems() will be send by KDirLister or not (in the case
+ * of setShowingDotFiles() no completed() signal will get emitted).
*/
class LIBDOLPHINPRIVATE_EXPORT KFileItemModel : public KItemModelBase
{
void setSortFoldersFirst(bool foldersFirst);
bool sortFoldersFirst() const;
+ void setShowHiddenFiles(bool show);
+ bool showHiddenFiles() const;
+
/** @reimp */
virtual QMimeData* createMimeData(const QSet<int>& indexes) const;
QString nameFilter() const;
signals:
+ /**
+ * Is emitted after the loading of a directory has been completed or new
+ * items have been inserted to an already loaded directory. Usually
+ * one or more itemsInserted() signals are emitted before loadingCompleted()
+ * (the only exception is loading an empty directory, where only a
+ * loadingCompleted() signal gets emitted).
+ */
void loadingCompleted();
protected:
if (m_dirLister) {
KFileItemModel* model = fileItemModel();
const QSet<KUrl> expandedUrls = model->expandedUrls();
- m_dirLister->setShowingDotFiles(show);
- m_dirLister->openUrl(m_dirLister->url(), KDirLister::Reload);
+ model->setShowHiddenFiles(show);
model->setExpanded(expandedUrls);
}
}
m_dirLister->setMainWindow(window());
m_dirLister->setDelayedMimeTypes(true);
m_dirLister->setAutoErrorHandlingEnabled(false, this);
- m_dirLister->setShowingDotFiles(FoldersPanelSettings::hiddenFilesShown());
KFileItemListView* view = new KFileItemListView();
view->setWidgetCreator(new KItemListWidgetCreator<KFileItemListWidget>());
view->setOpacity(0);
KFileItemModel* model = new KFileItemModel(m_dirLister, this);
+ model->setShowHiddenFiles(FoldersPanelSettings::hiddenFilesShown());
// Use a QueuedConnection to give the view the possibility to react first on the
// finished loading.
connect(model, SIGNAL(loadingCompleted()), this, SLOT(slotLoadingCompleted()), Qt::QueuedConnection);
ViewProperties props(url());
props.setHiddenFilesShown(show);
- m_dirLister->setShowingDotFiles(show);
- m_dirLister->emitChanges();
+ fileItemModel()->setShowHiddenFiles(show);
emit hiddenFilesShownChanged(show);
}
}
const bool hiddenFilesShown = props.hiddenFilesShown();
- if (hiddenFilesShown != m_dirLister->showingDotFiles()) {
- m_dirLister->setShowingDotFiles(hiddenFilesShown);
- m_dirLister->emitChanges();
+ if (hiddenFilesShown != model->showHiddenFiles()) {
+ model->setShowHiddenFiles(hiddenFilesShown);
emit hiddenFilesShownChanged(hiddenFilesShown);
}