QStandardItem* MapReduceProgress::itemForFuture(const QFuture<void>& future)
{
	for (int i=0 ; i<m_model->rowCount() ; ++i)
	{
		QStandardItem* item = m_model->item(i, 1);
		QFuture<void> itemFuture(item->data(Qt::DisplayRole).value<QFuture<void> >());
		if (future == itemFuture)
			return item;
	}
	return NULL;
}
void MapReduceProgress::closeEvent(QCloseEvent* event)
{
	if (QMessageBox::question(this, "Cancel all?", "Are you sure you want to cancel all remaining mapreduce operations?", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
	{
		for (int i=0 ; i<m_model->rowCount() ; ++i)
		{
			QStandardItem* item = m_model->item(i, 1);
			QFuture<void> itemFuture(item->data(Qt::DisplayRole).value<QFuture<void> >());
			itemFuture.cancel();
		}
		event->accept();
	}
	else
		event->ignore();
}
//---------------------------------------------------------------------------
int KOEventView::showMoveRecurDialog( Incidence *inc, const QDate &date )
{

  int answer = KMessageBox::Ok;
  KGuiItem itemFuture( i18n( "Also &Future Items" ) );

  KDateTime dateTime( date, KOPrefs::instance()->timeSpec() );
  bool isFirst = !inc->recurrence()->getPreviousDateTime( dateTime ).isValid();
  bool isLast  = !inc->recurrence()->getNextDateTime( dateTime ).isValid();

  QString message;

  if ( !isFirst && !isLast ) {
    itemFuture.setEnabled( true );
    message = i18n( "The item you try to change is a recurring item. "
                    "Shall the changes be applied only to this single occurrence, "
                    "also to future items, or to all items in the recurrence?" );
  } else {
    itemFuture.setEnabled( false );
    message = i18n( "The item you try to change is a recurring item. "
                    "Shall the changes be applied only to this single occurrence "
                    "or to all items in the recurrence?" );
  }

  if ( !( isFirst && isLast ) ) {
    answer = KOMessageBox::fourBtnMsgBox(
      this,
      QMessageBox::Question,
      message,
      i18n( "Changing Recurring Item" ),
      KGuiItem( i18n( "Only &This Item" ) ),
      itemFuture,
      KGuiItem( i18n( "&All Occurrences" ) ) );
  }

  return answer;
}