You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kbarcode/kbarcode/configdialog.cpp

352 lines
12 KiB

/***************************************************************************
configdialog.cpp - description
-------------------
begin : Fre Apr 26 2002
copyright : (C) 2002 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 "configdialog.h"
#include "printersettings.h"
#include "sqltables.h"
// TQt includes
#include <tqbuttongroup.h>
#include <tqcheckbox.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpaintdevicemetrics.h>
#include <tqradiobutton.h>
#include <tqsqldatabase.h>
#include <tqtooltip.h>
// KDE includes
#include <kabc/addressee.h>
#include <kapplication.h>
#include <kconfig.h>
#include <kcolorbutton.h>
#include <kiconloader.h>
#include <kimageio.h>
#include <klineedit.h>
#include <klocale.h>
#include <kcombobox.h>
#include <knuminput.h>
#include <kmessagebox.h>
#include <kpushbutton.h>
const TQString cached = I18N_NOOP("There are currently %1 cached barcodes.");
using namespace KABC;
ConfigDialog::ConfigDialog( TQWidget* parent )
: KDialogBase( IconList, i18n("Configure KBarcode"), KDialogBase::Ok|KDialogBase::Cancel,
KDialogBase::Ok, parent, "", true, true )
{
setupTab2(); // Printer
setupTab1(); // SQL
setupTab4(); // label editor
setupTab3(); // import
setupTab5(); // on new
}
ConfigDialog::~ConfigDialog()
{
}
void ConfigDialog::setupTab1( )
{
TQFrame* box = addPage( i18n("SQL Settings"), "", BarIcon("connect_no") );
TQVBoxLayout* tqlayout = new TQVBoxLayout( box, 6, 6 );
TQSpacerItem* spacer = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Expanding );
sqlwidget = new SqlWidget( false, box, "sqlwidget" );
tqlayout->addWidget( sqlwidget );
tqlayout->addItem( spacer );
}
void ConfigDialog::setupTab2()
{
labelprinterdata* lb = PrinterSettings::getInstance()->getData();
TQFrame* box = addPage( i18n("Print Settings"), "", BarIcon("fileprint") );
TQVBoxLayout* tabLayout = new TQVBoxLayout( box, 11, 6 );
TQHBoxLayout* Layout0 = new TQHBoxLayout( 0, 6, 6 );
TQHBoxLayout* Layout1 = new TQHBoxLayout( 0, 6, 6 );
TQSpacerItem* spacer = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Expanding );
printerQuality = new KComboBox( false, box );
printerQuality->insertItem( i18n("Medium Resolution (300dpi)") );
printerQuality->insertItem( i18n("High Resolution (600dpi)") );
printerQuality->insertItem( i18n("Very High Resolution (1200dpi)") );
switch( lb->quality ) {
case PrinterSettings::Middle:
printerQuality->setCurrentItem( 0 );
break;
case PrinterSettings::High:
printerQuality->setCurrentItem( 1 );
break;
case PrinterSettings::VeryHigh:
printerQuality->setCurrentItem( 2 );
break;
default:
break;
}
pageFormat = new KComboBox( false, box );
PrinterSettings::getInstance()->insertPageFormat( pageFormat );
pageFormat->setCurrentItem( lb->format );
Layout0->addWidget( new TQLabel( i18n("Printer Resolution:"), box ) );
Layout0->addWidget( printerQuality );
Layout1->addWidget( new TQLabel( i18n("Preview Page Format:"), box ) );
Layout1->addWidget( pageFormat );
tabLayout->addLayout( Layout0 );
tabLayout->addLayout( Layout1 );
tabLayout->addItem( spacer );
}
void ConfigDialog::setupTab3()
{
labelprinterdata* lb = PrinterSettings::getInstance()->getData();
TQFrame* box = addPage( i18n("Import"), "", BarIcon("fileimport") );
TQGridLayout* grid = new TQGridLayout( box, 2, 2 );
TQLabel* label = new TQLabel( box );
label->setText( i18n("Comment:") );
grid->addWidget( label, 0, 0 );
comment = new KLineEdit( lb->comment, box );
grid->addWidget( comment, 0, 1 );
label = new TQLabel( box );
label->setText( i18n( "Separator:" ) );
grid->addWidget( label, 1, 0 );
separator = new KLineEdit( lb->separator, box );
grid->addWidget( separator, 1, 1 );
label = new TQLabel( box );
label->setText( i18n("Quote Character:") );
grid->addWidget( label, 2, 0 );
quote = new KLineEdit( lb->quote, box );
grid->addWidget( quote, 2, 1 );
checkUseCustomNo = new TQCheckBox( i18n("&Use customer article no. for import"), box );
checkUseCustomNo->setChecked( lb->useCustomNo );
grid->addMultiCellWidget( checkUseCustomNo, 3, 3, 0, 2 );
TQHBoxLayout* Layout1 = new TQHBoxLayout( 0, 6, 6 );
Layout1->addWidget( new TQLabel( i18n("File Format:"), box ) );
combo1 = new KComboBox( box );
combo1->insertItem( i18n("Quantity") );
combo1->insertItem( i18n("Article Number") );
combo1->insertItem( i18n("Group") );
Layout1->addWidget( combo1 );
combo2 = new KComboBox( box );
combo2->insertItem( i18n("Quantity") );
combo2->insertItem( i18n("Article Number") );
combo2->insertItem( i18n("Group") );
Layout1->addWidget( combo2 );
combo3 = new KComboBox( box );
combo3->insertItem( i18n("Quantity") );
combo3->insertItem( i18n("Article Number") );
combo3->insertItem( i18n("Group") );
Layout1->addWidget( combo3 );
grid->addMultiCellLayout( Layout1, 4, 4, 0, 2 );
TQSpacerItem* spacer = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
grid->addItem( spacer, 5, 0 );
KConfig* config = kapp->config();
config->setGroup("FileFormat");
combo1->setCurrentItem( config->readNumEntry("Data0", 0 ) );
combo2->setCurrentItem( config->readNumEntry("Data1", 1 ) );
combo3->setCurrentItem( config->readNumEntry("Data2", 2 ) );
}
void ConfigDialog::setupTab4()
{
TQFrame* box = addPage( i18n("Label Editor"), "", BarIcon("kbarcode") );
TQGridLayout* tabLayout = new TQGridLayout( box, 11, 6 );
checkNewDlg = new TQCheckBox( box );
checkNewDlg->setText( i18n("&Create a new label on startup") );
date = new KLineEdit( box );
labelDate = new TQLabel( box );
connect( date, TQT_SIGNAL( textChanged( const TQString & ) ), this, TQT_SLOT( updateDatePreview() ) );
spinGrid = new KIntNumInput( 0, box );
spinGrid->setLabel( i18n("Grid:" ), AlignLeft | AlignVCenter );
spinGrid->setRange(2, 100, 1, false );
colorGrid = new KColorButton( box );
tabLayout->addWidget( checkNewDlg, 0, 0 );
tabLayout->addMultiCellWidget( spinGrid, 1, 1, 0, 2 );
tabLayout->addWidget( new TQLabel( i18n("Grid Color:"), box ), 2, 0 );
tabLayout->addWidget( colorGrid, 2, 1 );
tabLayout->addWidget( new TQLabel( i18n("Date Format:"), box ), 3, 0 );
tabLayout->addWidget( date, 3, 1 );
tabLayout->addWidget( labelDate, 3, 2 );
}
void ConfigDialog::setupTab5()
{
labelprinterdata* lb = PrinterSettings::getInstance()->getData();
TQFrame* box = addPage( i18n("On New"), "", BarIcon("filenew") );
TQVBoxLayout* tabLayout = new TQVBoxLayout( box, 11, 6 );
TQButtonGroup* bg = new TQButtonGroup( i18n("On New Article"), box );
bg->setColumnLayout(0, Qt::Vertical );
bg->tqlayout()->setSpacing( 6 );
bg->tqlayout()->setMargin( 11 );
TQGridLayout* bgLayout = new TQGridLayout( bg->tqlayout() );
TQStringList alist, glist;
alist.append( i18n("No Line Break") );
alist.append( i18n("Line Break") );
alist.append( i18n("Insert Label X") );
alist.append( i18n("New Page") );
alist.append( i18n("Article No.") );
glist.append( i18n("No Line Break") );
glist.append( i18n("Line Break") );
glist.append( i18n("Insert Label X") );
glist.append( i18n("New Page") );
glist.append( i18n("Group Name") );
onNewArticle1 = new KComboBox( false, bg );
onNewArticle2 = new KComboBox( false, bg );
onNewArticle3 = new KComboBox( false, bg );
onNewArticle4 = new KComboBox( false, bg );
onNewArticle1->insertStringList( alist );
onNewArticle2->insertStringList( alist );
onNewArticle3->insertStringList( alist );
onNewArticle4->insertStringList( alist );
bgLayout->setColStretch( 1, 3 );
bgLayout->addWidget( new TQLabel( "1.", bg ), 0, 0 );
bgLayout->addWidget( new TQLabel( "2.", bg ), 1, 0 );
bgLayout->addWidget( new TQLabel( "3.", bg ), 2, 0 );
bgLayout->addWidget( new TQLabel( "4.", bg ), 3, 0 );
bgLayout->addWidget( onNewArticle1, 0, 1 );
bgLayout->addWidget( onNewArticle2, 1, 1 );
bgLayout->addWidget( onNewArticle3, 2, 1 );
bgLayout->addWidget( onNewArticle4, 3, 1 );
TQButtonGroup* bg2 = new TQButtonGroup( i18n("On New Group"), box );
bg2->setColumnLayout(0, Qt::Vertical );
bg2->tqlayout()->setSpacing( 6 );
bg2->tqlayout()->setMargin( 11 );
TQGridLayout* bg2Layout = new TQGridLayout( bg2->tqlayout() );
onNewGroup1 = new KComboBox( false, bg2 );
onNewGroup2 = new KComboBox( false, bg2 );
onNewGroup3 = new KComboBox( false, bg2 );
onNewGroup4 = new KComboBox( false, bg2 );
onNewGroup1->insertStringList( glist );
onNewGroup2->insertStringList( glist );
onNewGroup3->insertStringList( glist );
onNewGroup4->insertStringList( glist );
bg2Layout->setColStretch( 1, 3 );
bg2Layout->addWidget( new TQLabel( "1.", bg2 ), 0, 0 );
bg2Layout->addWidget( new TQLabel( "2.", bg2 ), 1, 0 );
bg2Layout->addWidget( new TQLabel( "3.", bg2 ), 2, 0 );
bg2Layout->addWidget( new TQLabel( "4.", bg2 ), 3, 0 );
bg2Layout->addWidget( onNewGroup1, 0, 1 );
bg2Layout->addWidget( onNewGroup2, 1, 1 );
bg2Layout->addWidget( onNewGroup3, 2, 1 );
bg2Layout->addWidget( onNewGroup4, 3, 1 );
tabLayout->addWidget( bg );
tabLayout->addWidget( bg2 );
onNewArticle1->setCurrentItem( lb->articleEvent1 );
onNewArticle2->setCurrentItem( lb->articleEvent2 );
onNewArticle3->setCurrentItem( lb->articleEvent3 );
onNewArticle4->setCurrentItem( lb->articleEvent4 );
onNewGroup1->setCurrentItem( lb->groupEvent1 );
onNewGroup2->setCurrentItem( lb->groupEvent2 );
onNewGroup3->setCurrentItem( lb->groupEvent3 );
onNewGroup4->setCurrentItem( lb->groupEvent4 );
}
void ConfigDialog::accept()
{
KConfig* config = kapp->config();
config->setGroup("FileFormat");
config->writeEntry("Data0", combo1->currentItem() );
config->writeEntry("Data1", combo2->currentItem() );
config->writeEntry("Data2", combo3->currentItem() );
sqlwidget->save();
labelprinterdata* lpdata = PrinterSettings::getInstance()->getData();
lpdata->comment = comment->text();
lpdata->separator = separator->text();
lpdata->quote = quote->text();
lpdata->format = pageFormat->currentItem();
lpdata->articleEvent1 = onNewArticle1->currentItem();
lpdata->articleEvent2 = onNewArticle2->currentItem();
lpdata->articleEvent3 = onNewArticle3->currentItem();
lpdata->articleEvent4 = onNewArticle4->currentItem();
lpdata->groupEvent1 = onNewGroup1->currentItem();
lpdata->groupEvent2 = onNewGroup2->currentItem();
lpdata->groupEvent3 = onNewGroup3->currentItem();
lpdata->groupEvent4 = onNewGroup4->currentItem();
lpdata->useCustomNo = checkUseCustomNo->isChecked();
switch( printerQuality->currentItem() ) {
case 0:
lpdata->quality = PrinterSettings::Middle;
break;
case 1:
lpdata->quality = PrinterSettings::High;
break;
case 2:
lpdata->quality = PrinterSettings::VeryHigh;
break;
default:
break;
}
TQDialog::accept();
}
void ConfigDialog::updateDatePreview()
{
labelDate->setText( i18n("Preview: ") + TQDateTime::tqcurrentDateTime().toString( date->text() ) );
}
#include "configdialog.moc"