annotate data/fileio/FileFinder.h @ 1346:75ad55315db4 3.0-integration

More work on getting tests (especially file encoding ones) running on Windows. Various problems here to do with interaction with test filenames in Hg repos
author Chris Cannam
date Fri, 06 Jan 2017 15:44:55 +0000
parents b1a7f4554400
children ea1aa24ebf89
rev   line source
Chris@582 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@582 2
Chris@582 3 /*
Chris@582 4 Sonic Visualiser
Chris@582 5 An audio file viewer and annotation editor.
Chris@582 6 Centre for Digital Music, Queen Mary, University of London.
Chris@582 7 This file copyright 2009 QMUL.
Chris@582 8
Chris@582 9 This program is free software; you can redistribute it and/or
Chris@582 10 modify it under the terms of the GNU General Public License as
Chris@582 11 published by the Free Software Foundation; either version 2 of the
Chris@582 12 License, or (at your option) any later version. See the file
Chris@582 13 COPYING included with this distribution for more information.
Chris@582 14 */
Chris@582 15
Chris@1332 16 #ifndef SV_FILE_FINDER_H
Chris@1332 17 #define SV_FILE_FINDER_H
Chris@582 18
Chris@582 19 #include <QString>
Chris@582 20
Chris@582 21 class FileFinder
Chris@582 22 {
Chris@582 23 public:
Chris@582 24 enum FileType {
Chris@582 25 SessionFile,
Chris@582 26 AudioFile,
Chris@582 27 LayerFile,
Chris@582 28 LayerFileNoMidi,
Chris@582 29 SessionOrAudioFile,
Chris@582 30 ImageFile,
Chris@1332 31 SVGFile,
Chris@837 32 AnyFile,
Chris@837 33 CSVFile,
Chris@858 34 LayerFileNonSV,
Chris@858 35 LayerFileNoMidiNonSV,
Chris@582 36 };
Chris@582 37
Chris@582 38 virtual QString getOpenFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 39 virtual QString getSaveFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 40 virtual void registerLastOpenedFilePath(FileType type, QString path) = 0;
Chris@582 41
Chris@582 42 virtual QString find(FileType type, QString location, QString lastKnownLocation = "") = 0;
Chris@582 43
Chris@622 44 static FileFinder *getInstance() {
Chris@622 45 FFContainer *container = FFContainer::getInstance();
Chris@622 46 return container->getFileFinder();
Chris@622 47 }
Chris@582 48
Chris@582 49 protected:
Chris@622 50 class FFContainer {
Chris@622 51 public:
Chris@622 52 static FFContainer *getInstance() {
Chris@622 53 static FFContainer instance;
Chris@622 54 return &instance;
Chris@622 55 }
Chris@622 56 void setFileFinder(FileFinder *ff) { m_ff = ff; }
Chris@622 57 FileFinder *getFileFinder() const { return m_ff; }
Chris@622 58 private:
Chris@622 59 FileFinder *m_ff;
Chris@622 60 };
Chris@622 61
Chris@622 62 static void registerFileFinder(FileFinder *ff) {
Chris@622 63 FFContainer *container = FFContainer::getInstance();
Chris@622 64 container->setFileFinder(ff);
Chris@622 65 }
Chris@582 66 };
Chris@582 67
Chris@582 68 #endif
Chris@582 69
Chris@582 70