KWin
notifications.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "notifications.h"
00023 #include <knotification.h>
00024
00025 #include "client.h"
00026
00027 namespace KWin
00028 {
00029
00030 QString Notify::eventToName( Event e )
00031 {
00032 QString event;
00033 switch ( e )
00034 {
00035 case Activate:
00036 event = "activate";
00037 break;
00038 case Close:
00039 event = "close";
00040 break;
00041 case Minimize:
00042 event = "minimize";
00043 break;
00044 case UnMinimize:
00045 event = "unminimize";
00046 break;
00047 case Maximize:
00048 event = "maximize";
00049 break;
00050 case UnMaximize:
00051 event = "unmaximize";
00052 break;
00053 case OnAllDesktops:
00054 event = "on_all_desktops";
00055 break;
00056 case NotOnAllDesktops:
00057 event = "not_on_all_desktops";
00058 break;
00059 case New:
00060 event = "new";
00061 break;
00062 case Delete:
00063 event = "delete";
00064 break;
00065 case TransNew:
00066 event = "transnew";
00067 break;
00068 case TransDelete:
00069 event = "transdelete";
00070 break;
00071 case ShadeUp:
00072 event = "shadeup";
00073 break;
00074 case ShadeDown:
00075 event = "shadedown";
00076 break;
00077 case MoveStart:
00078 event = "movestart";
00079 break;
00080 case MoveEnd:
00081 event = "moveend";
00082 break;
00083 case ResizeStart:
00084 event = "resizestart";
00085 break;
00086 case ResizeEnd:
00087 event = "resizeend";
00088 break;
00089 case DemandAttentionCurrent:
00090 event = "demandsattentioncurrent";
00091 break;
00092 case DemandAttentionOther:
00093 event = "demandsattentionother";
00094 break;
00095 default:
00096 if ((e > DesktopChange) && (e <= DesktopChange+20))
00097 {
00098 event = QString("desktop%1").arg(e-DesktopChange);
00099 }
00100 break;
00101 }
00102 return event;
00103 }
00104
00105 static bool forgetIt = false;
00106 QList< Notify::EventData > Notify::pending_events;
00107
00108 bool Notify::raise( Event e, const QString& message, Client* c )
00109 {
00110 if ( forgetIt )
00111 return false;
00112
00113 QString event = eventToName( e );
00114 if ( event.isNull() )
00115 return false;
00116
00117
00118
00119
00120
00121 if( grabbedXServer())
00122 {
00123 EventData data;
00124 data.event = event;
00125 data.message = message;
00126 data.window = c ? c->window() : 0;
00127 pending_events.append( data );
00128 return true;
00129 }
00130
00131
00132 return KNotification::event( event, message );
00133 }
00134
00135 void Notify::sendPendingEvents()
00136 {
00137 while( !pending_events.isEmpty())
00138 {
00139 EventData data = pending_events.first();
00140 pending_events.pop_front();
00141 if( !forgetIt )
00142 KNotification::event( data.event, data.message );
00143 }
00144 }
00145
00146 }