/*************************************************************************** numberdialog.cpp - description ------------------- begin : Don Apr 24 2003 copyright : (C) 2003 by Dominik Seichter email : domseichter@web.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "numberdialog.h" #include "batchrenamer.h" // TQt includes #include #include #include // KDE includes #include #include #include #include #include void KMyIntSpinBox::keyPressEvent( TQKeyEvent* e ) { if( e->key() == Key_Return ) emit returnPressed(); } NumberDialog::NumberDialog(TQValueList & n,TQWidget *parent ) : KDialogBase( KDialogBase::Plain, "KRename", KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent, 0, true, true ) { TQSpacerItem* spacer = new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding ); TQVBoxLayout* tqlayout = new TQVBoxLayout( plainPage(), 6, 6 ); TQGroupBox* group1 = new TQGroupBox( plainPage() ); group1->setTitle( i18n("&Numbering") ); group1->setColumnLayout(0, Qt::Vertical ); group1->tqlayout()->setSpacing( 6 ); group1->tqlayout()->setMargin( 11 ); TQVBoxLayout* group1Layout = new TQVBoxLayout( group1->tqlayout() ); group1Layout->tqsetAlignment( TQt::AlignTop ); spinIndex = new KIntNumInput( group1 ); spinIndex->setMaxValue( SPINMAX ); spinIndex->setLabel( i18n( "Start &index:" ), AlignLeft | AlignVCenter ); spinStep = new KIntNumInput( spinIndex, 1, group1 ); spinStep->setRange( -SPINMAX, SPINMAX, 1, false ); spinStep->setValue( 1 ); spinStep->setLabel( i18n( "Step &by:" ), AlignLeft | AlignVCenter ); checkResetCounter = new TQCheckBox( i18n("&Reset counter for every directory"), group1 ); TQGroupBox* group2 = new TQGroupBox( plainPage() ); group2->setTitle( i18n("S&kip Numbers") ); group2->setColumnLayout(0, Qt::Horizontal ); group2->tqlayout()->setSpacing( 6 ); group2->tqlayout()->setMargin( 11 ); TQHBoxLayout* group2Layout = new TQHBoxLayout( group2->tqlayout() ); group2Layout->tqsetAlignment( TQt::AlignTop ); listNumbers = new KListBox( group2 ); buttonAdd = new KPushButton( group2 ); buttonAdd->setText( i18n( "&Add Number" ) ); buttonRemove = new KPushButton( group2 ); buttonRemove->setText( i18n( "&Remove Number" ) ); spinNumber = new KMyIntSpinBox( group2 ); spinNumber->setMaxValue( SPINMAX ); spinNumber->setMinValue( -SPINMAX ); spinNumber->setValue( 0 ); spinNumber->setFocus(); TQVBoxLayout* tqlayout2 = new TQVBoxLayout( 0, 6, 6 ); tqlayout2->addWidget( buttonAdd ); tqlayout2->addWidget( buttonRemove ); tqlayout2->addWidget( spinNumber ); tqlayout2->addItem( spacer ); group1Layout->addWidget( spinIndex ); group1Layout->addWidget( spinStep ); group1Layout->addWidget( checkResetCounter ); group2Layout->addWidget( listNumbers ); group2Layout->addLayout( tqlayout2 ); tqlayout->addWidget( group1 ); tqlayout->addWidget( group2 ); TQToolTip::add( spinIndex, i18n( "Number of the first file." ) ); TQToolTip::add( spinStep, i18n( "The counter is increased/decreased by this value." ) ); TQToolTip::add( listNumbers, i18n("Add all numbers that should be skipped by krename during the rename process.
" "E.g.: If 2 is skipped files will be numbered: file0, file1, file3, ...") ); TQToolTip::add( checkResetCounter, i18n("The counter is set to the start index in every directory. " "This setting applies to all used counters." ) ); connect( buttonAdd, TQT_SIGNAL( clicked() ), this, TQT_SLOT( addNumber() ) ); connect( buttonRemove,TQT_SIGNAL( clicked() ), this, TQT_SLOT( removeNumber() ) ); connect( spinNumber, TQT_SIGNAL( returnPressed()), this, TQT_SLOT( addNumber() ) ); for( unsigned int i = 0; i < n.count(); i++ ) listNumbers->insertItem( TQString("%1").tqarg(n[i]), -1 ); update(); } NumberDialog::~NumberDialog() { } void NumberDialog::addNumber() { TQString tmp = TQString("%1").tqarg(spinNumber->value()); for( unsigned int i = 0; i < listNumbers->count(); i++ ) if( listNumbers->text(i) == tmp ) return; listNumbers->insertItem( tmp, -1 ); sort(); } void NumberDialog::removeNumber() { unsigned int i = 0; do { if(listNumbers->isSelected( i )) { listNumbers->removeItem( i ); listNumbers->setSelected( i-1, true ); return; } else i++; } while( i < listNumbers->count() ); } TQValueList NumberDialog::getList() { TQValueList skip; for( unsigned int i = 0; i < listNumbers->count(); i++ ) skip.append( listNumbers->text(i).toInt() ); return skip; } void NumberDialog::sort() { // Not very fast, but I hope it won't be used on ot big lists ;) if( listNumbers->count() < 1 ) return; for( unsigned int i = 0; i < listNumbers->count()-1; i++) { if( listNumbers->text(i).toInt() > listNumbers->text(i+1).toInt() ) { TQString tmp = listNumbers->text(i); listNumbers->removeItem(i); listNumbers->insertItem( tmp, i+1 ); i = 0; } } }