/* Copyright 2010-2012 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 #include "view.hpp" #include "SupportedLanguages.hpp" #include #include #define _(s) QApplication::translate("", s) // #define _(s) QObject::trUtf8(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 UpdateStats(); void KillMe(); void ShowPanel(KissPanel* panel); void NeedReload(); QLocale* GetLocale() {return _locale;} QString GetDateFormat(); QString _language; SupportedLanguages::language _curLanguage; private slots: void OnButtonClicked(int id); void OnButtonChangeUser(); void OnButtonAbout(); void OnButtonQuit(); private: KissCount *_kiss; QSignalMapper _signalMapper; QVBoxLayout *_vbox; QHBoxLayout *_buttonsBox; KissPanel *_curPanel; std::vector _panels; std::vector _buttons; QLocale *_locale; QTranslator _translator; bool _needReload; void InitPanels(); void LoadPanels(); }; class KissPanel: public QFrame { public: KissPanel(KissCount* kiss, wxUI* parent, bool lowResolution=false) : QFrame(static_cast(parent)), _kiss(kiss), _wxUI(parent), _KissButton(0) { DEFAULT_FONT(font); hide(); setFont(font); _lowResolution = lowResolution; } virtual void OnShow()=0; virtual KissPanel* CreatePanel()=0; virtual QPushButton* GetButton() {return createButton();} virtual QString GetToolTip() {return "";} protected: KissCount* _kiss; wxUI* _wxUI; QPushButton* _KissButton; bool _lowResolution; enum {LOW_RES_ICON=0, HIGH_RES_ICON, NB_ICONS}; QString _icons[NB_ICONS]; QPushButton* createButton() { int w; if (!_KissButton) { w = (_lowResolution) ? 64 : 128; _KissButton = new QPushButton(QIcon(_icons[(_lowResolution) ? LOW_RES_ICON : HIGH_RES_ICON]), "", this); _KissButton->setFixedSize(w, w); _KissButton->setIconSize(QSize(w, w)); } return _KissButton; } }; #endif