You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kanagram/src/leitnersystem.cpp

193 lines
3.7 KiB

//
// C++ Implementation: leitnersystem
//
// Description:
//
//
// Author: Martin Pfeiffer <martin-pfeiffer-bensheim@web.de>, (C) 2005
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "leitnersystem.h"
#include <kdebug.h>
LeitnerSystem::LeitnerSystem(QValueList<LeitnerBox>& boxes, QString name)
{
if( !boxes.empty() )
m_boxes = boxes;
if( name.isNull() )
m_systemName = name;
}
LeitnerSystem::LeitnerSystem()
{
}
LeitnerSystem::~LeitnerSystem()
{
}
QStringList LeitnerSystem::getBoxNameList()
{
QStringList boxNameList;
QValueList<LeitnerBox>::iterator it;
for(it = m_boxes.begin(); it != m_boxes.end(); ++it)
{
boxNameList.append((*it).getBoxName());
}
return boxNameList;
}
int LeitnerSystem::getNumberOfBoxes()
{
return m_boxes.count();
}
LeitnerBox* LeitnerSystem::getBoxWithNumber( int number )
{
return &m_boxes[ number ];
}
LeitnerBox* LeitnerSystem::getBoxWithName( const QString& name )
{
QValueList<LeitnerBox>::iterator it;
for(it = m_boxes.begin(); it != m_boxes.end(); ++it)
{
if((*it).getBoxName() == name)
return &(*it);
}
return 0;
}
QString& LeitnerSystem::getSystemName()
{
return m_systemName;
}
const QString& LeitnerSystem::getNextBox( QString& previousBox )
{
for( int i = 0; i < m_boxes.count(); i++ )
{
if( m_boxes[i].getVocabCount() > 0 )
return getBox( i );
}
return QString::null;
}
const QString& LeitnerSystem::getCorrectBox( int box )
{
return m_boxes[ box ].getCorrectWordBox()->getBoxName();
}
const QString& LeitnerSystem::getWrongBox( int box )
{
return m_boxes[ box ].getWrongWordBox()->getBoxName();
}
int LeitnerSystem::getWrongBoxNumber( int box )
{
return getNumber( m_boxes[ box ].getWrongWordBox() );
}
int LeitnerSystem::getCorrectBoxNumber( int box )
{
return getNumber( m_boxes[ box ].getCorrectWordBox() );
}
void LeitnerSystem::deleteBox( int box )
{
m_boxes.remove( m_boxes.at( box ) );
}
void LeitnerSystem::deleteBox( LeitnerBox* box )
{
m_boxes.remove( *box );
}
bool LeitnerSystem::insertBox( const QString& name, int correctWordBox, int wrongWordBox )
{
if( getBoxNameList().contains( name ) != 0 )
return false;
LeitnerBox tmpBox;
tmpBox.setBoxName( name );
tmpBox.setCorrectWordBox( getBoxWithNumber( correctWordBox ) );
tmpBox.setWrongWordBox( getBoxWithNumber( wrongWordBox ) );
m_boxes.append( tmpBox );
return true;
}
void LeitnerSystem::setSystemName( const QString& name )
{
m_systemName = name;
}
int LeitnerSystem::getNumber( LeitnerBox* box )
{
if( m_boxes.findIndex( *box ) == -1 )
kdDebug() << "muhaha" << endl;
return m_boxes.findIndex( *box );
}
bool LeitnerSystem::setBoxName( int box, const QString& name )
{
if( getBoxWithName( name ) == 0 || getBoxWithName( name ) == getBoxWithNumber( box ) )
{
getBoxWithNumber( box )->setBoxName( name );
return true;
}
else
return false;
}
bool LeitnerSystem::setBoxName( LeitnerBox* box, const QString& name )
{
if( getBoxWithName( name ) == 0 || getBoxWithName( name ) == box )
{
box->setBoxName( name );
return true;
}
else
return false;
}
bool LeitnerSystem::insertBox( const QString& name )
{
if( getBoxNameList().contains( name ) != 0 )
return false;
LeitnerBox tmpBox;
tmpBox.setBoxName( name );
//tmpBox.setVocabCount( count );
m_boxes.append( tmpBox );
return true;
}
void LeitnerSystem::setCorrectBox( const QString& box, const QString& correctWordBox )
{
getBoxWithName( box )->setCorrectWordBox( getBoxWithName( correctWordBox ) );
}
void LeitnerSystem::setWrongBox( const QString& box, const QString& wrongWordBox )
{
getBoxWithName( box )->setWrongWordBox( getBoxWithName( wrongWordBox ) );
}
const QString& LeitnerSystem::getBox( int i )
{
return getBoxWithNumber( i )->getBoxName();
}