summaryrefslogtreecommitdiffstats
path: root/kgamma/kcmkgamma/displaynumber.cpp
blob: cb04f513ceb50b4af642b3c3c01c72930b30c5ad (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
/***************************************************************************
                          displaynumber.cpp  -  description
                             -------------------
    begin                : Sun Feb 23 2003
    copyright            : (C) 2003 by Michael v.Ostheim
    email                : ostheimm@users.berlios.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 <qstring.h>
#include <qfontmetrics.h>

#include "displaynumber.h"

DisplayNumber::DisplayNumber(QWidget *parent, int digits, \
    int prec, const char *name) : QLabel(parent,name) {

  setPrecision(prec);
  setWidth(digits);  

  setFrameStyle(QFrame::Panel | QFrame::Sunken);
  setBackgroundMode(Qt::PaletteBase);
  setAlignment(Qt::AlignCenter);
  setFocusPolicy(NoFocus);
}

DisplayNumber::~DisplayNumber(){
}

void DisplayNumber::setFont( const QFont & f ) {
  QLabel::setFont(f);
  setWidth(dg);
}

void DisplayNumber::setWidth(int digits) {
  QFontMetrics fm(font());
  QString s("0123456789.+-");
  int width = 0, charWidth=0;

  for (int i = 0; i < 11; i++, width = fm.width(s[i]))
    charWidth = (width > charWidth) ? width : charWidth;

  dg = digits;
  setMinimumWidth( dg * charWidth + charWidth/2 );
}

void DisplayNumber::setNum(double num) {
  QString text;
  setText(text.setNum(num, 'f', precision));
}
    

#include "displaynumber.moc"