1 /*****************************************************************************
2 * Epg.cpp : Epg Viewer dialog
3 ****************************************************************************
4 * Copyright © 2010 VideoLAN and AUTHORS
6 * Authors: Jean-Baptiste Kempf <jb@videolan.org>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 *****************************************************************************/
27 #include "dialogs/epg.hpp"
29 #include "components/epg/EPGWidget.hpp"
31 #include <QVBoxLayout>
35 #include <QPushButton>
39 #include "input_manager.hpp"
41 EpgDialog::EpgDialog( intf_thread_t
*_p_intf
): QVLCFrame( _p_intf
)
43 setWindowTitle( qtr( "Program Guide" ) );
45 QVBoxLayout
*layout
= new QVBoxLayout( this );
46 layout
->setMargin( 0 );
47 epg
= new EPGWidget( this );
49 QGroupBox
*descBox
= new QGroupBox( qtr( "Description" ), this );
51 QVBoxLayout
*boxLayout
= new QVBoxLayout( descBox
);
53 description
= new QTextEdit( this );
54 description
->setReadOnly( true );
55 description
->setFrameStyle( QFrame::Sunken
| QFrame::StyledPanel
);
56 description
->setAutoFillBackground( true );
57 description
->setAlignment( Qt::AlignLeft
| Qt::AlignTop
);
58 description
->setFixedHeight( 100 );
61 palette
.setBrush(QPalette::Active
, QPalette::Window
, palette
.brush( QPalette::Base
) );
62 description
->setPalette( palette
);
64 title
= new QLabel( qtr( "Title" ), this );
66 boxLayout
->addWidget( title
);
67 boxLayout
->addWidget( description
);
69 layout
->addWidget( epg
, 10 );
70 layout
->addWidget( descBox
);
72 CONNECT( epg
, itemSelectionChanged( EPGEvent
*), this, showEvent( EPGEvent
*) );
73 CONNECT( THEMIM
->getIM(), epgChanged(), this, updateInfos() );
75 QPushButton
*update
= new QPushButton( qtr( "Update" ) ); //Temporary to test
76 layout
->addWidget( update
, 0, Qt::AlignRight
);
77 BUTTONACT( update
, updateInfos() );
79 QPushButton
*close
= new QPushButton( qtr( "&Close" ) );
80 layout
->addWidget( close
, 0, Qt::AlignRight
);
81 BUTTONACT( close
, close() );
84 readSettings( "EPGDialog", QSize( 650, 450 ) );
87 EpgDialog::~EpgDialog()
89 writeSettings( "EPGDialog" );
92 void EpgDialog::showEvent( EPGEvent
*event
)
96 QDateTime end
= event
->start
.addSecs( event
->duration
);
97 title
->setText( event
->start
.toString( "hh:mm" ) + " - "
98 + end
.toString( "hh:mm" ) + " : "
100 + ( event
->shortDescription
.isEmpty()
101 ? "" : " - " + event
->shortDescription
) );
103 description
->setText( event
->description
);
106 void EpgDialog::updateInfos()
108 if( !THEMIM
->getInput() ) return;
110 msg_Dbg( p_intf
, "Found %i EPG items", input_GetItem( THEMIM
->getInput())->i_epg
);
111 epg
->updateEPG( input_GetItem( THEMIM
->getInput())->pp_epg
, input_GetItem( THEMIM
->getInput())->i_epg
);