kwin Library API Documentation

preview.h

00001 /*
00002  *
00003  * Copyright (c) 2003 Lubos Lunak <l.lunak@kde.org>
00004  *
00005  *  This program is free software; you can redistribute it and/or modify
00006  *  it under the terms of the GNU General Public License as published by
00007  *  the Free Software Foundation; either version 2 of the License, or
00008  *  (at your option) any later version.
00009  *
00010  *  This program is distributed in the hope that it will be useful,
00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *  GNU General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU General Public License
00016  *  along with this program; if not, write to the Free Software
00017  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018  */
00019 
00020 #ifndef KWINDECORATION_PREVIEW_H
00021 #define KWINDECORATION_PREVIEW_H
00022 
00023 #include <qwidget.h>
00024 #include <kdecoration_p.h>
00025 #include <kdecoration_plugins_p.h>
00026 
00027 class QLabel;
00028 
00029 class KDecorationPreviewBridge;
00030 class KDecorationPreviewOptions;
00031 
00032 class KDecorationPreview
00033     : public QWidget
00034     {
00035     Q_OBJECT
00036     public:
00037         // Note: Windows can't be added or removed without making changes to
00038         //       the code, since parts of it assume there's just an active
00039         //       and an inactive window.
00040         enum Windows { Inactive = 0, Active, NumWindows };
00041 
00042         KDecorationPreview( QWidget* parent = NULL, const char* name = NULL );
00043         virtual ~KDecorationPreview();
00044         bool recreateDecoration( KDecorationPlugins* plugin );
00045         void enablePreview();
00046         void disablePreview();
00047         void setPreviewMask( const QRegion&, int, bool );
00048         QRegion unobscuredRegion( bool, const QRegion& ) const;
00049         QRect windowGeometry( bool ) const;
00050         void setTempBorderSize(KDecorationPlugins* plugin, KDecorationDefines::BorderSize size);
00051         void setTempButtons(KDecorationPlugins* plugin, bool customEnabled, const QString &left, const QString &right);
00052     protected:
00053         virtual void resizeEvent( QResizeEvent* );
00054     private:
00055         void positionPreviews();
00056         KDecorationPreviewOptions* options;
00057         KDecorationPreviewBridge* bridge[NumWindows];
00058         KDecoration* deco[NumWindows];
00059         QLabel* no_preview;
00060         QRegion mask;
00061     };
00062 
00063 class KDecorationPreviewBridge
00064     : public KDecorationBridge
00065     {
00066     public:
00067         KDecorationPreviewBridge( KDecorationPreview* preview, bool active );
00068         virtual bool isActive() const;
00069     virtual bool isCloseable() const;
00070     virtual bool isMaximizable() const;
00071     virtual MaximizeMode maximizeMode() const;
00072     virtual bool isMinimizable() const;
00073         virtual bool providesContextHelp() const;
00074         virtual int desktop() const;
00075         virtual bool isModal() const;
00076         virtual bool isShadeable() const;
00077         virtual bool isShade() const;
00078         virtual bool isSetShade() const;
00079         virtual bool keepAbove() const;
00080         virtual bool keepBelow() const;
00081         virtual bool isMovable() const;
00082         virtual bool isResizable() const;
00083         virtual NET::WindowType windowType( unsigned long supported_types ) const;
00084     virtual QIconSet icon() const;
00085     virtual QString caption() const;
00086     virtual void processMousePressEvent( QMouseEvent* );
00087     virtual void showWindowMenu( const QRect &);
00088     virtual void showWindowMenu( QPoint );
00089     virtual void performWindowOperation( WindowOperation );
00090         virtual void setMask( const QRegion&, int );
00091         virtual bool isPreview() const;
00092         virtual QRect geometry() const;
00093         virtual QRect iconGeometry() const;
00094         virtual QRegion unobscuredRegion( const QRegion& r ) const;
00095         virtual QWidget* workspaceWidget() const;
00096         virtual WId windowId() const;
00097     virtual void closeWindow();
00098     virtual void maximize( MaximizeMode mode );
00099     virtual void minimize();
00100         virtual void showContextHelp();
00101         virtual void setDesktop( int desktop );
00102         virtual void titlebarDblClickOperation();
00103         virtual void setShade( bool set );
00104         virtual void setKeepAbove( bool );
00105         virtual void setKeepBelow( bool );
00106         virtual int currentDesktop() const;
00107         virtual QWidget* initialParentWidget() const;
00108         virtual Qt::WFlags initialWFlags() const;
00109         virtual void helperShowHide( bool show );
00110         virtual void grabXServer( bool grab );
00111     private:
00112         KDecorationPreview* preview;
00113         bool active;
00114     };
00115 
00116 class KDecorationPreviewOptions
00117     : public KDecorationOptions
00118     {
00119     public:
00120         KDecorationPreviewOptions();
00121         virtual ~KDecorationPreviewOptions();
00122         virtual unsigned long updateSettings();
00123 
00124         void setCustomBorderSize(BorderSize size);
00125         void setCustomTitleButtonsEnabled(bool enabled);
00126         void setCustomTitleButtons(const QString &left, const QString &right);
00127 
00128     private:
00129         BorderSize customBorderSize;
00130         bool customButtonsChanged;
00131         bool customButtons;
00132         QString customTitleButtonsLeft;
00133         QString customTitleButtonsRight;
00134     };
00135 
00136 class KDecorationPreviewPlugins
00137     : public KDecorationPlugins
00138     {
00139     public:
00140         KDecorationPreviewPlugins( KConfig* cfg );
00141         virtual bool provides( Requirement );
00142     };
00143 
00144 inline KDecorationPreviewPlugins::KDecorationPreviewPlugins( KConfig* cfg )
00145     : KDecorationPlugins( cfg )
00146     {
00147     }
00148 
00149 #endif
KDE Logo
This file is part of the documentation for kwin Library Version 3.4.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jun 14 01:54:13 2006 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003