mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Qt/NetPlay: Show feedback for index adding
This commit is contained in:
@ -64,6 +64,9 @@ public:
|
|||||||
virtual void SetMD5Result(int pid, const std::string& result) = 0;
|
virtual void SetMD5Result(int pid, const std::string& result) = 0;
|
||||||
virtual void AbortMD5() = 0;
|
virtual void AbortMD5() = 0;
|
||||||
|
|
||||||
|
virtual void OnIndexAdded(bool success, std::string error) = 0;
|
||||||
|
virtual void OnIndexRefreshFailed(std::string error) = 0;
|
||||||
|
|
||||||
virtual void ShowChunkedProgressDialog(const std::string& title, u64 data_size,
|
virtual void ShowChunkedProgressDialog(const std::string& title, u64 data_size,
|
||||||
const std::vector<int>& players) = 0;
|
const std::vector<int>& players) = 0;
|
||||||
virtual void HideChunkedProgressDialog() = 0;
|
virtual void HideChunkedProgressDialog() = 0;
|
||||||
|
@ -183,6 +183,9 @@ void NetPlayServer::SetupIndex()
|
|||||||
|
|
||||||
if (m_traversal_client)
|
if (m_traversal_client)
|
||||||
{
|
{
|
||||||
|
if (m_traversal_client->GetState() != TraversalClient::Connected)
|
||||||
|
return;
|
||||||
|
|
||||||
session.server_id = std::string(g_TraversalClient->GetHostID().data(), 8);
|
session.server_id = std::string(g_TraversalClient->GetHostID().data(), 8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -201,7 +204,13 @@ void NetPlayServer::SetupIndex()
|
|||||||
|
|
||||||
session.EncryptID(Config::Get(Config::NETPLAY_INDEX_PASSWORD));
|
session.EncryptID(Config::Get(Config::NETPLAY_INDEX_PASSWORD));
|
||||||
|
|
||||||
m_index.Add(session);
|
if (m_dialog != nullptr)
|
||||||
|
m_dialog->OnIndexAdded(m_index.Add(session), m_index.GetLastError());
|
||||||
|
|
||||||
|
m_index.SetErrorCallback([this] {
|
||||||
|
if (m_dialog != nullptr)
|
||||||
|
m_dialog->OnIndexRefreshFailed(m_index.GetLastError());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// called from ---NETPLAY--- thread
|
// called from ---NETPLAY--- thread
|
||||||
|
@ -393,6 +393,19 @@ void NetPlayDialog::OnChat()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NetPlayDialog::OnIndexAdded(bool success, const std::string error)
|
||||||
|
{
|
||||||
|
DisplayMessage(success ? tr("Successfully added to the NetPlay index") :
|
||||||
|
tr("Failed to add this session to the NetPlay index: %1")
|
||||||
|
.arg(QString::fromStdString(error)),
|
||||||
|
success ? "green" : "red");
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetPlayDialog::OnIndexRefreshFailed(const std::string error)
|
||||||
|
{
|
||||||
|
DisplayMessage(QString::fromStdString(error), "red");
|
||||||
|
}
|
||||||
|
|
||||||
void NetPlayDialog::OnStart()
|
void NetPlayDialog::OnStart()
|
||||||
{
|
{
|
||||||
if (!Settings::Instance().GetNetPlayClient()->DoAllPlayersHaveGame())
|
if (!Settings::Instance().GetNetPlayClient()->DoAllPlayersHaveGame())
|
||||||
|
@ -60,6 +60,9 @@ public:
|
|||||||
void OnGameStartAborted() override;
|
void OnGameStartAborted() override;
|
||||||
void OnGolferChanged(bool is_golfer, const std::string& golfer_name) override;
|
void OnGolferChanged(bool is_golfer, const std::string& golfer_name) override;
|
||||||
|
|
||||||
|
void OnIndexAdded(bool success, const std::string error) override;
|
||||||
|
void OnIndexRefreshFailed(const std::string error) override;
|
||||||
|
|
||||||
bool IsRecording() override;
|
bool IsRecording() override;
|
||||||
std::string FindGame(const std::string& game) override;
|
std::string FindGame(const std::string& game) override;
|
||||||
std::shared_ptr<const UICommon::GameFile> FindGameFile(const std::string& game) override;
|
std::shared_ptr<const UICommon::GameFile> FindGameFile(const std::string& game) override;
|
||||||
|
@ -142,6 +142,8 @@ void NetPlayIndex::NotificationLoop()
|
|||||||
if (!json)
|
if (!json)
|
||||||
{
|
{
|
||||||
m_last_error = "BAD_JSON";
|
m_last_error = "BAD_JSON";
|
||||||
|
m_secret.clear();
|
||||||
|
m_error_callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,6 +152,8 @@ void NetPlayIndex::NotificationLoop()
|
|||||||
if (status != "OK")
|
if (status != "OK")
|
||||||
{
|
{
|
||||||
m_last_error = std::move(status);
|
m_last_error = std::move(status);
|
||||||
|
m_secret.clear();
|
||||||
|
m_error_callback();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -318,3 +322,13 @@ const std::string& NetPlayIndex::GetLastError() const
|
|||||||
{
|
{
|
||||||
return m_last_error;
|
return m_last_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NetPlayIndex::HasActiveSession() const
|
||||||
|
{
|
||||||
|
return !m_secret.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetPlayIndex::SetErrorCallback(std::function<void()> function)
|
||||||
|
{
|
||||||
|
m_error_callback = function;
|
||||||
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -46,12 +47,16 @@ public:
|
|||||||
bool Add(NetPlaySession session);
|
bool Add(NetPlaySession session);
|
||||||
void Remove();
|
void Remove();
|
||||||
|
|
||||||
|
bool HasActiveSession() const;
|
||||||
|
|
||||||
void SetPlayerCount(int player_count);
|
void SetPlayerCount(int player_count);
|
||||||
void SetInGame(bool in_game);
|
void SetInGame(bool in_game);
|
||||||
void SetGame(std::string game);
|
void SetGame(std::string game);
|
||||||
|
|
||||||
const std::string& GetLastError() const;
|
const std::string& GetLastError() const;
|
||||||
|
|
||||||
|
void SetErrorCallback(std::function<void()> callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void NotificationLoop();
|
void NotificationLoop();
|
||||||
|
|
||||||
@ -64,4 +69,6 @@ private:
|
|||||||
std::thread m_session_thread;
|
std::thread m_session_thread;
|
||||||
|
|
||||||
Common::Event m_session_thread_exit_event;
|
Common::Event m_session_thread_exit_event;
|
||||||
|
|
||||||
|
std::function<void()> m_error_callback = nullptr;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user