#include "widget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "../Json/sjson.h" #include "../common.h" /* QSqlDatabase dbWeb = QSqlDatabase::addDatabase("QMYSQL"); dbWeb.setHostName("db.big-bird.co.kr"); dbWeb.setUserName("concepters"); dbWeb.setPassword("con97996655"); dbWeb.setDatabaseName("dbconcepters"); */ #define D_NOT_SELECT -1 #define SAFE_DELETE(x) if(x != NULL) { delete x; x = NULL; } #define SAFE_DELETEARRAY(x) if(x != NULL) { delete [] x; x = NULL; } #define SAFE_RELEASE(x) if(x != NULL) { x->Release(); x = NULL; } Widget::Widget(QWidget *parent) : QWidget(parent) { if (ReloadColumn() == false) return; QVBoxLayout *vMainLayout = new QVBoxLayout; vMainLayout->setAlignment(Qt::AlignVCenter); setMenuWidget(); //vMainLayout->addWidget(setMenuWidget()); { QVBoxLayout *vlayout = new QVBoxLayout; { QHBoxLayout *hlayout = new QHBoxLayout; if (m_nColumn != -1) hlayout->addWidget(setDateWidgets()); hlayout->addWidget(setCountWidgets()); //vlayout->addLayout(hlayout); } vlayout->addWidget(setSearchWidgets()); vlayout->addWidget(setLengthWidgets()); vlayout->addWidget(setCounterWidgets()); vlayout->addWidget(setReplaceWidgets()); vlayout->setAlignment(Qt::AlignTop); { QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(setDataWidgets()); hlayout->addLayout(vlayout); //hlayout->addWidget(setFilterWidgets()); setFilterWidgets(); vMainLayout->addLayout(hlayout,2); } m_ptwData = new QTabWidget; vMainLayout->addWidget(m_ptwData,7); m_ptwData->setTabsClosable(true); connect(m_ptwData,SIGNAL(tabCloseRequested(int)),this,SLOT(CloseTab(int))); connect(m_ptwData,SIGNAL(tabBarDoubleClicked(int)),this,SLOT(DoubleClickTab(int))); m_pProgress = new QProgressBar; vMainLayout->addWidget(m_pProgress,1); } setLayout(vMainLayout); DataGroupRefresh(); FilterGroupRefresh(); AddTable("Start"); } Widget::~Widget() { } QTableWidget *Widget::AddTable(QString _str) { STable *pTable = new STable; m_ptwData->addTab(pTable,_str); return (QTableWidget *)pTable; } void Widget::CloseTab(int index) { ((STable*)(m_ptwData->widget(index)))->clear(); m_ptwData->removeTab(index); } void Widget::DoubleClickTab(int index) { bool ok; if (index < 0) return; QString text = QInputDialog::getText(this,"Tab name change","Name : ", QLineEdit::Normal,m_ptwData->tabText(index), &ok); if (ok) { m_ptwData->setTabText(index,text); } } QMenuBar *Widget::setMenuWidget() { QMenuBar *pMenuBar = new QMenuBar(); { QMenu *pFile = pMenuBar->addMenu("File"); connect(pFile->addAction("New"), SIGNAL(triggered()), this, SLOT(FileNew())); connect(pFile->addAction("CSV Import"), SIGNAL(triggered()), this, SLOT(FileImport())); connect(pFile->addAction("CSV Export"), SIGNAL(triggered()), this, SLOT(FileExport())); pFile->addSeparator(); connect(pFile->addAction("Exit"), SIGNAL(triggered()), this, SLOT(FileExit())); } return pMenuBar; } void Widget::FileNew() { bool ok; QString text = QInputDialog::getText(this,"New Row Count","Count :", QLineEdit::Normal,"0", &ok); if (ok) { STable *pTable = (STable*)AddTable("new"); pTable->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_ptwData->setCurrentIndex(m_ptwData->count()-1); pTable->setRowCount(text.toInt()); } } QGroupBox *Widget::setDataWidgets() { QVBoxLayout *vlayout = new QVBoxLayout; QGroupBox *groupBox = new QGroupBox(tr("Data Group")); m_plwData = new QListWidget; vlayout->addWidget(m_plwData); m_plwData->setSelectionMode(QAbstractItemView::SingleSelection); QPushButton *ppbRefresh = new QPushButton("Refresh"); vlayout->addWidget(ppbRefresh); connect(ppbRefresh, SIGNAL(released()),this, SLOT(DataGroupRefresh())); groupBox->setLayout(vlayout); connect(m_plwData,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(DataGroupItemChanged(QListWidgetItem*))); return groupBox; } QGroupBox *Widget::setDateWidgets() { //m_pcbDateCatalog = new QComboBox; 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()); m_pcw = new QCalendarWidget(); m_pdeStart->setCalendarWidget(m_pcw); m_pdeStart->setCalendarPopup(true); m_pdeEnd->setCalendarWidget(m_pcw); m_pdeEnd->setCalendarPopup(true); QHBoxLayout *hlayout = new QHBoxLayout(); //hlayout->addWidget(new QLabel("Catalog:")); //hlayout->addWidget(m_pcbDateCatalog); 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); QGroupBox *groupBox = new QGroupBox(tr("Term")); groupBox->setAlignment(Qt::AlignLeft|Qt::AlignTop); groupBox->setLayout(hlayout); //m_pcbDateCatalog->addItems(QStringList() << "body + reply" << "body" << "reply"); return groupBox; } QGroupBox *Widget::setCountWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbCountCatalog = new QComboBox; hlayout->addWidget(m_pcbCountCatalog); foreach(QStringList strList,m_vecColumn) m_pcbCountCatalog->addItem(strList.at(E_COLUMN_NAME)); { QPushButton *pbInsert = new QPushButton("Save"); connect(pbInsert , SIGNAL(released()),this, SLOT(CountSave())); hlayout->addWidget(pbInsert); } QGroupBox *groupBox = new QGroupBox(tr("Count")); groupBox->setLayout(hlayout); return groupBox; } QGroupBox *Widget::setSearchWidgets() { m_pcbCatalog = new QComboBox; m_pcbKeyword = new QComboBox; m_pcbMethod = new QComboBox; m_pleString = new QLineEdit; m_pcbKeyword->addItem(QString("Or"));// or m_pcbKeyword->addItem(QString("And"));// and m_pcbKeyword->addItem(QString("Cell Delete")); m_pcbKeyword->addItem(QString("Word Delete")); m_pcbMethod->addItem(QString("Sentence")); m_pcbMethod->addItem(QString("Space")); foreach(QStringList strList,m_vecColumn) m_pcbCatalog->addItem(strList.at(E_COLUMN_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); 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); } QGroupBox *groupBox = new QGroupBox(tr("Search")); groupBox->setLayout(hlayout); return groupBox; } QGroupBox *Widget::setLengthWidgets() { QHBoxLayout *hlayout = new QHBoxLayout(); m_pcbLengthCatalog = new QComboBox; m_pcbLengthComp = new QComboBox; m_pcbLengthInsDel = new QComboBox; m_pleLength = new QLineEdit; foreach(QStringList strList,m_vecColumn) m_pcbLengthCatalog->addItem(strList.at(E_COLUMN_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); { QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchLengthInsert())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchLengthUpdate())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbModify); } QGroupBox *groupBox = new QGroupBox(tr("Length")); groupBox->setLayout(hlayout); return groupBox; } QGroupBox *Widget::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,m_vecColumn) m_pcbCounterCatalog->addItem(strList.at(E_COLUMN_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); { QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert , SIGNAL(released()),this, SLOT(SearchCounterInsert())); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchCounterUpdate())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbModify); } QGroupBox *groupBox = new QGroupBox(tr("Counter")); groupBox->setLayout(hlayout); return groupBox; } QGroupBox *Widget::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,m_vecColumn) m_pcbReplaceCatalog->addItem(strList.at(E_COLUMN_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(SearchReplaceInsert())); vlayout->addWidget(pbInsert); QPushButton *pbModify = new QPushButton("Modify"); connect(pbModify , SIGNAL(released()),this, SLOT(SearchReplaceUpdate())); vlayout->addWidget(pbModify); hlayout->addLayout(vlayout); } QGroupBox *groupBox = new QGroupBox(tr("Replace")); groupBox->setLayout(hlayout); return groupBox; } QGroupBox *Widget::setFilterWidgets() { QHBoxLayout *hMainlayout = new QHBoxLayout(); { QVBoxLayout *vlayout = new QVBoxLayout(); m_plwFilterGroup = new QListWidget; m_pleFilterGroup = new QLineEdit; vlayout->addWidget(m_plwFilterGroup); vlayout->addWidget(m_pleFilterGroup); { QHBoxLayout *hlayout = new QHBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert, SIGNAL(released()),this, SLOT(FilterGroupInsert())); QPushButton *pbDelete = new QPushButton("Delete"); connect(pbDelete, SIGNAL(released()),this, SLOT(FilterGroupDelete())); QPushButton *pbModify = new QPushButton("Modfiy"); connect(pbModify, SIGNAL(released()),this, SLOT(FilterGroupModify())); QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste"); connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(FilterGroupCopyPaste())); QPushButton *pbRefresh = new QPushButton("Refresh"); connect(pbRefresh, SIGNAL(released()),this, SLOT(FilterGroupRefresh())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbDelete); hlayout->addWidget(pbModify); hlayout->addWidget(pbCopy_Paste); hlayout->addWidget(pbRefresh); vlayout->addLayout(hlayout); } hMainlayout->addLayout(vlayout); } { QVBoxLayout *vlayout = new QVBoxLayout(); m_plwFilter = new QListWidget; vlayout->addWidget(m_plwFilter); connect(m_plwFilter,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(currentFilterItemChanged(QListWidgetItem*,QListWidgetItem*))); QPushButton *pbDelete = new QPushButton("Delete"); vlayout->addWidget(pbDelete); connect(pbDelete, SIGNAL(released()),this, SLOT(FilterDelete())); hMainlayout->addLayout(vlayout); } m_pgbFilter = new QGroupBox(tr("Filter")); m_pgbFilter->setCheckable(true); m_pgbFilter->setChecked(false); m_pgbFilter->setLayout(hMainlayout); connect(m_plwFilterGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentGroupItemChanged(QListWidgetItem *, QListWidgetItem *))); return m_pgbFilter; } void Widget::DataGroupRefresh() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } m_plwData->clear(); QSqlQuery query("select id,name,count from datagroup"); while (query.next()) { QString str = query.value(1).toString(); str += " ( "; str += query.value(0).toString(); str += " , "; str += query.value(2).toString(); str += " )"; QListWidgetItem *pItem = new QListWidgetItem(str,m_plwData); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } void Widget::InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew) { _pNew->setRowCount(_pNew->rowCount()+1); for (int nCount = 0;nCount < _pCurrent->columnCount() ;nCount++ ) { _pNew->setItem(_pNew->rowCount()-1,nCount,new QTableWidgetItem(*_pCurrent->item(_nRow,nCount))); } } void Widget::SearchDate() { STable *pNew = new STable; STable *pCurrent = (STable *)m_ptwData->currentWidget(); pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_pProgress->setRange(0,pCurrent->rowCount()-1); int nCurrentFilterGroupID = D_NOT_SELECT; if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseTimeFilter(pNew->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; QString strTime = pCurrent->item(nCount,m_nColumn)->text().trimmed(); if (strTime.size() >= 10) { QChar ch = strTime.at(4); QString strFormat = QString("yyyy")+ch+QString("MM")+ch+QString("dd"); QDate date = QDate::fromString(strTime.left(10),strFormat); if (m_pdeStart->date() <= date && m_pdeEnd->date() >= date) bFlag = true; } if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); m_pProgress->setValue(nCount); m_pProgress->repaint(); } //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" d"); m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); m_ptwData->setCurrentIndex(m_ptwData->count()-1); if (nCurrentFilterGroupID != D_NOT_SELECT) RefreshFilter(nCurrentFilterGroupID); } void Widget::SearchKeyword() { STable *pNew = new STable; STable *pCurrent = (STable *)m_ptwData->currentWidget(); pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); int nCurrentFilterGroupID = D_NOT_SELECT; 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; if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseSearchFilter(pNew->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } QStringList strListKeyword = strKey.split(" "); if (m_pcbMethod->currentIndex() == 1) { for (int i = 0 ; i < strListKeyword.size(); i++ ) { strListKeyword[i] = " " + strListKeyword[i] + " "; } } m_pProgress->setRange(0,pCurrent->rowCount()-1); for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; //if (m_pcbCatalog->currentText() == "ALL") QString strData = pCurrent->item(nCount,m_pcbCatalog->currentIndex())->text(); switch(m_pcbKeyword->currentIndex()) { case 0: { foreach(QString strKey , strListKeyword) if (strData.contains(strKey)){bFlag = true;break;} break; } case 1: { int nKeyCount = 0; foreach(QString strKey , strListKeyword) if (strData.contains(strKey)) nKeyCount++; if (nKeyCount == strListKeyword.size()) bFlag = true; break; } case 2: { bFlag = true; foreach(QString strKey , strListKeyword) if (strData.contains(strKey)){bFlag = false;break;} break; } case 3: bFlag = true;break; } if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); if (m_pcbKeyword->currentIndex() == 3) { foreach(QString strKey , strListKeyword) { strData.replace(strKey,""); } pNew->item(nCount,m_pcbCatalog->currentIndex())->setText(strData); } m_pProgress->setValue(nCount); m_pProgress->repaint(); } //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" k"); m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); m_ptwData->setCurrentIndex(m_ptwData->count()-1); if (nCurrentFilterGroupID != D_NOT_SELECT) RefreshFilter(nCurrentFilterGroupID); } void Widget::SearchCounterInsert() { bool ok; m_pleCounter->text().toInt(&ok); if(!ok) return; STable *pCurrent = (STable *)m_ptwData->currentWidget(); int nCatalog = m_pcbCounterCatalog->currentIndex(); int nFlag = m_pcbCounterInsDel->currentData().toInt(); int nComp = m_pcbCounterComp->currentData().toInt(); //int nCntApl = m_pcbCounterCntApl->currentData().toInt(); int nCurrentFilterGroupID = D_NOT_SELECT; m_pProgress->setRange(0,pCurrent->rowCount()-1); QString strKey = m_pcbCounterCatalog->currentText(); strKey += ","; strKey += QString::number(m_pcbCounterComp->currentIndex()); strKey += ","; strKey += m_pleCounter->text(); if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseCounterFilter(pCurrent->getArticleSelect(), nCatalog, nComp, nFlag, m_pleCounter->text(), nCurrentFilterGroupID, E_DATABASE_COMMAND_INSERT); } } //if(m_pcbCounterCntApl->currentIndex() == 0) { if(m_mapData.contains(strKey)) m_mapData[strKey].clear(); QMap mapData; for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { QString str; if (nCatalog == m_nColumn) { QDateTime date; str = date.fromString(pCurrent->item(nCount,nCatalog)->text().trimmed(),"yyyy-MM-dd hh:mm:ss").date().toString("yyyy-MM-dd"); } else str = pCurrent->item(nCount,nCatalog)->text().trimmed(); if(mapData.contains(str)) { mapData[str] += 1; } else { mapData.insert(str,1); } m_pProgress->setValue(nCount); m_pProgress->repaint(); } int leCount = m_pleCounter->text().toInt(); if(m_pcbCounterComp->currentIndex() == 0) { for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) { if(iterPos.value() > leCount) { if(m_mapData.contains(strKey)) { m_mapData[strKey].insert(iterPos.key(), iterPos.value()); } else { QMap temp; temp.insert(iterPos.key(), iterPos.value()); m_mapData.insert(strKey, temp); } } } } else if(m_pcbCounterComp->currentIndex() == 1) { for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) { if(iterPos.value() < leCount) { if(m_mapData.contains(strKey)) { m_mapData[strKey].insert(iterPos.key(), iterPos.value()); } else { QMap temp; temp.insert(iterPos.key(), iterPos.value()); m_mapData.insert(strKey, temp); } } } } else if(m_pcbCounterComp->currentIndex() == 2) { for(QMap::iterator iterPos = mapData.begin(); iterPos != mapData.end() ;iterPos++) { if(iterPos.value() == leCount) { if(m_mapData.contains(strKey)) { m_mapData[strKey].insert(iterPos.key(), iterPos.value()); } else { QMap temp; temp.insert(iterPos.key(), iterPos.value()); m_mapData.insert(strKey, temp); } } } } } //if(m_pcbCounterCntApl->currentIndex() == 1) { if(!m_mapData.contains(strKey)) return; STable *pNew = new STable; pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_pProgress->setRange(0,pCurrent->rowCount()-1); for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; QString strCurrent = pCurrent->item(nCount,nCatalog)->text().trimmed(); if(m_mapData[strKey].contains(strCurrent)) bFlag = true; if (nFlag == 1) bFlag = !bFlag; if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); m_pProgress->setValue(nCount); m_pProgress->repaint(); } m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); m_ptwData->setCurrentIndex(m_ptwData->count()-1); } if (nCurrentFilterGroupID != D_NOT_SELECT) RefreshFilter(nCurrentFilterGroupID); m_mapData[strKey].clear(); } void Widget::SearchCounterUpdate() { if (m_pgbFilter->isChecked()) { int nCurrentFilterGroupID = D_NOT_SELECT; foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); if (nCurrentFilterGroupID == D_NOT_SELECT) return; int nCatalog = m_pcbCounterCatalog->currentIndex(); int nComp = m_pcbCounterComp->currentData().toInt(); int nFlag = m_pcbCounterInsDel->currentData().toInt(); foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) DataBaseLengthFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog,nComp,nFlag,m_pleCounter->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); RefreshFilter(nCurrentFilterGroupID); } } void Widget::SearchLengthInsert() { STable *pNew = new STable; STable *pCurrent = (STable *)m_ptwData->currentWidget(); pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_pProgress->setRange(0,pCurrent->rowCount()-1); int nCatalog = m_pcbLengthCatalog->currentIndex(); int nComp = m_pcbLengthComp->currentData().toInt(); int nFlag = m_pcbLengthInsDel->currentData().toInt(); int nLength = m_pleLength->text().toInt(); int nCurrentFilterGroupID = D_NOT_SELECT; if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseLengthFilter(pCurrent->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { bool bFlag = false; int nCurrentLength = pCurrent->item(nCount,nCatalog)->text().trimmed().length(); switch(nComp) { case E_LENGTH_COMP_GREATER: if (nCurrentLength > nLength) bFlag = true; break; case E_LENGTH_COMP_LESS: if (nCurrentLength < nLength) bFlag = true; break; case E_LENGTH_COMP_EQUAL: if (nLength == nCurrentLength) bFlag = true; break; } if (nFlag == 1) bFlag = !bFlag; if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); m_pProgress->setValue(nCount); m_pProgress->repaint(); } //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" c"); m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); m_ptwData->setCurrentIndex(m_ptwData->count()-1); if (nCurrentFilterGroupID != D_NOT_SELECT) RefreshFilter(nCurrentFilterGroupID); } void Widget::SearchReplaceInsert() { STable *pNew = new STable; STable *pCurrent = (STable *)m_ptwData->currentWidget(); pNew->setArticleSelect(pCurrent->getArticleSelect()); pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); m_pProgress->setRange(0,pCurrent->rowCount()-1); int nCatalog = m_pcbReplaceCatalog->currentIndex(); QStringList strListKeyword; if (m_pcbReplaceFind->currentData().toInt() == E_REPLACE_SPACE) strListKeyword = m_pleReplaceFind->text().split(" "); else strListKeyword.push_back(m_pleReplaceFind->text()); int nCurrentFilterGroupID = D_NOT_SELECT; int nReplace = m_pcbReplace->currentIndex(); if (m_pgbFilter->isChecked()) { foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseReplaceFilter(pNew->getArticleSelect(),nCatalog, m_pcbReplaceFind->currentData().toInt(), m_pleReplaceFind->text(),m_pleReplace->text(), nCurrentFilterGroupID,E_DATABASE_COMMAND_INSERT); } } pNew->setRowCount(pCurrent->rowCount()); for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { for (int nColumnCount = 0;nColumnCount < pCurrent->columnCount() ;nColumnCount++ ) { if (nCatalog == nColumnCount) { QString strOut = pCurrent->item(nCount,nColumnCount)->text(); switch(nReplace) { case 0: { foreach(QString str,strListKeyword) strOut = strOut.replace(str,m_pleReplace->text()); break; } case 1: { QString strMiddle; foreach(QString strLine,strOut.split("\n")) { foreach(QString strWord,strLine.split(" ")) { bool bFlag = false; foreach(QString str,strListKeyword) { if (strWord == str) { strMiddle += m_pleReplace->text() + " "; bFlag = true; break; } } if (bFlag == false) strMiddle += strWord + " "; } strMiddle += "\n"; } strOut = strMiddle; break; } case 2: QString strMiddle; foreach(QString strLine,strOut.split("\n")) { foreach(QString strWord,strLine.split(" ")) { bool bFlag = false; foreach(QString str,strListKeyword) { if (strWord.contains(str)) { strMiddle += m_pleReplace->text() + " "; bFlag = true; break; } } if (bFlag == false) strMiddle += strWord + " "; } strMiddle += "\n"; } strOut = strMiddle; break; } pNew->setItem(nCount,nColumnCount,new QTableWidgetItem(strOut)); } else pNew->setItem(nCount,nColumnCount,new QTableWidgetItem(*pCurrent->item(nCount,nColumnCount))); } m_pProgress->setValue(nCount); m_pProgress->repaint(); } //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" r"); m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); m_ptwData->setCurrentIndex(m_ptwData->count()-1); if (nCurrentFilterGroupID != D_NOT_SELECT) RefreshFilter(nCurrentFilterGroupID); } void Widget::SearchDateUpdate() { if (m_pgbFilter->isChecked()) { int nCurrentFilterGroupID = D_NOT_SELECT; foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); if (nCurrentFilterGroupID == D_NOT_SELECT) return; foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) DataBaseTimeFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); RefreshFilter(nCurrentFilterGroupID); } } void Widget::SearchKeywordUpdate() { if (m_pgbFilter->isChecked()) { int nCurrentFilterGroupID = D_NOT_SELECT; foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); if (nCurrentFilterGroupID == D_NOT_SELECT) return; 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; foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) DataBaseSearchFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); RefreshFilter(nCurrentFilterGroupID); } } void Widget::SearchLengthUpdate() { if (m_pgbFilter->isChecked()) { int nCurrentFilterGroupID = D_NOT_SELECT; foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); if (nCurrentFilterGroupID == D_NOT_SELECT) return; int nCatalog = m_pcbLengthCatalog->currentIndex(); int nComp = m_pcbLengthComp->currentData().toInt(); int nFlag = m_pcbLengthInsDel->currentData().toInt(); foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) DataBaseLengthFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); RefreshFilter(nCurrentFilterGroupID); } } void Widget::SearchReplaceUpdate() { if (m_pgbFilter->isChecked()) { int nCurrentFilterGroupID = D_NOT_SELECT; foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); if (nCurrentFilterGroupID == D_NOT_SELECT) return; int nCatalog = m_pcbReplaceCatalog->currentIndex(); QStringList strListKeyword; if (m_pcbReplaceFind->currentData().toInt() == E_REPLACE_SPACE) strListKeyword = m_pleReplaceFind->text().split(" "); else strListKeyword.push_back(m_pleReplaceFind->text()); foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) DataBaseReplaceFilter(((STable *)m_ptwData->currentWidget())->getArticleSelect(),nCatalog, m_pcbReplaceFind->currentData().toInt(), m_pleReplaceFind->text(),m_pleReplace->text(), nCurrentFilterGroupID,E_DATABASE_COMMAND_UPDATE,item->data(Qt::UserRole).toString()); RefreshFilter(nCurrentFilterGroupID); } } void Widget::DataGroupItemChanged( QListWidgetItem *item) { QMessageBox msg; msg.setText("Please choose..."); msg.setModal(true); QPushButton *pbAll = msg.addButton("All",QMessageBox::ActionRole); QPushButton *pbBody = msg.addButton("Body",QMessageBox::ActionRole); QPushButton *pbReply = msg.addButton("Reply",QMessageBox::ActionRole); msg.exec(); if (msg.clickedButton() == pbAll) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_ALL); else if (msg.clickedButton() == pbBody) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_BODY); else if (msg.clickedButton() == pbReply) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_REPLY); } void Widget::DataReload(QString _strTableName,int _nSelect) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString strSelect; strSelect = "select "; foreach(QStringList strlist,m_vecColumn) strSelect += "CONVERT(" + strlist.at(E_COLUMN_DATABASE) + " USING utf8),"; strSelect = strSelect.left(strSelect.size()-1); strSelect += " from "; strSelect += _strTableName; if (_nSelect == STable::E_ARTICLE_BODY) strSelect += " WHERE article_form = 'body'"; if (_nSelect == STable::E_ARTICLE_REPLY) strSelect += " WHERE article_form = 'reply'"; QSqlQuery query(strSelect); STable *pTable = (STable *)m_ptwData->currentWidget(); pTable->setArticleSelect(_nSelect); pTable->clear(); pTable->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); pTable->setRowCount(query.size()); m_pProgress->setRange(0,query.size()); int nCount = 0; while (query.next()) { for (int i = 0; i < pTable->columnCount() ; i++) { QString str = query.value(i).toString().replace("\n"," "); pTable->setItem(nCount,i,new QTableWidgetItem(" "+str.replace("\t"," ")+" ")); } nCount++; m_pProgress->setValue(nCount); m_pProgress->repaint(); } db.close(); } void Widget::FilterGroupInsert() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString strQuery = QString("insert into filtergroup set " "name = '" + m_pleFilterGroup->text() + "'"); db.exec(strQuery.toUtf8()); db.close(); FilterGroupRefresh(); } void Widget::FilterGroupDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { QString strQuery = QString("delete from filtergroup where id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); strQuery = QString("delete from filter where filtergroup_id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); RefreshFilter(item->data(Qt::UserRole).toInt()); } db.close(); FilterGroupRefresh(); } void Widget::FilterGroupModify() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { QString strQuery = QString("update filtergroup set name = '" + m_pleFilterGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); qDebug() << strQuery; db.exec(strQuery.toUtf8()); } db.close(); FilterGroupRefresh(); } void Widget::FilterGroupCopyPaste() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) { QSqlQuery query; QString strQuery = QString("insert into filtergroup set " "name = '" + item->text() + "-'"); query.exec(strQuery.toUtf8()); query.exec("select max(id) from filtergroup"); if (query.next()) { strQuery = QString("insert into filter (type,data,filtergroup_id) select type,data,"); strQuery += query.value(0).toString(); strQuery += " from filter where filtergroup_id = " + item->data(Qt::UserRole).toString(); qDebug() << strQuery; query.exec(strQuery.toUtf8()); } } db.close(); FilterGroupRefresh(); } void Widget::FilterGroupRefresh() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } m_plwFilterGroup->clear(); QSqlQuery query("select id,name from filtergroup"); while (query.next()) { QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),m_plwFilterGroup); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } void Widget::DataBaseFilter(int _nType,QString _strJson,int _nGroup,int _nCommand,QString _strFilterId) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString sql; switch(_nCommand) { case E_DATABASE_COMMAND_INSERT: sql = "INSERT INTO filter SET "; sql += QString("type=") + QString::number(_nType) + ","; break; case E_DATABASE_COMMAND_UPDATE: sql = "UPDATE filter SET "; break; } sql += QString("data='") + _strJson + "',"; sql += QString("filtergroup_id=" ) + QString::number(_nGroup); if (_nCommand == E_DATABASE_COMMAND_UPDATE) sql += QString(" where id=") + _strFilterId; QSqlQuery query; if (query.exec(sql.toUtf8()) == false) { qDebug() << sql; qDebug() << query.lastError().text(); } db.close(); } void Widget::DataBaseTimeFilter(int _nArticle ,QDate _dateStart ,QDate _dateEnd ,int _nGroup,int _nCommand,QString _strFilterId ) { QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Start",_dateStart.toString("yyyy-MM-dd")); strJson = json.Set(strJson,"End",_dateEnd.toString("yyyy-MM-dd")); DataBaseFilter(E_FILTER_TYPE_DATE,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::DataBaseSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Category",_nCategory); strJson = json.Set(strJson,"Method",_nMethod); strJson = json.Set(strJson,"Keyword",_nKeyword); strJson = json.Set(strJson,"String",_str); DataBaseFilter(E_FILTER_TYPE_SEARCH,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::DataBaseLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Category",_nCategory); strJson = json.Set(strJson,"Comp",_nComp); strJson = json.Set(strJson,"InsDel",_nInsDel); strJson = json.Set(strJson,"String",_str); DataBaseFilter(E_FILTER_TYPE_LENGTH,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::DataBaseCounterFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Category",_nCategory); strJson = json.Set(strJson,"Comp",_nComp); strJson = json.Set(strJson,"InsDel",_nInsDel); strJson = json.Set(strJson,"String",_str); DataBaseFilter(E_FILTER_TYPE_COUNTER,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::DataBaseReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup,int _nCommand,QString _strFilterId) { QString strJson; SJson json; strJson = json.Set(strJson,"Article",QString::number(_nArticle)); strJson = json.Set(strJson,"Category",_nCategory); strJson = json.Set(strJson,"Find",_nFind); strJson = json.Set(strJson,"String_Find",_strFind); strJson = json.Set(strJson,"String_Replace",_strReplace); DataBaseFilter(E_FILTER_TYPE_REPLACE,json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void Widget::RefreshFilter(int _nGroup) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QSqlQuery query("select id,type,data from filter where filtergroup_id = " + QString::number(_nGroup)); SJson json; m_plwFilter->clear(); while (query.next()) { QString str; QString strJson = query.value(2).toString(); str = STable::GetArticleType(json.Get(strJson,"Article").toInt()); switch(query.value(1).toInt()) { 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.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; } QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilter); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } void Widget::currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) { Q_UNUSED(_pPrev); if (_pCurrent == 0) return; RefreshFilter(_pCurrent->data(Qt::UserRole).toInt()); m_pleFilterGroup->setText(_pCurrent->text()); m_pleFilterGroup->repaint(); } void Widget::FilterDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) { QString strQuery = QString("delete from filter where id = '" + item->data(Qt::UserRole).toString() + "'"); db.exec(strQuery.toUtf8()); } db.close(); foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) RefreshFilter(item->data(Qt::UserRole).toInt()); } void Widget::currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) { Q_UNUSED(_pPrev); if (_pCurrent == 0) return; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QSqlQuery query("select id,type,data from filter where id = " + _pCurrent->data(Qt::UserRole).toString()); if (!query.next()) return; SJson json; QString strJson = query.value(2).toString(); switch(query.value(1).toInt()) { 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")); m_pleString->setText(""); m_pleLength->setText(""); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); 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_pleLength->setText(""); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); 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")); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); m_pleString->setText(""); 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")); m_pleString->setText(""); m_pleLength->setText(""); 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")); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); m_pleString->setText(""); break; } } bool Widget::ReloadColumn() { m_vecColumn.clear(); qDebug() << "file open ready"; QFile file("column.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text) == false) return false; { qDebug() << "file open starting"; while (!file.atEnd()) { QString str = QString(file.readLine()); if (str.at(0) == QChar('#')) continue; if (str.trimmed().isEmpty()) continue; m_vecColumn.push_back(str.split(",")); } } if (m_vecColumn.size() <= 0) return false; m_nColumn = -1; m_nTitle = -1; m_nBody = -1; m_nPlatformTitle = -1; foreach(QStringList strList,m_vecColumn) { if (strList.at(E_COLUMN_DATE).trimmed() == QString("o") ) break; else m_nColumn++; } m_nColumn++; foreach(QStringList strList,m_vecColumn) { if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("article_title") ) break; else m_nTitle++; } m_nTitle++; foreach(QStringList strList,m_vecColumn) { if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("article_data") ) break; else m_nBody++; } m_nBody++; foreach(QStringList strList,m_vecColumn) { if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("platform_title") ) break; else m_nPlatformTitle++; } m_nPlatformTitle++; return true; } void Widget::FileImport() { QString strFilename = QFileDialog::getOpenFileName(0,"Import file",QDir::currentPath(), "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); QFile file(strFilename); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; STable *pNew = new STable; QTextCodec *codec = QTextCodec::codecForName("eucKR"); QTextStream in(&file); int ncRow=0; int nCount=0; bool bQuit = true; int nRead = 0; int nFileLine = 0; QVector wgHeader; QStringList strlistHeader; for(int i = 0; i < m_vecColumn.size(); i++) { strlistHeader << m_vecColumn.at(i).at(E_COLUMN_NAME); } while(!in.atEnd()) { in.readLine(); nFileLine++; } in.seek(0); while(!in.atEnd()) { QString strLine = in.readLine(); if (nCount == 0) { QStringList strings = strLine.split(","); if (strings.at(0) == QString("#Head#")) { m_pProgress->setRange(0,nFileLine - 1); pNew->setRowCount(nFileLine - 1); pNew->setColumnCount(m_vecColumn.size()); for (int i = 1; i < strings.size();i++) { for (int j = 0; j < m_vecColumn.size(); j++) { if (strlistHeader.contains(strings.at(i))) { if (m_vecColumn.at(j).at(E_COLUMN_NAME) == strings.at(i).trimmed()) { wgHeader << j; } } else wgHeader << -1; } } nCount++; qDebug() << m_vecColumn.size(); for(int i = 0; i < m_vecColumn.size(); i++) { qDebug() << i; pNew->setHorizontalHeaderItem(i ,new QTableWidgetItem(m_vecColumn.at(wgHeader.at(i)).at(E_COLUMN_NAME))); } continue; } else { pNew->setColumnCount(strings.size()); m_pProgress->setRange(0,nFileLine); pNew->setRowCount(nFileLine); } } strLine = strLine.replace("\"",""); QStringList strings = strLine.split(","); int ncCol=0; //pNew->setRowCount(strings.size()); foreach(QString str,strings) { if(wgHeader.at(ncCol) != -1) pNew->setItem(ncRow,wgHeader.at(ncCol),new QTableWidgetItem(QString(" " + str.trimmed() + " "))); ncCol++; } ncRow++; m_pProgress->setValue(ncRow+1); m_pProgress->repaint(); //qDebug() << ncRow; } file.close(); m_ptwData->addTab(pNew,"import"); m_ptwData->setCurrentIndex(m_ptwData->count()-1); } void Widget::FileExport() { QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); if (strFilename.toLower().right(4) != QString(".csv")) strFilename += ".csv"; QFile file(strFilename); if(!file.open(QFile::WriteOnly | QFile::Text)) return; QTextStream out(&file); QTableWidget *pCurrent = (QTableWidget *)m_ptwData->currentWidget(); out << "#Head#,"; foreach(QStringList strList,m_vecColumn) out << strList.at(E_COLUMN_NAME) << ","; out << endl; m_pProgress->setRange(0,pCurrent->rowCount()-1); for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { for (int nColumnCount = 0;nColumnCount < pCurrent->columnCount() ;nColumnCount++ ) { QString str = pCurrent->item(nCount,nColumnCount)->text(); str = str.replace(",","."); str = str.replace("\n",""); out << "\"" << str << "\"" << ","; } out << "\"\"" << endl; m_pProgress->setValue(nCount); m_pProgress->repaint(); } file.close(); } void Widget::FileExit() { exit(1); } void Widget::CountSave() { QTableWidget *pCurrent = (QTableWidget *)m_ptwData->currentWidget(); int nCatalog = m_pcbCountCatalog->currentIndex(); QString strFilename = QFileDialog::getSaveFileName(0,"Count file",QDir::currentPath(), "csv files (*.csv);;All files (*.*)",new QString("csv files (*.csv)")); if (strFilename.toLower().right(4) != QString(".csv")) strFilename += ".csv"; m_pProgress->setRange(0,pCurrent->rowCount()-1); QVector vecData; for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) { QString str; if (nCatalog == m_nColumn) { QDateTime date; str = date.fromString(pCurrent->item(nCount,nCatalog)->text().trimmed(),"yyyy-MM-dd hh:mm:ss").date().toString("yyyy-MM-dd"); } else str = pCurrent->item(nCount,nCatalog)->text().trimmed(); bool bInsert = true; for (int i = 0; i < vecData.size(); i++) { if(vecData[i].m_str.compare(str) == 0) { vecData[i].m_nCount++; bInsert = false; break; } } if (bInsert) vecData.push_back(SCount(str)); m_pProgress->setValue(nCount); m_pProgress->repaint(); } QFile file(strFilename); if(!file.open(QFile::WriteOnly | QFile::Text)) return; QTextStream out(&file); out << pCurrent->horizontalHeaderItem(nCatalog)->text() << "," << vecData.size() << endl << endl; foreach(SCount stCount,vecData) { QString str = stCount.m_str.replace(",","."); str = str.replace("\n",""); out << "\"" << str << "\"" << "," << stCount.m_nCount << endl; } file.close(); } void Widget::Debug(QString _strMsg) { /* QTime time = QTime::currentTime(); QString strOut = time.toString("[hh:mm:ss] ") + _strMsg; QFile file(QDate::currentDate().toString(Qt::ISODate)+ "_" + QString::number(QCoreApplication::applicationPid())+ ".debug.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) return; QTextStream out(&file); out << strOut << "\n"; file.close(); */ }