annotate data/fileio/FileFinder.h @ 1078:ce82bcdc95d0

Fail upfront if the file is going to be too large. We expect the caller to split up large data sets into several MatrixFiles
author Chris Cannam
date Wed, 10 Jun 2015 13:10:26 +0100
parents 6b77fcc39723
children aa61e73cf580 b1a7f4554400
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@837 31 AnyFile,
Chris@837 32 CSVFile,
Chris@858 33 LayerFileNonSV,
Chris@858 34 LayerFileNoMidiNonSV,
Chris@582 35 };
Chris@582 36
Chris@582 37 virtual QString getOpenFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 38 virtual QString getSaveFileName(FileType type, QString fallbackLocation = "") = 0;
Chris@582 39 virtual void registerLastOpenedFilePath(FileType type, QString path) = 0;
Chris@582 40
Chris@582 41 virtual QString find(FileType type, QString location, QString lastKnownLocation = "") = 0;
Chris@582 42
Chris@622 43 static FileFinder *getInstance() {
Chris@622 44 FFContainer *container = FFContainer::getInstance();
Chris@622 45 return container->getFileFinder();
Chris@622 46 }
Chris@582 47
Chris@582 48 protected:
Chris@622 49 class FFContainer {
Chris@622 50 public:
Chris@622 51 static FFContainer *getInstance() {
Chris@622 52 static FFContainer instance;
Chris@622 53 return &instance;
Chris@622 54 }
Chris@622 55 void setFileFinder(FileFinder *ff) { m_ff = ff; }
Chris@622 56 FileFinder *getFileFinder() const { return m_ff; }
Chris@622 57 private:
Chris@622 58 FileFinder *m_ff;
Chris@622 59 };
Chris@622 60
Chris@622 61 static void registerFileFinder(FileFinder *ff) {
Chris@622 62 FFContainer *container = FFContainer::getInstance();
Chris@622 63 container->setFileFinder(ff);
Chris@622 64 }
Chris@582 65 };
Chris@582 66
Chris@582 67 #endif
Chris@582 68
Chris@582 69