#ifndef OUTPUT_OPTIONS_H #define OUTPUT_OPTIONS_H #include #include #if __GNUC__ < 8 # include #else # include #endif #include #include #include #include "../net/net.h" #include "../settings/settings.h" enum class ColumnType { goods_name, goods_price_per_unit, goods_quantity, goods_net_weight, goods_total }; struct Column { // Example: ColumnType type; // goods_name std::string name; // "Товар" unsigned int position; // "0" <-- 0 = "A", 1 = "B", etc.. column letter in // table processor (i.e. excel or libreoffice) } typedef Column; enum class OutputFormat { csv, ods, xlsx, plaintext } typedef OutputFormat; class OutputOptions { std::vector order; bool print_header; bool print_total; OutputFormat format; std::string path; public: OutputOptions(); void add_or_update_column(Column &); void update_column(Column&, unsigned short); void remove_column(unsigned short); void remove_column(ColumnType); unsigned short find_column(ColumnType); bool column_exist(ColumnType); Column& get_column(ColumnType); std::vector& get_columns(); void set_print_header(bool); bool get_print_header(); void set_print_total(bool); bool get_print_total(); void set_output_format(OutputFormat); OutputFormat get_output_format(); void set_path(std::string); std::string &get_path(); }; #endif // OUTPUT_OPTIONS_H