korganizer Library API Documentation

birthdays.cpp

00001 /* 00002 This file is part of KOrganizer. 00003 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 */ 00019 00020 #include <qfile.h> 00021 #include <qstring.h> 00022 #include <qdatetime.h> 00023 00024 #include <kapplication.h> 00025 #include <kconfig.h> 00026 #include <kstandarddirs.h> 00027 #include <klocale.h> 00028 #include <kdebug.h> 00029 #include <kaction.h> 00030 #include <kmessagebox.h> 00031 #include <qcheckbox.h> 00032 #include <krestrictedline.h> 00033 00034 #include <kabc/addressbook.h> 00035 #include <kabc/stdaddressbook.h> 00036 00037 #include <libkcal/calendar.h> 00038 #include <libkcal/event.h> 00039 #include <libkcal/alarm.h> 00040 00041 #include "calendarview.h" 00042 #include "koprefs.h" 00043 00044 #include "birthdaysdialog.h" 00045 00046 #include "birthdays.h" 00047 #include "birthdays.moc" 00048 00049 00050 class BirthdaysFactory : public KOrg::PartFactory { 00051 public: 00052 KOrg::Part *create(KOrg::MainWindow *parent, const char *name) 00053 { 00054 return new Birthdays(parent,name); 00055 } 00056 }; 00057 00058 extern "C" { 00059 void *init_libkorg_birthdays() 00060 { 00061 return (new BirthdaysFactory); 00062 } 00063 } 00064 00065 00066 Birthdays::Birthdays(KOrg::MainWindow *parent, const char *name) : 00067 KOrg::Part(parent,name) 00068 { 00069 setInstance( new KInstance( "korganizer" ) ); 00070 00071 setXMLFile("plugins/birthdaysui.rc"); 00072 00073 new KAction( i18n("Import Birthdays..."), 0, this, SLOT(importBirthdays()), 00074 actionCollection(), "import_birthdays"); 00075 00076 mParent = parent->topLevelWidget(); 00077 } 00078 00079 Birthdays::~Birthdays() 00080 { 00081 } 00082 00083 QString Birthdays::info() 00084 { 00085 return i18n("This plugin inserts birthdays imported from the KDE addressbook for the next one year."); 00086 } 00087 00088 void Birthdays::importBirthdays() 00089 { 00090 // kdDebug(5850) << "import the birthdays from the addressbook" << endl; 00091 00092 #ifndef KORG_NOKABC 00093 Calendar *cal = mainWindow()->view()->calendar(); 00094 QDateTime birthdate; 00095 QString summary; 00096 int inserted_birthdays = 0; 00097 00098 BirthdaysDialog *bd = new BirthdaysDialog(); 00099 if (bd->exec()!=QDialog::Accepted) return; 00100 00101 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 00102 KABC::AddressBook::Iterator it; 00103 for ( it = add_book->begin(); it != add_book->end(); ++it ) { 00104 if ( (*it).birthday().date().isValid() ) { 00105 kdDebug(5850) << "found a birthday " << (*it).birthday().toString() << endl; 00106 00107 QString name = (*it).nickName(); 00108 if (name.isEmpty()) name = (*it).realName(); 00109 summary = i18n("%1's birthday").arg( name ); 00110 birthdate = (*it).birthday(); 00111 00112 Event *ev = 0; 00113 Event *e; 00114 // look if not already imported 00115 bool insert = true; 00116 Event::List events = cal->events(birthdate); 00117 Event::List::ConstIterator it; 00118 for( it = events.begin(); it != events.end(); ++it ) { 00119 e = *it; 00120 kdDebug(5850) << summary << " | " << e->summary() << endl; 00121 if ( e->summary()==summary ) { 00122 kdDebug(5850) << " inserted " << e->summary() << endl; 00123 insert = false; 00124 ev = e; 00125 e = events.last(); 00126 } 00127 } 00128 if (!ev) ev = new Event(); 00129 00130 00131 ev->setDtStart(birthdate); 00132 ev->setDtEnd(birthdate); 00133 ev->setHasEndDate(true); 00134 00135 ev->setSummary(summary); 00136 00137 // Set the recurrence 00138 Recurrence *vRecurrence = ev->recurrence(); 00139 vRecurrence->setRecurStart(birthdate); 00140 vRecurrence->setYearly(Recurrence::rYearlyMonth,1,-1); 00141 vRecurrence->addYearlyNum(birthdate.date().month()); 00142 00143 ev->clearAlarms(); 00144 if (bd->mAlarm->isChecked()) { 00145 // Set the alarm 00146 Alarm* vAlarm = ev->newAlarm(); 00147 vAlarm->setText(summary); 00148 vAlarm->setTime(birthdate); 00149 vAlarm->setStartOffset(-1440 * bd->mAlarmTimeEdit->text().toInt()); 00150 vAlarm->setEnabled(true); 00151 } 00152 00153 // insert category 00154 QStringList::Iterator itc; 00155 for (itc = KOPrefs::instance()->mCustomCategories.begin(); 00156 itc != KOPrefs::instance()->mCustomCategories.end(); ++itc ) { 00157 if ((*itc)==i18n("Birthday")) 00158 ev->setCategories(i18n("Birthday")); 00159 } 00160 00161 if (insert) { 00162 cal->addEvent(ev); 00163 inserted_birthdays++; 00164 kdDebug(5850) << "imported " << birthdate.toString() << endl; 00165 } 00166 } 00167 } 00168 summary = i18n("Imported 1 birthday.", "Imported %n birthdays.", inserted_birthdays); 00169 KMessageBox::information(mParent,summary); 00170 #endif 00171 00172 }
KDE Logo
This file is part of the documentation for korganizer Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 28 23:58:12 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003