File: InteractiveFileFinder.h

package info (click to toggle)
sonic-visualiser 5.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,744 kB
  • sloc: cpp: 158,888; ansic: 11,920; sh: 1,785; makefile: 517; xml: 64; perl: 31
file content (83 lines) | stat: -rw-r--r-- 2,406 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Sonic Visualiser
    An audio file viewer and annotation editor.
    Centre for Digital Music, Queen Mary, University of London.
    This file copyright 2007 QMUL.
    
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef SV_INTERACTIVE_FILE_FINDER_H
#define SV_INTERACTIVE_FILE_FINDER_H

#include "data/fileio/FileFinder.h"

#include <QApplication>
#include <QString>
#include <QObject>

namespace sv {

class InteractiveFileFinder : public QObject,
                              public FileFinder
{
    Q_OBJECT

public:
    virtual ~InteractiveFileFinder();

    /// Specify the extension for this application's session files
    /// (without the dot)
    void setApplicationSessionExtension(QString extension);

    QString getApplicationSessionExtension() const {
        return m_sessionExtension;
    }

    QString getOpenFileName(FileType type,
                            QString fallbackLocation = "") override;
    
    QStringList getOpenFileNames(FileType type,
                                 QString fallbackLocation = "") override;
    
    QString getSaveFileName(FileType type,
                            QString fallbackLocation = "") override;
    
    void registerLastOpenedFilePath(FileType type,
                                    QString path) override;

    QString find(FileType type,
                 QString location,
                 QString lastKnownLocation = "") override;

    static void setParentWidget(QWidget *);

    static InteractiveFileFinder *getInstance() { return &m_instance; }

protected:
    InteractiveFileFinder();
    static InteractiveFileFinder m_instance;

    QString findRelative(QString location, QString relativeTo);
    QString locateInteractive(FileType type, QString thing);

    QStringList getOpenFileNames(FileType type,
                                 QString fallbackLocation,
                                 bool multiple);

    QString m_sessionExtension;
    QString m_lastLocatedLocation;

    QWidget *m_parent;
};

} // end namespace sv

#endif