#include <QFontMetrics>
#include <QDebug>
#include <QDateTime>
+#include <QFocusEvent>
+#include <QGraphicsScene>
#include "EPGItem.hpp"
#include "EPGView.hpp"
+#include "EPGEvent.hpp"
EPGItem::EPGItem( EPGView *view )
: m_view( view )
m_current = false;
m_boundingRect.setHeight( TRACKS_HEIGHT );
+ setFlags( QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
}
QRectF EPGItem::boundingRect() const
{
m_current = current;
}
+
+void EPGItem::focusInEvent( QFocusEvent * event )
+{
+ EPGEvent *evEPG = new EPGEvent( m_name );
+ evEPG->description = m_description;
+ evEPG->shortDescription = m_shortDescription;
+ m_view->eventFocused( evEPG );
+}
void setShortDescription( const QString& shortDescription );
void setCurrent( bool current );
+protected:
+ virtual void focusInEvent( QFocusEvent * event );
+
private:
EPGView *m_view;
QRectF m_boundingRect;
m_duration = m_startTime.secsTo( lastItem );
emit durationChanged( m_duration );
}
+
+void EPGView::eventFocused( EPGEvent *ev )
+{
+ emit eventFocusedChanged( ev );
+}
signals:
void startTimeChanged( const QDateTime& startTime );
void durationChanged( int seconds );
-
+ void eventFocusedChanged( EPGEvent * );
protected:
virtual void drawBackground( QPainter *painter, const QRectF &rect );
QDateTime m_startTime;
int m_scaleFactor;
int m_duration;
+
+public slots:
+ void eventFocused( EPGEvent * );
};
#endif // EPGVIEW_H
{
setContentsMargins( 0, 0, 0, 0 );
setMaximumWidth( 50 );
+ setFocusPolicy( Qt::ClickFocus );
}
EPGWidget::EPGWidget( QWidget *parent ) : QWidget( parent )
m_rulerWidget, SLOT( setDuration(int) ) );
connect( m_epgView->horizontalScrollBar(), SIGNAL( valueChanged(int) ),
m_rulerWidget, SLOT( setOffset(int) ) );
+ connect( m_epgView, SIGNAL( eventFocusedChanged(EPGEvent*)),
+ this, SIGNAL(itemSelectionChanged(EPGEvent*)) );
}
void EPGWidget::setZoom( int level )
if( !event ) return;
title->setText( event->name );
- description->setText( event->description );
+ if( !event->description.isEmpty() )
+ description->setText( event->description );
+ else
+ description->setText( event->shortDescription );
}
void EpgDialog::update()