From c058a2d196509c15de6c85c241052f5ddc37c430 Mon Sep 17 00:00:00 2001 From: dmitry Date: Fri, 20 Aug 2021 01:09:16 +0300 Subject: [PATCH] Add number to shortDescripton --- include/modules/sway/language.hpp | 7 +++++++ src/modules/sway/language.cpp | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/include/modules/sway/language.hpp b/include/modules/sway/language.hpp index 5cceee6b..1faf52b3 100644 --- a/include/modules/sway/language.hpp +++ b/include/modules/sway/language.hpp @@ -21,6 +21,12 @@ class Language : public ALabel, public sigc::trackable { auto update() -> void; private: + enum class DispayedShortFlag { + None = 0, + ShortName = 1, + ShortDescription = 1 << 1 + }; + struct Layout { std::string full_name; std::string short_name; @@ -53,6 +59,7 @@ class Language : public ALabel, public sigc::trackable { std::string tooltip_format_ = ""; std::map layouts_map_; bool is_variant_displayed; + std::byte displayed_short_flag = static_cast(DispayedShortFlag::None); util::JsonParser parser_; std::mutex mutex_; diff --git a/src/modules/sway/language.cpp b/src/modules/sway/language.cpp index 0b56dad5..c13c636e 100644 --- a/src/modules/sway/language.cpp +++ b/src/modules/sway/language.cpp @@ -20,6 +20,12 @@ const std::string Language::XKB_ACTIVE_LAYOUT_NAME_KEY = "xkb_active_layout_name Language::Language(const std::string& id, const Json::Value& config) : ALabel(config, "language", id, "{}", 0, true) { is_variant_displayed = format_.find("{variant}") != std::string::npos; + if (format_.find("{}") != std::string::npos || format_.find("{short}") != std::string::npos) { + displayed_short_flag |= static_cast(DispayedShortFlag::ShortName); + } + if (format_.find("{shortDescription}") != std::string::npos) { + displayed_short_flag |= static_cast(DispayedShortFlag::ShortDescription); + } if (config.isMember("tooltip-format")) { tooltip_format_ = config["tooltip-format"].asString(); } @@ -155,9 +161,15 @@ auto Language::init_layouts_map(const std::vector& used_layouts) -> if (short_name_to_number_map.count(used_layout->short_name) == 0) { short_name_to_number_map[used_layout->short_name] = 1; } - - used_layout->short_name = - used_layout->short_name + std::to_string(short_name_to_number_map[used_layout->short_name]++); + + if (displayed_short_flag != static_cast(0)) { + int& number = short_name_to_number_map[used_layout->short_name]; + used_layout->short_name = + used_layout->short_name + std::to_string(number); + used_layout->short_description = + used_layout->short_description + std::to_string(number); + ++number; + } } }