mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/MI-38.git
synced 2026-01-24 01:25:38 +03:00
04.07.2022
This commit is contained in:
288
s1000d/Converter14/exportdialog.cpp
Normal file
288
s1000d/Converter14/exportdialog.cpp
Normal file
@@ -0,0 +1,288 @@
|
||||
#include "exportdialog.h"
|
||||
#include "ui_exportdialog.h"
|
||||
#include <QDebug>
|
||||
#include <QFileDialog>
|
||||
#include <QTimer>
|
||||
#include <QCloseEvent>
|
||||
#include <QMessageBox>
|
||||
|
||||
ExportDialog::ExportDialog(QWidget *parent, S1000D_Manager* _SM) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ExportDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->dlgTree->setFocus();
|
||||
SM = _SM;
|
||||
flagCanSetCheck = true;
|
||||
}
|
||||
|
||||
ExportDialog::~ExportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ExportDialog::on_btnCloseDlg_clicked()
|
||||
{
|
||||
this->close();
|
||||
}
|
||||
|
||||
void ExportDialog::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
QString packFNCheck = "";
|
||||
QStringList packFNList;
|
||||
foreach(S1000D_Manager::PackageStruct pack, SM->packages)
|
||||
if(packFNList.contains(pack.exportFileName))
|
||||
{packFNCheck = pack.exportFileName; break;}
|
||||
else
|
||||
packFNList.append(pack.exportFileName);
|
||||
if (packFNCheck == "") {
|
||||
SM->SavePackagesXML();
|
||||
event->accept();
|
||||
} else {
|
||||
QMessageBox::warning(this, tr("Ошибка"), tr("Дублирование имен файлов пакетов конфигурации.\n"),
|
||||
QMessageBox::Ok, QMessageBox::Ok);
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
void ExportDialog::on_btnExportS1000D_clicked()
|
||||
{
|
||||
Q_EMIT actionS1000Dexport();
|
||||
}
|
||||
|
||||
void ExportDialog::on_btnExportSCORM_clicked()
|
||||
{
|
||||
Q_EMIT actionSCORMexport();
|
||||
}
|
||||
|
||||
void ExportDialog::on_dlgTree_itemChanged(QTreeWidgetItem *item, int)
|
||||
{
|
||||
QString nm = item->text(0);
|
||||
if(item->checkState(0) == Qt::Checked) {
|
||||
if(item->parent() != nullptr)
|
||||
item->parent()->setCheckState(0, Qt::Checked);
|
||||
} else {
|
||||
for(int i=0;i<item->childCount();i++)
|
||||
item->child(i)->setCheckState(0, Qt::Unchecked);
|
||||
}
|
||||
|
||||
if(ui->cbPackageList->currentIndex() < 0) return;
|
||||
if(ui->cbPackageList->currentText() != ui->cbPackageList->itemText(ui->cbPackageList->currentIndex()))
|
||||
return;
|
||||
if(!flagCanSetCheck) return;
|
||||
|
||||
if(item->checkState(0) == Qt::Checked) {
|
||||
if(!SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName))
|
||||
SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.append(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
|
||||
} else {
|
||||
if(SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName))
|
||||
SM->items[item->data(0, Qt::UserRole).toInt()].inPackages.removeOne(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
|
||||
}
|
||||
}
|
||||
|
||||
void ExportDialog::fillTree(QTreeWidget* tree) {
|
||||
ui->dlgTree->clear();
|
||||
|
||||
flagCanSetCheck = false;
|
||||
for(int i=0;i<tree->topLevelItemCount();i++) {
|
||||
QTreeWidgetItem* newItem = new QTreeWidgetItem();
|
||||
ui->dlgTree->addTopLevelItem(newItem);
|
||||
fillTreeItem(tree->topLevelItem(i), newItem);
|
||||
}
|
||||
flagCanSetCheck = true;
|
||||
ui->dlgTree->expandAll();
|
||||
ui->cbPackageList->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void ExportDialog::fillTreeItem(QTreeWidgetItem* treeItem, QTreeWidgetItem* dlgItem) {
|
||||
QString txt = treeItem->text(0); txt.replace("\n", " ");
|
||||
dlgItem->setText(0, txt);
|
||||
dlgItem->setData(0, Qt::UserRole, treeItem->data(0, Qt::UserRole));
|
||||
dlgItem->setFlags(dlgItem->flags() | Qt::ItemIsUserCheckable);
|
||||
dlgItem->setCheckState(0, Qt::Checked);
|
||||
dlgItem->setIcon(0, treeItem->icon(0));
|
||||
|
||||
for(int i=0;i<treeItem->childCount();i++) {
|
||||
QTreeWidgetItem* newItem = new QTreeWidgetItem();
|
||||
dlgItem->addChild(newItem);
|
||||
fillTreeItem(treeItem->child(i), newItem);
|
||||
}
|
||||
}
|
||||
|
||||
QTreeWidget* ExportDialog::getDlgTreeWidget() {
|
||||
return ui->dlgTree;
|
||||
}
|
||||
|
||||
void ExportDialog::setPackName(QString packname) {
|
||||
ui->lePackName->setText(packname);
|
||||
}
|
||||
|
||||
QString ExportDialog::getPackName() {
|
||||
return ui->lePackName->text();
|
||||
}
|
||||
|
||||
void ExportDialog::setPackDir(QString packdir) {
|
||||
ui->lePackDir->setText(packdir);
|
||||
}
|
||||
|
||||
QString ExportDialog::getPackDir() {
|
||||
return ui->lePackDir->text();
|
||||
}
|
||||
|
||||
void ExportDialog::setPackTitle(QString packtitle) {
|
||||
ui->lePackTitle->setText(packtitle);
|
||||
}
|
||||
|
||||
QString ExportDialog::getPackTitle() {
|
||||
return ui->lePackTitle->text();
|
||||
}
|
||||
void ExportDialog::on_btnChooseDir_clicked()
|
||||
{
|
||||
QString dir = QFileDialog::getExistingDirectory(this, tr("Выберите папку размещения пакета"), getPackDir());
|
||||
if(dir != "")
|
||||
ui->lePackDir->setText(dir);
|
||||
}
|
||||
|
||||
void ExportDialog::setS1000Dlabel(QString text, QString color) {
|
||||
ui->lblS1000D_result->setText(text);
|
||||
ui->lblS1000D_result->setStyleSheet("QLabel { color: "+color+"; }");
|
||||
QTimer::singleShot(3000, this, SLOT(hidelabels()));
|
||||
}
|
||||
|
||||
void ExportDialog::setSCORMlabel(QString text, QString color) {
|
||||
ui->lblSCORM_result->setText(text);
|
||||
ui->lblSCORM_result->setStyleSheet("QLabel { color: "+color+"; }");
|
||||
QTimer::singleShot(3000, this, SLOT(hidelabels()));
|
||||
}
|
||||
|
||||
void ExportDialog::hidelabels() {
|
||||
ui->lblS1000D_result->setText("");
|
||||
ui->lblSCORM_result->setText("");
|
||||
}
|
||||
|
||||
void ExportDialog::on_cbPackageList_currentIndexChanged(int index)
|
||||
{
|
||||
if(ignore_cbPackageList_events) return;
|
||||
|
||||
QList<QTreeWidgetItem*> treeList;
|
||||
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
|
||||
treeList.append(ui->dlgTree->topLevelItem(i));
|
||||
QTreeWidgetItem* treeItem;
|
||||
while(!treeList.isEmpty()) {
|
||||
treeItem = treeList.takeFirst();
|
||||
flagCanSetCheck = false;
|
||||
if(index >= 0) {
|
||||
if(SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[index].cfgName, Qt::CaseInsensitive))
|
||||
treeItem->setCheckState(0, Qt::Checked);
|
||||
else
|
||||
treeItem->setCheckState(0, Qt::Unchecked);
|
||||
}
|
||||
else
|
||||
treeItem->setCheckState(0, Qt::Checked);
|
||||
flagCanSetCheck = true;
|
||||
|
||||
for(int i=0;i<treeItem->childCount();i++)
|
||||
treeList.append(treeItem->child(i));
|
||||
}
|
||||
curPackIndex = index;
|
||||
ignore_cbPackageList_events = true;
|
||||
if(index >= 0) {
|
||||
ui->lePackTitle->setText(SM->packages[index].title);
|
||||
ui->lePackName->setText(SM->packages[index].exportFileName);
|
||||
}
|
||||
else {
|
||||
//ui->lePackTitle->setText();
|
||||
//ui->lePackName->setText();
|
||||
}
|
||||
ignore_cbPackageList_events = false;
|
||||
}
|
||||
|
||||
void ExportDialog::setPackageListIndex(int ind) {
|
||||
on_cbPackageList_currentIndexChanged(ind);
|
||||
}
|
||||
|
||||
void ExportDialog::on_cbPackageList_currentTextChanged(QString newPackName)
|
||||
{
|
||||
if(ignore_cbPackageList_events) return;
|
||||
ui->btnPackageAdd->setEnabled(true);
|
||||
}
|
||||
|
||||
void ExportDialog::fillPackageList()
|
||||
{
|
||||
ignore_cbPackageList_events = true;
|
||||
ui->cbPackageList->clear();
|
||||
foreach(S1000D_Manager::PackageStruct pack, SM->packages)
|
||||
ui->cbPackageList->addItem(pack.cfgName);
|
||||
ignore_cbPackageList_events = false;
|
||||
}
|
||||
|
||||
void ExportDialog::on_btnPackageAdd_clicked()
|
||||
{
|
||||
foreach(S1000D_Manager::PackageStruct pack, SM->packages) {
|
||||
if(pack.cfgName == ui->cbPackageList->currentText())
|
||||
{
|
||||
QMessageBox::warning(this, tr("Ошибка"), tr("Дублирование имен пакетов конфигурации.\n"),
|
||||
QMessageBox::Ok, QMessageBox::Ok);
|
||||
return;
|
||||
}
|
||||
}
|
||||
S1000D_Manager::PackageStruct pack;
|
||||
pack.cfgName = ui->cbPackageList->currentText();
|
||||
pack.title = ui->lePackTitle->text(); pack.exportFileName = ui->lePackName->text();
|
||||
SM->packages.append(pack);
|
||||
|
||||
QList<QTreeWidgetItem*> treeList;
|
||||
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
|
||||
treeList.append(ui->dlgTree->topLevelItem(i));
|
||||
QTreeWidgetItem* treeItem;
|
||||
while(!treeList.isEmpty()) {
|
||||
treeItem = treeList.takeFirst();
|
||||
if(treeItem->checkState(0) == Qt::Checked)
|
||||
if(!SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(pack.cfgName))
|
||||
SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.append(pack.cfgName);
|
||||
|
||||
for(int i=0;i<treeItem->childCount();i++)
|
||||
treeList.append(treeItem->child(i));
|
||||
}
|
||||
|
||||
fillPackageList(); ui->cbPackageList->setCurrentIndex(SM->packages.count()-1);
|
||||
ui->btnPackageAdd->setEnabled(false);
|
||||
ui->lePackName->setFocus();
|
||||
}
|
||||
|
||||
void ExportDialog::on_btnPackageDel_clicked()
|
||||
{
|
||||
if(ui->cbPackageList->currentIndex() < 0) return;
|
||||
QList<QTreeWidgetItem*> treeList;
|
||||
for(int i=0;i<ui->dlgTree->topLevelItemCount();i++)
|
||||
treeList.append(ui->dlgTree->topLevelItem(i));
|
||||
QTreeWidgetItem* treeItem;
|
||||
while(!treeList.isEmpty()) {
|
||||
treeItem = treeList.takeFirst();
|
||||
|
||||
if(SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.contains(SM->packages[ui->cbPackageList->currentIndex()].cfgName, Qt::CaseInsensitive))
|
||||
SM->items[treeItem->data(0, Qt::UserRole).toInt()].inPackages.removeOne(SM->packages[ui->cbPackageList->currentIndex()].cfgName);
|
||||
|
||||
for(int i=0;i<treeItem->childCount();i++)
|
||||
treeList.append(treeItem->child(i));
|
||||
}
|
||||
SM->packages.removeAt(ui->cbPackageList->currentIndex());
|
||||
ui->cbPackageList->removeItem(ui->cbPackageList->currentIndex());
|
||||
}
|
||||
|
||||
void ExportDialog::on_cbPackageList_editTextChanged(const QString &arg1)
|
||||
{
|
||||
ui->btnPackageAdd->setEnabled(true);
|
||||
}
|
||||
|
||||
void ExportDialog::on_lePackName_textEdited(const QString &arg1)
|
||||
{
|
||||
if(curPackIndex == -1) return;
|
||||
SM->packages[curPackIndex].exportFileName = arg1;
|
||||
}
|
||||
|
||||
void ExportDialog::on_lePackTitle_textEdited(const QString &arg1)
|
||||
{
|
||||
if(curPackIndex == -1) return;
|
||||
SM->packages[curPackIndex].title = arg1;
|
||||
}
|
||||
Reference in New Issue
Block a user