SVG5/dialogsettingtable.cpp
2025-10-12 13:55:56 +09:00

440 lines
12 KiB
C++

#include "dialogsettingtable.h"
#include "ui_dialogsettingtable.h"
#include "mainwindow.h"
DialogSettingTable::DialogSettingTable(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogSettingTable)
{
//setAttribute(Qt::WA_TranslucentBackground);
//setWindowFlags(Qt::CustomizeWindowHint);
//setWindowFlags(Qt::FramelessWindowHint);
//setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog | Qt::Popup);
setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
ui->setupUi(this);
CommonData* pCommonData = MainWindow::GetCommonData();
{
ui->listWidget_choose->SetActivate(false);
ui->verticalScrollBar_Choose->setRange(0, 299);
ui->verticalScrollBar_Choose->SetSlideType(SSlideBar::SLIDE_VERTICAL);
connect(ui->verticalScrollBar_Choose, SIGNAL(valueChanged(int)), ui->listWidget_choose, SLOT(valueChangedScrollBarHorizontal(int)));
QScrollBar* pScrollBarChoose = ui->listWidget_choose->verticalScrollBar();
connect(pScrollBarChoose, SIGNAL(valueChanged(int)), this, SLOT(ScrollChangeChoose(int)));
}
{
ui->listWidget_Selection->SetActivate(true);
ui->verticalScrollBar_Selection->setRange(0, 299);
ui->verticalScrollBar_Selection->SetSlideType(SSlideBar::SLIDE_VERTICAL);
connect(ui->verticalScrollBar_Selection, SIGNAL(valueChanged(int)), ui->listWidget_Selection, SLOT(valueChangedScrollBarHorizontal(int)));
QScrollBar* pScrollBarChoose = ui->listWidget_Selection->verticalScrollBar();
connect(pScrollBarChoose, SIGNAL(valueChanged(int)), this, SLOT(ScrollChangeSelection(int)));
}
int nDisplayType = pCommonData->GetDisplayType();
if(nDisplayType==SDISPLAY_1280X1024)
{
int nGabX = (1280-1000)/2;
int nGabY = (1024-600)/2;
setGeometry(nGabX, nGabY, 1000, 600);
ui->frame_choose->setGeometry(30, 52, 380, 520);
ui->label_choose->setGeometry(0, 0, 380, 50);
ui->listWidget_choose->setGeometry(20, 60, 380-60, 520-80);
ui->frame_verticalScrollBar_Choose->setGeometry(380-30, 50, 25, 520-60);
ui->verticalScrollBar_Choose->setGeometry(0, 0, 25, 520-60);
ui->pushButton_Active->setGeometry(430, 220, 60, 31);
ui->pushButton_Inactive->setGeometry(430, 320, 60, 31);
ui->frame_selection->setGeometry(520, 52, 380, 520);
ui->label_selection->setGeometry(0, 0, 380, 50);
ui->listWidget_Selection->setGeometry(20, 60, 380-60, 520-80);
ui->frame_verticalScrollBar_Selection->setGeometry(380-30, 50, 25, 520-60);
ui->verticalScrollBar_Selection->setGeometry(0, 0, 25, 520-60);
ui->pushButton_Up->setGeometry(920, 60, 60, 36);
ui->pushButton_Down->setGeometry(920, 100, 60, 36);
ui->pushButton_Save->setGeometry(920, 540, 60, 36);
}
else if(nDisplayType==SDISPLAY_1920X1080)
{
setGeometry(0, 0, 1583, 818);
ui->frame_choose->setGeometry(52, 52, 616, 724);
ui->label_choose->setGeometry(0, 0, 616, 50);
ui->listWidget_choose->setGeometry(50, 60, 501, 651);
ui->frame_verticalScrollBar_Choose->setGeometry(570, 20, 25, 671);
ui->verticalScrollBar_Choose->setGeometry(0, 0, 25, 671);
ui->pushButton_Active->setGeometry(700, 290, 89, 51);
ui->pushButton_Inactive->setGeometry(700, 390, 89, 51);
ui->frame_selection->setGeometry(814, 52, 616, 724);
ui->label_selection->setGeometry(0, 0, 616, 50);
ui->listWidget_Selection->setGeometry(50, 60, 501, 651);
ui->frame_verticalScrollBar_Selection->setGeometry(570, 20, 25, 671);
ui->verticalScrollBar_Selection->setGeometry(0, 0, 25, 671);
ui->pushButton_Up->setGeometry(1470, 60, 89, 51);
ui->pushButton_Down->setGeometry(1470, 120, 89, 51);
ui->pushButton_Save->setGeometry(1470, 720, 89, 51);
}
}
DialogSettingTable::~DialogSettingTable()
{
delete ui;
}
void DialogSettingTable::SetListType(int nType)
{
m_nListType = nType;
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = NULL;
if(m_nListType==SWIDGET_WORKLIST)
{
pTableHeader = pCommonData->GetWorklistTableHeader();
m_TableHeader.CopyWorklistFrom(pTableHeader);
}
else if(m_nListType==SWIDGET_HISTORY)
{
pTableHeader = pCommonData->GetHistoryTableHeader();
m_TableHeader.CopyHistoryFrom(pTableHeader);
}
ui->listWidget_choose->SetListType(nType);
ui->listWidget_Selection->SetListType(nType);
ui->listWidget_choose->SetData(&m_TableHeader);
ui->listWidget_Selection->SetData(&m_TableHeader);
CheckVerticalScrollBar();
}
void DialogSettingTable::CheckVerticalScrollBar()
{
int nMaxShowItem = 8;
int nDisplayType = MainWindow::GetCommonData()->GetDisplayType();
if(nDisplayType==SDISPLAY_1280X1024)
{
nMaxShowItem = 11;
}
if(ui->listWidget_choose->count() > nMaxShowItem)
{
ui->verticalScrollBar_Choose->show();
}
else
{
ui->verticalScrollBar_Choose->hide();
}
if(ui->listWidget_Selection->count() > nMaxShowItem)
{
ui->verticalScrollBar_Selection->show();
}
else
{
ui->verticalScrollBar_Selection->hide();
}
}
void DialogSettingTable::on_pushButton_Save_clicked()
{
MainWindow* pMainWindow = MainWindow::GetMainWindow();
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = NULL;
if(m_nListType==SWIDGET_WORKLIST)
{
pTableHeader = pCommonData->GetWorklistTableHeader();
pTableHeader->CopyWorklistFrom(&m_TableHeader);
pCommonData->UpdateWorklistIndex();
}
else if(m_nListType==SWIDGET_HISTORY)
{
pMainWindow->ClearHistoryView();
pTableHeader = pCommonData->GetHistoryTableHeader();
pTableHeader->CopyHistoryFrom(&m_TableHeader);
pCommonData->UpdateHistoryIndex();
}
done(QDialog::Accepted);
}
void DialogSettingTable::ScrollChangeChoose(int nValue)
{
QScrollBar* pScrollBar = ui->listWidget_choose->verticalScrollBar();
int nMax = pScrollBar->maximum();
float fRatio = (float)nValue / (float)nMax;
int nPos = fRatio * 299.0f + 0.5f;
if(nPos>299)
{
nPos = 299;
}
ui->verticalScrollBar_Choose->setValue(nPos);
}
void DialogSettingTable::ScrollChangeSelection(int nValue)
{
QScrollBar* pScrollBar = ui->listWidget_Selection->verticalScrollBar();
int nMax = pScrollBar->maximum();
float fRatio = (float)nValue / (float)nMax;
int nPos = fRatio * 299.0f + 0.5f;
if(nPos>299)
{
nPos = 299;
}
ui->verticalScrollBar_Selection->setValue(nPos);
}
void DialogSettingTable::on_pushButton_Active_clicked()
{
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = &m_TableHeader;
vector<TableHeader*> listMove;
vector<TableHeader*>* pListHeader = NULL;
{
pListHeader = pTableHeader->GetListInactive();
vector<TableHeader*>::iterator it;
for(it=pListHeader->begin() ; it!=pListHeader->end() ; )
{
TableHeader* pHeader = *it;
if(pHeader->m_bSelect==true)
{
listMove.push_back(pHeader);
pListHeader->erase(it);
}
else
{
++it;
}
}
if(listMove.size()>0)
{
ui->listWidget_choose->SetData(&m_TableHeader);
}
}
if(listMove.size()>0)
{
pListHeader = pTableHeader->GetListActive();
vector<TableHeader*>::iterator it;
for(it=listMove.begin() ; it!=listMove.end() ; ++it)
{
TableHeader* pHeader = *it;
pHeader->m_bSelect = false;
pListHeader->push_back(pHeader);
}
if(listMove.size()>0)
{
listMove.clear();
}
ui->listWidget_Selection->SetData(&m_TableHeader);
}
CheckVerticalScrollBar();
}
void DialogSettingTable::on_pushButton_Inactive_clicked()
{
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = &m_TableHeader;
vector<TableHeader*> listMove;
vector<TableHeader*>* pListHeader = NULL;
{
pListHeader = pTableHeader->GetListActive();
vector<TableHeader*>::iterator it;
for(it=pListHeader->begin() ; it!=pListHeader->end() ; )
{
TableHeader* pHeader = *it;
if(pHeader->m_bSelect==true)
{
listMove.push_back(pHeader);
pListHeader->erase(it);
}
else
{
++it;
}
}
if(listMove.size()>0)
{
ui->listWidget_Selection->SetData(&m_TableHeader);
}
}
if(listMove.size()>0)
{
pListHeader = pTableHeader->GetListInactive();
vector<TableHeader*>::iterator it;
for(it=listMove.begin() ; it!=listMove.end() ; ++it)
{
TableHeader* pHeader = *it;
pHeader->m_bSelect = false;
pListHeader->push_back(pHeader);
}
if(listMove.size()>0)
{
listMove.clear();
}
ui->listWidget_choose->SetData(&m_TableHeader);
}
CheckVerticalScrollBar();
}
void DialogSettingTable::on_pushButton_Up_clicked()
{
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = &m_TableHeader;
vector<TableHeader*> listMove;
vector<TableHeader*>* pListHeader = NULL;
{
pListHeader = pTableHeader->GetListActive();
int nCheckCount = 0;
int nSwapCount = 0;
int i=0;
for(i=0 ; i<pListHeader->size() ; i++)
{
TableHeader* pHeader = (*pListHeader)[i];
if(pHeader->m_bSelect==true)
{
nCheckCount++;
}
}
//for(i=0 ; i<nCheckCount ; i++)
{
vector<TableHeader*>::iterator it;
vector<TableHeader*>::iterator itNext;
int nIndex = 0;
for(it=pListHeader->begin() ; it!=pListHeader->end() ; ++it, nIndex++)
{
TableHeader* pHeader = *it;
if(pHeader->m_bSelect==true)
{
if(nIndex==0)
{
break;
}
itNext = it;
--itNext;
TableHeader* pHeaderNext = *itNext;
if(pHeaderNext!=NULL && itNext!=pListHeader->end())
{
TableHeader* pHeaderTmp = pHeaderNext;
*itNext = pHeader;
*it = pHeaderTmp;
nSwapCount++;
//break;
}
}
}
}
if(nSwapCount>0)
{
ui->listWidget_Selection->SetData(&m_TableHeader);
}
}
}
void DialogSettingTable::on_pushButton_Down_clicked()
{
CommonData* pCommonData = MainWindow::GetCommonData();
STableHeader* pTableHeader = &m_TableHeader;
vector<TableHeader*> listMove;
vector<TableHeader*>* pListHeader = NULL;
{
pListHeader = pTableHeader->GetListActive();
int nCheckCount = 0;
int nSwapCount = 0;
int i=0;
for(i=0 ; i<pListHeader->size() ; i++)
{
TableHeader* pHeader = (*pListHeader)[i];
if(pHeader->m_bSelect==true)
{
nCheckCount++;
}
}
//for(i=0 ; i<nCheckCount ; i++)
{
vector<TableHeader*>::reverse_iterator it;
vector<TableHeader*>::reverse_iterator itNext;
int nIndex = 0;
for(it=pListHeader->rbegin() ; it!=pListHeader->rend() ; ++it, nIndex++)
{
TableHeader* pHeader = *it;
if(pHeader->m_bSelect==true)
{
if(nIndex==0)
{
break;
}
itNext = it;
--itNext;
TableHeader* pHeaderNext = *itNext;
if(pHeaderNext!=NULL)
{
TableHeader* pHeaderTmp = pHeaderNext;
*itNext = pHeader;
*it = pHeaderTmp;
nSwapCount++;
//break;
}
}
}
}
if(nSwapCount>0)
{
ui->listWidget_Selection->SetData(&m_TableHeader);
}
}
}