diff --git a/kmfolderdia.cpp b/kmfolderdia.cpp index aa2f53942..2b6e84355 100644 --- a/kmfolderdia.cpp +++ b/kmfolderdia.cpp @@ -35,6 +35,7 @@ KMFolderDialog::KMFolderDialog(KMFolder* aFolder, KMFolderDir *aFolderDir, KDialogBase::Ok, aParent, "KMFolderDialog", TRUE ), folder((KMAcctFolder*)aFolder),mFolderDir( aFolderDir ) { + mFolder = aFolder; qDebug("KMFolderDialog::KMFolderDialog()"); // Main tab @@ -61,8 +62,8 @@ KMFolderDialog::KMFolderDialog(KMFolder* aFolder, KMFolderDir *aFolderDir, hl->addSpacing( spacingHint() ); - label = new QLabel( i18n("File under:" ), page ); - hl->addWidget( label ); + QLabel *label2 = new QLabel( i18n("File under:" ), page ); + hl->addWidget( label2 ); fileInFolder = new QComboBox(page); hl->addWidget( fileInFolder ); @@ -88,6 +89,13 @@ KMFolderDialog::KMFolderDialog(KMFolder* aFolder, KMFolderDir *aFolderDir, fileInFolder->setCurrentItem( i ); } + if (aFolder->account()) { + label->setEnabled( false ); + nameEdit->setEnabled( false ); + label2->setEnabled( false ); + fileInFolder->setEnabled( false ); + } + // Mailing-list data tab // page = addPage( i18n("Associated Mailing List"), i18n("Email addresses of the mailing-list related to this folder") ); @@ -138,60 +146,62 @@ KMFolderDialog::KMFolderDialog(KMFolder* aFolder, KMFolderDir *aFolderDir, //----------------------------------------------------------------------------- void KMFolderDialog::slotOk() { - QString acctName; - QString fldName, oldFldName; - KMFolderDir *selectedFolderDir = &(kernel->folderMgr()->dir()); - int curFolder = fileInFolder->currentItem(); - - if (folder) oldFldName = folder->name(); - if (!nameEdit->text().isEmpty()) fldName = nameEdit->text(); - else fldName = oldFldName; - fldName.replace(QRegExp("/"), ""); - if (fldName.isEmpty()) fldName = i18n("unnamed"); - if (curFolder != 0) - selectedFolderDir = (*mFolders.at(curFolder - 1))->createChildFolder(); - - QString message = i18n( "Failed to create folder '%1', folder already exists." ).arg(fldName); - if ((selectedFolderDir->hasNamedFolder(fldName)) && + if (!mFolder || !mFolder->account()) + { + QString acctName; + QString fldName, oldFldName; + KMFolderDir *selectedFolderDir = &(kernel->folderMgr()->dir()); + int curFolder = fileInFolder->currentItem(); + + if (folder) oldFldName = folder->name(); + if (!nameEdit->text().isEmpty()) fldName = nameEdit->text(); + else fldName = oldFldName; + fldName.replace(QRegExp("/"), ""); + if (fldName.isEmpty()) fldName = i18n("unnamed"); + if (curFolder != 0) + selectedFolderDir = (*mFolders.at(curFolder - 1))->createChildFolder(); + + QString message = i18n( "Failed to create folder '%1', folder already exists." ).arg(fldName); + if ((selectedFolderDir->hasNamedFolder(fldName)) && (!((folder) && - (selectedFolderDir == folder->parent()) && - (folder->name() == fldName)))) { - KMessageBox::error( this, message ); - return; - } + (selectedFolderDir == folder->parent()) && + (folder->name() == fldName)))) { + KMessageBox::error( this, message ); + return; + } - message = i18n( "Cannot move a parent folder into a child folder." ); - KMFolderDir* folderDir = selectedFolderDir; + message = i18n( "Cannot move a parent folder into a child folder." ); + KMFolderDir* folderDir = selectedFolderDir; - // Buggy? - if (folder && folder->child()) - while ((folderDir != &kernel->folderMgr()->dir()) && - (folderDir != folder->parent())){ - if (folderDir->findRef( folder ) != -1) { - KMessageBox::error( this, message ); - return; + // Buggy? + if (folder && folder->child()) + while ((folderDir != &kernel->folderMgr()->dir()) && + (folderDir != folder->parent())){ + if (folderDir->findRef( folder ) != -1) { + KMessageBox::error( this, message ); + return; + } + folderDir = folderDir->parent(); } - folderDir = folderDir->parent(); - } - // End buggy? + // End buggy? - if (folder && folder->child() && (selectedFolderDir) && + if (folder && folder->child() && (selectedFolderDir) && (selectedFolderDir->path().find( folder->child()->path() + "/" ) == 0)) { - KMessageBox::error( this, message ); - return; - } + KMessageBox::error( this, message ); + return; + } - if (folder && folder->child() && (selectedFolderDir == folder->child())) { - KMessageBox::error( this, message ); - return; - } + if (folder && folder->child() && (selectedFolderDir == folder->child())) { + KMessageBox::error( this, message ); + return; + } - if (!folder) { - folder = (KMAcctFolder*)kernel->folderMgr()->createFolder(fldName, FALSE, selectedFolderDir ); - } - else if ((oldFldName != fldName) || (folder->parent() != selectedFolderDir)) + if (!folder) { + folder = (KMAcctFolder*)kernel->folderMgr()->createFolder(fldName, FALSE, selectedFolderDir ); + } + else if ((oldFldName != fldName) || (folder->parent() != selectedFolderDir)) { if (folder->parent() != selectedFolderDir) folder->rename(fldName, selectedFolderDir ); @@ -199,6 +209,7 @@ void KMFolderDialog::slotOk() folder->rename(fldName); kernel->folderMgr()->contentsChanged(); } + } folder->setMailingList( holdsMailingList->isChecked() ); folder->setMailingListPostAddress( mailingListPostAddress->text() ); diff --git a/kmfolderdia.h b/kmfolderdia.h index 5a0b812c2..999de7e06 100644 --- a/kmfolderdia.h +++ b/kmfolderdia.h @@ -32,6 +32,7 @@ protected: QComboBox *fileInFolder; QLineEdit *nameEdit; KMAcctFolder* folder; + KMFolder *mFolder; KMFolderDir* mFolderDir; QValueList > mFolders; diff --git a/kmfoldertree.cpp b/kmfoldertree.cpp index bf2133edc..25aed2448 100644 --- a/kmfoldertree.cpp +++ b/kmfoldertree.cpp @@ -688,7 +688,7 @@ void KMFolderTree::rightButtonPressed(QListViewItem *lvi, const QPoint &p, int) QPopupMenu *folderMenu = new QPopupMenu; KMFolderTreeItem* fti = static_cast(lvi); - if (!fti || !fti->folder) + if (!fti || !fti->folder || fti->folder->isDir()) return; int m1 = folderMenu->insertItem(i18n("&Create Child Folder..."), this, @@ -708,15 +708,14 @@ void KMFolderTree::rightButtonPressed(QListViewItem *lvi, const QPoint &p, int) topLevelWidget(), SLOT(slotCompose())); - if (fti->folder->isSystemFolder()) { + if (fti->folder->account() || fti->folder->isSystemFolder()) { folderMenu->setItemEnabled(m1,false); - folderMenu->setItemEnabled(m2,false); folderMenu->setItemEnabled(m3,false); } - - if (!fti->folder->isMailingList()) { + if (fti->folder->isSystemFolder()) + folderMenu->setItemEnabled(m2,false); + if (!fti->folder->isMailingList()) folderMenu->setItemEnabled(m4,false); - } folderMenu->exec (p, 0); triggerUpdate();