knotes

knotesalarm.cpp

00001 /*******************************************************************
00002  KNotes -- Notes for the KDE project
00003 
00004  Copyright (c) 2005, Michael Brade <brade@kde.org>
00005 
00006  This program is free software; you can redistribute it and/or
00007  modify it under the terms of the GNU General Public License
00008  as published by the Free Software Foundation; either version 2
00009  of the License, or (at your option) any later version.
00010 
00011  This program is distributed in the hope that it will be useful,
00012  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  GNU General Public License for more details.
00015 
00016  You should have received a copy of the GNU General Public License
00017  along with this program; if not, write to the Free Software
00018  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019 
00020  In addition, as a special exception, the copyright holders give
00021  permission to link the code of this program with any edition of
00022  the Qt library by Trolltech AS, Norway (or with modified versions
00023  of Qt that use the same license as Qt), and distribute linked
00024  combinations including the two.  You must obey the GNU General
00025  Public License in all respects for all of the code used other than
00026  Qt.  If you modify this file, you may extend this exception to
00027  your version of the file, but you are not obligated to do so.  If
00028  you do not wish to do so, delete this exception statement from
00029  your version.
00030 *******************************************************************/
00031 
00032 #include <tqstringlist.h>
00033 
00034 #include <kmessagebox.h>
00035 #include <klocale.h>
00036 
00037 #include <libkcal/calendarresources.h>
00038 
00039 #include "knotes/resourcemanager.h"
00040 
00041 #include "knotesalarm.h"
00042 #include "knotesglobalconfig.h"
00043 
00044 
00045 KNotesAlarm::KNotesAlarm( KNotesResourceManager *manager, TQObject *parent, const char *name )
00046   : TQObject( parent, name ),
00047     m_manager( manager ),
00048     m_checkTimer( 0, "m_checkTimer" )
00049 {
00050     // TODO: fix timezone stuff?
00051 
00052     connect( &m_checkTimer, TQT_SIGNAL(timeout()), TQT_SLOT(checkAlarms()) );
00053     m_checkTimer.start( 1000 * KNotesGlobalConfig::self()->checkInterval() );  // interval in seconds
00054 }
00055 
00056 void KNotesAlarm::checkAlarms()
00057 {
00058     TQDateTime from = KNotesGlobalConfig::self()->alarmsLastChecked().addSecs( 1 );
00059     if ( !from.isValid() )
00060         from.setTime_t( 0 );
00061 
00062     KNotesGlobalConfig::self()->setAlarmsLastChecked( TQDateTime::currentDateTime() );
00063     TQValueList<KCal::Alarm *> alarms = m_manager->alarms( from, KNotesGlobalConfig::self()->alarmsLastChecked() );
00064     if( alarms.isEmpty())
00065         return;
00066     TQStringList notes;
00067     TQValueList<KCal::Alarm *>::ConstIterator it;
00068     for ( it = alarms.constBegin(); it != alarms.constEnd(); ++it )
00069     {
00070         KCal::Incidence *incidence = (*it)->parent();
00071         notes += incidence->summary();
00072     }
00073 
00074     if ( !notes.isEmpty() )
00075         KMessageBox::informationList( 0, i18n("The following notes triggered alarms:"), notes, i18n("Alarm") );
00076 }
00077 
00078 
00079 #include "knotesalarm.moc"