view widgets/ListResultGeneralItemWidget.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents be6d31baecb9
children
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*   
	Sound Access
		EASAIER client application.
		Silogic 2007. Benoit Rigolleau.

	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.
*/

#include "ListResultGeneralItemWidget.h"

#include "CriteriaDialog.h"
#include <QPixmap>
#include <QDesktopWidget>
#include <QSize>
#include <iostream>

ListResultGeneralItemWidget::ListResultGeneralItemWidget(QWidget *parent):QWidget(parent){
	vLayout1 = new QVBoxLayout(); 
	vLayout2 = new QVBoxLayout(); 
	hLayout1 = new QHBoxLayout(); 
	hLayout2 = new QHBoxLayout(); 
	hLayout3 = new QHBoxLayout(); 
	m_waitingWidget = new WaitingWidget();

	m_labelRank = new QLabel();
	m_labelIcon = new QLabel();
	m_labelTitleArtist = new QLabel();
	label4 = new QLabel(""); // for the icons
	label5 = new QLabel(""); // for the options
 
	m_buttonPrev = new QPushButton();
	m_buttonSimilar = new QPushButton();

	m_confidenceListWidget= new ConfidenceListWidget();
	m_confidenceListWidget->setMaximumWidth(180);

	
	// set parameters for each component

	m_labelRank->setMaximumWidth(40);
	m_labelRank->setMinimumWidth(40);
	m_labelIcon->setMaximumWidth(40);
	m_labelIcon->setMinimumWidth(40);
	label4->setMaximumWidth(40);
	label4->setMinimumWidth(40);

	m_labelRank->setAlignment(Qt::AlignCenter);
	m_labelIcon->setAlignment(Qt::AlignCenter);

	m_buttonPrev->setMaximumSize(68,34);
	m_buttonPrev->setMinimumSize(68,34);
	m_buttonSimilar->setMaximumSize(64,34);
	m_buttonSimilar->setMinimumSize(64,34);
	QSize similarIconSize;
	QSize prevIconSize;
	similarIconSize.setHeight(34);
	similarIconSize.setWidth(64);
	prevIconSize.setHeight(34);
	prevIconSize.setWidth(68);

	m_buttonSimilar->setIconSize(similarIconSize);
	m_buttonPrev->setIconSize(prevIconSize);


	m_buttonPrev->setIcon(QIcon(":icons/prev.png"));
	m_buttonPrev->setFlat(true);
	m_buttonSimilar->setIcon(QIcon(":icons/similar.png"));
	m_buttonSimilar->setFlat(true);

	//////////////
	/*QFrame *vLine = new QFrame();
	vLine->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine->setMaximumWidth(1);
	vLine->setMinimumWidth(1);
	QFrame *vLine2 = new QFrame();
	vLine2->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine2->setMaximumWidth(1);
	vLine2->setMinimumWidth(1);*/

	QWidget *mainWidget = new QWidget();
	
	hLayout1->setMargin(0);
	hLayout1->setSpacing(0);
	//hLayout1->addWidget(vLine);
	hLayout1->addWidget(mainWidget);
	//hLayout1->addWidget(vLine2);

	//////////
	
	QFrame *hLine = new QFrame();
	hLine->setFrameStyle(QFrame::HLine | QFrame::Raised);
	hLine->setMaximumHeight(1);
	hLine->setMinimumHeight(1);
	
	vLayout1->setMargin(0);
	vLayout1->setSpacing(0);
	vLayout1->addLayout(hLayout1);
	vLayout1->addWidget(hLine);

	this->setLayout(vLayout1);

	////////
	
	/*QFrame *vLine3 = new QFrame();
	vLine3->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine3->setMaximumWidth(1);
	vLine3->setMinimumWidth(1);
	QFrame *vLine4 = new QFrame();
	vLine4->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine4->setMaximumWidth(1);
	vLine4->setMinimumWidth(1);*/

	mainWidget->setLayout(hLayout2);
	hLayout2->setMargin(0);
	hLayout2->setSpacing(0);

	hLayout2->addWidget(m_labelRank);
	//hLayout2->addWidget(vLine3);
	hLayout2->addWidget(m_labelIcon);
	//hLayout2->addWidget(vLine4);
	hLayout2->addWidget(m_waitingWidget);

	//////

	m_waitingWidget->setLayout(vLayout2);
	vLayout2->addLayout(hLayout3);
	vLayout2->addWidget(label5);
	vLayout2->setMargin(0);
	vLayout2->setSpacing(0);

	/////
	/*QFrame *vLine5 = new QFrame();
	vLine5->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine5->setMaximumWidth(1);
	vLine5->setMinimumWidth(1);
	QFrame *vLine6 = new QFrame();
	vLine6->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine6->setMaximumWidth(1);
	vLine6->setMinimumWidth(1);
	QFrame *vLine7 = new QFrame();
	vLine7->setFrameStyle(QFrame::VLine | QFrame::Raised);
	vLine7->setMaximumWidth(1);
	vLine7->setMinimumWidth(1);*/

	hLayout3->setMargin(0);
	hLayout3->setSpacing(0);
	hLayout3->addWidget(m_labelTitleArtist);
	//hLayout3->addWidget(vLine5);
	hLayout3->addWidget(m_confidenceListWidget);
	//hLayout3->addWidget(vLine6);
	hLayout3->addWidget(label4);
	//hLayout3->addWidget(vLine7);
	hLayout3->addWidget(m_buttonPrev);
	hLayout3->addWidget(m_buttonSimilar);

	connect(m_buttonSimilar, SIGNAL(clicked()), this, SLOT(displayCriteria()));
	connect(m_labelTitleArtist, SIGNAL(linkActivated(QString)), this, SIGNAL(linkActivated(QString)));

}
ListResultGeneralItemWidget::~ListResultGeneralItemWidget()
{}

void ListResultGeneralItemWidget::setTitleAndAuthorName(QString author,QString title, QString uri){
	QString aux = title;
	if(aux.length() > 50){
		aux.truncate(47);
		aux+="...";
	}
	
	QString label;
	label = author+" - \"";
	label += "<a href=\"";
	label += uri;
	label += "\">";
	label += aux;
	label += "</a>";
	m_labelTitleArtist->setText(label);
	m_labelTitleArtist->setToolTip(title);
}

void ListResultGeneralItemWidget::setRank(int rank){
	m_labelRank->setText(QString().setNum(rank));
}

void ListResultGeneralItemWidget::setType(int type){
	QString pixmapName;
	switch(type){
		case 0:  
			pixmapName.append(":icons/musicIcon.png");
			break;
		case 1: 
			pixmapName.append(":icons/speechIcon.png");
			break;

		default: 
			break;
	}
	m_labelIcon->setPixmap(QPixmap(pixmapName));
}

void ListResultGeneralItemWidget::addConfidence(int confidence, QString confidenceName){
	m_confidenceListWidget->addConfidence(confidence,confidenceName);
}

void ListResultGeneralItemWidget::displayCriteria(){
	m_criteriaDialog = new CriteriaDialog();
	m_criteriaDialog->addCriteria("criteria 1");
	m_criteriaDialog->addCriteria("criteria 2");
	m_criteriaDialog->addCriteria("criteria 3");

	QDesktopWidget screen;
	
	int wscreen = screen.screenGeometry().width();
	int hscreen = screen.screenGeometry().height();
	int wcursor = QCursor::pos().x();
	int hcursor = QCursor::pos().y();
	int wdialog = m_criteriaDialog->width();
	int hdialog = m_criteriaDialog->height();
	
	int posx = wcursor;
	int posy = hcursor;

	if(wcursor+wdialog > wscreen){
		posx = wscreen - wdialog;
	}
	if(hcursor+(hdialog+40) > hscreen){
		posy = hscreen - (hdialog+40);
	}


	std::cerr << "wscreen:"<< wscreen
				<<" hscreen:"<<hscreen
				<<" wdialog:"<<wdialog
				<<" hdialog:"<<hdialog		
				<< std::endl;

	m_criteriaDialog->setLocation(posx,posy);
	m_criteriaDialog->setOpacity(0.9);
	if(m_criteriaDialog->exec()){
		 m_waitingWidget->setAnimation(true);
	}else{
		 m_waitingWidget->setAnimation(false);
	}
	delete m_criteriaDialog;
}