58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
|
#ifndef OUTPUT_OPTIONS_H
|
||
|
#define OUTPUT_OPTIONS_H
|
||
|
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
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<Column> 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<Column>& 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
|