fileutils.h
1 //------------------------------------------------------------------------------
2 // fileutils.h
3 //------------------------------------------------------------------------------
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 // 02110-1301 USA
19 //
20 //------------------------------------------------------------------------------
21 // Copyright (C) 2012 "Zalewa" <zalewapl@gmail.com>
22 //------------------------------------------------------------------------------
23 #ifndef DOOMSEEKER_FILEUTILS_H
24 #define DOOMSEEKER_FILEUTILS_H
25 
26 #include <QByteArray>
27 #include <QDir>
28 #include <QString>
29 #include <QStringList>
30 
35 struct DirErrno
36 {
37  static const int CUSTOM_ERROR = -1;
38 
39  QDir directory;
40  int errnoNum;
41  QString errnoString;
42 
43  DirErrno() : errnoNum(0) {}
44 
45  DirErrno(QDir directory, int errnoNum, QString errnoString)
46  : directory(directory), errnoNum(errnoNum), errnoString(std::move(errnoString))
47  {
48  }
49 
50  bool isError() const
51  {
52  return errnoNum != 0;
53  }
54 };
55 
56 class FileUtils
57 {
58 public:
59  static QByteArray md5(const QString &path);
60 
67  static QString cdUpUntilExists(QString path);
68 
73  static bool containsPath(const QStringList &candidates,
74  const QString &path);
75 
76  static Qt::CaseSensitivity comparisonSensitivity();
77 
85  static QDir dirOrDir(const QString &preferred, const QString &fallback = QString());
86 
93  static DirErrno mkpath(const QDir &dir);
94 
111  static bool rmAllFiles(const QString &dirPath,
112  const QStringList &nameFilters = QStringList());
113 };
114 
115 #endif