37 #include <QtCore/QTextCodec>
43 class KCodecAction::Private
55 void _k_subActionTriggered(
QAction*);
64 , d(new Private(this))
66 d->init(showAutoOptions);
71 , d(new Private(this))
73 d->init(showAutoOptions);
78 , d(new Private(this))
80 d->init(showAutoOptions);
88 void KCodecAction::Private::init(
bool showAutoOptions)
90 q->setToolBarMode(MenuMode);
91 defaultAction = q->addAction(
i18nc(
"Encodings menu",
"Default"));
94 foreach(
const QStringList &encodingsForScript, KGlobal::charsets()->encodingsByScript())
103 tmp->menu()->addSeparator();
106 for (i=1; i<encodingsForScript.size(); ++i)
108 tmp->
addAction(encodingsForScript.at(i));
110 q->connect(tmp,SIGNAL(triggered(
QAction*)),q,SLOT(_k_subActionTriggered(
QAction*)));
111 tmp->setCheckable(
true);
114 q->setCurrentItem(0);
121 bool success =
false;
125 if (codecName == d->defaultAction->text())
129 QTextCodec *codec = charsets->
codecForName(codecName, success);
137 mib = codec->mibEnum();
155 return QTextCodec::codecForLocale();
158 return QTextCodec::codecForMib(mib);
165 if (action==d->defaultAction)
172 void KCodecAction::Private::_k_subActionTriggered(
QAction *action)
174 if (currentSubAction==action)
176 currentSubAction=action;
178 int mib = q->mibForName(action->text(), &
ok);
181 emit q->triggered(action->text());
182 emit q->triggered(q->codecForMib(mib));
186 if (!action->data().isNull())
202 for (i=0;i<
actions().size();++i)
206 for (j=0;j<
actions().at(i)->menu()->actions().size();++j)
208 if (!j && !
actions().at(i)->menu()->actions().at(j)->data().isNull())
210 if (codec==KGlobal::charsets()->codecForName(
actions().at(i)->menu()->
actions().at(j)->text()))
212 d->currentSubAction=
actions().at(i)->menu()->actions().at(j);
213 d->currentSubAction->trigger();
225 return d->currentSubAction->text();
248 return d->currentSubAction->data().isNull()?
257 d->currentSubAction=d->defaultAction;
258 d->currentSubAction->trigger();
263 for (i=0;i<
actions().size();++i)
267 if (!
actions().at(i)->menu()->actions().isEmpty()
268 &&!
actions().at(i)->menu()->actions().at(0)->data().isNull()
269 &&
actions().at(i)->menu()->actions().at(0)->data().toUInt()==(uint)scri
272 d->currentSubAction=
actions().at(i)->menu()->actions().at(0);
273 d->currentSubAction->trigger();
281 #include "kcodecaction.moc"