KanoopCommonQt 2.1.1
Kanoop foundational Qt utility library
Loading...
Searching...
No Matches
pathutil.h
1/**
2 * PathUtil
3 *
4 * Some static helper methods for files. Much of the functionallity
5 * in here has been overtaken by the QFileInfo native Qt object.
6 *
7 * However, the extremely useful combine() method will combine many
8 * strings into a well-formatted path name.
9 *
10 * Stephen Punak, July 04 2019
11 */
12#ifndef PATHUTIL_H
13#define PATHUTIL_H
14#include <QString>
15#include <QDir>
16#include "kanoopcommon.h"
17
18/**
19 * @brief Static helper methods for filesystem path manipulation.
20 */
21class KANOOP_EXPORT PathUtil
22{
23public:
24 /**
25 * @brief Extract the basename from a file path.
26 * @param path File path string
27 * @return Filename portion of the path
28 * @deprecated Prefer QFileInfo::baseName()
29 */
30 static QString fileName(const QString& path);
31
32 /**
33 * @brief Extract the directory portion from a file path.
34 * @param path File path string
35 * @return Directory portion of the path
36 * @deprecated Prefer QFileInfo::filePath()
37 */
38 static QString dirName(const QString& path);
39
40 /**
41 * @brief Extract the file extension from a file path.
42 * @param path File path string
43 * @return Extension string (without leading dot)
44 * @deprecated Prefer QFileInfo::suffix()
45 */
46 static QString extension(const QString& path);
47
48 /**
49 * @brief Remove a trailing directory separator from a path.
50 * @param path Path string to trim
51 * @return Path without trailing separator
52 * @deprecated Prefer QFileInfo::suffix()
53 */
54 static QString trimTrailingSlash(const QString& path);
55
56 /**
57 * @brief Combine two path segments into a normalized path.
58 * @param p1 First segment
59 * @param p2 Second segment
60 * @return Cleaned combined path
61 */
62 static QString combine(const QString& p1, const QString& p2)
63 { return QDir::cleanPath(p1 + QDir::separator() + p2); }
64
65 /**
66 * @brief Combine three path segments into a normalized path.
67 * @param p1 First segment
68 * @param p2 Second segment
69 * @param p3 Third segment
70 * @return Cleaned combined path
71 */
72 static QString combine(const QString& p1, const QString& p2, const QString& p3)
73 { return QDir::cleanPath(p1 + QDir::separator() + p2 + QDir::separator() + p3); }
74
75 /**
76 * @brief Combine four path segments into a normalized path.
77 * @param p1 First segment
78 * @param p2 Second segment
79 * @param p3 Third segment
80 * @param p4 Fourth segment
81 * @return Cleaned combined path
82 */
83 static QString combine(const QString& p1, const QString& p2, const QString& p3, const QString& p4)
84 { return QDir::cleanPath(p1 + QDir::separator() + p2 + QDir::separator() + p3 + QDir::separator() + p4); }
85
86 /**
87 * @brief Combine five path segments into a normalized path.
88 * @param p1 First segment
89 * @param p2 Second segment
90 * @param p3 Third segment
91 * @param p4 Fourth segment
92 * @param p5 Fifth segment
93 * @return Cleaned combined path
94 */
95 static QString combine(const QString& p1, const QString& p2, const QString& p3, const QString& p4, const QString& p5)
96 { return QDir::cleanPath(p1 + QDir::separator() + p2 + QDir::separator() + p3 + QDir::separator() + p4 + QDir::separator() + p5); }
97
98 /**
99 * @brief Combine six path segments into a normalized path.
100 * @param p1 First segment
101 * @param p2 Second segment
102 * @param p3 Third segment
103 * @param p4 Fourth segment
104 * @param p5 Fifth segment
105 * @param p6 Sixth segment
106 * @return Cleaned combined path
107 */
108 static QString combine(const QString& p1, const QString& p2, const QString& p3, const QString& p4, const QString& p5, const QString& p6)
109 { return QDir::cleanPath(p1 + QDir::separator() + p2 + QDir::separator() + p3 + QDir::separator() + p4 + QDir::separator() + p5 + QDir::separator() + p6); }
110
111 /**
112 * @brief Combine seven path segments into a normalized path.
113 * @param p1 First segment
114 * @param p2 Second segment
115 * @param p3 Third segment
116 * @param p4 Fourth segment
117 * @param p5 Fifth segment
118 * @param p6 Sixth segment
119 * @param p7 Seventh segment
120 * @return Cleaned combined path
121 */
122 static QString combine(const QString& p1, const QString& p2, const QString& p3, const QString& p4, const QString& p5, const QString& p6, const QString& p7)
123 { return QDir::cleanPath(p1 + QDir::separator() + p2 + QDir::separator() + p3 + QDir::separator() + p4 + QDir::separator() + p5 + QDir::separator() + p6 + QDir::separator() + p7); }
124
125 /**
126 * @brief Combine a list of path segments into a normalized path.
127 * @param parts List of path segment strings
128 * @return Cleaned combined path
129 */
130 static QString combine(const QStringList& parts);
131
132 /**
133 * @brief Find the first executable in PATH matching a basename.
134 * @param basename Executable filename to search for
135 * @return QFileInfo for the found executable, or an invalid QFileInfo if not found
136 */
137 static QFileInfo which(const QString& basename);
138
139 /**
140 * @brief Return the given directory with one level removed.
141 * @param path Directory path to shorten
142 * @return Parent directory path
143 */
144 static QString popLevel(const QString& path);
145};
146
147#endif // PATHUTIL_H
PathUtil.
Definition pathutil.h:22
static QString combine(const QString &p1, const QString &p2, const QString &p3, const QString &p4)
Combine four path segments into a normalized path.
Definition pathutil.h:83
static QString popLevel(const QString &path)
Return the given directory with one level removed.
static QString extension(const QString &path)
Extract the file extension from a file path.
static QString trimTrailingSlash(const QString &path)
Remove a trailing directory separator from a path.
static QString combine(const QString &p1, const QString &p2)
Combine two path segments into a normalized path.
Definition pathutil.h:62
static QString combine(const QString &p1, const QString &p2, const QString &p3, const QString &p4, const QString &p5, const QString &p6)
Combine six path segments into a normalized path.
Definition pathutil.h:108
static QString combine(const QString &p1, const QString &p2, const QString &p3, const QString &p4, const QString &p5)
Combine five path segments into a normalized path.
Definition pathutil.h:95
static QString fileName(const QString &path)
Extract the basename from a file path.
static QString combine(const QString &p1, const QString &p2, const QString &p3)
Combine three path segments into a normalized path.
Definition pathutil.h:72
static QString dirName(const QString &path)
Extract the directory portion from a file path.
static QString combine(const QString &p1, const QString &p2, const QString &p3, const QString &p4, const QString &p5, const QString &p6, const QString &p7)
Combine seven path segments into a normalized path.
Definition pathutil.h:122
static QString combine(const QStringList &parts)
Combine a list of path segments into a normalized path.
static QFileInfo which(const QString &basename)
Find the first executable in PATH matching a basename.