From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kalarm/templatemenuaction.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 kalarm/templatemenuaction.cpp (limited to 'kalarm/templatemenuaction.cpp') diff --git a/kalarm/templatemenuaction.cpp b/kalarm/templatemenuaction.cpp new file mode 100644 index 000000000..dae3bc127 --- /dev/null +++ b/kalarm/templatemenuaction.cpp @@ -0,0 +1,84 @@ +/* + * templatemenuaction.cpp - menu action to select a template + * Program: kalarm + * Copyright © 2005,2008 by David Jarvie + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "kalarm.h" + +#include +#include +#include + +#include "alarmcalendar.h" +#include "alarmevent.h" +#include "functions.h" +#include "templatemenuaction.moc" + + +TemplateMenuAction::TemplateMenuAction(const QString& label, const QString& icon, QObject* receiver, + const char* slot, KActionCollection* actions, const char* name) + : KActionMenu(label, icon, actions, name) +{ + setDelayed(false); + connect(popupMenu(), SIGNAL(aboutToShow()), SLOT(slotInitMenu())); + connect(popupMenu(), SIGNAL(activated(int)), SLOT(slotSelected(int))); + connect(this, SIGNAL(selected(const KAEvent&)), receiver, slot); +} + +/****************************************************************************** +* Called when the New From Template action is clicked. +* Creates a popup menu listing all alarm templates, in sorted name order. +*/ +void TemplateMenuAction::slotInitMenu() +{ + KPopupMenu* menu = popupMenu(); + menu->clear(); + mOriginalTexts.clear(); + QValueList templates = KAlarm::templateList(); + for (QValueList::ConstIterator it = templates.constBegin(); it != templates.constEnd(); ++it) + { + QString name = (*it).templateName(); + // Insert the template in sorted order + QStringList::Iterator tit; + for (tit = mOriginalTexts.begin(); + tit != mOriginalTexts.end() && QString::localeAwareCompare(name, *tit) > 0; + ++tit); + mOriginalTexts.insert(tit, name); + } + for (QStringList::ConstIterator tit = mOriginalTexts.constBegin(); tit != mOriginalTexts.constEnd(); ++tit) + menu->insertItem(*tit); +} + +/****************************************************************************** +* Called when a template is selected from the New From Template popup menu. +* Executes a New Alarm dialog, preset from the selected template. +*/ +void TemplateMenuAction::slotSelected(int id) +{ + KPopupMenu* menu = popupMenu(); + QString item = mOriginalTexts[menu->indexOf(id)]; + if (!item.isEmpty()) + { + AlarmCalendar* cal = AlarmCalendar::templateCalendarOpen(); + if (cal) + { + KAEvent templ = KAEvent::findTemplateName(*cal, item); + emit selected(templ); + } + } +} -- cgit v1.2.1