TemplateManagementDialog::TemplateManagementDialog( QWidget *parent, const QStringList &templates, const QString &type ) : KDialog( parent ), m_templates( templates ), m_type( type ), m_changed( false ) { QString m_type_translated = i18n( qPrintable( m_type ) ); setCaption( i18n( "Manage %1 Templates", m_type_translated ) ); setButtons( Ok | Cancel | Help ); setObjectName( "template_management_dialog" ); setHelp( "entering-data-events-template-buttons", "korganizer" ); QWidget *widget = new QWidget( this ); widget->setObjectName( "template_management_dialog_base" ); m_base.setupUi( widget ); setMainWidget( widget ); m_base.m_listBox->addItems( m_templates ); m_base.m_listBox->setSelectionMode( QAbstractItemView::SingleSelection ); connect( m_base.m_buttonAdd, SIGNAL(clicked()), SLOT(slotAddTemplate()) ); connect( m_base.m_buttonRemove, SIGNAL(clicked()), SLOT(slotRemoveTemplate()) ); connect( m_base.m_buttonApply, SIGNAL(clicked()), SLOT(slotApplyTemplate()) ); connect( m_base.m_listBox, SIGNAL(itemSelectionChanged()), SLOT(slotItemSelected()) ); connect( m_base.m_listBox, SIGNAL(itemDoubleClicked(QListWidgetItem *)), SLOT(slotApplyTemplate()) ); connect( this, SIGNAL(okClicked()), SLOT(slotOk()) ); m_base.m_buttonRemove->setEnabled( false ); m_base.m_buttonApply->setEnabled( false ); }
void TemplateManagementDialog::slotAddTemplate() { bool ok; bool duplicate = false; QString m_type_translated = i18n( qPrintable( m_type ) ); const QString newTemplate = KInputDialog::getText( i18n( "Template Name" ), i18n( "Please enter a name for the new template:" ), i18n( "New %1 Template", m_type_translated ), &ok ); if ( newTemplate.isEmpty() || !ok ) { return; } if ( m_templates.contains( newTemplate ) ) { int rc = KMessageBox::warningContinueCancel( this, i18n( "A template with that name already exists, do you want to overwrite it?" ), i18n( "Duplicate Template Name" ), KGuiItem( i18n( "Overwrite" ) ) ); if ( rc == KMessageBox::Cancel ) { QTimer::singleShot( 0, this, SLOT(slotAddTemplate()) ); return; } duplicate = true; } if ( !duplicate ) { int count = m_base.m_listBox->count(); m_templates.append( newTemplate ); m_base.m_listBox->addItem( newTemplate ); QListWidgetItem *item = m_base.m_listBox->item( count ); m_base.m_listBox->setItemSelected( item, true ); } m_newTemplate = newTemplate; m_changed = true; // From this point on we need to keep the original event around until the // user has closed the dialog, applying a template would make little sense enableButtonApply( false ); // neither does adding it again m_base.m_buttonAdd->setEnabled( false ); }
SetupTemplate::SetupTemplate(QWidget* const parent) : QScrollArea(parent), d(new Private) { QWidget* const panel = new QWidget(viewport()); setWidget(panel); setWidgetResizable(true); const int spacing = QApplication::style()->pixelMetric(QStyle::PM_DefaultLayoutSpacing); d->listView = new TemplateList(panel); d->listView->setFixedHeight(100); // -------------------------------------------------------- QLabel* const label0 = new QLabel(i18n("Template Title:"), panel); d->titleEdit = new QLineEdit(panel); d->titleEdit->setClearButtonEnabled(true); d->titleEdit->setPlaceholderText(i18n("Enter the metadata template title here.")); d->titleEdit->setWhatsThis(i18n("<p>Enter the metadata template title here. This title will be " "used to identify a template in your collection.</p>")); label0->setBuddy(d->titleEdit); // -------------------------------------------------------- d->tview = new TemplatePanel(panel); // -------------------------------------------------------- QLabel* const note = new QLabel(i18n("<b>Note: These information are used to set " "<b><a href='http://en.wikipedia.org/wiki/Extensible_Metadata_Platform'>XMP</a></b> " "and <b><a href='http://en.wikipedia.org/wiki/IPTC'>IPTC</a></b> tag contents. " "There is no limitation with XMP, but note that IPTC text tags " "only support the printable <b><a href='http://en.wikipedia.org/wiki/Ascii'>ASCII</a></b> " "character set, and tag sizes are limited. " "Use contextual help for details.</b>"), panel); note->setOpenExternalLinks(true); note->setWordWrap(true); note->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); // ------------------------------------------------------------- d->addButton = new QPushButton(panel); d->delButton = new QPushButton(panel); d->repButton = new QPushButton(panel); d->addButton->setText(i18n("&Add...")); d->addButton->setIcon(QIcon::fromTheme(QLatin1String("list-add"))); d->delButton->setText(i18n("&Remove")); d->delButton->setIcon(QIcon::fromTheme(QLatin1String("list-remove"))); d->repButton->setText(i18n("&Replace...")); d->repButton->setIcon(QIcon::fromTheme(QLatin1String("view-refresh"))); d->delButton->setEnabled(false); d->repButton->setEnabled(false); // ------------------------------------------------------------- QGridLayout* const grid = new QGridLayout; grid->setContentsMargins(spacing, spacing, spacing, spacing); grid->setSpacing(spacing); grid->setAlignment(Qt::AlignTop); grid->setColumnStretch(1, 10); grid->setRowStretch(4, 10); grid->addWidget(d->listView, 0, 0, 4, 2); grid->addWidget(d->addButton, 0, 2, 1, 1); grid->addWidget(d->delButton, 1, 2, 1, 1); grid->addWidget(d->repButton, 2, 2, 1, 1); grid->addWidget(label0, 4, 0, 1, 1); grid->addWidget(d->titleEdit, 4, 1, 1, 1); grid->addWidget(d->tview, 5, 0, 1, 3); grid->addWidget(note, 6, 0, 1, 3); panel->setLayout(grid); panel->setTabOrder(d->listView, d->addButton); panel->setTabOrder(d->addButton, d->delButton); panel->setTabOrder(d->delButton, d->repButton); panel->setTabOrder(d->repButton, d->titleEdit); panel->setTabOrder(d->titleEdit, d->tview); // -------------------------------------------------------- connect(d->listView, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged())); connect(d->addButton, SIGNAL(clicked()), this, SLOT(slotAddTemplate())); connect(d->delButton, SIGNAL(clicked()), this, SLOT(slotDelTemplate())); connect(d->repButton, SIGNAL(clicked()), this, SLOT(slotRepTemplate())); // -------------------------------------------------------- readSettings(); d->titleEdit->setFocus(); }