summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-06-03 09:53:26 (UTC)
committer zautrix <zautrix>2005-06-03 09:53:26 (UTC)
commitab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f (patch) (side-by-side diff)
treefd37448d3cf5d7e5a193a8d4cc8e5421d5e7297a
parentce9b826d7c0d9249751f8fb7b791c3757aff3c39 (diff)
downloadkdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.zip
kdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.tar.gz
kdepimpi-ab0f6af57ebf5b5a6fa2f7e6209fe04aafbfb14f.tar.bz2
popup selection fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventpopupmenu.cpp27
-rw-r--r--korganizer/koeventpopupmenu.h3
-rw-r--r--korganizer/kolistview.cpp12
-rw-r--r--korganizer/kolistview.h1
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();