/***************************************************************************
 *   Copyright (C) 2005-2006 by Andreas Silberstorff   *
 *   ml@andreas-silberstorff.de   *
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.             *
 *                                                                         *
 *   In addition, as a special exception, the copyright holders give       *
 *   permission to link the code of this program with any edition of       *
 *   the Qt library by Trolltech AS, Norway (or with modified versions     *
 *   of Qt that use the same license as Qt), and distribute linked         *
 *   combinations including the two.  You must obey the GNU General        *
 *   Public License in all respects for all of the code used other than    *
 *   Qt.  If you modify this file, you may extend this exception to        *
 *   your version of the file, but you are not obligated to do so.  If     *
 *   you do not wish to do so, delete this exception statement from        *
 *   your version.                                                         *
 ***************************************************************************/

#include "kalvachannellist.h"
#include "ui_channellistgui.h"

#include <QTableWidget>
#include <QTableWidgetItem>
#include <QList>
#include <QListIterator>
#include <QVariant>

#include <KDebug>

namespace KalvaWidget {

class KALVALIB_EXPORT KalvaChannellistPrivate
{
public:
	KalvaChannellistPrivate()
	{}

//members
	Ui::ChannellistGui ui;
};

KalvaChannellist::KalvaChannellist( QWidget* parent )
	: QWidget( parent ),
	d( new KalvaChannellistPrivate() )
{
	d->ui.setupUi( this );
	setupConnections();
}

KalvaChannellist::~KalvaChannellist()
{
	delete d;
}

void KalvaChannellist::setupConnections()
{
	connect(d->ui.mChannelTable, SIGNAL(itemClicked(QTableWidgetItem *)),
	  this,                SLOT(itemClicked(QTableWidgetItem *)));
}

void KalvaChannellist::itemClicked(QTableWidgetItem * item)
{
	kDebug() << "cellClicked()";
	QVariant variant = item->data(Qt::UserRole);
	KalvaData::Channel* channel = variant.value<KalvaData::Channel*>();
	kDebug() << "channel->station() = " << channel->station();
	emit selectionChanged(channel);
}

/*-------------------------------------------------------------------*
 * PUBLIC SLOTS
 *-------------------------------------------------------------------*/

void KalvaChannellist::setChannellist(const QList<KalvaData::Channel*> & chlst)
{
	signed int row    = 0;
	d->ui.mChannelTable->clearContents();
	d->ui.mChannelTable->setSortingEnabled(false);
	d->ui.mChannelTable->setRowCount(chlst.size());

	QListIterator<KalvaData::Channel*> i( chlst );
	while(i.hasNext()) {
		KalvaData::Channel *channel = i.next();
		QTableWidgetItem* stationItem = new QTableWidgetItem( channel->station() );
		QTableWidgetItem* channelItem = new QTableWidgetItem( channel->channel() );
		QTableWidgetItem* frequenceItem = new QTableWidgetItem( channel->frequence() );
		stationItem->setData( Qt::UserRole, QVariant::fromValue<KalvaData::Channel*>( channel ) );
		channelItem->setData( Qt::UserRole, QVariant::fromValue<KalvaData::Channel*>( channel ) );
		frequenceItem->setData( Qt::UserRole, QVariant::fromValue<KalvaData::Channel*>( channel ) );
		d->ui.mChannelTable->setItem( row, 0, stationItem );
		d->ui.mChannelTable->setItem( row, 1, channelItem );
		d->ui.mChannelTable->setItem( row, 2, frequenceItem );
		row++;
	}
	d->ui.mChannelTable->setSortingEnabled(true);
}

void KalvaChannellist::clear()
{
	d->ui.mChannelTable->clearContents();
}

}

#include "kalvachannellist.moc"
