/*
  This file is part of KOrganizer.

  Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>

  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.

  As a special exception, permission is given to link this program
  with any edition of Qt, and distribute the resulting executable,
  without including the source code for Qt in the source distribution.
*/

#include "../alarmdialog.h" //fullpath since incidenceeditors also has an alarmdialog.h

#include <Akonadi/Item>

#include <KCalCore/Event>
#include <KCalCore/Todo>

#include <KAboutData>
#include <KApplication>
#include <KCmdLineArgs>

using namespace KCalCore;

template<class T> Akonadi::Item incidenceToItem(T* incidence)
{
  Akonadi::Item item;
  item.setPayload< QSharedPointer<T> >( QSharedPointer<T>(incidence) );
  return item;
}

int main( int argc, char **argv )
{
  KAboutData aboutData( "testkabc", 0, ki18n( "TestKabc" ), "0.1" );
  KCmdLineArgs::init( argc, argv, &aboutData );

  KApplication app;

  Event *e1 = new Event;
  e1->setSummary( QLatin1String("This is a summary.") );
  KDateTime now = KDateTime::currentLocalDateTime();
  e1->setDtStart( now );
  e1->setDtEnd( now.addDays( 1 ) );
  Alarm::Ptr a = e1->newAlarm();
//  a->setProcedureAlarm( "/usr/X11R6/bin/xeyes" );
  a->setAudioAlarm( QLatin1String("/data/kde/share/apps/korganizer/sounds/spinout.wav") );

  Todo *t1 = new Todo;
  t1->setSummary( QLatin1String("To-do A") );
  t1->setDtDue( now );
  t1->newAlarm();

  Event *e2 = new Event;
  e2->setSummary( QLatin1String("This is another summary. "
                  "But it is a very long summary of total sillyness for no good reason") );
  e2->setDtStart( now.addDays( 1 ) );
  e2->setDtEnd( now.addDays( 2 ) );
  e2->newAlarm();

  Event *e3 = new Event;
  e3->setSummary( QLatin1String("Meet with Fred") );
  e3->setDtStart( now.addDays( 2 ) );
  e3->setDtEnd( now.addDays( 3 ) );
  e3->newAlarm();

  Todo *t2 = new Todo;
  t2->setSummary( QLatin1String("Something big is due today") );
  t2->setDtDue( now );
  t2->newAlarm();

  Todo *t3 = new Todo;
  t3->setSummary( QLatin1String("Be lazy") );
  t3->setDtDue( now );
  t3->newAlarm();

  Event *e4 = new Event;
  e4->setSummary( QLatin1String("Watch TV") );
  e4->setDtStart( now.addSecs( 120 ) );
  e4->setDtEnd( now.addSecs( 180 ) );
  e4->newAlarm();

  Akonadi::ETMCalendar::Ptr invalidPtr;
  AlarmDialog dlg( invalidPtr );
  dlg.addIncidence( incidenceToItem(e2), QDateTime::currentDateTime().addSecs( 60 ),
                    QString() );
  dlg.addIncidence( incidenceToItem(t1), QDateTime::currentDateTime().addSecs( 300 ),
                    QLatin1String( "THIS IS DISPLAY TEXT" ) );
  dlg.addIncidence( incidenceToItem(e4), QDateTime::currentDateTime().addSecs( 120 ),
                    QLatin1String( "Fred and Barney get cloned" ) );
  dlg.addIncidence( incidenceToItem(e3), QDateTime::currentDateTime().addSecs( 240 ),
                    QString() );
  dlg.addIncidence( incidenceToItem(e1), QDateTime::currentDateTime().addSecs( 180 ),
                    QString() );
  dlg.addIncidence( incidenceToItem(t2), QDateTime::currentDateTime().addSecs( 600 ),
                    QLatin1String( "THIS IS DISPLAY TEXT" ) );
  dlg.addIncidence( incidenceToItem(t3), QDateTime::currentDateTime().addSecs( 360 ),
                    QString() );
  dlg.show();
  dlg.eventNotification();

  return app.exec();
}
