author | zautrix <zautrix> | 2005-06-03 09:53:26 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-06-03 09:53:26 (UTC) |
commit | ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f (patch) (side-by-side diff) | |
tree | fd37448d3cf5d7e5a193a8d4cc8e5421d5e7297a /korganizer | |
parent | ce9b826d7c0d9249751f8fb7b791c3757aff3c39 (diff) | |
download | kdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.zip kdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.tar.gz kdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.tar.bz2 |
popup selection fix
-rw-r--r-- | korganizer/koeventpopupmenu.cpp | 27 | ||||
-rw-r--r-- | korganizer/koeventpopupmenu.h | 3 | ||||
-rw-r--r-- | korganizer/kolistview.cpp | 12 | ||||
-rw-r--r-- | korganizer/kolistview.h | 1 |
4 files changed, 38 insertions, 5 deletions
diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp index b274810..17ef81e 100644 --- a/korganizer/koeventpopupmenu.cpp +++ b/korganizer/koeventpopupmenu.cpp @@ -37,5 +37,6 @@ KOEventPopupMenu::KOEventPopupMenu() mHasAdditionalItems = false; - insertItem (i18n("&Show"),this,SLOT(popupShow())); + + mSingleOnlyItems.append( insertItem (i18n("&Show"),this,SLOT(popupShow()))); mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit()))); mEditOnlyItems.append(insertItem (i18n("&Delete"), @@ -51,4 +52,18 @@ KOEventPopupMenu::KOEventPopupMenu() mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"), this,SLOT(popupCancel()))); + isDisabled = false; + QValueList<int>::Iterator it; + for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { + mSingleOnlyItems.append(*it); + } +} +void KOEventPopupMenu::enableDefault( bool enable ) +{ + isDisabled = !enable; + QValueList<int>::Iterator it; + for( it = mSingleOnlyItems.begin(); it != mSingleOnlyItems.end(); ++it ) { + setItemEnabled(*it,enable); + } + } @@ -59,8 +74,10 @@ void KOEventPopupMenu::showIncidencePopup(Incidence *incidence) if (mCurrentIncidence) { // Enable/Disabled menu items only valid for editable events. - QValueList<int>::Iterator it; - for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { - setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); - } + if ( !isDisabled ) { + QValueList<int>::Iterator it; + for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { + setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); + } + } popup(QCursor::pos()); } else { diff --git a/korganizer/koeventpopupmenu.h b/korganizer/koeventpopupmenu.h index 6993899..8fb51fa 100644 --- a/korganizer/koeventpopupmenu.h +++ b/korganizer/koeventpopupmenu.h @@ -45,4 +45,5 @@ class KOEventPopupMenu : public QPopupMenu { public slots: void showIncidencePopup(Incidence *); + void enableDefault( bool ); protected slots: @@ -69,4 +70,6 @@ class KOEventPopupMenu : public QPopupMenu { bool mHasAdditionalItems; QValueList<int> mEditOnlyItems; + QValueList<int> mSingleOnlyItems; + bool isDisabled; }; diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index b94916a..02247c8 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp @@ -1004,4 +1004,5 @@ void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) if (mActiveItem) { Incidence *incidence = mActiveItem->data(); + mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) ); mPopupMenu->showIncidencePopup(incidence); @@ -1196,4 +1197,15 @@ KOListViewListView::KOListViewListView(KOListView * lv ) setMultiSelection( true); } +bool KOListViewListView::hasMultiSelection(QListViewItem* item) +{ + int selCount = 0; + QListViewItem *qitem = firstChild (); + while ( qitem ) { + if ( qitem->isSelected() && item != qitem ) + return true; + qitem = qitem->nextSibling(); + } + return false; +} void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) { diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h index 2051d60..dee69f6 100644 --- a/korganizer/kolistview.h +++ b/korganizer/kolistview.h @@ -216,4 +216,5 @@ class KOListViewListView : public KListView public: KOListViewListView(KOListView * lv ); + bool hasMultiSelection(QListViewItem*); signals: void newEvent(); |