summaryrefslogtreecommitdiffstats
path: root/kspread/dialogs/kspread_dlg_validity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kspread/dialogs/kspread_dlg_validity.cpp')
-rw-r--r--kspread/dialogs/kspread_dlg_validity.cpp814
1 files changed, 814 insertions, 0 deletions
diff --git a/kspread/dialogs/kspread_dlg_validity.cpp b/kspread/dialogs/kspread_dlg_validity.cpp
new file mode 100644
index 000000000..ea4625272
--- /dev/null
+++ b/kspread/dialogs/kspread_dlg_validity.cpp
@@ -0,0 +1,814 @@
+/* This file is part of the KDE project
+ Copyright (C) 2002-2003 Norbert Andres <nandres@web.de>
+ (C) 2002 John Dailey <dailey@vt.edu>
+ (C) 2001-2002 Philipp Mueller <philipp.mueller@gmx.de>
+ (C) 1999-2005 Laurent Montel <montel@kde.org>
+ (C) 1998-1999 Torben Weis <weis@kde.org>
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+
+#include "kspread_dlg_validity.h"
+#include "kspread_canvas.h"
+#include "kspread_doc.h"
+#include "kspread_locale.h"
+#include "kspread_sheet.h"
+#include "kspread_view.h"
+
+#include <tqlayout.h>
+#include <tqbuttongroup.h>
+#include <knumvalidator.h>
+#include <kdebug.h>
+#include <tdemessagebox.h>
+
+#include <tqcombobox.h>
+#include <tqlineedit.h>
+#include <tqpushbutton.h>
+#include <tqlabel.h>
+#include <tqtextedit.h>
+#include <tqcheckbox.h>
+
+using namespace KSpread;
+
+DlgValidity::DlgValidity(View* parent,const char* name , const TQRect &_marker )
+ :KDialogBase(KDialogBase::Tabbed, i18n("Validity"),User2|User1|Cancel, User1, parent, name,true,false,KStdGuiItem::ok(),i18n("Clear &All"))
+
+{
+ m_pView=parent;
+ marker=_marker;
+ TQFrame *page1 = addPage(i18n("&Values"));
+ TQVBoxLayout *lay1 = new TQVBoxLayout( page1, KDialogBase::marginHint(), KDialogBase::spacingHint() );
+
+ TQGroupBox* tmpTQButtonGroup;
+ tmpTQButtonGroup = new TQGroupBox( 0, Qt::Vertical, i18n("Validity Criteria"), page1, "ButtonGroup_1" );
+ tmpTQButtonGroup->layout()->setSpacing(KDialog::spacingHint());
+ tmpTQButtonGroup->layout()->setMargin(KDialog::marginHint());
+ TQGridLayout *grid1 = new TQGridLayout(tmpTQButtonGroup->layout(),4,2);
+
+ TQLabel *tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_1" );
+ tmpTQLabel->setText(i18n("Allow:" ));
+ grid1->addWidget(tmpTQLabel,0,0);
+
+ chooseType=new TQComboBox(tmpTQButtonGroup);
+ grid1->addWidget(chooseType,0,1);
+ TQStringList listType;
+ listType+=i18n("All");
+ listType+=i18n("Number");
+ listType+=i18n("Integer");
+ listType+=i18n("Text");
+ listType+=i18n("Date");
+ listType+=i18n("Time");
+ listType+=i18n("Text Length");
+ listType+=i18n("List");
+ chooseType->insertStringList(listType);
+ chooseType->setCurrentItem(0);
+
+ allowEmptyCell = new TQCheckBox( i18n( "Allow blanks" ), tmpTQButtonGroup );
+ grid1->addWidget(allowEmptyCell,1,0);
+
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_2" );
+ tmpTQLabel->setText(i18n("Data:" ));
+ grid1->addWidget(tmpTQLabel,2,0);
+
+ choose=new TQComboBox(tmpTQButtonGroup);
+ grid1->addWidget(choose,2,1);
+ TQStringList list;
+ list+=i18n("equal to");
+ list+=i18n("greater than");
+ list+=i18n("less than");
+ list+=i18n("equal to or greater than");
+ list+=i18n("equal to or less than");
+ list+=i18n("between");
+ list+=i18n("different from");
+ list+=i18n("different to");
+ choose->insertStringList(list);
+ choose->setCurrentItem(0);
+
+ edit1 = new TQLabel( tmpTQButtonGroup, "Label_3" );
+ edit1->setText(i18n("Minimum:" ));
+ grid1->addWidget(edit1,3,0);
+
+ val_min=new TQLineEdit(tmpTQButtonGroup);
+ grid1->addWidget(val_min,3,1);
+ val_min->setValidator( new KFloatValidator( val_min ) );
+
+ edit2 = new TQLabel( tmpTQButtonGroup, "Label_4" );
+ edit2->setText(i18n("Maximum:" ));
+ grid1->addWidget(edit2,4,0);
+
+ val_max=new TQLineEdit(tmpTQButtonGroup);
+ grid1->addWidget(val_max,4,1);
+ val_max->setValidator( new KFloatValidator( val_max ) );
+ lay1->addWidget(tmpTQButtonGroup);
+
+ //Apply minimum width of column1 to avoid horizontal move when changing option
+ //A bit ugly to apply text always, but I couldn't get a label->TQFontMetrix.boundingRect("text").width()
+ //to give mew the correct results - Philipp
+ edit2->setText( i18n( "Date:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Date minimum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Date maximum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Time:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Time minimum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Time maximum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Minimum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Maximum:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+ edit2->setText( i18n( "Number:" ) );
+ grid1->addColSpacing( 0, edit2->width() );
+
+ validityList = new TQTextEdit( tmpTQButtonGroup );
+ grid1->addMultiCellWidget(validityList,2, 4,1, 1);
+
+ validityLabelList = new TQLabel( tmpTQButtonGroup, "Label_Label_List" );
+ validityLabelList->setText(i18n("Entries:" ));
+ grid1->addWidget(validityLabelList,2,0);
+
+ TQFrame *page2 = addPage(i18n("&Error Alert"));
+
+ lay1 = new TQVBoxLayout( page2, KDialogBase::marginHint(), KDialogBase::spacingHint() );
+
+ tmpTQButtonGroup = new TQButtonGroup( 0, Qt::Vertical, i18n("Contents"), page2, "ButtonGroup_2" );
+ tmpTQButtonGroup->layout()->setSpacing(KDialog::spacingHint());
+ tmpTQButtonGroup->layout()->setMargin(KDialog::marginHint());
+ TQGridLayout *grid2 = new TQGridLayout(tmpTQButtonGroup->layout(),5,2);
+
+ displayMessage = new TQCheckBox(i18n( "Show error message when invalid values are entered" ),tmpTQButtonGroup );
+ displayMessage->setChecked( true );
+ grid2->addMultiCellWidget(displayMessage,0, 0,0, 1);
+
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_5" );
+ tmpTQLabel->setText(i18n("Action:" ));
+ grid2->addWidget(tmpTQLabel,1,0);
+
+ chooseAction=new TQComboBox(tmpTQButtonGroup);
+ grid2->addWidget(chooseAction,1,1);
+ TQStringList list2;
+ list2+=i18n("Stop");
+ list2+=i18n("Warning");
+ list2+=i18n("Information");
+ chooseAction->insertStringList(list2);
+ chooseAction->setCurrentItem(0);
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_6" );
+ tmpTQLabel->setText(i18n("Title:" ));
+ grid2->addWidget(tmpTQLabel,2,0);
+
+ title=new TQLineEdit( tmpTQButtonGroup);
+ grid2->addWidget(title,2,1);
+
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_7" );
+ tmpTQLabel->setText(i18n("Message:" ));
+ grid2->addWidget(tmpTQLabel,3,0);
+
+ message =new TQTextEdit( tmpTQButtonGroup);
+ grid2->addMultiCellWidget(message,3, 4,1, 1);
+ lay1->addWidget(tmpTQButtonGroup);
+ message->setTextFormat( TQt::PlainText );
+
+ TQFrame *page3 = addPage(i18n("Input Help"));
+ lay1 = new TQVBoxLayout( page3, KDialogBase::marginHint(), KDialogBase::spacingHint() );
+
+ tmpTQButtonGroup = new TQButtonGroup( 0, Qt::Vertical, i18n("Contents"), page3, "ButtonGroup_2" );
+ tmpTQButtonGroup->layout()->setSpacing(KDialog::spacingHint());
+ tmpTQButtonGroup->layout()->setMargin(KDialog::marginHint());
+
+ TQGridLayout *grid3 = new TQGridLayout(tmpTQButtonGroup->layout(),5,2);
+
+ displayHelp = new TQCheckBox(i18n( "Show input help when cell is selected" ),tmpTQButtonGroup );
+ displayMessage->setChecked( false );
+ grid3->addMultiCellWidget(displayHelp,0, 0,0, 1);
+
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_6" );
+ tmpTQLabel->setText(i18n("Title:" ));
+ grid3->addWidget(tmpTQLabel,2,0);
+
+ titleHelp=new TQLineEdit( tmpTQButtonGroup);
+ grid3->addWidget(titleHelp,2,1);
+
+ tmpTQLabel = new TQLabel( tmpTQButtonGroup, "Label_7" );
+ tmpTQLabel->setText(i18n("Message:" ));
+ grid3->addWidget(tmpTQLabel,3,0);
+
+ messageHelp =new TQTextEdit( tmpTQButtonGroup);
+ grid3->addMultiCellWidget(messageHelp,3, 4,1, 1);
+ lay1->addWidget(tmpTQButtonGroup);
+ messageHelp->setTextFormat( TQt::PlainText );
+
+
+ connect(choose,TQT_SIGNAL(activated(int )),this,TQT_SLOT(changeIndexCond(int)));
+ connect(chooseType,TQT_SIGNAL(activated(int )),this,TQT_SLOT(changeIndexType(int)));
+ connect( this, TQT_SIGNAL(user1Clicked()), TQT_SLOT(OkPressed()) );
+ connect( this, TQT_SIGNAL(user2Clicked()), TQT_SLOT(clearAllPressed()) );
+ init();
+}
+
+void DlgValidity::displayOrNotListOfValidity( bool _displayList)
+{
+ if ( _displayList )
+ {
+ validityList->show();
+ validityLabelList->show();
+ edit1->hide();
+ val_min->hide();
+ edit2->hide();
+ val_max->hide();
+ }
+ else
+ {
+ validityList->hide();
+ validityLabelList->hide();
+ edit1->show();
+ val_min->show();
+ edit2->show();
+ val_max->show();
+ }
+}
+
+void DlgValidity::changeIndexType(int _index)
+{
+ bool activate = ( _index!=0 );
+ message->setEnabled(activate);
+ title->setEnabled(activate);
+ chooseAction->setEnabled( activate );
+ displayHelp->setEnabled(activate);
+ messageHelp->setEnabled(activate);
+ titleHelp->setEnabled(activate);
+ if ( _index == 7 )
+ displayOrNotListOfValidity( true );
+ else
+ displayOrNotListOfValidity( false );
+
+ switch(_index)
+ {
+ case 0:
+ edit1->setText("");
+ edit2->setText("");
+ val_max->setEnabled(false);
+ val_min->setEnabled(false);
+ edit1->setEnabled(false);
+ edit2->setEnabled(false);
+ choose->setEnabled(false);
+ break;
+ case 1:
+ val_min->setEnabled(true);
+ edit1->setEnabled(true);
+ choose->setEnabled(true);
+ val_min->setValidator( new KFloatValidator( val_min ) );
+ val_max->setValidator( new KFloatValidator( val_max ) );
+ if( choose->currentItem()<=4)
+ {
+ edit1->setText(i18n("Number:"));
+ edit2->setText("");
+ edit2->setEnabled(false);
+ val_max->setEnabled(false);
+ }
+ else
+ {
+ edit1->setText(i18n("Minimum:" ));
+ edit2->setText(i18n("Maximum:" ));
+ edit2->setEnabled(true);
+ val_max->setEnabled(true);
+ }
+ break;
+ case 2:
+ case 6:
+ val_min->setEnabled(true);
+ edit1->setEnabled(true);
+ choose->setEnabled(true);
+ val_min->setValidator( new KIntValidator( val_min ) );
+ val_max->setValidator( new KIntValidator( val_max ) );
+ if( choose->currentItem()<=4)
+ {
+ edit1->setText(i18n("Number:"));
+ edit2->setText("");
+ edit2->setEnabled(false);
+ val_max->setEnabled(false);
+ }
+ else
+ {
+ edit1->setText(i18n("Minimum:" ));
+ edit2->setText(i18n("Maximum:" ));
+ edit2->setEnabled(true);
+ val_max->setEnabled(true);
+ }
+ break;
+
+ case 3:
+ edit1->setText("");
+ edit2->setText("");
+ val_max->setEnabled(false);
+ val_min->setEnabled(false);
+ choose->setEnabled(false);
+ edit1->setEnabled(false);
+ edit2->setEnabled(false);
+ break;
+ case 4:
+ edit1->setText(i18n("Date:"));
+ edit2->setText("");
+ val_min->setEnabled(true);
+ edit1->setEnabled(true);
+ choose->setEnabled(true);
+
+ val_min->clearValidator();
+ val_max->clearValidator();
+ if( choose->currentItem()<=4)
+ {
+ edit1->setText(i18n("Date:"));
+ edit2->setText("");
+ edit2->setEnabled(false);
+ val_max->setEnabled(false);
+ }
+ else
+ {
+ edit1->setText(i18n("Date minimum:"));
+ edit2->setText(i18n("Date maximum:"));
+ edit2->setEnabled(true);
+ val_max->setEnabled(true);
+ }
+ break;
+ case 5:
+ val_min->setEnabled(true);
+ edit1->setEnabled(true);
+ choose->setEnabled(true);
+ val_min->clearValidator();
+ val_max->clearValidator();
+ if( choose->currentItem()<=4)
+ {
+ edit1->setText(i18n("Time:"));
+ edit2->setText("");
+ edit2->setEnabled(false);
+ val_max->setEnabled(false);
+ }
+ else
+ {
+ edit1->setText(i18n("Time minimum:"));
+ edit2->setText(i18n("Time maximum:"));
+ edit2->setEnabled(true);
+ val_max->setEnabled(true);
+ }
+ break;
+ }
+ if ( width() < sizeHint().width() )
+ resize( sizeHint() );
+}
+
+void DlgValidity::changeIndexCond(int _index)
+{
+ switch(_index)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ val_max->setEnabled(false);
+ if(chooseType->currentItem()==1 ||chooseType->currentItem()==2
+ ||chooseType->currentItem()==6)
+ edit1->setText(i18n("Number:"));
+ else if( chooseType->currentItem()==3)
+ edit1->setText("");
+ else if( chooseType->currentItem()==4)
+ edit1->setText(i18n("Date:"));
+ else if( chooseType->currentItem()==5)
+ edit1->setText(i18n("Time:"));
+ edit2->setText("");
+ edit2->setEnabled(false);
+ break;
+ case 5:
+ case 6:
+ val_max->setEnabled(true);
+ edit2->setEnabled(true);
+ edit1->setEnabled(true);
+ if(chooseType->currentItem()==1 || chooseType->currentItem()==2
+ || chooseType->currentItem()==6)
+ {
+ edit1->setText(i18n("Minimum:" ));
+ edit2->setText(i18n("Maximum:" ));
+ }
+ else if(chooseType->currentItem()==3)
+ {
+ edit1->setText("");
+ edit2->setText("");
+ }
+ else if(chooseType->currentItem()==4)
+ {
+ edit1->setText(i18n("Date minimum:"));
+ edit2->setText(i18n("Date maximum:"));
+ }
+ else if(chooseType->currentItem()==5)
+ {
+ edit1->setText(i18n("Time minimum:"));
+ edit2->setText(i18n("Time maximum:"));
+ }
+ break;
+ }
+}
+
+void DlgValidity::init()
+{
+ Cell *c = m_pView->activeSheet()->cellAt( marker.left(), marker.top() );
+ Validity * tmpValidity=c->getValidity(0);
+ if(tmpValidity!=0)
+ {
+ message->setText(tmpValidity->message);
+ title->setText(tmpValidity->title);
+ TQString tmp;
+ switch( tmpValidity->m_restriction)
+ {
+ case Restriction::None:
+ chooseType->setCurrentItem(0);
+ break;
+ case Restriction::Number:
+ chooseType->setCurrentItem(1);
+ if(tmpValidity->m_cond >=5 )
+ val_max->setText(tmp.setNum(tmpValidity->valMax));
+ val_min->setText(tmp.setNum(tmpValidity->valMin));
+ break;
+ case Restriction::Integer:
+ chooseType->setCurrentItem(2);
+ if(tmpValidity->m_cond >=5 )
+ val_max->setText(tmp.setNum(tmpValidity->valMax));
+ val_min->setText(tmp.setNum(tmpValidity->valMin));
+ break;
+ case Restriction::TextLength:
+ chooseType->setCurrentItem(6);
+ if(tmpValidity->m_cond >=5 )
+ val_max->setText(tmp.setNum(tmpValidity->valMax));
+ val_min->setText(tmp.setNum(tmpValidity->valMin));
+ break;
+ case Restriction::Text:
+ chooseType->setCurrentItem(3);
+ break;
+ case Restriction::Date:
+ chooseType->setCurrentItem(4);
+ val_min->setText(m_pView->doc()->locale()->formatDate(tmpValidity->dateMin,true));
+ if(tmpValidity->m_cond >=5 )
+ val_max->setText(m_pView->doc()->locale()->formatDate(tmpValidity->dateMax,true));
+ break;
+ case Restriction::Time:
+ chooseType->setCurrentItem(5);
+ val_min->setText(m_pView->doc()->locale()->formatTime(tmpValidity->timeMin,true));
+ if(tmpValidity->m_cond >=5 )
+ val_max->setText(m_pView->doc()->locale()->formatTime(tmpValidity->timeMax,true));
+ break;
+ case Restriction::List:
+ {
+ chooseType->setCurrentItem(7);
+ TQStringList lst =tmpValidity->listValidity;
+ TQString tmp;
+ for ( TQStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
+ tmp +=( *it )+"\n";
+ }
+ validityList->setText( tmp );
+ }
+ break;
+ default :
+ chooseType->setCurrentItem(0);
+ break;
+ }
+ switch (tmpValidity->m_action)
+ {
+ case Action::Stop:
+ chooseAction->setCurrentItem(0);
+ break;
+ case Action::Warning:
+ chooseAction->setCurrentItem(1);
+ break;
+ case Action::Information:
+ chooseAction->setCurrentItem(2);
+ break;
+ default :
+ chooseAction->setCurrentItem(0);
+ break;
+ }
+ switch ( tmpValidity->m_cond )
+ {
+ case Conditional::Equal:
+ choose->setCurrentItem(0);
+ break;
+ case Conditional::Superior:
+ choose->setCurrentItem(1);
+ break;
+ case Conditional::Inferior:
+ choose->setCurrentItem(2);
+ break;
+ case Conditional::SuperiorEqual:
+ choose->setCurrentItem(3);
+ break;
+ case Conditional::InferiorEqual:
+ choose->setCurrentItem(4);
+ break;
+ case Conditional::Between:
+ choose->setCurrentItem(5);
+ break;
+ case Conditional::Different:
+ choose->setCurrentItem(6);
+ break;
+ case Conditional::DifferentTo:
+ choose->setCurrentItem(7);
+ break;
+ default :
+ choose->setCurrentItem(0);
+ break;
+ }
+ displayMessage->setChecked( tmpValidity->displayMessage );
+ allowEmptyCell->setChecked( tmpValidity->allowEmptyCell );
+ titleHelp->setText( tmpValidity->titleInfo );
+ messageHelp->setText( tmpValidity->messageInfo );
+ displayHelp->setChecked( tmpValidity->displayValidationInformation );
+ }
+ changeIndexType(chooseType->currentItem()) ;
+ changeIndexCond(choose->currentItem()) ;
+}
+
+void DlgValidity::clearAllPressed()
+{
+ val_min->setText("");
+ val_max->setText("");
+ message->setText("");
+ title->setText("");
+ displayMessage->setChecked( true );
+ allowEmptyCell->setChecked( false );
+ choose->setCurrentItem(0);
+ chooseType->setCurrentItem(0);
+ chooseAction->setCurrentItem(0);
+ changeIndexType(0);
+ changeIndexCond(0);
+ messageHelp->setText("" );
+ titleHelp->setText( "" );
+ validityList->setText( "" );
+ displayHelp->setChecked( false );
+}
+
+void DlgValidity::OkPressed()
+{
+ if( chooseType->currentItem()==1)
+ {
+ bool ok;
+ val_min->text().toDouble(&ok);
+ if(! ok)
+ {
+ KMessageBox::error( this , i18n("This is not a valid value."),i18n("Error"));
+ val_min->setText("");
+ return;
+ }
+ val_max->text().toDouble(&ok);
+ if(! ok && choose->currentItem() >=5 && choose->currentItem()< 7)
+ {
+ KMessageBox::error( this , i18n("This is not a valid value."),i18n("Error"));
+ val_max->setText("");
+ return;
+ }
+ }
+ else if( chooseType->currentItem()==2 || chooseType->currentItem()==6)
+ {
+ bool ok;
+ val_min->text().toInt(&ok);
+ if(! ok)
+ {
+ KMessageBox::error( this , i18n("This is not a valid value."),i18n("Error"));
+ val_min->setText("");
+ return;
+ }
+ val_max->text().toInt(&ok);
+ if(! ok && choose->currentItem() >=5 && choose->currentItem()< 7)
+ {
+ KMessageBox::error( this , i18n("This is not a valid value."),i18n("Error"));
+ val_max->setText("");
+ return;
+ }
+ }
+ else if( chooseType->currentItem()==5)
+ {
+ if(! m_pView->doc()->locale()->readTime(val_min->text()).isValid())
+ {
+ KMessageBox::error( this , i18n("This is not a valid time."),i18n("Error"));
+ val_min->setText("");
+ return;
+ }
+ if(! m_pView->doc()->locale()->readTime(val_max->text()).isValid() && choose->currentItem() >=5)
+ {
+ KMessageBox::error( this , i18n("This is not a valid time."),i18n("Error"));
+ val_max->setText("");
+ return;
+ }
+ }
+ else if( chooseType->currentItem()==4)
+ {
+ if(! m_pView->doc()->locale()->readDate(val_min->text()).isValid())
+ {
+ KMessageBox::error( this , i18n("This is not a valid date."),i18n("Error"));
+ val_min->setText("");
+ return;
+ }
+ if(! m_pView->doc()->locale()->readDate(val_max->text()).isValid() && choose->currentItem() >=5 )
+ {
+ KMessageBox::error( this , i18n("This is not a valid date."),i18n("Error"));
+ val_max->setText("");
+ return;
+ }
+ }
+ else if ( chooseType->currentItem()==7 )
+ {
+ //Nothing
+ }
+
+ if( chooseType->currentItem()==0)
+ {//no validity
+ result.m_restriction=Restriction::None;
+ result.m_action=Action::Stop;
+ result.m_cond=Conditional::Equal;
+ result.message=message->text();
+ result.title=title->text();
+ result.valMin=0;
+ result.valMax=0;
+ result.timeMin=TQTime(0,0,0);
+ result.timeMax=TQTime(0,0,0);
+ result.dateMin=TQDate(0,0,0);
+ result.dateMax=TQDate(0,0,0);
+ }
+ else
+ {
+ switch( chooseType->currentItem())
+ {
+ case 0:
+ result.m_restriction=Restriction::None;
+ break;
+ case 1:
+ result.m_restriction=Restriction::Number;
+ break;
+ case 2:
+ result.m_restriction=Restriction::Integer;
+ break;
+ case 3:
+ result.m_restriction=Restriction::Text;
+ break;
+ case 4:
+ result.m_restriction=Restriction::Date;
+ break;
+ case 5:
+ result.m_restriction=Restriction::Time;
+ break;
+ case 6:
+ result.m_restriction=Restriction::TextLength;
+ break;
+ case 7:
+ result.m_restriction=Restriction::List;
+ break;
+
+ default :
+ break;
+ }
+ switch (chooseAction->currentItem())
+ {
+ case 0:
+ result.m_action=Action::Stop;
+ break;
+ case 1:
+ result.m_action=Action::Warning;
+ break;
+ case 2:
+ result.m_action=Action::Information;
+ break;
+ default :
+ break;
+ }
+ switch ( choose->currentItem())
+ {
+ case 0:
+ result.m_cond=Conditional::Equal;
+ break;
+ case 1:
+ result.m_cond=Conditional::Superior;
+ break;
+ case 2:
+ result.m_cond=Conditional::Inferior;
+ break;
+ case 3:
+ result.m_cond=Conditional::SuperiorEqual;
+ break;
+ case 4:
+ result.m_cond=Conditional::InferiorEqual;
+ break;
+ case 5:
+ result.m_cond=Conditional::Between;
+ break;
+ case 6:
+ result.m_cond=Conditional::Different;
+ break;
+ case 7:
+ result.m_cond=Conditional::DifferentTo;
+ break;
+ default :
+ break;
+ }
+ result.message=message->text();
+ result.title=title->text();
+ result.valMin=0;
+ result.valMax=0;
+ result.timeMin=TQTime(0,0,0);
+ result.timeMax=TQTime(0,0,0);
+ result.dateMin=TQDate(0,0,0);
+ result.dateMax=TQDate(0,0,0);
+
+ if( chooseType->currentItem()==1)
+ {
+ if(choose->currentItem() <5)
+ {
+ result.valMin=val_min->text().toDouble();
+ }
+ else
+ {
+ result.valMin=TQMIN(val_min->text().toDouble(),val_max->text().toDouble());
+ result.valMax=TQMAX(val_max->text().toDouble(),val_min->text().toDouble());
+ }
+ }
+ else if( chooseType->currentItem()==2 || chooseType->currentItem()==6)
+ {
+ if(choose->currentItem() <5)
+ {
+ result.valMin=val_min->text().toInt();
+ }
+ else
+ {
+ result.valMin=TQMIN(val_min->text().toInt(),val_max->text().toInt());
+ result.valMax=TQMAX(val_max->text().toInt(),val_min->text().toInt());
+ }
+ }
+ else if( chooseType->currentItem()==4)
+ {
+ if(choose->currentItem() <5)
+ {
+ result.dateMin=m_pView->doc()->locale()->readDate(val_min->text());
+ }
+ else
+ {
+ if(m_pView->doc()->locale()->readDate(val_min->text())<m_pView->doc()->locale()->readDate(val_max->text()))
+ {
+ result.dateMin=m_pView->doc()->locale()->readDate(val_min->text());
+ result.dateMax=m_pView->doc()->locale()->readDate(val_max->text());
+ }
+ else
+ {
+ result.dateMin=m_pView->doc()->locale()->readDate(val_max->text());
+ result.dateMax=m_pView->doc()->locale()->readDate(val_min->text());
+ }
+ }
+ }
+ else if( chooseType->currentItem()==5)
+ {
+ if(choose->currentItem() <5)
+ {
+ result.timeMin=m_pView->doc()->locale()->readTime(val_min->text());
+ }
+ else
+ {
+ if(m_pView->doc()->locale()->readTime(val_min->text())<m_pView->doc()->locale()->readTime(val_max->text()))
+ {
+ result.timeMax=m_pView->doc()->locale()->readTime(val_max->text());
+ result.timeMin=m_pView->doc()->locale()->readTime(val_min->text());
+ }
+ else
+ {
+ result.timeMax=m_pView->doc()->locale()->readTime(val_min->text());
+ result.timeMin=m_pView->doc()->locale()->readTime(val_max->text());
+ }
+ }
+ }
+ else if ( chooseType->currentItem()==7 )
+ {
+ result.listValidity=TQStringList::split( "\n", validityList->text() );
+ }
+ }
+ result.displayMessage = displayMessage->isChecked();
+ result.allowEmptyCell = allowEmptyCell->isChecked();
+ result.displayValidationInformation = displayHelp->isChecked();
+ result.messageInfo= messageHelp->text();
+ result.titleInfo = titleHelp->text();
+
+ m_pView->doc()->emitBeginOperation( false );
+ m_pView->activeSheet()->setValidity( m_pView->selectionInfo(), result);
+ m_pView->slotUpdateView( m_pView->activeSheet() );
+ accept();
+}
+
+#include "kspread_dlg_validity.moc"