lbajardsilogic@21: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@21: lbajardsilogic@21: /* Sound Access lbajardsilogic@21: EASAIER client application. lbajardsilogic@21: Silogic 2007. Laure Bajard. lbajardsilogic@21: lbajardsilogic@21: This program is free software; you can redistribute it and/or lbajardsilogic@21: modify it under the terms of the GNU General Public License as lbajardsilogic@21: published by the Free Software Foundation; either version 2 of the lbajardsilogic@21: License, or (at your option) any later version. See the file lbajardsilogic@21: COPYING included with this distribution for more information. lbajardsilogic@21: */ lbajardsilogic@21: 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@21: QUERY_RESULTS = 5 // query results 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: lbajardsilogic@21: void loadFile(const QString& uri, LoadedFile::FileType type); 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@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: lbajardsilogic@21: public slots: lbajardsilogic@21: void fileLoaded(int, bool); lbajardsilogic@21: lbajardsilogic@21: signals: lbajardsilogic@21: void queryModelLoaded(QueryModel* queryModel); lbajardsilogic@21: lbajardsilogic@21: private: lbajardsilogic@21: lbajardsilogic@21: lbajardsilogic@21: QString m_fileName; lbajardsilogic@21: lbajardsilogic@21: HttpClient *m_httpClient; lbajardsilogic@21: 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@21: }; lbajardsilogic@21: lbajardsilogic@21: #endif