summaryrefslogtreecommitdiffstats
path: root/kgeography/src/answer.cpp
blob: a468333cd8d102d06ae93cba65d0c2e09b64d304 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/***************************************************************************
 *   Copyright (C) 2004 by Albert Astals Cid                               *
 *   tsdgeos@terra.es                                                      *
 *                                                                         *
 *   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 <qimage.h>
#include <qlabel.h>
#include <qlayout.h>

#include <kdialog.h>

#include "answer.h"

userAnswer::userAnswer()
{
}

userAnswer::userAnswer(const userAnswer &r)
{
	p_question = r.p_question;
	p_answer = r.p_answer;
	p_correctAnswer = r.p_correctAnswer;
	p_correct = r.p_correct;
}

userAnswer &userAnswer::operator=(const userAnswer &r)
{
	p_question = r.p_question;
	p_answer = r.p_answer;
	p_correctAnswer = r.p_correctAnswer;
	p_correct = r.p_correct;
	return *this;
}

void userAnswer::setQuestion(QVariant question)
{
	p_question = question;
}

void userAnswer::setAnswer(QVariant answer)
{
	p_answer = answer;
}

void userAnswer::setAnswerCorrect(bool correct)
{
	p_correct = correct;
}

void userAnswer::setCorrectAnswer(QVariant correctAnswer)
{
	p_correctAnswer = correctAnswer;
}

void userAnswer::putWidgets(QWidget *w, QGridLayout *lay, int row) const
{
	QWidget *widgets[3];
	const QVariant *v;
	
	for (int i = 0; i < 3; i++)
	{
		if (i == 0) v = &p_question;
		else if (i == 1) v = &p_answer;
		else v = &p_correctAnswer;
		
		if (v -> type() == QVariant::String)
		{
			QLabel *l;
			l = new QLabel(w);
			l -> setText(v -> toString());
			l -> setMargin(KDialog::marginHint() / 2);
			widgets[i] = l;
		}
		else if (v -> type() == QVariant::Color)
		{
			QWidget *aux = new QWidget(w);
			QHBoxLayout *lay = new QHBoxLayout(aux);
			
			QFrame *inner = new QFrame(aux);
			lay -> addWidget(inner);
			inner -> setBackgroundColor(v -> toColor());
			inner -> setLineWidth(1);
			lay -> setMargin(KDialog::marginHint() / 2);
			widgets[i] = aux;
		}
		else if (v -> type() == QVariant::Image)
		{
			QLabel *l;
			l = new QLabel(w);
			l -> setPixmap(v -> toImage());
			l -> setAlignment(Qt::AlignHCenter);
			l -> setMargin(KDialog::marginHint() / 2);
			widgets[i] = l;
		}
		
		lay -> addWidget(widgets[i], row, i + 1);
	}
	
	if (!p_correct)
	{
		QColor back, fore;
		back = widgets[0] -> colorGroup().highlight();
		fore = widgets[0] -> colorGroup().highlightedText();
		for (int i = 0; i < 3; i++)
		{
			widgets[i] -> setPaletteBackgroundColor(back);
			widgets[i] -> setPaletteForegroundColor(fore);
		}
	}
}