本文整理汇总了C++中Todo类的典型用法代码示例。如果您正苦于以下问题:C++ Todo类的具体用法?C++ Todo怎么用?C++ Todo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Todo类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: calendar
void KOTodoView::changeIncidenceDisplay(Incidence *incidence, int action)
{
// The todo view only displays todos, so exit on all other incidences
if ( incidence->type() != "Todo" )
return;
CalFilter *filter = calendar()->filter();
bool isFiltered = filter && !filter->filterIncidence( incidence );
Todo *todo = static_cast<Todo *>(incidence);
if ( todo ) {
KOTodoViewItem *todoItem = 0;
if ( mTodoMap.contains( todo ) ) {
todoItem = mTodoMap[todo];
}
switch ( action ) {
case KOGlobals::INCIDENCEADDED:
case KOGlobals::INCIDENCEEDITED:
// If it's already there, edit it, otherwise just add
if ( todoItem ) {
if ( isFiltered ) {
scheduleRemoveTodoItem( todoItem );
} else {
// correctly update changes in relations
Todo*parent = dynamic_cast<Todo*>( todo->relatedTo() );
KOTodoViewItem*parentItem = 0;
if ( parent && mTodoMap.contains(parent) ) {
parentItem = mTodoMap[ parent ];
}
if ( todoItem->parent() != parentItem ) {
// The relations changed
if ( parentItem ) {
parentItem->insertItem( todoItem );
} else {
mTodoListView->insertItem( todoItem );
}
}
todoItem->construct();
}
} else {
if ( !isFiltered ) {
insertTodoItem( todo );
}
}
mTodoListView->sort();
break;
case KOGlobals::INCIDENCEDELETED:
if ( todoItem ) {
scheduleRemoveTodoItem( todoItem );
}
break;
default:
QTimer::singleShot( 0, this, SLOT( updateView() ) );
}
} else {
// use a QTimer here, because when marking todos finished using
// the checkbox, this slot gets called, but we cannot update the views
// because we're still inside KOTodoViewItem::stateChange
QTimer::singleShot(0,this,SLOT(updateView()));
}
}
开发者ID:,项目名称:,代码行数:59,代码来源:
示例2: pasteIncidence
Incidence * pasteIncidence( Incidence *inc,
const QDate &newDate,
const QTime *newTime = 0 )
{
if ( inc ) {
inc = inc->clone();
inc->recreate();
}
if ( inc && newDate.isValid() ) {
if ( inc->type() == "Event" ) {
Event *anEvent = static_cast<Event*>( inc );
// Calculate length of event
int daysOffset = anEvent->dtStart().date().daysTo(
anEvent->dtEnd().date() );
// new end date if event starts at the same time on the new day
KDateTime endDate( anEvent->dtEnd() );
endDate.setDate( newDate.addDays( daysOffset ) );
KDateTime startDate( anEvent->dtStart() );
startDate.setDate( newDate );
if ( newTime ) {
// additional offset for new time of day
int addSecsOffset( anEvent->dtStart().time().secsTo( *newTime ) );
endDate=endDate.addSecs( addSecsOffset );
startDate.setTime( *newTime );
}
anEvent->setDtStart( startDate );
anEvent->setDtEnd( endDate );
} else if ( inc->type() == "Todo" ) {
Todo *anTodo = static_cast<Todo*>( inc );
KDateTime dueDate( anTodo->dtDue() );
dueDate.setDate( newDate );
if ( newTime ) {
dueDate.setTime( *newTime );
}
anTodo->setDtDue( dueDate );
} else if ( inc->type() == "Journal" ) {
Journal *anJournal = static_cast<Journal*>( inc );
KDateTime startDate( anJournal->dtStart() );
startDate.setDate( newDate );
if ( newTime ) {
startDate.setTime( *newTime );
} else {
startDate.setTime( QTime( 0, 0, 0 ) );
}
anJournal->setDtStart( startDate );
} else {
kDebug() << "Trying to paste unknown incidence of type" << inc->type();
}
}
return inc;
}
开发者ID:pvuorela,项目名称:kcalcore,代码行数:56,代码来源:dndfactory.cpp
示例3: if
void KOTodoView::setNewDate( QDate date )
{
if ( !mActiveItem || !mChanger ) return;
Todo *todo = mActiveItem->todo();
if ( !todo ) return;
if ( !todo->isReadOnly() && mChanger->beginChange( todo ) ) {
Todo *oldTodo = todo->clone();
QDateTime dt;
dt.setDate( date );
if ( !todo->doesFloat() )
dt.setTime( todo->dtDue().time() );
if ( date.isNull() )
todo->setHasDueDate( false );
else if ( !todo->hasDueDate() )
todo->setHasDueDate( true );
todo->setDtDue( dt );
mActiveItem->construct();
mChanger->changeIncidence( oldTodo, todo, KOGlobals::COMPLETION_MODIFIED );
mChanger->endChange( todo );
delete oldTodo;
} else {
kdDebug(5850) << "No active item, active item is read-only, or locking failed" << endl;
}
}
开发者ID:,项目名称:,代码行数:29,代码来源:
示例4: setNewPriority
void KOTodoView::setNewPriority(int index)
{
if ( !mActiveItem || !mChanger ) return;
Todo *todo = mActiveItem->todo();
if ( !todo->isReadOnly () &&
mChanger->beginChange( todo ) ) {
Todo *oldTodo = todo->clone();
todo->setPriority(mPriority[index]);
mActiveItem->construct();
mChanger->changeIncidence( oldTodo, todo, KOGlobals::PRIORITY_MODIFIED );
mChanger->endChange( todo );
delete oldTodo;
}
}
开发者ID:,项目名称:,代码行数:15,代码来源:
示例5: Todo
void KOTodoView::addQuickTodo()
{
if ( ! mQuickAdd->text().stripWhiteSpace().isEmpty() ) {
Todo *todo = new Todo();
todo->setSummary( mQuickAdd->text() );
todo->setOrganizer( Person( KOPrefs::instance()->fullName(),
KOPrefs::instance()->email() ) );
if ( !mChanger->addIncidence( todo, this ) ) {
KODialogManager::errorSaveIncidence( this, todo );
delete todo;
return;
}
mQuickAdd->setText( QString::null );
}
}
开发者ID:,项目名称:,代码行数:15,代码来源:
示例6: Todo
void TodoTest::testValidity()
{
QDate dt = QDate::currentDate();
Todo *todo = new Todo();
todo->setDtStart(KDateTime(dt));
todo->setDtDue(KDateTime(dt).addDays(1));
todo->setSummary(QStringLiteral("To-do1 Summary"));
todo->setDescription(QStringLiteral("This is a description of the first to-do"));
todo->setLocation(QStringLiteral("the place"));
todo->setPercentComplete(5);
//KDE5: QVERIFY( todo->typeStr() == i18n( "to-do" ) );
QVERIFY(todo->summary() == QLatin1String("To-do1 Summary"));
QVERIFY(todo->location() == QLatin1String("the place"));
QVERIFY(todo->percentComplete() == 5);
}
开发者ID:KDE,项目名称:kcalcore,代码行数:15,代码来源:testtodo.cpp
示例7: appendTodo
void KOWhatsNextView::appendTodo( Incidence *ev )
{
if ( mTodos.find( ev ) != mTodos.end() ) return;
mTodos.append( ev );
mText += "<li><a href=\"todo:" + ev->uid() + "\">";
mText += ev->summary();
mText += "</a>";
if ( ev->type()=="Todo" ) {
Todo *todo = static_cast<Todo*>(ev);
if ( todo->hasDueDate() ) {
mText += i18n(" (Due: %1)")
.arg( (todo->doesFloat())?(todo->dtDueDateStr()):(todo->dtDueStr()) );
}
}
mText += "</li>\n";
}
开发者ID:,项目名称:,代码行数:19,代码来源:
示例8: testRoles
void TodoTest::testRoles()
{
const KDateTime today = KDateTime::currentUtcDateTime();
const KDateTime yesterday = today.addDays(-1);
Todo todo;
todo.setDtStart(today.addDays(-1));
todo.setDtDue(today);
QCOMPARE(todo.dateTime(Incidence::RoleDisplayStart), today);
QCOMPARE(todo.dateTime(Incidence::RoleDisplayEnd), today);
todo.setDtDue(KDateTime());
QCOMPARE(todo.dateTime(Incidence::RoleDisplayStart), yesterday);
QCOMPARE(todo.dateTime(Incidence::RoleDisplayEnd), yesterday);
}
开发者ID:KDE,项目名称:kcalcore,代码行数:13,代码来源:testtodo.cpp
示例9: QLatin1String
void ComparisonVisitorTest::testTodoComparison()
{
const QString summary = QLatin1String( "Testing comparison" );
const QString desc = QLatin1String( "Testing ComparisonVisitor" );
Todo reference;
reference.setSummary( summary );
reference.setDescription( desc );
reference.setPercentComplete( 50 );
// create a copy of the reference incidence
Todo todo( reference );
IncidenceBase *baseReference = &reference;
IncidenceBase *baseIncidence = &todo;
QVERIFY( mComparator.compare( baseIncidence, baseReference ) );
// change a property of Todo (but not of IncidenceBase)
todo.setPercentComplete( 100 );
QVERIFY( !mComparator.compare( baseIncidence, baseReference ) );
}
开发者ID:pvuorela,项目名称:kcalcore,代码行数:22,代码来源:testcomparisonvisitor.cpp
示例10: changedCategories
void KOTodoView::changedCategories(int index)
{
if ( !mActiveItem || !mChanger ) return;
Todo *todo = mActiveItem->todo();
if ( !todo ) return;
if ( !todo->isReadOnly() && mChanger->beginChange( todo ) ) {
Todo *oldTodo = todo->clone();
QStringList categories = todo->categories ();
if ( categories.find( mCategory[index] ) != categories.end() )
categories.remove( mCategory[index] );
else
categories.insert( categories.end(), mCategory[index] );
categories.sort();
todo->setCategories( categories );
mActiveItem->construct();
mChanger->changeIncidence( oldTodo, todo, KOGlobals::CATEGORY_MODIFIED );
mChanger->endChange( todo );
delete oldTodo;
} else {
kdDebug(5850) << "No active item, active item is read-only, or locking failed" << endl;
}
}
开发者ID:,项目名称:,代码行数:24,代码来源:
示例11: kdDebug
void KOTodoView::setNewPercentage( KOTodoViewItem *item, int percentage )
{
kdDebug(5850) << "KOTodoView::setNewPercentage( " << percentage << "), item = " << item << endl;
if ( !item || !mChanger ) return;
Todo *todo = item->todo();
if ( !todo ) return;
if ( !todo->isReadOnly () && mChanger->beginChange( todo ) ) {
Todo *oldTodo = todo->clone();
/* Old code to make sub-items's percentage related to this one's:
QListViewItem *myChild = firstChild();
KOTodoViewItem *item;
while( myChild ) {
item = static_cast<KOTodoViewItem*>(myChild);
item->stateChange(state);
myChild = myChild->nextSibling();
}*/
if ( percentage == 100 ) {
todo->setCompleted( QDateTime::currentDateTime() );
// If the todo does recur, it doesn't get set as completed. However, the
// item is still checked. Uncheck it again.
if ( !todo->isCompleted() ) item->setState( QCheckListItem::Off );
else todo->setPercentComplete( percentage );
} else {
todo->setCompleted( false );
todo->setPercentComplete( percentage );
}
item->construct();
if ( todo->doesRecur() && percentage == 100 )
mChanger->changeIncidence( oldTodo, todo, KOGlobals::COMPLETION_MODIFIED_WITH_RECURRENCE );
else
mChanger->changeIncidence( oldTodo, todo, KOGlobals::COMPLETION_MODIFIED );
mChanger->endChange( todo );
delete oldTodo;
} else {
item->construct();
kdDebug(5850) << "No active item, active item is read-only, or locking failed" << endl;
}
}
开发者ID:,项目名称:,代码行数:40,代码来源:
示例12: dtDue
bool Todo::operator==( const Todo &todo ) const
{
return
Incidence::operator==( todo ) &&
dtDue() == todo.dtDue() &&
hasDueDate() == todo.hasDueDate() &&
hasStartDate() == todo.hasStartDate() &&
completed() == todo.completed() &&
hasCompletedDate() == todo.hasCompletedDate() &&
percentComplete() == todo.percentComplete();
}
开发者ID:pvuorela,项目名称:kcalcore,代码行数:11,代码来源:todo.cpp
示例13: dt
void KOTodoView::copyTodoToDate( QDate date )
{
QDateTime dt( date );
if ( mActiveItem && mChanger ) {
Todo *newTodo = mActiveItem->todo()->clone();
newTodo->recreate();
newTodo->setHasDueDate( !date.isNull() );
newTodo->setDtDue( dt );
newTodo->setPercentComplete( 0 );
// avoid forking
if ( newTodo->doesRecur() )
newTodo->recurrence()->unsetRecurs();
mChanger->addIncidence( newTodo, this );
}
}
开发者ID:,项目名称:,代码行数:19,代码来源:
示例14: kdDebug
/** Dissociate a single occurrence or all future occurrences from a recurring sequence.
The new incidence is returned, but not automatically inserted into the calendar,
which is left to the calling application */
Incidence *Calendar::dissociateOccurrence(Incidence *incidence, QDate date,
bool single)
{
if(!incidence || !incidence->doesRecur())
return 0;
Incidence *newInc = incidence->clone();
newInc->recreate();
newInc->setRelatedTo(incidence);
Recurrence *recur = newInc->recurrence();
if(single)
{
recur->clear();
}
else
{
// Adjust the recurrence for the future incidences. In particular
// adjust the "end after n occurrences" rules! "No end date" and "end by ..."
// don't need to be modified.
int duration = recur->duration();
if(duration > 0)
{
int doneduration = recur->durationTo(date.addDays(-1));
if(doneduration >= duration)
{
kdDebug(5850) << "The dissociated event already occurred more often "
<< "than it was supposed to ever occur. ERROR!" << endl;
recur->clear();
}
else
{
recur->setDuration(duration - doneduration);
}
}
}
// Adjust the date of the incidence
if(incidence->type() == "Event")
{
Event *ev = static_cast<Event *>(newInc);
QDateTime start(ev->dtStart());
int daysTo = start.date().daysTo(date);
ev->setDtStart(start.addDays(daysTo));
ev->setDtEnd(ev->dtEnd().addDays(daysTo));
}
else if(incidence->type() == "Todo")
{
Todo *td = static_cast<Todo *>(newInc);
bool haveOffset = false;
int daysTo = 0;
if(td->hasDueDate())
{
QDateTime due(td->dtDue());
daysTo = due.date().daysTo(date);
td->setDtDue(due.addDays(daysTo), true);
haveOffset = true;
}
if(td->hasStartDate())
{
QDateTime start(td->dtStart());
if(!haveOffset)
daysTo = start.date().daysTo(date);
td->setDtStart(start.addDays(daysTo));
haveOffset = true;
}
}
recur = incidence->recurrence();
if(recur)
{
if(single)
{
recur->addExDate(date);
}
else
{
// Make sure the recurrence of the past events ends
// at the corresponding day
recur->setEndDate(date.addDays(-1));
}
}
return newInc;
}
开发者ID:serghei,项目名称:kde3-kdepim,代码行数:84,代码来源:calendar.cpp
示例15: kil
void KOWhatsNextView::updateView()
{
KIconLoader kil("kdepim");
QString *ipath = new QString();
kil.loadIcon("kdepim",KIcon::NoGroup,32,KIcon::DefaultState,ipath);
mText = "<table width=\"100%\">\n";
mText += "<tr bgcolor=\"#3679AD\"><td><h1>";
mText += "<img src=\"";
mText += *ipath;
mText += "\">";
mText += "<font color=\"white\"> ";
mText += i18n("What's Next?") + "</font></h1>";
mText += "</td></tr>\n<tr><td>";
mText += "<h2>";
if ( mStartDate.daysTo( mEndDate ) < 1 ) {
mText += KGlobal::locale()->formatDate( mStartDate );
} else {
mText += i18n("Date from - to", "%1 - %2")
.arg( KGlobal::locale()->formatDate( mStartDate ) )
.arg( KGlobal::locale()->formatDate( mEndDate ) );
}
mText+="</h2>\n";
Event::List events;
for ( QDate date = mStartDate; date <= mEndDate; date = date.addDays( 1 ) )
events += calendar()->events(date, EventSortStartDate, SortDirectionAscending);
if (events.count() > 0) {
mText += "<p></p>";
kil.loadIcon("appointment",KIcon::NoGroup,22,KIcon::DefaultState,ipath);
mText += "<h2><img src=\"";
mText += *ipath;
mText += "\">";
mText += i18n("Events:") + "</h2>\n";
mText += "<table>\n";
Event::List::ConstIterator it;
for( it = events.begin(); it != events.end(); ++it ) {
Event *ev = *it;
if ( !ev->doesRecur() ){
appendEvent(ev);
} else {
// FIXME: This should actually be cleaned up. Libkcal should
// provide a method to return a list of all recurrences in a
// given time span.
Recurrence *recur = ev->recurrence();
int duration = ev->dtStart().secsTo( ev->dtEnd() );
QDateTime start = recur->getPreviousDateTime(
QDateTime( mStartDate, QTime() ) );
QDateTime end = start.addSecs( duration );
if ( end.date() >= mStartDate ) {
appendEvent( ev, start, end );
}
start = recur->getNextDateTime( start );
while ( start.isValid() && start.date() <= mEndDate ) {
appendEvent( ev, start );
start = recur->getNextDateTime( start );
}
}
}
mText += "</table>\n";
}
mTodos.clear();
Todo::List todos = calendar()->todos( TodoSortDueDate, SortDirectionAscending );
if ( todos.count() > 0 ) {
kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,ipath);
mText += "<h2><img src=\"";
mText += *ipath;
mText += "\">";
mText += i18n("To-do:") + "</h2>\n";
mText += "<ul>\n";
Todo::List::ConstIterator it;
for( it = todos.begin(); it != todos.end(); ++it ) {
Todo *todo = *it;
if ( !todo->isCompleted() && todo->hasDueDate() && todo->dtDue().date() <= mEndDate )
appendTodo(todo);
}
bool gotone = false;
int priority = 1;
while (!gotone && priority<=9 ) {
for( it = todos.begin(); it != todos.end(); ++it ) {
Todo *todo = *it;
if (!todo->isCompleted() && (todo->priority() == priority) ) {
appendTodo(todo);
gotone = true;
}
}
priority++;
kdDebug(5850) << "adding the todos..." << endl;
}
mText += "</ul>\n";
}
QStringList myEmails( KOPrefs::instance()->allEmails() );
int replies = 0;
events = calendar()->events( QDate::currentDate(), QDate(2975,12,6) );
Event::List::ConstIterator it2;
for( it2 = events.begin(); it2 != events.end(); ++it2 ) {
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:
示例16: acceptFreeBusy
bool Scheduler::acceptReply(IncidenceBase *incidence,ScheduleMessage::Status /* status */, Method method)
{
if(incidence->type()=="FreeBusy") {
return acceptFreeBusy(incidence, method);
}
bool ret = false;
Event *ev = mCalendar->event(incidence->uid());
Todo *to = mCalendar->todo(incidence->uid());
// try harder to find the correct incidence
if ( !ev && !to ) {
const Incidence::List list = mCalendar->incidences();
for ( Incidence::List::ConstIterator it = list.begin(), end = list.end(); it != end; ++it ) {
if ( (*it)->schedulingID() == incidence->uid() ) {
ev = dynamic_cast<Event*>( *it );
to = dynamic_cast<Todo*>( *it );
break;
}
}
}
if (ev || to) {
//get matching attendee in calendar
kdDebug(5800) << "Scheduler::acceptTransaction match found!" << endl;
Attendee::List attendeesIn = incidence->attendees();
Attendee::List attendeesEv;
Attendee::List attendeesNew;
if (ev) attendeesEv = ev->attendees();
if (to) attendeesEv = to->attendees();
Attendee::List::ConstIterator inIt;
Attendee::List::ConstIterator evIt;
for ( inIt = attendeesIn.begin(); inIt != attendeesIn.end(); ++inIt ) {
Attendee *attIn = *inIt;
bool found = false;
for ( evIt = attendeesEv.begin(); evIt != attendeesEv.end(); ++evIt ) {
Attendee *attEv = *evIt;
if (attIn->email().lower()==attEv->email().lower()) {
//update attendee-info
kdDebug(5800) << "Scheduler::acceptTransaction update attendee" << endl;
attEv->setStatus(attIn->status());
attEv->setDelegate(attIn->delegate());
attEv->setDelegator(attIn->delegator());
ret = true;
found = true;
}
}
if ( !found && attIn->status() != Attendee::Declined )
attendeesNew.append( attIn );
}
bool attendeeAdded = false;
for ( Attendee::List::ConstIterator it = attendeesNew.constBegin(); it != attendeesNew.constEnd(); ++it ) {
Attendee* attNew = *it;
QString msg = i18n("%1 wants to attend %2 but was not invited.").arg( attNew->fullName() )
.arg( ev ? ev->summary() : to->summary() );
if ( !attNew->delegator().isEmpty() )
msg = i18n("%1 wants to attend %2 on behalf of %3.").arg( attNew->fullName() )
.arg( ev ? ev->summary() : to->summary() )
.arg( attNew->delegator() );
if ( KMessageBox::questionYesNo( 0, msg, i18n("Uninvited attendee"),
KGuiItem(i18n("Accept Attendance")), KGuiItem(i18n("Reject Attendance")) )
!= KMessageBox::Yes )
{
KCal::Incidence *cancel = dynamic_cast<Incidence*>( incidence );
if ( cancel )
cancel->addComment( i18n( "The organizer rejected your attendance at this meeting." ) );
performTransaction( cancel ? cancel : incidence, Scheduler::Cancel, attNew->fullName() );
delete cancel;
continue;
}
Attendee *a = new Attendee( attNew->name(), attNew->email(), attNew->RSVP(),
attNew->status(), attNew->role(), attNew->uid() );
a->setDelegate( attNew->delegate() );
a->setDelegator( attNew->delegator() );
if ( ev )
ev->addAttendee( a );
else if ( to )
to->addAttendee( a );
ret = true;
attendeeAdded = true;
}
// send update about new participants
if ( attendeeAdded ) {
if ( ev ) {
ev->setRevision( ev->revision() + 1 );
performTransaction( ev, Scheduler::Request );
}
if ( to ) {
to->setRevision( ev->revision() + 1 );
performTransaction( to, Scheduler::Request );
}
}
if ( ret ) {
// We set at least one of the attendees, so the incidence changed
// Note: This should not result in a sequence number bump
if ( ev )
ev->updated();
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:
示例17: kDebug
void KCalResourceSlox::slotLoadTodosResult( KJob *job )
{
kDebug();
if ( job->error() ) {
loadError( job->errorString() );
} else {
kDebug() << "success";
QDomDocument doc = mLoadTodosJob->response();
mWebdavHandler.log( doc.toString( 2 ) );
QList<SloxItem> items = WebdavHandler::getSloxItems( this, doc );
bool changed = false;
disableChangeNotification();
QList<SloxItem>::ConstIterator it;
for( it = items.constBegin(); it != items.constEnd(); ++it ) {
SloxItem item = *it;
QString uid = sloxIdToTodoUid( item.sloxId );
if ( item.status == SloxItem::Delete ) {
Todo *todo = calendar()->todo( uid );
if ( todo ) {
calendar()->deleteTodo( todo );
changed = true;
}
} else if ( item.status == SloxItem::Create ) {
Todo *newTodo = 0;
Todo *todo = calendar()->todo( uid );
if ( !todo ) {
newTodo = new Todo;
todo = newTodo;
todo->setUid( uid );
todo->setSecrecy( Incidence::SecrecyPrivate );
}
todo->setCustomProperty( "SLOX", "ID", item.sloxId );
mWebdavHandler.clearSloxAttributeStatus();
QDomNode n;
for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) {
QDomElement e = n.toElement();
mWebdavHandler.parseSloxAttribute( e );
parseIncidenceAttribute( e, todo );
parseTodoAttribute( e, todo );
}
mWebdavHandler.setSloxAttributes( todo );
if ( newTodo ) calendar()->addTodo( todo );
changed = true;
}
}
enableChangeNotification();
clearChanges();
if ( changed ) emit resourceChanged( this );
emit resourceLoaded( this );
}
mLoadTodosJob = 0;
if ( mLoadTodosProgress ) mLoadTodosProgress->setComplete();
mLoadTodosProgress = 0;
}
开发者ID:akhuettel,项目名称:kdepim-noakonadi,代码行数:73,代码来源:kcalresourceslox.cpp
示例18: search
void SearchDialog::search(const QRegExp &re)
{
QDate startDt = mStartDate->date();
QDate endDt = mEndDate->date();
Event::List events;
if(mEventsCheck->isChecked())
{
events = mCalendar->events(startDt, endDt, mInclusiveCheck->isChecked());
}
Todo::List todos;
if(mTodosCheck->isChecked())
{
if(mIncludeUndatedTodos->isChecked())
{
Todo::List alltodos = mCalendar->todos();
Todo::List::iterator it;
Todo *todo;
for(it = alltodos.begin(); it != alltodos.end(); ++it)
{
todo = *it;
if((!todo->hasStartDate() && !todo->hasDueDate()) || // undated
(todo->hasStartDate() && (todo->dtStart() >= startDt) && (todo->dtStart() <= endDt)) || // start dt in range
(todo->hasDueDate() && (todo->dtDue().date() >= startDt) && (todo->dtDue() <= endDt)) || // due dt in range
(todo->hasCompletedDate() && (todo->completed().date() >= startDt) && (todo->completed() <= endDt))) // completed dt in range
{
todos.append(todo);
}
}
}
else
{
QDate dt = startDt;
while(dt <= endDt)
{
todos += mCalendar->todos(dt);
dt = dt.addDays(1);
}
}
}
Journal::List journals;
if(mJournalsCheck->isChecked())
{
QDate dt = startDt;
while(dt <= endDt)
{
journals += mCalendar->journals(dt);
dt = dt.addDays(1);
}
}
Incidence::List allIncidences = Calendar::mergeIncidenceList(events, todos, journals);
mMatchedEvents.clear();
Incidence::List::ConstIterator it;
for(it = allIncidences.begin(); it != allIncidences.end(); ++it)
{
Incidence *ev = *it;
if(mSummaryCheck->isChecked())
{
#if QT_VERSION >= 300
if(re.search(ev->summary()) != -1)
{
#else
if(re.match(ev->summary()) != -1)
{
#endif
mMatchedEvents.append(ev);
continue;
}
}
if(mDescriptionCheck->isChecked())
{
#if QT_VERSION >= 300
if(re.search(ev->description()) != -1)
{
#else
if(re.match(ev->description()) != -1)
{
#endif
mMatchedEvents.append(ev);
continue;
}
}
if(mCategoryCheck->isChecked())
{
#if QT_VERSION >= 300
if(re.search(ev->categoriesStr()) != -1)
{
#else
if(re.match(ev->categoriesStr()) != -1)
{
#endif
mMatchedEvents.append(ev);
continue;
}
}
}
}
开发者ID:serghei,项目名称:kde3-kdepim,代码行数:100,代码来源:searchdialog.cpp
示例19: while
void HtmlExport::createTodoList ( QTextStream *ts )
{
Todo::List rawTodoList = mCalendar->todos();
Todo::List::Iterator it = rawTodoList.begin();
while ( it != rawTodoList.end() ) {
Todo *ev = *it;
Todo *subev = ev;
if ( ev->relatedTo() ) {
if ( ev->relatedTo()->type()=="Todo" ) {
if ( rawTodoList.find( static_cast<Todo *>( ev->relatedTo() ) ) ==
rawTodoList.end() ) {
rawTodoList.append( static_cast<Todo *>( ev->relatedTo() ) );
}
}
}
it = rawTodoList.find( subev );
++it;
}
// FIXME: Sort list by priorities. This is brute force and should be
// replaced by a real sorting algorithm.
Todo::List todoList;
for ( int i = 1; i <= 9; ++i ) {
for( it = rawTodoList.begin(); it != rawTodoList.end(); ++it ) {
if ( (*it)->priority() == i && checkSecrecy( *it ) ) {
todoList.append( *it );
}
}
}
for( it = rawTodoList.begin(); it != rawTodoList.end(); ++it ) {
if ( (*it)->priority() == 0 && checkSecrecy( *it ) ) {
todoList.append( *it );
}
}
int columns = 3;
*ts << "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\">\n";
*ts << " <tr>\n";
*ts << " <th class=\"sum\">" << i18n("Task") << "</th>\n";
*ts << " <th>" << i18n("Priority") << "</th>\n";
*ts << " <th>" << i18n("Completed") << "</th>\n";
if ( mSettings->taskDueDate() ) {
*ts << " <th>" << i18n("Due Date") << "</th>\n";
++columns;
}
if ( mSettings->taskLocation() ) {
*ts << " <th>" << i18n("Location") << "</th>\n";
++columns;
}
if ( mSettings->taskCategories() ) {
*ts << " <th>" << i18n("Categories") << "</th>\n";
++columns;
}
if ( mSettings->taskAttendees() ) {
*ts << " <th>" << i18n("Attendees") << "</th>\n";
++columns;
}
*ts << " </tr>\n";
// Create top-level list.
for( it = todoList.begin(); it != todoList.end(); ++it ) {
if ( !(*it)->relatedTo() ) createTodo( ts, *it );
}
// Create sub-level lists
for( it = todoList.begin(); it != todoList.end(); ++it ) {
Incidence::List relations = (*it)->relations();
if (relations.count()) {
// Generate sub-task list of event ev
*ts << " <tr>\n";
*ts << " <td class=\"subhead\" colspan=";
*ts << "\"" << QString::number(columns) << "\"";
*ts << "><a name=\"sub" << (*it)->uid() << "\"></a>"
<< i18n("Sub-Tasks of: ") << "<a href=\"#"
<< (*it)->uid() << "\"><b>" << cleanChars( (*it)->summary())
<< "</b></a></td>\n";
*ts << " </tr>\n";
Todo::List sortedList;
// FIXME: Sort list by priorities. This is brute force and should be
// replaced by a real sorting algorithm.
for ( int i = 1; i <= 9; ++i ) {
Incidence::List::ConstIterator it2;
for( it2 = relations.begin(); it2 != relations.end(); ++it2 ) {
Todo *ev3 = dynamic_cast<Todo *>( *it2 );
if ( ev3 && ev3->priority() == i ) sortedList.append( ev3 );
}
}
Incidence::List::ConstIterator it2;
for( it2 = relations.begin(); it2 != relations.end(); ++it2 ) {
Todo *ev3 = dynamic_cast<Todo *>( *it2 );
if ( ev3 && ev3->priority() == 0 ) sortedList.append( ev3 );
}
Todo::List::ConstIterator it3;
for( it3 = sortedList.begin(); it3 != sortedList.end(); ++it3 ) {
createTodo( ts, *it3 );
}
}
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:
注:本文中的Todo类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论