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

Eigene Dialogklasse des fx-3600P. Mehr ...

#include <fx3600p_main_dlg.h>

Klassendiagramm für Fx3600pMainDlg:
CalcDlgBase

Öffentliche Slots

void timeoutOff ()
 "Abschalten" des Rechners nach Ablauf des 6-Minuten Timers.
 
void timeoutBlink ()
 0,4-Sekunden Timer fuers Blinken von P1P2.
 

Öffentliche Methoden

 Fx3600pMainDlg (QWidget *parent=0, const char *name=0, bool modal=FALSE, WFlags f=0)
 Konstruktion des Dialogs. Mehr ...
 
 ~Fx3600pMainDlg ()
 Speichert vor dem Verlassen die Groessendaten des Dialogs in der Konfigurationsdatei.
 
void butPon ()
 Slot für Schiebeschalter (ein/aus).
 
void butPrg ()
 Fuehrt den Programmierdialog aus.
 
void butAc ()
 Button AC loescht alles bis auf die Speicher.
 
void butDigit ()
 Slot-Funktion fuer die Zifferntasten.
 
void butAbc ()
 Taste zum Bruchrechnen.
 
void butExp ()
 Button EXP.
 
void butAction ()
 Slot-Funktionen fuer die meisten Buttons.
 
void butEng ()
 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 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, bool isMode, 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 6-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.
 
string replaceSpaceByCr (string &src)
 
bool isPrgRunning ()
 
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 ...
 
void preExtractSym (string sym)
 Wird von extractSym() aufgerufen, erlaubt Vorverarbeitung. Mehr ...
 
void adjustRealisticSkin ()
 Veraendert die Tool-Buttons. Mehr ...
 
void clearLcdButOn ()
 Loescht die Anzeige bis auf das "ON"-Zeichen.
 
- 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

CalculatorFx3600p mCalc
 Inkorporierter Konsolenrechner.
 
ComputerFx3600pmCompP
 Zeiger auf den Computer des Rechners.
 
DisplayFx3600pmDsplP
 Zeiger auf das Display des Rechners.
 
QTimer mTimOff
 6-Minuten-Timer fuer automatisches Abschalten
 
QTimer mTimBlink
 0,4-Sek.-Timer fuers Blinken von "P1 P2"
 
bool mIsModeMode
 gibt an, ob Mode-Taste gedrueckt
 
bool mIsHardOff
 der Rechner wurde mit dem Ausschalter abgeschaltet
 
QColor mColLgtbrown
 Farbe um das Display herum.
 
QColor mColDrkbrown
 dunkleres Braun f. Mode-Labels
 
QColor mColLgtblue
 helleres Blau fuer LR- und SD-Label
 
QColor mColDrkblue
 dunkleres Blau fuer Typbezeichnung
 
QColor mColOrngInv
 Orange fuer INV-Button.
 
QColor mColOrngLbl
 Orange fuer Button-Label.
 
QColor mColBeige
 Beige fuer die kleinen Buttons.
 
QColor mColOrngAc
 Textfarbe "C" und "AC".
 
QSound * mOnSoundP
 Geraeusch beim Einschalten.
 
QSound * mOffSoundP
 Geraeusch beim Ausschalten.
 
- 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-3600P.

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

Beschreibung der Konstruktoren und Destruktoren

◆ Fx3600pMainDlg()

Fx3600pMainDlg::Fx3600pMainDlg ( 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 Fx3600pMainDlg::adjustDebugSkin ( )
privatevirtual

Entfernt die schwarze "Blende" hinter dem Display.

Implementiert CalcDlgBase.

◆ adjustRealisticSkin()

void Fx3600pMainDlg::adjustRealisticSkin ( )
privatevirtual

Veraendert die Tool-Buttons.

Erneute Implementation von CalcDlgBase.

◆ adjustSimpleSkin()

void Fx3600pMainDlg::adjustSimpleSkin ( )
privatevirtual

Setzt die Farben der Buttons.

Die kleinen werden beige, die grossen schwarz.

Implementiert CalcDlgBase.

◆ butEng()

void Fx3600pMainDlg::butEng ( )

Schaltet die Anzeige in den Engineering-Modus bzw.

verschiebt das Komma um jeweils drei Stellen nach rechts.

◆ butEngBoth()

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

Schaltet die Anzeige in den Engineering-Modus bzw.

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

◆ butSum()

void Fx3600pMainDlg::butSum ( )

M+-Taste.

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

◆ getSourceCoords()

void Fx3600pMainDlg::getSourceCoords ( char  c,
bool  isPointSucc,
bool  isExp,
bool  isMode,
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 | On INV M K LRN Idx LR SD DEG RAD GRA ENT P1 P2
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
isModegibt an, ob es sich um ein Mode-Zeichen handelt
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 Fx3600pMainDlg::keyPressEvent ( QKeyEvent *  evP)
private

Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox.

Parameter
evPZeiger auf das Qt-Tasten-Event

◆ keyReleaseEvent()

void Fx3600pMainDlg::keyReleaseEvent ( QKeyEvent *  evP)
private

Mapped alle Tastatureingaben auf Tastendruecke in der Dialogbox.

Parameter
evPZeiger auf das Qt-Tasten-Event

◆ makeShortCutTab()

void Fx3600pMainDlg::makeShortCutTab ( )
privatevirtual

Funktion erzeugt die Tabelle mit allen Shortcuts.

Implementiert CalcDlgBase.

◆ preExtractSym()

void Fx3600pMainDlg::preExtractSym ( string  sym)
privatevirtual

Wird von extractSym() aufgerufen, erlaubt Vorverarbeitung.

Die Funktion wird benoetigt, um das Flackern der Anzeige bei jedem Tastendruck zu erzeugen. Ausserdem wird das Display immer verdunkelt, wenn ein Programm ausgefuehrt wird.

Parameter
symSymbol auf der Taste (ungempapped)

Erneute Implementation von CalcDlgBase.

◆ rowColToPix()

void Fx3600pMainDlg::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 Fx3600pMainDlg::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 Fx3600pMainDlg::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 Die Kodierung stammt vom fx-85v, hier ist es etwas anders: Rot ist orange, grau ist braun

◆ setLcd()

void Fx3600pMainDlg::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: