File indexing completed on 2024-12-08 06:28:21
0001 /* 0002 This file is part of Kiten, a KDE Japanese Reference Tool 0003 SPDX-FileCopyrightText: 2011 Daniel E. Moctezuma <democtezuma@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KANJIBROWSERVIEW_H 0009 #define KANJIBROWSERVIEW_H 0010 0011 #include "ui_kanjibrowserview.h" 0012 0013 class EntryKanjidic; 0014 class QAction; 0015 class KanjiBrowser; 0016 class QListWidgetItem; 0017 0018 class KanjiBrowserView : public QWidget, private Ui::KanjiBrowserView 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 /** 0024 * Constructor. 0025 * 0026 * @param parent parent QWidget 0027 */ 0028 explicit KanjiBrowserView(QWidget *parent); 0029 ~KanjiBrowserView() override = default; 0030 0031 /** 0032 * Initial setup. 0033 * 0034 * @param parent parent to which we are going to add some QActions 0035 * @param kanji hash containing kanji with its grades and number of strokes 0036 * @param kanjiGrades sorted list of grades found in KANJIDIC 0037 * @param strokeCount sorted list of strokes found in KANJIDIC 0038 */ 0039 void setupView(KanjiBrowser *parent, const QHash<QString, QPair<int, int>> &kanji, QList<int> &kanjiGrades, QList<int> &strokeCount); 0040 0041 Q_SIGNALS: 0042 /** 0043 * Emitted when the status bar changed. 0044 * 0045 * @param text new text to put in the status bar 0046 */ 0047 void statusBarChanged(const QString &text); 0048 0049 public Q_SLOTS: 0050 /** 0051 * Load the font settings. 0052 */ 0053 void loadSettings(); 0054 0055 private Q_SLOTS: 0056 /** 0057 * Called when the user changed the grade 0058 * of a kanji to be shown in the ComboBox. 0059 * 0060 * @param grade kanji grade to filter 0061 */ 0062 void changeGrade(const int grade); 0063 /** 0064 * Change StackedWidget to "Kanji Information" page. 0065 */ 0066 void changeToInfoPage(); 0067 /** 0068 * Change StackedWidget to "Kanji List" page. 0069 */ 0070 void changeToListPage(); 0071 /** 0072 * Called when the user changed the strokes 0073 * of a kanji to be shown in the ComboBox. 0074 * 0075 * @param strokes number of strokes of a kanji to filter 0076 */ 0077 void changeStrokeCount(const int strokes); 0078 /** 0079 * Search for an item (kanji) in KANJIDIC. 0080 * 0081 * @param item item to search in the dictionary 0082 */ 0083 void searchKanji(const QString &term); 0084 0085 private: 0086 /** 0087 * QFont to CSS font style conversion. 0088 * 0089 * @param font font to be convert 0090 */ 0091 QString convertToCSS(const QFont &font); 0092 /** 0093 * Reload the KListWidget items. 0094 */ 0095 void reloadKanjiList(); 0096 /** 0097 * Shows the information of a kanji as HTML in a QTextBrowser. 0098 * 0099 * @param kanji kanji that will be displayed as HTML 0100 */ 0101 void showKanjiInformation(const EntryKanjidic *kanji); 0102 0103 /** 0104 * Copies last selected kanji to clipboard 0105 */ 0106 void toClipboard(); 0107 0108 /** 0109 * Open the search dialog. 0110 */ 0111 void openSearchDialog(); 0112 0113 /** 0114 * Enumerations of our possible states in QStackedWidget. 0115 */ 0116 enum Page { List, Info }; 0117 0118 enum Grade { AllJouyouGrades = 0, Grade7 = 7, Jinmeiyou = 9 }; 0119 0120 enum StrokesCount { NoStrokeLimit }; 0121 0122 /** 0123 * We need this as we are going to add some QActions to it. 0124 */ 0125 KanjiBrowser *_parent; 0126 /** 0127 * We need to update this action's text from different functions. 0128 */ 0129 QAction *_goToKanjiInfo; 0130 /** 0131 * We need to update this action's text from different functions. 0132 */ 0133 QAction *_searchKanjiAction; 0134 /** 0135 * We need to update this action's text from different functions. 0136 */ 0137 QAction *_copyToClipboard; 0138 /** 0139 * Keep track of the current kanji being displayed in the Kanji Information page. 0140 */ 0141 EntryKanjidic *_currentKanji; 0142 /** 0143 * A hash containing all the kanji (found in KANJIDIC) we need to filter. 0144 */ 0145 QHash<QString, QPair<int, int>> _kanji; 0146 /** 0147 * A list containing all the kanji grades found in KANJIDIC. 0148 */ 0149 QList<int> _gradeList; 0150 /** 0151 * A list containing all the number of strokes found in KANJIDIC. 0152 */ 0153 QList<int> _strokesList; 0154 /** 0155 * Current kanji grades selected by the user to be filtered. 0156 */ 0157 QList<int> _currentGradeList; 0158 /** 0159 * Current number of strokes selected by the user to be filtered. 0160 */ 0161 QList<int> _currentStrokesList; 0162 /** 0163 * Font size of the kanji displayed in the Kanji Information page. 0164 */ 0165 QVariant _kanjiSize; 0166 /** 0167 * Font used in kana (onyomi and kunyomi pronunciations of a kanji). 0168 */ 0169 QFont _kanaFont; 0170 /** 0171 * Font used in information labels of a kanji (Grades, Strokes, etc.). 0172 */ 0173 QFont _labelFont; 0174 }; 0175 0176 #endif