annotate data/fileio/FileFinder.h @ 661:a4faa1840384

* If a FileSource URL won't convert at all in strict mode, try again in tolerant mode (necessary for e.g. filenames with square brackets in them)
author Chris Cannam
date Tue, 19 Oct 2010 21:47:55 +0100
parents 43b0bfd07bd3
children 1de00ee53be1
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@582 16 #ifndef _FILE_FINDER_H_
Chris@582 17 #define _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@582 31 AnyFile
Chris@582 32 };
Chris@582 33
Chris@582 34 virtual QString getOpenFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 35 virtual QString getSaveFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 36 virtual void registerLastOpenedFilePath(FileType type, QString path) = 0;
Chris@582 37
Chris@582 38 virtual QString find(FileType type, QString location, QString lastKnownLocation = "") = 0;
Chris@582 39
Chris@622 40 static FileFinder *getInstance() {
Chris@622 41 FFContainer *container = FFContainer::getInstance();
Chris@622 42 return container->getFileFinder();
Chris@622 43 }
Chris@582 44
Chris@582 45 protected:
Chris@622 46 class FFContainer {
Chris@622 47 public:
Chris@622 48 static FFContainer *getInstance() {
Chris@622 49 static FFContainer instance;
Chris@622 50 return &instance;
Chris@622 51 }
Chris@622 52 void setFileFinder(FileFinder *ff) { m_ff = ff; }
Chris@622 53 FileFinder *getFileFinder() const { return m_ff; }
Chris@622 54 private:
Chris@622 55 FileFinder *m_ff;
Chris@622 56 };
Chris@622 57
Chris@622 58 static void registerFileFinder(FileFinder *ff) {
Chris@622 59 FFContainer *container = FFContainer::getInstance();
Chris@622 60 container->setFileFinder(ff);
Chris@622 61 }
Chris@582 62 };
Chris@582 63
Chris@582 64 #endif
Chris@582 65
Chris@582 66