Blame qlo10k1/src/strglobal.cpp

Packit Service b98cfc
/*
Packit Service b98cfc
 *  qlo10k1 - GUI frontend for ld10k1
Packit Service b98cfc
 *
Packit Service b98cfc
 *  Copyright (c) 2004 by Peter Zubaj
Packit Service b98cfc
 *
Packit Service b98cfc
 *   This program is free software; you can redistribute it and/or modify
Packit Service b98cfc
 *   it under the terms of the GNU General Public License as published by
Packit Service b98cfc
 *   the Free Software Foundation; either version 2 of the License, or
Packit Service b98cfc
 *   (at your option) any later version.
Packit Service b98cfc
 *
Packit Service b98cfc
 *   This program is distributed in the hope that it will be useful,
Packit Service b98cfc
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service b98cfc
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service b98cfc
 *   GNU General Public License for more details.
Packit Service b98cfc
 *
Packit Service b98cfc
 *   You should have received a copy of the GNU General Public License
Packit Service b98cfc
 *   along with this program; if not, write to the Free Software
Packit Service b98cfc
 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit Service b98cfc
 *
Packit Service b98cfc
 */
Packit Service b98cfc
 
Packit Service b98cfc
#include <stdlib.h>
Packit Service b98cfc
#include "strglobal.h"
Packit Service b98cfc
#include "strparam.h"
Packit Service b98cfc
#include "structure.h"
Packit Service b98cfc
#include "structure_io.h"
Packit Service b98cfc
#include "structure_link.h"
Packit Service b98cfc
#include "structure_patch.h"
Packit Service b98cfc
Packit Service b98cfc
#include "ld10k1file.h"
Packit Service b98cfc
Packit Service b98cfc
StrGlobal::StrGlobal(CardParam *card)
Packit Service b98cfc
{
Packit Service b98cfc
	Card = card;
Packit Service b98cfc
	Card->Structure = this;
Packit Service b98cfc
		
Packit Service b98cfc
	// registers
Packit Service b98cfc
	Inputs.setAutoDelete(TRUE); // the list owns the objects
Packit Service b98cfc
	Outputs.setAutoDelete(TRUE);
Packit Service b98cfc
	FXs.setAutoDelete(TRUE);
Packit Service b98cfc
	Links.setAutoDelete(TRUE);
Packit Service b98cfc
Packit Service b98cfc
	// patches
Packit Service b98cfc
	Patches.setAutoDelete(TRUE); // the list owns the objects
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrGlobal::~StrGlobal(void)
Packit Service b98cfc
{
Packit Service b98cfc
	Card = NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
void StrGlobal::clear(void)
Packit Service b98cfc
{
Packit Service b98cfc
	Links.clear();
Packit Service b98cfc
	Inputs.clear();
Packit Service b98cfc
	Outputs.clear();
Packit Service b98cfc
	FXs.clear();
Packit Service b98cfc
	Patches.clear();
Packit Service b98cfc
	UsedItems.clear();
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
void StrGlobal::clearFlags(void)
Packit Service b98cfc
{
Packit Service b98cfc
	StrFX *fx = NULL;
Packit Service b98cfc
	for(fx = FXs.first(); fx; fx = FXs.next())
Packit Service b98cfc
        {
Packit Service b98cfc
		fx->setFlagUsed(false);
Packit Service b98cfc
		fx->setFlagNew(false);
Packit Service b98cfc
		fx->setFlagChanged(false);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	StrInput *in = NULL;
Packit Service b98cfc
	for(in = Inputs.first(); in; in = Inputs.next())
Packit Service b98cfc
        {
Packit Service b98cfc
		in->setFlagUsed(false);
Packit Service b98cfc
		in->setFlagNew(false);
Packit Service b98cfc
		in->setFlagChanged(false);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	StrOutput *out = NULL;
Packit Service b98cfc
	for(out = Outputs.first(); out; out = Outputs.next())
Packit Service b98cfc
        {
Packit Service b98cfc
		out->setFlagUsed(false);
Packit Service b98cfc
		out->setFlagNew(false);
Packit Service b98cfc
		out->setFlagChanged(false);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	StrPatch *p = NULL;
Packit Service b98cfc
	for(p = Patches.first(); p; p = Patches.next())
Packit Service b98cfc
        {
Packit Service b98cfc
		p->setFlagUsed(false);
Packit Service b98cfc
		p->setFlagNew(false);
Packit Service b98cfc
		p->setFlagChanged(false);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	StrLink *l = NULL;
Packit Service b98cfc
	for(l = Links.first(); l; l = Links.next())
Packit Service b98cfc
        {
Packit Service b98cfc
		l->setFlagUsed(false);
Packit Service b98cfc
		l->setFlagNew(false);
Packit Service b98cfc
		l->setFlagChanged(false);
Packit Service b98cfc
	}
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::loadFromLD(void)
Packit Service b98cfc
{
Packit Service b98cfc
	clearFlags();
Packit Service b98cfc
Packit Service b98cfc
	// load registers
Packit Service b98cfc
	int cnt;
Packit Service b98cfc
	int err = 0;
Packit Service b98cfc
	int i;
Packit Service b98cfc
	
Packit Service b98cfc
	QString ioname;
Packit Service b98cfc
	
Packit Service b98cfc
	// FXs
Packit Service b98cfc
	if ((err = Card->getFXCount(&cnt)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		if ((err = Card->getFX(i, ioname)) < 0)
Packit Service b98cfc
			return err;
Packit Service b98cfc
		
Packit Service b98cfc
		StrFX *fx = findFXByNum(i);
Packit Service b98cfc
		if (fx)
Packit Service b98cfc
		{
Packit Service b98cfc
			if (fx->name() != ioname)
Packit Service b98cfc
			{
Packit Service b98cfc
				fx->setName(ioname);
Packit Service b98cfc
				fx->setFlagChanged(true);
Packit Service b98cfc
			}
Packit Service b98cfc
			// Don't make unconnected IO/FX disappear.
Packit Service b98cfc
			fx->setFlagUsed(true);
Packit Service b98cfc
		}
Packit Service b98cfc
		else
Packit Service b98cfc
		{
Packit Service b98cfc
			fx = new StrFX(i, ioname);
Packit Service b98cfc
			fx->setFlagNew(true);
Packit Service b98cfc
			FXs.append(fx);
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
Packit Service b98cfc
	if ((err = Card->getInputCount(&cnt)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		if ((err = Card->getInput(i, ioname)) < 0)
Packit Service b98cfc
			return err;
Packit Service b98cfc
		
Packit Service b98cfc
		StrInput *in = findInputByNum(i);
Packit Service b98cfc
		if (in)
Packit Service b98cfc
		{
Packit Service b98cfc
			if (in->name() != ioname)
Packit Service b98cfc
			{
Packit Service b98cfc
				in->setName(ioname);
Packit Service b98cfc
				in->setFlagChanged(true);
Packit Service b98cfc
			}
Packit Service b98cfc
			in->setFlagUsed(true);
Packit Service b98cfc
		}
Packit Service b98cfc
		else
Packit Service b98cfc
		{
Packit Service b98cfc
			in = new StrInput(i, ioname);
Packit Service b98cfc
			in->setFlagNew(true);
Packit Service b98cfc
			Inputs.append(in);
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
Packit Service b98cfc
	if ((err = Card->getOutputCount(&cnt)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		if ((err = Card->getOutput(i, ioname)) < 0)
Packit Service b98cfc
			return err;
Packit Service b98cfc
		
Packit Service b98cfc
		StrOutput *out = findOutputByNum(i);
Packit Service b98cfc
		if (out)
Packit Service b98cfc
		{
Packit Service b98cfc
			if (out->name() != ioname)
Packit Service b98cfc
			{
Packit Service b98cfc
				out->setName(ioname);
Packit Service b98cfc
				out->setFlagChanged(true);
Packit Service b98cfc
			}
Packit Service b98cfc
			out->setFlagUsed(true);
Packit Service b98cfc
		}
Packit Service b98cfc
		else
Packit Service b98cfc
		{
Packit Service b98cfc
			out = new StrOutput(i, ioname);
Packit Service b98cfc
			out->setFlagNew(true);
Packit Service b98cfc
			Outputs.append(out);
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
Packit Service b98cfc
	// load patches and patch registers
Packit Service b98cfc
	CardParamPatchInfo **pi;
Packit Service b98cfc
	
Packit Service b98cfc
	
Packit Service b98cfc
	if ((err = Card->getPatchesInfo(&pi, &cnt)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	// copy registers to internal structure
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrPatch *patch = NULL;
Packit Service b98cfc
		
Packit Service b98cfc
		if ((err = actualizePatch(pi[i]->id, pi[i]->patch_num, pi[i]->patch_name, &patch)) < 0)
Packit Service b98cfc
		{
Packit Service b98cfc
			for (i = 0; i < cnt; i++)
Packit Service b98cfc
				delete pi[i];
Packit Service b98cfc
			delete pi;
Packit Service b98cfc
			return err;
Packit Service b98cfc
		}
Packit Service b98cfc
		patch->setOrder(i);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
		delete pi[i];
Packit Service b98cfc
	delete pi;
Packit Service b98cfc
	
Packit Service b98cfc
	int *ld_tmplids = NULL;
Packit Service b98cfc
	if ((err = Card->getPointsInfo(&ld_tmplids, &cnt)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrLink *link = NULL;
Packit Service b98cfc
		
Packit Service b98cfc
		if ((err = actualizeLink(ld_tmplids[i], &link)) < 0)
Packit Service b98cfc
		{
Packit Service b98cfc
			free(ld_tmplids);
Packit Service b98cfc
			return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
Packit Service b98cfc
	free(ld_tmplids);
Packit Service b98cfc
	
Packit Service b98cfc
	// copy used items
Packit Service b98cfc
	StrPatch *patch;
Packit Service b98cfc
	
Packit Service b98cfc
	UsedItems.clear();
Packit Service b98cfc
		
Packit Service b98cfc
	for(patch = Patches.first(); patch; patch = Patches.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (patch->flagUsed())
Packit Service b98cfc
			UsedItems.append(patch);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	// remove unused
Packit Service b98cfc
	for(patch = Patches.last(); patch; patch = Patches.prev() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (!patch->flagUsed())
Packit Service b98cfc
			Patches.remove(patch);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	QPtrListIterator <StrInput> itin(Inputs);
Packit Service b98cfc
	StrInput *in;
Packit Service b98cfc
	while ((in = itin.current()) != 0 ) {
Packit Service b98cfc
		++itin;
Packit Service b98cfc
		if (in->flagUsed())
Packit Service b98cfc
			UsedItems.append(in);
Packit Service b98cfc
		else
Packit Service b98cfc
			Inputs.remove(in);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	QPtrListIterator <StrOutput> itout(Outputs);
Packit Service b98cfc
	StrOutput *out;
Packit Service b98cfc
	while ((out = itout.current()) != 0 ) {
Packit Service b98cfc
		++itout;
Packit Service b98cfc
		if (out->flagUsed())
Packit Service b98cfc
			UsedItems.append(out);
Packit Service b98cfc
		else
Packit Service b98cfc
			Outputs.remove(out);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	QPtrListIterator <StrFX> itfx(FXs);
Packit Service b98cfc
	StrFX *fx;
Packit Service b98cfc
	while ((fx = itfx.current()) != 0 ) {
Packit Service b98cfc
		++itfx;
Packit Service b98cfc
		if (fx->flagUsed())
Packit Service b98cfc
			UsedItems.append(fx);
Packit Service b98cfc
		else
Packit Service b98cfc
			FXs.remove(fx);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	QPtrListIterator <StrLink> itlnk(Links);
Packit Service b98cfc
	StrLink *lnk;
Packit Service b98cfc
	while ((lnk = itlnk.current()) != 0 ) {
Packit Service b98cfc
		++itlnk;
Packit Service b98cfc
		if (lnk->flagUsed())
Packit Service b98cfc
			UsedItems.append(lnk);
Packit Service b98cfc
		else
Packit Service b98cfc
			Links.remove(lnk);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	updatePatchesOrder();
Packit Service b98cfc
	
Packit Service b98cfc
	AutoArange(&UsedItems);
Packit Service b98cfc
	
Packit Service b98cfc
	QPtrListIterator <StrLink> itlnk1(Links);
Packit Service b98cfc
	while ((lnk = itlnk1.current()) != 0 ) {
Packit Service b98cfc
		++itlnk1;
Packit Service b98cfc
		lnk->calcSize();
Packit Service b98cfc
	}
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::getPio(int pnum, bool out, int idx, QString &name)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	if (out)
Packit Service b98cfc
		err = Card->getPOutput(pnum, idx, name);
Packit Service b98cfc
	else
Packit Service b98cfc
		err = Card->getPInput(pnum, idx, name);
Packit Service b98cfc
	return err;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::actualizePatch(int pid, int pnum, QString pname, StrPatch **out)
Packit Service b98cfc
{
Packit Service b98cfc
	QString ioname;
Packit Service b98cfc
	int z, j;
Packit Service b98cfc
	int err;
Packit Service b98cfc
		
Packit Service b98cfc
	int cnt1[2];
Packit Service b98cfc
	
Packit Service b98cfc
	if ((err = Card->getPInputCount(pnum, &(cnt1[0]))) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	if ((err = Card->getPOutputCount(pnum, &(cnt1[1]))) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
		
Packit Service b98cfc
	StrPatch *patch = findPatchById(pid);
Packit Service b98cfc
		
Packit Service b98cfc
	if (patch)
Packit Service b98cfc
	{
Packit Service b98cfc
		// check changes
Packit Service b98cfc
		if (patch->name() != pname)
Packit Service b98cfc
		{
Packit Service b98cfc
			patch->setName(pname);
Packit Service b98cfc
			patch->setFlagChanged(true);
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		for (z = 0; z < 2; z++)
Packit Service b98cfc
		{
Packit Service b98cfc
			for (j = 0; j < cnt1[z]; j++)
Packit Service b98cfc
			{
Packit Service b98cfc
				if ((err = getPio(pnum, z, j, ioname)) < 0)
Packit Service b98cfc
					return err;
Packit Service b98cfc
				
Packit Service b98cfc
				RSItemIO *io = patch->getIO(z, j);
Packit Service b98cfc
				if (io->getDesc() != ioname)
Packit Service b98cfc
				{
Packit Service b98cfc
					io->setDesc(ioname);
Packit Service b98cfc
					patch->setFlagChanged(true);
Packit Service b98cfc
				}
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	else
Packit Service b98cfc
	{
Packit Service b98cfc
		patch = new StrPatch(pnum, pid, pname);
Packit Service b98cfc
		Patches.append(patch);
Packit Service b98cfc
Packit Service b98cfc
		for (z = 0; z < 2; z++)
Packit Service b98cfc
		{
Packit Service b98cfc
			for (j = 0; j < cnt1[z]; j++)
Packit Service b98cfc
			{
Packit Service b98cfc
				if ((err = getPio(pnum, z, j, ioname)) < 0)
Packit Service b98cfc
					return err;
Packit Service b98cfc
					
Packit Service b98cfc
				RSItemIO *io = new RSItemIO(patch, z, j, ioname);
Packit Service b98cfc
				patch->setIO(z, j, io);
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		patch->setFlagNew(true);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	patch->setFlagUsed(true);
Packit Service b98cfc
	
Packit Service b98cfc
	*out = patch;
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrPatch *StrGlobal::findPatchByNum(int num)
Packit Service b98cfc
{
Packit Service b98cfc
	StrPatch *patch;
Packit Service b98cfc
		
Packit Service b98cfc
	for(patch = Patches.first(); patch; patch = Patches.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (patch->num() == num)
Packit Service b98cfc
			return patch;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrPatch *StrGlobal::findPatchById(int id)
Packit Service b98cfc
{
Packit Service b98cfc
	StrPatch *patch;
Packit Service b98cfc
		
Packit Service b98cfc
	for(patch = Patches.first(); patch; patch = Patches.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (patch->id() == id)
Packit Service b98cfc
			return patch;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrFX *StrGlobal::findFXByNum(int num)
Packit Service b98cfc
{
Packit Service b98cfc
	StrFX *fx;
Packit Service b98cfc
		
Packit Service b98cfc
	for(fx = FXs.first(); fx; fx = FXs.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (fx->num() == num)
Packit Service b98cfc
			return fx;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrInput *StrGlobal::findInputByNum(int num)
Packit Service b98cfc
{
Packit Service b98cfc
	StrInput *in;
Packit Service b98cfc
		
Packit Service b98cfc
	for(in = Inputs.first(); in; in = Inputs.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (in->num() == num)
Packit Service b98cfc
			return in;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrOutput *StrGlobal::findOutputByNum(int num)
Packit Service b98cfc
{
Packit Service b98cfc
	StrOutput *out;
Packit Service b98cfc
		
Packit Service b98cfc
	for(out = Outputs.first(); out; out = Outputs.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (out->num() == num)
Packit Service b98cfc
			return out;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrLink *StrGlobal::findLinkById(int id)
Packit Service b98cfc
{
Packit Service b98cfc
	StrLink *l;
Packit Service b98cfc
		
Packit Service b98cfc
	for(l = Links.first(); l; l = Links.next() )
Packit Service b98cfc
	{
Packit Service b98cfc
		if (l->id() == id)
Packit Service b98cfc
			return l;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return NULL;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::conAdd(bool multi, bool simple, RSItemIO *from_io, RSItemIO *to_io, int *id)
Packit Service b98cfc
{
Packit Service b98cfc
	int ftype = 0;
Packit Service b98cfc
	int ttype = 0;
Packit Service b98cfc
	int type = 0;
Packit Service b98cfc
	int fp = 0;
Packit Service b98cfc
	int tp = 0;
Packit Service b98cfc
	int p = 0;
Packit Service b98cfc
	int fio = 0;
Packit Service b98cfc
	int tio = 0;
Packit Service b98cfc
	int io = 0;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemIO *tmp;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemBaseWithType *owner;
Packit Service b98cfc
Packit Service b98cfc
	for (int i = 0; i < 2; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		if (!i)
Packit Service b98cfc
			tmp = from_io;
Packit Service b98cfc
		else
Packit Service b98cfc
			tmp = to_io;
Packit Service b98cfc
			
Packit Service b98cfc
		owner = (RSItemBaseWithType *)tmp->getOwner();
Packit Service b98cfc
		
Packit Service b98cfc
		p = -1;
Packit Service b98cfc
		io = -1;
Packit Service b98cfc
				
Packit Service b98cfc
		switch (owner->type())
Packit Service b98cfc
		{
Packit Service b98cfc
			case RSItemBaseWithType::In:
Packit Service b98cfc
				type = CON_IO_IN;
Packit Service b98cfc
				io = ((StrInput *)owner)->num();
Packit Service b98cfc
				break;
Packit Service b98cfc
			case RSItemBaseWithType::Out:
Packit Service b98cfc
				type = CON_IO_OUT;
Packit Service b98cfc
				io = ((StrOutput *)owner)->num();
Packit Service b98cfc
				break;
Packit Service b98cfc
			case RSItemBaseWithType::FX:
Packit Service b98cfc
				type = CON_IO_FX;
Packit Service b98cfc
				io = ((StrFX *)owner)->num();
Packit Service b98cfc
				break;
Packit Service b98cfc
			case RSItemBaseWithType::Patch:
Packit Service b98cfc
				if (!tmp->isOutput())
Packit Service b98cfc
					type = CON_IO_PIN;
Packit Service b98cfc
				else
Packit Service b98cfc
					type = CON_IO_POUT;
Packit Service b98cfc
				io = tmp->getIdx();
Packit Service b98cfc
					
Packit Service b98cfc
				p = ((StrPatch *)owner)->num();
Packit Service b98cfc
				break;
Packit Service b98cfc
			default:
Packit Service b98cfc
				break;
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		if (!i)
Packit Service b98cfc
		{
Packit Service b98cfc
			ftype = type;
Packit Service b98cfc
			fio = io;
Packit Service b98cfc
			fp = p;
Packit Service b98cfc
		}
Packit Service b98cfc
		else
Packit Service b98cfc
		{
Packit Service b98cfc
			ttype = type;
Packit Service b98cfc
			tio = io;
Packit Service b98cfc
			tp = p;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
Packit Service b98cfc
	return Card->conAdd(multi, simple, ftype, fp, fio, ttype, tp, tio, id);
Packit Service b98cfc
	// FIXME - uprava strglobal - urobene inde
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::conDel(RSItemIO *from_io, int *id)
Packit Service b98cfc
{
Packit Service b98cfc
	int io, p;
Packit Service b98cfc
	int type = 0;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemBaseWithType *owner;
Packit Service b98cfc
Packit Service b98cfc
	owner = (RSItemBaseWithType *)from_io->getOwner();
Packit Service b98cfc
		
Packit Service b98cfc
	p = -1;
Packit Service b98cfc
	io = -1;
Packit Service b98cfc
				
Packit Service b98cfc
	switch (owner->type())
Packit Service b98cfc
	{
Packit Service b98cfc
		// only patch valid
Packit Service b98cfc
		case RSItemBaseWithType::Patch:
Packit Service b98cfc
			if (!from_io->isOutput())
Packit Service b98cfc
				type = CON_IO_PIN;
Packit Service b98cfc
			else
Packit Service b98cfc
				type = CON_IO_POUT;
Packit Service b98cfc
			io = from_io->getIdx();
Packit Service b98cfc
				
Packit Service b98cfc
			p = ((StrPatch *)owner)->num();
Packit Service b98cfc
			break;
Packit Service b98cfc
		default:
Packit Service b98cfc
			break;
Packit Service b98cfc
	}
Packit Service b98cfc
		
Packit Service b98cfc
	return Card->conDel(type, p, io, id);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::load(LD10k1File *ld10k1file, StrPatch *before, StrPatch **loaded)
Packit Service b98cfc
{
Packit Service b98cfc
	int bef = -1;
Packit Service b98cfc
	int loade, loade_id;
Packit Service b98cfc
	int retval;
Packit Service b98cfc
	
Packit Service b98cfc
	if (before)
Packit Service b98cfc
		bef = before->num();
Packit Service b98cfc
	if ((retval = Card->load(ld10k1file, bef, &loade, &loade_id)) < 0)
Packit Service b98cfc
		return retval;
Packit Service b98cfc
		
Packit Service b98cfc
	StrPatch *p = NULL;
Packit Service b98cfc
	
Packit Service b98cfc
	if ((retval = actualizePatch(loade_id, loade, ld10k1file->getPatchName(), &p)) < 0)
Packit Service b98cfc
		return retval;
Packit Service b98cfc
		
Packit Service b98cfc
	UsedItems.append(p);
Packit Service b98cfc
	updatePatchesOrder();
Packit Service b98cfc
	AutoArange(&UsedItems);
Packit Service b98cfc
	*loaded = p;
Packit Service b98cfc
	return retval;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::unload(StrPatch *p)
Packit Service b98cfc
{
Packit Service b98cfc
	int retval;
Packit Service b98cfc
	if ((retval = Card->unload(p->num())) < 0)
Packit Service b98cfc
		return retval;
Packit Service b98cfc
		
Packit Service b98cfc
	// FIXME - odmaz aj prepojenia
Packit Service b98cfc
	UsedItems.remove(p);
Packit Service b98cfc
	Patches.remove(p);
Packit Service b98cfc
	updatePatchesOrder();
Packit Service b98cfc
	return retval;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::clearDSP(void)
Packit Service b98cfc
{
Packit Service b98cfc
	int retval;
Packit Service b98cfc
		
Packit Service b98cfc
	if ((retval = Card->clearDSP()) < 0)
Packit Service b98cfc
		return retval;
Packit Service b98cfc
		
Packit Service b98cfc
	clear();
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
void StrGlobal::destroyLink(StrLink *l)
Packit Service b98cfc
{
Packit Service b98cfc
	UsedItems.remove(l);
Packit Service b98cfc
	l->disconnectAll();
Packit Service b98cfc
	
Packit Service b98cfc
	// delete not needed - autodelete
Packit Service b98cfc
	Links.remove(l);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::disconnectFromLink(RSItemIO *io)
Packit Service b98cfc
{
Packit Service b98cfc
	StrLink *link = io->getConnectedTo();
Packit Service b98cfc
	if (link)
Packit Service b98cfc
	{
Packit Service b98cfc
		int idx = link->findRoute(io);
Packit Service b98cfc
		int conn_id;
Packit Service b98cfc
		int err;
Packit Service b98cfc
		if((err = conDel(io, &conn_id)) < 0)
Packit Service b98cfc
			return err;
Packit Service b98cfc
		link->setRoutePoint(idx, NULL);
Packit Service b98cfc
		if (conn_id < 0 || !link->isValid())
Packit Service b98cfc
		{
Packit Service b98cfc
			destroyLink(link);
Packit Service b98cfc
			return 0;
Packit Service b98cfc
		}
Packit Service b98cfc
		link->calcSize();
Packit Service b98cfc
	}
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::actualizeLink(int id, StrLink **out)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	CardParamPointInfo point;
Packit Service b98cfc
	
Packit Service b98cfc
	err = Card->getPointInfo(id, &point);	
Packit Service b98cfc
	if (err == LD10K1_ERR_UNKNOWN_POINT)
Packit Service b98cfc
	{
Packit Service b98cfc
		// FIXME - probably not exists - remove
Packit Service b98cfc
		StrLink *delLink = findLinkById(id);
Packit Service b98cfc
		if (delLink)
Packit Service b98cfc
			destroyLink(delLink);
Packit Service b98cfc
		
Packit Service b98cfc
		*out = NULL;
Packit Service b98cfc
		return 0;
Packit Service b98cfc
	}
Packit Service b98cfc
	if (err < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemIO *firstItem = NULL;
Packit Service b98cfc
	StrLink::LinkType newType = StrLink::LinkFX;
Packit Service b98cfc
	switch(point.type)
Packit Service b98cfc
	{
Packit Service b98cfc
		case CON_IO_FX:
Packit Service b98cfc
			newType = StrLink::LinkFX;
Packit Service b98cfc
			{
Packit Service b98cfc
				StrFX *ft = findFXByNum(point.io_idx);
Packit Service b98cfc
				if (ft)
Packit Service b98cfc
					firstItem = ft->getIO(true, 0);
Packit Service b98cfc
			}
Packit Service b98cfc
			break;
Packit Service b98cfc
		case CON_IO_IN:
Packit Service b98cfc
			newType = StrLink::LinkIn;
Packit Service b98cfc
			{
Packit Service b98cfc
				StrInput *in = findInputByNum(point.io_idx);
Packit Service b98cfc
				if (in)
Packit Service b98cfc
					firstItem = in->getIO(true, 0);
Packit Service b98cfc
			}
Packit Service b98cfc
			break;
Packit Service b98cfc
		case CON_IO_OUT:
Packit Service b98cfc
			newType = StrLink::LinkOut;
Packit Service b98cfc
			{
Packit Service b98cfc
				StrOutput *out = findOutputByNum(point.io_idx);
Packit Service b98cfc
				if (out)
Packit Service b98cfc
					firstItem = out->getIO(false, 0);
Packit Service b98cfc
			}
Packit Service b98cfc
			break;
Packit Service b98cfc
		case CON_IO_NORMAL:
Packit Service b98cfc
			newType = StrLink::LinkNormal;
Packit Service b98cfc
			break;
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	StrLink *link = findLinkById(id);
Packit Service b98cfc
	if (link)
Packit Service b98cfc
	{
Packit Service b98cfc
		bool actualized[POINTINFO_MAX_CONN_PER_POINT];
Packit Service b98cfc
		RSItemIO *newIOs[POINTINFO_MAX_CONN_PER_POINT];
Packit Service b98cfc
		unsigned int j;
Packit Service b98cfc
		unsigned int niosc = 0;
Packit Service b98cfc
		
Packit Service b98cfc
		for (j = 0; j < POINTINFO_MAX_CONN_PER_POINT; j++)
Packit Service b98cfc
			actualized[j] = false;
Packit Service b98cfc
		
Packit Service b98cfc
		int r = 0;
Packit Service b98cfc
		if (firstItem)
Packit Service b98cfc
		{
Packit Service b98cfc
			actualized[r] = true;
Packit Service b98cfc
			((RSItemBaseWithType *)firstItem->getOwner())->setFlagUsed(true);
Packit Service b98cfc
			r++;
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		// actualize current
Packit Service b98cfc
		for (j = 0; j < point.conn_count; j++)
Packit Service b98cfc
		{
Packit Service b98cfc
			RSItemIO *io = findPatchIO(point.io_type[j], point.patch[j], point.io[j]);
Packit Service b98cfc
			((RSItemBaseWithType *)io->getOwner())->setFlagUsed(true);
Packit Service b98cfc
			
Packit Service b98cfc
			// find io
Packit Service b98cfc
			int rf = link->findRoute(io);
Packit Service b98cfc
			if (rf >= 0)
Packit Service b98cfc
			{
Packit Service b98cfc
				actualized[rf] = true;
Packit Service b98cfc
				link->setRoutePoint(rf, io);	
Packit Service b98cfc
			}
Packit Service b98cfc
			else
Packit Service b98cfc
			{
Packit Service b98cfc
				newIOs[niosc++] = io;
Packit Service b98cfc
			}		
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		// delete old
Packit Service b98cfc
		for (j = 0; j < POINTINFO_MAX_CONN_PER_POINT; j++)
Packit Service b98cfc
		{
Packit Service b98cfc
			if (!actualized[j])
Packit Service b98cfc
			{
Packit Service b98cfc
				link->setRoutePoint(j, NULL);
Packit Service b98cfc
				link->clearRoutesPoints(j);
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		// add new
Packit Service b98cfc
		int l = 0;
Packit Service b98cfc
		for (j = 0; j < niosc; j++)
Packit Service b98cfc
		{
Packit Service b98cfc
			for (; l < POINTINFO_MAX_CONN_PER_POINT; l++)
Packit Service b98cfc
			{
Packit Service b98cfc
				if (!link->getRoutePoint(l))
Packit Service b98cfc
				{
Packit Service b98cfc
					link->setRoutePoint(l, newIOs[j]);
Packit Service b98cfc
					break;
Packit Service b98cfc
				}
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
		
Packit Service b98cfc
		link->setFlagChanged(true);
Packit Service b98cfc
	}
Packit Service b98cfc
	else
Packit Service b98cfc
	{
Packit Service b98cfc
		link = new StrLink(id, newType);
Packit Service b98cfc
		int r = 0;
Packit Service b98cfc
		if (firstItem)
Packit Service b98cfc
		{
Packit Service b98cfc
			link->setRoutePoint(r++, firstItem);
Packit Service b98cfc
			((RSItemBaseWithType *)firstItem->getOwner())->setFlagUsed(true);
Packit Service b98cfc
		}
Packit Service b98cfc
			
Packit Service b98cfc
		unsigned int j = 0;
Packit Service b98cfc
		for (j = 0; j < point.conn_count; j++)
Packit Service b98cfc
		{
Packit Service b98cfc
			RSItemIO *io = findPatchIO(point.io_type[j], point.patch[j], point.io[j]);
Packit Service b98cfc
			((RSItemBaseWithType *)io->getOwner())->setFlagUsed(true);
Packit Service b98cfc
			link->setRoutePoint(r++, io);
Packit Service b98cfc
		}
Packit Service b98cfc
		link->setFlagNew(true);
Packit Service b98cfc
		Links.append(link);
Packit Service b98cfc
		UsedItems.append(link);
Packit Service b98cfc
	}
Packit Service b98cfc
	link->setFlagUsed(true);
Packit Service b98cfc
	
Packit Service b98cfc
	*out = link;
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
void StrGlobal::updatePatchesOrder(void)
Packit Service b98cfc
{
Packit Service b98cfc
	CardParamPatchInfo **pi;
Packit Service b98cfc
	int i, cnt;
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	if ((err = Card->getPatchesInfo(&pi, &cnt)) < 0)
Packit Service b98cfc
		return;
Packit Service b98cfc
		
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrPatch *p = findPatchById(pi[i]->id);
Packit Service b98cfc
		if (p)
Packit Service b98cfc
			p->setOrder(i);
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	for (i = 0; i < cnt; i++)
Packit Service b98cfc
		delete pi[i];
Packit Service b98cfc
	delete pi;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
RSItemIO *StrGlobal::findPatchIO(bool out, int pid, int ionum)
Packit Service b98cfc
{
Packit Service b98cfc
	if (pid < 0 || ionum < 0)
Packit Service b98cfc
		return NULL;
Packit Service b98cfc
	StrPatch *p = findPatchById(pid);
Packit Service b98cfc
	if (!p)
Packit Service b98cfc
		return NULL;
Packit Service b98cfc
	
Packit Service b98cfc
	return p->getIO(out, ionum);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOneLink(StrLink *l)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	for (int i = 0; i < l->getMaxRoute(); i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		RSItemIO *io = l->getRoutePoint(i);
Packit Service b98cfc
		if (io)
Packit Service b98cfc
		{
Packit Service b98cfc
			RSItemBaseWithType *owner = (RSItemBaseWithType *)io->getOwner();
Packit Service b98cfc
			if (owner->type() == RSItemBaseWithType::Patch)
Packit Service b98cfc
			{
Packit Service b98cfc
				// only patch can be disconnected
Packit Service b98cfc
				int conn_id;
Packit Service b98cfc
				if((err = conDel(io, &conn_id)) < 0)
Packit Service b98cfc
					return err;
Packit Service b98cfc
				if (conn_id < 0)
Packit Service b98cfc
				{
Packit Service b98cfc
					destroyLink(l);
Packit Service b98cfc
					return 0;
Packit Service b98cfc
				}
Packit Service b98cfc
					
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOneFX(StrFX *fx)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemIO *io = fx->getIO(true, 0);
Packit Service b98cfc
	if (io)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrLink *l = io->getConnectedTo();
Packit Service b98cfc
		if (l)
Packit Service b98cfc
		{
Packit Service b98cfc
			if ((err = deleteOneLink(l)) < 0)
Packit Service b98cfc
				return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	UsedItems.remove(fx);
Packit Service b98cfc
	
Packit Service b98cfc
	// delete not needed - autodelete
Packit Service b98cfc
	FXs.remove(fx);
Packit Service b98cfc
	
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOneIn(StrInput *in)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemIO *io = in->getIO(true, 0);
Packit Service b98cfc
	if (io)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrLink *l = io->getConnectedTo();
Packit Service b98cfc
		if (l)
Packit Service b98cfc
		{
Packit Service b98cfc
			if ((err = deleteOneLink(l)) < 0)
Packit Service b98cfc
				return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	UsedItems.remove(in);
Packit Service b98cfc
	
Packit Service b98cfc
	// delete not needed - autodelete
Packit Service b98cfc
	Inputs.remove(in);
Packit Service b98cfc
	
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOneOut(StrOutput *out)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	
Packit Service b98cfc
	RSItemIO *io = out->getIO(false, 0);
Packit Service b98cfc
	if (io)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrLink *l = io->getConnectedTo();
Packit Service b98cfc
		if (l)
Packit Service b98cfc
		{
Packit Service b98cfc
			if ((err = deleteOneLink(l)) < 0)
Packit Service b98cfc
				return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	UsedItems.remove(out);
Packit Service b98cfc
	
Packit Service b98cfc
	// delete not needed - autodelete
Packit Service b98cfc
	Outputs.remove(out);
Packit Service b98cfc
	
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOnePatch(StrPatch *p)
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	int z;
Packit Service b98cfc
	int j;
Packit Service b98cfc
	
Packit Service b98cfc
	// store all conn ids
Packit Service b98cfc
	
Packit Service b98cfc
	QValueList <int> actIds;
Packit Service b98cfc
					
Packit Service b98cfc
	actIds.clear();
Packit Service b98cfc
	
Packit Service b98cfc
	for (z = 0; z < 2; z++)
Packit Service b98cfc
	{
Packit Service b98cfc
		for (j = 0; j < p->getMaxIOIdx(z); j++)
Packit Service b98cfc
		{
Packit Service b98cfc
			RSItemIO *io = p->getIO(z, j);
Packit Service b98cfc
			if (io)
Packit Service b98cfc
			{
Packit Service b98cfc
				StrLink *l = io->getConnectedTo();
Packit Service b98cfc
				if (l && actIds.findIndex(l->id()) < 0)
Packit Service b98cfc
					actIds.append(l->id());
Packit Service b98cfc
			}
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	if ((err = unload(p)) < 0)
Packit Service b98cfc
		return err;
Packit Service b98cfc
		
Packit Service b98cfc
	// actualize links
Packit Service b98cfc
	for (unsigned int i = 0; i < actIds.count(); i++)
Packit Service b98cfc
	{
Packit Service b98cfc
		StrLink *link = NULL;
Packit Service b98cfc
		int aid = actIds[i];
Packit Service b98cfc
		if ((err = actualizeLink(aid, &link)) < 0)
Packit Service b98cfc
			return err;
Packit Service b98cfc
		
Packit Service b98cfc
		if (link)
Packit Service b98cfc
		{
Packit Service b98cfc
			if (!link->isValid())
Packit Service b98cfc
				destroyLink(link);
Packit Service b98cfc
			else
Packit Service b98cfc
				//wasn't error
Packit Service b98cfc
				link->calcSize();
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteOneItem(RSItemBaseWithType *item)
Packit Service b98cfc
{
Packit Service b98cfc
	switch (item->type())
Packit Service b98cfc
	{
Packit Service b98cfc
		case RSItemBaseWithType::In:
Packit Service b98cfc
			return deleteOneIn((StrInput *)item);
Packit Service b98cfc
		case RSItemBaseWithType::Out:
Packit Service b98cfc
			return deleteOneOut((StrOutput *)item);
Packit Service b98cfc
		case RSItemBaseWithType::FX:
Packit Service b98cfc
			return deleteOneFX((StrFX *)item);
Packit Service b98cfc
		case RSItemBaseWithType::Link:
Packit Service b98cfc
			return deleteOneLink((StrLink *)item);
Packit Service b98cfc
		case RSItemBaseWithType::Patch:
Packit Service b98cfc
			return deleteOnePatch((StrPatch *)item);
Packit Service b98cfc
		default:
Packit Service b98cfc
			return 0;
Packit Service b98cfc
	}
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::deleteAllSelected()
Packit Service b98cfc
{
Packit Service b98cfc
	int err;
Packit Service b98cfc
	// through all selected
Packit Service b98cfc
	RSItemBaseWithType *item;
Packit Service b98cfc
	
Packit Service b98cfc
	// first connections
Packit Service b98cfc
	QPtrListIterator <RSItemBaseWithType> it1(UsedItems);
Packit Service b98cfc
	while ((item = it1.current()) != 0 ) 
Packit Service b98cfc
	{
Packit Service b98cfc
		++it1;
Packit Service b98cfc
		if (item->flagSelected() && item->type() == RSItemBaseWithType::Link)
Packit Service b98cfc
		{
Packit Service b98cfc
			if ((err = deleteOneLink((StrLink *)item)) < 0)
Packit Service b98cfc
				return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	// everything others
Packit Service b98cfc
	QPtrListIterator <RSItemBaseWithType> it2(UsedItems);
Packit Service b98cfc
	while ((item = it2.current()) != 0 ) 
Packit Service b98cfc
	{
Packit Service b98cfc
		++it2;
Packit Service b98cfc
		if (item->flagSelected())
Packit Service b98cfc
		{
Packit Service b98cfc
			if ((err = deleteOneItem(item)) < 0)
Packit Service b98cfc
				return err;
Packit Service b98cfc
		}
Packit Service b98cfc
	}
Packit Service b98cfc
	
Packit Service b98cfc
	return 0;
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
QString StrGlobal::errorStr(int err)
Packit Service b98cfc
{
Packit Service b98cfc
	return Card->errorStr(err);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::get(int patch_num, LD10k1File **dc)
Packit Service b98cfc
{
Packit Service b98cfc
	return Card->get(patch_num, dc);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::getDspConfig(LD10k1DspFile **dc)
Packit Service b98cfc
{
Packit Service b98cfc
	return Card->getDspConfig(dc);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
int StrGlobal::putDspConfig(LD10k1DspFile *dc)
Packit Service b98cfc
{
Packit Service b98cfc
	return Card->putDspConfig(dc);
Packit Service b98cfc
}
Packit Service b98cfc
Packit Service b98cfc
StrCardGlobal::StrCardGlobal()
Packit Service b98cfc
{
Packit Service b98cfc
	// cards
Packit Service b98cfc
	Cards.setAutoDelete( TRUE ); // the list owns the objects
Packit Service b98cfc
}