feat: choosing complete

This commit is contained in:
semenov
2026-03-10 14:35:05 +03:00
parent 1d76e9785b
commit 4edfae5740
17 changed files with 25967 additions and 25744 deletions

View File

@@ -0,0 +1,74 @@
#include "updatefileslot.h"
#include "ui_updatefileslot.h"
#include <QDateTime>
UpdateFileSlot::UpdateFileSlot(QWidget *parent) :
QWidget(parent),
ui(new Ui::UpdateFileSlot),
needUpdate(false)
{
ui->setupUi(this);
}
void UpdateFileSlot::fill(QString itemName, FileData serverData, FileData localData)
{
ui->Path->setText(itemName);
local = localData;
QString result = " Сервер: ";
QDateTime serverFileTime = QDateTime::fromString(serverData.lastUpdate,"dd.MM.yyyy hh:mm:ss");
QDateTime localFileTime = QDateTime::fromString(localData.lastUpdate,"dd.MM.yyyy hh:mm:ss");
result.append(serverFileTime.toString("dd.MM.yyyy"));
result.append(" Локально: ");
result.append(localFileTime.toString("dd.MM.yyyy"));
ui->Dates->setText(result);
bool newest = localFileTime > serverFileTime;
ui->UpdateCheckBox->setChecked(newest);
QPixmap pixmap;
if (newest)
{
pixmap.load(":/resource/Icons/new.png");
}
else
{
pixmap.load(nullptr);
}
QPixmap scaled = pixmap.scaled(ui->Image->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->Image->setPixmap(scaled);
}
UpdateFileSlot::~UpdateFileSlot()
{
delete ui;
}
FileData UpdateFileSlot::getLocal() const
{
return local;
}
bool UpdateFileSlot::getNeedUpdate() const
{
return needUpdate;
}
void UpdateFileSlot::setNeedUpdate(bool value)
{
needUpdate = value;
}
void UpdateFileSlot::on_UpdateCheckBox_stateChanged(int arg1)
{
if (ui->UpdateCheckBox->checkState() == Qt::Checked)
{
needUpdate = true;
}
else if (ui->UpdateCheckBox->checkState() == Qt::Unchecked)
{
needUpdate = false;
}
}

36
Widgets/updatefileslot.h Normal file
View File

@@ -0,0 +1,36 @@
#ifndef UPDATEFILESLOT_H
#define UPDATEFILESLOT_H
#include <QWidget>
#include <Data/FileData.h>
namespace Ui {
class UpdateFileSlot;
}
class UpdateFileSlot : public QWidget
{
Q_OBJECT
public:
explicit UpdateFileSlot(QWidget *parent = nullptr);
void fill(QString itemName, FileData serverData, FileData localData);
bool getNeedUpdate() const;
void setNeedUpdate(bool value);
FileData getLocal() const;
~UpdateFileSlot();
private slots:
void on_UpdateCheckBox_stateChanged(int arg1);
private:
Ui::UpdateFileSlot *ui;
FileData local;
bool needUpdate;
};
#endif // UPDATEFILESLOT_H

79
Widgets/updatefileslot.ui Normal file
View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>UpdateFileSlot</class>
<widget class="QWidget" name="UpdateFileSlot">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>789</width>
<height>40</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>30</x>
<y>0</y>
<width>721</width>
<height>41</height>
</rect>
</property>
<layout class="QHBoxLayout" name="mainLayout">
<item>
<widget class="QLabel" name="Path">
<property name="text">
<string>/RUS/Scens/XXX-X-XX-XX-XX-XXXXXX-XXXX-X</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="Dates">
<property name="text">
<string>XXXXXXX XXxXXxXXX XXXXXXXXx XXxXXxXXXX</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="Image">
<property name="geometry">
<rect>
<x>755</x>
<y>5</y>
<width>31</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../resources.qrc">:/resource/Icons/checked.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="UpdateCheckBox">
<property name="geometry">
<rect>
<x>6</x>
<y>10</y>
<width>21</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -32,11 +32,14 @@ void UpdateNotifyWidget::addToList(FileData localFileData,FileData serverFileDat
{
QString itemName = localFileData.path;
itemName = itemName.remove(streamingAssetsPath);
itemName.append("Сервер: ");
itemName.append(serverFileData.lastUpdate);
itemName.append("Локально: ");
itemName.append(localFileData.lastUpdate);
ui->updateListWidget->addItem(itemName);
UpdateFileSlot *slot = new UpdateFileSlot();
QListWidgetItem *widgetItem = new QListWidgetItem();
widgetItem->setSizeHint(QSize(slot->width(),slot->height()));
ui->updateListWidget->addItem(widgetItem);
ui->updateListWidget->setItemWidget(widgetItem,slot);
slot->fill(itemName,serverFileData,localFileData);
}
void UpdateNotifyWidget::showTryChangeBase()
@@ -128,6 +131,24 @@ void UpdateNotifyWidget::closeWindow()
on_closeButton_clicked();
}
QList<FileData> *UpdateNotifyWidget::getUpdateList()
{
QList<FileData> *realUpdateList = new QList<FileData>();
for (int i = 0; i < ui->updateListWidget->count(); i++) {
QListWidgetItem *item = ui->updateListWidget->item(i);
UpdateFileSlot *slot = qobject_cast<UpdateFileSlot*>(ui->updateListWidget->itemWidget(item));
if (slot && slot->getNeedUpdate())
{
realUpdateList->append(slot->getLocal());
}
}
return realUpdateList;
}
void UpdateNotifyWidget::setUpdateState()
{
ui->undoChangesButton->show();

View File

@@ -7,6 +7,7 @@
#include <Data/FileData.h>
#include <Core/versioncontainer.h>
#include <Widgets/updatefileslot.h>
namespace Ui {
class UpdateNotifyWidget;
@@ -26,6 +27,7 @@ public:
void showTryChangeBase();
void setVersionContainer(VersionContainer *versionContainer);
void closeWindow();
QList<FileData> *getUpdateList();
signals:
void sigLoadToServerBehaviour();
void sigUndoCurrentChanges();