void UserFiltersModel::Modify (int index)
	{
		int pos = index;
		bool isException;
		SplitRow (&pos, &isException);

		QString rule;
		if (isException)
			rule = Filter_.ExceptionStrings_.at (pos);
		else
			rule = Filter_.FilterStrings_.at (pos);

		RuleOptionDialog dia;
		dia.SetException (isException);
		dia.SetString (rule);
		dia.SetType (Filter_.Options_ [rule].MatchType_);
		dia.SetCase (Filter_.Options_ [rule].Case_);
		dia.SetDomains (Filter_.Options_ [rule].Domains_);
		dia.SetNotDomains (Filter_.Options_ [rule].NotDomains_);

		dia.setWindowTitle (tr ("Modify filter"));
		if (dia.exec () != QDialog::Accepted)
			return;

		Remove (index);
		Add (dia);
	}
	bool UserFiltersModel::InitiateAdd (const QString& suggested)
	{
		RuleOptionDialog dia;
		dia.SetString (suggested);
		dia.setWindowTitle (tr ("Add a filter"));
		if (dia.exec () != QDialog::Accepted)
			return false;

		return Add (dia);
	}
	void UserFiltersModel::Modify (int index)
	{
		int pos = index;
		bool isException;
		SplitRow (&pos, &isException);

		const auto& item = isException ? Filter_.Exceptions_.at (pos) : Filter_.Filters_.at (pos);

		RuleOptionDialog dia;
		dia.SetException (isException);
		dia.SetString (item.OrigString_);
		const auto& options = item.Option_;
		dia.SetType (options.MatchType_);
		dia.SetCase (options.Case_);
		dia.SetDomains (options.Domains_);
		dia.SetNotDomains (options.NotDomains_);

		dia.setWindowTitle (tr ("Modify filter"));
		if (dia.exec () != QDialog::Accepted)
			return;

		Remove (index);
		Add (dia);
	}