group.h
00001 /***************************************************************** 00002 KWin - the KDE window manager 00003 This file is part of the KDE project. 00004 00005 Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org> 00006 Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org> 00007 00008 You can Freely distribute this program under the GNU General Public 00009 License. See the file "COPYING" for the exact licensing terms. 00010 ******************************************************************/ 00011 00012 #ifndef KWIN_GROUP_H 00013 #define KWIN_GROUP_H 00014 00015 #include "utils.h" 00016 #include <X11/X.h> 00017 #include <netwm.h> 00018 00019 namespace KWinInternal 00020 { 00021 00022 class Client; 00023 class Workspace; 00024 00025 class Group 00026 { 00027 public: 00028 Group( Window leader, Workspace* workspace ); 00029 ~Group(); 00030 Window leader() const; 00031 const Client* leaderClient() const; 00032 Client* leaderClient(); 00033 const ClientList& members() const; 00034 QPixmap icon() const; 00035 QPixmap miniIcon() const; 00036 void addMember( Client* member ); 00037 void removeMember( Client* member ); 00038 void gotLeader( Client* leader ); 00039 void lostLeader(); 00040 Workspace* workspace(); 00041 bool groupEvent( XEvent* e ); 00042 void updateUserTime( Time time = CurrentTime ); 00043 Time userTime() const; 00044 private: 00045 void getIcons(); 00046 void startupIdChanged(); 00047 ClientList _members; 00048 Client* leader_client; 00049 Window leader_wid; 00050 Workspace* _workspace; 00051 NETWinInfo* leader_info; 00052 Time user_time; 00053 }; 00054 00055 inline Window Group::leader() const 00056 { 00057 return leader_wid; 00058 } 00059 00060 inline const Client* Group::leaderClient() const 00061 { 00062 return leader_client; 00063 } 00064 00065 inline Client* Group::leaderClient() 00066 { 00067 return leader_client; 00068 } 00069 00070 inline const ClientList& Group::members() const 00071 { 00072 return _members; 00073 } 00074 00075 inline Workspace* Group::workspace() 00076 { 00077 return _workspace; 00078 } 00079 00080 inline Time Group::userTime() const 00081 { 00082 return user_time; 00083 } 00084 00085 } // namespace 00086 00087 #endif