241 lines
8.2 KiB
C++
241 lines
8.2 KiB
C++
#include "xsteam_src_edit_ui.h"
|
|
|
|
xsteam_src_edit_ui::xsteam_src_edit_ui()
|
|
{
|
|
init_src_edit_ui();
|
|
load_src_data_view(_data.s_data);
|
|
}
|
|
|
|
xsteam_src_edit_ui::~xsteam_src_edit_ui()
|
|
{
|
|
}
|
|
void xsteam_src_edit_ui::init_table_view_style()
|
|
{
|
|
m_Table->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
m_Table->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
m_Table->setSortingEnabled(false);
|
|
m_Table->verticalHeader()->hide();
|
|
m_Table->setWordWrap(false);
|
|
m_Table->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
|
|
m_Table->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
|
|
m_Table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
|
m_Table->setShowGrid(false);
|
|
m_Table->setFrameShape(QFrame::NoFrame);
|
|
m_Table->horizontalHeader()->setStretchLastSection(true);
|
|
m_Table->setColumnWidth(0, m_Table->width() / 5);
|
|
}
|
|
|
|
void xsteam_src_edit_ui::init_src_edit_ui()
|
|
{
|
|
setWindowTitle(tr("XSteam源数据"));
|
|
src_group = new QGroupBox(tr("源信息表"));
|
|
src_group->setObjectName("SRC_GROUP");
|
|
|
|
gr_Layout = new QVBoxLayout();
|
|
main_Layout = new QVBoxLayout;
|
|
foot_Layout = new QHBoxLayout;
|
|
m_Table = new QTableView;
|
|
m_Model = new QStandardItemModel();
|
|
m_Model->setHorizontalHeaderLabels(ex_src_table_head_tips);
|
|
m_Table->setModel(m_Model);
|
|
m_Save_Data = new QPushButton(tr("保存"));
|
|
m_Update_Src_Data = new QPushButton(tr("更新"));
|
|
foot_Layout->addSpacerItem(sparcer_Item);
|
|
foot_Layout->addWidget(m_Save_Data);
|
|
foot_Layout->addWidget(m_Update_Src_Data);
|
|
foot_Layout->addSpacerItem(sparcer_Item);
|
|
gr_Layout->addWidget(m_Table);
|
|
gr_Layout->addLayout(foot_Layout);
|
|
gr_Layout->setStretch(0, 8);
|
|
gr_Layout->setStretch(1, 2);
|
|
gr_Layout->setContentsMargins(2, 2, 2, 2);
|
|
src_group->setLayout(gr_Layout);
|
|
main_Layout->addWidget(src_group);
|
|
setLayout(main_Layout);
|
|
init_table_view_style();
|
|
connect_slots();
|
|
}
|
|
void xsteam_src_edit_ui::connect_slots()
|
|
{
|
|
m_Table->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
connect(m_Table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slots_rightMenu(QPoint)));
|
|
connect(m_Save_Data, SIGNAL(clicked()), this, SLOT(slots_save_done()));
|
|
connect(m_Update_Src_Data, SIGNAL(clicked()), this, SLOT(slots_update_src_data()));
|
|
}
|
|
void xsteam_src_edit_ui::load_src_data_view(std::vector<SrcData> src_data)
|
|
{
|
|
// 把数据加载到tableView
|
|
m_Model->clear();
|
|
m_Model->setHorizontalHeaderLabels(ex_src_table_head_tips);
|
|
int i = 0;
|
|
for (auto &k : src_data)
|
|
{
|
|
int x = i++;
|
|
m_Model->setItem(x, 0, new QStandardItem(QString::fromStdString(k.src_name)));
|
|
QComboBox *cmb = new QComboBox();
|
|
cmb->addItems(src_type);
|
|
if (k.src_type == GIT_MODE::TAG)
|
|
{
|
|
cmb->setCurrentIndex(1);
|
|
}
|
|
else
|
|
{
|
|
cmb->setCurrentIndex(0);
|
|
}
|
|
m_Table->setIndexWidget(m_Model->index(x, 1), cmb);
|
|
m_Model->setItem(x, 2, new QStandardItem(QString::fromStdString(k.src_url)));
|
|
}
|
|
m_Table->setModel(m_Model);
|
|
}
|
|
|
|
void xsteam_src_edit_ui::slots_rightMenu(const QPoint &pos)
|
|
{
|
|
QTableView *signalSrc = (QTableView *)sender(); // 获取到了发送该信号按钮的指针
|
|
QModelIndex index = signalSrc->indexAt(pos);
|
|
if (index.row() > -1)
|
|
{
|
|
// 创建菜单对象
|
|
QMenu *m_Menu = new QMenu(this);
|
|
QAction *pNewTask = new QAction(tr("新建源"), this);
|
|
QAction *pDeleteTask = new QAction(tr("删除源"), this);
|
|
pNewTask->setData(1);
|
|
pDeleteTask->setData(2);
|
|
pNewTask->setObjectName(signalSrc->objectName());
|
|
pDeleteTask->setObjectName(signalSrc->objectName());
|
|
// 把QAction对象添加到菜单上
|
|
m_Menu->addAction(pNewTask);
|
|
m_Menu->addAction(pDeleteTask);
|
|
// 连接鼠标右键点击信号
|
|
connect(pNewTask, SIGNAL(triggered()), this, SLOT(slots_on_task_event()));
|
|
connect(pDeleteTask, SIGNAL(triggered()), this, SLOT(slots_on_task_event()));
|
|
// 在鼠标右键点击的地方显示菜单
|
|
m_Menu->exec(QCursor::pos());
|
|
QList<QAction *> list = m_Menu->actions();
|
|
foreach (QAction *pAction, list)
|
|
delete pAction;
|
|
delete m_Menu;
|
|
}
|
|
}
|
|
void xsteam_src_edit_ui::slots_on_task_event()
|
|
{
|
|
QAction *pEven = qobject_cast<QAction *>(this->sender());
|
|
int iType = pEven->data().toInt();
|
|
switch (iType)
|
|
{
|
|
case 1:
|
|
object_add_src();
|
|
break;
|
|
case 2:
|
|
object_delete_src();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
void xsteam_src_edit_ui::object_add_src()
|
|
{
|
|
/*
|
|
m_Model->insertRow(m_Model->rowCount());
|
|
QComboBox *cmb = new QComboBox();
|
|
cmb->addItems(src_type);
|
|
m_Table->setIndexWidget(m_Model->index(4, 1), cmb);
|
|
*/
|
|
int index = m_Model->rowCount();
|
|
m_Model->setItem(index, 0, new QStandardItem(QString::fromStdString("")));
|
|
QComboBox *cmb = new QComboBox();
|
|
cmb->addItems(src_type);
|
|
m_Table->setIndexWidget(m_Model->index(index, 1), cmb);
|
|
m_Model->setItem(index, 2, new QStandardItem(QString::fromStdString("")));
|
|
}
|
|
void xsteam_src_edit_ui::object_delete_src()
|
|
{
|
|
int curRow = m_Table->currentIndex().row();
|
|
int curRows = m_Table->model()->rowCount();
|
|
qInfo() << curRows - 1;
|
|
if (curRows - 1 <= 0)
|
|
{
|
|
xsteam_msg_error(this, "不能删除唯一源");
|
|
return;
|
|
}
|
|
if (curRow > -1)
|
|
{
|
|
QAbstractItemModel *modessl = m_Table->model();
|
|
QModelIndex indextemp = modessl->index(curRow, 0);
|
|
QString _name = modessl->data(indextemp).value<QString>();
|
|
if (_name == "")
|
|
{
|
|
modessl->removeRow(curRow);
|
|
}
|
|
else
|
|
{
|
|
for (auto it = _data.s_data.begin(); it != _data.s_data.end();)
|
|
{
|
|
if (it->src_name == _name.toStdString())
|
|
{
|
|
_data.s_data.erase(it);
|
|
modessl->removeRow(curRow);
|
|
m_Table->setModel(modessl);
|
|
}
|
|
else
|
|
{
|
|
++it;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void xsteam_src_edit_ui::slots_save_done()
|
|
{
|
|
int curRow = m_Table->model()->rowCount();
|
|
_data.s_data.clear();
|
|
if (curRow > -1)
|
|
{
|
|
QAbstractItemModel *modessl = m_Table->model();
|
|
for (int i = 0; i <= curRow - 1; i++)
|
|
{
|
|
SrcData _src_data = {};
|
|
QString src_name = modessl->data(modessl->index(i, 0)).value<QString>();
|
|
QComboBox *cmb = (QComboBox *)m_Table->indexWidget(modessl->index(i, 1));
|
|
QString src_url = modessl->data(modessl->index(i, 2)).value<QString>();
|
|
if(src_name==""){
|
|
xsteam_msg_tip(nullptr,"第"+QString::number(curRow)+"行源名字不允许为空!");
|
|
return;
|
|
}
|
|
if(src_url==""){
|
|
xsteam_msg_tip(nullptr,"第"+QString::number(curRow)+"行源地址不允许为空!");
|
|
return;
|
|
}
|
|
_src_data.src_name = src_name.toStdString();
|
|
if (cmb->currentIndex() == GIT_MODE::TAG)
|
|
{
|
|
_src_data.src_type = GIT_MODE::TAG;
|
|
}
|
|
else
|
|
{
|
|
_src_data.src_type = GIT_MODE::BRANCH;
|
|
}
|
|
_src_data.src_url = src_url.toStdString();
|
|
_data.s_data.push_back(_src_data);
|
|
}
|
|
}
|
|
load_src_data_view(_data.s_data);
|
|
xsteam_save_data_write();
|
|
emit signals_update();
|
|
}
|
|
void xsteam_src_edit_ui::slots_update_src_data()
|
|
{
|
|
// true-->update all
|
|
// false-->update selected
|
|
if (xsteam_msg_select(nullptr, tr("是否更新所有数据源数据到本地?")))
|
|
{
|
|
xsteam_git *_xs_git = new xsteam_git(); // 457140
|
|
for (auto x : _data.s_data)
|
|
{
|
|
_xs_git->branch_or_tags_set_opts("", x.src_name);
|
|
_xs_git->branch_or_tags_remote_array();
|
|
}
|
|
delete _xs_git;
|
|
_xs_git = nullptr;
|
|
}
|
|
} |