File indexing completed on 2024-04-21 03:51:09

0001 /*
0002     SPDX-FileCopyrightText: 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
0003     SPDX-FileCopyrightText: 2005-2007 Peter Hedlund <peter.hedlund@kdemail.net>
0004     SPDX-FileCopyrightText: 2008-2010 Frederik Gladhorn <gladhorn@kde.org>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef STATISTICSMAINWINDOW_H
0009 #define STATISTICSMAINWINDOW_H
0010 
0011 #include <memory>
0012 
0013 #include <KXmlGuiWindow>
0014 
0015 class ConjugationOptions;
0016 class StatisticsModel;
0017 class KEduVocDocument;
0018 class ParleyMainWindow;
0019 namespace Ui
0020 {
0021 class StatisticsMainWindow;
0022 }
0023 
0024 class StatisticsMainWindow : public KXmlGuiWindow
0025 {
0026     Q_OBJECT
0027 public:
0028     StatisticsMainWindow(const std::shared_ptr<KEduVocDocument> &doc, ParleyMainWindow *parent);
0029     ~StatisticsMainWindow() override;
0030 
0031     void setDocument(const std::shared_ptr<KEduVocDocument> &doc);
0032 
0033     void syncConfig();
0034 
0035 Q_SIGNALS:
0036     void languagesChanged(int, int);
0037 
0038 private Q_SLOTS:
0039     void configurePractice();
0040     void languagesChanged();
0041     void practiceModeSelected(int mode);
0042     void practiceDirectionChanged(int mode);
0043     void rememberPracticeDirectionChanged(bool checked);
0044     void updateVisibleColumns();
0045     void updateModelSettings();
0046 
0047 private:
0048     void initActions();
0049     void initPracticeModeSelection();
0050     void initLanguages();
0051     void initPracticeMode();
0052     void showConjugationOptions(bool visible = true);
0053     int practiceDirectionForPracticeMode(int mode) const;
0054     void setPracticeDirectionForPracticeMode(int direction, int mode);
0055 
0056     ParleyMainWindow *m_mainWindow{nullptr};
0057     std::shared_ptr<KEduVocDocument> m_doc;
0058     StatisticsModel *m_statisticsModel{nullptr};
0059     Ui::StatisticsMainWindow *m_ui{nullptr};
0060     ConjugationOptions *m_conjugationOptions{nullptr};
0061 };
0062 
0063 #endif