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
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/***************************************************************************
* resumewidget.cc
*
* Tue Sep 23 12:02:03 CEST 2008
* Copyright 2008 Bent Bisballe Nyeng
* deva@aasimon.org
****************************************************************************/
/*
* This file is part of Pracro.
*
* Pracro 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.
*
* Pracro is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pracro; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
#include "resumewidget.h"
#include <QHBoxLayout>
#include <QBoxLayout>
#define MAX_COMPACT_SIZE 100
//#define RICH // Experimental syntax highlighter (numbers turn blue)
//#define FIXED_FONT // Show the resume, using a fixed font.
ResumeWidget::ResumeWidget(bool compact)
{
this->compact = compact;
setLayout(new QHBoxLayout());
layout()->setContentsMargins(10,2,2,2);
resume = new QLabel("<font style='color: #ccc;'>Endnu ikke udfyldt</font>");
#ifdef RICH
resume->setTextFormat(Qt::RichText);
#endif
resume->setWordWrap(true);
layout()->addWidget(resume);
}
#define LINEWIDTH 80
static QString reformatString(QString help)
{
QString output;
int lastnl = 0;
for(int i = 0; i < help.size(); i++) {
if(help[i] == '\n') {
lastnl = 0;
} else {
if(lastnl > LINEWIDTH && help[i] == ' ') {
output += '\n';
lastnl = 0;
} else {
lastnl++;
}
}
output += help[i];
}
return output;
}
void ResumeWidget::setText(QString text)
{
QString f;
#ifdef FIXED_FONT
QFont font = resume->font();
font.setFamily("Courier New");
resume->setFont(font);
#endif
#ifdef RICH
for(int i = 0; i < text.length(); i++) {
if(text[i] >= '0' && text[i] <= '9') f += "<font style='color: #55F;'>" + text[i] + "</font>";
else if(text[i] == '\n') f += "<br/>";
else if(text[i] == ' ') f += " ";
else f += text[i];
}
resume->setWordWrap(true);
#else
f = text;
#endif
if(compact) {
QString origtext = f;
if(f.count('\n') > 0) f = f.left(f.indexOf('\n')); // Limit to one line.
if(f.length() > MAX_COMPACT_SIZE) {
f = f.left(MAX_COMPACT_SIZE); // limit to first MAX_COMPACT_SIZE characters.
}
if(text != f) {
f += " <img src=\"compressed.png\"/>";
resume->setToolTip(reformatString(origtext)); // Only set tooltip if resume has actually been cut off.
}
}
resume->setText(f);
}
|