int main (int argc, char * argv[]) { QApplication app (argc, argv); qRegisterMetaType<TreeViewModel> ("TreeViewModel"); qRegisterMetaType<ConfigNode> ("ConfigNode"); qRegisterMetaType<UndoManager> ("UndoManager"); qRegisterMetaType<GUIBackend> ("GUIBackend"); qRegisterMetaType<GUISettings> ("GUISettings"); qmlRegisterType<DataContainer> ("org.libelektra.qtgui", 1, 0, "DataContainer"); QString locale = QLocale::system ().name (); QTranslator translator; translator.load (QString (":/qml/i18n/lang_") + locale + QString (".qm")); app.installTranslator (&translator); QQmlApplicationEngine engine; QQmlContext * ctxt = engine.rootContext (); UndoManager manager; GUIBackend backend; GUISettings settings; kdb::tools::merging::MergingKDB kdb; TreeViewModel treeModel (&kdb); engine.setObjectOwnership (&treeModel, QQmlApplicationEngine::CppOwnership); ctxt->setContextProperty ("undoManager", &manager); ctxt->setContextProperty ("externTreeModel", &treeModel); ctxt->setContextProperty ("guiBackend", &backend); ctxt->setContextProperty ("guiSettings", &settings); try { treeModel.populateModel (); } catch (std::exception const & e) { QMessageBox msgBox; msgBox.setText ("Could not start qt-gui. Failed while reading the whole configuration."); msgBox.setInformativeText (e.what ()); msgBox.setIcon (QMessageBox::Critical); msgBox.exec (); return 1; } engine.load (QUrl (QStringLiteral ("qrc:/qml/main.qml"))); return app.exec (); }
NewKeyCommand::NewKeyCommand(TreeViewModel *model, int index, DataContainer *data, bool isBelow, QUndoCommand* parent) : QUndoCommand(parent) , m_parentNode(model->model().at(index)) , m_newNode(NULL) , m_value(data->newValue()) , m_metaData(data->newMetadata()) { TreeViewModel* parentModel = m_parentNode->getChildren(); kdb::Key newKey = parentModel->createNewKey(m_parentNode->getPath() + "/" + data->newName(), m_value, m_metaData); QStringList newNameSplit = parentModel->getSplittedKeyname(newKey); kdb::Key parentKey = m_parentNode->getKey(); if(!parentKey) parentKey = kdb::Key(m_parentNode->getPath().toStdString(), KEY_END); QStringList parentNameSplit = parentModel->getSplittedKeyname(parentKey); //check if the new key is directly below the parent QSet<QString> diff = newNameSplit.toSet().subtract(parentNameSplit.toSet()); if(diff.count() > 1 || isBelow) setText("newBranch"); else setText("newKey"); m_name = cutListAtIndex(newNameSplit, parentNameSplit.count()).first(); parentModel->sink(m_parentNode, newNameSplit, newKey.dup()); m_newNode = m_parentNode->getChildByName(m_name); parentModel->removeRow(m_parentNode->getChildIndexByName(m_name)); }
int main(int argc, char* argv[]) { QApplication app(argc, argv); qRegisterMetaType<TreeViewModel>("TreeViewModel"); qRegisterMetaType<ConfigNode> ("ConfigNode"); qRegisterMetaType<UndoManager> ("UndoManager"); qRegisterMetaType<GUIBackend> ("GUIBackend"); qRegisterMetaType<GUISettings> ("GUISettings"); qmlRegisterType<DataContainer> ("org.libelektra.qtgui", 1, 0, "DataContainer"); QString locale = QLocale::system().name(); QTranslator translator; translator.load(QString(":/qml/i18n/lang_") + locale + QString(".qm")); app.installTranslator(&translator); QQmlApplicationEngine engine; QQmlContext* ctxt = engine.rootContext(); UndoManager manager; GUIBackend backend; GUISettings settings; TreeViewModel treeModel; engine.setObjectOwnership(&treeModel, QQmlApplicationEngine::CppOwnership); ctxt->setContextProperty("undoManager", &manager); ctxt->setContextProperty("externTreeModel", &treeModel); ctxt->setContextProperty("guiBackend", &backend); ctxt->setContextProperty("guiSettings", &settings); treeModel.populateModel(); engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml"))); return app.exec(); }