annotate sv/main/EasaierSessionManager.h @ 143:97fd6148fb8e

support related media display and loading
author lbajardsilogic
date Tue, 13 Nov 2007 10:07:49 +0000
parents dd06af61a4ff
children c4e897bf012b
rev   line source
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