/********************f******************************************************* dockwidget.h - description ------------------- begin : Mon Apr 23 2001 copyright : (C) 2001 by Dieter Landolt email : dieter.landolt@secs.ch ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef DOCKWIDGET_H #define DOCKWIDGET_H #include #include #include #include // #include #include #include #include #include #include class QPoint; /**Das Widget welches ins Panel eindocken soll *@author Dieter Landolt */ class DockWidget : public KSystemTray { Q_OBJECT public: /** * Type off Keyboard Led * */ enum Type {Numlock, Capslock, Scrollock }; DockWidget(QWidget *parent=0, const char *name=0, DockWidget::Type type=DockWidget::Capslock); ~DockWidget(); /** * Status of the light is on/off. * @short LED on/off. */ enum State { Off=false, On=true, Undeff=-10 }; /** * Sets the state of the widget to On or Off. * * The widget will be painted immediately. * @see on() off() toggle() toggleState() * * @param state The LED state: on or off. * @short Set LED state. */ // void setState( State state ); void toggleState(); /** Overwrites the default Mouse Event */ void mousePressEvent(QMouseEvent *e); /** Ask if is locked or not */ bool isLocked() { return keylocked; } public slots: /** * Sets the state of the widget to On or Off. * * The widget will be painted immediately. * @see on() off() toggle() toggleState() * * @param state The LED state: on or off. * @short Set LED state. */ void setState( State state ); /** * Toggle the state of the led from Off to On or vice versa. * * The widget repaints itself immediately. */ void toggle(); void toggle(int); /** * Sets the state of the widget to On. * * The widget will be painted immediately. * @see off() toggle() toggleState() setState() */ void on(); /** * Sets the state of the widget to Off. * * The widget will be painted immediately. * @see on() toggle() toggleState() setState() */ void off(); /** * Checks the State of the Global Numlock... Items * * Set the State to the state of the Keyboard * @see on() toggle() toggleState() setState() */ /*! MovieButton::slotStatus(int state) Needes for Workaround an Infinite Loop on MNG Files to Workaround a bug by QT */ void slotStatusOn(int state) { if (state == QMovie::EndOfLoop) movOn.pause(); } void slotStatusOff(int state) { if (state == QMovie::EndOfLoop) movOff.pause(); } // QT End Workarournd void checkState(); /** uses the hide or show dependig from bool show */ virtual void changeVisible(int s); /** Paints a Iconon into a pixmap and returns it to the caller. It's the default icon, witch can be used. */ static QPixmap paintIcon(State state); /** return the state for the led */ bool getState(); /** read's the configuration after change is notified */ void readConfig(); /** to set the key locked or unlockef */ void setlocked(bool state); /** Lets Paint */ /*! DockWidget::lockOn() */ void lockOn() { setlocked(true); repaint(); } /*! \fn DockWidget::lockOff() */ void lockOff() { setlocked(false); repaint(); } /*! \fn DockWidget::lockToggle() */ void lockToggle() { setlocked(! keylocked); repaint(); } protected slots: // Protected attributes void paintEvent(QPaintEvent *ev); private: State led_state; Type led_type; QString *sname; /*! \fn kkeyleddtlcfg::locate(QString type, QString filename) I build the funktion with the return QString::null if file is not found */ QString locate(QString type, QString filename) { QFileInfo fi; fi.setFile(KGlobal::dirs()->findResource(type,filename)); if ( fi.isFile() ) { return fi.absFilePath(); } else { return QString::null; } } signals: // Signals /** tels to all that the state is changed */ void stateChanged(bool); private slots: // Private slots /** Handels the Contextmenu */ virtual void menuHandler(int menuitem); public: // Public attributes /** The effektive Position of the widget in the Panel after a Mousbutton is pressed */ static QPoint *globalPos; protected: // Protected attributes /** Holds the pixmap for the off state */ QPixmap pixOff; /** Holds the pixmap for the on State */ QPixmap pixOn; /** Holds the soundpath for the off state */ QString soundOffPath; /** Holds the soundpath for the on State */ QString soundOnPath; /** idendifies if it should use the pixmaps or draw the led internali */ bool usepixmap; /** idendifies if it should use the sound or be quiet */ bool usesounds; /** is set if the button shold lock the state */ bool keylocked; /** Holds the movie for the off State */ QMovie movOff; /** Holds the movie for the on State */ QMovie movOn; }; #endif