changeset 257:057856cf81a2

reformat the InfoWidget and integrate the related media query
author lbajardsilogic
date Wed, 18 Jun 2008 10:38:39 +0000
parents 6eeb195adbb4
children 14e8a46d506d
files data/fileio/SparqlRelatedMediaReader.cpp data/fileio/SparqlRelatedMediaReader.h sv/main/EasaierSessionManager.cpp sv/main/EasaierSessionManager.h widgets/InfoWidget.cpp widgets/RelatedMediaWidget.cpp widgets/RelatedMediaWidget.h
diffstat 7 files changed, 130 insertions(+), 92 deletions(-) [+]
line wrap: on
line diff
--- a/data/fileio/SparqlRelatedMediaReader.cpp	Tue Jun 17 11:59:02 2008 +0000
+++ b/data/fileio/SparqlRelatedMediaReader.cpp	Wed Jun 18 10:38:39 2008 +0000
@@ -15,7 +15,7 @@
 
 #include <iostream>
 
-SparqlRelatedMediaReader::SparqlRelatedMediaReader(std::list<QString> *relMediaList) : 
+SparqlRelatedMediaReader::SparqlRelatedMediaReader(std::map<QString, QString> *relMediaList) : 
 	m_relMediaList(relMediaList)
 {}
 
@@ -41,10 +41,11 @@
 	return false;
 }
 
-SparqlRelatedMediaHandler::SparqlRelatedMediaHandler(std::list<QString> *relMediaList) : QXmlDefaultHandler(),
+SparqlRelatedMediaHandler::SparqlRelatedMediaHandler(std::map<QString, QString> *relMediaList) : QXmlDefaultHandler(),
 	m_relMediaList(relMediaList),
-	m_inBinding(false),
-	m_curBindingName("")
+	m_inUriBinding(false),
+	m_inLiteralBinding(false),
+	m_curUriName("")
 {}
 
 bool SparqlRelatedMediaHandler::startElement(const QString &namespaceURI, const QString &localName,
@@ -94,8 +95,12 @@
 		// nothing needed
 		ok = true;
 
-    } else if ( (name == "uri") || (name == "literal") ) {
-		m_inBinding = true;	
+    //} else if ( (name == "uri") || (name == "literal") ) {
+	} else if (name == "uri") {
+		m_inUriBinding = true;	
+		ok = true;
+	} else if (name == "literal") {
+		m_inLiteralBinding = true;	
 		ok = true;
 	}
 
@@ -112,9 +117,14 @@
 {
 	QString name = qName.toLower();
 
-	if ( (name == "uri") || (name == "literal") )
+	//if ( (name == "uri") || (name == "literal") )
+	if (name == "uri")
 	{
-		m_inBinding = false;
+		m_inUriBinding = false;
+	}
+	if (name == "literal")
+	{
+		m_inLiteralBinding = false;
 	}
 
 	return true;
@@ -122,9 +132,13 @@
 
 bool SparqlRelatedMediaHandler::characters(const QString &str)
 {
-	if (m_inBinding)
+	if (m_inUriBinding)
 	{
-		m_relMediaList->push_back(str);
+		m_curUriName = str;
+		
+	} else if (m_inLiteralBinding)
+	{
+		m_relMediaList->insert(std::make_pair(m_curUriName,str));
 	}
 
     return true;
--- a/data/fileio/SparqlRelatedMediaReader.h	Tue Jun 17 11:59:02 2008 +0000
+++ b/data/fileio/SparqlRelatedMediaReader.h	Wed Jun 18 10:38:39 2008 +0000
@@ -14,25 +14,27 @@
 #ifndef _SPARQL_RELATED_MEDIA_READER_H_
 #define _SPARQL_RELATED_MEDIA_READER_H_
 
+#include <map>
+
 #include <QXmlDefaultHandler>
 
 class SparqlRelatedMediaReader 
 {
 public:
-	SparqlRelatedMediaReader(std::list<QString> *relMediaList);
+	SparqlRelatedMediaReader(std::map<QString, QString> *relMediaList);
 	virtual ~SparqlRelatedMediaReader(){}
 
 	bool parse(const QString & filename);
 
 private:
 
-	std::list<QString> *m_relMediaList;
+	std::map<QString, QString> *m_relMediaList;
 };
 
 class SparqlRelatedMediaHandler : public QXmlDefaultHandler
 {
 public:
-	SparqlRelatedMediaHandler(std::list<QString> *relMediaList);
+	SparqlRelatedMediaHandler(std::map<QString, QString> *relMediaList);
 
 	bool startElement(const QString &namespaceURI, const QString &localName,
 						  const QString &qName, const QXmlAttributes &attributes);
@@ -45,10 +47,11 @@
 
 private:
 
-	bool		m_inBinding;
-	QString		m_curBindingName;
+	bool		m_inUriBinding;
+	bool		m_inLiteralBinding;
+	QString		m_curUriName;
 
-	std::list<QString> *m_relMediaList;
+	std::map<QString, QString> *m_relMediaList;
 };
 
 #endif
--- a/sv/main/EasaierSessionManager.cpp	Tue Jun 17 11:59:02 2008 +0000
+++ b/sv/main/EasaierSessionManager.cpp	Wed Jun 18 10:38:39 2008 +0000
@@ -84,9 +84,9 @@
 	loadFile(query, filename, LoadedFile::AUDIO_SOURCE_INFO);
 
 	//get related media
-	/*query = m_httpClient->getServletName() + "?theme=relatedMedia" + params;
+	query = m_httpClient->getServletName() + "?theme=relatedMedia" + params;
 	filename = "/easaier/servlet/relatedMedia";
-	loadFile(query, filename, LoadedFile::RELATED_MEDIA_LIST);*/
+	loadFile(query, filename, LoadedFile::RELATED_MEDIA_LIST);
 
 	return true;
 }
@@ -112,9 +112,9 @@
 	
 	//get related media
 
-	/*query = m_httpClient->getServletName() + "?theme=relatedMedia" + params;
+	query = m_httpClient->getServletName() + "?theme=relatedMedia" + params;
 	filename = "/easaier/servlet/relatedMedia";
-	loadFile(query, filename, LoadedFile::RELATED_MEDIA_LIST);*/
+	loadFile(query, filename, LoadedFile::RELATED_MEDIA_LIST);
 
 	return true;
 }
@@ -349,17 +349,17 @@
 		}
 		case LoadedFile::RELATED_MEDIA_LIST :
 		{
-			std::list<QString> relMediaList;
-			SparqlRelatedMediaReader reader(&relMediaList);
+			m_relMediaList.clear();
+			SparqlRelatedMediaReader reader(&m_relMediaList);
 			read = reader.parse(filename);
-			importRelatedMedia(&relMediaList);
+			importRelatedMedia(&m_relMediaList);
 			break;
 		}
 		case LoadedFile::RELATED_MEDIA :
 		{
 			read = true;
 			RelatedMediaWidget* relMediaWidget = MainWindow::instance()->getRelatedMediaWidget();
-			relMediaWidget->addRelatedMedia(filename);
+			relMediaWidget->addRelatedMedia(filename, m_relMediaList);
 			break;
 		}
 		default: break;
@@ -497,15 +497,16 @@
 	m_currentPane = pane;
 }
 
-void EasaierSessionManager::importRelatedMedia(std::list<QString> *relMediaList)
+void EasaierSessionManager::importRelatedMedia(std::map<QString, QString> *relMediaList)
 {
 	QString filename;
 	QString query;
 
-	std::list<QString>::iterator iter;
+	std::map<QString, QString>::iterator iter;
 	for (iter = relMediaList->begin(); iter != relMediaList->end(); iter++)
 	{
-		filename = *iter;
+		filename = iter->first;
+		filename.remove("file:");
 
 		query = m_httpClient->getServletName() + "?theme=getFile&fileName=" + filename;
 
--- a/sv/main/EasaierSessionManager.h	Tue Jun 17 11:59:02 2008 +0000
+++ b/sv/main/EasaierSessionManager.h	Wed Jun 18 10:38:39 2008 +0000
@@ -89,7 +89,7 @@
 	void importMetadata(const QString& filename, Pane* pane);
 
 	/*load all the related media from the list*/
-	void importRelatedMedia(std::list<QString> *relMediaList);
+	void importRelatedMedia(std::map<QString, QString> *relMediaList);
 
 	/* load the appropriate metadata (needed by opened layers)
 	 of an audio file
@@ -128,6 +128,9 @@
 	Pane							*m_currentPane;
 
 	QueryModel						*m_queryModel;
+
+	std::map<QString, QString>		m_relMediaList;
+			
 };
 
 #endif
\ No newline at end of file
--- a/widgets/InfoWidget.cpp	Tue Jun 17 11:59:02 2008 +0000
+++ b/widgets/InfoWidget.cpp	Wed Jun 18 10:38:39 2008 +0000
@@ -69,12 +69,12 @@
 	m_infoLayout->setColumnMinimumWidth(3,20);
 
 	//display author and title at first
-/*	iterInfo = info.find("performance_title");
+	iterInfo = info.find("title");
 	if (iterInfo!= info.end())
 	{
 		proper = new QLabel(iterInfo->first.toUpper());
-		value = new QLabel(iterInfo->second);
-		m_infoLayout->addWidget(proper, row, 0,1,3);
+		value = new QLabel(iterInfo->second->join(" - "));
+		m_infoLayout->addWidget(proper, row, 2,1,1);
 		m_infoLayout->addWidget(value, row, 4,1,1);
 		row++;
 	}
@@ -82,77 +82,69 @@
 	if (iterInfo!= info.end())
 	{
 		proper = new QLabel(iterInfo->first.toUpper());
-		value = new QLabel(iterInfo->second);
-		m_infoLayout->addWidget(proper, row, 0,1,3);
+		value = new QLabel(iterInfo->second->join(" - "));
+		m_infoLayout->addWidget(proper, row, 2,1,1);
 		m_infoLayout->addWidget(value, row, 4,1,1);
 		row++;
 	}
-	m_infoLayout->setRowMinimumHeight(row,25);
+	iterInfo = info.find("performer_name");
+	if (iterInfo!= info.end())
+	{
+		proper = new QLabel("PERFORMER");
+		value = new QLabel(iterInfo->second->join(" - "));
+		m_infoLayout->addWidget(proper, row, 2,1,1);
+		m_infoLayout->addWidget(value, row, 4,1,1);
+		row++;
+	}
 	row++;
-	*/
+	
 	
 	//display other info
 	for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
 	{
-		/*if ((iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first.contains("http://purl.org/ontology/mo")))
+		if ( (iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first != "performer_name") && (iterInfo->first != "event_label") && (iterInfo->first != "signal"))
 		{
-			QString properName;
-			properName = iterInfo->first.split("#").last();
-			proper = new QLabel(properName);
-			icon = new QLabel();
-			if(properName == "beats"){
-				icon->setPixmap(QPixmap(":icons/instants.png"));
-			}else if(properName == "chromagram"){
-				icon->setPixmap(QPixmap(":icons/colour3d.png"));
-			}else if(properName == "instruments"){
-				icon->setPixmap(QPixmap(":icons/notes.png"));
-			}else if(properName == "key"){
-				icon->setPixmap(QPixmap(":icons/values.png"));
-			}else if(properName == "tempo"){
-				icon->setPixmap(QPixmap(":icons/values.png"));
-			}else{
-				//nothing
+			proper = new QLabel(iterInfo->first.toUpper());
+			QStringList *values = iterInfo->second;
+			QString label = "";
+			for (int i = 0; i < values->size(); ++i)
+			{
+				QString curVal = values->at(i);
+				if (curVal.contains("http:"))
+				{
+					curVal = curVal.right(curVal.length() - curVal.lastIndexOf('/') - 1);
+					curVal = curVal.right(curVal.length() - curVal.lastIndexOf('#') - 1);
+				}
+				label += curVal;	
+				if (i+1 < values->size())
+					label += " - ";
 			}
+			value = new QLabel(label);	
+			
+			m_infoLayout->addWidget(proper, row, 2,1,1);
+			m_infoLayout->addWidget(value, row, 4,1,1);
+			row++;
+		}
+	}
 
-			QString valueText(iterInfo->second);
-
-			if (valueText.right(4) == ".xml")
-			{
-				value = new QLabel();
-				//value->setIcon(QIcon(":icons/redo.png"));
-				value->setText("<html><header><style type=\"text/css\">a {text-decoration: none;}</style></header><body><a href=\"" + iterInfo->second + "\"><img src=\":icons/addToLayer.png\">&nbsp;</a></body></html>");
-				value->setToolTip(tr("Add this layer to the layer list"));
-				//connect the main window to the linkActivated signal
-				connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
-				
-				m_infoLayout->addWidget(icon,row,0,1,1);
-				m_infoLayout->addWidget(proper, row, 2,1,1);
-				m_infoLayout->addWidget(value, row, 4,1,1);
-				row++;
-			} 
-		}*/
-		if (iterInfo->first == "event_label")
+	iterInfo = info.find("event_label");
+	if (iterInfo!= info.end())
+	{
+		proper = new QLabel("TIMELINE INFORMATION");
+		value = new QLabel("");
+		QString label;
+		QStringList::const_iterator constIterator;
+		for (constIterator = iterInfo->second->constBegin(); constIterator != iterInfo->second->constEnd(); ++constIterator)
 		{
-			proper = new QLabel(iterInfo->first);
-			value = new QLabel(iterInfo->second->join(" - "));	
-			QString label;
-			QStringList::const_iterator constIterator;
-			for (constIterator = iterInfo->second->constBegin(); constIterator != iterInfo->second->constEnd(); ++constIterator)
-			{
-				label += "<a href=\"";
-				label += *constIterator;
-				label += "\">";
-				label += *constIterator;
-				label += "</a> - ";
-			}
-			value->setText(label);
-			//connect the main window to the linkActivated signal
-			connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
+			label += "<a href=\"";
+			label += *constIterator;
+			label += "\">";
+			label += *constIterator;
+			label += "</a> - ";
 		}
-		else {
-			proper = new QLabel(iterInfo->first);
-			value = new QLabel(iterInfo->second->join(" - "));	
-		}
+		value->setText(label);
+		//connect the main window to the linkActivated signal
+		connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
 		m_infoLayout->addWidget(proper, row, 2,1,1);
 		m_infoLayout->addWidget(value, row, 4,1,1);
 		row++;
--- a/widgets/RelatedMediaWidget.cpp	Tue Jun 17 11:59:02 2008 +0000
+++ b/widgets/RelatedMediaWidget.cpp	Wed Jun 18 10:38:39 2008 +0000
@@ -17,6 +17,7 @@
 #include <QLinearGradient>
 #include <QScrollArea>
 #include <QVBoxLayout>
+#include <QTextEdit>
 
 #include <iostream>
 
@@ -46,7 +47,7 @@
 	}
 }
 
-void RelatedMediaWidget::addRelatedMedia(const QString &filename)
+void RelatedMediaWidget::addRelatedMedia(const QString &filename, std::map<QString, QString> relMediaList)
 {
 	QString imageSource;
 	QString extension = filename.right(filename.length() - (filename.lastIndexOf('.') + 1));
@@ -80,7 +81,16 @@
 	connect(mediaLabel, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(runExternProcess(QString)));
 
 	QLabel *textLabel = new QLabel();
-	textLabel->setText("<html><a >Info may be added here</a><a href=\"" + filename + "\">...</a></html>");
+	QString uri = "file:" + filename.right(filename.length() - filename.lastIndexOf("/data"));
+	std::map<QString, QString>::iterator iter = relMediaList.find(uri);
+	if (iter != relMediaList.end())
+	{
+		//textLabel->setText(iter->second);
+		textLabel->setText("<html><a >" + (iter->second).left(50) + "</a><a href=\"" + iter->second + "\">...</a></html>");
+		connect(textLabel, SIGNAL(linkActivated(QString)), this, SLOT(showLabel(QString)));
+	} else {
+		textLabel->setText("<html><a >Info may be added here</a><a href=\"" + filename + "\">...</a></html>");
+	}
 
 	QVBoxLayout *mediaLayout = new QVBoxLayout;
 	mediaLayout->addWidget(mediaLabel);
@@ -93,3 +103,13 @@
 
 	m_nbRelMedia++;
 }
+
+void RelatedMediaWidget::showLabel(QString label)
+{
+	QTextEdit *showLabel = new QTextEdit;
+	showLabel->setReadOnly(true);
+	showLabel->setHtml("<html><br><br>" + label + "</br></br></html>");
+	//showLabel->setText("<html><br><br>" + label + "</br></br></html>");
+	//showLabel->setText(label);
+	showLabel->show();
+}
--- a/widgets/RelatedMediaWidget.h	Tue Jun 17 11:59:02 2008 +0000
+++ b/widgets/RelatedMediaWidget.h	Wed Jun 18 10:38:39 2008 +0000
@@ -14,6 +14,8 @@
 #ifndef _RELATED_MEDIA_WIDGET_H_
 #define _RELATED_MEDIA_WIDGET_H_
 
+#include <map>
+
 #include <QWidget>
 #include <QPainter>
 #include <QGridLayout>
@@ -31,8 +33,11 @@
 
 	void reset();
 
-	void addRelatedMedia(const QString &filename);
+	void addRelatedMedia(const QString &filename, std::map<QString, QString> relMediaList);
 	
+protected slots:
+	void showLabel(QString);
+
 protected:
 
 	FlowLayout		*m_relMediaLayout;