This commit is contained in:
2025-11-26 18:09:41 +03:00
parent 23d432170d
commit f75ff9660f
8 changed files with 54 additions and 58 deletions

View File

@@ -1,50 +0,0 @@
#include "dialognewversion.h"
#include "ui_dialognewversion.h"
DialogNewVersion::DialogNewVersion(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogNewVersion),
validator(nullptr)
{
ui->setupUi(this);
validator = new QRegExpValidator(QRegExp("^[A-Za-z0-9]{20}$"));
ui->lineEdit->setValidator(validator);
setMinimumSize(200, 100);
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setWindowTitle(tr("New version"));
}
DialogNewVersion::~DialogNewVersion()
{
delete ui;
}
void DialogNewVersion::initialize(QString prevName)
{
ui->prevVerValue->setText(prevName);
}
QString DialogNewVersion::getNewName()
{
return ui->lineEdit->text();
}
void DialogNewVersion::on_createButton_clicked()
{
if(ui->lineEdit->text() != "")
{
accept();
}
}
void DialogNewVersion::on_cancelButton_clicked()
{
close();
}
void DialogNewVersion::on_lineEdit_inputRejected()
{
QToolTip::showText(QCursor::pos(),tr("Only Latin letters and numbers"));
}

View File

@@ -1,39 +0,0 @@
#ifndef DIALOGNEWVERSION_H
#define DIALOGNEWVERSION_H
#include <QDialog>
#include <QWidget>
#include <QLineEdit>
#include <QToolTip>
#include <QRegExpValidator>
namespace Ui {
class DialogNewVersion;
}
class DialogNewVersion : public QDialog
{
Q_OBJECT
public:
explicit DialogNewVersion(QWidget *parent = nullptr);
~DialogNewVersion();
public:
void initialize(QString prevName);
QString getNewName();
private slots:
void on_createButton_clicked();
void on_cancelButton_clicked();
void on_lineEdit_inputRejected();
private:
Ui::DialogNewVersion *ui;
QRegExpValidator *validator;
};
#endif // DIALOGNEWVERSION_H

View File

@@ -1,255 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogNewVersion</class>
<widget class="QDialog" name="DialogNewVersion">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>344</width>
<height>200</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Create copy...</string>
</property>
<property name="windowIcon">
<iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/lms.png</normaloff>:/resources/icons/lms.png</iconset>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_Main">
<item>
<layout class="QHBoxLayout" name="baseVerLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="prevVerTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Basic version:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="prevVerValue">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>150</horstretch>
<verstretch>30</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="newNameLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="newNameVersionTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>99</horstretch>
<verstretch>40</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>New name version:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>150</horstretch>
<verstretch>30</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>30</height>
</size>
</property>
<property name="toolTipDuration">
<number>1000</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="createButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Create</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../InstructorsAndTrainees.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -1,204 +0,0 @@
#include <QResizeEvent>
#include "versionselectwidget.h"
#include "specialmessagebox.h"
#include "ui_versionselectwidget.h"
VersionSelectWidget::VersionSelectWidget(ConnectorToServer* connectorToServer, QWidget *parent) :
QDialog(parent),
ui(new Ui::VersionSelectWidget),
connectorToServer(connectorToServer),
versionContainer(nullptr),
serverDataList(nullptr),
selectedVersion(nullptr),
waitAnimationWidget(nullptr),
authorName(""),
flGetVersion(false)
{
ui->setupUi(this);
setMinimumSize(500, 300);
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setWindowTitle(tr("Version control"));
versionContainer = new VersionContainer;
waitAnimationWidget = new WaitAnimationWidget;
QMovie *movie = new QMovie(":/resources/icons/762.gif");
waitAnimationWidget->setParent(this);
waitAnimationWidget->initialize(movie,this);
}
VersionSelectWidget::~VersionSelectWidget()
{
waitAnimationWidget->hideWithStop();
delete versionContainer;
delete waitAnimationWidget;
delete ui;
}
void VersionSelectWidget::initialize()
{
connect (connectorToServer, &ConnectorToServer::signal_SetVersion, this, &VersionSelectWidget::slot_SetVersion);
connect(connectorToServer, &ConnectorToServer::signal_AnimationActivated, this, &VersionSelectWidget::slot_activateLoadAnimation);
connect(connectorToServer, &ConnectorToServer::signal_showServerList, this, &VersionSelectWidget::slot_showServerList);
connect(this, &VersionSelectWidget::sigSendSwitchVersion, connectorToServer, &ConnectorToServer::slot_SendSwitchVersion);
connect(this, &VersionSelectWidget::sigSendCopyVersion, connectorToServer, &ConnectorToServer::slot_SendCopyVersion);
connect(this, &VersionSelectWidget::sigSendDeleteVersion, connectorToServer, &ConnectorToServer::slot_SendDeleteVersion);
connect(this, &VersionSelectWidget::signal_getVersion, connectorToServer, &ConnectorToServer::slot_getVersion);
emit signal_getVersion();
//connectorToServer->sendShowVersionSelect();
}
void VersionSelectWidget::fillView(QList<StreamingVersionData *> *serverData)
{
ui->verListView->clear();
serverDataList = serverData;
ui->verValue->setText(versionContainer->getServerVersionData()->getViewName());
for(StreamingVersionData *data : *serverData)
{
ui->verListView->addItem(data->getViewName());
}
ui->verListView->setCurrentRow(0);
ui->verListView->itemClicked(ui->verListView->item(0));
}
QString VersionSelectWidget::changableText(bool flag)
{
if(flag) return tr("Yes");
else return tr("No");
}
void VersionSelectWidget::on_verListView_itemClicked(QListWidgetItem *item)
{
for(StreamingVersionData *data : *serverDataList)
{
if(data->getViewName() == item->text())
{
QString info = tr("Version name: ") + data->getViewName() + "\n";
info.append(tr("Created: ") + data->getCreateData().toString() + "\n");
info.append(tr("Changeable: ") + changableText(data->getIsChangeable()) + "\n");
info.append(tr("Author: ") + data->getAuthor());
ui->infoValue->setText(info);
selectedVersion = data;
}
}
}
void VersionSelectWidget::sendCopyEmit(QString newName)
{
QString result = selectedVersion->getViewName() + ";" + newName + ";" + authorName;
if (selectedVersion == nullptr)
{
QString text = tr("Version not selected");
SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, text).exec();
return;
}
versionContainer->setLocalVersionData(selectedVersion);
emit sigSendCopyVersion(result);
}
void VersionSelectWidget::on_createDuplicateButton_clicked()
{
if (selectedVersion == nullptr)
{
QString text = tr("Version not selected");
SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, text).exec();
return;
}
DialogNewVersion *dlgNewVersion = new DialogNewVersion(this);
dlgNewVersion->initialize(selectedVersion->getViewName());
switch(dlgNewVersion->exec())
{
case QDialog::Accepted:
{
QString newName = dlgNewVersion->getNewName();
sendCopyEmit(newName);
break;
}
case QDialog::Rejected:
break;
default:
break;
}
delete dlgNewVersion;
}
void VersionSelectWidget::on_deleteVersionButton_clicked()
{
if (selectedVersion == nullptr)
{
QString text = tr("Version not selected");
SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, text).exec();
return;
}
emit sigSendDeleteVersion(selectedVersion);
}
void VersionSelectWidget::on_switchServerVersionButton_clicked()
{
if (selectedVersion == nullptr)
{
QString text = tr("Version not selected");
SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, text).exec();
return;
}
versionContainer->setServerVersionData(selectedVersion);
ui->verValue->setText(selectedVersion->getViewName());
emit sigSendSwitchVersion(selectedVersion);
}
void VersionSelectWidget::slot_activateLoadAnimation(bool flag)
{
if (flag)
{
waitAnimationWidget->showWithPlay();
}
else
{
waitAnimationWidget->hideWithStop();
}
}
void VersionSelectWidget::slot_showServerList(QList<StreamingVersionData *> *serverList)
{
fillView(serverList);
}
void VersionSelectWidget::slot_SetVersion(StreamingVersionData *serverVersion)
{
versionContainer->setServerVersionData(serverVersion);
if(!flGetVersion)
connectorToServer->sendShowVersionSelect();
flGetVersion = true;
}
void VersionSelectWidget::setAuthor(QString name)
{
authorName = name;
}
void VersionSelectWidget::resizeEvent(QResizeEvent *event)
{
QSize size = event->size();
waitAnimationWidget->resize(size);
}

View File

@@ -1,76 +0,0 @@
#ifndef VERSIONSELECTWIDGET_H
#define VERSIONSELECTWIDGET_H
#include <QListWidget>
#include <QWidget>
#include <QDialog>
#include "versioncontainer.h"
#include "streamingversiondata.h"
#include "dialognewversion.h"
#include "waitanimationwidget.h"
#include "connectortoserver.h"
#include "versioncontainer.h"
namespace Ui {
class VersionSelectWidget;
}
class VersionSelectWidget : public QDialog
{
Q_OBJECT
public:
explicit VersionSelectWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr);
~VersionSelectWidget();
void initialize();
void sendCopyEmit(QString newName);
void setAuthor(QString name);
public:
void resizeEvent(QResizeEvent *event) override;
private slots:
void on_createDuplicateButton_clicked();
void on_deleteVersionButton_clicked();
void on_switchServerVersionButton_clicked();
void on_verListView_itemClicked(QListWidgetItem *item);
private slots:
void slot_activateLoadAnimation(bool flag);
void slot_showServerList(QList<StreamingVersionData*> *serverList);
void slot_SetVersion(StreamingVersionData* serverVersion);
signals:
void sigSendDeleteVersion(StreamingVersionData *streaming);
void sigSendSwitchVersion(StreamingVersionData *selectVersion);
void sigSendCopyVersion(QString versionPair);
void signal_getVersion();
private:
QString changableText(bool flag);
void fillView(QList<StreamingVersionData*> *serverData);
private:
Ui::VersionSelectWidget *ui;
ConnectorToServer* connectorToServer;
VersionContainer *versionContainer;
QList<StreamingVersionData*> *serverDataList;
StreamingVersionData *selectedVersion;
WaitAnimationWidget *waitAnimationWidget;
QString authorName;
bool flGetVersion;
};
#endif // VERSIONSELECTWIDGET_H

View File

@@ -1,210 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>VersionSelectWidget</class>
<widget class="QWidget" name="VersionSelectWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>580</width>
<height>277</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="windowIcon">
<iconset resource="../InstructorsAndTrainees.qrc">
<normaloff>:/resources/icons/lms.png</normaloff>:/resources/icons/lms.png</iconset>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_Main">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="actualServerListLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QLabel" name="verListTitle">
<property name="font">
<font>
<family>MS Shell Dlg 2</family>
<pointsize>8</pointsize>
</font>
</property>
<property name="contextMenuPolicy">
<enum>Qt::PreventContextMenu</enum>
</property>
<property name="text">
<string>Available versions on the server:</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="verListView"/>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="infoViewTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Info:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="infoValue">
<property name="text">
<string>Double click on the version to see information...</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="ServerInfoLayout">
<item>
<widget class="QLabel" name="verTitle">
<property name="text">
<string>Current server version:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="verValue">
<property name="text">
<string>none</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="ButtonLayout" stretch="0,0,0">
<property name="spacing">
<number>6</number>
</property>
<item>
<widget class="QPushButton" name="createDuplicateButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Create copy</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="deleteVersionButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="switchServerVersionButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Change server version</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources>
<include location="../InstructorsAndTrainees.qrc"/>
</resources>
<connections/>
</ui>