Example #1
0
void TasksView::addTaskHelper( const Task& parent )
{
    ViewFilter* filter = Application::instance().model().taskModel();
    Task task;
    int suggestedId = parent.isValid() ? parent.id() : 1;
    if ( parent.isValid() ) {
        task.setParent( parent.id() );
        // subscribe if the parent is subscribed:
        task.setSubscribed( parent.subscribed()
                            || CONFIGURATION.taskPrefilteringMode == Configuration::TaskPrefilter_SubscribedOnly
                            || CONFIGURATION.taskPrefilteringMode == Configuration::TaskPrefilter_SubscribedAndCurrentOnly );
    }
    // yeah, daredevil!
    while ( filter->taskIdExists( suggestedId ) ) ++suggestedId;
    TaskIdDialog dialog( filter, this );
    dialog.setSuggestedId( suggestedId );
    if ( dialog.exec() ) {
        task.setId( dialog.selectedId() );
        task.setName( dialog.taskName() );
        CommandAddTask* cmd = new CommandAddTask( task, this );
        emit emitCommand( cmd );
        if ( parent.isValid() ) {
            const QModelIndex parentIdx = filter->indexForTaskId( parent.id() );
            m_treeView->setExpanded( parentIdx, true );
        }
    }
}
Example #2
0
QString SmartNameCache::makeCombined( const Task& task ) const {
    Q_ASSERT( task.isValid() || task.name().isEmpty() ); // an invalid task (id == 0) must not have a name
    if ( !task.isValid() )
        return QString();
    const Task parent = findTask( task.parent() );

    if ( parent.isValid() )
        return QObject::tr( "%1/%2", "parent task name/task name" ).arg( parent.name(), task.name() );
    else
        return task.name();
}
Example #3
0
bool SelectTaskDialog::isValidAndTrackable( const QModelIndex& index ) const
{
    if ( !index.isValid() )
        return false;
    const Task task = m_proxy.taskForIndex( index );
    return task.isValid() && task.trackable();
}
Example #4
0
 // try to restore subscriptions where possible
 Q_FOREACH( const Task& oldTask, oldTasks ) {
     const Task task = getTask( oldTask.id() );
     if ( task.isValid() ) {
         if ( oldTask.subscribed() ) {
             addSubscription( user, task );
         }
     }
 }
Example #5
0
Task Database::getTask( int taskid ) throw (TimesheetProcessorException )
{
        Task task = m_storage.getTask( taskid );
        if ( !task.isValid() ) {
                throw TimesheetProcessorException( QObject::tr( "Invalid task %1 in report" ).arg( taskid ) );
        }
        return task;
}
Example #6
0
File: job.cpp Project: JoelB/BITS
bool Job::createFromFile(QString filename)
{
	XMLParser bitsParser;
	Task *tempTask;
	QFile *xmlFile = new QFile(filename);
	bitsParser.parseFile(xmlFile);
	
	QMapIterator<QString, QMap<QString,QVariant> > it(bitsParser.properties);
	while (it.hasNext())
	{
		it.next();
		if (it.key() == "Job")
			setAttributeValue("Filename",filename);
		else if (it.key() == "Task")
		{
			tempTask = new Task;
			tempTask->setAttributeValue("Filename",filename);
		}
		else
			continue;
		
		QMapIterator<QString,QVariant> j(it.value());
		while (j.hasNext())
		{
			j.next();
			if (it.key() == "Job")
			{
				addAttribute(j.key());
				setAttributeValue(j.key(),j.value());
			}
			else if (it.key() == "Task" && tempTask)
			{
				if (j.key() != "Name" && j.key() != "StartDate" && j.key() != "EndDate" && j.key() != "TimeSpent" && j.key() != "TaskID" && j.key() != "HotKey" && j.key() != "Completed")
					tempTask->addAttribute(j.key());
				tempTask->setAttributeValue(j.key(),j.value());
			}
		}
		if (it.key() == "Task" && tempTask)
		{
			if (tempTask->isValid())
				addTask(tempTask);	
			else
				emit statusChanged("Invalid Task not added!");
		}
			
	}
	if (isValid())
	{
		makeTaskIDs();
		writeConfigFile();
	}
	else
		emit statusChanged(QString("Invalid Job in %1 not added!").arg(filename));
	xmlFile->close();
	delete xmlFile;
	return true;
}
Example #7
0
void EnterVacationDialog::updateTaskLabel()
{
    const Task task = DATAMODEL->getTask( m_selectedTaskId );

    if ( !task.isValid() )
        m_ui->taskLabel->setText( tr( "(No task selected)") );
    else
        m_ui->taskLabel->setText( task.name() );
    updateGeometry();
}
Example #8
0
void TasksView::actionEditTask()
{
    Task task = selectedTask();
    Q_ASSERT( task.isValid() );

    TaskEditor editor( this );
    editor.setTask( task );
    if( editor.exec() ) {
        const Task newTask = editor.getTask();
        newTask.dump();
        CommandModifyTask* cmd = new CommandModifyTask( newTask, this );
        emit emitCommand( cmd );
    }
    configureUi(); // FIXME needed?
}
void SqLiteStorageTests::makeModifyDeleteEventsTest()
{
    // make a user
    User user = m_storage->makeUser( tr("MakeEventTestUser") );
    // make two events
    Task task = m_storage->getTask( 1 );
    // WARNING: depends on leftover task created in previous test
    QVERIFY( task.isValid() );

    Event event1 = m_storage->makeEvent();
    QVERIFY( event1.isValid() );
    event1.setTaskId( task.id() );
    event1.setUserId( user.id() );
    event1.setReportId( 42 );
    const QString Event1Comment( "Event-1-Comment" );
    event1.setComment( Event1Comment );

    Event event2 = m_storage->makeEvent();
    QVERIFY( event2.isValid() );
    event2.setTaskId( task.id() );
    event2.setUserId( user.id() );
    const QString Event2Comment( "Event-2-Comment" );
    event2.setComment( Event2Comment );

    QVERIFY( event1.id() != event2.id() );

    // modify the events
    QVERIFY( m_storage->modifyEvent( event1 ) ); // store new name
    QVERIFY( m_storage->modifyEvent( event2 ) ); // -"-

    // verify event database entries
    Event event1_1 = m_storage->getEvent( event1.id() );
    QCOMPARE( event1_1.comment(), event1.comment() );
    Event event2_1 = m_storage->getEvent( event2.id() );
    QCOMPARE( event2_1.comment(), event2.comment() );

    // delete one event
    QVERIFY( m_storage->deleteEvent( event1 ) );

    // verify the event is gone:
    QVERIFY( ! m_storage->getEvent( event1.id() ).isValid() );

    // verify the other event is still there:
    QVERIFY( m_storage->getEvent( event2.id() ).isValid() );
}
Example #10
0
void SmartNameCache::regenerateSmartNames()
{
    m_smartTaskNamesById.clear();
    typedef QPair<TaskId, TaskId> TaskParentPair;

    QMap<QString, QVector<TaskParentPair> > byName;

    Q_FOREACH( const Task& task, m_tasks )
        byName[makeCombined(task)].append( qMakePair( task.id(), task.parent() ) );

    QSet<QString> cannotMakeUnique;

    while ( !byName.isEmpty() ) {
        QMap<QString, QVector<TaskParentPair> > newByName;
        for ( QMap<QString, QVector<TaskParentPair> >::ConstIterator it = byName.constBegin();
              it != byName.constEnd();
              ++it ) {
            const QString currentName = it.key();
            const QVector<TaskParentPair>& taskPairs = it.value();
            Q_ASSERT( !taskPairs.isEmpty() );
            if ( taskPairs.size() == 1 || cannotMakeUnique.contains( currentName ) ) {
                Q_FOREACH( const TaskParentPair& i, taskPairs )
                    m_smartTaskNamesById.insert( i.first, currentName );
            } else {
                Q_FOREACH( const TaskParentPair& taskPair, taskPairs ) {
                    const Task parent = findTask( taskPair.second );
                    if ( parent.isValid() ) {
                        const QString newName = parent.name() + QLatin1Char('/') + currentName;
                        newByName[newName].append( qMakePair( taskPair.first, parent.parent() ) );
                    } else {
                        QMap<QString, QVector<TaskParentPair> >::const_iterator existing = newByName.constFind( currentName );
                        if ( existing != newByName.constEnd() )
                            cannotMakeUnique.insert( currentName );
                        newByName[currentName].append( taskPair );
                    }
                }
            }
        }
Example #11
0
void TasksView::actionNewSubTask()
{
    Task task = selectedTask();
    Q_ASSERT( task.isValid() );
    addTaskHelper( task );
}