コード例 #1
0
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;
}
コード例 #2
0
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;
}