File indexing completed on 2024-04-14 03:40:37

0001 /*
0002     This file is part of Kiten, a KDE Japanese Reference Tool
0003     SPDX-FileCopyrightText: 2001 Jason Katz-Brown <jason@katzbrown.com>
0004     SPDX-FileCopyrightText: 2006 Joseph Kerian <jkerian@gmail.com>
0005     SPDX-FileCopyrightText: 2006 Eric Kjeldergaard <kjelderg@gmail.com>
0006     SPDX-FileCopyrightText: 2011 Daniel E. Moctezuma <democtezuma@gmail.com>
0007 
0008     SPDX-License-Identifier: LGPL-2.0-or-later
0009 */
0010 
0011 #ifndef KITEN_DICTFILEEDICT_H
0012 #define KITEN_DICTFILEEDICT_H
0013 
0014 #include "dictfile.h"
0015 #include "kiten_export.h"
0016 #include "linearedictfile.h"
0017 
0018 #include <QMap>
0019 #include <QStringList>
0020 #include <sys/types.h>
0021 
0022 class Deinflection;
0023 class DictQuery;
0024 class DictionaryPreferenceDialog;
0025 class EntryEdict;
0026 class KConfigSkeleton;
0027 class KConfigSkeletonItem;
0028 
0029 class KITEN_EXPORT DictFileEdict : public DictFile
0030 {
0031     friend class EntryEdict;
0032 
0033 public:
0034     DictFileEdict();
0035     ~DictFileEdict() override;
0036 
0037     EntryList *doSearch(const DictQuery &query) override;
0038     QStringList listDictDisplayOptions(QStringList x) const override;
0039     bool loadDictionary(const QString &file, const QString &name) override;
0040     void loadSettings();
0041     void loadSettings(KConfigSkeleton *config) override;
0042     DictionaryPreferenceDialog *preferencesWidget(KConfigSkeleton *config, QWidget *parent = nullptr) override;
0043     bool validDictionaryFile(const QString &filename) override;
0044     bool validQuery(const DictQuery &query) override;
0045 
0046     static QString *deinflectionLabel;
0047     static QString *wordType;
0048 
0049 protected:
0050     virtual QMap<QString, QString> displayOptions() const;
0051     QStringList *loadListType(KConfigSkeletonItem *item, QStringList *list, const QMap<QString, QString> &long2short);
0052     // This is a blatant abuse of protected methods to make the kanji subclass easy
0053     virtual Entry *makeEntry(const QString &entry);
0054 
0055     LinearEdictFile m_edictFile;
0056 
0057     static QStringList *displayFields;
0058 
0059 private:
0060     QMap<QString, QString> loadDisplayOptions() const;
0061 
0062     Deinflection *m_deinflection;
0063     bool m_hasDeinflection;
0064 };
0065 
0066 #endif