116 lines
2.3 KiB
C++
116 lines
2.3 KiB
C++
#include "vocab.h"
|
|
#include <time.h>
|
|
#include <QFile.h>
|
|
|
|
Vocab::Vocab()
|
|
{
|
|
std::srand(time(NULL));
|
|
}
|
|
|
|
Vocab::Vocab(QString filename)
|
|
{
|
|
std::srand(time(NULL));
|
|
load(filename);
|
|
}
|
|
|
|
void Vocab::load(QString filename)
|
|
{
|
|
QFile file = QFile(filename);
|
|
if(file.isReadable())
|
|
file.open(QIODevice::ReadOnly);
|
|
if(file.isOpen())
|
|
{
|
|
char[512] buf;
|
|
int len;
|
|
while(len = file.readLine(buf, 512))
|
|
{
|
|
if(len > 4)
|
|
{
|
|
buf[len-1] = 0;
|
|
switch(buf[0])
|
|
{
|
|
case 'n':
|
|
addNom(QString(buf+2));
|
|
break;
|
|
case 'v':
|
|
addVerbe(QString(buf+2));
|
|
break;
|
|
case 'a':
|
|
addAdjectif(QString(buf+2));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
void Vocab::save(QString filename)
|
|
{
|
|
QFile file = QFile(filename);
|
|
if(file.isWritable())
|
|
file.open(QIODevice::WriteOnly);
|
|
if(file.isOpen())
|
|
{
|
|
file.write(QString("#NOMS :\n"));
|
|
for(QString n : noms)
|
|
file.write(QString("n:%1\n").arg(n));
|
|
file.write(QString("\n#VERBES :\n"));
|
|
for(QString v : verbes)
|
|
file.write(QString("v:%1\n").arg(v));
|
|
file.write(QString("\n#ADJECTIFS :\n"));
|
|
for(QString a : adjectifs)
|
|
file.write(QString("a:%1\n").arg(a));
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
void Vocab::append(Vocab& voc)
|
|
{
|
|
for(QString n : voc.noms)
|
|
addNom(n);
|
|
for(QString v : voc.verbes)
|
|
addVerbe(v);
|
|
for(QString a : voc.adjectifs)
|
|
addAdjectif(a);
|
|
}
|
|
|
|
void Vocab::addNom(QString nom)
|
|
{
|
|
noms.push_back(nom);
|
|
}
|
|
|
|
void Vocab::addAdjectif(QString adj)
|
|
{
|
|
adjectifs.push_back(adj);
|
|
}
|
|
|
|
void Vocab::addVerbe(QString ver)
|
|
{
|
|
verbes.push_back(ver);
|
|
}
|
|
|
|
QString Vocab::getRandNom()
|
|
{
|
|
if(noms.size())
|
|
return noms[std::rand()%noms.size()];
|
|
else
|
|
return "";
|
|
}
|
|
|
|
QString Vocab::getRandAdjectif()
|
|
{
|
|
if(adjectifs.size())
|
|
return adjectifs[std::rand()%adjectifs.size()];
|
|
else
|
|
return "";
|
|
}
|
|
|
|
QString Vocab::getRandVerbe()
|
|
{
|
|
if(verbes.size())
|
|
return verbes[std::rand()%verbes.size()];
|
|
else
|
|
return "";
|
|
}
|