/* amor.h ** ** Copyright (c) 1999 Martin R. Jones ** */ /* ** 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. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program in a file called COPYING; if not, write to ** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ** MA 02110-1301, USA. */ /* ** Bug reports and questions can be sent to kde-devel@kde.org */ #ifndef AMOR_H #define AMOR_H #ifdef HAVE_CONFIG_H #include #endif #include #include #include "amoranim.h" #include "amortips.h" #include "amorconfig.h" #include "AmorIface.h" class AmorDialog; class AmorBubble; class AmorWidget; class TQTimer; class KWinModule; class KPopupMenu; class QueueItem { public: enum itemType { Talk , Tip }; QueueItem(itemType ty, TQString te, int ti = -1); itemType type() { return iType; } TQString text() { return iText; }; int time() { return iTime; }; void setTime(int newTime) { if (iTime > 0) iTime = newTime; }; private: itemType iType; TQString iText; int iTime; }; //--------------------------------------------------------------------------- // // Amor handles window manager input and animation selection and updates. // class Amor : public TQObject, virtual public AmorIface { Q_OBJECT TQ_OBJECT public: Amor(); virtual ~Amor(); virtual void showTip(TQString tip); virtual void showMessage(TQString message); virtual void showMessage(TQString message, int msec); virtual void screenSaverStopped(); virtual void screenSaverStarted(); void reset(); public slots: void slotWindowActivate(WId); void slotWindowRemove(WId); void slotStackingChanged(); void slotWindowChange(WId, const unsigned long * properties); void slotDesktopChange(int); protected slots: void slotMouseClicked(const TQPoint &pos); void slotTimeout(); void slotCursorTimeout(); void slotConfigure(); void slotConfigChanged(); void slotOffsetChanged(int); void slotAbout(); void slotWidgetDragged( const TQPoint &delta, bool release ); void restack(); void hideBubble(bool forceDequeue = false); void slotBubbleTimeout(); protected: enum State { Focus, Blur, Normal, Sleeping, Waking, Destroy }; bool readConfig(); void readGroupConfig(KConfigBase &config, TQPtrList &animList, const char *seq); void showBubble(); AmorAnim *randomAnimation(TQPtrList &animList); void selectAnimation(State state=Normal); void active(); private: KWinModule *mWin; WId mTargetWin; // The window that the animations sits on TQRect mTargetRect; // The goemetry of the target window WId mNextTarget; // The window that will become the target AmorWidget *mAmor; // The widget displaying the animation AmorThemeManager mTheme; // Animations used by current theme AmorAnim *mBaseAnim; // The base animation AmorAnim *mCurrAnim; // The currently running animation int mPosition; // The position of the animation State mState; // The current state of the animation TQTimer *mTimer; // Frame timer TQTimer *mCursorTimer;// Cursor timer TQTimer *mStackTimer; // Restacking timer TQTimer *mBubbleTimer;// Bubble tip timer (GP: I didn't create this one, it had no use when I found it) AmorDialog *mAmorDialog; // Setup dialog KPopupMenu *mMenu; // Our menu time_t mActiveTime; // The time an active event occurred TQPoint mCursPos; // The last recorded position of the pointer TQString mTipText; // Text to display in a bubble when possible AmorBubble *mBubble; // Text bubble AmorTips mTips; // Tips to display in the bubble bool mInDesktopBottom; // the animation is not on top of the // title bar, but at the bottom of the desktop AmorConfig mConfig; // Configuration parameters bool mForceHideAmorWidget; TQPtrQueue mTipsQueue; // GP: tips queue }; //--------------------------------------------------------------------------- class AmorSessionWidget : public TQWidget { Q_OBJECT TQ_OBJECT public: AmorSessionWidget(); ~AmorSessionWidget() {}; public slots: void wm_saveyourself(); }; #endif // AMOR_H