diff sv/main/EasaierSessionManager.h @ 21:ac5491829e61

add - EasaierSessionManager - Easaier menus - Interval model
author lbajardsilogic
date Mon, 14 May 2007 13:15:26 +0000
parents
children 87495ac7710a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sv/main/EasaierSessionManager.h	Mon May 14 13:15:26 2007 +0000
@@ -0,0 +1,124 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*	Sound Access	
+		EASAIER client application.	
+		Silogic 2007. Laure Bajard. 
+	
+	This program is free software; you can redistribute it and/or    
+	modify it under the terms of the GNU General Public License as    
+	published by the Free Software Foundation; either version 2 of the    
+	License, or (at your option) any later version.  See the file    
+	COPYING included with this distribution for more information.
+*/
+
+#ifndef _EASAIER_SESSION_MANAGER_H_
+#define _EASAIER_SESSION_MANAGER_H_
+
+#include <QObject>
+#include <QFile>
+
+#include <map>
+#include <set>
+
+#include "data/fileio/HttpClient.h"
+#include "document/Document.h"
+#include "view/Pane.h"
+#include "data/model/QueryModel.h"
+
+class EasaierSessionManager : public QObject
+{
+	Q_OBJECT
+public:
+	EasaierSessionManager(HttpClient* httpClient);
+	virtual ~EasaierSessionManager();
+
+	class LoadedFile : public QFile
+	{
+	public:
+		LoadedFile() : QFile(){}
+		LoadedFile(const QString & name ) : QFile(name ){}
+		virtual ~LoadedFile(){}
+
+		enum FileType {
+			UNKNOWN				= 0,
+			AUDIO_SOURCE_INFO	= 1, // information (metadata) about an audio file
+			MODEL				= 2, // load a model in a existing layer
+			METADATA			= 3, // load the model and create an associated layer
+			QUERY_CONFIG		= 4, // config of the queries
+			QUERY_RESULTS		= 5  // query results
+		};
+
+		inline FileType getFileType() const {return m_type;}
+		inline void setFileType(const FileType type) {m_type = type;}
+
+		inline QString getUri() const {return m_uri;}
+		inline void setUri(const QString& uri) {m_uri = uri;}
+
+	protected:
+		FileType m_type;
+
+		QString m_uri;
+
+	};
+
+public:
+
+	inline void setHttpClient(HttpClient* httpClient) {m_httpClient = httpClient;}
+
+	void loadFile(const QString& uri, LoadedFile::FileType type);
+
+	bool newSession();
+	void closeSession();
+	void closeFile();
+
+	/* open a existing session file:
+	- open the audio source info file 
+	- load the appropriate metadata (needed by opened layers)
+	*/
+	bool openSession(Document *document);
+
+	/* open an audio source info file
+	*/
+	bool openAudioInfoFile(Document *document);
+
+	/*import metadata info in a new layer*/
+	void importMetadata(const QString& filename, Pane* pane);
+
+	/* load the appropriate metadata (needed by opened layers)
+	 of an audio file
+	*/
+	void loadRelatedModel();
+
+	/* add the metadata  to the corresponding layers */
+	bool addModelToLayers(const QString& name, const QString& filename);
+
+	/*query the database*/
+	void queryDatabase(const QString& themeName);
+
+public slots:
+	void fileLoaded(int, bool);
+
+signals:
+	void queryModelLoaded(QueryModel* queryModel);
+
+private:
+
+
+	QString							m_fileName;
+
+	HttpClient						*m_httpClient;
+
+	Document						*m_document;
+	
+	std::map<int , LoadedFile*>		m_loadFile;
+
+	AudioSourceInfoModel			*m_audioSourceInfoModel;
+
+	std::set<QString>				m_modelLoaded;
+
+	Pane							*m_currentPane;
+
+	QueryModel						*m_queryModel;
+};
+
+#endif
\ No newline at end of file