summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/common-dialogs/languageoptions.h
blob: b36d49a364b4257803f5035c60c20c34fb7cb953 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/***************************************************************************

                      language options for kvoctrain

    -----------------------------------------------------------------------

    begin                : Tue Apr 5 2005

    copyright            :(C) 2005 Peter Hedlund

    email                : peter.hedlund@kdemail.net

    -----------------------------------------------------------------------

 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef LANGUAGEOPTIONS_H
#define LANGUAGEOPTIONS_H

#include <qpopupmenu.h>

#include "languageoptionsbase.h"
#include "langset.h"

class LanguageOptions : public LanguageOptionsBase
{
  Q_OBJECT

public:
  LanguageOptions(LangSet & langset, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
  virtual ~LanguageOptions ();

  LangSet getLangSet () const;

  struct Country
  {
    Country(const QString& c, const QValueList<int> l, const QString& p, int i)
      : country(c), langs(l), pixmap(p), id(i) { }
    Country() { }
    QString country;
    QValueList<int> langs;
    QString pixmap;
    int id;
  };

  struct Region
  {
    Region (const QString& reg)
      : region(reg) {}
    Region() {}
    QString region;
    QValueList<Country> countries;
  };

  void updateWidgets();
  bool hasChanged();
  bool isDefault();
  void updateSettings();

signals:
  void widgetModified();

protected slots:
  void slotDeleteClicked();
  void slotNewClicked();
  void slotPixmapClicked();
  void slotLangChanged(const QString&);
  void slotShort2Changed(const QString&);
  void slotShortActivated(const QString&);
  void slotNewNameChanged(const QString&);
  void slotLangFromGlobalActivated(int);
  void slotLangFromISO6391Activated(int);
  void slotKeyboardLayoutChanged(const QString&);

private:
  bool setPixmap(QString pm);
  void enableLangWidgets();
  void loadCountryData();
  void loadISO6391Data();
  void createISO6391Menus();

  LangSet global_langset;
  QMap<int, Country> countryIdMap;
  QPopupMenu * langset_popup;
  QPopupMenu * iso6391_popup;
  LangSet m_langSet;
  QString m_lastPix;
  bool m_hasChanged;
};

#endif