lbarthelemy@247
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbarthelemy@247
|
2
|
lbarthelemy@247
|
3 /* Sound Access
|
lbarthelemy@247
|
4 EASAIER client application.
|
lbarthelemy@247
|
5 Silogic 2007. Laure Bajard.
|
lbarthelemy@247
|
6
|
lbarthelemy@247
|
7 This program is free software; you can redistribute it and/or
|
lbarthelemy@247
|
8 modify it under the terms of the GNU General Public License as
|
lbarthelemy@247
|
9 published by the Free Software Foundation; either version 2 of the
|
lbarthelemy@247
|
10 License, or (at your option) any later version. See the file
|
lbarthelemy@247
|
11 COPYING included with this distribution for more information.
|
lbarthelemy@247
|
12 */
|
lbarthelemy@247
|
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@143
|
48 QUERY_RESULTS = 5, // query results
|
lbajardsilogic@143
|
49 RELATED_MEDIA_LIST = 6, // related media list
|
lbajardsilogic@143
|
50 RELATED_MEDIA = 7 // related media
|
lbajardsilogic@21
|
51 };
|
lbajardsilogic@21
|
52
|
lbajardsilogic@21
|
53 inline FileType getFileType() const {return m_type;}
|
lbajardsilogic@21
|
54 inline void setFileType(const FileType type) {m_type = type;}
|
lbajardsilogic@21
|
55
|
lbajardsilogic@21
|
56 inline QString getUri() const {return m_uri;}
|
lbajardsilogic@21
|
57 inline void setUri(const QString& uri) {m_uri = uri;}
|
lbajardsilogic@21
|
58
|
lbajardsilogic@21
|
59 protected:
|
lbajardsilogic@21
|
60 FileType m_type;
|
lbajardsilogic@21
|
61
|
lbajardsilogic@21
|
62 QString m_uri;
|
lbajardsilogic@21
|
63
|
lbajardsilogic@21
|
64 };
|
lbajardsilogic@21
|
65
|
lbajardsilogic@21
|
66 public:
|
lbajardsilogic@21
|
67
|
lbajardsilogic@21
|
68 inline void setHttpClient(HttpClient* httpClient) {m_httpClient = httpClient;}
|
lbajardsilogic@21
|
69
|
lbarthelemy@247
|
70 void loadFile(const QString& query, const QString& filename, LoadedFile::FileType type, const QString& postPath="");
|
lbarthelemy@247
|
71
|
lbarthelemy@247
|
72 void loadFile(const QByteArray& payload, const QString& filename, LoadedFile::FileType type, const QString& postPath="");
|
lbajardsilogic@21
|
73
|
lbajardsilogic@21
|
74 bool newSession();
|
lbajardsilogic@21
|
75 void closeSession();
|
lbajardsilogic@21
|
76 void closeFile();
|
lbajardsilogic@21
|
77
|
lbajardsilogic@21
|
78 /* open a existing session file:
|
lbajardsilogic@21
|
79 - open the audio source info file
|
lbajardsilogic@21
|
80 - load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
81 */
|
lbajardsilogic@21
|
82 bool openSession(Document *document);
|
lbajardsilogic@21
|
83
|
lbajardsilogic@21
|
84 /* open an audio source info file
|
lbajardsilogic@21
|
85 */
|
lbajardsilogic@21
|
86 bool openAudioInfoFile(Document *document);
|
lbajardsilogic@21
|
87
|
lbajardsilogic@21
|
88 /*import metadata info in a new layer*/
|
lbajardsilogic@21
|
89 void importMetadata(const QString& filename, Pane* pane);
|
lbajardsilogic@21
|
90
|
lbajardsilogic@143
|
91 /*load all the related media from the list*/
|
lbajardsilogic@257
|
92 void importRelatedMedia(std::map<QString, QString> *relMediaList);
|
lbajardsilogic@143
|
93
|
lbajardsilogic@21
|
94 /* load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
95 of an audio file
|
lbajardsilogic@21
|
96 */
|
lbajardsilogic@21
|
97 void loadRelatedModel();
|
lbajardsilogic@21
|
98
|
lbajardsilogic@21
|
99 /* add the metadata to the corresponding layers */
|
lbajardsilogic@21
|
100 bool addModelToLayers(const QString& name, const QString& filename);
|
lbajardsilogic@21
|
101
|
lbajardsilogic@21
|
102 /*query the database*/
|
lbajardsilogic@21
|
103 void queryDatabase(const QString& themeName);
|
lbajardsilogic@21
|
104
|
lbajardsilogic@21
|
105 public slots:
|
lbajardsilogic@21
|
106 void fileLoaded(int, bool);
|
lbajardsilogic@21
|
107
|
lbajardsilogic@21
|
108 signals:
|
lbajardsilogic@21
|
109 void queryModelLoaded(QueryModel* queryModel);
|
lbajardsilogic@214
|
110 void audioFileLoaded();
|
lbajardsilogic@214
|
111
|
lbajardsilogic@21
|
112
|
lbajardsilogic@21
|
113 private:
|
lbajardsilogic@21
|
114
|
lbajardsilogic@21
|
115
|
lbajardsilogic@21
|
116 QString m_fileName;
|
lbajardsilogic@21
|
117
|
lbajardsilogic@21
|
118 HttpClient *m_httpClient;
|
lbajardsilogic@92
|
119
|
lbajardsilogic@21
|
120 Document *m_document;
|
lbajardsilogic@21
|
121
|
lbajardsilogic@21
|
122 std::map<int , LoadedFile*> m_loadFile;
|
lbajardsilogic@21
|
123
|
lbajardsilogic@21
|
124 AudioSourceInfoModel *m_audioSourceInfoModel;
|
lbajardsilogic@21
|
125
|
lbajardsilogic@21
|
126 std::set<QString> m_modelLoaded;
|
lbajardsilogic@21
|
127
|
lbajardsilogic@21
|
128 Pane *m_currentPane;
|
lbajardsilogic@21
|
129
|
lbajardsilogic@21
|
130 QueryModel *m_queryModel;
|
lbajardsilogic@257
|
131
|
lbajardsilogic@257
|
132 std::map<QString, QString> m_relMediaList;
|
lbajardsilogic@257
|
133
|
lbajardsilogic@21
|
134 };
|
lbajardsilogic@21
|
135
|
lbajardsilogic@21
|
136 #endif |