subsurface/desktop-widgets/templatelayout.h
Stefan Fuchs e6d884cf26 Creation of dive duration string and surface interval string
Update the function to create the dive duration string in a way that
it can be used also in info and stats tab and added some more flexibility.

Changed layout for <1h freedives to "0:05:35" (w/o units) or "5:35min"
(with units and :) or "5min 35sec" (with units with space).

Add a new function to create the surface interval string.

Completely remove old function get_time_string() and get_time_string_s().

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-05-26 15:50:52 -07:00

135 lines
3.9 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef TEMPLATELAYOUT_H
#define TEMPLATELAYOUT_H
#include <grantlee_templates.h>
#include "mainwindow.h"
#include "printoptions.h"
#include "core/statistics.h"
#include "core/qthelper.h"
#include "core/helpers.h"
#include "core/subsurface-qt/DiveObjectHelper.h"
int getTotalWork(print_options *printOptions);
void find_all_templates();
extern QList<QString> grantlee_templates, grantlee_statistics_templates;
class TemplateLayout : public QObject {
Q_OBJECT
public:
TemplateLayout(print_options *PrintOptions, template_options *templateOptions);
~TemplateLayout();
QString generate();
QString generateStatistics();
static QString readTemplate(QString template_name);
static void writeTemplate(QString template_name, QString grantlee_template);
private:
Grantlee::Engine *m_engine;
print_options *PrintOptions;
template_options *templateOptions;
signals:
void progressUpdated(int value);
};
class YearInfo {
public:
stats_t *year;
YearInfo(stats_t& year)
:year(&year)
{
}
YearInfo();
~YearInfo();
};
Q_DECLARE_METATYPE(template_options)
Q_DECLARE_METATYPE(print_options)
Q_DECLARE_METATYPE(YearInfo)
GRANTLEE_BEGIN_LOOKUP(template_options)
if (property == "font") {
switch (object.font_index) {
case 0:
return "Arial, Helvetica, sans-serif";
case 1:
return "Impact, Charcoal, sans-serif";
case 2:
return "Georgia, serif";
case 3:
return "Courier, monospace";
case 4:
return "Verdana, Geneva, sans-serif";
}
} else if (property == "borderwidth") {
return object.border_width;
} else if (property == "font_size") {
return object.font_size / 9.0;
} else if (property == "line_spacing") {
return object.line_spacing;
} else if (property == "color1") {
return object.color_palette.color1.name();
} else if (property == "color2") {
return object.color_palette.color2.name();
} else if (property == "color3") {
return object.color_palette.color3.name();
} else if (property == "color4") {
return object.color_palette.color4.name();
} else if (property == "color5") {
return object.color_palette.color5.name();
} else if (property == "color6") {
return object.color_palette.color6.name();
}
GRANTLEE_END_LOOKUP
GRANTLEE_BEGIN_LOOKUP(print_options)
if (property == "grayscale") {
if (object.color_selected) {
return "";
} else {
return "-webkit-filter: grayscale(100%)";
}
}
GRANTLEE_END_LOOKUP
GRANTLEE_BEGIN_LOOKUP(YearInfo)
if (property == "year") {
return object.year->period;
} else if (property == "dives") {
return object.year->selection_size;
} else if (property == "min_temp") {
const char *unit;
double temp = get_temp_units(object.year->min_temp, &unit);
return object.year->min_temp == 0 ? "0" : QString::number(temp, 'g', 2) + unit;
} else if (property == "max_temp") {
const char *unit;
double temp = get_temp_units(object.year->max_temp, &unit);
return object.year->max_temp == 0 ? "0" : QString::number(temp, 'g', 2) + unit;
} else if (property == "total_time") {
return get_dive_duration_string(object.year->total_time.seconds, QObject::tr("h"),
QObject::tr("min"), QObject::tr("sec"), " ");
} else if (property == "avg_time") {
return get_minutes(object.year->total_time.seconds / object.year->selection_size);
} else if (property == "shortest_time") {
return get_minutes(object.year->shortest_time.seconds);
} else if (property == "longest_time") {
return get_minutes(object.year->longest_time.seconds);
} else if (property == "avg_depth") {
return get_depth_string(object.year->avg_depth);
} else if (property == "min_depth") {
return get_depth_string(object.year->min_depth);
} else if (property == "max_depth") {
return get_depth_string(object.year->max_depth);
} else if (property == "avg_sac") {
return get_volume_string(object.year->avg_sac);
} else if (property == "min_sac") {
return get_volume_string(object.year->min_sac);
} else if (property == "max_sac") {
return get_volume_string(object.year->max_sac);
}
GRANTLEE_END_LOOKUP
#endif