本文整理汇总了C++中incidence::Ptr::uid方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::uid方法的具体用法?C++ Ptr::uid怎么用?C++ Ptr::uid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类incidence::Ptr
的用法示例。
在下文中一共展示了Ptr::uid方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testPasteTodo
void DndFactoryTest::testPasteTodo()
{
MemoryCalendar::Ptr calendar( new MemoryCalendar( QString() ) );
DndFactory factory( calendar );
Todo::Ptr todo( new Todo() );
todo->setSummary( QLatin1String( "Summary 1" ) );
todo->setDtDue( KDateTime( QDate( 2010, 8, 9 ) ) );
Incidence::List incidencesToPaste;
incidencesToPaste.append( todo );
QVERIFY( factory.copyIncidences( incidencesToPaste ) );
const KDateTime newDateTime( QDate( 2011, 1, 1 ), QTime( 10, 10 ) );
Incidence::List pastedIncidences = factory.pasteIncidences( newDateTime );
QVERIFY( pastedIncidences.size() == 1 );
Incidence::Ptr incidence = pastedIncidences.first();
QVERIFY( incidence->type() == Incidence::TypeTodo );
// check if a new uid was generated.
QVERIFY( incidence->uid() != todo->uid() );
Todo::Ptr pastedTodo = incidence.staticCast<Todo>();
QVERIFY( pastedTodo->dtDue() == newDateTime );
QVERIFY( pastedTodo->summary() == todo->summary() );
}
示例2: openIncidenceEditorThroughKOrganizer
bool AlarmDialog::openIncidenceEditorThroughKOrganizer( const Incidence::Ptr &incidence )
{
if ( !QDBusConnection::sessionBus().interface()->isServiceRegistered( "org.kde.korganizer" ) ) {
if ( KToolInvocation::startServiceByDesktopName( "korganizer", QString() ) ) {
KMessageBox::error(
this,
i18nc( "@info",
"Could not start KOrganizer so editing is not possible." ) );
return false;
}
}
org::kde::korganizer::Korganizer korganizer(
"org.kde.korganizer", "/Korganizer", QDBusConnection::sessionBus() );
kDebug() << "editing incidence " << incidence->summary();
if ( !korganizer.editIncidence( incidence->uid() ) ) {
KMessageBox::error(
this,
i18nc( "@info",
"An internal KOrganizer error occurred attempting to modify \"%1\"",
cleanSummary( incidence->summary() ) ) );
}
// get desktop # where korganizer (or kontact) runs
QString object =
QDBusConnection::sessionBus().interface()->isServiceRegistered( "org.kde.kontact" ) ?
"kontact/MainWindow_1" : "korganizer/MainWindow_1";
QDBusInterface korganizerObj( "org.kde.korganizer", '/' + object );
#ifdef Q_WS_X11
QDBusReply<int> reply = korganizerObj.call( "winId" );
if ( reply.isValid() ) {
int window = reply;
int desktop = KWindowSystem::windowInfo( window, NET::WMDesktop ).desktop();
if ( KWindowSystem::currentDesktop() == desktop ) {
KWindowSystem::minimizeWindow( winId(), false );
} else {
KWindowSystem::setCurrentDesktop( desktop );
}
KWindowSystem::activateWindow( KWindowSystem::transientFor( window ) );
}
#elif defined(Q_WS_WIN)
// WId is a typedef to a void* on windows
QDBusReply<qlonglong> reply = korganizerObj.call( "winId" );
if ( reply.isValid() ) {
qlonglong window = reply;
KWindowSystem::minimizeWindow( winId(), false );
KWindowSystem::allowExternalProcessWindowActivation();
KWindowSystem::activateWindow( reinterpret_cast<WId>(window) );
}
#else
// TODO (mac)
#endif
return true;
}
示例3: createInitialIncidences
void CalendarBaseTest::createInitialIncidences()
{
mExpectedSlotResult = true;
for (int i=0; i<5; ++i) {
Event::Ptr event = Event::Ptr(new Event());
event->setUid(QStringLiteral("event") + QString::number(i));
event->setSummary(QStringLiteral("summary") + QString::number(i));
event->setDtStart(KDateTime::currentDateTime(KDateTime::UTC));
mUids.append(event->uid());
QVERIFY(mCalendar->addEvent(event));
QTestEventLoop::instance().enterLoop(5);
QVERIFY(!QTestEventLoop::instance().timeout());
}
mOneEventUid = mUids.last();
for (int i=0; i<5; ++i) {
Todo::Ptr todo = Todo::Ptr(new Todo());
todo->setUid(QStringLiteral("todo") + QString::number(i));
todo->setDtStart(KDateTime::currentDateTime(KDateTime::UTC));
todo->setSummary(QStringLiteral("summary") + QString::number(i));
mUids.append(todo->uid());
QVERIFY(mCalendar->addTodo(todo));
QTestEventLoop::instance().enterLoop(5);
QVERIFY(!QTestEventLoop::instance().timeout());
}
mOneTodoUid = mUids.last();
for (int i=0; i<5; ++i) {
Journal::Ptr journal = Journal::Ptr(new Journal());
journal->setUid(QStringLiteral("journal") + QString::number(i));
journal->setSummary(QStringLiteral("summary") + QString::number(i));
journal->setDtStart(KDateTime::currentDateTime(KDateTime::UTC));
mUids.append(journal->uid());
QVERIFY(mCalendar->addJournal(journal));
QTestEventLoop::instance().enterLoop(5);
QVERIFY(!QTestEventLoop::instance().timeout());
}
mOneJournalUid = mUids.last();
for (int i=0; i<5; ++i) {
Incidence::Ptr incidence = Incidence::Ptr(new Event());
incidence->setUid(QStringLiteral("incidence") + QString::number(i));
incidence->setSummary(QStringLiteral("summary") + QString::number(i));
incidence->setDtStart(KDateTime::currentDateTime(KDateTime::UTC));
mUids.append(incidence->uid());
QVERIFY(mCalendar->addIncidence(incidence));
QTestEventLoop::instance().enterLoop(5);
QVERIFY(!QTestEventLoop::instance().timeout());
}
mOneIncidenceUid = mUids.last();
}
示例4: calendar
void DndFactoryTest::testPasteAllDayEvent2()
{
MemoryCalendar::Ptr calendar( new MemoryCalendar( QString() ) );
DndFactory factory( calendar );
Event::Ptr allDayEvent( new Event() );
allDayEvent->setSummary( QLatin1String( "Summary 2" ) );
allDayEvent->setDtStart( KDateTime( QDate( 2010, 8, 8 ) ) );
allDayEvent->setDtEnd( KDateTime( QDate( 2010, 8, 9 ) ) );
const QString originalUid = allDayEvent->uid();
Incidence::List incidencesToPaste;
incidencesToPaste.append( allDayEvent );
QVERIFY( factory.copyIncidences( incidencesToPaste ) );
const KDateTime newDateTime( QDate( 2011, 1, 1 ) );
const uint originalLength = allDayEvent->dtStart().secsTo( allDayEvent->dtEnd() );
// paste at the new time
Incidence::List pastedIncidences = factory.pasteIncidences( newDateTime );
// we only copied one incidence
QVERIFY( pastedIncidences.size() == 1 );
Incidence::Ptr incidence = pastedIncidences.first();
QVERIFY( incidence->type() == Incidence::TypeEvent );
// check if a new uid was generated.
QVERIFY( incidence->uid() != originalUid );
// the new dateTime didn't have time component
QVERIFY( incidence->allDay() );
Event::Ptr pastedEvent = incidence.staticCast<Event>();
const uint newLength = pastedEvent->dtStart().secsTo( pastedEvent->dtEnd() );
kDebug() << "originalLength was " << originalLength << "; and newLength is "
<< newLength << "; old dtStart was " << allDayEvent->dtStart()
<< " and old dtEnd was " << allDayEvent->dtEnd() << endl
<< "; new dtStart is " << pastedEvent->dtStart()
<< " and new dtEnd is " << pastedEvent->dtEnd();
QVERIFY( originalLength == newLength );
QVERIFY( pastedEvent->dtStart() == newDateTime );
QVERIFY( pastedEvent->summary() == allDayEvent->summary() );
}
示例5: pasteIncidences
Incidence::List DndFactory::pasteIncidences( const KDateTime &newDateTime,
const QFlags<PasteFlag> &pasteOptions )
{
QClipboard *clipboard = QApplication::clipboard();
Q_ASSERT( clipboard );
MemoryCalendar::Ptr calendar( createDropCalendar( clipboard->mimeData() ) );
Incidence::List list;
if ( !calendar ) {
kDebug() << "Can't parse clipboard";
return list;
}
// All pasted incidences get new uids, must keep track of old uids,
// so we can update child's parents
QHash<QString, Incidence::Ptr> oldUidToNewInc;
Incidence::List::ConstIterator it;
const Incidence::List incidences = calendar->incidences();
for ( it = incidences.constBegin();
it != incidences.constEnd(); ++it ) {
Incidence::Ptr incidence = d->pasteIncidence( *it, newDateTime, pasteOptions );
if ( incidence ) {
list.append( incidence );
oldUidToNewInc[(*it)->uid()] = *it;
}
}
// update relations
for ( it = list.constBegin(); it != list.constEnd(); ++it ) {
Incidence::Ptr incidence = *it;
if ( oldUidToNewInc.contains( incidence->relatedTo() ) ) {
Incidence::Ptr parentInc = oldUidToNewInc[incidence->relatedTo()];
incidence->setRelatedTo( parentInc->uid() );
} else {
// not related to anything in the clipboard
incidence->setRelatedTo( QString() );
}
}
return list;
}
示例6: testPasteAllDayEvent
void DndFactoryTest::testPasteAllDayEvent()
{
MemoryCalendar::Ptr calendar( new MemoryCalendar( QString() ) );
DndFactory factory( calendar );
Event::Ptr allDayEvent( new Event() );
allDayEvent->setSummary( QLatin1String( "Summary 1" ) );
allDayEvent->setDtStart( KDateTime( QDate( 2010, 8, 8 ) ) );
allDayEvent->setDtEnd( KDateTime( QDate( 2010, 8, 9 ) ) );
const QString originalUid = allDayEvent->uid();
const bool originalIsAllDay = allDayEvent->allDay();
Incidence::List incidencesToPaste;
incidencesToPaste.append( allDayEvent );
QVERIFY( factory.copyIncidences( incidencesToPaste ) );
Incidence::List pastedIncidences = factory.pasteIncidences();
QVERIFY( pastedIncidences.size() == 1 );
Incidence::Ptr incidence = pastedIncidences.first();
QVERIFY( incidence->type() == Incidence::TypeEvent );
// check if a new uid was generated.
QVERIFY( incidence->uid() != originalUid );
// we passed an invalid KDateTime to pasteIncidences() so dates don't change.
QVERIFY( incidence->allDay() == originalIsAllDay );
Event::Ptr pastedEvent = incidence.staticCast<Event>();
QVERIFY( pastedEvent->dtStart() == allDayEvent->dtStart() );
QVERIFY( pastedEvent->dtEnd() == allDayEvent->dtEnd() );
QVERIFY( pastedEvent->summary() == allDayEvent->summary() );
}
示例7: acceptCancel
CallId Scheduler::acceptCancel( const IncidenceBase::Ptr &incidence,
ScheduleMessage::Status status,
const QString &attendee )
{
Incidence::Ptr inc = incidence.staticCast<Incidence>();
if ( !inc ) {
return -1;
}
const CallId callId = ++d->mLatestCallId;
ResultCode resultCode = ResultCodeSuccess;
QString errorMessage;
if ( inc->type() == IncidenceBase::TypeFreeBusy ) {
// reply to this request is handled in korganizer's incomingdialog
emitOperationFinished( callId, resultCode, errorMessage );
return callId;
}
const Incidence::List existingIncidences = d->mCalendar->incidencesFromSchedulingID( inc->uid() );
kDebug() << "Scheduler::acceptCancel="
<< Stringify::scheduleMessageStatus( status ) //krazy2:exclude=kdebug
<< ": found " << existingIncidences.count()
<< " incidences with schedulingID " << inc->schedulingID();
Incidence::List::ConstIterator incit = existingIncidences.begin();
for ( ; incit != existingIncidences.end() ; ++incit ) {
Incidence::Ptr i = *incit;
kDebug() << "Considering this found event ("
<< ( i->isReadOnly() ? "readonly" : "readwrite" )
<< ") :" << d->mFormat->toString( i );
// If it's readonly, we can't possible remove it.
if ( i->isReadOnly() ) {
continue;
}
// Code for new invitations:
// We cannot check the value of "status" to be RequestNew because
// "status" comes from a similar check inside libical, where the event
// is compared to other events in the calendar. But if we have another
// version of the event around (e.g. shared folder for a group), the
// status could be RequestNew, Obsolete or Updated.
kDebug() << "looking in " << i->uid() << "'s attendees";
// This is supposed to be a new request, not an update - however we want
// to update the existing one to handle the "clicking more than once
// on the invitation" case. So check the attendee status of the attendee.
bool isMine = true;
const Attendee::List attendees = i->attendees();
Attendee::List::ConstIterator ait;
for ( ait = attendees.begin(); ait != attendees.end(); ++ait ) {
if ( (*ait)->email() == attendee &&
(*ait)->status() == Attendee::NeedsAction ) {
// This incidence wasn't created by me - it's probably in a shared
// folder and meant for someone else, ignore it.
kDebug() << "ignoring " << i->uid()
<< " since I'm still NeedsAction there";
isMine = false;
break;
}
}
if ( isMine ) {
//TODO_SERGIO: use ItemDeleteJob and make this async.
kDebug() << "removing existing incidence " << i->uid();
Akonadi::Item item = d->mCalendar->itemForIncidenceUid( i->uid() );
bool emitResult = true;
if ( item.isValid() ) {
const int changeId = d->mChanger->deleteIncidence( item );
if ( changeId >= 0 ) {
d->mCallIdByChangeId.insert( changeId, callId );
d->mDeletedIncidenceByChangeId.insert( changeId, i );
emitResult = false; // will be emitted in the job result's slot.
} else {
resultCode = ResultCodeErrorDeletingIncidence;
errorMessage = QLatin1String( "Error while trying to delete the incidence" );
}
} else {
resultCode = ResultCodeIncidenceNotFound;
errorMessage = QLatin1String( "Couldn't find incidence in calendar" );
}
if ( emitResult ) {
deleteTransaction( incidence->uid() );
errorMessage = QLatin1String( "Error deleting incidence" );
emitOperationFinished( callId, resultCode, errorMessage );
}
return callId;
}
}
// in case we didn't find the to-be-removed incidence
if ( existingIncidences.count() > 0 && inc->revision() > 0 ) {
KMessageBox::error(
0,
i18nc( "@info",
//.........这里部分代码省略.........
示例8: acceptRequest
CallId Scheduler::acceptRequest( const IncidenceBase::Ptr &incidence,
ScheduleMessage::Status status,
const QString &email )
{
Incidence::Ptr inc = incidence.staticCast<Incidence>() ;
if ( !inc ) {
kWarning() << "Accept what?";
return -1;
}
const CallId callId = ++d->mLatestCallId;
ResultCode resultCode = ResultCodeSuccess;
QString errorMessage;
if ( inc->type() == IncidenceBase::TypeFreeBusy ) {
emitOperationFinished( callId, ResultCodeSuccess, QString() );
// reply to this request is handled in korganizer's incomingdialog
return callId;
}
const Incidence::List existingIncidences = d->mCalendar->incidencesFromSchedulingID( inc->uid() );
kDebug() << "status=" << Stringify::scheduleMessageStatus( status ) //krazy:exclude=kdebug
<< ": found " << existingIncidences.count()
<< " incidences with schedulingID " << inc->schedulingID()
<< "; uid was = " << inc->uid();
if ( existingIncidences.isEmpty() ) {
// Perfectly normal if the incidence doesn't exist. This is probably
// a new invitation.
kDebug() << "incidence not found; calendar = " << d->mCalendar.data()
<< "; incidence count = " << d->mCalendar->incidences().count();
}
Incidence::List::ConstIterator incit = existingIncidences.begin();
for ( ; incit != existingIncidences.end() ; ++incit ) {
Incidence::Ptr existingIncidence = *incit;
kDebug() << "Considering this found event ("
<< ( existingIncidence->isReadOnly() ? "readonly" : "readwrite" )
<< ") :" << d->mFormat->toString( existingIncidence );
// If it's readonly, we can't possible update it.
if ( existingIncidence->isReadOnly() ) {
continue;
}
if ( existingIncidence->revision() <= inc->revision() ) {
// The new incidence might be an update for the found one
bool isUpdate = true;
// Code for new invitations:
// If you think we could check the value of "status" to be RequestNew: we can't.
// It comes from a similar check inside libical, where the event is compared to
// other events in the calendar. But if we have another version of the event around
// (e.g. shared folder for a group), the status could be RequestNew, Obsolete or Updated.
kDebug() << "looking in " << existingIncidence->uid() << "'s attendees";
// This is supposed to be a new request, not an update - however we want to update
// the existing one to handle the "clicking more than once on the invitation" case.
// So check the attendee status of the attendee.
const Attendee::List attendees = existingIncidence->attendees();
Attendee::List::ConstIterator ait;
for ( ait = attendees.begin(); ait != attendees.end(); ++ait ) {
if( (*ait)->email() == email && (*ait)->status() == Attendee::NeedsAction ) {
// This incidence wasn't created by me - it's probably in a shared folder
// and meant for someone else, ignore it.
kDebug() << "ignoring "
<< existingIncidence->uid() << " since I'm still NeedsAction there";
isUpdate = false;
break;
}
}
if ( isUpdate ) {
if ( existingIncidence->revision() == inc->revision() &&
existingIncidence->lastModified() > inc->lastModified() ) {
// This isn't an update - the found incidence was modified more recently
deleteTransaction( existingIncidence->uid() );
errorMessage = QLatin1String( "This isn't an update - "
"the found incidence was modified more recently" );
kDebug() << errorMessage;
emitOperationFinished( callId, ResultCodeNotUpdate, errorMessage );
return callId;
}
kDebug() << "replacing existing incidence " << existingIncidence->uid();
bool emitResult = true;
const QString oldUid = existingIncidence->uid();
if ( existingIncidence->type() != inc->type() ) {
errorMessage = QLatin1String( "Cannot assign two different incidence types" );
resultCode = ResultCodeDifferentIncidenceTypes;
} else {
IncidenceBase *existingIncidenceBase = existingIncidence.data();
IncidenceBase *incBase = inc.data();
*existingIncidenceBase = *incBase;
existingIncidence->setSchedulingID( inc->uid(), oldUid );
Akonadi::Item item = d->mCalendar->itemForIncidenceUid( oldUid );
item.setPayload<Incidence::Ptr>( existingIncidence );
if ( item.isValid() ) {
const int changeId = d->mChanger->modifyIncidence( item );
if ( changeId >= 0 ) {
d->mCallIdByChangeId.insert( changeId, callId );
emitResult = false; // will be emitted in the job result's slot.
} else {
//.........这里部分代码省略.........
示例9: acceptPublish
CallId Scheduler::acceptPublish( const IncidenceBase::Ptr &newIncBase,
ScheduleMessage::Status status,
iTIPMethod method )
{
if ( newIncBase->type() == IncidenceBase::TypeFreeBusy ) {
return acceptFreeBusy( newIncBase, method );
}
const CallId callId = ++d->mLatestCallId;
ResultCode resultCode = ResultCodeSuccess;
QString errorMessage;
kDebug() << "status=" << Stringify::scheduleMessageStatus( status ); //krazy:exclude=kdebug
bool emitResult = true;
Incidence::Ptr newInc = newIncBase.staticCast<Incidence>() ;
Incidence::Ptr calInc = d->mCalendar->incidence( newIncBase->uid() );
switch ( status ) {
case ScheduleMessage::Unknown:
case ScheduleMessage::PublishNew:
case ScheduleMessage::PublishUpdate:
if ( calInc && newInc ) {
if ( ( newInc->revision() > calInc->revision() ) ||
( newInc->revision() == calInc->revision() &&
newInc->lastModified() > calInc->lastModified() ) ) {
const QString oldUid = calInc->uid();
if ( calInc->type() != newInc->type() ) {
kError() << "assigning different incidence types";
resultCode = ResultCodeDifferentIncidenceTypes;
errorMessage = QLatin1String( "Cannot assign two different incidence types" );
} else {
IncidenceBase *ci = calInc.data();
IncidenceBase *ni = newInc.data();
*ci = *ni;
calInc->setSchedulingID( newInc->uid(), oldUid );
Akonadi::Item item = d->mCalendar->itemForIncidenceUid( calInc->uid() );
item.setPayload<Incidence::Ptr>( calInc );
if ( item.isValid() ) {
const int changeId = d->mChanger->modifyIncidence( item );
if ( changeId >= 0 ) {
d->mCallIdByChangeId.insert( changeId, callId );
emitResult = false; // will be emitted in the job result's slot.
} else {
resultCode = ResultCodeErrorUpdatingIncidence;
errorMessage = QLatin1String( "Error while trying to update the incidence" );
}
} else {
resultCode = ResultCodeIncidenceNotFound;
errorMessage = QLatin1String( "Couldn't find incidence in calendar" );
}
}
} else {
resultCode = ResultCodeNewIncidenceTooOld;
errorMessage = QLatin1String( "A newer existing incidence already exists" );
}
} else {
resultCode = ResultCodeInvalidIncidence;
errorMessage = QLatin1String( "Incidence is invalid" );
}
break;
case ScheduleMessage::Obsolete:
// Success
break;
default:
resultCode = ResultCodeUnknownStatus;
errorMessage = QLatin1String( "Unhandled ScheduleMessage status" );
break;
}
if ( emitResult ) {
deleteTransaction( newIncBase->uid() );
// Delayed signal, the caller must know this CallId first.
emitOperationFinished( callId, resultCode, errorMessage );
}
return callId;
}