add:尝试添加选择task内容功能(未完成)。
This commit is contained in:
parent
78036328a5
commit
3b82087eee
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -21,7 +21,7 @@
|
|||||||
],
|
],
|
||||||
"visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis",
|
"visualizerFile": "${workspaceRoot}/.vscode/qt5.natvis",
|
||||||
"args": [
|
"args": [
|
||||||
"-n", "0"
|
"-n", "1"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"cmake.environment": {
|
"cmake.environment": {
|
||||||
|
@ -383,13 +383,14 @@ bool CClient::request_update_list(const std::string& param)
|
|||||||
// 校验格式是否正确
|
// 校验格式是否正确
|
||||||
auto vec = COfStr::split(content, "\n");
|
auto vec = COfStr::split(content, "\n");
|
||||||
bool valid = true;
|
bool valid = true;
|
||||||
|
int line = 1;
|
||||||
|
std::unordered_map<int, std::string> mre{};
|
||||||
std::string handled_content;
|
std::string handled_content;
|
||||||
for (const auto& item : vec) {
|
for (const auto& item : vec) {
|
||||||
std::string hitem = COfStr::trim(item);
|
std::string hitem = COfStr::trim(item);
|
||||||
if (hitem.empty()) {
|
if (hitem.empty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
mpinfo("---> check {}", hitem);
|
|
||||||
auto v = COfStr::split(hitem, "|");
|
auto v = COfStr::split(hitem, "|");
|
||||||
if (v.size() >= 2) {
|
if (v.size() >= 2) {
|
||||||
auto pr = variable_handle(list_file_full, v[0], true);
|
auto pr = variable_handle(list_file_full, v[0], true);
|
||||||
@ -398,8 +399,8 @@ bool CClient::request_update_list(const std::string& param)
|
|||||||
valid = false;
|
valid = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mpinfo("---> check pass {}", pr);
|
mpinfo("--->check pass {}:{}", line, pr);
|
||||||
handled_content.append(pr + "|" + v[1] + "\n");
|
mre[line++] = pr + "|" + v[1];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
valid = false;
|
valid = false;
|
||||||
@ -411,15 +412,21 @@ bool CClient::request_update_list(const std::string& param)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto handel_ret = handle_user_select(mre);
|
||||||
|
if (handel_ret.empty()) {
|
||||||
|
mperror("handle_user_select not pass, abort action!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
handled_content = CCodec::ansi_to_u8(handled_content);
|
handel_ret = CCodec::ansi_to_u8(handel_ret);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
list_file_ = list_file_full;
|
list_file_ = list_file_full;
|
||||||
std::shared_ptr<CFrameBuffer> buf = std::make_shared<CFrameBuffer>();
|
std::shared_ptr<CFrameBuffer> buf = std::make_shared<CFrameBuffer>();
|
||||||
buf->type_ = TYPE_REQUEST_UPDATE_LIST;
|
buf->type_ = TYPE_REQUEST_UPDATE_LIST;
|
||||||
buf->data_ = new char[handled_content.size() + 1]();
|
buf->data_ = new char[handel_ret.size() + 1]();
|
||||||
buf->len_ = std::snprintf(buf->data_, handled_content.size() + 1, "%s", handled_content.c_str());
|
buf->len_ = std::snprintf(buf->data_, handel_ret.size() + 1, "%s", handel_ret.c_str());
|
||||||
buf->tid_ = task_list_[index]->id;
|
buf->tid_ = task_list_[index]->id;
|
||||||
|
|
||||||
if (!send_frame(buf.get())) {
|
if (!send_frame(buf.get())) {
|
||||||
@ -824,6 +831,54 @@ std::string CClient::variable_handle(const std::string& task_list_path, const st
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CClient::handle_user_select(const std::unordered_map<int, std::string>& source)
|
||||||
|
{
|
||||||
|
std::string handled_content{};
|
||||||
|
std::string input{};
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
mpinfo("numbers by space, or '0' use all, 'end' to quit: ");
|
||||||
|
std::getline(std::cin, input);
|
||||||
|
|
||||||
|
if (input == "end") {
|
||||||
|
handled_content.clear();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (input == "0") {
|
||||||
|
handled_content.clear(); // 清空之前的内容
|
||||||
|
for (const auto& pair : source) {
|
||||||
|
handled_content.append(pair.second + "\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 处理多个值的输入
|
||||||
|
std::stringstream ss(input);
|
||||||
|
std::string num_str;
|
||||||
|
|
||||||
|
while (ss >> num_str) {
|
||||||
|
// 判断输入的每个值是否为有效的数字
|
||||||
|
try {
|
||||||
|
int key = std::stoi(num_str);
|
||||||
|
|
||||||
|
if (source.find(key) != source.end()) {
|
||||||
|
handled_content.append(source.at(key) + "\n");
|
||||||
|
} else {
|
||||||
|
// 如果mre中没有这个key
|
||||||
|
mperror("Invalid input, please enter valid numbers or '0' for all.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
mperror("Invalid input, please enter valid numbers or '0' for all.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!handled_content.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return handled_content;
|
||||||
|
}
|
||||||
|
|
||||||
CFileOpr::CFileOpr() = default;
|
CFileOpr::CFileOpr() = default;
|
||||||
|
|
||||||
CFileOpr::~CFileOpr() = default;
|
CFileOpr::~CFileOpr() = default;
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <util.h>
|
#include <util.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
using namespace ofen;
|
using namespace ofen;
|
||||||
struct DownClientInfo {
|
struct DownClientInfo {
|
||||||
@ -65,6 +66,7 @@ private:
|
|||||||
void hearts();
|
void hearts();
|
||||||
void judget_down_active();
|
void judget_down_active();
|
||||||
std::string variable_handle(const std::string& task_list_path, const std::string& source, bool is_send);
|
std::string variable_handle(const std::string& task_list_path, const std::string& source, bool is_send);
|
||||||
|
std::string handle_user_select(const std::unordered_map<int, std::string>& source);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex mutex_;
|
std::mutex mutex_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user