lbarthelemy@247: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbarthelemy@247: lbarthelemy@247: /* Sound Access lbarthelemy@247: EASAIER client application. lbarthelemy@247: Silogic 2007. Laure Bajard. lbarthelemy@247: lbarthelemy@247: This program is free software; you can redistribute it and/or lbarthelemy@247: modify it under the terms of the GNU General Public License as lbarthelemy@247: published by the Free Software Foundation; either version 2 of the lbarthelemy@247: License, or (at your option) any later version. See the file lbarthelemy@247: COPYING included with this distribution for more information. lbarthelemy@247: */ lbarthelemy@247: lbajardsilogic@21: #ifndef _EASAIER_SESSION_MANAGER_H_ lbajardsilogic@21: #define _EASAIER_SESSION_MANAGER_H_ lbajardsilogic@21: lbajardsilogic@21: #include lbajardsilogic@21: #include lbajardsilogic@21: lbajardsilogic@21: #include lbajardsilogic@21: #include lbajardsilogic@21: lbajardsilogic@21: #include "data/fileio/HttpClient.h" lbajardsilogic@21: #include "document/Document.h" lbajardsilogic@21: #include "view/Pane.h" lbajardsilogic@21: #include "data/model/QueryModel.h" lbajardsilogic@21: lbajardsilogic@21: class EasaierSessionManager : public QObject lbajardsilogic@21: { lbajardsilogic@21: Q_OBJECT lbajardsilogic@21: public: lbajardsilogic@21: EasaierSessionManager(HttpClient* httpClient); lbajardsilogic@21: virtual ~EasaierSessionManager(); lbajardsilogic@21: lbajardsilogic@21: class LoadedFile : public QFile lbajardsilogic@21: { lbajardsilogic@21: public: lbajardsilogic@21: LoadedFile() : QFile(){} lbajardsilogic@21: LoadedFile(const QString & name ) : QFile(name ){} lbajardsilogic@21: virtual ~LoadedFile(){} lbajardsilogic@21: lbajardsilogic@21: enum FileType { lbajardsilogic@21: UNKNOWN = 0, lbajardsilogic@21: AUDIO_SOURCE_INFO = 1, // information (metadata) about an audio file lbajardsilogic@21: MODEL = 2, // load a model in a existing layer lbajardsilogic@21: METADATA = 3, // load the model and create an associated layer lbajardsilogic@21: QUERY_CONFIG = 4, // config of the queries lbajardsilogic@143: QUERY_RESULTS = 5, // query results lbajardsilogic@143: RELATED_MEDIA_LIST = 6, // related media list benoitrigolleau@262: RELATED_MEDIA = 7, // related media benoitrigolleau@262: VOCAL_QUERY = 8 // related media lbajardsilogic@21: }; lbajardsilogic@21: lbajardsilogic@21: inline FileType getFileType() const {return m_type;} lbajardsilogic@21: inline void setFileType(const FileType type) {m_type = type;} lbajardsilogic@21: lbajardsilogic@21: inline QString getUri() const {return m_uri;} lbajardsilogic@21: inline void setUri(const QString& uri) {m_uri = uri;} lbajardsilogic@21: lbajardsilogic@21: protected: lbajardsilogic@21: FileType m_type; lbajardsilogic@21: lbajardsilogic@21: QString m_uri; lbajardsilogic@21: lbajardsilogic@21: }; lbajardsilogic@21: lbajardsilogic@21: public: lbajardsilogic@21: lbajardsilogic@21: inline void setHttpClient(HttpClient* httpClient) {m_httpClient = httpClient;} lbajardsilogic@21: lbarthelemy@247: void loadFile(const QString& query, const QString& filename, LoadedFile::FileType type, const QString& postPath=""); lbarthelemy@247: lbarthelemy@247: void loadFile(const QByteArray& payload, const QString& filename, LoadedFile::FileType type, const QString& postPath=""); lbajardsilogic@21: lbajardsilogic@21: bool newSession(); lbajardsilogic@21: void closeSession(); lbajardsilogic@21: void closeFile(); lbajardsilogic@21: lbajardsilogic@21: /* open a existing session file: lbajardsilogic@21: - open the audio source info file lbajardsilogic@21: - load the appropriate metadata (needed by opened layers) lbajardsilogic@21: */ lbajardsilogic@21: bool openSession(Document *document); lbajardsilogic@21: lbajardsilogic@21: /* open an audio source info file lbajardsilogic@21: */ lbajardsilogic@21: bool openAudioInfoFile(Document *document); lbajardsilogic@21: lbajardsilogic@21: /*import metadata info in a new layer*/ lbajardsilogic@21: void importMetadata(const QString& filename, Pane* pane); lbajardsilogic@21: lbajardsilogic@143: /*load all the related media from the list*/ lbajardsilogic@257: void importRelatedMedia(std::map *relMediaList); lbajardsilogic@143: lbajardsilogic@21: /* load the appropriate metadata (needed by opened layers) lbajardsilogic@21: of an audio file lbajardsilogic@21: */ lbajardsilogic@21: void loadRelatedModel(); lbajardsilogic@21: lbajardsilogic@21: /* add the metadata to the corresponding layers */ lbajardsilogic@21: bool addModelToLayers(const QString& name, const QString& filename); lbajardsilogic@21: lbajardsilogic@21: /*query the database*/ lbajardsilogic@21: void queryDatabase(const QString& themeName); lbajardsilogic@21: benoitrigolleau@262: /*speech recognition*/ benoitrigolleau@262: void speechRecognition(const QString& themeName); benoitrigolleau@262: lbajardsilogic@21: public slots: lbajardsilogic@21: void fileLoaded(int, bool); lbajardsilogic@21: lbajardsilogic@21: signals: lbajardsilogic@21: void queryModelLoaded(QueryModel* queryModel); lbajardsilogic@214: void audioFileLoaded(); lbajardsilogic@214: lbajardsilogic@21: lbajardsilogic@21: private: lbajardsilogic@21: lbajardsilogic@21: lbajardsilogic@21: QString m_fileName; lbajardsilogic@21: lbajardsilogic@21: HttpClient *m_httpClient; lbajardsilogic@92: lbajardsilogic@21: Document *m_document; lbajardsilogic@21: lbajardsilogic@21: std::map m_loadFile; lbajardsilogic@21: lbajardsilogic@21: AudioSourceInfoModel *m_audioSourceInfoModel; lbajardsilogic@21: lbajardsilogic@21: std::set m_modelLoaded; lbajardsilogic@21: lbajardsilogic@21: Pane *m_currentPane; lbajardsilogic@21: lbajardsilogic@21: QueryModel *m_queryModel; lbajardsilogic@257: lbajardsilogic@257: std::map m_relMediaList; lbajardsilogic@257: lbajardsilogic@21: }; lbajardsilogic@21: lbajardsilogic@21: #endif