const QDateTime& start() const;
int duration() const;
+ int getChannelNb() const;
- void setChannel( int channelNb );
+ void setChannelNb( int channelNb );
void setStart( const QDateTime& start );
void setDuration( int duration );
void setName( const QString& name );
m_channels.append( event->channelName );
EPGItem* item = new EPGItem( this );
- item->setChannel( m_channels.indexOf( event->channelName ) );
+ item->setChannelNb( m_channels.indexOf( event->channelName ) );
item->setStart( event->start );
item->setDuration( event->duration );
item->setName( event->name );
void EPGView::delEvent( EPGEvent* event )
{
- if( event->item != NULL )
- scene()->removeItem( event->item );
+ if( event->item == NULL )
+ return;
+
+ int channelNb = event->item->getChannelNb();
+
+ // Remove the item.
+ scene()->removeItem( event->item );
event->item = NULL;
+
+ // Look if the channel is still used by other events.
+ QList<QGraphicsItem*> itemList = items();
+ bool b_used = false;
+ for( int i = 0; i < itemList.count(); ++i )
+ {
+ EPGItem* item = qgraphicsitem_cast<EPGItem*>( itemList.at( i ) );
+ if ( !item )
+ continue;
+ if( item->getChannelNb() == channelNb )
+ {
+ b_used = true;
+ break;
+ }
+ }
+
+ // If the channel is no more used, then we remove it from the list
+ // and decrease the channel number of the concerned items.
+ if( !b_used )
+ {
+ m_channels.removeAt( channelNb );
+ for( int i = 0; i < itemList.count(); ++i )
+ {
+ EPGItem* item = qgraphicsitem_cast<EPGItem*>( itemList.at( i ) );
+ if ( !item )
+ continue;
+ int itemChannelNb = item->getChannelNb();
+ if( itemChannelNb > channelNb )
+ item->setChannelNb( itemChannelNb - 1 );
+ }
+ }
}
void EPGView::updateDuration()