File indexing completed on 2024-04-21 04:04:00

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