summaryrefslogtreecommitdiffstats
path: root/ksig/siggenerator.cpp
blob: b232cb3f8e6ed17a25f3179c1ec2d52563f5db81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/***************************************************************************
                          siggenerator.cpp  -  description
                             -------------------
    begin                : Sat Jul 20 2002
    copyright            : (C) 2002 by Scott Wheeler
    email                : wheeler@kde.org
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "siggenerator.h"
#include "siglistviewitem.h"

#include <kstandarddirs.h>
#include <kapplication.h>
#include <kconfig.h>
#include <kdebug.h>

#include <qfile.h>
#include <qdatetime.h>

SigGenerator::SigGenerator()
{
    QString dir = KGlobal::dirs()->saveLocation("appdata");
    QFile file(dir + "sigs.sigml");

    if(file.open(IO_ReadOnly) && doc.setContent(&file)) {
	signatures = doc.elementsByTagName("signature");
	file.close();
    }

    KConfig *config = KGlobal::config();
    {
	KConfigGroupSaver saver(config, "Settings");
	header = config->readEntry("Header");
	footer = config->readEntry("Footer");
    }
}

SigGenerator::~SigGenerator()
{

}


QString SigGenerator::random() const
{
    if(signatures.count() <= 0)
	return(QString::null);

    int i = KApplication::random() % signatures.count();
    QString text;
    SigListViewItem::nodeToText(signatures.item(i), text);
    
    return attachStandard(text);
}

QString SigGenerator::daily() const
{
    if(signatures.count() <= 0)
	return(QString::null);

    QDate date;
    int i = date.dayOfYear() % signatures.count();
    QString text;
    SigListViewItem::nodeToText(signatures.item(i), text);
    return attachStandard(text);
}

QString SigGenerator::attachStandard(const QString &text) const
{
    QString s = text;

    if(!header.isEmpty())
	s = header + "\n" + s;
    if(!footer.isEmpty())
	s = s + "\n" + footer + "\n";

    return s;
}