main.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef MAIN_H
  2. #define MAIN_H
  3. /*
  4. #include <QApplication>
  5. #include <QQmlApplicationEngine>
  6. #include <QtQml>
  7. #include <QFileSystemModel>
  8. #include <QDateTime>
  9. #include <QDesktopServices>
  10. #include <QUrl>
  11. static inline QString permissionString(const QFileInfo &fi)
  12. {
  13. const QFile::Permissions permissions = fi.permissions();
  14. QString result = QLatin1String("----------");
  15. if (fi.isSymLink())
  16. result[0] = QLatin1Char('l');
  17. else if (fi.isDir())
  18. result[0] = QLatin1Char('d');
  19. if (permissions & QFileDevice::ReadUser)
  20. result[1] = QLatin1Char('r');
  21. if (permissions & QFileDevice::WriteUser)
  22. result[2] = QLatin1Char('w');
  23. if (permissions & QFileDevice::ExeUser)
  24. result[3] = QLatin1Char('x');
  25. if (permissions & QFileDevice::ReadGroup)
  26. result[4] = QLatin1Char('r');
  27. if (permissions & QFileDevice::WriteGroup)
  28. result[5] = QLatin1Char('w');
  29. if (permissions & QFileDevice::ExeGroup)
  30. result[6] = QLatin1Char('x');
  31. if (permissions & QFileDevice::ReadOther)
  32. result[7] = QLatin1Char('r');
  33. if (permissions & QFileDevice::WriteOther)
  34. result[8] = QLatin1Char('w');
  35. if (permissions & QFileDevice::ExeOther)
  36. result[9] = QLatin1Char('x');
  37. return result;
  38. }
  39. static inline QString sizeString(const QFileInfo &fi)
  40. {
  41. if (!fi.isFile())
  42. return QString();
  43. const qint64 size = fi.size();
  44. if (size > 1024 * 1024 * 10)
  45. return QString::number(size / (1024 * 1024)) + QLatin1Char('M');
  46. if (size > 1024 * 10)
  47. return QString::number(size / 1024) + QLatin1Char('K');
  48. return QString::number(size);
  49. }
  50. class DisplayFileSystemModel : public QFileSystemModel {
  51. Q_OBJECT
  52. public:
  53. explicit DisplayFileSystemModel(QObject *parent = Q_NULLPTR)
  54. : QFileSystemModel(parent) {}
  55. enum Roles {
  56. SizeRole = Qt::UserRole + 4,
  57. DisplayableFilePermissionsRole = Qt::UserRole + 5,
  58. LastModifiedRole = Qt::UserRole + 6,
  59. UrlStringRole = Qt::UserRole + 7
  60. };
  61. Q_ENUM(Roles)
  62. QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE
  63. {
  64. if (index.isValid() && role >= SizeRole) {
  65. switch (role) {
  66. case SizeRole:
  67. return QVariant(sizeString(fileInfo(index)));
  68. case DisplayableFilePermissionsRole:
  69. return QVariant(permissionString(fileInfo(index)));
  70. case LastModifiedRole:
  71. return QVariant(fileInfo(index).lastModified().toString(Qt::SystemLocaleShortDate));
  72. case UrlStringRole:
  73. return QVariant(QUrl::fromLocalFile(filePath(index)).toString());
  74. default:
  75. break;
  76. }
  77. }
  78. return QFileSystemModel::data(index, role);
  79. }
  80. QHash<int,QByteArray> roleNames() const Q_DECL_OVERRIDE
  81. {
  82. QHash<int, QByteArray> result = QFileSystemModel::roleNames();
  83. result.insert(SizeRole, QByteArrayLiteral("size"));
  84. result.insert(DisplayableFilePermissionsRole, QByteArrayLiteral("displayableFilePermissions"));
  85. result.insert(LastModifiedRole, QByteArrayLiteral("lastModified"));
  86. return result;
  87. }
  88. };
  89. */
  90. #endif // MAIN_H