Index: picstatus.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/picstatus.cpp,v
retrieving revision 1.12.2.8
diff -u -r1.12.2.8 picstatus.cpp
--- picstatus.cpp	14 Jun 2005 12:35:53 -0000	1.12.2.8
+++ picstatus.cpp	10 Jul 2005 00:35:18 -0000
@@ -216,6 +216,7 @@
  \param None
  \retval None
  */
+
 void PicStatus::SearchPic()
 {
 	uint ZNr = QString(sender()->name()).toUInt();
@@ -227,13 +228,8 @@
 	qApp->setOverrideCursor(QCursor(waitCursor), true);
 	qApp->processEvents();
 	QString home = QDir::homeDirPath();
-	FILE *fp = popen("find "+home+" -name " + BildNam, "r");
 	qApp->setOverrideCursor(QCursor(arrowCursor), true);
-	if (fp == NULL)
-		return;
-	QTextStream ts(fp, IO_ReadOnly);
-	QString tmp = ts.read();
-	Pfade = QStringList::split("\n", tmp);
+	findFile( home, BildNam, Pfade);
 	if (Pfade.count() > 1)
 	{
 		PicSearch *dia = new PicSearch(this, BildNam, Pfade);
@@ -298,7 +294,42 @@
 			view->DrawNew();
 		}
 	}
-	pclose(fp);
+}
+
+void PicStatus::findFile( QString dirName, QString fileName, QStringList& fileList, bool init)
+{
+	if( init ) 
+		fileList.clear();
+
+	// Search file in specified dir;
+	QDir df( dirName, fileName, QDir::Name, QDir::Files | QDir::Readable | QDir::NoSymLinks );
+	if( df.exists() )
+	{
+		if( df.count() > 0 )
+		{
+			for( unsigned int i = 0; i < df.count(); i++ )
+			{
+				fileList.push_back( df[i] );
+			}
+		}
+	}
+
+	// Search file in sub-directories
+	QDir dd( dirName, "*", QDir::Name, QDir::Dirs | QDir::Readable | QDir::NoSymLinks );
+	if( dd.exists() )
+	{
+		if( dd.count() > 0 )
+		{
+			for( unsigned int j = 0; j < dd.count(); j++ )
+			{
+				QString subdir = dd[j];
+				if( subdir == "." || subdir == "..") 
+					continue; 
+				subdir = dirName + "/" + subdir;
+				findFile( subdir, fileName, fileList, false);
+			}
+		}
+	}
 }
 
 /*!
Index: picstatus.h
===================================================================
RCS file: /cvs/Scribus/scribus/picstatus.h,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 picstatus.h
--- picstatus.h	4 May 2005 23:27:10 -0000	1.2.2.3
+++ picstatus.h	9 Jul 2005 23:52:07 -0000
@@ -40,6 +40,8 @@
     QVBoxLayout* PicStatusLayout;
     QHBoxLayout* Layout2;
 
+	void findFile( QString dirName, QString fileName, QStringList& fileList, bool init = true);
+
 signals:
 	void selectPage(int);
 	void selectMasterPage(QString);


