#ifndef NEWSBOAT_SELECTFORMACTION_H_ #define NEWSBOAT_SELECTFORMACTION_H_ #include "filtercontainer.h" #include "formaction.h" #include "listwidget.h" namespace newsboat { class SelectFormAction : public FormAction { public: enum class SelectionType { TAG, FILTER }; SelectFormAction(View&, std::string formstr, ConfigContainer* cfg); ~SelectFormAction() override = default; void prepare() override; void init() override; const std::vector& get_keymap_hint() const override; void set_selected_value(const std::string& new_value) { value = new_value; } std::string get_selected_value() { return value; } void set_tags(const std::vector& t) { tags = t; } void set_filters(const std::vector& ff) { filters = ff; } void set_type(SelectionType t) { type = t; } void handle_cmdline(const std::string& cmd) override; std::string id() const override { return (type == SelectionType::TAG) ? "tagselection" : "filterselection"; } std::string title() override; protected: std::string main_widget() const override { return "taglist"; } private: bool process_operation(Operation op, const std::vector& args, BindingType bindingType = BindingType::BindKey) override; bool quit; bool is_first_draw; SelectionType type; std::string value; std::vector tags; std::vector filters; std::string format_line(const std::string& selecttag_format, const std::string& tag, unsigned int pos, unsigned int width); void update_heading(); ListWidget tags_list; }; } // namespace newsboat #endif /* NEWSBOAT_SELECTFORMACTION_H_ */