[KPhotoAlbum] Delete select (images) dialog
Christoph Moseler
forums at moseler.net
Fri May 18 20:02:13 BST 2007
Hi,
would it be possible to review and apply the patch?
Thanks,
Christoph
Christoph Moseler wrote:
> > Will you take care of fixing it?
> Sure!
> Here's the patch.
>
> Cheers,
> Christoph
>
> Jesper K. Pedersen wrote:
>> Christoph, I completely agree with you on your diagnostic, and agree
>> this is a bug.
>>
>> Will you take care of fixing it?
>>
>> Thanks
>> Jesper.
>>
>> On Friday 17 November 2006 00:03, Christoph Moseler wrote:
>> | Hi Jesper,
>> |
>> | I'm always wondering why the "Delete select"-dialog behaves a little
>> bit
>> | weird when I try to delete files that are read-only. I normally
>> | chmod -R a-w
>> | the directories containing images (better is better). When I try to
>> | delete a read-only image, I would assume that all images that failed to
>> | delete would be kept in the kpa database. Otherwise I would never
>> have a
>> | chance to correct the file permissions and try the deletion again.
>> |
>> | Having a look at "void DeleteDialog::deleteImages()" is making clear,
>> | why this happens. I get an error message for these files, but later on
>> | the files are deleted from kpa (in DB::ImageDB::instance()->deleteList(
>> | _list ) ).
>> |
>> | Images that failed to be removed from disk should be also removed from
>> | _list so that they are also not removed from the database.
>> |
>> |
>> | BTW: The dialog is doing nothing if neither "Delete images..." nor
>> | "Block from..." is checked. In this case, radio buttons would be
>> better.
>> | If the user changes his mind at all, he has to press cancel.
>> |
>> | Well, it's up to you to consider this as an important bug or not, but I
>> | think we should fix it sometime.
>> |
>> | Cheers,
>> | Christoph
>> | _______________________________________________
>> | KPhotoAlbum mailing list
>> | KPhotoAlbum-xItUb1CHQy4-XMD5yJDbdMReXY1tMh2IBg at public.gmane.org
>> | http://mail.kdab.net/mailman/listinfo/kphotoalbum
>>
>
>
> ------------------------------------------------------------------------
>
> Index: MainWindow/DeleteDialog.h
> ===================================================================
> --- MainWindow/DeleteDialog.h (revision 621690)
> +++ MainWindow/DeleteDialog.h (working copy)
> @@ -39,7 +39,6 @@
> private:
> QStringList _list;
> QLabel* _label;
> - QCheckBox* _deleteFromDisk;
> QCheckBox* _block;
>
> };
> Index: MainWindow/DeleteDialog.cpp
> ===================================================================
> --- MainWindow/DeleteDialog.cpp (revision 621690)
> +++ MainWindow/DeleteDialog.cpp (working copy)
> @@ -40,9 +40,6 @@
> _label = new QLabel( top );
> lay1->addWidget( _label );
>
> - _deleteFromDisk = new QCheckBox( i18n( "Delete images/videos from disk and database" ), top );
> - lay1->addWidget( _deleteFromDisk );
> -
> _block = new QCheckBox( i18n( "Block from database" ), top );
> lay1->addWidget( _block );
>
> @@ -53,7 +50,6 @@
> {
> _label->setText( i18n("<p><b><center><font size=\"+3\">Delete Images/Videos<br>%1 selected</font></center></b></p>").arg( list.count() ) );
>
> - _deleteFromDisk->setChecked( true );
> _block->setChecked( false );
> _list = list;
>
> @@ -64,26 +60,40 @@
> {
> Utilities::ShowBusyCursor dummy;
>
> - if ( _deleteFromDisk->isChecked() ) {
> - for( QStringList::ConstIterator it = _list.begin(); it != _list.end(); ++it ) {
> - Utilities::removeThumbNail( *it );
> - if ( DB::ImageInfo::imageOnDisk(*it) ) {
> - bool ok = !(QFile( *it ).exists()) || QFile( *it ).remove();
> - if ( !ok ) {
> - KMessageBox::error( this, i18n("Unable to delete file '%1'.").arg(*it),
> - i18n("Error Deleting Files") );
> - }
> + QStringList listToDelete;
> + QStringList listCouldNotDelete;
> +
> + for( QStringList::ConstIterator it = _list.begin(); it != _list.end(); ++it ) {
> + if ( DB::ImageInfo::imageOnDisk(*it) ) {
> + bool ok = !(QFile( *it ).exists()) || QFile( *it ).remove();
> + if ( !ok ) {
> + listCouldNotDelete.append (*it );
> + } else {
> + listToDelete.append( *it );
> + Utilities::removeThumbNail( *it );
> }
> }
> }
>
> - if ( _block->isChecked() )
> - DB::ImageDB::instance()->addToBlockList( _list );
> + if( ! listCouldNotDelete.isEmpty()) {
> + KMessageBox::errorList( this, i18n("<p><b>Unable to delete %1 file(s). Do you have permission to delete these files?</b></p>").arg(listCouldNotDelete.count()), listCouldNotDelete,
> + i18n("Error Deleting Files") );
> + }
>
> - if ( _deleteFromDisk->isChecked() )
> - DB::ImageDB::instance()->deleteList( _list );
> + if( ! listToDelete.isEmpty()) {
> + if ( _block->isChecked() )
> + DB::ImageDB::instance()->addToBlockList( listToDelete );
> + else
> + DB::ImageDB::instance()->deleteList( listToDelete );
>
> - accept();
> + accept();
> +
> + } else {
> +
> + reject();
> +
> + }
> +
> }
>
> #include "DeleteDialog.moc"
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> KPhotoAlbum mailing list
> KPhotoAlbum-xItUb1CHQy4 at public.gmane.org
> http://mail.kdab.net/mailman/listinfo/kphotoalbum
More information about the Kphotoalbum
mailing list