File indexing completed on 2024-05-19 05:41:19

0001 #ifndef CONVERTOR_H
0002 #define CONVERTOR_H
0003 
0004 #include <QPair>
0005 #include <QWidget>
0006 
0007 #include "convertoroperator.h"
0008 #include "customrulemodel.h"
0009 #include "rwidgets/gmtoolbox/gamemastertool.h"
0010 #include "rwidgets_global.h"
0011 #include "unit.h"
0012 #include "unitmodel.h"
0013 #include <QSettings>
0014 #include <memory>
0015 namespace Ui
0016 {
0017 class Convertor;
0018 }
0019 namespace GMTOOL
0020 {
0021 /**
0022  * @page Convertor Unit Convertor
0023  *
0024  * @section Intro Introduction
0025  * Convertor provides convertion for any kind of unit. This tool is dedicated to GM to convert value from
0026  * books.<br/>
0027  *
0028  * @section unit Supported Units:
0029  * @subsection distance Distance Units:
0030  * @subsection temp Temperature Units:
0031  * @subsection currency Currency Units:
0032  *
0033  *
0034  */
0035 
0036 class RWIDGET_EXPORT Convertor : public QWidget, public GameMasterTool
0037 {
0038     Q_OBJECT
0039 
0040 public:
0041     explicit Convertor(QWidget* parent= 0);
0042     virtual ~Convertor();
0043 
0044     void readSettings();
0045     void writeSettings();
0046 public slots:
0047     void categoryHasChanged(int i);
0048     void categoryHasChangedOnSecondPanel(int i);
0049     void convert();
0050 
0051 private:
0052     Ui::Convertor* ui= nullptr;
0053     QMap<Unit::Category, QString> m_map;
0054     std::unique_ptr<UnitModel> m_model= nullptr;
0055     std::unique_ptr<CategoryModel> m_catModel= nullptr;
0056     std::unique_ptr<CategoryModel> m_toModel= nullptr;
0057     std::unique_ptr<CustomRuleModel> m_customRulesModel= nullptr;
0058 
0059     QHash<QPair<const Unit*, const Unit*>, ConvertorOperator*> m_convertorTable;
0060 };
0061 } // namespace GMTOOL
0062 #endif // CONVERTOR_H