44 #include <kiconloader.h>
49 #include <QApplication>
61 class KCal::DndFactory::Private
70 const QTime *newTime = 0 )
77 if ( inc && newDate.isValid() ) {
78 if ( inc->
type() ==
"Event" ) {
82 int daysOffset = anEvent->
dtStart().date().daysTo(
83 anEvent->
dtEnd().date() );
85 KDateTime endDate( anEvent->
dtEnd() );
86 endDate.setDate( newDate.addDays( daysOffset ) );
88 KDateTime startDate( anEvent->
dtStart() );
89 startDate.setDate( newDate );
92 int addSecsOffset( anEvent->
dtStart().time().secsTo( *newTime ) );
93 endDate=endDate.addSecs( addSecsOffset );
94 startDate.setTime( *newTime );
99 }
else if ( inc->
type() ==
"Todo" ) {
100 Todo *anTodo =
static_cast<Todo*
>( inc );
101 KDateTime dueDate( anTodo->
dtDue() );
102 dueDate.setDate( newDate );
104 dueDate.setTime( *newTime );
107 }
else if ( inc->
type() ==
"Journal" ) {
109 KDateTime startDate( anJournal->
dtStart() );
110 startDate.setDate( newDate );
112 startDate.setTime( *newTime );
114 startDate.setTime( QTime( 0, 0, 0 ) );
118 kDebug() <<
"Trying to paste unknown incidence of type" << inc->
type();
134 DndFactory::~DndFactory()
141 QMimeData *mimeData =
new QMimeData;
151 QDrag *drag =
new QDrag( owner );
161 cal.addIncidence( i );
163 QMimeData *mimeData =
new QMimeData;
169 if ( uri.isValid() ) {
170 QMap<QString, QString> metadata;
171 metadata[
"labels"] = KUrl::toPercentEncoding( i->summary() );
172 uri.populateMimeData( mimeData, metadata );
180 QDrag *drag =
new QDrag( owner );
183 if ( incidence->
type() ==
"Event" ) {
184 drag->setPixmap( BarIcon(
"view-calendar-day" ) );
185 }
else if ( incidence->
type() ==
"Todo" ) {
186 drag->setPixmap( BarIcon(
"view-calendar-tasks" ) );
227 if ( !events.isEmpty() ) {
228 ev =
new Event( *events.first() );
254 if ( !todos.isEmpty() ) {
255 todo =
new Todo( *todos.first() );
277 list.append( selectedInc );
284 Incidence::List::ConstIterator it;
285 for ( it = incidences.constBegin(); it != incidences.constEnd(); ++it ) {
286 d->mCalendar->deleteIncidence( *it );
296 QClipboard *cb = QApplication::clipboard();
299 Incidence::List::ConstIterator it;
300 for ( it = incidences.constBegin(); it != incidences.constEnd(); ++it ) {
306 QMimeData *mimeData =
new QMimeData;
311 if ( cal.incidences().isEmpty() ) {
314 cb->setMimeData( mimeData );
322 list.append( selectedInc );
327 const QTime *newTime )
329 QClipboard *cb = QApplication::clipboard();
334 kDebug() <<
"Can't parse clipboard";
340 QHash<QString,Incidence*> oldUidToNewInc;
342 Incidence::List::ConstIterator it;
344 for ( it = incs.constBegin();
345 it != incs.constEnd(); ++it ) {
346 Incidence *inc = d->pasteIncidence( *it, newDate, newTime );
349 oldUidToNewInc[( *it )->uid()] = inc;
354 for ( it = list.constBegin(); it != list.constEnd(); ++it ) {
372 QClipboard *cb = QApplication::clipboard();
376 kDebug() <<
"Can't parse clipboard";
381 Incidence *inc = incList.isEmpty() ? 0 : incList.first();
383 Incidence *newInc = d->pasteIncidence( inc, newDate, newTime );