MauiKit File Browsing

fmstatic.cpp
1#include "fmstatic.h"
2#include "placeslist.h"
3#include "tagging.h"
4
5#include <QDesktopServices>
6#include <QDirIterator>
7#include <QFileInfo>
8#include <QDateTime>
9#include <QDebug>
10#include <QSettings>
11
12#include <KLocalizedString>
13
14#if (defined Q_OS_LINUX || defined Q_OS_FREEBSD) && !defined Q_OS_ANDROID
15#include <KConfig>
16#include <KConfigGroup>
17#endif
18
19#ifdef KIO_AVAILABLE
20#include <KIO/CopyJob>
21#include <KIO/DeleteJob>
22#include <KIO/EmptyTrashJob>
23#include <KIO/MkdirJob>
24#include <KIO/SimpleJob>
25#include <KIO/OpenUrlJob>
26#include <KApplicationTrader>
27#include <KIO/PreviewJob>
28#include <KFileItem>
29#endif
30
32{
33 static const QHash<FMStatic::PATHTYPE_KEY, QString> PATHTYPE_LABEL = {{PATHTYPE_KEY::PLACES_PATH, i18n("Places")},
34 {PATHTYPE_KEY::BOOKMARKS_PATH, i18n("Bookmarks")},
38 {PATHTYPE_KEY::REMOVABLE_PATH, i18n("Removable")},
39 {PATHTYPE_KEY::UNKNOWN_TYPE, i18n("Unknown")},
44 {PATHTYPE_KEY::FISH_PATH, i18n("Remote")},
45 {PATHTYPE_KEY::MTP_PATH, i18n("Drives")},
46 {PATHTYPE_KEY::OTHER_PATH, i18n("Others")},
47 {PATHTYPE_KEY::QUICK_PATH, i18n("Quick")}};
48
49 return PATHTYPE_LABEL[key];
50}
51
52
53FMStatic::FMStatic(QObject *parent)
54 : QObject(parent)
55{}
56
58{
59 FMH::MODEL_LIST data;
60
61 for (const auto &path : items)
62 {
63 if (QUrl(path).isLocalFile() && !FMH::fileExists(QUrl(path)))
64 continue;
65
66 auto model = FMStatic::getFileInfoModel(QUrl(path));
67 model.insert(FMH::MODEL_KEY::TYPE, type);
68 data << model;
69 }
70
71 return data;
72}
73
78
79FMH::MODEL_LIST FMStatic::search(const QString &query, const QUrl &path, const bool &hidden, const bool &onlyDirs, const QStringList &filters)
80{
81 FMH::MODEL_LIST content;
82
83 if (!path.isLocalFile()) {
84 qWarning() << "URL recived is not a local file. FM::search" << path;
85 return content;
86 }
87
88 if (FMStatic::isDir(path)) {
89 QDir::Filters dirFilter;
90
92
93 if (hidden)
94 dirFilter = dirFilter | QDir::Hidden | QDir::System;
95
96 QDirIterator it(path.toLocalFile(), filters, dirFilter, QDirIterator::Subdirectories);
97 while (it.hasNext()) {
98 auto url = it.next();
99 if (it.fileName().contains(query, Qt::CaseInsensitive)) {
101 }
102 }
103 } else
104 qWarning() << "Search path does not exists" << path;
105
106 qDebug() << content;
107 return content;
108}
109
111{
112 FMH::MODEL_LIST drives;
113
114#ifdef Q_OS_ANDROID
116 return drives;
117#endif
118
119 return drives;
120}
121
123{
124 return FMStatic::defaultPaths.contains(path);
125}
126
128{
129 if (!path.isLocalFile()) {
130 qWarning() << "URL recived is not a local file, FM::parentDir" << path;
131 return path;
132 }
133
134 QDir dir(path.toLocalFile());
135 dir.cdUp();
136 return QUrl::fromLocalFile(dir.absolutePath());
137}
138
139bool FMStatic::isDir(const QUrl &path)
140{
141 if (!path.isLocalFile()) {
142 // qWarning() << "URL recived is not a local file. FM::isDir" << path;
143 return false;
144 }
145
146 const QFileInfo file(path.toLocalFile());
147 return file.isDir();
148}
149
150bool FMStatic::isCloud(const QUrl &path)
151{
153}
154
155bool FMStatic::fileExists(const QUrl &path)
156{
157 return FMH::fileExists(path);
158}
159
160QUrl FMStatic::fileDir(const QUrl &path) // the directory path of the file
161{
162 QUrl res = path;
163 if (path.isLocalFile()) {
164 const QFileInfo file(path.toLocalFile());
165 if (file.isDir())
166 res = path;
167 else
168 res = QUrl::fromLocalFile(file.dir().absolutePath());
169 } else
170 qWarning() << "The path is not a local one. FM::fileDir";
171
172 return res;
173}
174
179#if !defined KIO_AVAILABLE
180
181static bool copyRecursively(QString sourceFolder, QString destFolder)
182{
183 bool success = false;
184 QDir sourceDir(sourceFolder);
185
186 if (!sourceDir.exists())
187 return false;
188
189 QDir destDir(destFolder);
190 if (!destDir.exists())
191 destDir.mkdir(destFolder);
192
193 QStringList files = sourceDir.entryList(QDir::Files);
194 for (int i = 0; i < files.count(); i++) {
195 QString srcName = sourceFolder + QDir::separator() + files[i];
196 QString destName = destFolder + QDir::separator() + files[i];
197 success = QFile::copy(srcName, destName);
198 if (!success)
199 return false;
200 }
201
202 files.clear();
203 files = sourceDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
204 for (int i = 0; i < files.count(); i++) {
205 QString srcName = sourceFolder + QDir::separator() + files[i];
206 QString destName = destFolder + QDir::separator() + files[i];
207 success = copyRecursively(srcName, destName);
208 if (!success)
209 return false;
210 }
211
212 return true;
213}
214#endif
215
216bool FMStatic::copy(const QList<QUrl> &urls, const QUrl &destinationDir)
217{
218#ifdef KIO_AVAILABLE
219 auto job = KIO::copy(urls, destinationDir);
220 job->start();
221 return true;
222#else
223 for (const auto &url : std::as_const(urls)) {
224 QFileInfo srcFileInfo(url.toLocalFile());
225 if (!srcFileInfo.isDir() && srcFileInfo.isFile()) {
226 const auto _destination = QUrl(destinationDir.toString() + QStringLiteral("/") + FMStatic::getFileInfoModel(url)[FMH::MODEL_KEY::LABEL]);
227 if (!QFile::copy(url.toLocalFile(), _destination.toLocalFile())) {
228 continue;
229 }
230 } else {
231 const auto _destination = QUrl(destinationDir.toString() + QStringLiteral("/") + FMStatic::getFileInfoModel(url)[FMH::MODEL_KEY::LABEL]);
232 QDir destDir(_destination.toLocalFile());
233 if (!destDir.exists())
234 destDir.mkdir(_destination.toLocalFile());
235
236 if (!copyRecursively(url.toLocalFile(), _destination.toLocalFile()))
237 continue;
238 }
239 }
240 return true;
241#endif
242}
243
244bool FMStatic::group(const QList<QUrl>& urls, const QUrl& destinationDir, const QString &name)
245{
246 if(!FMStatic::fileExists(QUrl(destinationDir.toString() + QStringLiteral("/") + name)))
247 {
248 QDir(destinationDir.toLocalFile()).mkdir(name);
249 }
250
251 return FMStatic::cut(urls, destinationDir, name);
252}
253
254
255bool FMStatic::cut(const QList<QUrl> &urls, const QUrl &where)
256{
257 return FMStatic::cut(urls, where, QString());
258}
259
260bool FMStatic::cut(const QList<QUrl> &urls, const QUrl &where, const QString &name)
261{
262#ifdef KIO_AVAILABLE
263 QUrl _where = where;
264 if (!name.isEmpty())
265 _where = QUrl(where.toString() + QStringLiteral("/") + name);
266
267 auto job = KIO::move(urls, _where, KIO::HideProgressInfo);
268 job->start();
269
270 for (const auto &url : urls) {
271 QUrl where_ = QUrl(where.toString() + QStringLiteral("/") + FMStatic::getFileInfoModel(url)[FMH::MODEL_KEY::LABEL]);
272 if (!name.isEmpty())
273 where_ = QUrl(where.toString() + QStringLiteral("/") + name);
274
275 Tagging::getInstance()->updateUrl(url.toString(), where_.toString());
276 }
277#else
278 for (const auto &url : std::as_const(urls)) {
279 QUrl _where;
280 if (name.isEmpty())
281 _where = QUrl(where.toString() + QStringLiteral("/") + FMStatic::getFileInfoModel(url)[FMH::MODEL_KEY::LABEL]);
282 else
283 _where = QUrl(where.toString() + QStringLiteral("/") + name);
284
285 QFile file(url.toLocalFile());
286 file.rename(_where.toLocalFile());
287
288 Tagging::getInstance()->updateUrl(url.toString(), _where.toString());
289 }
290#endif
291
292 return true;
293}
294
296{
297 for (const auto &url : std::as_const(urls)) {
298 Tagging::getInstance()->removeUrl(url.toString());
299 }
300
301#ifdef KIO_AVAILABLE
302 auto job = KIO::del(urls);
303 job->start();
304 return true;
305#else
306 qDebug() << "ASKED GTO DELETE FILES" << urls;
307 for (const auto &url : std::as_const(urls)) {
308 qDebug() << "@ Want to remove files << " << url.toLocalFile();
309
310 if (isDir(url)) {
311 qDebug() << "Want to remove dir << " << url.toLocalFile();
313 } else {
314 qDebug() << "Want to remove files << " << url.toLocalFile();
315 QFile::remove(url.toLocalFile());
316 }
317 }
318 return true;
319#endif
320}
321
323{
324#ifdef KIO_AVAILABLE
325 auto job = KIO::trash(urls);
326 job->start();
327#else
328 Q_UNUSED(urls)
329#endif
330}
331
333{
334#ifdef KIO_AVAILABLE
335 auto job = KIO::emptyTrash();
336 job->start();
337#endif
338}
339
340bool FMStatic::removeDir(const QUrl &path)
341{
342 bool result = true;
343 QDir dir(path.toLocalFile());
344 qDebug() << "TRYING TO REMOVE DIR" << path << path.toLocalFile();
345 if (dir.exists())
346 {
348 {
349 if (info.isDir()) {
350 result = removeDir(QUrl::fromLocalFile(info.absoluteFilePath()));
351 } else {
352 result = QFile::remove(info.absoluteFilePath());
353 }
354
355 if (!result) {
356 return result;
357 }
358 }
359 result = dir.rmdir(path.toLocalFile());
360 }
361
362 return result;
363}
364
365bool FMStatic::rename(const QUrl &url, const QString &name)
366{
367 return FMStatic::cut({url}, QUrl(url.toString().left(url.toString().lastIndexOf(QStringLiteral("/")))), name);
368}
369
370bool FMStatic::createDir(const QUrl &path, const QString &name)
371{
372#ifdef KIO_AVAILABLE
373 auto job = KIO::mkdir(name.isEmpty() ? path : QUrl(path.toString() + QStringLiteral("/") + name));
374 job->start();
375 return true;
376#else
377 return QDir(path.toLocalFile()).mkdir(name);
378#endif
379}
380
381bool FMStatic::createFile(const QUrl &path, const QString &name)
382{
383 QFile file(path.toLocalFile() + QStringLiteral("/") + name);
384
385 if (file.open(QIODevice::ReadWrite)) {
386 file.close();
387 return true;
388 }
389
390 return false;
391}
392
393bool FMStatic::createSymlink(const QUrl &path, const QUrl &where)
394{
395#ifdef KIO_AVAILABLE
396 qDebug() << "trying to create symlink" << path << where;
397 const auto job = KIO::link({path}, where);
398 job->start();
399 return true;
400#else
401 return QFile::link(path.toLocalFile(), where.toLocalFile() + QStringLiteral("/") + QFileInfo(path.toLocalFile()).fileName());
402#endif
403}
404
405void FMStatic::openUrl(const QUrl &url)
406{
407#ifdef KIO_AVAILABLE
408 KIO::OpenUrlJob *job = new KIO::OpenUrlJob(url);
409 job->setRunExecutables(true);
410 job->start();
411#else
412
413#if defined Q_OS_ANDROID
415#else
417#endif
418
419#endif
420}
421
423{
424 for (const auto &url : qAsConst(urls))
425 {
426 if(isDir(QUrl(url)))
427 {
429 }else
430 {
432 }
433 }
434}
435
437{
438 QString icon = QStringLiteral("folder");
439
440 if (!path.isLocalFile()) {
441 qWarning() << "URL recived is not a local file" << path;
442 return icon;
443 }
444
445 if (!fileExists(path))
446 return icon;
447
448
449#if defined Q_OS_ANDROID || defined Q_OS_WIN || defined Q_OS_MACOS || defined Q_OS_IOS
450 QSettings file(path.toLocalFile(), QSettings::Format::NativeFormat);
451 file.beginGroup(QStringLiteral("Desktop Entry"));
452 icon = file.value(QStringLiteral("Icon"), icon).toString();
453 file.endGroup();
454#else
455 KConfig file(path.toLocalFile());
456 const auto map = file.entryMap(QStringLiteral("Desktop Entry"));
457 icon = map.isEmpty() ? QStringLiteral("folder") : map.value(QStringLiteral("Icon"));
458#endif
459
460 return icon;
461}
462
463void FMStatic::setDirConf(const QUrl &path, const QString &group, const QString &key, const QVariant &value)
464{
465 if (!path.isLocalFile()) {
466 qWarning() << "URL recived is not a local file" << path;
467 return;
468 }
469
470#if defined Q_OS_ANDROID || defined Q_OS_WIN || defined Q_OS_MACOS || defined Q_OS_IOS
471 QSettings file(path.toLocalFile(), QSettings::Format::IniFormat);
472 file.beginGroup(group);
473 file.setValue(key, value);
474 file.endGroup();
475 file.sync();
476#else
477 KConfig file(path.toLocalFile(), KConfig::SimpleConfig);
478 auto kgroup = file.group(group);
479 kgroup.writeEntry(key, value);
480 // file.reparseConfiguration();
481 file.sync();
482#endif
483}
484
485bool FMStatic::checkFileType(const int &type, const QString &mimeTypeName)
486{
487 return FMStatic::checkFileType(static_cast<FMStatic::FILTER_TYPE>(type), mimeTypeName);
488}
489
490bool FMStatic::checkFileType(const FMStatic::FILTER_TYPE &type, const QString &mimeTypeName)
491{
492 return SUPPORTED_MIMETYPES[type].contains(mimeTypeName);
493}
494
495void FMStatic::bookmark(const QUrl &url)
496{
498}
499
501{
502 return FMStatic::FILTER_LIST[static_cast<FMStatic::FILTER_TYPE>(type)];
503}
504
506{
507 if (!path.isLocalFile()) {
508 qWarning() << "URL recived is not a local file, getMime" << path;
509 return QString();
510 }
511
512 const QMimeDatabase mimedb;
513 return mimedb.mimeTypeForFile(path.toLocalFile()).name();
514}
515
516static const QUrl thumbnailUrl(const QUrl &url, const QString &mimetype)
517{
518#ifdef KIO_AVAILABLE
519 if (FMStatic::checkFileType(FMStatic::FILTER_TYPE::FONT, mimetype) || FMStatic::checkFileType(FMStatic::FILTER_TYPE::TEXT, mimetype) || FMStatic::checkFileType(FMStatic::FILTER_TYPE::AUDIO, mimetype) || FMStatic::checkFileType(FMStatic::FILTER_TYPE::DOCUMENT, mimetype) || FMStatic::checkFileType(FMStatic::FILTER_TYPE::VIDEO, mimetype) || url.toString().endsWith(QStringLiteral(".appimage"), Qt::CaseInsensitive)) {
520 return QUrl(QStringLiteral("image://thumbnailer/") + url.toString());
521 }
522
523 // if (KIO::PreviewJob::supportedMimeTypes().contains(mimetype)) {
524 // return QUrl("image://thumbnailer/" + url.toString());
525 // }
526#endif
527
528 if (FMStatic::checkFileType(FMStatic::FILTER_TYPE::IMAGE, mimetype)) {
529 return url;
530 }
531
532 return QUrl();
533}
534
535#ifdef KIO_AVAILABLE
537{
538 return FMH::MODEL {
539 {FMH::MODEL_KEY::LABEL, kfile.name()},
540 {FMH::MODEL_KEY::NAME, kfile.name()},
541 {FMH::MODEL_KEY::DATE, kfile.time(KFileItem::FileTimes::CreationTime).toString(Qt::TextDate)},
542 {FMH::MODEL_KEY::MODIFIED, kfile.time(KFileItem::FileTimes::ModificationTime).toString(Qt::TextDate)},
543 {FMH::MODEL_KEY::LAST_READ, kfile.time(KFileItem::FileTimes::AccessTime).toString(Qt::TextDate)},
544 {FMH::MODEL_KEY::PATH, kfile.mostLocalUrl().toString()},
545 {FMH::MODEL_KEY::URL, kfile.mostLocalUrl().toString()},
546 {FMH::MODEL_KEY::THUMBNAIL, thumbnailUrl(kfile.mostLocalUrl(), kfile.mimetype()).toString()},
547 {FMH::MODEL_KEY::SYMLINK, kfile.linkDest()},
548 {FMH::MODEL_KEY::IS_SYMLINK, QVariant(kfile.isLink()).toString()},
549 {FMH::MODEL_KEY::HIDDEN, QVariant(kfile.isHidden()).toString()},
550 {FMH::MODEL_KEY::IS_DIR, QVariant(kfile.isDir()).toString()},
551 {FMH::MODEL_KEY::IS_FILE, QVariant(kfile.isFile()).toString()},
552 {FMH::MODEL_KEY::MIME, kfile.mimetype()},
553 {FMH::MODEL_KEY::ICON, kfile.iconName()},
554 {FMH::MODEL_KEY::SIZE, QString::number(kfile.size())},
555 {FMH::MODEL_KEY::COUNT, kfile.isLocalFile() && kfile.isDir() ? QString::number(QDir(kfile.localPath()).count()-2) : QStringLiteral("0")}};
556 }
557#endif
558
560 {
561 FMH::MODEL res;
562#ifdef KIO_AVAILABLE
563 res = FMStatic::getFileInfo(KFileItem(path, KFileItem::MimeTypeDetermination::NormalMimeTypeDetermination));
564#else
566 {
567 res = FMH::MODEL {
568 {FMH::MODEL_KEY::LABEL, path.fileName()},
569 {FMH::MODEL_KEY::NAME, path.fileName()},
570 {FMH::MODEL_KEY::IS_SYMLINK, QStringLiteral("false")},
571 {FMH::MODEL_KEY::IS_FILE, QStringLiteral("false")},
572 {FMH::MODEL_KEY::HIDDEN, QStringLiteral("false")},
573 {FMH::MODEL_KEY::IS_DIR, QStringLiteral("false")},
574 {FMH::MODEL_KEY::SIZE, QStringLiteral("0")}, /*locale.formattedDataSize(file.size())*/
575 {FMH::MODEL_KEY::PATH, path.toString()},
576 {FMH::MODEL_KEY::URL, path.toString()}};
577
578 }else
579 {
580 const QFileInfo file(path.toLocalFile());
581 if (!file.exists())
582 return FMH::MODEL();
583
584 const auto mime = FMStatic::getMime(path);
585 res = FMH::MODEL {
586 {FMH::MODEL_KEY::SUFFIX, file.completeSuffix()},
587 {FMH::MODEL_KEY::LABEL, path.toString() == HomePath ? QStringLiteral("Home") : file.fileName()},
588 {FMH::MODEL_KEY::NAME, file.fileName()},
589 {FMH::MODEL_KEY::DATE, file.birthTime().toString(Qt::TextDate)},
590 {FMH::MODEL_KEY::MODIFIED, file.lastModified().toString(Qt::TextDate)},
591 {FMH::MODEL_KEY::LAST_READ, file.lastRead().toString(Qt::TextDate)},
592 {FMH::MODEL_KEY::MIME, mime},
593 {FMH::MODEL_KEY::SYMLINK, file.symLinkTarget()},
594 {FMH::MODEL_KEY::IS_SYMLINK, QVariant(file.isSymLink()).toString()},
595 {FMH::MODEL_KEY::IS_FILE, QVariant(file.isFile()).toString()},
596 {FMH::MODEL_KEY::HIDDEN, QVariant(file.isHidden()).toString()},
597 {FMH::MODEL_KEY::IS_DIR, QVariant(file.isDir()).toString()},
598 {FMH::MODEL_KEY::SIZE, QString::number(file.size()) /*locale.formattedDataSize(file.size())*/},
599 {FMH::MODEL_KEY::PATH, path.toString()},
600 {FMH::MODEL_KEY::URL, path.toString()},
601 {FMH::MODEL_KEY::THUMBNAIL, thumbnailUrl(path, mime).toString()},
602 {FMH::MODEL_KEY::COUNT, file.isDir() ? QString::number(QDir(path.toLocalFile()).count()) : QStringLiteral("0")}};
603 }
604 #endif
605
606
607 res[FMH::MODEL_KEY::ICON] = getIconName(path); //to control what icon is shown
608 return res;
609 }
610
611
612 const QVariantMap FMStatic::getFileInfo(const QUrl &path)
613 {
614 return FMH::toMap(getFileInfoModel(path));
615 }
616
618 {
620 {
621 return QStringLiteral("tag");
622 }
623
624 if (path.isLocalFile() && QFileInfo(path.toLocalFile()).isDir())
625 {
626 if (folderIcon.contains(path.toString()))
627 return folderIcon[path.toString()];
628 else
629 {
630 return dirConfIcon(QUrl(QString(path.toString() + QStringLiteral("/%1")).arg(QStringLiteral(".directory"))));
631 }
632
633 } else {
634 #ifdef KIO_AVAILABLE
635 KFileItem mime(path);
636 return mime.iconName();
637 #else
638 QMimeDatabase mime;
639 const auto type = mime.mimeTypeForFile(path.toString());
640 return type.iconName();
641 #endif
642 }
643 }
644
static const QString getIconName(const QUrl &path)
Returns the icon name for certain file.
Definition fmstatic.cpp:617
static QStringList nameFilters(const int &type)
Given a filter type return a list of associated name filters, as their suffixes.
Definition fmstatic.cpp:500
static const QHash< QString, PATHTYPE_KEY > PATHTYPE_SCHEME_NAME
The protocol scheme mapped to its PATHTYPE_KEY.
Definition fmstatic.h:357
static bool fileExists(const QUrl &path)
Checks if a local file exists in the file system.
Definition fmstatic.cpp:155
static const QStringList defaultPaths
The internally defined quick standard locations.
Definition fmstatic.h:446
static bool group(const QList< QUrl > &urls, const QUrl &destinationDir, const QString &name)
Perform a move operation of the given files to a new destination.
Definition fmstatic.cpp:244
static FMH::MODEL_LIST packItems(const QStringList &items, const QString &type)
Given a list of path URLs pack all the info of such files as a FMH::MODEL_LIST.
Definition fmstatic.cpp:57
static const QMap< QString, QString > folderIcon
A mapping of the standard location to a icon name.
Definition fmstatic.h:462
static FMH::MODEL_LIST search(const QString &query, const QUrl &path, const bool &hidden=false, const bool &onlyDirs=false, const QStringList &filters=QStringList())
Search for files in a path using name filters.
Definition fmstatic.cpp:79
static const QHash< PATHTYPE_KEY, QString > PATHTYPE_SCHEME
The map of the PATH_TYPE to its associated protocol scheme.
Definition fmstatic.h:339
static bool cut(const QList< QUrl > &urls, const QUrl &where)
Perform a move/cut of a list of files to a destination.
Definition fmstatic.cpp:255
static FMH::MODEL_LIST getDevices()
Devices mounted in the file system.
Definition fmstatic.cpp:110
static QHash< FILTER_TYPE, QStringList > FILTER_LIST
Convenient map set of file type extensions.
Definition fmstatic.h:220
static bool isCloud(const QUrl &path)
Whether a path is a URL server instead of a local file.
Definition fmstatic.cpp:150
static bool removeDir(const QUrl &path)
Remove a directory recursively.
Definition fmstatic.cpp:340
static void openLocation(const QStringList &urls)
Open the file URLs with the default file manager.
Definition fmstatic.cpp:422
static void openUrl(const QUrl &url)
Given a URL it tries to open it using the default application associated to it.
Definition fmstatic.cpp:405
static QUrl fileDir(const QUrl &path)
Given a file URL return its parent directory, and if the path is a directory then returns the same pa...
Definition fmstatic.cpp:160
static FMStatic::PATHTYPE_KEY getPathType(const QUrl &url)
Given a file URL with a well defined scheme, get the PATHTYPE_KEY.
Definition fmstatic.cpp:645
static bool createSymlink(const QUrl &path, const QUrl &where)
Creates a symbolic link to a given file URL.
Definition fmstatic.cpp:393
static QUrl parentDir(const QUrl &path)
Given a file URL return its parent directory.
Definition fmstatic.cpp:127
static const QString dirConfIcon(const QUrl &path)
Return the icon name set in the directory .directory conf file.
Definition fmstatic.cpp:436
static void bookmark(const QUrl &url)
Add a directory URL to the places bookmarks.
Definition fmstatic.cpp:495
static QString PathTypeLabel(const FMStatic::PATHTYPE_KEY &key)
Given a PATHTYPE_KEY return a user friendly string.
Definition fmstatic.cpp:31
static bool removeFiles(const QList< QUrl > &urls)
List of files to be removed completely.
Definition fmstatic.cpp:295
static const FMH::MODEL getFileInfoModel(const QUrl &path)
getFileInfoModel
Definition fmstatic.cpp:559
static bool copy(const QList< QUrl > &urls, const QUrl &destinationDir)
Perform a copy of the files to the given destination.
Definition fmstatic.cpp:216
static FMH::MODEL_LIST getDefaultPaths()
A model list of the default paths in most systems, such as Home, Pictures, Video, Downloads,...
Definition fmstatic.cpp:74
static const QMap< FILTER_TYPE, QStringList > SUPPORTED_MIMETYPES
The map set of the supported mime types for the FM classes.
Definition fmstatic.h:177
static bool isDefaultPath(const QString &path)
Checks if a given path URL is a default path as found in the defaultPaths method.
Definition fmstatic.cpp:122
static bool isDir(const QUrl &path)
Whether a local file URL is a directory.
Definition fmstatic.cpp:139
static QString homePath()
The default home path.
Definition fmstatic.cpp:175
static const QString HomePath
Standard home location path
Definition fmstatic.h:440
static bool createDir(const QUrl &path, const QString &name)
Creates a new directory given a base path and a name.
Definition fmstatic.cpp:370
static const QString getMime(const QUrl &path)
Get the mime type of the given file path.
Definition fmstatic.cpp:505
static bool checkFileType(const int &type, const QString &mimeTypeName)
Checks if a mime-type belongs to a file type, for example, whether image/jpg belongs to the type FMH:...
Definition fmstatic.cpp:485
static void emptyTrash()
Empty the trashcan.
Definition fmstatic.cpp:332
static bool rename(const QUrl &url, const QString &name)
Rename a file.
Definition fmstatic.cpp:365
static void setDirConf(const QUrl &path, const QString &group, const QString &key, const QVariant &value)
Write a configuration key-value entry to the directory conf file.
Definition fmstatic.cpp:463
static void moveToTrash(const QList< QUrl > &urls)
Moves to the trashcan the provided file URLs.
Definition fmstatic.cpp:322
FILTER_TYPE
The common file types for filtering.
Definition fmstatic.h:51
static bool createFile(const QUrl &path, const QString &name)
Creates a file given the base directory path and a file name.
Definition fmstatic.cpp:381
PATHTYPE_KEY
The different location types supported. Most of them need of KDE KIO framework to be fully operationa...
Definition fmstatic.h:258
@ REMOTE_PATH
Remote locations, such as servers accessed via SSH or FTP.
Definition fmstatic.h:267
@ OTHER_PATH
Any other path.
Definition fmstatic.h:332
@ UNKNOWN_TYPE
Unknown location type.
Definition fmstatic.h:287
@ FISH_PATH
A remote SHH or FTP.
Definition fmstatic.h:312
@ APPS_PATH
The applications location.
Definition fmstatic.h:292
@ TAGS_PATH
A tag location.
Definition fmstatic.h:282
@ SEARCH_PATH
A search results.
Definition fmstatic.h:302
@ DRIVES_PATH
Hard drives locations.
Definition fmstatic.h:272
@ MTP_PATH
MTP path.
Definition fmstatic.h:317
@ CLOUD_PATH
A remote cloud server path.
Definition fmstatic.h:307
@ TRASH_PATH
The trash location.
Definition fmstatic.h:297
@ BOOKMARKS_PATH
A bookmarked location.
Definition fmstatic.h:327
@ REMOVABLE_PATH
Removable places, such as optic CDs, USB pen drives, etc.
Definition fmstatic.h:277
@ QUICK_PATH
The common standard paths.
Definition fmstatic.h:322
@ PLACES_PATH
Local paths, such as the Downloads, Pictures, etc.
Definition fmstatic.h:262
static const QVariantMap getFileInfo(const QUrl &path)
getFileInfo
Definition fmstatic.cpp:612
QString iconName() const
QUrl mostLocalUrl(bool *local=nullptr) const
bool isLocalFile() const
KIO::filesize_t size() const
bool isLink() const
Q_INVOKABLE QDateTime time(KFileItem::FileTimes which) const
QString mimetype() const
bool isFile() const
QString linkDest() const
QString localPath() const
bool isDir() const
bool isHidden() const
QString name(bool lowerCase=false) const
void start() override
void setRunExecutables(bool allow)
virtual Q_SCRIPTABLE void start()=0
static void openUrl(const QUrl &url)
static QStringList sdDirs()
static void addBookmark(const QUrl &url)
Add a location to the bookmarks sections.
bool removeUrl(const QString &url)
Removes a URL with its associated tags.
Definition tagging.cpp:270
static Tagging * getInstance()
Returns an instance to the tagging object.
Definition tagging.cpp:70
bool updateUrl(const QString &url, const QString &newUrl)
Updates a file URL to a new URL, preserving all associated tags.
Definition tagging.cpp:205
QString i18n(const char *text, const TYPE &arg...)
bool fileExists(const QUrl &path)
QHash< MODEL_KEY, QString > MODEL
const QVariantMap toMap(const MODEL &model)
KIOCORE_EXPORT DeleteJob * del(const QList< QUrl > &src, JobFlags flags=DefaultFlags)
KIOCORE_EXPORT CopyJob * move(const QList< QUrl > &src, const QUrl &dest, JobFlags flags=DefaultFlags)
KIOCORE_EXPORT MkdirJob * mkdir(const QUrl &url, int permissions=-1)
KIOCORE_EXPORT CopyJob * copy(const QList< QUrl > &src, const QUrl &dest, JobFlags flags=DefaultFlags)
KIOCORE_EXPORT CopyJob * trash(const QList< QUrl > &src, JobFlags flags=DefaultFlags)
KIOCORE_EXPORT CopyJob * link(const QList< QUrl > &src, const QUrl &destDir, JobFlags flags=DefaultFlags)
KIOCORE_EXPORT EmptyTrashJob * emptyTrash()
HideProgressInfo
QString toString(QStringView format, QCalendar cal) const const
bool openUrl(const QUrl &url)
typedef Filters
QString absolutePath() const const
qsizetype count() const const
bool exists() const const
bool mkdir(const QString &dirName) const const
QChar separator()
QString fileName() const const
bool hasNext() const const
QString next()
bool copy(const QString &fileName, const QString &newName)
bool open(FILE *fh, OpenMode mode, FileHandleFlags handleFlags)
bool remove()
bool rename(const QString &newName)
virtual void close() override
QDateTime birthTime() const const
QString completeSuffix() const const
QDir dir() const const
bool exists(const QString &path)
QString fileName() const const
bool isDir() const const
bool isFile() const const
bool isHidden() const const
QDateTime lastModified() const const
QDateTime lastRead() const const
qint64 size() const const
QString symLinkTarget() const const
qsizetype count() const const
bool contains(const Key &key) const const
QMimeType mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode) const const
void beginGroup(QAnyStringView prefix)
void endGroup()
QString group() const const
void setValue(QAnyStringView key, const QVariant &value)
void sync()
QVariant value(QAnyStringView key) const const
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
bool endsWith(QChar c, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
qsizetype lastIndexOf(QChar ch, Qt::CaseSensitivity cs) const const
QString left(qsizetype n) const const
QString number(double n, char format, int precision)
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const
CaseInsensitive
TextDate
QUrl fromLocalFile(const QString &localFile)
bool isLocalFile() const const
QString scheme() const const
QString toLocalFile() const const
QString toString(FormattingOptions options) const const
QString toString() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri May 17 2024 11:51:27 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.