KoTemplatesPane::KoTemplatesPane(QWidget* parent, const KComponentData &_componentData, const QString& header, KoTemplateGroup *group, KoTemplate* defaultTemplate) : KoDetailsPane(parent, _componentData, header) , d(new KoTemplatesPanePrivate) { setFocusProxy(m_documentList); KGuiItem openGItem(i18n("Use This Template")); m_openButton->setGuiItem(openGItem); KConfigGroup cfgGrp(componentData().config(), "TemplateChooserDialog"); QString fullTemplateName = cfgGrp.readPathEntry("FullTemplateName", QString()); d->m_alwaysUseTemplate = cfgGrp.readPathEntry("AlwaysUseTemplate", QString()); connect(m_alwaysUseCheckBox, SIGNAL(clicked()), this, SLOT(alwaysUseClicked())); QStandardItem* selectItem = 0; QStandardItem* rootItem = model()->invisibleRootItem(); QStandardItem* defaultItem = 0; for (KoTemplate* t = group->first(); t != 0L; t = group->next()) { if (t->isHidden()) continue; QPixmap preview = t->loadPicture(componentData()); QImage icon = preview.toImage(); icon = icon.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation); icon.convertToFormat(QImage::Format_ARGB32); icon = icon.copy((icon.width() - 64) / 2, (icon.height() - 64) / 2, 64, 64); QStandardItem* item = new QStandardItem(QPixmap::fromImage(icon), t->name()); item->setEditable(false); item->setData(t->description(), Qt::UserRole); item->setData(t->file(), Qt::UserRole + 1); item->setData(preview, Qt::UserRole + 2); rootItem->appendRow(item); if (d->m_alwaysUseTemplate == t->file()) { selectItem = item; } else if (!selectItem && (t->file() == fullTemplateName)) { selectItem = item; } if (defaultTemplate && (t->file() == defaultTemplate->file())) { defaultItem = item; } } QModelIndex selectedIndex; if (selectItem) { selectedIndex = model()->indexFromItem(selectItem); d->m_selected = true; } else if (defaultItem) { selectedIndex = model()->indexFromItem(defaultItem); } else { selectedIndex = model()->indexFromItem(model()->item(0)); } m_documentList->selectionModel()->select(selectedIndex, QItemSelectionModel::Select); m_documentList->selectionModel()->setCurrentIndex(selectedIndex, QItemSelectionModel::Select); }
void KoTemplatesPane::openFile(const QModelIndex& index) { if (index.isValid()) { QStandardItem* item = model()->itemFromIndex(index); KConfigGroup cfgGrp(componentData().config(), "TemplateChooserDialog"); cfgGrp.writePathEntry("FullTemplateName", item->data(Qt::UserRole + 1).toString()); cfgGrp.writeEntry("LastReturnType", "Template"); cfgGrp.writeEntry("AlwaysUseTemplate", d->m_alwaysUseTemplate); emit openUrl(KUrl(item->data(Qt::UserRole + 1).toString())); } }
void KoRecentDocumentsPane::openFile(const QModelIndex& index) { if (!index.isValid()) return; KConfigGroup cfgGrp(componentData().config(), "TemplateChooserDialog"); cfgGrp.writeEntry("LastReturnType", "File"); KoFileListItem* item = static_cast<KoFileListItem*>(model()->itemFromIndex(index)); KFileItem fileItem = item->fileItem(); if (!fileItem.isNull()) { emit openUrl(fileItem.url()); } }
void KoTemplatesPane::alwaysUseClicked() { QStandardItem* item = model()->itemFromIndex(m_documentList->selectionModel()->currentIndex()); if (!m_alwaysUseCheckBox->isChecked()) { d->m_alwaysUseTemplate.clear(); } else { d->m_alwaysUseTemplate = item->data(Qt::UserRole + 1).toString(); } KConfigGroup cfgGrp(componentData().config(), "TemplateChooserDialog"); cfgGrp.writeEntry("AlwaysUseTemplate", d->m_alwaysUseTemplate); cfgGrp.sync(); emit alwaysUseChanged(this, d->m_alwaysUseTemplate); }