git-svn-id: svn://192.168.0.12/source@179 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
229
Analyzer/sfilterdlg.cpp
Normal file
229
Analyzer/sfilterdlg.cpp
Normal file
@@ -0,0 +1,229 @@
|
||||
#include "sfilterdlg.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QPushButton>
|
||||
#include <QSqlQuery>
|
||||
|
||||
#include "./../common.h"
|
||||
|
||||
SFilterDlg::SFilterDlg()
|
||||
{
|
||||
setWindowTitle("Filter");
|
||||
setWidgets();
|
||||
}
|
||||
|
||||
SFilterDlg::~SFilterDlg()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SFilterDlg::setWidgets()
|
||||
{
|
||||
QHBoxLayout *hMainlayout = new QHBoxLayout();
|
||||
{
|
||||
QVBoxLayout *vlayout = new QVBoxLayout();
|
||||
m_plwFilterGroup = new QListWidget;
|
||||
m_pleFilterGroup = new QLineEdit;
|
||||
vlayout->addWidget(m_plwFilterGroup);
|
||||
vlayout->addWidget(m_pleFilterGroup);
|
||||
connect(m_plwFilterGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(GroupItemChanged(QListWidgetItem *, QListWidgetItem *)));
|
||||
{
|
||||
QHBoxLayout *hlayout = new QHBoxLayout();
|
||||
QPushButton *pbInsert = new QPushButton("Insert");
|
||||
connect(pbInsert, SIGNAL(released()),this, SLOT(Group_Insert()));
|
||||
QPushButton *pbDelete = new QPushButton("Delete");
|
||||
connect(pbDelete, SIGNAL(released()),this, SLOT(Group_Delete()));
|
||||
QPushButton *pbModify = new QPushButton("Modfiy");
|
||||
connect(pbModify, SIGNAL(released()),this, SLOT(Group_Modify()));
|
||||
QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste");
|
||||
connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(Group_CopyPaste()));
|
||||
QPushButton *pbRefresh = new QPushButton("Refresh");
|
||||
connect(pbRefresh, SIGNAL(released()),this, SLOT(Group_Refresh()));
|
||||
|
||||
hlayout->addWidget(pbInsert);
|
||||
hlayout->addWidget(pbDelete);
|
||||
hlayout->addWidget(pbModify);
|
||||
hlayout->addWidget(pbCopy_Paste);
|
||||
hlayout->addWidget(pbRefresh);
|
||||
vlayout->addLayout(hlayout);
|
||||
}
|
||||
hMainlayout->addLayout(vlayout,1);
|
||||
}
|
||||
{
|
||||
QVBoxLayout *vlayout = new QVBoxLayout();
|
||||
m_plwFilter = new QListWidget;
|
||||
vlayout->addWidget(m_plwFilter);
|
||||
connect(m_plwFilter,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(ItemChanged(QListWidgetItem*,QListWidgetItem*)));
|
||||
QHBoxLayout *hlayout = new QHBoxLayout();
|
||||
QPushButton *pbUp = new QPushButton("Up");
|
||||
QPushButton *pbDown = new QPushButton("Down");
|
||||
QPushButton *pbDelete = new QPushButton("Delete");
|
||||
hlayout->addWidget(pbUp);
|
||||
hlayout->addWidget(pbDown);
|
||||
hlayout->addWidget(pbDelete);
|
||||
vlayout->addLayout(hlayout);
|
||||
connect(pbUp, SIGNAL(released()),this, SLOT(Up()));
|
||||
connect(pbDown, SIGNAL(released()),this, SLOT(Down()));
|
||||
connect(pbDelete, SIGNAL(released()),this, SLOT(Delete()));
|
||||
hMainlayout->addLayout(vlayout,3);
|
||||
}
|
||||
setLayout(hMainlayout);
|
||||
}
|
||||
|
||||
void SFilterDlg::Group_Insert()
|
||||
{
|
||||
QSqlQuery query;
|
||||
QString strQuery = QString("insert into filtergroup set "
|
||||
"name = '" + m_pleFilterGroup->text() + "'");
|
||||
query.exec(strQuery.toUtf8());
|
||||
Group_Refresh();
|
||||
}
|
||||
|
||||
void SFilterDlg::Group_Delete()
|
||||
{
|
||||
QSqlQuery query;
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
{
|
||||
QString strQuery = QString("delete from filtergroup where id = " + item->data(Qt::UserRole).toString());
|
||||
query.exec(strQuery.toUtf8());
|
||||
strQuery = QString("delete from filter where filtergroup_id = " + item->data(Qt::UserRole).toString());
|
||||
query.exec(strQuery.toUtf8());
|
||||
RefreshFilter(item->data(Qt::UserRole).toInt());
|
||||
}
|
||||
Group_Refresh();
|
||||
}
|
||||
|
||||
void SFilterDlg::Group_Modify()
|
||||
{
|
||||
QSqlQuery query;
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
{
|
||||
QString strQuery = QString("update filtergroup set name = '" + m_pleFilterGroup->text() + "' where id = " + item->data(Qt::UserRole).toString());
|
||||
query.exec(strQuery.toUtf8());
|
||||
}
|
||||
Group_Refresh();
|
||||
}
|
||||
|
||||
void SFilterDlg::Group_CopyPaste()
|
||||
{
|
||||
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();
|
||||
query.exec(strQuery.toUtf8());
|
||||
}
|
||||
}
|
||||
Group_Refresh();
|
||||
}
|
||||
|
||||
void SFilterDlg::Group_Refresh()
|
||||
{
|
||||
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)));
|
||||
}
|
||||
}
|
||||
|
||||
void SFilterDlg::RefreshFilter(int _nGroup)
|
||||
{
|
||||
if (_nGroup == D_NOT_SELECT) return;
|
||||
QSqlQuery query("select id,type,data from filter where filtergroup_id = " + QString::number(_nGroup));
|
||||
m_plwFilter->clear();
|
||||
while (query.next())
|
||||
{
|
||||
QString str = GetMainWindow()->m_pFilterObjectDlg->JsonToString(query.value(1).toInt(),query.value(2).toString());
|
||||
QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilter);
|
||||
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SFilterDlg::GroupItemChanged(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 SFilterDlg::ItemChanged(QListWidgetItem*_pCurrent, QListWidgetItem *_pPrev)
|
||||
{
|
||||
Q_UNUSED(_pPrev);
|
||||
if (_pCurrent == 0) return;
|
||||
QSqlQuery query("select id,type,data from filter where id = " + _pCurrent->data(Qt::UserRole).toString());
|
||||
if (!query.next()) return;
|
||||
GetMainWindow()->m_pFilterObjectDlg->JsonToWidget(query.value(1).toInt(),query.value(2).toString());
|
||||
}
|
||||
|
||||
|
||||
void SFilterDlg::Up()
|
||||
{
|
||||
int nSelect = m_plwFilter->currentRow();
|
||||
if (nSelect <= 0) return;
|
||||
QString strID1 = m_plwFilter->item(nSelect)->data(Qt::UserRole).toString();
|
||||
QString strID2 = m_plwFilter->item(nSelect-1)->data(Qt::UserRole).toString();
|
||||
QString strQuery = "UPDATE filter t1 INNER JOIN filter t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.filtergroup_id = t2.filtergroup_id,t1.data = t2.data";
|
||||
QSqlQuery query;
|
||||
query.exec(strQuery.toUtf8());
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
RefreshFilter(item->data(Qt::UserRole).toInt());
|
||||
m_plwFilter->setCurrentRow(nSelect-1);
|
||||
}
|
||||
|
||||
void SFilterDlg::Down()
|
||||
{
|
||||
int nSelect = m_plwFilter->currentRow();
|
||||
if (nSelect < 0) return;
|
||||
if (nSelect >= (m_plwFilter->count() - 1)) return;
|
||||
QString strID1 = m_plwFilter->item(nSelect)->data(Qt::UserRole).toString();
|
||||
QString strID2 = m_plwFilter->item(nSelect+1)->data(Qt::UserRole).toString();
|
||||
QString strQuery = "UPDATE filter t1 INNER JOIN filter t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.filtergroup_id = t2.filtergroup_id,t1.data = t2.data";
|
||||
QSqlQuery query;
|
||||
query.exec(strQuery.toUtf8());
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
RefreshFilter(item->data(Qt::UserRole).toInt());
|
||||
m_plwFilter->setCurrentRow(nSelect+1);
|
||||
}
|
||||
|
||||
void SFilterDlg::Delete()
|
||||
{
|
||||
QSqlQuery query;
|
||||
foreach (QListWidgetItem *item,m_plwFilter->selectedItems())
|
||||
{
|
||||
QString strQuery = QString("delete from filter where id = '" + item->data(Qt::UserRole).toString() + "'");
|
||||
query.exec(strQuery.toUtf8());
|
||||
}
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
RefreshFilter(item->data(Qt::UserRole).toInt());
|
||||
}
|
||||
|
||||
int SFilterDlg::GetSelectGroupID()
|
||||
{
|
||||
int nCurrentFilterGroupID = D_NOT_SELECT;
|
||||
foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems())
|
||||
nCurrentFilterGroupID = item->data(Qt::UserRole).toInt();
|
||||
return nCurrentFilterGroupID;
|
||||
}
|
||||
|
||||
int SFilterDlg::GetSelectFilterID()
|
||||
{
|
||||
int nCurrentFilterID = D_NOT_SELECT;
|
||||
foreach (QListWidgetItem *item,m_plwFilter->selectedItems())
|
||||
nCurrentFilterID = item->data(Qt::UserRole).toInt();
|
||||
return nCurrentFilterID;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user