Mercurial > hg > svcore
comparison base/ResourceFinder.h @ 679:c8badbd4c005
* Introduce ResourceFinder
| author | Chris Cannam |
|---|---|
| date | Wed, 04 May 2011 14:05:08 +0100 |
| parents | |
| children | 27cdabba2d3e |
comparison
equal
deleted
inserted
replaced
| 678:948271d124ac | 679:c8badbd4c005 |
|---|---|
| 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ | |
| 2 | |
| 3 /* | |
| 4 Sonic Visualiser | |
| 5 An audio file viewer and annotation editor. | |
| 6 Centre for Digital Music, Queen Mary, University of London. | |
| 7 | |
| 8 This program is free software; you can redistribute it and/or | |
| 9 modify it under the terms of the GNU General Public License as | |
| 10 published by the Free Software Foundation; either version 2 of the | |
| 11 License, or (at your option) any later version. See the file | |
| 12 COPYING included with this distribution for more information. | |
| 13 */ | |
| 14 | |
| 15 /* | |
| 16 This is a modified version of a source file from the | |
| 17 Rosegarden MIDI and audio sequencer and notation editor. | |
| 18 This file copyright 2005-2011 Chris Cannam and the Rosegarden | |
| 19 development team. | |
| 20 */ | |
| 21 | |
| 22 #ifndef _RESOURCE_FINDER_H_ | |
| 23 #define _RESOURCE_FINDER_H_ | |
| 24 | |
| 25 #include <QString> | |
| 26 | |
| 27 class ResourceFinder | |
| 28 { | |
| 29 public: | |
| 30 ResourceFinder() { } | |
| 31 virtual ~ResourceFinder() { } | |
| 32 | |
| 33 /** | |
| 34 * Return the location (as a true file path, or a Qt4 ":"-prefixed | |
| 35 * resource path) of the file best matching the given resource | |
| 36 * filename in the given resource category. | |
| 37 * | |
| 38 * Category should be a relative directory path without leading or | |
| 39 * trailing slashes, for example "chords". The fileName is the | |
| 40 * remainder of the file name without any path content, for | |
| 41 * example "user_chords.xml". | |
| 42 * | |
| 43 * Returns an empty string if no matching resource is found. | |
| 44 * | |
| 45 * Use this when you know that a particular resource is required | |
| 46 * and just need to locate it. | |
| 47 */ | |
| 48 QString getResourcePath(QString resourceCat, QString fileName); | |
| 49 | |
| 50 /** | |
| 51 * Return a list of full file paths for files with the given file | |
| 52 * extension, found in the given resource category. | |
| 53 * | |
| 54 * Category should be a relative directory path without leading or | |
| 55 * trailing slashes, for example "chords". File extension should | |
| 56 * be the extension without the dot, for example "xml". Returned | |
| 57 * list may mix true file paths in both installed and user | |
| 58 * locations with Qt4 ":"-prefixed resource paths. | |
| 59 * | |
| 60 * Use this when you need to enumerate the options available for | |
| 61 * use directly in the program (rather than e.g. offering the user | |
| 62 * a file-open dialog). | |
| 63 */ | |
| 64 QStringList getResourceFiles(QString resourceCat, QString fileExt); | |
| 65 | |
| 66 /** | |
| 67 * Return the true file path for installed resource files in the | |
| 68 * given resource category. Category should be a relative | |
| 69 * directory path without leading or trailing slashes, for example | |
| 70 * "chords". Note that resources may also exist in the Qt4 | |
| 71 * resource bundle; this method only returns the external | |
| 72 * (installed) resource location. Use getResourceFiles instead to | |
| 73 * return an authoritative list of available resources of a given | |
| 74 * type. | |
| 75 * | |
| 76 * Use this when you need a file path, e.g. for use in a file | |
| 77 * finder dialog. | |
| 78 */ | |
| 79 QString getResourceDir(QString resourceCat); | |
| 80 | |
| 81 /** | |
| 82 * Return the true file path for the location in which the named | |
| 83 * resource file in the given resource category should be saved. | |
| 84 */ | |
| 85 QString getResourceSavePath(QString resourceCat, QString fileName); | |
| 86 | |
| 87 /** | |
| 88 * Return the true file path for the location in which resource | |
| 89 * files in the given resource category should be saved. | |
| 90 */ | |
| 91 QString getResourceSaveDir(QString resourceCat); | |
| 92 | |
| 93 /** | |
| 94 * If the named resource file in the given resource category is | |
| 95 * available only as a bundled resource, copy it out into the user | |
| 96 * location returned by getResourceSavePath so that it can be read | |
| 97 * by non-Qt code. Any subsequent call to getResourcePath for | |
| 98 * this resource should return a true file path (if the resource | |
| 99 * exists) in either user or system location, or an empty string | |
| 100 * (if the resource does not exist), but never a ":"-prefixed | |
| 101 * resource path. This function does not overwrite any existing | |
| 102 * unbundled copy of the resource. | |
| 103 * | |
| 104 * Return false if a system error occurs during unbundling | |
| 105 * (e.g. disk full). | |
| 106 */ | |
| 107 bool unbundleResource(QString resourceCat, QString fileName); | |
| 108 | |
| 109 protected: | |
| 110 QString getUserResourcePrefix(); | |
| 111 QStringList getSystemResourcePrefixList(); | |
| 112 QStringList getResourcePrefixList(); | |
| 113 }; | |
| 114 | |
| 115 #endif | |
| 116 | |
| 117 |
