Browse Source

Restore keyboard focus and test changed-tree cleanup

master
evgeny 2 days ago
parent
commit
11fc932905
  1. 2
      tools/chatgui/src/member_files/browser.cpp
  2. 33
      tools/chatgui/tests/test_member_files_browser.cpp

2
tools/chatgui/src/member_files/browser.cpp

@ -277,7 +277,9 @@ void MemberFileBrowser::updateActions() {
bool available = server() && gui_bridge_is_uasync_ready();
int count = m_entries->selectedItems().size();
bool busy = m_dropId || m_batch || m_transferId || m_exportId;
bool restoreFocus = !busy && !m_entries->isEnabled();
m_servers->setEnabled(!busy); m_owners->setEnabled(!busy); m_navigation->setEnabled(!busy); m_entries->setEnabled(!busy);
if (restoreFocus) m_entries->setFocus();
m_upload->setEnabled(available && own && !busy); m_mkdir->setEnabled(available && own && !busy);
m_rename->setEnabled(available && own && count == 1 && !busy); m_remove->setEnabled(available && own && count && !busy);
m_download->setEnabled(available && owner() && count && !busy); m_cancel->setEnabled(busy);

33
tools/chatgui/tests/test_member_files_browser.cpp

@ -223,6 +223,39 @@ private slots:
requestStarted = {}; transferStarted = {};
}
void changedTreeRemovesUnpublishedCopy() {
QTemporaryDir root; QVERIFY(root.isValid());
MemberFileBatch batch(42, 33, 22, MemberFileBatch::Download, nullptr);
bool done = false, success = true; QString summary, downloaded;
batch.progress = [](const QString&, int) {};
batch.conflict = [](const QString&, bool) { return int(QMessageBox::Cancel); };
batch.finished = [&](bool ok, const QString& status, const QStringList& roots) {
done = true; success = ok; summary = status; QVERIFY(roots.isEmpty());
};
requestStarted = [&](mf_gui_request request) {
QTimer::singleShot(0, &batch, [&, request] {
mf_message response = request.message; response.kind = MF_RESPONSE; response.type = MF_DIRECTORY;
if (response.command == MF_STAT) response.status = MF_STALE;
else {
response.data[0] = 8; response.data[2] = MF_FILE; memset(response.data + 19, 7, 16);
memcpy(response.data + MF_ENTRY_HEADER, "file.txt", 8); response.data_len = MF_ENTRY_HEADER + 8; response.cursor = 1;
}
QVERIFY(batch.response(response));
});
};
transferStarted = [&](mf_transfer_request request) {
downloaded = QString::fromUtf8(request.local);
QFile file(downloaded); QVERIFY(file.open(QIODevice::WriteOnly)); file.write("complete file"); file.close();
QTimer::singleShot(0, &batch, [&, request] {
uint8_t bytes[51]{}; mf_put64(bytes, request.id); bytes[50] = 2; QVERIFY(batch.transfer(bytes, sizeof(bytes)));
});
};
batch.start({{"folder", {}, QByteArray(16, '\7'), true}}, root.path(), true);
QTRY_VERIFY(done); QVERIFY(!success); QVERIFY(!downloaded.isEmpty()); QVERIFY(!QFileInfo::exists(downloaded));
QVERIFY(summary.contains("folder")); QCOMPARE(QDir(root.path()).entryList(QDir::AllEntries | QDir::NoDotAndDotDot).size(), 0);
requestStarted = {}; transferStarted = {};
}
void deleteAndParentShortcuts() {
sqlite3* sql = nullptr; QCOMPARE(sqlite3_open(":memory:", &sql), SQLITE_OK);
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);"

Loading…
Cancel
Save