Almetare  1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
calc_dlg_base.h
gehe zur Dokumentation dieser Datei
1 //******************************************************************************
2 // Copyright (c) 2002-2004 by Friedemann Seebass, Germany.
3 // Dieses Programm ist freie Software. Siehe GNU GPL Notiz in Datei main.cpp.
4 // This program is free software. See the GNU GPL notice in file main.cpp.
5 // Projekt: Almetare - Alle meine Taschenrechner
6 //******************************************************************************
10 //******************************************************************************
11 // Wann Wer Was
12 // ---------- -------- ---------------------------------------------------------
13 // 15.11.2003 fse boot(), butTypeBase(): neuer Parameter wflags
14 // 11.11.2003 fse neue Member-Variable mApplIconPixmap
15 // 08.08.2003 fse neue Funktion pasteText()
16 // 29.04.2003 fse neue Member-Variable mMaxDigitNum
17 // 30 03 2003 fse neue virtuelle Funktion adjustRealisticSkin()
18 // 28.03.2003 fse neue virtuelle Funktion preExtractSym()
19 // 12.05.2002 fse erzeugt
20 //******************************************************************************
21 
22 #ifndef CALC_DLG_BASE_H
23 #define CALC_DLG_BASE_H
24 
25 //******************************************************************************
26 
27 #include <string>
28 #include <time.h> // clock_t
29 #include <qlabel.h>
30 #include <qlineedit.h>
31 #include <qrect.h>
32 #include <qdialog.h>
33 #include <qpixmap.h>
34 #include <qbitmap.h>
35 #include <qbutton.h>
36 #include <qsound.h>
37 #include "calculator.h" // enum AngMode
38 
39 using namespace std;
40 
41 //******************************************************************************
42 
45 
46 struct WgtData
47 {
48  QRect rect;
49  QString text;
50 };
51 
52 //******************************************************************************
53 
54 typedef map<char, QButton*> ShortCutTabT;
55 typedef ShortCutTabT::iterator ShortCutTabIT;
56 typedef map<string, WgtData> WgtDataMapT;
57 typedef WgtDataMapT::iterator WgtDataMapIT;
58 
59 //******************************************************************************
60 
68 
70 {
71  clock_t mPressedClock;
72 
73  bool loadWavs(string path, vector<QSound*>& qsPvec);
74  void makeWgtMap();
75  void setRealisticSkin();
76  void setSimpleSkin();
77  void setDebugSkin();
78  void hideOrShowAllLabels(bool isToHide);
79  void setNewSize(QWidget* qwP);
80  void rescalePixmap(QButton* bP, const QRect& orgWgtRect);
81  string mapDlgBase(string& sym) const;
82  void butDigitDigit(string& sym);
83  void butDigitAction(string& sym);
84  void addToolTips();
85  void removeToolTips();
86  void pasteText(); // fse, 08.08.03
87  void setResetAlwaysOnTop(bool alwaysOnTop, Qt::WFlags wflags, bool showIt); // fse, 15.11.03
88 
89 protected:
90  enum ButtonType { B_NO, B_ANY_MODE, B_DIGIT, B_ACTION, B_ON, B_PI, B_EE, B_ENG };
91 
92  // "Verwandte":
93  QDialog* mCalcDlgP;
95 
96  // Geometrie des Rechners:
101  QRect mOrgLcdRect;
102  QSize mOrgDlgSize;
103  WgtDataMapT mOrgWgtMap;
104  double mXfact;
105  double mYfact;
106 
107  // Grafikobjekte/GUI-Elemente:
108  QPixmap mApplIconPixmap;
110  QPixmap mDigitsPixmap;
112  QRect mLcdRect;
113  QLineEdit* mLcdStrBaseP;
114  QLineEdit* mModesBaseP;
115  QLineEdit* mDisplayBaseP;
116  QLabel* mSeebassBaseP;
117 
118  // Sonstiges:
119  ButtonType mLastType;
120  ButtonType mLastButOneType;
121  string mDisplayStr;
122  vector<QSound*> mPrsSounds;
123  vector<QSound*> mRlsSounds;
124  ShortCutTabT mShortCutTab;
125  bool mIsOff;
129 
130  // Funktionen:
131  void boot(CalculatorBase* cbP, QDialog* dlgP, Qt::WFlags wflags);
132  void initCalcDlgBase();
133  void clearLcd();
134  void resizeAllWidgets(QDialog* mainDlgP);
135  void setLastType(ButtonType bt) { mLastButOneType = mLastType; mLastType = bt; }
136  void showHint();
137  string extractSym(QPushButton* senderP);
138  void butAnyModeBase(string& sym);
139  void butActionBase(string& sym, string& lastSymb);
140  void butDigitBase (string& sym);
141  void butSignBase();
142  void butBack();
143  void butTypeBase(QWidget* dlgP, Qt::WFlags wflags);
144  void playPressBase();
145  void playReleaseBase();
146  void execKeyEvent(QKeyEvent* evP, QMouseEvent& me);
147  void updateDisplayAfterDigit(string inputStr = "");
148  void updateDisplay(string inputStr = "");
149 
150  void copyBaseDisplayFields();
151  void setError() { mCalcP->getDisplayP ()->setError(); }
152  bool isError () { return mCalcP->getDisplayP ()->isError (); }
153 // bool isInv () { return mCalcP->getComputerP()->getIsInv(); }
154  virtual void preExtractSym(string sym) { sym = sym; }; // fuer Casio fx-3600P
155  virtual void adjustRealisticSkin() {}; // fuer Casio fx-3600P
156  virtual void adjustSimpleSkin() = 0;
157  virtual void adjustDebugSkin() = 0;
158  virtual void makeShortCutTab() = 0;
159  virtual void setDisplayFields(bool isDoPerhapsNot = false) = 0; // Argument
160  // nur fuer TI-30 noetig (Thinking-Sequenz)
161 public:
162  CalcDlgBase();
163  virtual ~CalcDlgBase() {}
164  CalculatorBase* getCalcP() const { return mCalcP; }
165  bool getIsPixLoaded() { return mIsPixLoaded; }
166  QPixmap& getApplIconPixmap() { return mApplIconPixmap; }
167  ShortCutTabT* getShortCutTabP() { return &mShortCutTab; }
168 };
169 
170 //******************************************************************************
171 
172 #endif // !CALC_DLG_BASE_H
173 
double mYfact
Resize-Faktor in y-Richtung.
Definition: calc_dlg_base.h:105
QPixmap mApplIconPixmap
Pixmap mit dem Application-Icon (links oben im Dialog)
Definition: calc_dlg_base.h:108
QRect mLcdRect
schmaler Streifen fuer die LCD-Ziffern
Definition: calc_dlg_base.h:112
bool mIsSoundLoaded
konnten Sounds geladen werden?
Definition: calc_dlg_base.h:127
QPixmap mBackgroundPixmap
Pixmap mit dem Hintergrundbild.
Definition: calc_dlg_base.h:109
double mXfact
Resize-Faktor in x-Richtung.
Definition: calc_dlg_base.h:104
clock_t mPressedClock
Clock, wenn Taste gedrueckt wurde.
Definition: calc_dlg_base.h:71
ButtonType mLastType
Typ der zuletzt gedrueckten Taste.
Definition: calc_dlg_base.h:119
QRect mOrgLcdRect
schmaler Streifen fuer die LCD-Ziffern
Definition: calc_dlg_base.h:101
vector< QSound * > mPrsSounds
Liste aller Sounds fuer 'Taste druecken'.
Definition: calc_dlg_base.h:122
CalculatorBase * mCalcP
Zeiger auf den eigentlichen Rechner.
Definition: calc_dlg_base.h:94
bool isError()
Prueft, ob bei einer Berechnung ein Fehler aufgetreten ist.
Definition: calculator.cpp:176
QLineEdit * mLcdStrBaseP
formatiertes Ein-Ausgabefeld der Dialog-Box
Definition: calc_dlg_base.h:113
QDialog * mCalcDlgP
Zeiger auf den Dialog.
Definition: calc_dlg_base.h:93
int mDefaultHeight
Default-Hoehe des Rechners (falls keine Pixmap)
Definition: calc_dlg_base.h:98
QPixmap mScaledDigitsPixmap
Pixmap mit allen Ziffern, skaliert.
Definition: calc_dlg_base.h:111
int mDigitHeight
natuerliche Hoehe einer Ziffer im Display
Definition: calc_dlg_base.h:100
Basisklasse aller Taschenrechner.
Definition: calculator.h:244
Basisklassen fuer alle Taschenrechner (Modul base)
QLineEdit * mModesBaseP
Modes-Ausgabefeld der Dialog-Box.
Definition: calc_dlg_base.h:114
bool mIsOff
Rechner ein- oder ausgeschaltet.
Definition: calc_dlg_base.h:125
bool mIsPixLoaded
konnten Rechner-Pixmaps geladen werden?
Definition: calc_dlg_base.h:126
ButtonType mLastButOneType
Typ der vorletzten gedrueckten Taste.
Definition: calc_dlg_base.h:120
QSize mOrgDlgSize
Originalgroesse des Rechners.
Definition: calc_dlg_base.h:102
vector< QSound * > mRlsSounds
Liste aller Sounds fuer 'Taste loslassen'.
Definition: calc_dlg_base.h:123
QLabel * mSeebassBaseP
Namensfeld.
Definition: calc_dlg_base.h:116
In dieser Klasse ist die Basisfunktionalitaet des Taschenrechner-Dialogs aller Taschenrechner impleme...
Definition: calc_dlg_base.h:69
QLineEdit * mDisplayBaseP
"rohes" Ein-Ausgabefeld der Dialog-Box
Definition: calc_dlg_base.h:115
int mMaxDigitNum
maximale Anzahl von Ziffern bei der Eingabe
Definition: calc_dlg_base.h:128
int mDefaultWidth
Default-Breite des Rechners (falls keine Pixmap)
Definition: calc_dlg_base.h:97
Struktur zur Aufnahme der Groesse und des Originaltextes aller Widgets auf dem Dialog.
Definition: calc_dlg_base.h:46
WgtDataMapT mOrgWgtMap
Originalgroessen und -texte aller Widgets des Dialogs.
Definition: calc_dlg_base.h:103
ShortCutTabT mShortCutTab
Liste aller Shortcuts.
Definition: calc_dlg_base.h:124
int mDigitWidth
natuerliche Breite einer Ziffer im Display
Definition: calc_dlg_base.h:99
string mDisplayStr
Eingabefeld des Taschenrechners.
Definition: calc_dlg_base.h:121
QPixmap mDigitsPixmap
Pixmap mit allen Ziffern.
Definition: calc_dlg_base.h:110