示例#1
0
void GetPath2(int x, int y, int& nCount)
{
	if (0 == x && 0 == y)
	{
		++nCount;
		return;
	}

	if (0 > x)
		return;

	if (0 > y)
		return;

	GetPath2(x - 1, y, nCount);
	GetPath2(x, y - 1, nCount);
}
void EditPanel::UpdateLocal(bool primaryPath)
{
	if( m_Path->isEnabled() )
	{
		if( m_Path2->isEnabled() )
		{
			// both enabled
			QString path;
			if( primaryPath )
				GetPath(path);
			else
				GetPath2(path);
	
			m_Local->setChecked( Utils::IsLocalOSCPath(path) );
			m_Local->setEnabled(true);
		}
		else if( primaryPath )
		{
			// only path enabled
			QString path;
			GetPath(path);
			m_Local->setChecked( Utils::IsLocalOSCPath(path) );
			m_Local->setEnabled(true);
		}
	}
	else if( m_Path2->isEnabled() )
	{
		if( !primaryPath )
		{
			// only path2 enabled
			QString path;
			GetPath2(path);
			m_Local->setChecked( Utils::IsLocalOSCPath(path) );
			m_Local->setEnabled(true);
		}
	}
	else
	{
		// no path enabled
		m_Local->setChecked(false);
		m_Local->setEnabled(false);
	}
}
void EditPanel::onLocalStateChanged(int /*state*/)
{
	if( m_Path->isEnabled() )
	{
		QString path;
		GetPath(path);
		if( Utils::MakeLocalOSCPath(m_Local->isChecked(),path) )
		{
			m_Path->setText(path);
			emit edited();
		}
	}
	
	if( m_Path2->isEnabled() )
	{
		QString path2;
		GetPath2(path2);
		if( Utils::MakeLocalOSCPath(m_Local->isChecked(),path2) )
		{
			m_Path2->setText(path2);
			emit edited();
		}
	}
}