00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "kalarm.h"
00022
00023 #include <kactionclasses.h>
00024 #include <kpopupmenu.h>
00025 #include <kdebug.h>
00026
00027 #include "alarmcalendar.h"
00028 #include "alarmevent.h"
00029 #include "functions.h"
00030 #include "templatemenuaction.moc"
00031
00032
00033 TemplateMenuAction::TemplateMenuAction(const TQString& label, const TQString& icon, TQObject* receiver,
00034 const char* slot, KActionCollection* actions, const char* name)
00035 : KActionMenu(label, icon, actions, name)
00036 {
00037 setDelayed(false);
00038 connect(popupMenu(), TQT_SIGNAL(aboutToShow()), TQT_SLOT(slotInitMenu()));
00039 connect(popupMenu(), TQT_SIGNAL(activated(int)), TQT_SLOT(slotSelected(int)));
00040 connect(this, TQT_SIGNAL(selected(const KAEvent&)), receiver, slot);
00041 }
00042
00043
00044
00045
00046
00047 void TemplateMenuAction::slotInitMenu()
00048 {
00049 KPopupMenu* menu = popupMenu();
00050 menu->clear();
00051 mOriginalTexts.clear();
00052 TQValueList<KAEvent> templates = KAlarm::templateList();
00053 for (TQValueList<KAEvent>::ConstIterator it = templates.constBegin(); it != templates.constEnd(); ++it)
00054 {
00055 TQString name = (*it).templateName();
00056
00057 TQStringList::Iterator tit;
00058 for (tit = mOriginalTexts.begin();
00059 tit != mOriginalTexts.end() && TQString::localeAwareCompare(name, *tit) > 0;
00060 ++tit);
00061 mOriginalTexts.insert(tit, name);
00062 }
00063 for (TQStringList::ConstIterator tit = mOriginalTexts.constBegin(); tit != mOriginalTexts.constEnd(); ++tit)
00064 menu->insertItem(*tit);
00065 }
00066
00067
00068
00069
00070
00071 void TemplateMenuAction::slotSelected(int id)
00072 {
00073 KPopupMenu* menu = popupMenu();
00074 TQString item = mOriginalTexts[menu->indexOf(id)];
00075 if (!item.isEmpty())
00076 {
00077 AlarmCalendar* cal = AlarmCalendar::templateCalendarOpen();
00078 if (cal)
00079 {
00080 KAEvent templ = KAEvent::findTemplateName(*cal, item);
00081 emit selected(templ);
00082 }
00083 }
00084 }