search:对照功能搜索筛选添加。
This commit is contained in:
10
.vscode/settings.json
vendored
10
.vscode/settings.json
vendored
@@ -16,14 +16,14 @@
|
|||||||
"args": []
|
"args": []
|
||||||
},
|
},
|
||||||
"cmake.configureSettings": {
|
"cmake.configureSettings": {
|
||||||
//"CMAKE_PREFIX_PATH": "C:/Qt/6.8.3/mingw_64",
|
"CMAKE_PREFIX_PATH": "C:/Qt/6.8.3/mingw_64",
|
||||||
"CMAKE_PREFIX_PATH": "C:/Qt/Qt5.7.1/5.7/mingw53_32",
|
//"CMAKE_PREFIX_PATH": "C:/Qt/Qt5.7.1/5.7/mingw53_32",
|
||||||
//"CMAKE_TOOLCHAIN_FILE": "${env:TT_VCPKG}"
|
//"CMAKE_TOOLCHAIN_FILE": "${env:TT_VCPKG}"
|
||||||
},
|
},
|
||||||
"cmake.configureArgs": [
|
"cmake.configureArgs": [
|
||||||
"-Wno-dev",
|
"-Wno-dev",
|
||||||
"-DCOMPILE_GUI=ON",
|
"-DCOMPILE_GUI=ON",
|
||||||
"-DQT_DEFAULT_MAJOR_VERSION=5"
|
"-DQT_DEFAULT_MAJOR_VERSION=6"
|
||||||
],
|
],
|
||||||
"cmake.options.statusBarVisibility": "visible",
|
"cmake.options.statusBarVisibility": "visible",
|
||||||
"cmake.generator": "Ninja",
|
"cmake.generator": "Ninja",
|
||||||
@@ -147,7 +147,9 @@
|
|||||||
"qpushbutton": "cpp",
|
"qpushbutton": "cpp",
|
||||||
"qpainter": "cpp",
|
"qpainter": "cpp",
|
||||||
"qdialog": "cpp",
|
"qdialog": "cpp",
|
||||||
"quuid": "cpp"
|
"quuid": "cpp",
|
||||||
|
"complex": "cpp",
|
||||||
|
"expected": "cpp"
|
||||||
},
|
},
|
||||||
"editor.tokenColorCustomizations": {
|
"editor.tokenColorCustomizations": {
|
||||||
"textMateRules": [
|
"textMateRules": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(frelay VERSION 0.2.3 LANGUAGES CXX)
|
project(frelay VERSION 0.2.4 LANGUAGES CXX)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ void Compare::InitControl()
|
|||||||
connect(ui->btnLoad, &QPushButton::clicked, this, &Compare::Load);
|
connect(ui->btnLoad, &QPushButton::clicked, this, &Compare::Load);
|
||||||
connect(ui->btnLeft, &QPushButton::clicked, this, &Compare::TransToLeft);
|
connect(ui->btnLeft, &QPushButton::clicked, this, &Compare::TransToLeft);
|
||||||
connect(ui->btnRight, &QPushButton::clicked, this, &Compare::TransToRight);
|
connect(ui->btnRight, &QPushButton::clicked, this, &Compare::TransToRight);
|
||||||
|
connect(ui->btnSearch, &QPushButton::clicked, this, &Compare::Search);
|
||||||
|
connect(ui->btnReset, &QPushButton::clicked, this, &Compare::Reset);
|
||||||
|
|
||||||
// 测试代码
|
// 测试代码
|
||||||
connect(ui->btnReplace, &QPushButton::clicked, this, [this]() {
|
connect(ui->btnReplace, &QPushButton::clicked, this, [this]() {
|
||||||
@@ -130,6 +132,11 @@ void Compare::Save()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isResource_) {
|
||||||
|
QMessageBox::information(this, tr("提示"), tr("请先重置搜索结果后操作。"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QFile file("CompareData.xml");
|
QFile file("CompareData.xml");
|
||||||
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
|
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
|
||||||
FTCommon::msg(this, tr("打开数据文件失败。"));
|
FTCommon::msg(this, tr("打开数据文件失败。"));
|
||||||
@@ -165,13 +172,26 @@ void Compare::Save()
|
|||||||
}
|
}
|
||||||
|
|
||||||
QStringList paths;
|
QStringList paths;
|
||||||
|
items_.clear();
|
||||||
|
|
||||||
for (int row = 0; row < ui->tableWidget->rowCount(); ++row) {
|
for (int row = 0; row < ui->tableWidget->rowCount(); ++row) {
|
||||||
QTableWidgetItem* fileName = ui->tableWidget->item(row, 0);
|
QTableWidgetItem* fileName = ui->tableWidget->item(row, 0);
|
||||||
QTableWidgetItem* localItem = ui->tableWidget->item(row, 1);
|
QTableWidgetItem* localItem = ui->tableWidget->item(row, 1);
|
||||||
QTableWidgetItem* remoteItem = ui->tableWidget->item(row, 2);
|
QTableWidgetItem* remoteItem = ui->tableWidget->item(row, 2);
|
||||||
paths << (fileName ? fileName->text() : "");
|
|
||||||
paths << (localItem ? localItem->text() : "");
|
auto baseName = (fileName ? fileName->text() : "");
|
||||||
paths << (remoteItem ? remoteItem->text() : "");
|
auto localDir = (localItem ? localItem->text() : "");
|
||||||
|
auto remoteDir = (remoteItem ? remoteItem->text() : "");
|
||||||
|
|
||||||
|
CompareItem item;
|
||||||
|
item.baseName = baseName;
|
||||||
|
item.localDir = localDir;
|
||||||
|
item.remoteDir = remoteDir;
|
||||||
|
items_.push_back(item);
|
||||||
|
|
||||||
|
paths << baseName;
|
||||||
|
paths << localDir;
|
||||||
|
paths << remoteDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataMap[titleKey] = paths;
|
dataMap[titleKey] = paths;
|
||||||
@@ -221,6 +241,9 @@ void Compare::Load()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
items_.clear();
|
||||||
|
isResource_ = true;
|
||||||
|
ui->tableWidget->setIsResource(isResource_);
|
||||||
QXmlStreamReader reader(&file);
|
QXmlStreamReader reader(&file);
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
@@ -247,6 +270,12 @@ void Compare::Load()
|
|||||||
int row = ui->tableWidget->rowCount();
|
int row = ui->tableWidget->rowCount();
|
||||||
ui->tableWidget->insertRow(row);
|
ui->tableWidget->insertRow(row);
|
||||||
|
|
||||||
|
CompareItem item;
|
||||||
|
item.baseName = paths[i];
|
||||||
|
item.localDir = paths[i + 1];
|
||||||
|
item.remoteDir = paths[i + 2];
|
||||||
|
items_.push_back(item);
|
||||||
|
|
||||||
QTableWidgetItem* fileName = new QTableWidgetItem(paths[i]);
|
QTableWidgetItem* fileName = new QTableWidgetItem(paths[i]);
|
||||||
QTableWidgetItem* localItem = new QTableWidgetItem(paths[i + 1]);
|
QTableWidgetItem* localItem = new QTableWidgetItem(paths[i + 1]);
|
||||||
QTableWidgetItem* remoteItem = new QTableWidgetItem(paths[i + 2]);
|
QTableWidgetItem* remoteItem = new QTableWidgetItem(paths[i + 2]);
|
||||||
@@ -302,6 +331,48 @@ void Compare::LoadTitles()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Compare::Search()
|
||||||
|
{
|
||||||
|
auto key = ui->edSearch->text().trimmed();
|
||||||
|
if (key.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
key = key.toUpper();
|
||||||
|
QVector<CompareItem> result;
|
||||||
|
for (const auto& item : items_) {
|
||||||
|
auto baseNameU = item.baseName.toUpper();
|
||||||
|
auto localDirU = item.localDir.toUpper();
|
||||||
|
auto remoteDirU = item.remoteDir.toUpper();
|
||||||
|
|
||||||
|
if (baseNameU.contains(key) || localDirU.contains(key) || remoteDirU.contains(key)) {
|
||||||
|
result.push_back(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetResult(result);
|
||||||
|
isResource_ = false;
|
||||||
|
ui->tableWidget->setIsResource(isResource_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Compare::Reset()
|
||||||
|
{
|
||||||
|
SetResult(items_);
|
||||||
|
isResource_ = true;
|
||||||
|
ui->tableWidget->setIsResource(isResource_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Compare::SetResult(const QVector<CompareItem>& items)
|
||||||
|
{
|
||||||
|
ui->tableWidget->setRowCount(0);
|
||||||
|
for (const auto& item : items) {
|
||||||
|
int row = ui->tableWidget->rowCount();
|
||||||
|
ui->tableWidget->insertRow(row);
|
||||||
|
ui->tableWidget->setItem(row, 0, new QTableWidgetItem(item.baseName));
|
||||||
|
ui->tableWidget->setItem(row, 1, new QTableWidgetItem(item.localDir));
|
||||||
|
ui->tableWidget->setItem(row, 2, new QTableWidgetItem(item.remoteDir));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Compare::TransToLeft()
|
void Compare::TransToLeft()
|
||||||
{
|
{
|
||||||
QVector<TransTask> tasks;
|
QVector<TransTask> tasks;
|
||||||
|
|||||||
@@ -10,6 +10,12 @@ namespace Ui {
|
|||||||
class Compare;
|
class Compare;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct CompareItem {
|
||||||
|
QString baseName;
|
||||||
|
QString localDir;
|
||||||
|
QString remoteDir;
|
||||||
|
};
|
||||||
|
|
||||||
class Compare : public QWidget
|
class Compare : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -31,6 +37,9 @@ private:
|
|||||||
void Save();
|
void Save();
|
||||||
void Load();
|
void Load();
|
||||||
void LoadTitles();
|
void LoadTitles();
|
||||||
|
void Search();
|
||||||
|
void Reset();
|
||||||
|
void SetResult(const QVector<CompareItem>& items);
|
||||||
|
|
||||||
void TransToLeft();
|
void TransToLeft();
|
||||||
void TransToRight();
|
void TransToRight();
|
||||||
@@ -41,6 +50,10 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
QMenu* menu_;
|
QMenu* menu_;
|
||||||
Ui::Compare* ui;
|
Ui::Compare* ui;
|
||||||
|
|
||||||
|
// 现要求,保存、删除、拖入必须重置。
|
||||||
|
bool isResource_{};
|
||||||
|
QVector<CompareItem> items_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COMPARECONTROL_H
|
#endif // COMPARECONTROL_H
|
||||||
|
|||||||
@@ -90,14 +90,14 @@
|
|||||||
<widget class="QLineEdit" name="edSearch"/>
|
<widget class="QLineEdit" name="edSearch"/>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButton">
|
<widget class="QPushButton" name="btnSearch">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>搜索</string>
|
<string>搜索</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButton_2">
|
<widget class="QPushButton" name="btnReset">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>重置</string>
|
<string>重置</string>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDrag>
|
#include <QDrag>
|
||||||
|
#include <QMessageBox>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <Util.h>
|
#include <Util.h>
|
||||||
@@ -17,8 +18,19 @@ CpTableWidget::~CpTableWidget()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CpTableWidget::setIsResource(bool isResource)
|
||||||
|
{
|
||||||
|
isResource_ = isResource;
|
||||||
|
}
|
||||||
|
|
||||||
void CpTableWidget::dropEvent(QDropEvent* event)
|
void CpTableWidget::dropEvent(QDropEvent* event)
|
||||||
{
|
{
|
||||||
|
if (!isResource_) {
|
||||||
|
QMessageBox::information(this, tr("提示"), tr("请先重置搜索结果后操作。"));
|
||||||
|
event->ignore();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
|
if (!event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) {
|
||||||
event->ignore();
|
event->ignore();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -13,9 +13,15 @@ public:
|
|||||||
explicit CpTableWidget(QWidget* parent = nullptr);
|
explicit CpTableWidget(QWidget* parent = nullptr);
|
||||||
~CpTableWidget() override;
|
~CpTableWidget() override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setIsResource(bool isResource);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void dropEvent(QDropEvent* event) override;
|
void dropEvent(QDropEvent* event) override;
|
||||||
void dragEnterEvent(QDragEnterEvent* event);
|
void dragEnterEvent(QDragEnterEvent* event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool isResource_{};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CP_TABLEWIDET_H
|
#endif // CP_TABLEWIDET_H
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
void FTCommon::msg(QWidget* parent, const QString& content)
|
void FTCommon::msg(QWidget* parent, const QString& content)
|
||||||
{
|
{
|
||||||
QMessageBox::information(parent, QObject::tr("prompt"), content);
|
QMessageBox::information(parent, QObject::tr("提示"), content);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FTCommon::affirm(QWidget* parent, const QString& titile, const QString& content)
|
bool FTCommon::affirm(QWidget* parent, const QString& titile, const QString& content)
|
||||||
|
|||||||
@@ -8,6 +8,10 @@
|
|||||||
|
|
||||||
| 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 |
|
| 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 |
|
||||||
| :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: |
|
| :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: |
|
||||||
|
| 36 | 功能 | 备份文件功能。 | | 0.2.3 | |
|
||||||
|
| 35 | 功能 | 完善对照功能的界面其他内容。 | | 0.2.3 | |
|
||||||
|
| 34 | 功能 | 支持删除、重命名、新建文件(夹)。 | | 0.2.3 | |
|
||||||
|
| 33 | 功能 | 弹窗查看文件(夹)属性窗口。 | | 0.2.3 | |
|
||||||
| 32 | 功能 | 路径选择显示驱动器。 | | 0.2.2 | 0.2.3 |
|
| 32 | 功能 | 路径选择显示驱动器。 | | 0.2.2 | 0.2.3 |
|
||||||
| 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | |
|
| 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | |
|
||||||
| 30 | 功能 | 传输界面的取消退出,缺失功能处理。 | | 0.2.2 | 0.2.3 |
|
| 30 | 功能 | 传输界面的取消退出,缺失功能处理。 | | 0.2.2 | 0.2.3 |
|
||||||
|
|||||||
Reference in New Issue
Block a user