#include "sfilterobject.h" #include "mainwindow.h" #include "../Json/sjson.h" #include "../common.h" #include #include #include #include #include SFilterObject::SFilterObject() { setWindowTitle("Object"); setWidgets(); } SFilterObject::~SFilterObject() { } void SFilterObject::setWidgets() { m_tab.setParent(this); m_tab.addTab(setDateWidgets(),"Date"); m_tab.addTab(setSearchWidgets(),"Search"); m_tab.addTab(setLengthWidgets(),"Length"); m_tab.addTab(setReplaceWidgets(),"Replace"); m_tab.addTab(setCounterWidgets(),"Counter"); } QWidget *SFilterObject::setDateWidgets() { m_pdeStart = new QDateEdit(QDate::currentDate()); m_pdeEnd = new QDateEdit(QDate::currentDate()); m_pdeStart->setDateRange(QDate(2003, 5, 20),QDate::currentDate()); m_pdeEnd->setDateRange(QDate(2003, 5, 20),QDate::currentDate().addYears(1)); QCalendarWidget *pcw = new QCalendarWidget(); m_pdeStart->setCalendarWidget(pcw); m_pdeStart->setCalendarPopup(true); m_pdeEnd->setCalendarWidget(pcw); m_pdeEnd->setCalendarPopup(true); QHBoxLayout *hlayout = new QHBoxLayout(); hlayout->addWidget(new QLabel("Start:")); hlayout->addWidget(m_pdeStart); hlayout->addWidget(new QLabel("End:")); hlayout->addWidget(m_pdeEnd); { QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchDate())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchDateUpdate())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbModify); } hlayout->setAlignment(Qt::AlignLeft|Qt::AlignTop); QWidget *pWidget = new QWidget; pWidget->setLayout(hlayout); return pWidget; } QWidget *SFilterObject::setSearchWidgets() { m_pcbCatalog = new QComboBox; m_pcbKeyword = new QComboBox; m_pcbMethod = new QComboBox; m_pleString = new QLineEdit; m_pchbLast = new QCheckBox; m_pcbKeyword->addItem(QString("Or"));// or m_pcbKeyword->addItem(QString("And"));// and m_pcbKeyword->addItem(QString("Cell Delete Or")); m_pcbKeyword->addItem(QString("Cell Delete And")); //m_pcbKeyword->addItem(QString("Word Delete")); m_pcbMethod->addItem(QString("Sentence")); m_pcbMethod->addItem(QString("Space")); m_pchbLast->setText("Last"); foreach(QStringList strList,GetColumn().data()) m_pcbCatalog->addItem(strList.at(SColumn::E_NAME)); QVBoxLayout *vlayout = new QVBoxLayout(); { QHBoxLayout *hlayout = new QHBoxLayout(); hlayout->addWidget(new QLabel("Item:")); hlayout->addWidget(m_pcbCatalog); hlayout->addWidget(new QLabel("Method:")); hlayout->addWidget(m_pcbMethod); hlayout->addWidget(new QLabel("keyword:")); hlayout->addWidget(m_pcbKeyword); hlayout->addWidget(m_pchbLast); vlayout->addLayout(hlayout); } { QHBoxLayout *hlayout = new QHBoxLayout(); hlayout->addWidget(new QLabel("Search:")); hlayout->addWidget(m_pleString); vlayout->addLayout(hlayout); } QHBoxLayout *hlayout = new QHBoxLayout(); hlayout->addLayout(vlayout); { QVBoxLayout *vsublayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); vsublayout->addWidget(pbInsert); connect(pbInsert, SIGNAL(released()),this, SLOT(SearchKeyword())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchKeywordUpdate())); vsublayout->addWidget(pbModify); hlayout->addLayout(vsublayout); } QWidget *pWidget = new QWidget; pWidget->setLayout(hlayout); return pWidget; } QWidget *SFilterObject::setLengthWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbLengthCatalog = new QComboBox; m_pcbLengthComp = new QComboBox; m_pcbLengthInsDel = new QComboBox; m_pleLength = new QLineEdit; foreach(QStringList strList,GetColumn().data()) m_pcbLengthCatalog->addItem(strList.at(SColumn::E_NAME)); m_pcbLengthComp->addItem(">",QVariant(E_LENGTH_COMP_GREATER)); m_pcbLengthComp->addItem("<",QVariant(E_LENGTH_COMP_LESS)); m_pcbLengthComp->addItem("=",QVariant(E_LENGTH_COMP_EQUAL)); m_pcbLengthInsDel->addItem("Add",QVariant(0)); m_pcbLengthInsDel->addItem("Del",QVariant(1)); hlayout->addWidget(new QLabel("Item:")); hlayout->addWidget(m_pcbLengthCatalog); hlayout->addWidget(m_pcbLengthComp); hlayout->addWidget(new QLabel("Length:")); hlayout->addWidget(m_pleLength); hlayout->addWidget(m_pcbLengthInsDel); { QVBoxLayout *vsublayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchLength())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchLengthUpdate())); vsublayout->addWidget(pbInsert); vsublayout->addWidget(pbModify); hlayout->addLayout(vsublayout); } QWidget *pWidget = new QWidget; pWidget->setLayout(hlayout); return pWidget; } QWidget *SFilterObject::setCounterWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbCounterCatalog = new QComboBox; m_pcbCounterComp = new QComboBox; m_pcbCounterInsDel = new QComboBox; m_pcbCounterCntApl = new QComboBox; m_pleCounter = new QLineEdit; foreach(QStringList strList,GetColumn().data()) m_pcbCounterCatalog->addItem(strList.at(SColumn::E_NAME)); m_pcbCounterComp->addItem(">",QVariant(E_LENGTH_COMP_GREATER)); m_pcbCounterComp->addItem("<",QVariant(E_LENGTH_COMP_LESS)); m_pcbCounterComp->addItem("=",QVariant(E_LENGTH_COMP_EQUAL)); m_pcbCounterInsDel->addItem("Add",QVariant(0)); m_pcbCounterInsDel->addItem("Del",QVariant(1)); m_pcbCounterCntApl->addItem("Count",QVariant(0)); m_pcbCounterCntApl->addItem("Apply",QVariant(1)); hlayout->addWidget(new QLabel("Item:")); hlayout->addWidget(m_pcbCounterCatalog); hlayout->addWidget(m_pcbCounterComp); //hlayout->addWidget(m_pcbCounterCntApl); hlayout->addWidget(new QLabel("Count:")); hlayout->addWidget(m_pleCounter); hlayout->addWidget(m_pcbCounterInsDel); { QVBoxLayout *vsublayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchCounter())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchCounterUpdate())); vsublayout->addWidget(pbInsert); vsublayout->addWidget(pbModify); hlayout->addLayout(vsublayout); } QWidget *pWidget = new QWidget; pWidget->setLayout(hlayout); return pWidget; } QWidget *SFilterObject::setReplaceWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbReplaceCatalog = new QComboBox; m_pcbReplaceFind = new QComboBox; m_pcbReplace = new QComboBox; m_pleReplaceFind = new QLineEdit; m_pleReplace = new QLineEdit; foreach(QStringList strList,GetColumn().data()) m_pcbReplaceCatalog->addItem(strList.at(SColumn::E_NAME)); m_pcbReplaceFind->addItem("Sentence",QVariant(E_REPLACE_SENTENCE)); m_pcbReplaceFind->addItem("Space",QVariant(E_REPLACE_SPACE)); m_pcbReplace->addItem("0",QVariant(0)); m_pcbReplace->addItem("1",QVariant(1)); m_pcbReplace->addItem("2",QVariant(2)); hlayout->addWidget(m_pcbReplaceCatalog); hlayout->addWidget(new QLabel("Find:")); hlayout->addWidget(m_pcbReplaceFind); hlayout->addWidget(m_pleReplaceFind); hlayout->addWidget(new QLabel("Replace:")); hlayout->addWidget(m_pcbReplace); hlayout->addWidget(m_pleReplace); { QVBoxLayout *vlayout = new QVBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchReplace())); vlayout->addWidget(pbInsert); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchReplaceUpdate())); vlayout->addWidget(pbModify); hlayout->addLayout(vlayout); } QWidget *pWidget = new QWidget; pWidget->setLayout(hlayout); return pWidget; } QString SFilterObject::JsonToString(int _nSelect,QString _strJson) { SJson json; QString str = STable::GetArticleType(json.Get(_strJson,"Article").toInt()); switch(_nSelect) { case E_FILTER_TYPE_DATE: str += " Start : "; str += json.Get(_strJson,"Start"); str += " End : "; str += json.Get(_strJson,"End"); break; case E_FILTER_TYPE_SEARCH: str += " "; str += m_pcbCatalog->itemText(json.GetNumber(_strJson,"Category")) + " , "; str += m_pcbMethod->itemText(json.GetNumber(_strJson,"Method")) + " , "; str += m_pcbKeyword->itemText(json.GetNumber(_strJson,"Keyword")) + " , "; str += (json.GetBool(_strJson,"Last")) ? "Last : o , " : "Last : x , "; str += json.Get(_strJson,"String"); break; case E_FILTER_TYPE_LENGTH: str += " "; str += m_pcbLengthCatalog->itemText(json.GetNumber(_strJson,"Category")) + " "; str += m_pcbLengthComp->itemText(json.GetNumber(_strJson,"Comp")) + " "; str += json.Get(_strJson,"String") + " , "; str += m_pcbLengthInsDel->itemText(json.GetNumber(_strJson,"InsDel")); break; case E_FILTER_TYPE_REPLACE: str += " "; str += m_pcbReplaceCatalog->itemText(json.GetNumber(_strJson,"Category")) + " , "; str += m_pcbReplaceFind->itemText(json.GetNumber(_strJson,"Find")) + " "; str += json.Get(_strJson,"String_Find") + " --> "; str += json.Get(_strJson,"String_Replace"); break; case E_FILTER_TYPE_COUNTER: str += " "; str += m_pcbCounterCatalog->itemText(json.GetNumber(_strJson,"Category")) + " "; str += m_pcbCounterComp->itemText(json.GetNumber(_strJson,"Comp")) + " "; str += json.Get(_strJson,"String") + " , "; str += m_pcbCounterInsDel->itemText(json.GetNumber(_strJson,"InsDel")); break; } return str; } void SFilterObject::JsonToWidget(int _nSelect,QString _strJson) { if (m_tab.isTabEnabled(_nSelect)) m_tab.setCurrentIndex(_nSelect); SJson json; switch(_nSelect) { case E_FILTER_TYPE_DATE: m_pdeStart->setDate(QDate::fromString(json.Get(_strJson,"Start"),"yyyy-MM-dd")); m_pdeEnd->setDate(QDate::fromString(json.Get(_strJson,"End"),"yyyy-MM-dd")); break; case E_FILTER_TYPE_SEARCH: m_pcbCatalog->setCurrentIndex(json.GetNumber(_strJson,"Category")); m_pcbMethod->setCurrentIndex(json.GetNumber(_strJson,"Method")); m_pcbKeyword->setCurrentIndex(json.GetNumber(_strJson,"Keyword")); m_pleString->setText(json.Get(_strJson,"String")); m_pchbLast->setChecked(json.GetBool(_strJson,"Last")); break; case E_FILTER_TYPE_LENGTH: m_pcbLengthCatalog->setCurrentIndex(json.GetNumber(_strJson,"Category")); m_pcbLengthComp->setCurrentIndex(json.GetNumber(_strJson,"Comp")); m_pcbLengthInsDel->setCurrentIndex(json.GetNumber(_strJson,"InsDel")); m_pleLength->setText(json.Get(_strJson,"String")); break; case E_FILTER_TYPE_REPLACE: m_pcbReplaceCatalog->setCurrentIndex(json.GetNumber(_strJson,"Category")); m_pcbReplaceFind->setCurrentIndex(json.GetNumber(_strJson,"Find")); m_pleReplaceFind->setText(json.Get(_strJson,"String_Find")); m_pleReplace->setText(json.Get(_strJson,"String_Replace")); break; case E_FILTER_TYPE_COUNTER: m_pcbCounterCatalog->setCurrentIndex(json.GetNumber(_strJson,"Category")); m_pcbCounterComp->setCurrentIndex(json.GetNumber(_strJson,"Comp")); m_pcbCounterInsDel->setCurrentIndex(json.GetNumber(_strJson,"InsDel")); m_pleCounter->setText(json.Get(_strJson,"String")); break; } } void SFilterObject::SearchDate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseTimeFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(),m_pdeStart->date(),m_pdeEnd->date(),nSelect,E_DATABASE_COMMAND_INSERT); GetMainWindow()->m_pDataDlg->SearchDate(m_pdeStart->date(),m_pdeEnd->date()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchCounter() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseCounterFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbCounterCatalog->currentIndex(), m_pcbCounterComp->currentIndex(), m_pcbCounterInsDel->currentIndex(), m_pleCounter->text(), nSelect, E_DATABASE_COMMAND_INSERT); GetMainWindow()->m_pDataDlg->SearchCounter(m_pcbCounterCatalog->currentIndex(), m_pcbCounterComp->currentIndex(), m_pcbCounterInsDel->currentIndex(), m_pleCounter->text().toInt()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchLength() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseLengthFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbLengthCatalog->currentIndex(), m_pcbLengthComp->currentIndex(), m_pcbLengthInsDel->currentIndex(),m_pleLength->text(), nSelect,E_DATABASE_COMMAND_INSERT); GetMainWindow()->m_pDataDlg->SearchLength(m_pcbLengthCatalog->currentIndex(), m_pcbLengthComp->currentIndex(), m_pcbLengthInsDel->currentIndex(), m_pleLength->text().toInt()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchReplace() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseReplaceFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbReplaceCatalog->currentIndex(), m_pcbReplaceFind->currentData().toInt(), m_pleReplaceFind->text(), m_pleReplace->text(), nSelect,E_DATABASE_COMMAND_INSERT); GetMainWindow()->m_pDataDlg->SearchReplace(m_pcbReplaceCatalog->currentIndex(), m_pcbReplaceFind->currentIndex(), m_pcbReplace->currentIndex(), m_pleReplaceFind->text(), m_pleReplace->text()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchKeyword() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); { SKeyword stKeyword; stKeyword.m_nCatalog = m_pcbCatalog->currentIndex(); stKeyword.m_nKeyword = m_pcbKeyword->currentIndex(); QString strKey = m_pleString->text().replace("\r\n"," "); strKey = strKey.replace("\n"," "); strKey = strKey.replace("\t"," "); QString strTemp; foreach(QString str, strKey.split(" ")) { if (str.trimmed().isEmpty() == false) strTemp += str.trimmed() + " "; } strTemp = strTemp.trimmed(); m_pleString->setText(strTemp); strKey = strTemp; DataBaseSearchFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbCatalog->currentIndex(), m_pcbMethod->currentIndex(), m_pcbKeyword->currentIndex(), m_pchbLast->isChecked(), strKey, nSelect,E_DATABASE_COMMAND_INSERT); stKeyword.m_strListKeyword = strKey.split(" "); if (m_pcbMethod->currentIndex() == E_SEARCH_METHOD_SPACE) { for (int i = 0 ; i < stKeyword.m_strListKeyword.size(); i++ ) { stKeyword.m_strListKeyword[i] = " " + stKeyword.m_strListKeyword[i] + " "; } } m_vecKeyword.push_back(stKeyword); if (m_pchbLast->isChecked()) { GetMainWindow()->m_pDataDlg->SearchKeyword(m_vecKeyword); m_vecKeyword.clear(); unlockTabs(); } else lockTabs(1); } GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchDateUpdate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseTimeFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pdeStart->date(),m_pdeEnd->date(), nSelect,E_DATABASE_COMMAND_UPDATE, GetMainWindow()->m_pFilterDlg->GetSelectFilterID()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchCounterUpdate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseCounterFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbCounterCatalog->currentIndex(), m_pcbCounterComp->currentIndex(), m_pcbCounterInsDel->currentIndex(), m_pleCounter->text(), nSelect, E_DATABASE_COMMAND_UPDATE, GetMainWindow()->m_pFilterDlg->GetSelectFilterID()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchLengthUpdate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseLengthFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbLengthCatalog->currentIndex(), m_pcbLengthComp->currentIndex(), m_pcbLengthInsDel->currentIndex(), m_pleLength->text(), nSelect,E_DATABASE_COMMAND_UPDATE, GetMainWindow()->m_pFilterDlg->GetSelectFilterID()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchReplaceUpdate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); DataBaseReplaceFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbReplaceCatalog->currentIndex(), m_pcbReplaceFind->currentData().toInt(), m_pleReplaceFind->text(), m_pleReplace->text(), nSelect,E_DATABASE_COMMAND_UPDATE, GetMainWindow()->m_pFilterDlg->GetSelectFilterID()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::SearchKeywordUpdate() { int nSelect = GetMainWindow()->m_pFilterDlg->GetSelectGroupID(); QString strKey = m_pleString->text().replace("\r\n"," ").replace("\n"," ").replace("\t"," "); DataBaseSearchFilter(GetMainWindow()->m_pDataDlg->GetCurrentArticle(), m_pcbCatalog->currentIndex(), m_pcbMethod->currentIndex(), m_pcbKeyword->currentIndex(), m_pchbLast->isChecked(),strKey, nSelect,E_DATABASE_COMMAND_UPDATE,GetMainWindow()->m_pFilterDlg->GetSelectFilterID()); GetMainWindow()->m_pFilterDlg->RefreshFilter(nSelect); } void SFilterObject::lockTabs(int _nExcept) { for (int i=0; i