diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-25 22:10:39 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-25 22:10:39 -0400 |
commit | 82a21bd08558ba3e067f490525431be30f978b25 (patch) | |
tree | 5695ccc11939e0de3a0fa012e73d8071dd97ce3b /abaddon.cpp | |
parent | 6b72931ba729bf6ede33cfa6877a5ad21e913c45 (diff) | |
download | abaddon-portaudio-82a21bd08558ba3e067f490525431be30f978b25.tar.gz abaddon-portaudio-82a21bd08558ba3e067f490525431be30f978b25.zip |
fix guild order, add copy id guild, add broken zlib, start member list
Diffstat (limited to 'abaddon.cpp')
-rw-r--r-- | abaddon.cpp | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/abaddon.cpp b/abaddon.cpp index 74d980d..04d80ac 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -107,37 +107,49 @@ void Abaddon::ActionSetToken() { } void Abaddon::ActionMoveGuildUp(Snowflake id) { - UserSettingsData d = m_discord.GetUserSettings(); - std::vector<Snowflake> &pos = d.GuildPositions; - if (pos.size() == 0) { - auto x = m_discord.GetUserSortedGuilds(); - for (const auto &pair : x) - pos.push_back(pair.first); + auto order = m_discord.GetUserSortedGuilds(); + // get iter to target + decltype(order)::iterator target_iter; + for (auto it = order.begin(); it != order.end(); it++) { + if (it->first == id) { + target_iter = it; + break; + } } - auto it = std::find(pos.begin(), pos.end(), id); - assert(it != pos.end()); - std::vector<Snowflake>::iterator left = it - 1; - std::swap(*left, *it); + decltype(order)::iterator left = target_iter - 1; + std::swap(*left, *target_iter); - m_discord.UpdateSettingsGuildPositions(pos); + std::vector<Snowflake> new_sort; + for (const auto& x : order) + new_sort.push_back(x.first); + + m_discord.UpdateSettingsGuildPositions(new_sort); } void Abaddon::ActionMoveGuildDown(Snowflake id) { - UserSettingsData d = m_discord.GetUserSettings(); - std::vector<Snowflake> &pos = d.GuildPositions; - if (pos.size() == 0) { - auto x = m_discord.GetUserSortedGuilds(); - for (const auto &pair : x) - pos.push_back(pair.first); + auto order = m_discord.GetUserSortedGuilds(); + // get iter to target + decltype(order)::iterator target_iter; + for (auto it = order.begin(); it != order.end(); it++) { + if (it->first == id) { + target_iter = it; + break; + } } - auto it = std::find(pos.begin(), pos.end(), id); - assert(it != pos.end()); - std::vector<Snowflake>::iterator right = it + 1; - std::swap(*right, *it); + decltype(order)::iterator right = target_iter + 1; + std::swap(*right, *target_iter); + + std::vector<Snowflake> new_sort; + for (const auto &x : order) + new_sort.push_back(x.first); + + m_discord.UpdateSettingsGuildPositions(new_sort); +} - m_discord.UpdateSettingsGuildPositions(pos); +void Abaddon::ActionCopyGuildID(Snowflake id) { + Gtk::Clipboard::get()->set_text(std::to_string(id)); } void Abaddon::ActionListChannelItemClick(Snowflake id) { |