Almetare 1.20
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
Fx85vMainDlg Klassenreferenz

Eigene Dialogklasse des fx-85v. Mehr ...

#include <fx85v_main_dlg.h>

Klassendiagramm für Fx85vMainDlg:
CalcDlgBase

Öffentliche Slots

void timeoutOff ()
 7-Minuten Timer zum "Abschalten" des Rechners.
 

Öffentliche Methoden

 Fx85vMainDlg (QWidget *parent=0, const char *name=0, bool modal=FALSE, WFlags f=0)
 Konstruktion des Dialogs. Mehr ...
 
 ~Fx85vMainDlg ()
 Speichert vor dem Verlassen die Groessendaten des Dialogs in der Konfigurationsdatei.
 
void butAc ()
 Button AC loescht alles bis auf die Speicher.
 
void butBack ()
 
void butDigit ()
 Slot-Funktion fuer die Zifferntasten.
 
void butAbc ()
 Taste zum Bruchrechnen.
 
void butExp ()
 Entfernt das letzte Zeichen aus der Anzeige. Mehr ...
 
void butAction ()
 Slot-Funktionen fuer die meisten Buttons:
 
void butEng ()
 Schaltet die Anzeige in den Engineering-Modus bzw. Mehr ...
 
void butEngBack ()
 Schaltet die Anzeige in den Engineering-Modus bzw. Mehr ...
 
void butAnyMode ()
 Slot-Funktionen fuer die Mode-Buttons:
 
void butBra ()
 Slot-Funktion ist nur noetig, um in der Anzeige die Klammer erscheinen zu lassen.
 
void butSign ()
 +/–Taste.
 
void butSum ()
 M+-Taste. Mehr ...
 
void butDat ()
 Fuehrt den Datendialog fuer Statistikdaten aus.
 
void butType ()
 
void playPress ()
 
void playRelease ()
 

Geschützte Methoden

void resizeEvent (QResizeEvent *)
 
void enterEvent (QEvent *)
 

Private Methoden

void rowColToPix (int row, int col, int &x, int &y, int &w, int &h)
 Liefert zu einer Zeilen-/Spalten-Position die zugehoerigen Pixelkoordinaten in der nicht skalierten Digits-Pixmap. Mehr ...
 
void setLcd (string str)
 Setzt den String str in die passenden Buchstaben des LCDs um. Mehr ...
 
void getSourceCoords (char c, bool isPointSucc, bool isExp, int &x, int &y, int &w, int &h)
 Liefert zu einem Buchstaben die zugehoerigen Pixelkoordinaten in der Pixmap. Mehr ...
 
void switchOff ()
 Schaltet den Rechner im More-Realistic-Modus "aus", wenn der 7-Minuten-Timer abgelaufen ist.
 
void keyPressEvent (QKeyEvent *evP)
 Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox. Mehr ...
 
void keyReleaseEvent (QKeyEvent *evP)
 Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox. Mehr ...
 
void resetAllModes ()
 Setzt alle Shift-Ebenen zurueck.
 
void setLabelColors ()
 Geht alle Widgets durch und setzt die Farben der Labels. Mehr ...
 
void adjustSimpleSkin ()
 Setzt die Farben der Buttons. Mehr ...
 
void adjustDebugSkin ()
 Entfernt die schwarze "Blende" hinter dem Display. Mehr ...
 
void setDisplayFields (bool isDoPerhapsNot=0)
 Erneuert die LCD-Anzeige. Mehr ...
 
void makeShortCutTab ()
 Funktion erzeugt die Tabelle mit allen Shortcuts. Mehr ...
 
void butEngBoth (Util::Direction dir)
 Schaltet die Anzeige in den Engineering-Modus bzw. Mehr ...
 
- Private Methoden geerbt von CalcDlgBase
CalculatorBasegetCalcP () const
 
bool getIsPixLoaded ()
 
QPixmap & getApplIconPixmap ()
 
ShortCutTabT * getShortCutTabP ()
 
void boot (CalculatorBase *cbP, QDialog *dlgP, Qt::WFlags wflags)
 Initialisiert einen Taschenrechner. Mehr ...
 
void initCalcDlgBase ()
 Initialisierung, die nach "Einschalten" (mButOnP) des Rechners durchgefuehrt wird.
 
void clearLcd ()
 Loescht das LCD. Mehr ...
 
void resizeAllWidgets (QDialog *mainDlgP)
 Ermittelt aus der aktuellen Groesse und der Originalgroesse des Hauptdialogs mainDlgP Streckfaktoren in x- und y-Richtung. Mehr ...
 
void setLastType (ButtonType bt)
 
void showHint ()
 Bringt Message-Box auf den Bildschirm, wenn die Maus zum ersten Mal den Rechnerdialog betritt.
 
string extractSym (QPushButton *senderP)
 Extrahiert das Symbol aus dem Button-Namen, indem das fuehrende "m" und abschliessende "P" entfernt wird. Mehr ...
 
void butAnyModeBase (string &sym)
 Funktion, die fuer die Bearbeitung aller Modus-Tasten aufgerufen wird. Mehr ...
 
void butActionBase (string &sym, string &lastSymb)
 Slot-Funktionen fuer die meisten Buttons. Mehr ...
 
void butDigitBase (string &sym)
 Wird von allen Zifferntasten aufgerufen. Mehr ...
 
void butSignBase ()
 Waehrend der Eingabe einer Zahl muss das Vorzeichen gewechselt werden, ohne die Eingabe zu unterbrechen; sonst muss im Calculator die Sign-Routine aufgerufen werden.
 
void butBack ()
 Entfernt das letzte Zeichen aus der Anzeige. Mehr ...
 
void butTypeBase (QWidget *dlgP, Qt::WFlags wflags)
 Fuehrt den Konfigurationsdialog aus. Mehr ...
 
void playPressBase ()
 Spielt einen der Sounds im Vektor mPrsSounds beim Druecken der Taste.
 
void playReleaseBase ()
 Spielt einen der Sounds im Vektor mRlsSounds beim Loslassen der Taste. Mehr ...
 
void execKeyEvent (QKeyEvent *evP, QMouseEvent &me)
 Wandelt Tastatur-Event in Button-Pressed-Event um. Mehr ...
 
void updateDisplayAfterDigit (string inputStr="")
 Erneuert die Members mModes und mSeven der Display-Klasse und das LCD entsprechend. Mehr ...
 
void updateDisplay (string inputStr="")
 Erneuert die Members der Display-Klasse, die drei Edit-Felder des Dialogs und das LCD. Mehr ...
 
void copyBaseDisplayFields ()
 Holt die Display-Felder aus der zum Taschenrechner gehoerenden Display-Klasse.
 
void setError ()
 
bool isError ()
 
virtual void preExtractSym (string sym)
 
virtual void adjustRealisticSkin ()
 
virtual void adjustSimpleSkin ()=0
 
virtual void adjustDebugSkin ()=0
 
virtual void makeShortCutTab ()=0
 
virtual void setDisplayFields (bool isDoPerhapsNot=false)=0
 

Private Attribute

CalculatorFx85v mCalc
 Inkorporierter Konsolenrechner.
 
ComputerFx85vmCompP
 Zeiger auf den Computer des Rechners.
 
DisplayFx85vmDsplP
 Zeiger auf das Display des Rechners.
 
QTimer mTimOff
 8-Minuten-Timer fuer automatisches Abschalten
 
bool mIsModeMode
 gibt an, ob Mode-Taste gedrueckt
 
- Private Attribute geerbt von CalcDlgBase
QDialog * mCalcDlgP
 Zeiger auf den Dialog.
 
CalculatorBasemCalcP
 Zeiger auf den eigentlichen Rechner.
 
int mDefaultWidth
 Default-Breite des Rechners (falls keine Pixmap)
 
int mDefaultHeight
 Default-Hoehe des Rechners (falls keine Pixmap)
 
int mDigitWidth
 natuerliche Breite einer Ziffer im Display
 
int mDigitHeight
 natuerliche Hoehe einer Ziffer im Display
 
QRect mOrgLcdRect
 schmaler Streifen fuer die LCD-Ziffern
 
QSize mOrgDlgSize
 Originalgroesse des Rechners.
 
WgtDataMapT mOrgWgtMap
 Originalgroessen und -texte aller Widgets des Dialogs.
 
double mXfact
 Resize-Faktor in x-Richtung.
 
double mYfact
 Resize-Faktor in y-Richtung.
 
QPixmap mApplIconPixmap
 Pixmap mit dem Application-Icon (links oben im Dialog)
 
QPixmap mBackgroundPixmap
 Pixmap mit dem Hintergrundbild.
 
QPixmap mDigitsPixmap
 Pixmap mit allen Ziffern.
 
QPixmap mScaledDigitsPixmap
 Pixmap mit allen Ziffern, skaliert.
 
QRect mLcdRect
 schmaler Streifen fuer die LCD-Ziffern
 
QLineEdit * mLcdStrBaseP
 formatiertes Ein-Ausgabefeld der Dialog-Box
 
QLineEdit * mModesBaseP
 Modes-Ausgabefeld der Dialog-Box.
 
QLineEdit * mDisplayBaseP
 "rohes" Ein-Ausgabefeld der Dialog-Box
 
QLabel * mSeebassBaseP
 Namensfeld.
 
ButtonType mLastType
 Typ der zuletzt gedrueckten Taste.
 
ButtonType mLastButOneType
 Typ der vorletzten gedrueckten Taste.
 
string mDisplayStr
 Eingabefeld des Taschenrechners.
 
vector< QSound * > mPrsSounds
 Liste aller Sounds fuer 'Taste druecken'.
 
vector< QSound * > mRlsSounds
 Liste aller Sounds fuer 'Taste loslassen'.
 
ShortCutTabT mShortCutTab
 Liste aller Shortcuts.
 
bool mIsOff
 Rechner ein- oder ausgeschaltet.
 
bool mIsPixLoaded
 konnten Rechner-Pixmaps geladen werden?
 
bool mIsSoundLoaded
 konnten Sounds geladen werden?
 
int mMaxDigitNum
 maximale Anzahl von Ziffern bei der Eingabe
 

Weitere Geerbte Elemente

- Private Typen geerbt von CalcDlgBase
enum  ButtonType {
  B_NO , B_ANY_MODE , B_DIGIT , B_ACTION ,
  B_ON , B_PI , B_EE , B_ENG
}
 

Ausführliche Beschreibung

Eigene Dialogklasse des fx-85v.

Abgeleitet von der Klasse, die der Qt-Designer generiert hat.

Beschreibung der Konstruktoren und Destruktoren

◆ Fx85vMainDlg()

Fx85vMainDlg::Fx85vMainDlg ( QWidget *  parentP = 0,
const char *  name = 0,
bool  modal = FALSE,
WFlags  fl = 0 
)

Konstruktion des Dialogs.

Initialisierung der Members.

Parameter
parentPZeiger auf Vaterdialog
nameName des Dialogs
modalFlag, ob Dialog modal oder nicht
fldiverse Qt-Dialog-Flags

Dokumentation der Elementfunktionen

◆ adjustDebugSkin()

void Fx85vMainDlg::adjustDebugSkin ( )
privatevirtual

Entfernt die schwarze "Blende" hinter dem Display.

Implementiert CalcDlgBase.

◆ adjustSimpleSkin()

void Fx85vMainDlg::adjustSimpleSkin ( )
privatevirtual

Setzt die Farben der Buttons.

Die kleinen werden dunkelgrau, die grossen schwarz.

Implementiert CalcDlgBase.

◆ butEng()

void Fx85vMainDlg::butEng ( )

Schaltet die Anzeige in den Engineering-Modus bzw.

verschiebt das Komma um jeweils drei Stellen nach rechts.

◆ butEngBack()

void Fx85vMainDlg::butEngBack ( )

Schaltet die Anzeige in den Engineering-Modus bzw.

verschiebt das Komma um jeweils drei Stellen nach links.

◆ butEngBoth()

void Fx85vMainDlg::butEngBoth ( Util::Direction  dir)
private

Schaltet die Anzeige in den Engineering-Modus bzw.

verschiebt das Komma um jeweils drei Stellen nach rechts oder links.

◆ butExp()

void Fx85vMainDlg::butExp ( )

Entfernt das letzte Zeichen aus der Anzeige.

Wenn die Anzeige in Exponentialdarstellung ist, werden die Ziffern des Exponenten nach rechts geshifted bis er nur noch Nullen enthaelt, dann wird er ganz entfernt. Button EXP.

◆ butSum()

void Fx85vMainDlg::butSum ( )

M+-Taste.

Noetig, weil der Casio vor dem Summieren erst das Ergebnis einer offenen Rechnung ermittelt.

◆ getSourceCoords()

void Fx85vMainDlg::getSourceCoords ( char  c,
bool  isPointSucc,
bool  isExp,
int &  x,
int &  y,
int &  w,
int &  h 
)
private

Liefert zu einem Buchstaben die zugehoerigen Pixelkoordinaten in der Pixmap.

Die Pixmap hat folgenden Aufbau:

Zeile | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Spalte
------|-------------------------------------------------------------------
0 | s m M K hyp SD LR DEG RAD GRA FIX SCI
1 | 0 1 2 3 4 5 6 7 8 9 - E _ [
2 | 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -. E. _. °
3 | 0 1 2 3 4 5 6 7 8 9 -
Parameter
cgesuchter Character
isPointSuccgibt an, ob dem Zeichen ein Punkt folgt
isExpgibt an, ob das Zeichen im Exponentialbereich der Anzeige
Rückgabewerte
xx-Koordinate des Zeichens in der Pixmap
yy-Koordinate des Zeichens in der Pixmap
wBreite des Zeichens in der Pixmap
hHoehe des Zeichens in der Pixmap

◆ keyPressEvent()

void Fx85vMainDlg::keyPressEvent ( QKeyEvent *  evP)
private

Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox.

Parameter
evPZeiger auf das Qt-Tasten-Event

◆ keyReleaseEvent()

void Fx85vMainDlg::keyReleaseEvent ( QKeyEvent *  evP)
private

Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox.

Parameter
evPZeiger auf das Qt-Tasten-Event

◆ makeShortCutTab()

void Fx85vMainDlg::makeShortCutTab ( )
privatevirtual

Funktion erzeugt die Tabelle mit allen Shortcuts.

Implementiert CalcDlgBase.

◆ rowColToPix()

void Fx85vMainDlg::rowColToPix ( int  row,
int  col,
int &  x,
int &  y,
int &  w,
int &  h 
)
private

Liefert zu einer Zeilen-/Spalten-Position die zugehoerigen Pixelkoordinaten in der nicht skalierten Digits-Pixmap.

Parameter
rowZeile in der Tabelle
colSpalte in der Tabelle
Rückgabewerte
xx-Koordinate des Zeichens in der Pixmap
yy-Koordinate des Zeichens in der Pixmap
wBreite des Zeichens in der Pixmap
hHoehe des Zeichens in der Pixmap

◆ setDisplayFields()

void Fx85vMainDlg::setDisplayFields ( bool  isDoPerhapsNot = 0)
privatevirtual

Erneuert die LCD-Anzeige.

Da diese Prozedur nacb jedem Tastendruck aufgerufen wird, koennen hier auch die Timer gestartet werden. Das Argument isDoPerhapsNot wird nur vom TI-30 benoetigt im Rahmen seiner "Thinking"-Sequenz.

Implementiert CalcDlgBase.

◆ setLabelColors()

void Fx85vMainDlg::setLabelColors ( )
private

Geht alle Widgets durch und setzt die Farben der Labels.

Die Farben sind im Label-Namen kodiert: "mLbB_PiP" => Vodergrundfarbe schwarz, keine spezielle Hintergrundfarbe "mLbR_FctP" => Vodergrundfarbe rot, keine spezielle Hintergrundfarbe "mLbRbXaveP" => Vodergrundfarbe rot, Hintergrundfarbe blau "mLbBbXaveP" => Vodergrundfarbe schwarz, Hintergrundfarbe blau

◆ setLcd()

void Fx85vMainDlg::setLcd ( string  str)
private

Setzt den String str in die passenden Buchstaben des LCDs um.

Parameter
strauszugebender String

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: