#ifndef DICTHIRAGANA_H
#define DICTHIRAGANA_H

#include "inputmode.h"
#include <qdict.h>
#include <qstring.h>
#include <qevent.h>


class DictHiragana {
public:
  DictHiragana();
  ~DictHiragana();
  void init();
  QString convertYomi(const QString&, const InputMode& mode = InputMode());
  QString forceConvtYomi(const QString&, const InputMode& mode = InputMode());
  QString convertYomi(const QKeyEvent&, const InputMode& mode = InputMode(InputMode::KanaInput | InputMode::Hiragana));   // かな入力変換

protected:
  void initDict(QDict<QString>& dict, const QString&);
  QString convertToHira(const QString&);    // ひらがな変換
  QString forceConvtToHira(const QString&);
  QString convertToKata(const QString&);    // カタカナ変換
  QString forceConvtToKata(const QString&);
  QString convertToZenkakuEisu(const QString&);   // 全角英数変換
  void writeDictHira() const;
  void writeDictKata() const;
  void writeDictAlphbt() const;
  void writeDictSymbol() const;
  void writeDictKanaInp() const;
  void writeDictDakuten() const;

private:
  QDict<QString>     _dicthira;      // ひらがな辞書
  QDict<QString>     _dictkata;      // カタカナ辞書
  QDict<QString>     _dictalphbt;    // 全角英字辞書
  QDict<QString>     _dictsymbol;    // 全角数字記号辞書
  QDict<QString>     _dictkanainp;   // かな入力辞書
  QDict<QString>     _dictdakuten;   // かな入力濁点辞書
};


#endif // DICTHIRAGANA_H

