#include <KDirLister>
#include <KIO/Job>
+#include <kio_version.h>
#include <KLocalizedString>
-#include <KLazyLocalizedString>
#include <KUrlMimeData>
#include <QElapsedTimer>
void KFileItemModel::setShowHiddenFiles(bool show)
{
+#if KIO_VERSION < QT_VERSION_CHECK(5, 100, 0)
m_dirLister->setShowingDotFiles(show);
+#else
+ m_dirLister->setShowHiddenFiles(show);
+#endif
m_dirLister->emitChanges();
if (show) {
dispatchPendingItemsToInsert();
bool KFileItemModel::showHiddenFiles() const
{
+#if KIO_VERSION < QT_VERSION_CHECK(5, 100, 0)
return m_dirLister->showingDotFiles();
+#else
+ return m_dirLister->showHiddenFiles();
+#endif
}
void KFileItemModel::setShowDirectoriesOnly(bool enabled)
m_expandedDirs.remove(targetUrl);
m_dirLister->stop(url);
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 92, 0)
+ m_dirLister->forgetDirs(url);
+#endif
const int parentLevel = expandedParentsCount(index);
const int itemCount = m_itemData.count();
const QUrl url = itemData->item.url();
m_expandedDirs.remove(targetUrl);
m_dirLister->stop(url); // TODO: try to unit-test this, see https://bugs.kde.org/show_bug.cgi?id=332102#c11
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 92, 0)
+ m_dirLister->forgetDirs(url);
+#endif
expandedChildren.append(targetUrl);
}
++childIndex;
indexesToRemove.reserve(items.count());
KFileItemList dirsChanged;
+ const auto currentDir = directory();
+
for (const KFileItem& item : items) {
+ if (item.url() == currentDir) {
+ Q_EMIT currentDirectoryRemoved();
+ return;
+ }
+
const int indexForItem = index(item);
if (indexForItem >= 0) {
indexesToRemove.append(indexForItem);
void KFileItemModel::prepareItemsForSorting(QList<ItemData*>& itemDataList)
{
switch (m_sortRole) {
+ case ExtensionRole:
case PermissionsRole:
case OwnerRole:
case GroupRole:
data.insert(sharedValue("text"), item.text());
}
+ if (m_requestRole[ExtensionRole] && !isDir) {
+ data.insert(sharedValue("extension"), QFileInfo(item.name()).suffix());
+ }
+
if (m_requestRole[SizeRole] && !isDir) {
data.insert(sharedValue("size"), item.size());
}
break;
}
+ case AccessTimeRole: {
+ const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_ACCESS_TIME, -1);
+ const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_ACCESS_TIME, -1);
+ if (dateTimeA < dateTimeB) {
+ return -1;
+ } else if (dateTimeA > dateTimeB) {
+ return +1;
+ }
+ break;
+ }
+
case CreationTimeRole: {
const long long dateTimeA = itemA.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1);
const long long dateTimeB = itemB.entry().numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1);
{ "tags", TagsRole, kli18nc("@label", "Tags"), KLazyLocalizedString(), true, false },
{ "comment", CommentRole, kli18nc("@label", "Comment"), KLazyLocalizedString(), true, false },
{ "title", TitleRole, kli18nc("@label", "Title"), kli18nc("@label", "Document"), true, true },
+ { "author", AuthorRole, kli18nc("@label", "Author"), kli18nc("@label", "Document"), true, true },
{ "wordCount", WordCountRole, kli18nc("@label", "Word Count"), kli18nc("@label", "Document"), true, true },
{ "lineCount", LineCountRole, kli18nc("@label", "Line Count"), kli18nc("@label", "Document"), true, true },
{ "imageDateTime", ImageDateTimeRole, kli18nc("@label", "Date Photographed"), kli18nc("@label", "Image"), true, true },
{ "aspectRatio", AspectRatioRole, kli18nc("@label", "Aspect Ratio"), kli18nc("@label", "Video"), true, true },
{ "frameRate", FrameRateRole, kli18nc("@label", "Frame Rate"), kli18nc("@label", "Video"), true, true },
{ "path", PathRole, kli18nc("@label", "Path"), kli18nc("@label", "Other"), false, false },
+ { "extension", ExtensionRole, kli18nc("@label", "File Extension"), kli18nc("@label", "Other"), false, false },
{ "deletiontime", DeletionTimeRole, kli18nc("@label", "Deletion Time"), kli18nc("@label", "Other"), false, false },
{ "destination", DestinationRole, kli18nc("@label", "Link Destination"), kli18nc("@label", "Other"), false, false },
{ "originUrl", OriginUrlRole, kli18nc("@label", "Downloaded From"), kli18nc("@label", "Other"), true, false },