example/DemoGUI/CustomListWidget.cpp
author cgandhi
Thu, 05 Aug 2010 16:35:33 +0530
changeset 16 b78fa4cdbf2b
child 26 83d6a149c755
permissions -rw-r--r--
pushing the demo application

#include "CustomListWidget.h"
#include <qlistwidget.h>
#include <qboxlayout.h>
#include <qlabel.h>
#include <qdebug.h>
#include "ScreenSize.h"
#include <qpushbutton.h>
#include "WidgetConstants.h"

CustomListWidget::CustomListWidget()
{
     setStyleSheet("selection-color: yellow;"
                      "selection-background-color: grey;");
}
CustomListWidget::~CustomListWidget()
{

}

void CustomListWidget::AddListItem(QString aIconPath,QString aFirstLine,QString aSecondLine)
{
    QWidget* customwidget = new QWidget;
    QHBoxLayout* HMainlayout = new QHBoxLayout(customwidget);
    QLabel *lab =new QLabel();
    lab->setPixmap(QPixmap(aIconPath));
    lab->setFixedSize(60,60);
    HMainlayout->addWidget(lab);

    //To add First & second row horizontal layouts
    QVBoxLayout* VTextlayout = new QVBoxLayout;

    QHBoxLayout* HFirstrowLayout = new QHBoxLayout;
    //Add FirstLine label
    QLabel *lab1 =new QLabel(aFirstLine);
    lab1->setStyleSheet("font: bold 20px;");
    HFirstrowLayout->addWidget(lab1);
    //Add Images to
    QLabel *Img1lab =new QLabel();
    Img1lab->setPixmap(QPixmap(aIconPath));
    Img1lab->setFixedSize(10,10);
    QLabel *Img2lab =new QLabel();
    Img2lab->setPixmap(QPixmap(aIconPath));
    Img2lab->setFixedSize(10,10);
    QLabel *Img3lab =new QLabel();
    Img3lab->setPixmap(QPixmap(aIconPath));
    Img3lab->setFixedSize(10,10);

    HFirstrowLayout->addWidget(Img1lab);
    HFirstrowLayout->addWidget(Img2lab);
    HFirstrowLayout->addWidget(Img3lab);

//        HFirstrowLayout->setAlignment(Img3lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img2lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img1lab,Qt::AlignRight);

    VTextlayout->addLayout(HFirstrowLayout);


     QHBoxLayout* HSecondrowLayout = new QHBoxLayout;
    QLabel *lab2 =new QLabel(aSecondLine);
    lab2->setStyleSheet("font: 16px;");
    HSecondrowLayout->addWidget(lab2);

    QLabel *Timestamplabel =new QLabel("00:00 JUL 12");
    Timestamplabel->setStyleSheet("font: 12px;");
    HSecondrowLayout->addWidget(Timestamplabel);

    HSecondrowLayout->setAlignment(Timestamplabel,Qt::AlignRight);

    VTextlayout->addLayout(HSecondrowLayout);


    HMainlayout->addLayout(VTextlayout);
    customwidget->setLayout(HMainlayout);
    QListWidgetItem *item=new QListWidgetItem;

    //customlist->adjustSize();
    //customlist->adjustSize();
    item->setSizeHint(QSize(60,60));

    addItem(item);
    setItemWidget(item,customwidget);
}

void CustomListWidget::AddListItem(QMainWindow *mainWindow,QStringList aIconPath,QStringList aNames)
{
	qDebug()<<"Inside GridView::CreateGridView()";
	qDebug()<<"aIconPath count = "<<aIconPath.count();
	qDebug()<<"names count = "<<aNames.count();

	int row;
	int col;
	//QWidget* widget = new QWidget();
	QGridLayout* GridLayout = new QGridLayout(this);
	if((6 == aIconPath.count()) || (5 == aIconPath.count()))
	{
		row = 3;
		col = 2;
	}
	else if((4 == aIconPath.count()) || (3 == aIconPath.count()))
	{
		row = col = 2;
	}
	else if((2 == aIconPath.count()) || (1 == aIconPath.count()))
	{
		row = 1;
		col = 2;
	}
	else if(0 == aIconPath.count())
	{
		row = col = 0;
	}

	int rowSpace = (ScreenSize::GetScreenRect().height() - (KHeadNameHeight+ToolbarIconHeight+2*KWidgetGapFactor))/row;
	int colSpace = (ScreenSize::GetScreenRect().width() - 2*KWidgetGapFactor )/col;

	int index = 0;
	for(int i=0;i<row;i++)
	{
		for(int j=0;j<col;j++)
		{
		QPushButton *pushBtn = new QPushButton();
		qDebug()<<"name = "<<aNames[index];
		int gapFac = KHeadNameHeight+ToolbarIconHeight;
		pushBtn->setGeometry(i*colSpace,(j*rowSpace + KWidgetGapFactor),colSpace,rowSpace);
		pushBtn->setIconSize(QSize(colSpace-(3*KWidgetGapFactor),colSpace+(3*KWidgetGapFactor)));
		qDebug()<<"icon = "<<aIconPath[index];
		pushBtn->setIcon(QIcon(aIconPath[index]));
		qDebug()<<"After image display";
		GridLayout->addWidget(pushBtn,i,j);
		
		index++;
		if(index == aNames.count())
			{
			qDebug()<<"Count became same so exiting";
			break;
			}
		}
	if(index == aNames.count())
		{
		qDebug()<<"Count became same so exiting";
		break;
		}
	}
	//Its required please don't remove
	show();
}


QWidget* CustomListWidget::CreateListwidget(SmfContactList* friendsList)
	{
	qDebug()<<"Inside CustomListWidget::CreateListwidget() for friends";
	qDebug()<<"Friends count = "<<friendsList->count();
	
    QListWidget* customlist = new QListWidget();
    
    // Todo:- Display something when no friends are available
    foreach(SmfContact contact, *friendsList)
    {
    	QString name(contact.value("Name").value<QContactName>().firstName());
    	QString status(contact.value("Presence").value<QContactPresence>().customMessage());
    	if(!status.size())
    		status.append("Not available");
    	//QUrl url(contact.value("Avatar").value<QContactAvatar>().imageUrl());
    	QString url("C:\\data\\sample.bmp"); // ToDo:- should be the profile image path

        QWidget* widgetItem = new QWidget();
        QHBoxLayout* HMainlayout = new QHBoxLayout(widgetItem);
        QLabel *lab =new QLabel();
        lab->setPixmap(QPixmap(url));  
        lab->setFixedSize(60,60);
        HMainlayout->addWidget(lab);

        //To add First & second row horizontal layouts
        QVBoxLayout* VTextlayout = new QVBoxLayout;

        QHBoxLayout* HFirstrowLayout = new QHBoxLayout;
        
        //Add FirstLine label
        QLabel *lab1 = new QLabel(name);
        lab1->setStyleSheet("font: bold 16px;");
        HFirstrowLayout->addWidget(lab1);
        
        //Add Images to
        QLabel *Img1lab =new QLabel();
        Img1lab->setPixmap(QPixmap(url));
        Img1lab->setFixedSize(10,10);
        QLabel *Img2lab =new QLabel();
        Img2lab->setPixmap(QPixmap(url));
        Img2lab->setFixedSize(10,10);
        QLabel *Img3lab =new QLabel();
        Img3lab->setPixmap(QPixmap(url));
        Img3lab->setFixedSize(10,10);

        HFirstrowLayout->addWidget(Img1lab);
        HFirstrowLayout->addWidget(Img2lab);
        HFirstrowLayout->addWidget(Img3lab);

//        HFirstrowLayout->setAlignment(Img3lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img2lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img1lab,Qt::AlignRight);

        VTextlayout->addLayout(HFirstrowLayout);


         QHBoxLayout* HSecondrowLayout = new QHBoxLayout;
        QLabel *lab2 =new QLabel(status);
        lab2->setStyleSheet("font: 8px;");
        HSecondrowLayout->addWidget(lab2);

        QLabel *Timestamplabel =new QLabel("");
        Timestamplabel->setStyleSheet("font: 7px;");
        HSecondrowLayout->addWidget(Timestamplabel);

        HSecondrowLayout->setAlignment(Timestamplabel,Qt::AlignRight);

        VTextlayout->addLayout(HSecondrowLayout);


        HMainlayout->addLayout(VTextlayout);
        widgetItem->setLayout(HMainlayout);
        QListWidgetItem *item=new QListWidgetItem;

        //customlist->adjustSize();
        //customlist->adjustSize();
        item->setSizeHint(QSize(60,60));

        customlist->addItem(item);
        customlist->setItemWidget(item,widgetItem);
    }
    customlist->setStyleSheet("selection-color: yellow;"
                          "selection-background-color: grey;");
    return customlist;
	}


QWidget* CustomListWidget::CreateListwidget(SmfPostList *postsList)
	{
	qDebug()<<"Inside CustomListWidget::CreateListwidget() for posts";
	qDebug()<<"Posts count = "<<postsList->count();
	
    QListWidget* customlist = new QListWidget();
    
    // Todo:- Display something when no posts are available
    foreach(SmfPost post, *postsList)
    {
    	QString text(post.description());
    	QString ownerName(post.owner().value("Name").value<QContactName>().firstName());

    	//QUrl url(contact.value("Avatar").value<QContactAvatar>().imageUrl());
    	QString url("C:\\data\\sample.bmp"); // ToDo:- should be the profile image path

        QWidget* widgetItem = new QWidget();
        QHBoxLayout* HMainlayout = new QHBoxLayout(widgetItem);
        QLabel *lab =new QLabel();
        lab->setPixmap(QPixmap(url));  
        lab->setFixedSize(60,60);
        HMainlayout->addWidget(lab);

        //To add First & second row horizontal layouts
        QVBoxLayout* VTextlayout = new QVBoxLayout;

        QHBoxLayout* HFirstrowLayout = new QHBoxLayout;
        
        //Add FirstLine label
        QLabel *lab1 = new QLabel(ownerName);
        lab1->setStyleSheet("font: bold 16px;");
        HFirstrowLayout->addWidget(lab1);
        
        //Add Images to
        QLabel *Img1lab =new QLabel();
        Img1lab->setPixmap(QPixmap(url));
        Img1lab->setFixedSize(10,10);
        QLabel *Img2lab =new QLabel();
        Img2lab->setPixmap(QPixmap(url));
        Img2lab->setFixedSize(10,10);
        QLabel *Img3lab =new QLabel();
        Img3lab->setPixmap(QPixmap(url));
        Img3lab->setFixedSize(10,10);

        HFirstrowLayout->addWidget(Img1lab);
        HFirstrowLayout->addWidget(Img2lab);
        HFirstrowLayout->addWidget(Img3lab);

//        HFirstrowLayout->setAlignment(Img3lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img2lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img1lab,Qt::AlignRight);

        VTextlayout->addLayout(HFirstrowLayout);


         QHBoxLayout* HSecondrowLayout = new QHBoxLayout;
        QLabel *lab2 =new QLabel(text);
        lab2->setStyleSheet("font: 8px;");
        HSecondrowLayout->addWidget(lab2);

        QLabel *Timestamplabel =new QLabel("");
        Timestamplabel->setStyleSheet("font: 7px;");
        HSecondrowLayout->addWidget(Timestamplabel);

        HSecondrowLayout->setAlignment(Timestamplabel,Qt::AlignRight);

        VTextlayout->addLayout(HSecondrowLayout);


        HMainlayout->addLayout(VTextlayout);
        widgetItem->setLayout(HMainlayout);
        QListWidgetItem *item=new QListWidgetItem;

        //customlist->adjustSize();
        //customlist->adjustSize();
        item->setSizeHint(QSize(60,60));

        customlist->addItem(item);
        customlist->setItemWidget(item,widgetItem);
    }
    customlist->setStyleSheet("selection-color: yellow;"
                          "selection-background-color: grey;");
    return customlist;
	
	}
QWidget* CreateListwidget(SmfActivityEntryList *activityList)
			{
	
			}

/*QWidget* CustomListWidget::CreateListwidget(QString aIconPath,QString aFirstLine,QString aSecondLine)
{
	qDebug()<<"Inside CustomListWidget::CreateListwidget()";
	qDebug()<<"Icon path = "<<aIconPath;
	qDebug()<<"firstline = "<<aFirstLine;
	qDebug()<<"second line = "<<aSecondLine;
    QListWidget* customlist = new QListWidget();
    //for(int i =0;i<2;i++)
    //{
        QWidget* widgetItem = new QWidget();
        QHBoxLayout* HMainlayout = new QHBoxLayout(widgetItem);
        QLabel *lab =new QLabel();
        lab->setPixmap(QPixmap(aIconPath));
        lab->setFixedSize(60,60);
        HMainlayout->addWidget(lab);

        //To add First & second row horizontal layouts
        QVBoxLayout* VTextlayout = new QVBoxLayout;

        QHBoxLayout* HFirstrowLayout = new QHBoxLayout;
        //Add FirstLine label
        QLabel *lab1 =new QLabel(aFirstLine);
        lab1->setStyleSheet("font: bold 16px;");
        HFirstrowLayout->addWidget(lab1);
        //Add Images to
        QLabel *Img1lab =new QLabel();
        Img1lab->setPixmap(QPixmap(aIconPath));
        Img1lab->setFixedSize(10,10);
        QLabel *Img2lab =new QLabel();
        Img2lab->setPixmap(QPixmap(aIconPath));
        Img2lab->setFixedSize(10,10);
        QLabel *Img3lab =new QLabel();
        Img3lab->setPixmap(QPixmap(aIconPath));
        Img3lab->setFixedSize(10,10);

        HFirstrowLayout->addWidget(Img1lab);
        HFirstrowLayout->addWidget(Img2lab);
        HFirstrowLayout->addWidget(Img3lab);

//        HFirstrowLayout->setAlignment(Img3lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img2lab,Qt::AlignRight);
//        HFirstrowLayout->setAlignment(Img1lab,Qt::AlignRight);

        VTextlayout->addLayout(HFirstrowLayout);


         QHBoxLayout* HSecondrowLayout = new QHBoxLayout;
        QLabel *lab2 =new QLabel(aSecondLine);
        lab2->setStyleSheet("font: 8px;");
        HSecondrowLayout->addWidget(lab2);

        QLabel *Timestamplabel =new QLabel("00:00 JUN 29");
        Timestamplabel->setStyleSheet("font: 7px;");
        HSecondrowLayout->addWidget(Timestamplabel);

        HSecondrowLayout->setAlignment(Timestamplabel,Qt::AlignRight);

        VTextlayout->addLayout(HSecondrowLayout);


        HMainlayout->addLayout(VTextlayout);
        widgetItem->setLayout(HMainlayout);
        QListWidgetItem *item=new QListWidgetItem;

        //customlist->adjustSize();
        //customlist->adjustSize();
        item->setSizeHint(QSize(60,60));

        customlist->addItem(item);
        customlist->setItemWidget(item,widgetItem);
    //}
customlist->setStyleSheet("selection-color: yellow;"
                          "selection-background-color: grey;");
    return customlist;
}*/