Source Code (Use browser search to find items of interest.)
Class Index
kview'ImgListDlg (./kdegraphics/kview/ilistdlg.h:22)
class ImgListDlg : public QWidget
{
Q_OBJECT
public:
/**
* ImgListDlg Constructor
*/
ImgListDlg( QWidget *parent = 0 );
/**
* ImgListDlg Destructor
*/
virtual ~ImgListDlg();
void addURL( const KURL &, bool show = true );
// void addURLList( const QStrList& list );
void saveOptions( KConfig * ) const;
void restoreOptions( const KConfig * );
virtual void saveProperties( KConfig * );
virtual void restoreProperties( KConfig * );
public slots:
void first();
void last();
void prev();
void next();
void shuffle();
void startSlideShow();
void stopSlideShow();
void toggleSlideShow();
void pauseSlideShow();
void continueSlideShow();
bool slideShowRunning() const;
void setSlideInterval( int seconds );
void dropEvent( QDropEvent * );
signals:
void selected( const KURL &url );
private slots:
/**
* Selects image at specified index.
*/
void select( int imageIndex );
void nextSlide();
private:
ImgListDlg& operator=( ImgListDlg& );
ImgListDlg( const ImgListDlg& );
QTimer *_slideTimer;
int _slideInterval;
QPushButton *_slideButton;
bool _loop;
bool _paused;
KURL::List m_list;
KListBox *_listBox;
int m_current;
};
inline bool ImgListDlg::slideShowRunning() const
{
return ( _slideTimer && _slideTimer->isActive() );
}
kview'ImgListDlg::ImgListDlg() (./kdegraphics/kview/ilistdlg.cpp:27)
ImgListDlg::ImgListDlg( QWidget *parent )
: QWidget( parent ),
_slideTimer( 0 ), // allocated by slide start
_slideInterval( 5 ),
_loop ( false ),
_paused( false ),
_listBox( 0 ),
m_current(0)
{
setAcceptDrops(true);
// layout
KTypoLayout *layout = new KTypoLayout( this );
layout->setHSpace( 5, 0 );
layout->setVSpace( 5, 5 );
layout->setGridSize( 4, 1 );
_listBox = layout->newListBox( 0, 0, 3, 1 ); // list
connect( _listBox, SIGNAL(selected(int)),
this, SLOT(select(int)) );
layout = layout->newSubLayout( 3, 0, 1, 1 );
layout->setGridSize( 1, 8 );
// up btn
QPushButton *up = layout->newButton( i18n("Prev"), 0, 1, 1, 1 );
connect( up, SIGNAL(clicked()), this, SLOT(prev()) );
// shuffle
QPushButton *shuffle = layout->newButton( i18n("Shu&ffle"),
0, 2, 1, 1 );
connect( shuffle, SIGNAL(clicked()), this, SLOT(shuffle()) );
// down btn
QPushButton *down = layout->newButton( i18n("Next"), 0, 3, 1, 1 );
connect( down, SIGNAL(clicked()), this, SLOT(next()) );
// slide start btn
_slideButton = layout->newButton( i18n("Start slide"),
0, 5, 1, 1 );
connect( _slideButton, SIGNAL(clicked()),
this, SLOT(toggleSlideShow()) );
// accelerators
QAccel *accel = new QAccel( this );
accel->connectItem( accel->insertItem( Key_Escape ),
this, SLOT(hide()) );
// caption
QString cap = kapp->caption();
cap += ": ";
cap += i18n( "Image List" );
setCaption( cap );
srand( time(0) );
}
kview'ImgListDlg::~ImgListDlg() (./kdegraphics/kview/ilistdlg.cpp:88)
ImgListDlg::~ImgListDlg()
{
delete _slideTimer;
_slideTimer = 0;
}
kview'ImgListDlg::addURL() (./kdegraphics/kview/ilistdlg.cpp:94)
void ImgListDlg::addURL( const KURL &url, bool show )
{
if ( url.isEmpty())
return;
if ( !show ) {
// append only, don't display
m_list.append( url );
_listBox->insertItem( url.decodedURL() );
_listBox->setCurrentItem( m_current );
}
else
{
// append and display
m_list.append( url );
_listBox->insertItem( url.decodedURL() );
m_current = m_list.count()-1;
emit selected( m_list[m_current] );
}
}
kview'ImgListDlg::first() (./kdegraphics/kview/ilistdlg.cpp:118)
void ImgListDlg::first()
{
if (m_list.count() == 0)
return;
m_current = 0;
_listBox->setCurrentItem( m_current );
emit selected( m_list[m_current] );
}
kview'ImgListDlg::last() (./kdegraphics/kview/ilistdlg.cpp:128)
void ImgListDlg::last()
{
if (m_list.count() == 0)
return;
m_current = m_list.count()-1;
_listBox->setCurrentItem( m_current );
emit selected( m_list[m_current] );
}
kview'ImgListDlg::prev() (./kdegraphics/kview/ilistdlg.cpp:138)
void ImgListDlg::prev()
{
if (m_current == 0)
return;
m_current--;
_listBox->setCurrentItem( m_current );
emit selected( m_list[m_current] );
}
kview'ImgListDlg::next() (./kdegraphics/kview/ilistdlg.cpp:148)
void ImgListDlg::next()
{
if (m_current >= (m_list.count()-1))
return;
m_current++;
_listBox->setCurrentItem( m_current );
emit selected( m_list[m_current] );
}
kview'ImgListDlg::dropEvent() (./kdegraphics/kview/ilistdlg.cpp:158)
void ImgListDlg::dropEvent( QDropEvent *drop )
{
QStrList list;
QUriDrag::decode(drop, list);
// addURLList( list ); // Cast to KURL::List ?
}
#if 0
void ImgListDlg::addURLList( const QStrList& list )
{
QStrListIterator iter( list );
if ( iter.current() ) {
// queue net load
addURL( iter.current() );
_listBox->setAutoUpdate( false );
while( ++iter ) {
addURL( iter.current(), false );
}
_listBox->setAutoUpdate( true );
_listBox->repaint();
}
}
kview'ImgListDlg::select() (./kdegraphics/kview/ilistdlg.cpp:184)
void ImgListDlg::select( int idx )
{
if( idx < 0 || (unsigned)idx > m_list.count() )
return;
m_current = idx;
emit selected( m_list[m_current] );
}
kview'ImgListDlg::shuffle() (./kdegraphics/kview/ilistdlg.cpp:194)
void ImgListDlg::shuffle()
{
#if 1
#warning to be ported
#else
QStrList newlist;
int c = m_list.count();
// fill list with randomized items
for( int i = c; i > 0; --i )
{
int idx = (int) ( ((double)i * (double)rand())
/ (RAND_MAX+1.0) );
newlist.append( m_list.at( idx ) );
m_list.remove( idx );
}
// refill listbox
_listBox->clear();
addURLList( newlist );
#endif
}
kview'ImgListDlg::startSlideShow() (./kdegraphics/kview/ilistdlg.cpp:218)
void ImgListDlg::startSlideShow()
{
if( m_list.count() == 0 )
return; // no images to show
if( _slideTimer == 0 )
{
_slideTimer = new QTimer( this, "Slideshow Timer" );
connect( _slideTimer, SIGNAL(timeout()),
this, SLOT(nextSlide()) );
}
if( !_slideTimer->isActive() )
{
nextSlide();
_slideTimer->start( _slideInterval * 1000 );
_slideButton->setText( i18n( "Stop &slide" ) );
}
}
kview'ImgListDlg::stopSlideShow() (./kdegraphics/kview/ilistdlg.cpp:238)
void ImgListDlg::stopSlideShow()
{
if( _slideTimer->isActive() )
{
_slideTimer->stop();
_slideButton->setText( i18n( "Start &slide" ) );
}
}
kview'ImgListDlg::setSlideInterval() (./kdegraphics/kview/ilistdlg.cpp:247)
void ImgListDlg::setSlideInterval( int seconds )
{
if( seconds == _slideInterval )
return;
_slideInterval = seconds;
if( _slideTimer !=0 && _slideTimer->isActive() )
{
_slideTimer->changeInterval( seconds * 1000 );
}
}
kview'ImgListDlg::nextSlide() (./kdegraphics/kview/ilistdlg.cpp:261)
void ImgListDlg::nextSlide()
{
if( m_current >= (m_list.count()-1))
{
if ( _loop )
{
first();
}
else
{
stopSlideShow();
}
}
else {
next();
}
}
kview'ImgListDlg::toggleSlideShow() (./kdegraphics/kview/ilistdlg.cpp:279)
void ImgListDlg::toggleSlideShow()
{
if( _slideTimer && _slideTimer->isActive() )
{
stopSlideShow();
}
else
{
startSlideShow();
}
}
kview'ImgListDlg::pauseSlideShow() (./kdegraphics/kview/ilistdlg.cpp:290)
void ImgListDlg::pauseSlideShow()
{
if ( slideShowRunning() )
{
_slideTimer->stop();
_paused = true;
}
}
kview'ImgListDlg::continueSlideShow() (./kdegraphics/kview/ilistdlg.cpp:299)
void ImgListDlg::continueSlideShow()
{
if ( _paused )
{
_slideTimer->start( _slideInterval * 1000 );
_paused = false;
}
}
kview'ImgListDlg::saveProperties() (./kdegraphics/kview/ilistdlg.cpp:308)
void ImgListDlg::saveProperties( KConfig *cfg )
{
// slideshow settings
cfg->writeEntry( "SlideInterval", _slideInterval );
cfg->writeEntry( "SlideLoop", _loop );
// url list
cfg->writeEntry( "ListNumUrls", m_list.count() );
int i = 0;
for( KURL::List::ConstIterator it = m_list.begin();
it != m_list.end();
++it, ++i)
{
QString tag = QString("ListUrl%d").arg(i);
cfg->writeEntry( tag, (*it).url() );
}
// geometry
cfg->writeEntry( "ListWinSize" , size() );
cfg->writeEntry( "ListWinPos" , pos() );
cfg->writeEntry( "ListVisible", isVisible() );
}
kview'ImgListDlg::restoreProperties() (./kdegraphics/kview/ilistdlg.cpp:334)
void ImgListDlg::restoreProperties( KConfig *cfg )
{
_slideInterval = cfg->readNumEntry( "SlideInterval", 5 );
_loop = cfg->readBoolEntry( "SlideLoop", false );
int urlCount = cfg->readNumEntry( "ListNumUrls", 0 );
for( int i = 0; i < urlCount; i++ )
{
// load each image
QString tag = QString("ListUrl%d").arg(i);
if( !cfg->hasKey( tag ) )
continue;
QString url = cfg->readEntry( tag );
addURL( url, (i == 0) );
}
// geometry
if( cfg->hasKey( "ListWinSize" ) )
{
resize( cfg->readSizeEntry( "ListWinSize") );
}
if( cfg->hasKey( "ListWinPos" ) )
{
move( cfg->readPointEntry( "ListWinPos" ) );
}
if ( cfg->readBoolEntry( "ListVisible", false ) )
{
show();
}
}
kview'ImgListDlg::saveOptions() (./kdegraphics/kview/ilistdlg.cpp:367)
void ImgListDlg::saveOptions( KConfig *cfg ) const
{
cfg->writeEntry( "SlideInterval", _slideInterval );
cfg->writeEntry( "SlideLoop", _loop );
}
kview'ImgListDlg::restoreOptions() (./kdegraphics/kview/ilistdlg.cpp:373)
void ImgListDlg::restoreOptions( const KConfig *cfg )
{
_slideInterval = cfg->readNumEntry( "SlideInterval", 5 );
_loop = cfg->readBoolEntry( "SlideLoop", false );
}
kview'ImgListDlg::slideShowRunning() (./kdegraphics/kview/ilistdlg.h:93)
inline bool ImgListDlg::slideShowRunning() const
{
return ( _slideTimer && _slideTimer->isActive() );
}