22#include <tqlineedit.h>
24#include <tqpushbutton.h>
25#include <tqtoolbutton.h>
26#include <tqapplication.h>
29#include <tdemessagebox.h>
33#include "KPrDocument.h"
36#include "KPrCustomSlideShowDia.h"
39KPrCustomSlideShowDia::KPrCustomSlideShowDia( KPrView* _view, KPrDocument *_doc,
const char* name )
40 : KDialogBase( _view, name, true, i18n(
"Custom Slide Show"), Ok|Cancel ), m_doc( _doc ), m_view( _view )
41 , m_customSlideShowMap( m_doc->customSlideShows() )
43 TQWidget* page =
new TQWidget(
this );
44 setMainWidget( page );
46 TQGridLayout *grid1 =
new TQGridLayout( page,10,3,KDialog::marginHint(), KDialog::spacingHint());
48 list=
new TQListBox(page);
49 grid1->addMultiCellWidget(list,0,8,0,0);
51 m_pAdd=
new TQPushButton(i18n(
"&Add..."),page);
52 grid1->addWidget(m_pAdd,1,2);
54 m_pModify=
new TQPushButton(i18n(
"&Modify..."),page);
55 grid1->addWidget(m_pModify,2,2);
57 m_pRemove=
new TQPushButton(i18n(
"&Remove"),page);
58 grid1->addWidget(m_pRemove,3,2);
60 m_pCopy=
new TQPushButton(i18n(
"Co&py"),page);
61 grid1->addWidget(m_pCopy,4,2);
63 m_pTest=
new TQPushButton(i18n(
"Test"),page);
64 grid1->addWidget(m_pTest,5,2);
67 connect( m_pRemove, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( slotRemove() ) );
68 connect( m_pAdd, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( slotAdd() ) );
69 connect( m_pModify, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( slotModify() ) );
70 connect( m_pCopy, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( slotCopy() ) );
71 connect( m_pTest, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( slotTest() ) );
73 connect( list, TQ_SIGNAL(doubleClicked(TQListBoxItem *)),
this,TQ_SLOT(slotDoubleClicked(TQListBoxItem *)));
74 connect( list, TQ_SIGNAL(clicked ( TQListBoxItem * )),
this,TQ_SLOT(slotTextClicked(TQListBoxItem * )));
76 connect( m_view, TQ_SIGNAL( presentationFinished() ),
this, TQ_SLOT( slotPresentationFinished() ) );
87KPrCustomSlideShowDia::~KPrCustomSlideShowDia()
89 kdDebug()<<
"KPrCustomSlideShowDia::~KPrCustomSlideShowDia()********************\n";
92void KPrCustomSlideShowDia::init()
94 CustomSlideShowMap::ConstIterator it( m_customSlideShowMap.begin() );
95 for ( ; it != m_customSlideShowMap.end(); ++it )
97 list->insertItem( it.key() );
101void KPrCustomSlideShowDia::updateButton()
103 bool state = ( list->currentItem() >= 0 );
104 m_pRemove->setEnabled( state );
105 m_pModify->setEnabled( state );
106 m_pCopy->setEnabled( state );
107 m_pTest->setEnabled( state );
110void KPrCustomSlideShowDia::slotTextClicked(TQListBoxItem*)
115void KPrCustomSlideShowDia::slotDoubleClicked(TQListBoxItem *)
121void KPrCustomSlideShowDia::slotPresentationFinished()
123 kdDebug()<<
"void KPrCustomSlideShowDia::slotPresentationFinished()*************************\n";
128void KPrCustomSlideShowDia::hideEvent( TQHideEvent* )
132void KPrCustomSlideShowDia::slotTest()
134 TQListBoxItem *item = list->selectedItem();
137 m_doc->testCustomSlideShow( m_customSlideShowMap[item->text()], m_view );
142void KPrCustomSlideShowDia::slotAdd()
144 TQStringList listCustomName;
145 CustomSlideShowMap::Iterator it( m_customSlideShowMap.begin() ) ;
146 for ( ; it != m_customSlideShowMap.end(); ++it )
148 listCustomName.append( it.key() );
151 KPrDefineCustomSlideShow * dlg =
new KPrDefineCustomSlideShow(
this, listCustomName, m_doc->getPageList() );
155 m_customSlideShowMap.insert( dlg->customSlideShowName(), dlg->customSlides() );
156 list->insertItem( dlg->customSlideShowName() );
163void KPrCustomSlideShowDia::slotRemove()
165 if (list->selectedItem() )
167 m_customSlideShowMap.remove( list->selectedItem()->text() );
168 list->removeItem( list->currentItem() );
173void KPrCustomSlideShowDia::slotOk()
175 m_doc->setCustomSlideShows( m_customSlideShowMap );
179void KPrCustomSlideShowDia::slotModify()
181 TQListBoxItem *item = list->selectedItem();
184 TQStringList listCustomName;
185 CustomSlideShowMap::ConstIterator it( m_customSlideShowMap.begin() );
186 for ( ; it != m_customSlideShowMap.end(); ++it )
188 if ( it.key() !=item->text() )
189 listCustomName.append( it.key() );
192 KPrDefineCustomSlideShow * dlg =
new KPrDefineCustomSlideShow(
this, item->text(), listCustomName,
193 m_doc->getPageList(), m_customSlideShowMap[item->text()]);
197 m_customSlideShowMap.remove( list->selectedItem()->text() );
198 m_customSlideShowMap.insert( dlg->customSlideShowName(), dlg->customSlides() );
199 list->changeItem( dlg->customSlideShowName(), list->currentItem() );
206void KPrCustomSlideShowDia::slotCopy()
208 TQListBoxItem *item = list->selectedItem();
211 TQString str( list->selectedItem()->text() );
212 str+=i18n(
"(Copy %1)" );
213 for (
int i =1;; ++i )
215 if ( !uniqueName( i, str ) )
218 m_customSlideShowMap.insert( str, m_customSlideShowMap[item->text()] );
219 list->insertItem( str );
226bool KPrCustomSlideShowDia::uniqueName(
int val,
const TQString & name )
const
228 TQString str = name.arg( val );
229 for (
int i= 0; i < ( int )list->count(); ++i )
231 if ( list->text ( i ) == str )
238KPrCustomSlideShowItem::KPrCustomSlideShowItem( TQListBox * listbox, KPrPage * page )
239: TQListBoxText( listbox, page->pageTitle() )
244KPrCustomSlideShowItem::KPrCustomSlideShowItem( KPrPage * page )
245: TQListBoxText( page->pageTitle() )
250KPrCustomSlideShowItem::KPrCustomSlideShowItem( TQListBox * listbox, KPrPage * page, TQListBoxItem * after )
251: TQListBoxText( listbox, page->pageTitle(), after )
256KPrDefineCustomSlideShow::KPrDefineCustomSlideShow( TQWidget* parent, TQStringList &_listNameSlideShow,
257 const TQPtrList<KPrPage> &pages,
const char *name )
258: KDialogBase( parent, name, true, i18n(
"Define Custom Slide Show"), Ok|Cancel )
259, listNameCustomSlideShow( _listNameSlideShow )
262 for ( TQPtrList<KPrPage>::ConstIterator it = pages.begin(); it != pages.end(); ++it )
264 listSlide->insertItem(
new KPrCustomSlideShowItem( *it ) );
268KPrDefineCustomSlideShow::KPrDefineCustomSlideShow( TQWidget* parent,
const TQString &_customName, TQStringList &_listNameSlideShow,
269 const TQPtrList<KPrPage> &pages, TQValueList<KPrPage *> &customPages,
const char* name )
270: KDialogBase( parent, name, true, i18n(
"Define Custom Slide Show"), Ok|Cancel )
271, listNameCustomSlideShow( _listNameSlideShow )
274 m_name->setText( _customName );
275 for ( TQPtrList<KPrPage>::ConstIterator it = pages.begin(); it != pages.end(); ++it )
277 listSlide->insertItem(
new KPrCustomSlideShowItem( *it ) );
279 for ( TQValueList<KPrPage *>::ConstIterator it = customPages.begin(); it != customPages.end(); ++it )
281 listSlideShow->insertItem(
new KPrCustomSlideShowItem( *it ) );
285void KPrDefineCustomSlideShow::init()
287 TQWidget* page =
new TQWidget(
this );
288 setMainWidget( page );
290 TQVBoxLayout *lov =
new TQVBoxLayout( page );
291 lov->setSpacing( KDialog::spacingHint() );
292 TQHBoxLayout *loh =
new TQHBoxLayout( lov );
294 TQLabel *lab =
new TQLabel( i18n(
"Name:" ), page );
295 loh->addWidget( lab );
296 m_name =
new TQLineEdit( page );
297 loh->addWidget( m_name );
299 TQHBoxLayout *lo =
new TQHBoxLayout( lov );
300 lo->setSpacing( KDialog::spacingHint() );
302 TQVBoxLayout *loAv =
new TQVBoxLayout( lo );
303 lab =
new TQLabel( i18n(
"Existing slides:"), page );
304 loAv->addWidget( lab );
305 listSlide =
new TQListBox( page );
306 loAv->addWidget( listSlide );
307 lab->setBuddy( listSlide );
309 TQVBoxLayout *loHBtns =
new TQVBoxLayout( lo );
310 loHBtns->addStretch( 1 );
311 m_insertSlide =
new TQToolButton( page );
312 loHBtns->addWidget( m_insertSlide );
313 m_removeSlide =
new TQToolButton( page );
314 loHBtns->addWidget( m_removeSlide );
315 loHBtns->addStretch( 1 );
317 TQVBoxLayout *loS =
new TQVBoxLayout( lo );
318 lab =
new TQLabel( i18n(
"Selected slides:"), page );
319 loS->addWidget( lab );
320 listSlideShow =
new TQListBox( page );
321 loS->addWidget( listSlideShow );
322 lab->setBuddy( listSlideShow );
324 TQVBoxLayout *loVBtns =
new TQVBoxLayout( lo );
325 loVBtns->addStretch( 1 );
326 m_moveUpSlide =
new TQToolButton( page );
327 m_moveUpSlide->setAutoRepeat(
true );
328 loVBtns->addWidget( m_moveUpSlide );
329 m_moveDownSlide =
new TQToolButton( page );
330 m_moveDownSlide->setAutoRepeat(
true );
331 loVBtns->addWidget( m_moveDownSlide );
332 loVBtns->addStretch( 1 );
337 connect( m_insertSlide, TQ_SIGNAL(clicked()),
this, TQ_SLOT(slotMoveInsertSlide() ) );
338 connect( m_removeSlide, TQ_SIGNAL(clicked()),
this, TQ_SLOT(slotMoveRemoveSlide()) );
339 connect( m_moveUpSlide, TQ_SIGNAL(clicked()),
this, TQ_SLOT( slotMoveUpSlide() ) );
340 connect( m_moveDownSlide, TQ_SIGNAL(clicked()),
this, TQ_SLOT(slotMoveDownSlide()) );
341 connect( m_name, TQ_SIGNAL( textChanged (
const TQString & ) ),
this, TQ_SLOT( slideNameChanged(
const TQString & ) ) );
342 connect( listSlideShow, TQ_SIGNAL( clicked ( TQListBoxItem * ) ),
this, TQ_SLOT( updateButton() ) );
343 connect( listSlide, TQ_SIGNAL( clicked ( TQListBoxItem * ) ),
this, TQ_SLOT( updateButton() ) );
344 connect( listSlide, TQ_SIGNAL( doubleClicked ( TQListBoxItem * ) ),
this, TQ_SLOT( slotMoveInsertSlide() ) );
345 connect( listSlideShow, TQ_SIGNAL( doubleClicked( TQListBoxItem * ) ),
this, TQ_SLOT( slotMoveRemoveSlide() ) );
346 m_insertSlide->setIconSet( SmallIconSet( ( TQApplication::reverseLayout() ?
"back" :
"forward" ) ) );
347 m_removeSlide->setIconSet( SmallIconSet( ( TQApplication::reverseLayout() ?
"forward" :
"back") ) );
348 m_moveUpSlide->setIconSet( SmallIconSet(
"go-up" ) );
349 m_moveDownSlide->setIconSet( SmallIconSet(
"go-down" ) );
351 slideNameChanged( m_name->text() );
357void KPrDefineCustomSlideShow::slideNameChanged(
const TQString & _name)
359 enableButtonOK( !_name.isEmpty() );
362void KPrDefineCustomSlideShow::updateButton()
364 int pos = listSlideShow->currentItem();
365 m_moveUpSlide->setEnabled( pos>0 );
366 m_moveDownSlide->setEnabled( pos< ((
int ) listSlideShow->count()-1 ) );
367 m_removeSlide->setEnabled( listSlideShow->count()>0 );
368 m_insertSlide->setEnabled( listSlide->currentItem()>-1 );
371void KPrDefineCustomSlideShow::slotMoveUpSlide()
373 int c = listSlideShow->currentItem();
375 TQListBoxItem *item = listSlideShow->item( c );
376 listSlideShow->takeItem( item );
377 listSlideShow->insertItem( item, c-1 );
378 listSlideShow->setCurrentItem( item );
383void KPrDefineCustomSlideShow::slotMoveDownSlide()
385 int c = listSlideShow->currentItem();
386 if ( c < 0 || c ==
int( listSlideShow->count() ) - 1 )
return;
387 TQListBoxItem *item = listSlideShow->item( c );
388 listSlideShow->takeItem( item );
389 listSlideShow->insertItem( item, c+1 );
390 listSlideShow->setCurrentItem( item );
394void KPrDefineCustomSlideShow::slotMoveRemoveSlide()
397 TQListBoxItem *item = listSlideShow->firstItem();
399 if ( item->isSelected() ) {
400 listSlideShow->takeItem( item );
407void KPrDefineCustomSlideShow::slotMoveInsertSlide()
409 TQListBoxItem *item = listSlide->firstItem();
411 if ( item->isSelected() ) {
412 KPrCustomSlideShowItem * i =
dynamic_cast<KPrCustomSlideShowItem *
>( item );
415 listSlideShow->insertItem(
new KPrCustomSlideShowItem( i->getPage() ), ( listSlideShow->count() ) );
420 listSlideShow->setFocus();
424TQValueList<KPrPage *> KPrDefineCustomSlideShow::customSlides()
426 TQValueList<KPrPage *> pages;
427 TQListBoxItem *item = listSlideShow->firstItem();
430 KPrCustomSlideShowItem * i =
dynamic_cast<KPrCustomSlideShowItem *
>( item );
433 pages.push_back( i->getPage() );
440TQString KPrDefineCustomSlideShow::customSlideShowName()
const
442 return m_name->text();
446void KPrDefineCustomSlideShow::slotOk()
448 if ( listNameCustomSlideShow.contains( m_name->text() ) )
450 KMessageBox::error(
this, i18n(
"Custom Slide Show name is already used."), i18n(
"Define Custom Slide Show"));
454 if ( listSlideShow->count() == 0 )
455 KMessageBox::error(
this, i18n(
"You did not select any slides. Please select some slides."), i18n(
"Define Custom Slide Show"));
461#include "KPrCustomSlideShowDia.moc"