summaryrefslogtreecommitdiffstats
path: root/api/logic/FileSystem.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-04-10 15:53:05 +0200
committerPetr Mrázek <peterix@gmail.com>2016-05-01 00:00:14 +0200
commitb6d455a02bd338e9dc0faa09d4d8177ecd8d569a (patch)
tree41982bca1ede50049f2f8c7109dd18edeefde6d0 /api/logic/FileSystem.h
parent47e37635f50c09b4f9a9ee7699e3120bab3e4088 (diff)
downloadMultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar
MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.gz
MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.lz
MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.tar.xz
MultiMC-b6d455a02bd338e9dc0faa09d4d8177ecd8d569a.zip
NOISSUE reorganize and document libraries
Diffstat (limited to 'api/logic/FileSystem.h')
-rw-r--r--api/logic/FileSystem.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/api/logic/FileSystem.h b/api/logic/FileSystem.h
new file mode 100644
index 00000000..80637f90
--- /dev/null
+++ b/api/logic/FileSystem.h
@@ -0,0 +1,123 @@
+// Licensed under the Apache-2.0 license. See README.md for details.
+
+#pragma once
+
+#include "Exception.h"
+#include "pathmatcher/IPathMatcher.h"
+
+#include "multimc_logic_export.h"
+#include <QDir>
+#include <QFlags>
+
+namespace FS
+{
+
+class MULTIMC_LOGIC_EXPORT FileSystemException : public ::Exception
+{
+public:
+ FileSystemException(const QString &message) : Exception(message) {}
+};
+
+/**
+ * write data to a file safely
+ */
+MULTIMC_LOGIC_EXPORT void write(const QString &filename, const QByteArray &data);
+
+/**
+ * read data from a file safely\
+ */
+MULTIMC_LOGIC_EXPORT QByteArray read(const QString &filename);
+
+/**
+ * Creates all the folders in a path for the specified path
+ * last segment of the path is treated as a file name and is ignored!
+ */
+MULTIMC_LOGIC_EXPORT bool ensureFilePathExists(QString filenamepath);
+
+/**
+ * Creates all the folders in a path for the specified path
+ * last segment of the path is treated as a folder name and is created!
+ */
+MULTIMC_LOGIC_EXPORT bool ensureFolderPathExists(QString filenamepath);
+
+class MULTIMC_LOGIC_EXPORT copy
+{
+public:
+ copy(const copy&) = delete;
+ copy(const QString & src, const QString & dst)
+ {
+ m_src = src;
+ m_dst = dst;
+ }
+ copy & followSymlinks(const bool follow)
+ {
+ m_followSymlinks = follow;
+ return *this;
+ }
+ copy & blacklist(const IPathMatcher * filter)
+ {
+ m_blacklist = filter;
+ return *this;
+ }
+ bool operator()()
+ {
+ return operator()(QString());
+ }
+
+private:
+ bool operator()(const QString &offset);
+
+private:
+ bool m_followSymlinks = true;
+ const IPathMatcher * m_blacklist = nullptr;
+ QDir m_src;
+ QDir m_dst;
+};
+
+/**
+ * Delete a folder recursively
+ */
+MULTIMC_LOGIC_EXPORT bool deletePath(QString path);
+
+MULTIMC_LOGIC_EXPORT QString PathCombine(QString path1, QString path2);
+MULTIMC_LOGIC_EXPORT QString PathCombine(QString path1, QString path2, QString path3);
+
+MULTIMC_LOGIC_EXPORT QString AbsolutePath(QString path);
+
+/**
+ * Resolve an executable
+ *
+ * Will resolve:
+ * single executable (by name)
+ * relative path
+ * absolute path
+ *
+ * @return absolute path to executable or null string
+ */
+MULTIMC_LOGIC_EXPORT QString ResolveExecutable(QString path);
+
+/**
+ * Normalize path
+ *
+ * Any paths inside the current directory will be normalized to relative paths (to current)
+ * Other paths will be made absolute
+ *
+ * Returns false if the path logic somehow filed (and normalizedPath in invalid)
+ */
+MULTIMC_LOGIC_EXPORT QString NormalizePath(QString path);
+
+MULTIMC_LOGIC_EXPORT QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
+
+MULTIMC_LOGIC_EXPORT QString DirNameFromString(QString string, QString inDir = ".");
+
+/// Checks if the a given Path contains "!"
+MULTIMC_LOGIC_EXPORT bool checkProblemticPathJava(QDir folder);
+
+// Get the Directory representing the User's Desktop
+MULTIMC_LOGIC_EXPORT QString getDesktopDir();
+
+// Create a shortcut at *location*, pointing to *dest* called with the arguments *args*
+// call it *name* and assign it the icon *icon*
+// return true if operation succeeded
+MULTIMC_LOGIC_EXPORT bool createShortCut(QString location, QString dest, QStringList args, QString name, QString iconLocation);
+}