17#include <klocalizedstring.h>
19#include <kconfiggroup.h>
29 int b = actions.count();
33 QAction *ac = actions[ w ];
34 int j = str.localeAwareCompare(ac->text());
58 QAction *
findAction(
const QString &data)
const;
83 :
button(new QPushButton(parent)),
84 popup(new QMenu(parent)),
85 locale(QLocale::system().name()),
89 QHBoxLayout *layout =
new QHBoxLayout(parent);
90 layout->setContentsMargins(0, 0, 0, 0);
93 parent->setFocusProxy(
button);
94 parent->setFocusPolicy(
button->focusPolicy());
98 QObject::connect(
popup, SIGNAL(triggered(QAction*)), parent, SLOT(slotTriggered(QAction*)));
99 QObject::connect(
popup, SIGNAL(hovered(QAction*)), parent, SLOT(slotHovered(QAction*)));
127 if (name.isEmpty()) {
129 QLocale locale(languageCode);
130 if (locale != QLocale::c()) {
131 text = locale.nativeLanguageName();
139 text += QLatin1String(
" (") + languageCode + QLatin1Char(
')');
143 QAction *a =
new QAction(QIcon(), text,
this);
144 a->setData(languageCode);
145 if (index >= 0 && index < d->popup->actions().count() - 1) {
150 d->
ids.append(languageCode);
155 if (index >= 0 && index < d->popup->actions().count() - 1) {
165 const QStringList localeDirs = QStandardPaths::locateAll(QStandardPaths::AppDataLocation, QString(
"locale"), QStandardPaths::LocateDirectory);
166 Q_FOREACH (
const QString &localeDir, localeDirs) {
167 const QStringList entries = QDir(localeDir).entryList(QDir::Dirs);
168 Q_FOREACH (
const QString &
d, entries) {
169 const QString entryFile = localeDir +
'/' +
d +
"/kf5_entry.desktop";
170 if (QFile::exists(entryFile)) {
171 langlist.append(entryFile);
176 for (
int i = 0,
count = langlist.count(); i <
count; ++i) {
177 QString fpath = langlist[i].left(langlist[i].
length() - 14);
178 QString code = fpath.mid(fpath.lastIndexOf(
'/') + 1);
179 KConfig entry(langlist[i], KConfig::SimpleConfig);
180 KConfigGroup group(&entry,
"KCM Locale");
181 QString name = group.readEntry(
"Name", i18n(
"without name"));
210 return d->
ids.count();
224 button->setText(QString());
230 return d->
ids.contains(languageCode);
240 Q_FOREACH (QAction *a,
popup->actions()) {
241 if (!a->data().toString().compare(data)) {
250 if (!
d->
ids.count()) {
254 if (
d->
ids.indexOf(languageCode) < 0) {
266 if (!a->data().isValid()) {
269 current = a->data().toString();
272 button->setText(a->text());
qreal length(const QPointF &vec)
QString button(const QWheelEvent &ev)