00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <tqlayout.h>
00029 #include <tqpopupmenu.h>
00030 #include <tqvbox.h>
00031 #include <tqlabel.h>
00032 #include <tqscrollview.h>
00033
00034 #include <klocale.h>
00035 #include <kdebug.h>
00036
00037 #include <libkcal/calendar.h>
00038
00039 #include "journalentry.h"
00040
00041 #include "kojournalview.h"
00042 #include "koglobals.h"
00043 using namespace KOrg;
00044
00045 KOJournalView::KOJournalView(Calendar *calendar, TQWidget *parent,
00046 const char *name)
00047 : KOrg::BaseView(calendar, parent, name)
00048 {
00049 TQVBoxLayout*topLayout = new TQVBoxLayout( this );
00050 topLayout->setAutoAdd(true);
00051 mSV = new TQScrollView( this, "JournalScrollView" );
00052 mVBox = new TQVBox( mSV->viewport() );
00053 mSV->setVScrollBarMode( TQScrollView::Auto );
00054 mSV->setHScrollBarMode( TQScrollView::AlwaysOff );
00055 mSV->setResizePolicy( TQScrollView::AutoOneFit );
00056 mSV->addChild( mVBox );
00057
00058 }
00059
00060 KOJournalView::~KOJournalView()
00061 {
00062 }
00063
00064 void KOJournalView::appendJournal( Journal*journal, const TQDate &dt)
00065 {
00066 JournalDateEntry *entry = 0;
00067 if ( mEntries.contains( dt ) ) {
00068 entry = mEntries[dt];
00069 } else {
00070 entry = new JournalDateEntry( calendar(), mVBox );
00071 entry->setDate( dt );
00072 entry->setIncidenceChanger( mChanger );
00073 entry->show();
00074 connect( this, TQT_SIGNAL(flushEntries()),
00075 entry, TQT_SIGNAL(flushEntries()) );
00076
00077 connect( this, TQT_SIGNAL(setIncidenceChangerSignal(IncidenceChangerBase *)),
00078 entry, TQT_SLOT(setIncidenceChanger( IncidenceChangerBase *)) );
00079
00080 connect( this, TQT_SIGNAL(journalEdited(Journal *)),
00081 entry, TQT_SLOT(journalEdited(Journal *)) );
00082 connect( this, TQT_SIGNAL(journalDeleted(Journal *)),
00083 entry, TQT_SLOT(journalDeleted(Journal *)) );
00084
00085 connect( entry, TQT_SIGNAL(editIncidence(Incidence *,const TQDate &)),
00086 this, TQT_SIGNAL(editIncidenceSignal(Incidence *,const TQDate &)) );
00087 connect( entry, TQT_SIGNAL(deleteIncidence(Incidence *)),
00088 this, TQT_SIGNAL(deleteIncidenceSignal(Incidence *)) );
00089
00090 connect( entry, TQT_SIGNAL(newJournal(ResourceCalendar *,const TQString &,const TQDate &)),
00091 this, TQT_SIGNAL(newJournalSignal(ResourceCalendar *,const TQString &,const TQDate &)) );
00092 mEntries.insert( dt, entry );
00093 }
00094
00095 if ( entry && journal ) {
00096 entry->addJournal( journal );
00097 }
00098 }
00099
00100 int KOJournalView::currentDateCount()
00101 {
00102 return mEntries.size();
00103 }
00104
00105 Incidence::List KOJournalView::selectedIncidences()
00106 {
00107
00108
00109 Incidence::List eventList;
00110 return eventList;
00111 }
00112
00113 void KOJournalView::clearEntries()
00114 {
00115
00116 TQMap<TQDate, JournalDateEntry*>::Iterator it;
00117 for ( it = mEntries.begin(); it != mEntries.end(); ++it ) {
00118 delete (it.data());
00119 }
00120 mEntries.clear();
00121 }
00122 void KOJournalView::updateView()
00123 {
00124 TQMap<TQDate, JournalDateEntry*>::Iterator it;
00125 for ( it = mEntries.begin(); it != mEntries.end(); ++it ) {
00126 it.data()->clear();
00127 Journal::List journals = calendar()->journals( it.key() );
00128 Journal::List::Iterator it1;
00129 for ( it1 = journals.begin(); it1 != journals.end(); ++it1 ) {
00130 it.data()->addJournal( *it1 );
00131 }
00132 }
00133 }
00134
00135 void KOJournalView::flushView()
00136 {
00137
00138 emit flushEntries();
00139 }
00140
00141 void KOJournalView::showDates( const TQDate &start, const TQDate &end )
00142 {
00143
00144 clearEntries();
00145 if ( end < start ) {
00146 return;
00147 }
00148
00149 Journal::List::ConstIterator it;
00150 Journal::List jnls;
00151 TQDate d = start;
00152 for ( TQDate d = start; d <= end; d = d.addDays( 1 ) ) {
00153 jnls = calendar()->journals( d );
00154 for ( it = jnls.begin(); it != jnls.end(); ++it ) {
00155 appendJournal( *it, d );
00156 }
00157 if ( jnls.count() < 1 ) {
00158
00159 appendJournal( 0, d );
00160 }
00161 }
00162 }
00163
00164 void KOJournalView::showIncidences( const Incidence::List &incidences, const TQDate & )
00165 {
00166
00167 clearEntries();
00168 Incidence::List::const_iterator it;
00169 for ( it = incidences.constBegin(); it != incidences.constEnd(); ++it ) {
00170 if ( (*it) && ( (*it)->type() == "Journal" ) ) {
00171 Journal *j = static_cast<Journal*>(*it);
00172 if ( j ) {
00173 appendJournal( j, j->dtStart().date() );
00174 }
00175 }
00176 }
00177 }
00178
00179 CalPrinterBase::PrintType KOJournalView::printType()
00180 {
00181 return CalPrinterBase::Journallist;
00182 }
00183
00184 void KOJournalView::changeIncidenceDisplay(Incidence *incidence, int action)
00185 {
00186
00187 Journal *journal = dynamic_cast<Journal*>(incidence);
00188 if (journal) {
00189 switch(action) {
00190 case KOGlobals::INCIDENCEADDED:
00191 appendJournal( journal, journal->dtStart().date() );
00192 break;
00193 case KOGlobals::INCIDENCEEDITED:
00194 emit journalEdited( journal );
00195 break;
00196 case KOGlobals::INCIDENCEDELETED:
00197 emit journalDeleted( journal );
00198 break;
00199 default:
00200 kdDebug(5850) << "KOListView::changeIncidenceDisplay(): Illegal action " << action << endl;
00201 }
00202 }
00203 }
00204
00205 void KOJournalView::setIncidenceChanger( IncidenceChangerBase *changer )
00206 {
00207 mChanger = changer;
00208 emit setIncidenceChangerSignal( changer );
00209 }
00210
00211 void KOJournalView::newJournal()
00212 {
00213 emit newJournalSignal( 0, TQString(),
00214 TQDate::currentDate() );
00215 }
00216
00217 #include "kojournalview.moc"