| 124 | waybar::Factory::Factory(const Bar& bar, const Json::Value& config) : bar_(bar), config_(config) {} |
| 125 | |
| 126 | waybar::AModule* waybar::Factory::makeModule(const std::string& name, |
| 127 | const std::string& pos) const { |
| 128 | try { |
| 129 | auto hash_pos = name.find('#'); |
| 130 | auto ref = name.substr(0, hash_pos); |
| 131 | auto id = hash_pos != std::string::npos ? name.substr(hash_pos + 1) : ""; |
| 132 | #if defined(__FreeBSD__) || defined(__linux__) |
| 133 | if (ref == "battery") { |
| 134 | return new waybar::modules::Battery(id, bar_, config_[name]); |
| 135 | } |
| 136 | #endif |
| 137 | #ifdef HAVE_GAMEMODE |
| 138 | if (ref == "gamemode") { |
| 139 | return new waybar::modules::Gamemode(id, config_[name]); |
| 140 | } |
| 141 | #endif |
| 142 | #ifdef HAVE_UPOWER |
| 143 | if (ref == "upower") { |
| 144 | return new waybar::modules::UPower(id, config_[name]); |
| 145 | } |
| 146 | #endif |
| 147 | #ifdef HAVE_PIPEWIRE |
| 148 | if (ref == "privacy") { |
| 149 | return new waybar::modules::privacy::Privacy(id, config_[name], bar_.orientation, pos); |
| 150 | } |
| 151 | #endif |
| 152 | #ifdef HAVE_MPRIS |
| 153 | if (ref == "mpris") { |
| 154 | return new waybar::modules::mpris::Mpris(id, config_[name]); |
| 155 | } |
| 156 | #endif |
| 157 | #ifdef HAVE_SWAY |
| 158 | if (ref == "sway/mode") { |
| 159 | return new waybar::modules::sway::Mode(id, config_[name]); |
| 160 | } |
| 161 | if (ref == "sway/workspaces") { |
| 162 | return new waybar::modules::sway::Workspaces(id, bar_, config_[name]); |
| 163 | } |
| 164 | if (ref == "sway/window") { |
| 165 | return new waybar::modules::sway::Window(id, bar_, config_[name]); |
| 166 | } |
| 167 | if (ref == "sway/language") { |
| 168 | return new waybar::modules::sway::Language(id, config_[name]); |
| 169 | } |
| 170 | if (ref == "sway/scratchpad") { |
| 171 | return new waybar::modules::sway::Scratchpad(id, config_[name]); |
| 172 | } |
| 173 | #endif |
| 174 | #ifdef HAVE_WLR_TASKBAR |
| 175 | if (ref == "wlr/taskbar") { |
| 176 | return new waybar::modules::wlr::Taskbar(id, bar_, config_[name]); |
| 177 | } |
| 178 | #endif |
| 179 | #ifdef HAVE_EXT_WORKSPACES |
| 180 | if (ref == "ext/workspaces") { |
| 181 | return new waybar::modules::ext::WorkspaceManager(id, bar_, config_[name]); |
| 182 | } |
| 183 | #endif |
no test coverage detected