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() );
}