| /************************************************************** | 
 |  *  | 
 |  * Licensed to the Apache Software Foundation (ASF) under one | 
 |  * or more contributor license agreements.  See the NOTICE file | 
 |  * distributed with this work for additional information | 
 |  * regarding copyright ownership.  The ASF licenses this file | 
 |  * to you under the Apache License, Version 2.0 (the | 
 |  * "License"); you may not use this file except in compliance | 
 |  * with the License.  You may obtain a copy of the License at | 
 |  *  | 
 |  *   http://www.apache.org/licenses/LICENSE-2.0 | 
 |  *  | 
 |  * Unless required by applicable law or agreed to in writing, | 
 |  * software distributed under the License is distributed on an | 
 |  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 |  * KIND, either express or implied.  See the License for the | 
 |  * specific language governing permissions and limitations | 
 |  * under the License. | 
 |  *  | 
 |  *************************************************************/ | 
 |  | 
 |  | 
 |  | 
 | // MARKER(update_precomp.py): autogen include statement, do not remove | 
 | #include "precompiled_sd.hxx" | 
 |  | 
 |  | 
 | #include <tools/list.hxx> | 
 | #include <tools/debug.hxx> | 
 | #include <vcl/ctrl.hxx> | 
 |  | 
 | #include "assclass.hxx" | 
 |  | 
 |  | 
 | Assistent::Assistent(int nNoOfPages) | 
 | { | 
 | 	mnPages=nNoOfPages; | 
 | 	if(mnPages>MAX_PAGES) | 
 | 	{ | 
 | 		mnPages=MAX_PAGES; | 
 | 	} | 
 |  | 
 | 	mpPageStatus = new bool[mnPages]; | 
 |  | 
 | 	for(sal_uInt8 i=0;i<mnPages;i++) | 
 | 	{ | 
 | 		mpPages[i]=new List(); | 
 | 		mpPageStatus[i] = sal_True; | 
 | 	} | 
 | 	mnCurrentPage=1; | 
 | } | 
 |  | 
 |  | 
 |  | 
 | bool Assistent::InsertControl(int nDestPage,Control* pUsedControl) | 
 | { | 
 | 	DBG_ASSERT( (nDestPage > 0) && (nDestPage <= mnPages), "Seite nicht vorhanden!"); | 
 | 	if((nDestPage>0)&&(nDestPage<=mnPages)) | 
 | 	{ | 
 | 		mpPages[nDestPage-1]->Insert(pUsedControl,LIST_APPEND); | 
 | 		pUsedControl->Hide(); | 
 | 		pUsedControl->Disable(); | 
 | 		return true; | 
 | 	} | 
 | 	else | 
 | 	{ | 
 | 		return false; | 
 | 	} | 
 | } | 
 |  | 
 |  | 
 | bool Assistent::NextPage() | 
 | { | 
 | 	if(mnCurrentPage<mnPages) | 
 | 	{ | 
 | 		int nPage = mnCurrentPage+1; | 
 | 		while(nPage <= mnPages && !mpPageStatus[nPage-1]) | 
 | 		  nPage++; | 
 |  | 
 | 		if(nPage <= mnPages) | 
 | 			return GotoPage(nPage); | 
 | 	} | 
 | 	return false; | 
 | } | 
 |  | 
 |  | 
 | bool Assistent::PreviousPage() | 
 | { | 
 | 	if(mnCurrentPage>1) | 
 | 	{ | 
 | 		int nPage = mnCurrentPage-1; | 
 | 		while(nPage >= 0 && !mpPageStatus[nPage-1]) | 
 | 			nPage--; | 
 |  | 
 | 		if(nPage >= 0) | 
 | 			return GotoPage(nPage); | 
 | 	} | 
 | 	return false; | 
 | } | 
 |  | 
 |  | 
 | bool Assistent::GotoPage(const int nPageToGo) | 
 | { | 
 | 	DBG_ASSERT( (nPageToGo > 0) && (nPageToGo <= mnPages), "Seite nicht vorhanden!"); | 
 |  | 
 | 	if((nPageToGo>0)&&(nPageToGo<=mnPages)&&mpPageStatus[nPageToGo-1]) | 
 | 	{ | 
 | 		int i; | 
 | 		Control* pCurControl; | 
 | 		int nIndex=mnCurrentPage-1; | 
 |  | 
 | 		for(i=0;i<(int)mpPages[nIndex]->Count();i++) | 
 | 		{ | 
 | 			pCurControl=(Control*)mpPages[nIndex]->GetObject(i); | 
 | 			pCurControl->Disable(); | 
 | 			pCurControl->Hide(); | 
 | 				//schaltet die Controls der vorherigen Seite | 
 | 				//zurueck | 
 | 		} | 
 | 		mnCurrentPage=nPageToGo; | 
 | 		nIndex=mnCurrentPage-1; | 
 | 		for(i=0;i<(int)mpPages[nIndex]->Count();i++) | 
 | 		{ | 
 |  | 
 | 			pCurControl=(Control*)mpPages[nIndex]->GetObject(i); | 
 | 			pCurControl->Enable(); | 
 | 			pCurControl->Show(); | 
 | 				//zeigt die neue Seite im Fenster an | 
 | 		} | 
 | 		return true; | 
 | 	} | 
 | 	else | 
 | 	{ | 
 | 		return false; | 
 | 	} | 
 | } | 
 |  | 
 |  | 
 | bool Assistent::IsLastPage() | 
 | { | 
 | 	if(mnCurrentPage==mnPages) | 
 | 	{ | 
 | 		return true; | 
 | 	} | 
 | 	else | 
 | 	{ | 
 | 		int nPage = mnCurrentPage+1; | 
 | 		while(nPage <= mnPages && !mpPageStatus[nPage-1]) | 
 | 			nPage++; | 
 |  | 
 | 		return nPage > mnPages; | 
 | 	} | 
 | } | 
 |  | 
 |  | 
 | bool Assistent::IsFirstPage() | 
 | { | 
 | 	if(mnCurrentPage==1) | 
 | 	{ | 
 | 		return true; | 
 | 	} | 
 | 	else | 
 | 	{ | 
 | 		int nPage = mnCurrentPage-1; | 
 | 		while(nPage > 0 && !mpPageStatus[nPage-1]) | 
 | 			nPage--; | 
 |  | 
 | 		return nPage == 0; | 
 | 	} | 
 | } | 
 |  | 
 |  | 
 |  | 
 | int Assistent::GetCurrentPage() | 
 | { | 
 | 	return mnCurrentPage; | 
 | } | 
 |  | 
 | Assistent::~Assistent() | 
 | { | 
 | 	for( int i=0;i<mnPages;i++) | 
 | 	{ | 
 | 		delete mpPages[i]; | 
 | 	} | 
 |  | 
 | 	delete [] mpPageStatus; | 
 | } | 
 |  | 
 | bool Assistent::IsEnabled( int nPage ) | 
 | { | 
 | 	DBG_ASSERT( (nPage>0) && (nPage <= mnPages), "Seite nicht vorhanden!" ); | 
 |  | 
 | 	return (nPage>0) && (nPage <= mnPages && mpPageStatus[nPage-1]); | 
 | } | 
 |  | 
 | void Assistent::EnablePage( int nPage ) | 
 | { | 
 | 	DBG_ASSERT( (nPage>0) && (nPage <= mnPages), "Seite nicht vorhanden!" ); | 
 |  | 
 | 	if((nPage>0) && (nPage < mnPages && !mpPageStatus[nPage-1])) | 
 | 	{ | 
 | 		mpPageStatus[nPage-1] = true; | 
 | 	} | 
 | } | 
 |  | 
 | void Assistent::DisablePage( int nPage ) | 
 | { | 
 | 	DBG_ASSERT( (nPage>0) && (nPage <= mnPages), "Seite nicht vorhanden!" ); | 
 |  | 
 | 	if((nPage>0) && (nPage <= mnPages && mpPageStatus[nPage-1])) | 
 | 	{ | 
 | 		mpPageStatus[nPage-1] = false; | 
 | 		if(mnCurrentPage == nPage) | 
 | 			GotoPage(1); | 
 | 	} | 
 | } |