• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

kcalc

  • sources
  • kde-4.14
  • kdeutils
  • kcalc
kcalc.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2001 - 2013 Evan Teran
3  evan.teran@gmail.com
4 
5 Copyright (C) 1996 - 2000 Bernd Johannes Wuebben
6  wuebben@kde.org
7 
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as
10 published by the Free Software Foundation; either version 2 of
11 the License, or (at your option) any later version.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #ifndef KCALC_H_
23 #define KCALC_H_
24 
25 class Constants;
26 class QButtonGroup;
27 class KToggleAction;
28 class KCalcConstMenu;
29 
30 /*
31  Kcalc basically consist of a class for the GUI (here), a class for
32  the display (dlabel.h), and one for the mathematics core
33  (kcalc_core.h).
34 
35  When for example '+' is pressed, one sends the contents of the
36  Display and the '+' to the core via "core.Plus(DISPLAY_AMOUNT)".
37  This only updates the core. To bring the changes to the display,
38  use afterwards "UpdateDisplay(true)".
39 
40  "UpdateDisplay(true)" means that the amount to be displayed should
41  be taken from the core (get the result of some operation that was
42  performed), "UpdateDisplay(false)" has already the information, what
43  to be display (e.g. user is typing in a number). Note that in the
44  last case the core does not know the number typed in until some
45  operation button is pressed, e.g. "core.Plus(display_number)".
46  */
47 
48 #include "kcalc_core.h"
49 #include "kcalc_button.h"
50 #include "kcalc_const_button.h"
51 
52 #include "ui_kcalc.h"
53 #include "ui_general.h"
54 #include "ui_fonts.h"
55 #include "ui_constants.h"
56 #include "ui_colors.h"
57 
58 #include <QFlags>
59 
60 #include <kxmlguiwindow.h>
61 
62 class General: public QWidget, public Ui::General
63 {
64 public:
65  explicit General(QWidget *parent) : QWidget(parent) {
66  setupUi(this);
67  }
68 };
69 
70 class Fonts: public QWidget, public Ui::Fonts
71 {
72 public:
73  explicit Fonts(QWidget *parent) : QWidget(parent) {
74  setupUi(this);
75  }
76 };
77 
78 class Constants : public QWidget, public Ui::Constants
79 {
80 public:
81  explicit Constants(QWidget *parent) : QWidget(parent) {
82  setupUi(this);
83  }
84 };
85 
86 class Colors : public QWidget, public Ui::Colors
87 {
88 public:
89  explicit Colors(QWidget *parent) : QWidget(parent) {
90  setupUi(this);
91  }
92 };
93 
94 
95 class KCalculator : public KXmlGuiWindow, private Ui::KCalculator
96 {
97  Q_OBJECT
98 
99 public:
100  explicit KCalculator(QWidget *parent = 0);
101  ~KCalculator();
102 
103 signals:
104  void switchShift(bool);
105  void switchMode(ButtonModeFlags, bool);
106  void switchShowAccels(bool);
107 
108 public:
109  enum UpdateFlag {
110  UPDATE_FROM_CORE = 1,
111  UPDATE_STORE_RESULT = 2
112  };
113 
114  Q_DECLARE_FLAGS(UpdateFlags, UpdateFlag)
115 
116 private:
117  virtual bool eventFilter(QObject *o, QEvent *e);
118  void updateGeometry();
119  void setupMainActions();
120  void setupStatusbar();
121  void setupKeys();
122  void setupNumberKeys();
123  void setupRightKeypad();
124  void setupNumericKeypad();
125  void setupLogicKeys();
126  void setupScientificKeys();
127  void setupStatisticKeys();
128  void setupConstantsKeys();
129  void setupMiscKeys();
130  void keyPressEvent(QKeyEvent *e);
131  void keyReleaseEvent(QKeyEvent *e);
132  void setPrecision();
133  void setAngle();
134  void setBase();
135 
136  void updateDisplay(UpdateFlags flags);
137 
138  // button sets
139  void showMemButtons(bool toggled);
140  void showStatButtons(bool toggled);
141  void showScienceButtons(bool toggled);
142  void showLogicButtons(bool toggled);
143 
144  KCalcConstMenu *createConstantsMenu();
145 
146 protected slots:
147  void changeButtonNames();
148  void updateSettings();
149  void setColors();
150  void setFonts();
151  void EnterEqual();
152  void showSettings();
153 
154  // Mode
155  void slotSetSimpleMode();
156  void slotSetScienceMode();
157  void slotSetStatisticMode();
158  void slotSetNumeralMode();
159 
160  void slotConstantsShow(bool toggled);
161  void slotBitsetshow(bool toggled);
162  void slotAngleSelected(int mode);
163  void slotBaseSelected(int base);
164  void slotNumberclicked(int number_clicked);
165  void slotEEclicked();
166  void slotShifttoggled(bool myboolean);
167  void slotMemRecallclicked();
168  void slotMemStoreclicked();
169  void slotSinclicked();
170  void slotPlusMinusclicked();
171  void slotMemPlusMinusclicked();
172  void slotCosclicked();
173  void slotReciclicked();
174  void slotTanclicked();
175  void slotFactorialclicked();
176  void slotLogclicked();
177  void slotSquareclicked();
178  void slotCubeclicked();
179  void slotLnclicked();
180  void slotPowerclicked();
181  void slotMemClearclicked();
182  void slotClearclicked();
183  void slotAllClearclicked();
184  void slotParenOpenclicked();
185  void slotParenCloseclicked();
186  void slotANDclicked();
187  void slotMultiplicationclicked();
188  void slotDivisionclicked();
189  void slotORclicked();
190  void slotXORclicked();
191  void slotPlusclicked();
192  void slotMinusclicked();
193  void slotLeftShiftclicked();
194  void slotRightShiftclicked();
195  void slotPeriodclicked();
196  void slotEqualclicked();
197  void slotPercentclicked();
198  void slotNegateclicked();
199  void slotModclicked();
200  void slotStatNumclicked();
201  void slotStatMeanclicked();
202  void slotStatStdDevclicked();
203  void slotStatMedianclicked();
204  void slotStatDataInputclicked();
205  void slotStatClearDataclicked();
206  void slotHyptoggled(bool flag);
207  void slotConstclicked(int);
208  void slotBackspaceclicked();
209 
210  void slotConstantToDisplay(const science_constant &const_chosen);
211  void slotChooseScientificConst0(const science_constant &);
212  void slotChooseScientificConst1(const science_constant &);
213  void slotChooseScientificConst2(const science_constant &);
214  void slotChooseScientificConst3(const science_constant &);
215  void slotChooseScientificConst4(const science_constant &);
216  void slotChooseScientificConst5(const science_constant &);
217 
218  void slotBitsetChanged(quint64);
219  void slotUpdateBitset(const KNumber &);
220 
221 private:
222  enum StatusField {
223  ShiftField = 0,
224  BaseField,
225  AngleField,
226  MemField
227  };
228 
229  enum AngleMode {
230  DegMode = 0,
231  RadMode,
232  GradMode
233  };
234 
235  enum BaseMode {
236  BinMode = 2,
237  OctMode = 8,
238  DecMode = 10,
239  HexMode = 16
240  };
241 
242 private:
243  bool shift_mode_;
244  bool hyp_mode_;
245  KNumber memory_num_;
246 
247  int angle_mode_; // angle modes for trigonometric values
248 
249  KCalcConstMenu* constants_menu_;
250 
251  Constants* constants_; // this is the dialog for configuring const buttons
252 
253  QButtonGroup* angle_choose_group_;
254  QButtonGroup* base_choose_group_;
255  // num_button_group_: 0-9 = digits, 0xA-0xF = hex-keys
256  QButtonGroup* num_button_group_;
257 
258  QList<QAbstractButton*> logic_buttons_;
259  QList<QAbstractButton*> scientific_buttons_;
260  QList<QAbstractButton*> stat_buttons_;
261  QList<QAbstractButton*> const_buttons_;
262 
263  KToggleAction *action_bitset_show_;
264  KToggleAction *action_constants_show_;
265 
266  KToggleAction *action_mode_simple_;
267  KToggleAction *action_mode_science_;
268  KToggleAction *action_mode_statistic_;
269  KToggleAction *action_mode_numeral_;
270 
271  QList<QAbstractButton*> function_button_list_;
272  QList<QAbstractButton*> stat_button_list_;
273  QList<QAbstractButton*> mem_button_list_;
274  QList<QAbstractButton*> operation_button_list_;
275 
276  CalcEngine core;
277 };
278 
279 Q_DECLARE_OPERATORS_FOR_FLAGS(KCalculator::UpdateFlags)
280 
281 #endif
KCalculator::slotSetStatisticMode
void slotSetStatisticMode()
Definition: kcalc.cpp:1804
QEvent
QWidget
KCalculator::slotNegateclicked
void slotNegateclicked()
Definition: kcalc.cpp:1448
KCalculator::slotChooseScientificConst4
void slotChooseScientificConst4(const science_constant &)
Definition: kcalc.cpp:1717
QWidget::setupUi
void setupUi(QWidget *widget)
General
Definition: kcalc.h:62
Colors
Definition: kcalc.h:86
General::General
General(QWidget *parent)
Definition: kcalc.h:65
KCalculator::slotBitsetChanged
void slotBitsetChanged(quint64)
Definition: kcalc.cpp:2041
KCalculator::slotRightShiftclicked
void slotRightShiftclicked()
Definition: kcalc.cpp:1397
KCalculator::slotORclicked
void slotORclicked()
Definition: kcalc.cpp:1347
KCalculator::slotStatStdDevclicked
void slotStatStdDevclicked()
Definition: kcalc.cpp:1505
kcalc_core.h
KCalculator::switchShift
void switchShift(bool)
KCalculator::slotConstantsShow
void slotConstantsShow(bool toggled)
Definition: kcalc.cpp:1996
KCalculator::showSettings
void showSettings()
Definition: kcalc.cpp:1608
KCalculator::slotPercentclicked
void slotPercentclicked()
Definition: kcalc.cpp:1437
KCalculator::slotConstantToDisplay
void slotConstantToDisplay(const science_constant &const_chosen)
Definition: kcalc.cpp:745
KCalculator::slotLogclicked
void slotLogclicked()
Definition: kcalc.cpp:1177
KCalculator::slotBackspaceclicked
void slotBackspaceclicked()
Definition: kcalc.cpp:1269
KCalculator::slotStatClearDataclicked
void slotStatClearDataclicked()
Definition: kcalc.cpp:1559
KCalculator::~KCalculator
~KCalculator()
Definition: kcalc.cpp:175
KCalculator::slotStatDataInputclicked
void slotStatDataInputclicked()
Definition: kcalc.cpp:1542
KCalculator::slotModclicked
void slotModclicked()
Definition: kcalc.cpp:1458
KCalculator::slotStatNumclicked
void slotStatNumclicked()
Definition: kcalc.cpp:1473
Fonts::Fonts
Fonts(QWidget *parent)
Definition: kcalc.h:73
KCalculator::slotFactorialclicked
void slotFactorialclicked()
Definition: kcalc.cpp:1158
KCalculator::slotDivisionclicked
void slotDivisionclicked()
Definition: kcalc.cpp:1337
QButtonGroup
ButtonModeFlags
ButtonModeFlags
Definition: kcalc_button.h:36
KCalculator::slotMultiplicationclicked
void slotMultiplicationclicked()
Definition: kcalc.cpp:1327
KCalculator::slotStatMedianclicked
void slotStatMedianclicked()
Definition: kcalc.cpp:1523
kcalc_button.h
KCalculator::slotANDclicked
void slotANDclicked()
Definition: kcalc.cpp:1317
KCalculator::slotPlusclicked
void slotPlusclicked()
Definition: kcalc.cpp:1367
science_constant
Definition: kcalc_const_menu.h:36
KXmlGuiWindow
Colors::Colors
Colors(QWidget *parent)
Definition: kcalc.h:89
KCalculator::slotSinclicked
void slotSinclicked()
Definition: kcalc.cpp:967
KCalculator::slotChooseScientificConst5
void slotChooseScientificConst5(const science_constant &)
Definition: kcalc.cpp:1726
Constants
Definition: kcalc.h:78
QObject
KCalculator::slotMemStoreclicked
void slotMemStoreclicked()
Definition: kcalc.cpp:944
KCalculator::switchShowAccels
void switchShowAccels(bool)
KCalculator::slotParenCloseclicked
void slotParenCloseclicked()
Definition: kcalc.cpp:1307
KCalculator::slotConstclicked
void slotConstclicked(int)
Definition: kcalc.cpp:1574
KCalculator::slotMinusclicked
void slotMinusclicked()
Definition: kcalc.cpp:1377
KCalculator::slotLeftShiftclicked
void slotLeftShiftclicked()
Definition: kcalc.cpp:1387
KCalculator::slotSetNumeralMode
void slotSetNumeralMode()
Definition: kcalc.cpp:1840
KCalculator::slotAngleSelected
void slotAngleSelected(int mode)
Definition: kcalc.cpp:864
QList< QAbstractButton * >
KCalculator::slotChooseScientificConst0
void slotChooseScientificConst0(const science_constant &)
Definition: kcalc.cpp:1681
KCalcConstMenu
Definition: kcalc_const_menu.h:44
KCalculator::UpdateFlag
UpdateFlag
Definition: kcalc.h:109
KCalculator::changeButtonNames
void changeButtonNames()
Definition: kcalc.cpp:2027
KCalculator::slotCubeclicked
void slotCubeclicked()
Definition: kcalc.cpp:1207
KCalculator::slotTanclicked
void slotTanclicked()
Definition: kcalc.cpp:1113
KNumber
Definition: knumber.h:30
Fonts
Definition: kcalc.h:70
KCalculator::KCalculator
KCalculator(QWidget *parent=0)
Definition: kcalc.cpp:76
kcalc_const_button.h
KCalculator::slotEEclicked
void slotEEclicked()
Definition: kcalc.cpp:892
KCalculator::slotAllClearclicked
void slotAllClearclicked()
Definition: kcalc.cpp:1287
KCalculator::slotMemClearclicked
void slotMemClearclicked()
Definition: kcalc.cpp:1257
KCalculator::slotLnclicked
void slotLnclicked()
Definition: kcalc.cpp:1222
QKeyEvent
KCalculator::slotPowerclicked
void slotPowerclicked()
Definition: kcalc.cpp:1237
KCalculator::EnterEqual
void EnterEqual()
Definition: kcalc.cpp:1418
KCalculator::slotEqualclicked
void slotEqualclicked()
Definition: kcalc.cpp:1428
KCalculator::slotBaseSelected
void slotBaseSelected(int base)
Definition: kcalc.cpp:757
KCalculator::slotSetScienceMode
void slotSetScienceMode()
Definition: kcalc.cpp:1768
KCalculator::setFonts
void setFonts()
Definition: kcalc.cpp:2153
KCalculator::slotStatMeanclicked
void slotStatMeanclicked()
Definition: kcalc.cpp:1489
KCalculator::slotChooseScientificConst1
void slotChooseScientificConst1(const science_constant &)
Definition: kcalc.cpp:1690
KCalculator::slotSquareclicked
void slotSquareclicked()
Definition: kcalc.cpp:1192
KCalculator::setColors
void setColors()
Definition: kcalc.cpp:2100
KCalculator::switchMode
void switchMode(ButtonModeFlags, bool)
KCalculator::UPDATE_FROM_CORE
Definition: kcalc.h:110
KCalculator::slotClearclicked
void slotClearclicked()
Definition: kcalc.cpp:1278
KCalculator::slotParenOpenclicked
void slotParenOpenclicked()
Definition: kcalc.cpp:1298
KCalculator::slotChooseScientificConst2
void slotChooseScientificConst2(const science_constant &)
Definition: kcalc.cpp:1699
KCalculator::slotPeriodclicked
void slotPeriodclicked()
Definition: kcalc.cpp:1407
KCalculator::slotChooseScientificConst3
void slotChooseScientificConst3(const science_constant &)
Definition: kcalc.cpp:1708
KCalculator::updateSettings
void updateSettings()
Definition: kcalc.cpp:2060
KCalculator::slotCosclicked
void slotCosclicked()
Definition: kcalc.cpp:1047
KCalculator::slotBitsetshow
void slotBitsetshow(bool toggled)
Definition: kcalc.cpp:2015
CalcEngine
Definition: kcalc_core.h:29
KCalculator::slotPlusMinusclicked
void slotPlusMinusclicked()
Definition: kcalc.cpp:1012
KCalculator::slotUpdateBitset
void slotUpdateBitset(const KNumber &)
Definition: kcalc.cpp:2051
QObject::parent
QObject * parent() const
KCalculator::slotReciclicked
void slotReciclicked()
Definition: kcalc.cpp:1092
Constants::Constants
Constants(QWidget *parent)
Definition: kcalc.h:81
KCalculator::slotMemRecallclicked
void slotMemRecallclicked()
Definition: kcalc.cpp:931
KCalculator::slotMemPlusMinusclicked
void slotMemPlusMinusclicked()
Definition: kcalc.cpp:1026
KCalculator::slotHyptoggled
void slotHyptoggled(bool flag)
Definition: kcalc.cpp:919
KCalculator::slotNumberclicked
void slotNumberclicked(int number_clicked)
Definition: kcalc.cpp:958
KCalculator
Definition: kcalc.h:95
KCalculator::slotXORclicked
void slotXORclicked()
Definition: kcalc.cpp:1357
KCalculator::slotShifttoggled
void slotShifttoggled(bool myboolean)
Definition: kcalc.cpp:900
KCalculator::slotSetSimpleMode
void slotSetSimpleMode()
Definition: kcalc.cpp:1735
KCalculator::UPDATE_STORE_RESULT
Definition: kcalc.h:111
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:28 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcalc

Skip menu "kcalc"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal