24 #include <QDomDocument>
28 #include <kstandarddirs.h>
34 if (s == QLatin1String(
"mathematics")) {
38 if (s == QLatin1String(
"electromagnetism")) {
42 if (s == QLatin1String(
"nuclear")) {
46 if (s == QLatin1String(
"thermodynamics")) {
50 if (s == QLatin1String(
"gravitation")) {
54 kDebug() <<
"Invalid Category For Constant: " << s;
62 QDomDocument doc(QLatin1String(
"list_of_constants"));
63 QFile file(KGlobal::dirs()->findResource(
"appdata", QLatin1String(
"scienceconstants.xml")));
65 if (!file.open(QIODevice::ReadOnly)) {
66 kDebug() <<
"Did not find file \"scienceconstants.xml\". No constants will be available.";
69 if (!doc.setContent(&file)) {
71 kDebug() <<
"The file \"scienceconstants.xml\" does not seem to be a valid description file. No constants will be available.";
78 QDomElement docElem = doc.documentElement();
81 QDomNode n = docElem.firstChild();
83 QDomElement e = n.toElement();
84 if (!e.isNull() && e.tagName() == QLatin1String(
"constant")) {
87 tmp_const.
name = I18N_NOOP(e.attributeNode(QLatin1String(
"name")).value());
88 tmp_const.
label = e.attributeNode(QLatin1String(
"symbol")).value();
89 tmp_const.
value = e.attributeNode(QLatin1String(
"value")).value();
91 QString tmp_str_category = e.attributeNode(QLatin1String(
"category")).value();
93 tmp_const.
category = stringToCategory(tmp_str_category);
94 tmp_const.
whatsthis = e.firstChildElement(QLatin1String(
"description")).text();
96 Constants.append(tmp_const);
103 void KCalcConstMenu::init_all()
105 QMenu *math_menu = addMenu(i18n(
"Mathematics"));
106 QMenu *em_menu = addMenu(i18n(
"Electromagnetism"));
107 QMenu *nuclear_menu = addMenu(i18n(
"Atomic && Nuclear"));
108 QMenu *thermo_menu = addMenu(i18n(
"Thermodynamics"));
109 QMenu *gravitation_menu = addMenu(i18n(
"Gravitation"));
114 for (
int i = 0; i < Constants.size(); i++) {
115 QAction *tmp_action =
new QAction(i18n(Constants.at(i).name.toAscii().data()),
this);
116 tmp_action->setData(QVariant(i));
118 math_menu->addAction(tmp_action);
120 em_menu->addAction(tmp_action);
121 if (Constants.at(i).category &
Nuclear)
122 nuclear_menu->addAction(tmp_action);
124 thermo_menu->addAction(tmp_action);
126 gravitation_menu->addAction(tmp_action);
133 int chosen_const_idx = (chosen_const->data()).toInt(& tmp_bool);
138 :
QMenu(title, parent)
150 #include "kcalc_const_menu.moc"
ConstantCategory category