Resource* NewResourceAssistant::createResource() { if (m_resourceType == ResourceModel::CourseItem) { Course* course = new Course(); DataIndexCourse* templateDataIndexCourse = qobject_cast<DataIndexCourse*>(m_resourceTemplateWidget->templateResource()); if (templateDataIndexCourse) { Course templateCourse; DataAccess dataAccess; dataAccess.loadCourse(templateDataIndexCourse, &templateCourse); course->copyFrom(&templateCourse); for (int i = 0; i < course->lessonCount(); i++) { course->lesson(i)->setId(QUuid::createUuid().toString()); } } course->setId(QUuid::createUuid().toString()); course->setTitle(m_newCourseWidget->title()); course->setKeyboardLayoutName(m_newCourseWidget->keyboardLayoutName()); course->setDescription(m_newCourseWidget->description()); return course; } else if (m_resourceType == ResourceModel::KeyboardLayoutItem) { KeyboardLayout* keyboardLayout = new KeyboardLayout(); DataIndexKeyboardLayout* templateDataIndexKeyboardLayout = qobject_cast<DataIndexKeyboardLayout*>(m_resourceTemplateWidget->templateResource()); if (templateDataIndexKeyboardLayout) { KeyboardLayout templateKeyboardLayout; DataAccess dataAccess; dataAccess.loadKeyboardLayout(templateDataIndexKeyboardLayout, &templateKeyboardLayout); keyboardLayout->copyFrom(&templateKeyboardLayout); } keyboardLayout->setId(QUuid::createUuid().toString()); keyboardLayout->setName(m_newKeyboardLayoutWidget->name()); keyboardLayout->setTitle(m_newKeyboardLayoutWidget->title()); return keyboardLayout; } return 0; }
void KeyboardLayoutEditor::openKeyboardLayout(DataIndexKeyboardLayout* dataIndexKeyboardLayout) { DataAccess dataAccess; m_dataIndexKeyboardLayout = dataIndexKeyboardLayout; if (currentUndoStack()) { currentUndoStack()->disconnect(this, SLOT(validateSelection())); } initUndoStack(QString("keyboard-layout-%1").arg(dataIndexKeyboardLayout->id())); m_propertiesWidget->setUndoStack(currentUndoStack()); setSelectedKey(0); connect(currentUndoStack(), SIGNAL(indexChanged(int)), SLOT(validateSelection())); m_keyboardLayout->setAssociatedDataIndexKeyboardLayout(m_dataIndexKeyboardLayout); if (!dataAccess.loadKeyboardLayout(dataIndexKeyboardLayout, m_keyboardLayout)) { KMessageBox::error(this, i18n("Error while opening keyboard layout")); } if (dataIndexKeyboardLayout->source() == DataIndex::BuiltInResource) { setReadOnly(true); m_messageWidget->setMessageType(KMessageWidget::Information); m_messageWidget->setText(i18n("Built-in keyboard layouts can only be viewed.")); m_messageWidget->setCloseButtonVisible(false); m_messageWidget->animatedShow(); } else { setReadOnly(false); m_messageWidget->animatedHide(); } }