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@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
|
lbajardsilogic@90
|
70 void loadFile(const QString& query, const QString& filename, LoadedFile::FileType type);
|
lbajardsilogic@21
|
71
|
lbajardsilogic@21
|
72 bool newSession();
|
lbajardsilogic@21
|
73 void closeSession();
|
lbajardsilogic@21
|
74 void closeFile();
|
lbajardsilogic@21
|
75
|
lbajardsilogic@21
|
76 /* open a existing session file:
|
lbajardsilogic@21
|
77 - open the audio source info file
|
lbajardsilogic@21
|
78 - load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
79 */
|
lbajardsilogic@21
|
80 bool openSession(Document *document);
|
lbajardsilogic@21
|
81
|
lbajardsilogic@21
|
82 /* open an audio source info file
|
lbajardsilogic@21
|
83 */
|
lbajardsilogic@21
|
84 bool openAudioInfoFile(Document *document);
|
lbajardsilogic@21
|
85
|
lbajardsilogic@21
|
86 /*import metadata info in a new layer*/
|
lbajardsilogic@21
|
87 void importMetadata(const QString& filename, Pane* pane);
|
lbajardsilogic@21
|
88
|
lbajardsilogic@143
|
89 /*load all the related media from the list*/
|
lbajardsilogic@143
|
90 void importRelatedMedia(std::list<QString> *relMediaList);
|
lbajardsilogic@143
|
91
|
lbajardsilogic@21
|
92 /* load the appropriate metadata (needed by opened layers)
|
lbajardsilogic@21
|
93 of an audio file
|
lbajardsilogic@21
|
94 */
|
lbajardsilogic@21
|
95 void loadRelatedModel();
|
lbajardsilogic@21
|
96
|
lbajardsilogic@21
|
97 /* add the metadata to the corresponding layers */
|
lbajardsilogic@21
|
98 bool addModelToLayers(const QString& name, const QString& filename);
|
lbajardsilogic@21
|
99
|
lbajardsilogic@21
|
100 /*query the database*/
|
lbajardsilogic@21
|
101 void queryDatabase(const QString& themeName);
|
lbajardsilogic@21
|
102
|
lbajardsilogic@21
|
103 public slots:
|
lbajardsilogic@21
|
104 void fileLoaded(int, bool);
|
lbajardsilogic@21
|
105
|
lbajardsilogic@21
|
106 signals:
|
lbajardsilogic@21
|
107 void queryModelLoaded(QueryModel* queryModel);
|
lbajardsilogic@21
|
108
|
lbajardsilogic@21
|
109 private:
|
lbajardsilogic@21
|
110
|
lbajardsilogic@21
|
111
|
lbajardsilogic@21
|
112 QString m_fileName;
|
lbajardsilogic@21
|
113
|
lbajardsilogic@21
|
114 HttpClient *m_httpClient;
|
lbajardsilogic@92
|
115
|
lbajardsilogic@21
|
116 Document *m_document;
|
lbajardsilogic@21
|
117
|
lbajardsilogic@21
|
118 std::map<int , LoadedFile*> m_loadFile;
|
lbajardsilogic@21
|
119
|
lbajardsilogic@21
|
120 AudioSourceInfoModel *m_audioSourceInfoModel;
|
lbajardsilogic@21
|
121
|
lbajardsilogic@21
|
122 std::set<QString> m_modelLoaded;
|
lbajardsilogic@21
|
123
|
lbajardsilogic@21
|
124 Pane *m_currentPane;
|
lbajardsilogic@21
|
125
|
lbajardsilogic@21
|
126 QueryModel *m_queryModel;
|
lbajardsilogic@21
|
127 };
|
lbajardsilogic@21
|
128
|
lbajardsilogic@21
|
129 #endif |