|
Isis 3.0 Object Programmers' Reference |
Home |
00001 00023 #ifndef FileName_H 00024 #define FileName_H 00025 00026 #include <string> 00027 #include <QSharedData> 00028 00029 class QDate; 00030 class QDir; 00031 class QString; 00032 00033 template<typename A, typename B> class QPair; 00034 00035 namespace Isis { 00109 class FileName { 00110 public: 00111 FileName(); 00112 FileName(const char *fileName); 00113 FileName(const QString &fileName); 00114 FileName(const FileName &other); 00115 ~FileName(); 00116 00117 QString originalPath() const; 00118 QString path() const; 00119 00120 QString attributes() const; 00121 QString baseName() const; 00122 QString name() const; 00123 QString extension() const; 00124 00125 QString expanded() const; 00126 QString original() const; 00127 00128 FileName addExtension(const QString &extension) const; 00129 FileName removeExtension() const; 00130 FileName setExtension(const QString &extension) const; 00131 00132 bool isVersioned() const; 00133 bool isNumericallyVersioned() const; 00134 bool isDateVersioned() const; 00135 00136 FileName highestVersion() const; 00137 FileName newVersion() const; 00138 FileName version(long versionNumber) const; 00139 FileName version(QDate versionDate) const; 00140 00141 // Return true if the file exists 00142 bool fileExists() const; 00143 00144 // Create a directory 00145 QDir dir() const; 00146 00147 static FileName createTempFile(FileName templateFileName = "$TEMPORARY/temp"); 00148 00149 QString toString() const; 00150 FileName &operator=(const FileName &rhs); 00151 bool operator==(const FileName &rhs); 00152 bool operator!=(const FileName &rhs); 00153 00154 private: 00155 QDate highestVersionDate() const; 00156 long highestVersionNum() const; 00157 void validateVersioningState() const; 00158 00159 QString fileNameQDatePattern() const; 00160 00161 QPair<QString, QString> splitNameAroundVersionNum() const; 00162 00163 private: 00171 class Data : public QSharedData { 00172 public: 00173 Data(); 00174 Data(const Data &other); 00175 ~Data(); 00176 00177 QString original(bool includeAttributes) const; 00178 void setOriginal(const QString &); 00179 00180 QString expanded(bool includeAttributes) const; 00181 00182 // assignment operator is defined in QSharedData 00183 // Data &operator=(const Data &rhs); 00184 00185 private: 00186 QString *m_originalFileNameString; 00187 QString *m_expandedFileNameString; 00188 }; 00189 00191 QSharedDataPointer<Data> m_d; 00192 }; 00193 }; 00194 00195 #endif