/*
  Copyright 2010-2011 Grégory Soutadé
  This file is part of KissCount.
  KissCount is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  KissCount is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with KissCount.  If not, see .
*/
#ifndef WXUI_H
#define WXUI_H
class ImportEngine;
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define _(s) QObject::tr(s)
class KissCount;
class KissPanel;
class AccountPanel;
class PreferencesPanel;
class wxUI: public QFrame
{
    Q_OBJECT;
public:
    static const int MAX_CATEGORY = 12;
    static QString months[MAX_CATEGORY];
    static QColor categoryColors[MAX_CATEGORY];
    wxUI(KissCount* kiss, const QString& title);
    ~wxUI();
    bool SetLanguage(QString language);
    void ChangeUser();
    void LoadUser();
    void ShowAccount();
    void ShowSearch();
    void ShowPreferences();
    void GenerateMonth(int month, int year);
    void KillMe();
    void ShowPanel(KissPanel* panel);
    void NeedReload();
    int _language;
private slots:
    void OnButtonClicked();
    void OnButtonChangeUser();
    void OnButtonAbout();
    void OnButtonQuit();
private:
    KissCount    *_kiss;
    QVBoxLayout   *_vbox, *_buttonsBox;
    KissPanel      *_curPanel;
    std::vector _panels;
    std::vector _buttons;
    QLocale     *_locale;
    bool         _needReload;
    void InitPanels();
    void LoadPanels();
};
class KissPanel: public QScrollArea
{
public:
    KissPanel(KissCount* kiss, wxUI* parent) : 
	QScrollArea(static_cast(parent)), 
        _kiss(kiss), 
        _wxUI(parent),
        _KissButton(0)
    {hide();}
    virtual void OnShow(QShowEvent * event)=0;
    virtual KissPanel* CreatePanel()=0;
    virtual QPushButton* GetButton(int id) {return 0;}
    virtual QString GetToolTip() {return "";}
protected:
    KissCount* _kiss;
    wxUI* _wxUI;
    QPushButton* _KissButton;
};
#endif