00001 #include "KWQtSqlEasyFilter.h"
00002 #include "KWQtSqlEasyFilter.moc"
00003 #include <qtable.h>
00004 #include <qscrollview.h>
00005 #include <klocale.h>
00006 #include <qlayout.h>
00007 #include <qcheckbox.h>
00008
00009 KWQtSqlEasyFilter::KWQtSqlEasyFilter( QWidget *parent)
00010 :KDialogBase( Swallow, i18n( "Mail Merge - Editor" ), Ok | Cancel, Ok, parent, "", true)
00011 {
00012 m_fieldList << "" <<"one" << "two" << "three" << "four";
00013 m_sortingList << ""<<i18n("ascending")<<i18n("descending");
00014 m_operationList <<"="<<i18n("contains")<< "<" << ">";
00015
00016 m_table=new QTable(6,3,this);
00017 setMainWidget(m_table);
00018
00019 m_table->verticalHeader()->setLabel(0,i18n("Field"));
00020 m_table->verticalHeader()->setLabel(1,i18n("Sorting Order"));
00021 m_table->verticalHeader()->setLabel(2,i18n("Include"));
00022 m_table->verticalHeader()->setLabel(3,i18n("Operator"));
00023 m_table->verticalHeader()->setLabel(4,i18n("Condition"));
00024 m_table->verticalHeader()->setLabel(5,i18n("Value"));
00025 m_table->setSelectionMode(QTable::NoSelection);
00026 m_table->setColumnMovingEnabled(true);
00027 m_table->setSorting(false);
00028
00029 for (int i=0; i<3; i++)
00030 {
00031 createColumn(i);
00032 }
00033
00034 int h=m_table->rowHeight(0);
00035 for (int i=0;i<6;i++) h+=m_table->rowHeight(i);
00036 h+=m_table->horizontalHeader()->sizeHint().height();
00037 m_table->setMinimumHeight(h);
00038
00039 int w=0;
00040 for (int i=0;i<3;i++) w+=m_table->columnWidth(i);
00041 w+=m_table->verticalHeader()->headerWidth();
00042 m_table->setMinimumWidth(w);
00043 connect(m_table,SIGNAL(valueChanged ( int, int)),this,SLOT(slotValueChanged ( int, int)));
00044 }
00045
00046 void KWQtSqlEasyFilter::createColumn(int i)
00047 {
00048 QTableItem *it;
00049 m_table->setItem(0,i,it=new QComboTableItem(m_table,m_fieldList,false));
00050 m_table->setItem(1,i,it=new QComboTableItem(m_table,m_sortingList,false));
00051 it->setEnabled(false);
00052 m_table->setItem(2,i,it=new QCheckTableItem(m_table,i18n("Yes")));
00053 it->setEnabled(false);
00054 m_table->setItem(3,i,it=new QCheckTableItem(m_table,i18n("NOT")));
00055 it->setEnabled(false);
00056 m_table->setItem(4,i,it=new QComboTableItem(m_table,m_operationList,false));
00057 it->setEnabled(false);
00058 m_table->setItem(5,i,it=new QTableItem(m_table,QTableItem::WhenCurrent,""));
00059 it->setEnabled(false);
00060 m_table->ensureCellVisible(0,i);
00061 }
00062
00063
00064 void KWQtSqlEasyFilter::slotValueChanged ( int row, int col )
00065 {
00066 switch (row)
00067 {
00068 case 0:
00069 if ( !m_table->item(row,col)->text().isEmpty() )
00070 {
00071 if (col==m_table->numCols()-1)
00072 {
00073 m_table->insertColumns(col+1,1);
00074 createColumn(col+1);
00075 }
00076 m_table->item(1,col)->setEnabled(true);
00077 m_table->item(2,col)->setEnabled(true);
00078 bool enableSearch=(static_cast<QCheckTableItem*>(m_table->item(2,col))->isChecked());
00079 m_table->item(3,col)->setEnabled(enableSearch);
00080 m_table->item(4,col)->setEnabled(enableSearch);
00081 m_table->item(5,col)->setEnabled(enableSearch);
00082 }
00083 else
00084 {
00085 for (int i=1;i<6;i++) m_table->item(i,col)->setEnabled(false);
00086 }
00087 break;
00088 case 2:
00089 bool enSearch=static_cast<QCheckTableItem*>(m_table->item(row,col))->isChecked();
00090 m_table->item(3,col)->setEnabled(enSearch);
00091 m_table->item(4,col)->setEnabled(enSearch);
00092 m_table->item(5,col)->setEnabled(enSearch);
00093 break;
00094 }
00095 }
00096
00097 KWQtSqlEasyFilter::~KWQtSqlEasyFilter(){;}
00098