summaryrefslogtreecommitdiff
path: root/client/resumewidget.cc
blob: 563d2df383e75b6be81ec94609c6289eb7daf16f (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
/* -*- 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 += "&nbsp;";
    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);
}