-rw-r--r-- | korganizer/koeditorgeneral.cpp | 51 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.h | 7 | ||||
-rw-r--r-- | korganizer/koprefs.cpp | 16 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 19 |
4 files changed, 69 insertions, 24 deletions
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp index 915c7ec..50a04ea 100644 --- a/korganizer/koeditorgeneral.cpp +++ b/korganizer/koeditorgeneral.cpp @@ -144,2 +144,36 @@ void KOEditorGeneral::editCategories() } + +void KOEditorGeneral::showCatPopup() +{ + mCatPopup->clear(); + QStringList checkedCategories = QStringList::split (",", mCategoriesLabel->text()); + int index = 0; + for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); + it != KOPrefs::instance()->mCustomCategories.end (); + ++it) { + mCatPopup->insertItem (*it, index ); + //mCategory[index] = *it; + if (checkedCategories.find (*it) != checkedCategories.end ()) mCatPopup->setItemChecked (index, true); + ++index; + } +} +void KOEditorGeneral::selectedCatPopup( int index ) +{ + qDebug("i %d c %d ", index, KOPrefs::instance()->mCustomCategories.count()); + QStringList categories = QStringList::split (",", mCategoriesLabel->text()); + QString colcat = categories.first(); + if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) + categories.remove (KOPrefs::instance()->mCustomCategories[index]); + else + categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); + categories.sort (); + if ( !colcat.isEmpty() ) { + if ( categories.find ( colcat ) != categories.end () ) { + categories.remove( colcat ); + categories.prepend( colcat ); + } + } + mCategoriesLabel->setText( categories.join(",") ); +} + void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) @@ -147,10 +181,15 @@ void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); - + mCatPopup = new QPopupMenu ( parent ); + mCatPopup->setCheckable (true); + connect(mCatPopup,SIGNAL(aboutToShow () ), this ,SLOT(showCatPopup())); + connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT(selectedCatPopup( int ))); mCategoriesButton = new QPushButton(parent); - mCategoriesButton->setText(i18n("Categories...")); - connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); + mCategoriesButton->setText(i18n("Categories")); + //connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); categoriesLayout->addWidget(mCategoriesButton); - - mCategoriesLabel = new QLabel(parent); - mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); + mCategoriesButton->setPopup( mCatPopup ); + mCategoriesLabel = new QPushButton(parent);//new QLabel(parent); + mCategoriesLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); + connect(mCategoriesLabel,SIGNAL(clicked()),this, SLOT(editCategories() )); + //mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); categoriesLayout->addWidget(mCategoriesLabel,1); diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h index a8f6443..c463403 100644 --- a/korganizer/koeditorgeneral.h +++ b/korganizer/koeditorgeneral.h @@ -29,2 +29,3 @@ #include <qpushbutton.h> +#include <qpopupmenu.h> #include <qgroupbox.h> @@ -84,2 +85,5 @@ class KOEditorGeneral : public QObject void slotSetFocusOn(); + void showCatPopup(); + void selectedCatPopup( int ); + signals: @@ -106,5 +110,6 @@ class KOEditorGeneral : public QObject QPushButton *mCategoriesButton; - QLabel *mCategoriesLabel; + QPushButton *mCategoriesLabel; private: + QPopupMenu * mCatPopup; QString getFittingPath( const QString ) ; diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 7ba7269..9db2040 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp @@ -393,9 +393,9 @@ QStringList KOPrefs::getDefaultList() QStringList retval ; - retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Business Travel") << i18n("Cinema") << i18n("Customer") - << i18n("Break")<< i18n("Breakfast")<< i18n("Competition")<< i18n("Dinner") - << i18n("Education")<< i18n("Family") << i18n("Favorites") << i18n("Festival")<< i18n("Fishing")<< i18n("Flight") << i18n("Gifts") - << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Hiking") << i18n("Hunting") << i18n("Key Customer") << i18n("Kids") - << i18n("Lunch") << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner")<< i18n("Party") << i18n("Personal") << i18n("Personal Travel") - << i18n("PHB") << i18n("Phone Calls") << i18n("Projects") << i18n("Recurring") << i18n("School") << i18n("Shopping") - << i18n("Speach") << i18n("Special Occasion") << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University") + retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Cinema") << i18n("Customer") + << i18n("Break") + << i18n("Family") << i18n("Favorites") << i18n("Fishing")<< i18n("Flight") << i18n("Gifts") + << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Key Customer") + << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner") << i18n("Personal") + << i18n("PHB") << i18n("Phone Calls") << i18n("School") << i18n("Shopping") + << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University") << i18n("Vacation") << i18n("VIP") << i18n("SyncEvent") ; @@ -405,3 +405,3 @@ QStringList KOPrefs::getDefaultList() } - +// << i18n("Business Travel") << i18n("Education") << i18n("Hiking") << i18n("Hunting") << i18n("Recurring") << i18n("Personal Travel") << i18n("Speach") << i18n("Festival") << i18n("Competition")<< i18n("Party")<< i18n("Projects")<< i18n("Kids") << i18n("Special Occasion")<< i18n("Breakfast")<< i18n("Dinner") << i18n("Lunch") void KOPrefs::usrReadConfig() diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 1bfdef9..873a776 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -499,2 +499,3 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : { + mCategoryPopupMenu = 0; mPendingUpdateBeforeRepaint = false; @@ -1160,6 +1161,10 @@ QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) { - QPopupMenu* tempMenu = new QPopupMenu (this); + if ( !mCategoryPopupMenu ) { + mCategoryPopupMenu = new QPopupMenu (this); + mCategoryPopupMenu->setCheckable (true); + connect (mCategoryPopupMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); + } + mCategoryPopupMenu->clear(); QStringList checkedCategories = todoItem->todo()->categories (); - tempMenu->setCheckable (true); for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); @@ -1167,11 +1172,7 @@ QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) ++it) { - int index = tempMenu->insertItem (*it); + int index = mCategoryPopupMenu->insertItem (*it); mCategory[index] = *it; - if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); + if (checkedCategories.find (*it) != checkedCategories.end ()) mCategoryPopupMenu->setItemChecked (index, true); } - - connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); - return tempMenu; - - + return mCategoryPopupMenu; } |