[KimDaBa] Re: Problem with the import function

Jesper K. Pedersen blackie at kde.org
Fri Oct 15 10:17:12 BST 2004


Thanks for your letter, and analysis of the problem.
I'll put it in my 
to-be-considered-after-2.0-release-and-after-I-have-added-a-database-to-kimdaba 
folder.
On Thursday 14 October 2004 18:03, Jean-Michel FAYARD wrote:
| Jesper, if I´m not mistaken, it is currently impossible to do this
| with KimDaBa : UserA take the picture, share its .kim file, UserB
| improve it ( he volunteers to enter persons, locations, keywords,
| ....) and give it back to User A
|
|
| User A :
|   - launch kimdaba, import the pictures with the "Digital Camera" plugin
|   - does not want / does not have the time to set Persons, Locations,
| Keywords - select those pictures
|   - export as .kim file
|   - How to handle images : include in .kim file
|   - send the .kim file to userB
|
| User B :
|    - launch kimdaba, import the .kim file
|    - set Persons, Keywords, Locations, ...
|    - export as .kim file
|    - How to handle images : manual copy next to .kim file
|    - he DOES NOT copy the pictures, since he wants to send them to
| user A which has the pictures already. It would be a waste of bandwith
|    - send the .kim file without the pictures to UserA
|
| User A : OK, thanks, now I have the improvment over my old .kim file
|    - launch kimdaba, import the .kim file
|    - next > next > next
|    - the import function try to copy the files that are not here. The
| application is blocked because the progress bar never gets updated and
| ends.
|
|
| WISH : when the pictures are not present, the import function should
| just merge the information in the database.  Maybe the pictures are
| already in the database, a scan of the disk will find them thanks to
| the md5sum, maybe the user will copy them after, let them be images
| not on disk.
|
|
|
| The problem is im import.cpp :
|
| void Import::copyNextFromExternal()
| {
|     ImageInfo* info = _pendingCopies.at(0);
|     _pendingCopies.remove((uint)0);
|     QString fileName = info->fileName( true );
|     KURL src1 = _kimFile;
|     KURL src2 = _baseUrl + QString::fromLatin1( "/" );
|     for ( int i = 0; i < 2; ++i ) {
|         KURL src = src1;
|         if ( i == 1 )
|             src = src2;
|
|         src.setFileName( fileName );
|         if ( KIO::NetAccess::exists( src, true, MainView::theMainView() ) )
| { KURL dest;
|             dest.setPath( Options::instance()->imageDirectory() +
| _nameMap[fileName] );
|             _job = KIO::file_copy( src, dest, -1, false, false, false );
|             connect( _job, SIGNAL( result( KIO::Job* ) ), this, SLOT(
| aCopyJobCompleted( KIO::Job* ) ) );
|             break;
|         }
|          // HERE, it lacks something, the progress bar is not updated,
| deleted, ...
|     }
| }
|
|
| void Import::aCopyJobCompleted( KIO::Job* job )
| {
|     // TODO: we never enter here if the pictures are not present
|     if ( job->error() ) {
|         job->showErrorDialog( 0 );
|         deleteLater();
|         delete _progress;
|     }
|     else if ( _pendingCopies.count() == 0 ) {
|         updateDB();
|         deleteLater();
|         delete _progress;
|     }
|     else if ( _progress->wasCanceled() ) {
|         deleteLater();
|         delete _progress;
|     }
|     else {
|         _progress->setProgress( ++_totalCopied ); // TODO :
| setProgress ( _totalCopied + _totalMergedInDatabase
|         copyNextFromExternal();
|     }
| }

-- 
Having trouble finding a given image in your collection containing
thousands of images?

http://ktown.kde.org/kimdaba might be the answer.



More information about the Kphotoalbum mailing list