From c887fdac8a7d6dea1b765607bd35dc0c16cab93d Mon Sep 17 00:00:00 2001 From: Green Sky Date: Mon, 22 Apr 2024 22:31:17 +0200 Subject: [PATCH] small contact list and status text --- external/solanaceae_contact | 2 +- external/solanaceae_tox | 2 +- src/chat_gui/contact_list.cpp | 60 ++++++++++++++++++++++++----------- src/chat_gui/contact_list.hpp | 2 ++ src/chat_gui/theme.cpp | 12 ++++--- src/chat_gui4.cpp | 2 ++ src/chat_gui4.hpp | 2 +- 7 files changed, 55 insertions(+), 27 deletions(-) diff --git a/external/solanaceae_contact b/external/solanaceae_contact index 7710da6..e8b069c 160000 --- a/external/solanaceae_contact +++ b/external/solanaceae_contact @@ -1 +1 @@ -Subproject commit 7710da6c89f975d7bf34efae340232fdb9a705a5 +Subproject commit e8b069c803e81152c538c87c28a891717099b269 diff --git a/external/solanaceae_tox b/external/solanaceae_tox index 560eab1..2807239 160000 --- a/external/solanaceae_tox +++ b/external/solanaceae_tox @@ -1 +1 @@ -Subproject commit 560eab1f6cceff122987646ffa927cd660bc0a73 +Subproject commit 2807239dea0a84d0c598edf0c22560892b3039de diff --git a/src/chat_gui/contact_list.cpp b/src/chat_gui/contact_list.cpp index 8137cdd..a912877 100644 --- a/src/chat_gui/contact_list.cpp +++ b/src/chat_gui/contact_list.cpp @@ -215,19 +215,24 @@ bool renderContactBig( p0.y += ImGui::GetStyle().FramePadding.y; ImVec2 p1_o = {img_y, img_y}; // img_y is 1 line_height in this case + const ImU32 col_back = ImGui::GetColorU32(th.getColor()); if (cstate->state == Contact::Components::ConnectionState::direct) { // direct icon - const ImU32 col_back = ImGui::GetColorU32({0.0f, 0.0f, 0.0f, 0.4f}); - const ImU32 col_main = ImGui::GetColorU32({0.0f, 1.f, 0.0f, 1.0f}); - - drawIconDirect(p0, p1_o, col_main, col_back); + drawIconDirect( + p0, + p1_o, + ImGui::GetColorU32(th.getColor()), + col_back + ); } else if (cstate->state == Contact::Components::ConnectionState::cloud) { // cloud icon - const ImU32 col_back = ImGui::GetColorU32({0.0f, 0.0f, 0.0f, 0.4f}); - const ImU32 col_main = ImGui::GetColorU32({0.0f, 1.f, 0.0f, 1.0f}); - - drawIconCloud(p0, p1_o, col_main, col_back); + drawIconCloud( + p0, + p1_o, + ImGui::GetColorU32(th.getColor()), + col_back + ); } ImGui::Dummy(p1_o); - ImGui::SameLine(); + ImGui::SameLine(0.f, ImGui::GetStyle().ItemSpacing.x*0.5f); } ImGui::Text("%s%s", unread?"* ":"", (c.all_of() ? c.get().name.c_str() : "")); @@ -247,22 +252,39 @@ bool renderContactBig( const float box_hight = TEXT_BASE_HEIGHT - ImGui::GetStyle().FramePadding.y*2; ImVec2 p1_o = {box_hight, box_hight}; + const ImU32 col_back = ImGui::GetColorU32(th.getColor()); if (cstate->state == Contact::Components::ConnectionState::direct) { // direct icon - const ImU32 col_back = ImGui::GetColorU32({0.0f, 0.0f, 0.0f, 0.4f}); - const ImU32 col_main = ImGui::GetColorU32({0.0f, 1.f, 0.0f, 1.0f}); - - drawIconDirect(p0, p1_o, col_main, col_back); + drawIconDirect( + p0, + p1_o, + ImGui::GetColorU32(th.getColor()), + col_back + ); } else if (cstate->state == Contact::Components::ConnectionState::cloud) { // cloud icon - const ImU32 col_back = ImGui::GetColorU32({0.0f, 0.0f, 0.0f, 0.4f}); - const ImU32 col_main = ImGui::GetColorU32({0.0f, 1.f, 0.0f, 1.0f}); - - drawIconCloud(p0, p1_o, col_main, col_back); + drawIconCloud( + p0, + p1_o, + ImGui::GetColorU32(th.getColor()), + col_back + ); } ImGui::Dummy(p1_o); - ImGui::SameLine(); + ImGui::SameLine(0.f, ImGui::GetStyle().ItemSpacing.x*0.5f); } - ImGui::TextDisabled("status message..."); + if ( + const auto* slt = c.try_get(); + slt != nullptr && + !slt->text.empty() && + slt->first_line_length > 0 && + slt->first_line_length <= slt->text.size() + ) { + ImGui::PushStyleColor(ImGuiCol_Text, ImGui::GetStyle().Colors[ImGuiCol_TextDisabled]); + ImGui::TextUnformatted(slt->text.c_str(), slt->text.c_str() + slt->first_line_length); + ImGui::PopStyleColor(); + } else { + ImGui::TextDisabled(""); // or dummy? + } } // line 3 diff --git a/src/chat_gui/contact_list.hpp b/src/chat_gui/contact_list.hpp index 3a40434..a752095 100644 --- a/src/chat_gui/contact_list.hpp +++ b/src/chat_gui/contact_list.hpp @@ -13,6 +13,8 @@ enum class ThemeCol_Contact { avatar_online_direct, avatar_online_cloud, avatar_offline, + + icon_backdrop, }; // returns true if clicked, if selectable, will highlight on hover and respect selected diff --git a/src/chat_gui/theme.cpp b/src/chat_gui/theme.cpp index d202d60..2711293 100644 --- a/src/chat_gui/theme.cpp +++ b/src/chat_gui/theme.cpp @@ -41,12 +41,14 @@ bool Theme::store(void) { Theme getDefaultThemeDark(void) { Theme t; - t.setColor({0.98f, 0.41f, 0.26f, 0.52f}); - t.setColor({0.98f, 0.26f, 0.41f, 0.52f}); + t.setColor({0.98f, 0.41f, 0.26f, 0.52f}); + t.setColor({0.98f, 0.26f, 0.41f, 0.52f}); - t.setColor({0.3, 1, 0, 1}); - t.setColor({0, 1, 0.8, 1}); - t.setColor({0.4, 0.4, 0.4, 1}); + t.setColor({0.3f, 1.0f, 0.0f, 1.0f}); + t.setColor({0.0f, 1.0f, 0.8f, 1.0f}); + t.setColor({0.4f, 0.4f, 0.4f, 1.0f}); + + t.setColor({0.0f, 0.0f, 0.0f, 0.4f}); return t; } diff --git a/src/chat_gui4.cpp b/src/chat_gui4.cpp index d5cb866..0095228 100644 --- a/src/chat_gui4.cpp +++ b/src/chat_gui4.cpp @@ -1116,6 +1116,7 @@ bool ChatGui4::renderContactListContactSmall(const Contact3 c, const bool select return ImGui::Selectable(label.c_str(), selected); } +#if 0 bool ChatGui4::renderSubContactListContact(const Contact3 c, const bool selected) const { std::string label; @@ -1138,6 +1139,7 @@ bool ChatGui4::renderSubContactListContact(const Contact3 c, const bool selected return ImGui::Selectable(label.c_str(), selected); } +#endif void ChatGui4::pasteFile(const char* mime_type) { size_t data_size = 0; diff --git a/src/chat_gui4.hpp b/src/chat_gui4.hpp index a694e5a..1161852 100644 --- a/src/chat_gui4.hpp +++ b/src/chat_gui4.hpp @@ -79,7 +79,7 @@ class ChatGui4 { void renderContactList(void); bool renderContactListContactSmall(const Contact3 c, const bool selected) const; - bool renderSubContactListContact(const Contact3 c, const bool selected) const; + //bool renderSubContactListContact(const Contact3 c, const bool selected) const; void pasteFile(const char* mime_type); };