You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.7 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDate>
#include <QWebView>
#include <QTreeWidget>
#include <QFileDialog>
#include <QDir>
#include <QCloseEvent>
#include <QPrinter>
#include <stdint.h>
#include "cclientdata.h"
#include "ctraining.h"
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
protected:
bool m_bDateChanging;
QTreeWidgetItem* m_lpPlanRoot;
QString m_szFileName;
bool m_bHasChanged;
QStatusBar* m_lpStatusBar;
bool GetTaskData(QTreeWidgetItem* lpItem, QString& szDesc, uint32_t& dwTaskCount, uint32_t& dwTaskTime, uint32_t& dwTaskDist, QString& szTaskHR, uint32_t& dwTaskPace, uint32_t& dwTaskPauseTime, uint32_t& dwTaskPauseDist, QString& szTaskPauseHR, uint32_t& dwTaskPausePace);
void SetTaskData(QTreeWidgetItem* lpItem, const QString& szDesc, uint32_t dwCount, uint32_t dwTime, uint32_t dwDist, const QString& szHR, uint32_t dwPace, uint32_t dwPauseTime, uint32_t dwPauseDist, const QString& szPauseHR, uint32_t dwPausePace, const QString& szSport);
int GetIndent(QTreeWidgetItem* lpItem);
void CalculateDay(QTreeWidgetItem* lpDay);
void CalculateSession(QTreeWidgetItem* lpSession);
QTreeWidgetItem* SetChildText(QTreeWidgetItem* lpItem, int iCol, const QString& szText, Qt::AlignmentFlag iAlign);
QTreeWidgetItem* AddChild(QTreeWidget* lpRoot, const QString& szText, CClientData* lpClientData, Qt::AlignmentFlag iAlign, const QColor& Color, const QColor& BGColor);
QTreeWidgetItem* AddChild(QTreeWidgetItem* lpRoot, const QString& szText, CClientData* lpClientData, Qt::AlignmentFlag iAlign, const QColor& Color, const QColor& BGColor, int iPos = -1);
QTreeWidgetItem* AddTask(int iTraining, int iDay, int iSession, int iTask, const QString& szDesc, const QString& szSport, uint32_t dwCount, uint32_t dwTime, uint32_t dwDist, const QString& szHR, uint32_t dwPace, uint32_t dwPauseTime, uint32_t dwPauseDist, const QString& szPauseHR, uint32_t dwPausePace);
QTreeWidgetItem* AddTask(QTreeWidgetItem* lpRoot, int iTask, const QString& szDesc, const QString& szSport, uint32_t dwCount, uint32_t dwTime, uint32_t dwDist, const QString& szHR, uint32_t dwPace, uint32_t dwPauseTime, uint32_t dwPauseDist, const QString& szPauseHR, uint32_t dwPausePace);
QTreeWidgetItem* FindSession(int iTraining, int iDay, int iSession);
QTreeWidgetItem* FindSession(const QString& szTraining, const QString& szDay, const QString& szSession);
QTreeWidgetItem* AddSession(int iTraining, int iDay, int iSession, const QString& szDesc, const QString& szSport);
QTreeWidgetItem* AddSession(QTreeWidgetItem* lpRoot, int iSession, const QString& szDesc, const QString& szSport);
QTreeWidgetItem* FindDay(int iTraining, int iDay);
QTreeWidgetItem* FindDay(const QString& szTraining, const QString& szDay);
QTreeWidgetItem* AddDay(int iTraining, int iDay, const QString& szDesc);
QTreeWidgetItem* AddDay(QTreeWidgetItem* lpRoot, int iDay, const QString& szDesc, int iPos = -1);
QTreeWidgetItem* FindTraining(int iTraining);
QTreeWidgetItem* FindTraining(const QString& szTraining);
bool AddTraining(int iTraining, const QString& szName);
QTreeWidgetItem* AddHR(QTreeWidgetItem* lpRoot, const QString& szName, const QString& szDesc, uint32_t dwMaxHR, uint32_t dwMin, uint32_t dwMax);
QTreeWidgetItem* AddSport(const QString& szSport, uint32_t dwMaxHR, bool bPace);
bool LoadPlan(const QString& szFile, bool bPerson = true, bool bSport = true, bool bPlan = true);
bool SavePlan(const QString& szFile);
bool LoadPerson(CTraining* lpTraining);
bool LoadSport(CTraining* lpTraining);
bool LoadPlan(CTraining* lpTraining);
void Clear();
void InitSportView();
void InitPlanView();
void InitCalendarView();
void closeEvent(QCloseEvent *event);
bool MayClose();
CClientData* GetClientData(QTreeWidgetItem* lpItem);
QTreeWidgetItem* FindSport(const QString& szSport);
QTreeWidgetItem* FindHR(const QString& szSport, const QString& szHR);
QString FormatHR(const QString& szSport, const QString& szHR);
QString FormatPace(const QString& szSport, uint32_t dwPace);
bool EditPlan(QTreeWidgetItem* lpItem, bool bRightClick = false);
bool EditSport(QTreeWidgetItem* lpItem, bool bRightClick = false);
bool EditHR(QTreeWidgetItem* lpItem, bool bRightClick);
uint32_t GetMaxDays();
void Changed(bool bChanged);
void HasChanged();
void DrawCalendar();
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_m_lpSportView_customContextMenuRequested(QPoint pos);
void on_action_PDF_triggered();
void on_action_Print_triggered();
void on_m_lpCalendar_linkClicked(QUrl url);
void on_m_lpTargetDate_dateChanged(QDate date);
void on_m_lpTrainingStart_dateChanged(QDate date);
void on_m_lpPlanView_itemDoubleClicked(QTreeWidgetItem* item, int column);
void on_m_lpPlanView_customContextMenuRequested(QPoint pos);
void on_m_lpWeight_valueChanged(int );
void on_m_lpHeight_valueChanged(int );
void on_m_lpDayOfBirth_dateChanged(QDate date);
void on_m_lpLastName_textChanged(QString );
void on_m_lpFirstName_textChanged(QString );
void on_actionE_xit_triggered();
void on_actionSave_as_triggered();
void on_action_Save_triggered();
void on_action_Open_triggered();
void on_actionNew_from_triggered();
void on_action_New_triggered();
void EditPlan(bool);
void AddSport(bool);
void EditSport(bool);
void DeleteSport(bool);
void AddHR(bool);
void EditHR(bool);
void DeleteHR(bool);
void AddTraining(bool);
void AddDay(bool);
void AddSession(bool);
void AddTask(bool);
void DeleteTraining(bool);
void DeleteDay(bool);
void DeleteSession(bool);
void DeleteTask(bool);
void MoveUp(bool);
void MoveDown(bool);
};
#endif // MAINWINDOW_H