lbajardsilogic@21
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@21
|
2
|
lbajardsilogic@21
|
3 /* Sound Access
|
lbajardsilogic@21
|
4 EASAIER client application.
|
lbajardsilogic@21
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@21
|
6
|
lbajardsilogic@21
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@21
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@21
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@21
|
10 License, or (at your option) any later version. See the file
|
lbajardsilogic@21
|
11 COPYING included with this distribution for more information.
|
lbajardsilogic@21
|
12 */
|
lbajardsilogic@21
|
13
|
lbajardsilogic@21
|
14 #ifndef _EASAIER_SESSION_MANAGER_H_
|
lbajardsilogic@21
|
15 #define _EASAIER_SESSION_MANAGER_H_
|
lbajardsilogic@21
|
16
|
lbajardsilogic@21
|
17 #include <QObject>
|
lbajardsilogic@21
|
18 #include <QFile>
|
lbajardsilogic@21
|
19
|
lbajardsilogic@21
|
20 #include <map>
|
lbajardsilogic@21
|
21 #include <set>
|
lbajardsilogic@21
|
22
|
lbajardsilogic@21
|
23 #include "data/fileio/HttpClient.h"
|
lbajardsilogic@21
|
24 #include "document/Document.h"
|
lbajardsilogic@21
|
25 #include "view/Pane.h"
|
lbajardsilogic@21
|
26 #include "data/model/QueryModel.h"
|
lbajardsilogic@21
|
27
|
lbajardsilogic@21
|
28 class EasaierSessionManager : public QObject
|
lbajardsilogic@21
|
29 {
|
lbajardsilogic@21
|
30 Q_OBJECT
|
lbajardsilogic@21
|
31 public:
|
lbajardsilogic@21
|
32 EasaierSessionManager(HttpClient* httpClient);
|
lbajardsilogic@21
|
33 virtual ~EasaierSessionManager();
|
lbajardsilogic@21
|
34
|
lbajardsilogic@21
|
35 class LoadedFile : public QFile
|
lbajardsilogic@21
|
36 {
|
lbajardsilogic@21
|
37 public:
|
lbajardsilogic@21
|
38 LoadedFile() : QFile(){}
|
lbajardsilogic@21
|
39 LoadedFile(const QString & name ) : QFile(name ){}
|
lbajardsilogic@21
|
40 virtual ~LoadedFile(){}
|
lbajardsilogic@21
|
41
|
lbajardsilogic@21
|
42 enum FileType {
|
lbajardsilogic@21
|
43 UNKNOWN = 0,
|
lbajardsilogic@21
|
44 AUDIO_SOURCE_INFO = 1, // information (metadata) about an audio file
|
lbajardsilogic@21
|
45 MODEL = 2, // load a model in a existing layer
|
lbajardsilogic@21
|
46 METADATA = 3, // load the model and create an associated layer
|
lbajardsilogic@21
|
47 QUERY_CONFIG = 4, // config of the queries
|
lbajardsilogic@21
|
48 QUERY_RESULTS = 5 // query results
|
lbajardsilogic@21
|
49 };
|
lbajardsilogic@21
|
50
|
lbajardsilogic@21
|
51 inline FileType getFileType() const {return m_type;}
|
lbajardsilogic@21
|
52 inline void setFileType(const FileType type) {m_type = type;}
|
lbajardsilogic@21
|
53
|
lbajardsilogic@21
|
54 inline QString getUri() const {return m_uri;}
|
lbajardsilogic@21
|
55 inline void setUri(const QString& uri) {m_uri = uri;}
|
lbajardsilogic@21
|
56
|
lbajardsilogic@21
|
57 protected:
|
lbajardsilogic@21
|
58 FileType m_type;
|
lbajardsilogic@21
|
59
|
lbajardsilogic@21
|
60 QString m_uri;
|
lbajardsilogic@21
|
61
|
lbajardsilogic@21
|
62 };
|
lbajardsilogic@21
|
63
|
lbajardsilogic@21
|
64 public:
|
lbajardsilogic@21
|
65
|
lbajardsilogic@21
|
66 inline void setHttpClient(HttpClient* httpClient) {m_httpClient = httpClient;}
|
lbajardsilogic@21
|
67
|
lbajardsilogic@90
|
68 void loadFile(const QString& query, const QString& filename, LoadedFile::FileType type);
|
lbajardsilogic@21
|
69
|
lbajardsilogic@21
|
70 bool newSession();
|
lbajardsilogic@21
|
71 void closeSession();
|
lbajardsilogic@21
|
72 void closeFile();
|
lbajardsilogic@21
|
73
|
lbajardsilogic@21
|
74 /* open a existing session file:
|
lbajardsilogic@21
|
75 - open the audio source info file
|
lbajardsilogic@21
|
76 - load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
77 */
|
lbajardsilogic@21
|
78 bool openSession(Document *document);
|
lbajardsilogic@21
|
79
|
lbajardsilogic@21
|
80 /* open an audio source info file
|
lbajardsilogic@21
|
81 */
|
lbajardsilogic@21
|
82 bool openAudioInfoFile(Document *document);
|
lbajardsilogic@21
|
83
|
lbajardsilogic@21
|
84 /*import metadata info in a new layer*/
|
lbajardsilogic@21
|
85 void importMetadata(const QString& filename, Pane* pane);
|
lbajardsilogic@21
|
86
|
lbajardsilogic@21
|
87 /* load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
88 of an audio file
|
lbajardsilogic@21
|
89 */
|
lbajardsilogic@21
|
90 void loadRelatedModel();
|
lbajardsilogic@21
|
91
|
lbajardsilogic@21
|
92 /* add the metadata to the corresponding layers */
|
lbajardsilogic@21
|
93 bool addModelToLayers(const QString& name, const QString& filename);
|
lbajardsilogic@21
|
94
|
lbajardsilogic@21
|
95 /*query the database*/
|
lbajardsilogic@21
|
96 void queryDatabase(const QString& themeName);
|
lbajardsilogic@21
|
97
|
lbajardsilogic@21
|
98 public slots:
|
lbajardsilogic@21
|
99 void fileLoaded(int, bool);
|
lbajardsilogic@21
|
100
|
lbajardsilogic@21
|
101 signals:
|
lbajardsilogic@21
|
102 void queryModelLoaded(QueryModel* queryModel);
|
lbajardsilogic@21
|
103
|
lbajardsilogic@21
|
104 private:
|
lbajardsilogic@21
|
105
|
lbajardsilogic@21
|
106
|
lbajardsilogic@21
|
107 QString m_fileName;
|
lbajardsilogic@21
|
108
|
lbajardsilogic@21
|
109 HttpClient *m_httpClient;
|
lbajardsilogic@92
|
110
|
lbajardsilogic@21
|
111 Document *m_document;
|
lbajardsilogic@21
|
112
|
lbajardsilogic@21
|
113 std::map<int , LoadedFile*> m_loadFile;
|
lbajardsilogic@21
|
114
|
lbajardsilogic@21
|
115 AudioSourceInfoModel *m_audioSourceInfoModel;
|
lbajardsilogic@21
|
116
|
lbajardsilogic@21
|
117 std::set<QString> m_modelLoaded;
|
lbajardsilogic@21
|
118
|
lbajardsilogic@21
|
119 Pane *m_currentPane;
|
lbajardsilogic@21
|
120
|
lbajardsilogic@21
|
121 QueryModel *m_queryModel;
|
lbajardsilogic@21
|
122 };
|
lbajardsilogic@21
|
123
|
lbajardsilogic@21
|
124 #endif |