Mercurial > hg > easaier-soundaccess
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\"> </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;