Forward port revision 689897

svn path=/trunk/KDE/kdepim/; revision=691440
wilder-work
Bruno Virlet 19 years ago
parent 864f82e443
commit ad69799d88
  1. 6
      copyfolderjob.cpp
  2. 2
      kmfolder.cpp
  3. 5
      kmfoldermgr.cpp
  4. 3
      kmfoldermgr.h
  5. 30
      kmfoldertree.cpp
  6. 3
      kmfoldertree.h

@ -66,7 +66,10 @@ CopyFolderJob::~CopyFolderJob()
if ( mNewFolder )
mNewFolder->setMoveInProgress( false );
if ( mStorage )
mStorage->close( "copyfolder" );
{
mStorage->folder()->setMoveInProgress( false );
mStorage->close("copyfolder");
}
}
/*
@ -237,6 +240,7 @@ bool CopyFolderJob::createTargetDir()
}
mNewFolder->setMoveInProgress( true );
mStorage->folder()->setMoveInProgress( true );
// inherit the folder type
// FIXME we should probably copy over most if not all settings

@ -299,7 +299,7 @@ void KMFolder::setChild( KMFolderDir* aChild )
bool KMFolder::noContent() const
{
return mStorage->noContent();
return mStorage ? mStorage->noContent() : true;
}
void KMFolder::setNoContent( bool aNoContent )

@ -552,6 +552,9 @@ void KMFolderMgr::renameFolder( KMFolder* folder, const QString& newName,
RenameJob* job = new RenameJob( folder->storage(), newName, newParent );
connect( job, SIGNAL( renameDone( const QString&, bool ) ),
this, SLOT( slotRenameDone( const QString&, bool ) ) );
connect( job, SIGNAL( renameDone( const QString&, bool ) ),
this, SIGNAL( folderMoveOrCopyOperationFinished() ) );
job->start();
}
@ -560,6 +563,8 @@ void KMFolderMgr::copyFolder( KMFolder* folder, KMFolderDir *newParent )
{
kDebug(5006) << "Copy folder: " << folder->prettyUrl() << endl;
CopyFolderJob* job = new CopyFolderJob( folder->storage(), newParent );
connect( job, SIGNAL( folderCopyComplete( bool ) ),
this, SIGNAL( folderMoveOrCopyOperationFinished() ) );
job->start();
}

@ -165,6 +165,9 @@ signals:
/** Emitted when a field of the header of a specific message changed. */
void msgHeaderChanged(KMFolder*, int idx);
/** Emitted when a folder has been moved or copied */
void folderMoveOrCopyOperationFinished();
protected:
/** Auxillary function to facilitate removal of a folder */

@ -264,6 +264,11 @@ void KMFolderTreeItem::slotNameChanged()
repaint();
}
//----------------------------------------------------------------------------
void KMFolderTree::slotFolderMoveOrCopyOperationFinished()
{
setDragEnabled( true );
}
//-----------------------------------------------------------------------------
bool KMFolderTreeItem::acceptDrag(QDropEvent* e) const
@ -272,7 +277,7 @@ bool KMFolderTreeItem::acceptDrag(QDropEvent* e) const
return false; // nothing can be dragged into search folders
if ( KPIM::MailList::canDecode( e->mimeData() ) ) {
if ( !mFolder || mFolder->isReadOnly() ||
if ( !mFolder || mFolder->moveInProgress() || mFolder->isReadOnly() ||
(mFolder->noContent() && childCount() == 0) ||
(mFolder->noContent() && isOpen()) ) {
return false;
@ -390,6 +395,9 @@ void KMFolderTree::connectSignals()
connect(kmkernel->folderMgr(), SIGNAL(folderRemoved(KMFolder*)),
this, SLOT(slotFolderRemoved(KMFolder*)));
connect(kmkernel->folderMgr(), SIGNAL(folderMoveOrCopyOperationFinished()),
this, SLOT(slotFolderMoveOrCopyOperationFinished()));
connect(kmkernel->imapFolderMgr(), SIGNAL(changed()),
this, SLOT(doFolderListChanged()));
@ -827,6 +835,11 @@ void KMFolderTree::slotFolderRemoved(KMFolder *aFolder)
doFolderSelected( qlvi );
}
removeFromFolderToItemMap( aFolder );
if ( dropItem == fti ) { // The removed item is the dropItem
dropItem = 0; // it becomes invalid
}
delete fti;
updateCopyActions();
}
@ -1409,6 +1422,9 @@ void KMFolderTree::contentsDragEnterEvent( QDragEnterEvent *e )
dropItem = i;
autoopen_timer.start( autoopenTime );
}
else
dropItem = 0;
e->setAccepted( acceptDrag(e) );
}
@ -1475,7 +1491,14 @@ void KMFolderTree::contentsDropEvent( QDropEvent *e )
Q3ListViewItem *item = itemAt( contentsToViewport(e->pos()) );
KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>(item);
int action = -1;
// Check that each pointer is not null
for ( QList<QPointer<KMFolder> >::ConstIterator it = mCopySourceFolders.constBegin();
it != mCopySourceFolders.constEnd(); ++it ) {
if ( ! (*it) ) {
fti = 0;
break;
}
}
if (fti && mCopySourceFolders.count() == 1)
{
KMFolder *source = mCopySourceFolders.first();
@ -2024,6 +2047,9 @@ void KMFolderTree::moveOrCopyFolder( QList<QPointer<KMFolder> > sources, KMFolde
{
kDebug(5006) << k_funcinfo << "source: " << sources << " destination: " << destination << " move: " << move << endl;
// Disable drag during copy operation since it prevents from many crashes
setDragEnabled( false );
KMFolderDir* parent = &(kmkernel->folderMgr()->dir());
if ( destination )
parent = destination->createChildFolder();

@ -274,6 +274,9 @@ protected slots:
/** called, when a folder has been deleted */
void slotFolderRemoved(KMFolder *);
/** called, when a folder has been moved or copied, successfully or not */
void slotFolderMoveOrCopyOperationFinished();
/** Updates the folder tree (delayed), causing a "blink" */
void refresh();

Loading…
Cancel
Save