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 static bool forgetIt = false;
00031 QList< Notify::EventData > Notify::pending_events;
00032
00033 bool Notify::raise( Event e, const QString& message, Client* c )
00034 {
00035 if ( forgetIt )
00036 return false;
00037
00038 QString event;
00039 KNotification::NotificationFlags flags = KNotification::CloseOnTimeout;
00040 switch ( e )
00041 {
00042 case Activate:
00043 event = "activate";
00044 break;
00045 case Close:
00046 event = "close";
00047 break;
00048 case Minimize:
00049 event = "minimize";
00050 break;
00051 case UnMinimize:
00052 event = "unminimize";
00053 break;
00054 case Maximize:
00055 event = "maximize";
00056 break;
00057 case UnMaximize:
00058 event = "unmaximize";
00059 break;
00060 case OnAllDesktops:
00061 event = "on_all_desktops";
00062 break;
00063 case NotOnAllDesktops:
00064 event = "not_on_all_desktops";
00065 break;
00066 case New:
00067 event = "new";
00068 break;
00069 case Delete:
00070 event = "delete";
00071 break;
00072 case TransNew:
00073 event = "transnew";
00074 break;
00075 case TransDelete:
00076 event = "transdelete";
00077 break;
00078 case ShadeUp:
00079 event = "shadeup";
00080 break;
00081 case ShadeDown:
00082 event = "shadedown";
00083 break;
00084 case MoveStart:
00085 event = "movestart";
00086 break;
00087 case MoveEnd:
00088 event = "moveend";
00089 break;
00090 case ResizeStart:
00091 event = "resizestart";
00092 break;
00093 case ResizeEnd:
00094 event = "resizeend";
00095 break;
00096 case DemandAttentionCurrent:
00097 event = "demandsattentioncurrent";
00098 break;
00099 case DemandAttentionOther:
00100 event = "demandsattentionother";
00101 break;
00102 case CompositingSlow:
00103 event = "compositingslow";
00104 flags = KNotification::Persistent;
00105 break;
00106 default:
00107 if ((e > DesktopChange) && (e <= DesktopChange+20))
00108 {
00109 event = QString("desktop%1").arg(e-DesktopChange);
00110 }
00111 break;
00112 }
00113 if ( event.isNull() )
00114 return false;
00115
00116
00117
00118
00119
00120 if( grabbedXServer())
00121 {
00122 EventData data;
00123 data.event = event;
00124 data.message = message;
00125 data.window = c ? c->window() : 0;
00126 data.flags = flags;
00127 pending_events.append( data );
00128 return true;
00129 }
00130
00131
00132 return KNotification::event( event, message, QPixmap(), NULL , flags );
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, QPixmap(), NULL , data.flags );
00143 }
00144 }
00145
00146 }