#ifndef STATUSWIDGET_H
#define STATUSWIDGET_H

#include <QWidget>
#include <QSettings>

namespace Ui {
class StatusWidget;
}

class PatchDownloader;
class LotroDatManager;

class StatusWidget : public QWidget
{
    Q_OBJECT

public:
    explicit StatusWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent = 0);
    ~StatusWidget();

public slots:
    void showTooltip(QString text);
    void hideTooltip();

private slots:
    void onPatchDownloaderStarted();
    void onPatchDownloaderFinished();
    void onPatchDownloaderProgressChanged(quint64 bytesDownloaded, quint64 bytesTotal,
                                          QString download_speed_formatted,
                                          QString elapsed_time_formatted);

    void changeCentralWidget();

    void invokeUpdateFontSize();

    void on_site_link_button_clicked();

    void on_forum_link_button_clicked();

    void on_guides_link_button_clicked();

    void on_addons_link_button_clicked();

    void on_bugreport_link_button_clicked();

    void on_donate_link_button_clicked();

    void on_game_button_clicked();

private:
    Ui::StatusWidget *ui;

    QSettings* app_settings;
    PatchDownloader* patch_updater;
    LotroDatManager* lotro_manager;

    const QColor inWorkColor = QColor(85, 170, 255);
    const QColor readyColor = QColor(0, 170, 0);
    const QColor errorColor = QColor(255, 85, 0);

    const QString inWorkIconStyle = "image: url(:/assets/info.png);";
    const QString readyIconStyle = "image: url(:/assets/ok.png);";
    const QString criticalIconStyle = "image: url(:/assets/critical.png);";
    const QString warningIconStyle = "image: url(:/assets/warning.png);";
};

#endif // STATUSWIDGET_H
