File indexing completed on 2024-04-21 04:18:47
0001 // vim: set tabstop=4 shiftwidth=4 expandtab: 0002 /* 0003 Gwenview: an image viewer 0004 Copyright 2009 Aurélien Gâteau <agateau@kde.org> 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License 0008 as published by the Free Software Foundation; either version 2 0009 of the License, or (at your option) any later version. 0010 0011 This program is distributed in the hope that it will be useful, 0012 but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 GNU General Public License for more details. 0015 0016 You should have received a copy of the GNU General Public License 0017 along with this program; if not, write to the Free Software 0018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA. 0019 0020 */ 0021 #ifndef DOCUMENTDIRFINDER_H 0022 #define DOCUMENTDIRFINDER_H 0023 0024 // Qt 0025 #include <QObject> 0026 0027 // KF 0028 #include <KFileItem> 0029 0030 // Local 0031 0032 namespace Gwenview 0033 { 0034 struct DocumentDirFinderPrivate; 0035 0036 /** 0037 * This class is a worker which tries to find the document dir given a root 0038 * url. This is useful for digital camera cards, which often have a dir 0039 * hierarchy like this: 0040 * /DCIM 0041 * /FOOBAR 0042 * /PICT0001.JPG 0043 * /PICT0002.JPG 0044 * ... 0045 * /PICTnnnn.JPG 0046 */ 0047 class DocumentDirFinder : public QObject 0048 { 0049 Q_OBJECT 0050 public: 0051 enum Status { 0052 NoDocumentFound, 0053 DocumentDirFound, 0054 MultipleDirsFound, 0055 }; 0056 0057 explicit DocumentDirFinder(const QUrl &rootUrl); 0058 ~DocumentDirFinder() override; 0059 0060 void start(); 0061 0062 Q_SIGNALS: 0063 void done(const QUrl &, DocumentDirFinder::Status); 0064 void protocollNotSupportedError(const QString &errorText); 0065 0066 private Q_SLOTS: 0067 void slotItemsAdded(const QUrl &, const KFileItemList &); 0068 void slotCompleted(); 0069 0070 private: 0071 DocumentDirFinderPrivate *const d; 0072 void finish(const QUrl &, Status); 0073 }; 0074 0075 } // namespace 0076 0077 #endif /* DOCUMENTDIRFINDER_H */