From 4343360ab75ba4c1df2594d913fb1470ab270120 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Wed, 24 Sep 2008 16:46:55 +1200 Subject: [PATCH] Add logo support to notifications. --- lib/Display/Notifications.pm | 18 +++++++++++++++--- lib/Display/Plugins/Asterisk.pm | 6 +++++- lib/Display/Plugins/MPD.pm | 5 ++++- share/Asterisk.png | Bin 0 -> 8031 bytes share/MPD.png | Bin 0 -> 10339 bytes 5 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 share/Asterisk.png create mode 100644 share/MPD.png diff --git a/lib/Display/Notifications.pm b/lib/Display/Notifications.pm index 967dac9..b4bb858 100644 --- a/lib/Display/Notifications.pm +++ b/lib/Display/Notifications.pm @@ -25,7 +25,7 @@ sub new { } sub add { - my ($self, $kernel, $notification) = @_[OBJECT, KERNEL, ARG0]; + my ($self, $kernel, $notification, $logo) = @_[OBJECT, KERNEL, ARG0, ARG1]; my $block = Clutter::Group->new(); $block->set_opacity(0); @@ -42,8 +42,20 @@ sub add { $bg->set_position(10, $self->{'stage'}->get_height() - 10); $notification->set_anchor_point(1, $notification->get_height()); - $notification->set_position(20, $self->{'stage'}->get_height() - 20); - $notification->set_width($bg->get_width() - 20); + + if (defined $logo) { + $block->add($logo); + $logo->set('keep-aspect-ratio' => 1); + $logo->set('sync-size' => 1); + $logo->set_height($notification->get_height()); + + $logo->set_position(20, $self->{'stage'}->get_height() - $bg->get_height - 20); + $notification->set_width($bg->get_width() - $logo->get_width() - 20 - 20); + $notification->set_position(20 + $logo->get_width() + 20, $self->{'stage'}->get_height() - 20); + } else { + $notification->set_position(20, $self->{'stage'}->get_height() - 20); + $notification->set_width($bg->get_width() - 20); + } my $expire = time() + $delay; diff --git a/lib/Display/Plugins/Asterisk.pm b/lib/Display/Plugins/Asterisk.pm index 04e920c..42733aa 100644 --- a/lib/Display/Plugins/Asterisk.pm +++ b/lib/Display/Plugins/Asterisk.pm @@ -7,6 +7,8 @@ use Carp; use POE qw( Component::Client::Asterisk::Manager ); use Data::Dumper; +use Clutter; +use FindBin qw/$Bin/; sub new { my $proto = shift; @@ -16,6 +18,8 @@ sub new { bless ($self, $class); + $self->{'logo'} = Clutter::Texture->new("$Bin/share/Asterisk.png"); + $self->{'kernel'}->state('asterisk_delayed_start', $self, 'delayed_start'); POE::Component::Client::Asterisk::Manager->new( @@ -104,7 +108,7 @@ sub dial { $text->set_color(Clutter::Color->parse('White')); $text->set_ellipsize('end'); - $kernel->post('display', 'notifications_add', $text); + $kernel->post('display', 'notifications_add', $text, $self->{'logo'}); } diff --git a/lib/Display/Plugins/MPD.pm b/lib/Display/Plugins/MPD.pm index 8d81fe9..93a2279 100644 --- a/lib/Display/Plugins/MPD.pm +++ b/lib/Display/Plugins/MPD.pm @@ -5,6 +5,7 @@ use Audio::MPD; use POSIX qw/strftime/; use POE::Session; use base ('Display::Plugin'); +use FindBin qw/$Bin/; use strict; my $delay = 5; @@ -40,7 +41,7 @@ sub display { $self->{'file'} = $current->file(); - $kernel->yield('notifications_add', $self->{'status'}); + $kernel->yield('notifications_add', $self->{'status'}, $self->{'logo'}); } $self->delay(); @@ -55,6 +56,8 @@ sub init { $self->{'status'}->set_color(Clutter::Color->parse('White')); $self->{'status'}->set_ellipsize('end'); + $self->{'logo'} = Clutter::Texture->new("$Bin/share/MPD.png"); + $self->{'kernel'}->yield('mpd_display'); } diff --git a/share/Asterisk.png b/share/Asterisk.png new file mode 100644 index 0000000000000000000000000000000000000000..fb23d6cb96c175aa6ad6853312270925a57069ca GIT binary patch literal 8031 zcmWkz2RM~&7(Pb!N+LUTgb3M^8D;Oi_s-s1R<_LSRW=#PUKx=+PV(C;*@Pma|KYmi z>iB%;{oeO}?sX!S6<-kIQQ;vF2tpZYNmcl%58rY)Sn%)V(^+l9!Qrd26j+SnoCN35TPft&F8wWdAGZQBZc1IVh%)O^n z2n5}njHI}_SJrN}x4wq^)xX@_?lvcm!P{h#$x_NU`AOs-z2|I5?hE62Surs6LP6mh zk7BH@rFnGWZbu(W+SFHsQ2O@@4$uGjlu+r^w}E>JpxOc+Yv7J8;Zsjwst*)XQ|&}wsJU7bcd0k zby|qI>d_tKMrO?p#4I8*g!URkbm}Y_2D!e*m+$a@ywr7TXdbSumR47vNl2h;XlPj1>%z^5A_}EOaq#iY z{#{+h7AeWeta^HCE;U}O%5&pT)}C}i^0I4ys+bhp0zd-BuI4KoZ2wgi43F~5A_>z_nh zdz9t3`hBljXjF(sz@CUCh@kd}{sdbUvtdGeAVK`u_ZCkMadB}P5x?*C)N~Ee%VucL zW9|fZFB`9aO+h?8TTA+R;-g`^74rEa!)WpJa20iVv@z=Xdq?Mq$Bx(Jh&CHJ9zMP} z{^SpNyOnYtLi&zhk9TJqn4Ubz$jYLr&@A7!Al}pzRmNFHi$Q1VZg@G{*W|i^Lrlyh zDA+VJv`}wH!N|xcohT_UPk_kecXUwC_1IsC{qTXK2E#1#@VUaX@w0pE`i-3>DuwEo zl_=Yk!HGv!0tq;n&!wbp($WssS_~q*_L?@-HB>2Jqs+NXxYBJOQ!jl8yktcP`yAgD z5upour1y!Z?3s;?&D)9xe~~9P*DKvn%(?%REz9gnob!I$pIWmoM2KdO-Lix^AKWie z*=y_THCCf^t!-`T0?wvw{Qb4^?(V#NnUy2kS|1G8``_G0^z`+S-n<#CS-##GjFFt2 z%=4YHWqxG5@I@(~#w{AExj9c;vN&_vd^vTBV;|w(-d_DSpW8u-*-u!I4e`tOU&N{J zj+UwwuWW2+G1YwD39m>!JKDHE$Q2wMEcyI-0m?QqF0OCcsoH(}8xLphCBZTM zLPyj7q&3a?;T_Am^qcpeS9|R0BH;e{`T2MQl@^U81^i==1q9y0`_wqhKM5sydNQTv zKEWS8gD?ubu)T=pNT*ykhJLNChmG*7Ag^iFLFSG7kTH}|>~*4C1Wii(b8 z31Wz;t0$M|-<`Lu$tK)Ll5z*7zyS%+E7ePdOaCoTl zh_X^s@56eXNjKKV99_JT+Xug09m_v8m_`i7QSW&V^XZS4hBQXc@5P8`R$~4d(+}gg5iZ-LDUwfRalRWu)}X*M?_%rWyZofT$Vb~e2#zS$FZoWs2~~);UHcG1;a&kGcg0^D>=S< z49v{^v5JwgJXqw>VHX#Eh`-01g)qzG?J2%d6S!Suf$}JE7{!>Q&aoe{m;KQIOdk&kqu=FQ3So9 z^9}_K^7*|pVBk65d%QVmSATReZNzOocDJ=PtJxd)TRxrZJ$W74w+fwZAX-81Uq}=R zh3M(&$s4x@olzTg#vlGn7Sz)t`Fm$3BrS~sAl5-GZgBV}{NQXO7h~*$ktm9$1 zTT?9I1e6lbpJOpFFeIm?C1qsjM)Qe^=HgSZUo!>~y+{QYKNnYGUfx}#%;(8TH3mmP z5NDB2Wtl|IbouYQ9^pi^QC-H$HpvHeW+rtr0vD*Qmz_Bq#6d3c-dGi=pO^GwBXL{E_K+FZ3=WWAARx>X-OBzcZI_m3k3K z8U1FrNWhV*va*0RsEDzft}@}F zYVtedQY(@-nW?qF#KbhN(e_$T(egU%rKr)ZwDmKLoKec;i(MZ~D`)qEF}Z#iV*R0S zdIjBTh`)dKM+>B)IqwhV*iBQ}&-~LvK!|+zb|4H@}chk8>XH0DD z$^2*7DTb*Q59Hqlf&S!2(805z&ZHF5xx&EhfUvCeMjsv?c8!h_hjayXbcllQIo_Mk z1ezGHx6>NQ5th@}&ze25y~o59vD_Vz^yUqkK!>bUbC<$ry*?*~Q1V84hqt~RXTy$j z_H%#d_Wmw82?zk2AQF)#HQILsobt+&L@y4yb^qwMdfjX@R675?3-szH7r~V2{YoA$(WFQ%cPL3W?C(XJ+x3GK?D#bf<^zXN;8v*SG5XWX`) zPp8>)=X)?rKEMUM2?nRf&UdVRTtY&r;>kB@XD4{1}=0_xo&h0GEV`n|cPp-lex-e`)X%*<$2_oXO6uNhbRH5voY295d$ z2h}ue|Lo1%^?K;vY0qc0T&5L^_`N$@t{7Qf`t9wKx&n=808P?>q?lOHUzSDr?CZyZ zLptiCcARSdnJ zWi?*(fuLYIs$7fPc}0@NG6A1~twC=y90i@y;_wGa15QKo^44qKLCezY2Xm=iZ+jaihV1t3YfAW5z)clP zBj^$eWRaAU69)(eTlVzwc(UFa9}lm8bhH?3;I+&b=LTee;l&uMvr@XaxPT-ROU<7M zTn5WecD8R}8%%jL4zAkIKRftRJOr!shmz|%>a0!9psg)ia~;d?)g}&w{t7_Q69AAR z`SgOEB#ZQ4zg(_PJ_I`dT9ZjkN}6eOzMqqm^YqW0>$U2F;-&1Hu0RR`m4j z41oT^&5Z{fbkU1=x)>^6+4|w~va)JzHi!%`MDpNZh@T!Hz>E!-_x1KNgc?I^@dIvh z+nbxwpmhkcB-h1bCJ&bySoos4(Jq3x)6K z=m@a}RW0f5-Q+SzT+3z@{)5|(OMdts+=SwEBOGDC)445z>tz~}^yswyKNHxoE12wmLAB}CgT|*221J(c~(EO`=XR#x9IFr9F@L#}Q z>yaXeZCv-VSR!&|b+tyDZA$?2E!v0ebL!-z;Wr15gJ4=!sXP8%ouh&jU7Zc4O9>pM zvw?ER+4UjN5Lhs71~`5ivfd$@giS?(CW8U+pqrGJy6WLCYKnLt;N;F*-(yf z%Sde;giB8EU*;2&lio|g*a;Ro3ZcwfJ@1(}?=OwR=IGDbB+{~nTHl!4US7_ZJp$~$ zL6*uK?qz7hgCj&lMBd6jC@3u4{#cH7J=S`TZ5pg1m3O(hlfKaT#t>5Tje*YrGan={~7xHBaOqr~#tk=cimx1A7jU+;_L0N*X z;m|fCd*-x-?@mMr8R&yObG)Fv!AA`L1 zYeifzW!y)=&XR@WoW`9&qoVNYmpY*8DbDeUl8Po@-rbD_4_){o z-b0SF(R3_Nd}pC8^BQ4|CU&gcLRD!m`#Vk7b25g)A8_j9EZ>O1#33T;v#lqkr;k@G zwo~1FreJPmW!5lzcy!cl&4aF(`RM_$gIcko6gV@boE;B^a#We6F$5s6LwU8ei6D%y z$X8v)dGPcOyigN4pB|X(wVyi>(LI&EmeDW`gN1BJsdNFSCa+$-Vt)9rpri!HiOX*^ zM>s0%lSb;g8eyBG8qyDEX&M9v^_%9gsbsVp{~YsF%8IXH+JFy~u5KS+7*{>LjJ zAps)|p|XXM0u}}q|4!_4%}U+gsZuqK4XH@~M)MI3FK_QRIXNTnk|5Z-v$Hc06Uf=u zo((Gmt!_r%%S+%{IDyK^d9(XA0`3QSZck_{^%{Oa{(1VV|NiOuIk($SWp=|> zX$uR+>ppIc$>~aK}O~We17+RrJY&x%? zp&|M9%ins}$@0GqLqkJQ4rrbfpykHt$N5(X4D(}XV*h5jCfKqC!9&RnOx^!|i4ZU;V2-0RnH&S_gH)@yH(V;9YEgeedjsQylKH&@^YW3_c4#TyS!Rirw z#+0#QX1h)r+02ybSC{7vURCSx7HCiuE3?WQ{OB$bfRqU_N3(74;J^v8>d{9)OXokMKyt?(aQqInguLDZY z>zhG!Vq|%cG{7E-sgzQi>#$d#q-m|mx^Fxs8nHp*byL@-P~%GlLbp^N_Uvox9W7we zOb~f)s2g;re+*~7P*x`K_V$*Pl6sS#J|MK;s%AywKb*k}(K`}s50}@0F=){U9J8|3 zOD|nrs-y=Brf0v_<#R<0F3}AZ7a5h^C%aU;6f~lcJ&Qq_;N8FrI79CcN^%Ttt!A`@ z0&LQatV4@1aann(F2MHG*QpFA0UGE8z>AxwvKz?4;DR;1FDR(${?PV2Lzh+qZa!}P4hRKq`*m<|eETFz#6JTn?9biZDAT))i9ekLAfnxc z!t)LR)<~}CC}3vlpo;WAjiIiAB&H)MM-D&ZbCgWdrWk7|D<{~AYVodTZ(B4XdpL2) zzmA}Zua+t9HE&lHJuOrOrv;{tM55$3Z=>8PfT77_mkOF35Ksav46Kk~kKO;EiH(JR z2TDjbqjvpAkL*euW#5cLi*ZfBGBPq{1J=-AQ^kUSD66P+@h|#?KyGd5xUBREw6uJ% zMDyLC4F4O?dfT>nBT`ZcjUFSIYb0+%_|IJTuk}H+jiAkpuc})+`tJwa<65^{z1RPP zs^E=9`qGjyWPdnbM3#`J;_jDF+*|zv0}LV}hVJ&)&ka?Fez7wNr2cm@N!r!M!4GSw zVzHog^z-vOI62Xv&47w7vbvg6F-t&PL*sTpKtMeoRD$qeZ{EDI&H421on$3)%$g_4 zR&b5V=OsB%Ofae6!@GD{UBSNlZ4{ZqMY^|76fo?GzyKy7Wlk^+XiFO#1p@w^FP6(I z-_c5ngdGB_59LQ;j@Am-i3#Yn!dCIh&26_Q;8}{Y91`80(GsK?w+CS&D9g|;!O+jN z`Fci^61aC6b2^O*|AGEzDrOX3M{R?pGyd;mCdc!<9%HhO&M<~YuM~^bDw!B{Xl~sq zR6H(tPtZ}-pz)qDBn=uDC~C`a(-IOo>HnR+ILX1lCUUB;7(Q}Y3$-|2?+>fgxeo^RV||5CwcLKBMS zxp}o&oU7gH%cycf!+qqMNi`nVrI*j+5W~ zkrzG(IIY2zyNkkxB9~l&2-vd|WkMW%$0iIRlS^b}xT?>;Wf;o_wZt>Z^aYtwX&odefsN8|t?EgSB== zr88TYV)u;`5R3-?1mE$7;7`n<10`H&Jzb5TS^azfg(sa0?(d7@&(=Ju;GYJ}?}>`i zgSV28Np${IJTr#aVq>OcU&*2xXJ#&JcvXFHkb1nX6LFUAHW$$freil0HHzkfS?m78v@$xI-F5Jp1+O@E{=U#(PcrrITx2ySSdg_y3(8HyF&iHw6 zOj?|({t%Ac7E4{{+N#z@GKAxwmLsMM$Zj2^vJEyh6g>M!c#xL2)a+A2QjK`M*0*(r z{u9~tf=+pJ>#LC#)2u^p@$bc2T%FWI64S7tFZuzP206&*Tx_v19AD#Upn|;-|d#66iHmh&`H(PG(I)LIuV^u2z~pgi*@d;o;E($ z+Q0!Z<-!|_8EyLcf6AhBS82CoUW=m_p&10-?ZnuSuTZ7rs*-a%+DN+~zMwBMpQ0+b TxgQK4h9hL86eX)9j9>i^;KIfv literal 0 HcmV?d00001 diff --git a/share/MPD.png b/share/MPD.png new file mode 100644 index 0000000000000000000000000000000000000000..7b50fce812479ec8c793d19207b7b6a58153315f GIT binary patch literal 10339 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