STDMETHODIMP CTabbedMDIChildModifiedList::Remove( long index, ITabbedMDIChildModifiedItem** item) { HRESULT hr = E_INVALIDARG; POSITION pos = this->FindIndex(index); if(pos != NULL) { CComPtr<ITabbedMDIChildModifiedItem> oldItem(this->GetAt(pos)); this->RemoveAt(pos); if(oldItem) { oldItem->putref_ParentList(NULL); if(item != NULL) { *item = oldItem.Detach(); } } } return hr; }
void AddJobDialog::saveTemplateButtonClicked(void) { qDebug("Saving template"); QString name = m_lastTemplateName; if(name.isEmpty() || name.contains('<') || name.contains('>')) { name = tr("New Template"); int n = 1; while(OptionsModel::templateExists(name)) { name = tr("New Template (%1)").arg(QString::number(++n)); } } QScopedPointer<OptionsModel> options(new OptionsModel(m_sysinfo)); saveOptions(options.data()); if(options->equals(m_defaults)) { QMessageBox::warning (this, tr("Oups"), tr("<nobr>It makes no sense to save the default settings!</nobr>")); ui->cbxTemplate->blockSignals(true); ui->cbxTemplate->setCurrentIndex(0); ui->cbxTemplate->blockSignals(false); REMOVE_USAFED_ITEM; return; } for(int i = 0; i < ui->cbxTemplate->count(); i++) { const QString tempName = ui->cbxTemplate->itemText(i); if(tempName.contains('<') || tempName.contains('>')) { continue; } const OptionsModel* test = reinterpret_cast<const OptionsModel*>(ui->cbxTemplate->itemData(i).value<const void*>()); if(test != NULL) { if(options->equals(test)) { QMessageBox::information (this, tr("Oups"), tr("<nobr>The current settings are already saved as template:<br><b>%1</b></nobr>").arg(ui->cbxTemplate->itemText(i))); ui->cbxTemplate->blockSignals(true); ui->cbxTemplate->setCurrentIndex(i); ui->cbxTemplate->blockSignals(false); REMOVE_USAFED_ITEM; return; } } } forever { bool ok = false; QStringList items; items << name; for(int i = 0; i < ui->cbxTemplate->count(); i++) { const QString tempName = ui->cbxTemplate->itemText(i); if(!(tempName.contains('<') || tempName.contains('>'))) { items << tempName; } } name = QInputDialog::getItem(this, tr("Save Template"), tr("Please enter the name of the template:").leftJustified(144, ' '), items, 0, true, &ok).simplified(); if(!ok) { return; } if(name.isEmpty()) { continue; } if(name.contains('<') || name.contains('>') || name.contains('\\') || name.contains('/') || name.contains('"')) { QMessageBox::warning (this, tr("Invalid Name"), tr("<nobr>Sorry, the name you have entered is invalid!</nobr>")); while(name.contains('<')) name.remove('<'); while(name.contains('>')) name.remove('>'); while(name.contains('\\')) name.remove('\\'); while(name.contains('/')) name.remove('/'); while(name.contains('"')) name.remove('"'); name = name.simplified(); continue; } if(OptionsModel::templateExists(name)) { int ret = QMessageBox::warning (this, tr("Already Exists"), tr("<nobr>A template of that name already exists! Overwrite?</nobr>"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if(ret != QMessageBox::Yes) { continue; } } break; } if(!OptionsModel::saveTemplate(options.data(), name)) { QMessageBox::critical(this, tr("Save Failed"), tr("Sorry, the template could not be saved!")); return; } ui->cbxTemplate->blockSignals(true); for(int i = 0; i < ui->cbxTemplate->count(); i++) { if(ui->cbxTemplate->itemText(i).compare(name, Qt::CaseInsensitive) == 0) { QScopedPointer<const OptionsModel> oldItem(reinterpret_cast<const OptionsModel*>(ui->cbxTemplate->itemData(i).value<const void*>())); ui->cbxTemplate->setItemData(i, QVariant::fromValue<const void*>(options.take())); ui->cbxTemplate->setCurrentIndex(i); } } if(!options.isNull()) { const int index = ui->cbxTemplate->model()->rowCount(); ui->cbxTemplate->insertItem(index, name, QVariant::fromValue<const void*>(options.take())); ui->cbxTemplate->setCurrentIndex(index); } ui->cbxTemplate->blockSignals(false); m_lastTemplateName = name; REMOVE_USAFED_ITEM; }