File indexing completed on 2023-05-30 09:04:03

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 <config-kiten.h>
0015 
0016 #include "dictfile.h"
0017 #include "indexededictfile.h"
0018 #include "kiten_export.h"
0019 #include "linearedictfile.h"
0020 
0021 #include <QMap>
0022 #include <QStringList>
0023 #include <sys/types.h>
0024 
0025 class Deinflection;
0026 class DictQuery;
0027 class DictionaryPreferenceDialog;
0028 class EntryEdict;
0029 class KConfigSkeleton;
0030 class KConfigSkeletonItem;
0031 
0032 class KITEN_EXPORT DictFileEdict : public DictFile
0033 {
0034     friend class EntryEdict;
0035 
0036 public:
0037     DictFileEdict();
0038     ~DictFileEdict() override;
0039 
0040     EntryList *doSearch(const DictQuery &query) override;
0041     QStringList listDictDisplayOptions(QStringList x) const override;
0042     bool loadDictionary(const QString &file, const QString &name) override;
0043     void loadSettings();
0044     void loadSettings(KConfigSkeleton *config) override;
0045     DictionaryPreferenceDialog *preferencesWidget(KConfigSkeleton *config, QWidget *parent = nullptr) override;
0046     bool validDictionaryFile(const QString &filename) override;
0047     bool validQuery(const DictQuery &query) override;
0048 
0049     static QString *deinflectionLabel;
0050     static QString *wordType;
0051 
0052 protected:
0053     virtual QMap<QString, QString> displayOptions() const;
0054     QStringList *loadListType(KConfigSkeletonItem *item, QStringList *list, const QMap<QString, QString> &long2short);
0055     // This is a blatant abuse of protected methods to make the kanji subclass easy
0056     virtual Entry *makeEntry(const QString &entry);
0057 
0058     LinearEdictFile m_edictFile;
0059 
0060     static QStringList *displayFields;
0061 
0062 private:
0063     QMap<QString, QString> loadDisplayOptions() const;
0064 
0065     Deinflection *m_deinflection;
0066     bool m_hasDeinflection;
0067 };
0068 
0069 #endif