File indexing completed on 2025-03-16 03:50:43
0001 /* 0002 SPDX-FileCopyrightText: 2002 Nicolas Hadacek <hadacek@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #ifndef KEXTHIGHSCORE_TAB_H 0008 #define KEXTHIGHSCORE_TAB_H 0009 0010 // KF 0011 #include <KLazyLocalizedString> 0012 // Qt 0013 #include <QComboBox> 0014 #include <QList> 0015 0016 class QLabel; 0017 class QTreeWidget; 0018 0019 0020 namespace KExtHighscore 0021 { 0022 0023 //----------------------------------------------------------------------------- 0024 class PlayersCombo : public QComboBox 0025 { 0026 Q_OBJECT 0027 public: 0028 explicit PlayersCombo(QWidget *parent = nullptr); 0029 0030 void load(); 0031 0032 Q_SIGNALS: 0033 void playerSelected(uint i); 0034 void allSelected(); 0035 void noneSelected(); 0036 0037 private Q_SLOTS: 0038 void activatedSlot(int i); 0039 }; 0040 0041 //----------------------------------------------------------------------------- 0042 class AdditionalTab : public QWidget 0043 { 0044 Q_OBJECT 0045 public: 0046 explicit AdditionalTab(QWidget *parent); 0047 0048 virtual void load(); 0049 0050 private Q_SLOTS: 0051 void playerSelected(uint i) { display(i) ; } 0052 void allSelected(); 0053 0054 protected: 0055 void init(); 0056 static QString percent(uint n, uint total, bool withBraces = false); 0057 virtual void display(uint i) = 0; 0058 0059 private: 0060 PlayersCombo *_combo; 0061 }; 0062 0063 //----------------------------------------------------------------------------- 0064 class StatisticsTab : public AdditionalTab 0065 { 0066 Q_OBJECT 0067 public: 0068 explicit StatisticsTab(QWidget *parent); 0069 0070 void load() override; 0071 0072 private: 0073 enum Count { Total = 0, Won, Lost, Draw, Nb_Counts }; 0074 static const KLazyLocalizedString COUNT_LABELS[Nb_Counts]; 0075 enum Trend { CurrentTrend = 0, WonTrend, LostTrend, Nb_Trends }; 0076 static const KLazyLocalizedString TREND_LABELS[Nb_Trends]; 0077 struct Data { 0078 uint count[Nb_Counts]; 0079 double trend[Nb_Trends]; 0080 }; 0081 QList<Data> _data; 0082 QLabel *_nbs[Nb_Counts], *_percents[Nb_Counts], *_trends[Nb_Trends]; 0083 0084 QString percent(const Data &, Count) const; 0085 void display(uint i) override; 0086 }; 0087 0088 //----------------------------------------------------------------------------- 0089 class HistogramTab : public AdditionalTab 0090 { 0091 Q_OBJECT 0092 public: 0093 explicit HistogramTab(QWidget *parent); 0094 0095 void load() override; 0096 0097 private: 0098 QList<uint> _counts; 0099 QList<uint> _data; 0100 QTreeWidget *_list; 0101 0102 void display(uint i) override; 0103 }; 0104 0105 } // namespace 0106 0107 #endif