rev 8018 - in branches/kde4/packages/kdebase-workspace/debian: . img patches

Armin Berres trigger-guest at alioth.debian.org
Wed Nov 21 19:32:05 UTC 2007


Author: trigger-guest
Date: 2007-11-21 19:32:05 +0000 (Wed, 21 Nov 2007)
New Revision: 8018

Added:
   branches/kde4/packages/kdebase-workspace/debian/img/
   branches/kde4/packages/kdebase-workspace/debian/img/Preview_full.png.uu
   branches/kde4/packages/kdebase-workspace/debian/img/Preview_small.png.uu
   branches/kde4/packages/kdebase-workspace/debian/patches/01_kdebase-workspace_branch_r739381.diff
Modified:
   branches/kde4/packages/kdebase-workspace/debian/changelog
   branches/kde4/packages/kdebase-workspace/debian/control
   branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-bin.install
   branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-data.install
   branches/kde4/packages/kdebase-workspace/debian/kwin.install
   branches/kde4/packages/kdebase-workspace/debian/libplasma-dev.install
   branches/kde4/packages/kdebase-workspace/debian/libplasma1.install
   branches/kde4/packages/kdebase-workspace/debian/patches/series
   branches/kde4/packages/kdebase-workspace/debian/rules
Log:
* Upgrade everything but kdm to r739381.
* build depend on sharutils for uudecoding the new images.


Modified: branches/kde4/packages/kdebase-workspace/debian/changelog
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/changelog	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/changelog	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,10 @@
+kdebase-workspace (4:3.96.0-2) experimental; urgency=low
+
+  * Upgrade everything but kdm to r739381.
+  * build depend on sharutils for uudecoding the new images.
+
+ -- Armin Berres <trigger+debian at space-based.de>  Wed, 21 Nov 2007 20:06:24 +0100
+
 kdebase-workspace (4:3.96.0-1) experimental; urgency=low
 
   * New upstream release.

Modified: branches/kde4/packages/kdebase-workspace/debian/control
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/control	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/control	2007-11-21 19:32:05 UTC (rev 8018)
@@ -8,14 +8,14 @@
  libraw1394-dev, libsensors-dev, libstrigiqtdbusclient-dev (>= 0.5.7), libusb-dev,
  libxkbfile-dev, libxcomposite-dev, libxdamage-dev, libxfixes-dev,
  libxklavier11-dev, libxrandr-dev, libxrender-dev, libxxf86misc-dev,
- network-manager-dev
+ network-manager-dev, sharutils
 Standards-Version: 3.7.2
 
 Package: kdebase-workspace
 Section: kde
 Architecture: all
 Depends:  kdebase-workspace-bin (>= ${binary:Version}), 
- kdebase-workspace-data (>= ${binary:Version}), 
+ kdebase-workspace-data (>= ${binary:Version}),
  klipper (>= ${binary:Version}), ksysguard (>= ${binary:Version}), 
  kwin (>= ${binary:Version}), systemsettings (>= ${binary:Version}),
 Recommends: kdm (>= ${binary:Version})

Added: branches/kde4/packages/kdebase-workspace/debian/img/Preview_full.png.uu
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/img/Preview_full.png.uu	                        (rev 0)
+++ branches/kde4/packages/kdebase-workspace/debian/img/Preview_full.png.uu	2007-11-21 19:32:05 UTC (rev 8018)
@@ -0,0 +1,12 @@
+begin 644 Preview.png
+MB5!.1PT*&@H````-24A$4@```2P```#A"`(```#]'A_\````!F)+1T0`_P#_
+M`/^@O:>3````"7!(67,```L3```+$P$`FIP8````!W1)344'UPL.$3<!K at 29
+M\````0U)1$%4>-KMVCL2`!`,0$$Q[G_E.(&6D>RV*I^GRA@`````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!\),KO,#-=
+M\_?/-"H_U.4*_2.\-1T!B!!$"(@01`B($$0(B!!$"-S58F+&Q`D`````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````$`%$:>5Z7``````````
+8`&AE`W52"1W.<Q=)`````$E%3D2N0F""
+`
+end

Added: branches/kde4/packages/kdebase-workspace/debian/img/Preview_small.png.uu
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/img/Preview_small.png.uu	                        (rev 0)
+++ branches/kde4/packages/kdebase-workspace/debian/img/Preview_small.png.uu	2007-11-21 19:32:05 UTC (rev 8018)
@@ -0,0 +1,1142 @@
+begin 644 Preview.png
+MB5!.1PT*&@H````-24A$4@```2P```#A"`(```#]'A_\````!&=!34$``+&/
+M"_QA!0```#AT15AT4V]F='=A<F4`6%8 at 5F5R<VEO;B`S+C$P82`@4F5V.B`Q
+M,B\R.2\Y-"`H4$Y'('!A=&-H(#$N,BG=%2Y)``#':TE$051XVHQ]6:]ER956
+M3'N?<Z?,FUF9E:XJE^TVM$4W`IZ0A7A!_0`24LNFGUK\+Z1^;`F!U.(1$(A&
+MXL&H6R`A&CPPN<HN5Y5KS.$.9]P[(HCO6VN=N.>6TW;4SGWVCAUSK'FMN.67
+M__ at _N):"]RZTW^*=C][[X%N&)+RQB$-FC8&9U8>(!U1UK6Y%?=]2B>U?+>TU
+MH)F*LJAP_OCB\HWS5\^OKC^_WMZLZVY7][GF at HY2\"D55_%LC>IS#>VEUHQN
+M-+4J$5^JE"_.4LMP->.)G9926IG(>BS$-F,(T1?G0TLI!C;+&59K$SFHZFN[
+MA8K,X.LXIM9M*QA9%2O1,GQ,T0WM4RTMT[6&:WA^O6]57!^6Q[_0VBEM[!5M
+M^H).>I(>`VMQZ4+!Z/V,A8P.(^$$4!7+%#W:P2U at 2L7E$!(&$#SJ^I):^S&A
+M)E<RQO8/F^';?&)H39PMPLEI3*TRYB-+Y+G5-2;6\35QMJV-Z%BF5$P\8;-K
+M<">#;SFMV=+>N&RLY%')U1#;1()O#[I?V`L.0I<&HQ78"&Q'9A2Q:Q&?"#^$
+M(#2*)J)/-1+,0GMQV,K646Q-<FRRP8\O4ZL-H,$ZN2'Y173)N46[O/O1Q]N_
+M^F3'!ELF-JQRV`[M>"YQ"8`$/\AR>1UGY/2J+Y%PDCRSB1"#Q^Q3S+__YAA#
+M'F(:8FG=#16?4JU)MM"A at 8*;]%C0JT,OJ36076N\?2F"2!6`!!B46:%HP6_+
+M)I at 705<?2B;:R$<MT%++)62WSYZI<+B+95Q?;]97F]WMIFSW;C>7/(?J`!/9
+M<Q2<-!(:LF>.N&+[:ZVRW[7.TL4!TCG^ZO&I*$Q7ML'-Q%2(.>@K>6016-F(
+M)^J1%LA3$6PL;);M^/89^;'-,#&WNM+JSMXG-R%_CC'J4$FK"IL2Y`>$$,1\
+M^Q(]/M@:*JX2<+&I-504DWV.K7*H$66`.]RO@%&R@$`]5P%D<P!X`^PC09!D
+MPE40#(*+XAFW\F09QC&DRKVN99I]1>."K2B8<^6F^3GD,`/$9T)@!;I7GST&
+MDES)%15R%BK-*<Y<978_MS8SX8?S%30MR%$B.W/-V]N<`S<"DYR!\+(L&)3!
+M%W`F5K<O1,LRY%A#B1E0D5IC18&E=?#IB]T;EXM%<I59>6J#KZ/WV;M<W>^_
+M,[S_Q?1R-U67)M+-UIF0U#DK#,C*30`Q_20T/`#K.112E at 1P`HW>^QR#F[+[
+M[Q_-O_OF$$)9I+@(\YCBX,A?:AU)%&+U0R>^H;)94(&3?_3O*Q>@>,XDZ+)5
+MCP3*CWQ!2'Z2WR!S!M#HU\#"1M4<.T-=$IO+MRZ7R_'%YU>;5ZOI>N4:$LZY
+MEH)I87+)VN%>$N^E'T%,;@H?Y`EM$KC9%V$:=?MG;]W'H(L7<.$A!N6'4I0K
+M6LDV!9D5#2J>-(>T"9S05S03?01,U30$2</@8P+]'SS8[(OKC+JLC@=+A7,!
+M`A_GZZS)=<'H+`<+E'4NEA^L,)OR2+(NG"`(<JV%`_6&#J at +ZAO#D/PPAB2`
+M%-B*(E^E]`/RG("QR(QHEV!*1J2[@R7$',$NB,5`/Z"ZY/CD2=.)L?B/^;8C
+M;+%@[C423I!(@JJ!&U<@L%J(&$-,Q/!023\#04R`LD2, at SL"CA=!:XQD7SZ,
+MBS935PL'D*)?I+IPOF'%B:O__"]?3)5D07',P)S0'05Z/<:H2V5+'5B(;S40
+M at V6HD<0P4FYX>)J>7<0A at K\-(2Q2N_N$P5<P9.`,&DRUY1B8+O_AO[-]1?]5
+MLSWOS,>S\6RE!#9;Y(@DZH6V:WUM(PA+&<X7;[S]^-47-YNKV[FQP?7&3Z7F
+MC-6"Q,15K"*U:=,'D=*2\&,^==%3H(C?--.H+->/N!=K)'DG@`(DN>0F.BN>
+MD`$2-7(A=!'W!,-;/AL8!L!:Y+8%/+F8E/&D%("0B3)J#"^O9_0.SL:QJ23"
+MCH3"&,?K;%_1TNLT/)>4+(39A5L`Z<6 at V[%]TQH."@0!EQQ>2\C>CHL4`N!.
+MR[%S`[[@#0\Q<:*MR)&*KKQ1ZFMY*&#+$@J8"9L17J;DP.@&W\$WT9BB?1"J
+M873''C%2$@T\1<L5M/5([!90CIPTA(2]X%:W*V)X`^E.!`RCRL5I>+#$F`6.
+MAN26T0VUH0%$TS_]P<LLLI3@/'JWQ0_(0B:'8$M;T+L50"9>28:"8`GK":@$
+M_XW'PR+4E.(BM=<ZX.Z`F1Z-)$A4?L`S^*1?_L&_UF7#3<!>MTE?;8^K;:GD
+M$+Y8DEE'*TM^J-`^CD_>>73]?+V]NLVK;=ULZ[2GRB7:0S("Z`S.#'`[$@IJ
+MX69LBEL:^&O?:B`X42R$HI,B=C4(3X at BHDEIXZJ:^,`!Y`*\;C?V)%*1C-,+
+MK4UL,B3V@/W''>U#P,-#"D3"O2V)4"9;0IEC]*6`9+%+F2KY6D^J,W`(KMBJ
+MDL01_KEA]ZJ0MV,1#C*%X$M*IH_XCO!!J;HC]$3>%.B`?<%D('_0AT#R<RDA
+M!HH7NN%H0Q:8F\@:S#("@#>3AH27FWC#C3;:3@['9[DS'=[([H*:!SAUZKTU
+M!K9/NK-,?D at A>0?\Q.9CI<^6X>$Y=#U1#&*"C+_T;NG<Z.J?_9=7+S>96"V#
+MM$E1[7>'T1HZZBOO,B]P8\R]>DUDAB0-[?[LP7B6ZC#X1?2I#2]`-!UB;?>1
+MQ#J1P<7:!O:M?QH.*A1M&5[!G'=>7A^+<AVL(0"$*E,1":,]B4:%>\ZU5(&;
+MBS<?3)MI]>HVWZ[K=NMV>WRMA;R`W*QDMBY]9+1C#?)29$!FN3LD=N=$W8L$
+M*R&)WG.Q?22'!M+ at I[-73H!]4N'CY3-&WBZTAX>,T;$C81R%-#L!O/"`R_:-
+MFQ-C/.!%W>YJH?"I_Y%*<N at R<**M;*70!X%BWB/L1D91 at 59D,L&+JD<;!-^B
+M`T55G1`0"=@V_B@$?!C%P&&B-=EO-;G!<)LZ!:L;-PZ$A2AKT&X9M7$'Z],E
+MQ\"$7MM,T5+FXJ)\R7>M92A`J)%[P:55L%)XX:ISE05P,M=+;&-H(>.ED(BA
+M=93SA623):"2S:5.M4ZSJ`%8KFEN!<IB(5#B<^G2_N#][WU]^5_?V[2L#-AB
+M.S8JS(`%11TL')X3J`0QJA at LH4-FEVL18LKR(1>4O=G.4PW1RSBK77YN]QK:
+M'15A"*HQ?NN/,4L#ZDB89V^F"1A">AU1(7W6,7LEU[QC1+C(Z%#L_,G#-OG5
+M\]O<],#UQDV3RUG-%IXB.5KC4IMQ4Z??D9^]:B925T_5,AM)?(A^*5&?(38*
+M)P\V!=8T2@&4\R0Y7,*"5UG4`^9K8<4CD5RBJ`N$;)-)5$1.0GO)'#;[++0_
+M:$U"7Q&UV1I#MO&!R+G&@!>B65+>0G9T8$Q.-PE:CDA#Y6"X""P528A";"F1
+M>V%`O(]<D`'$`IPBH*ABOW(KSHN87'3U/2&+$A"Q7&U*)L#C5\V0Q)."[1"$
+M)UI"I\W9:"F*6T5M07;5HR/T0ON9PA',ZVR3Z*$M</$HMPJ]1'[FRE!:+U0F
+M!#/WQ,D`LY%;;]W%2:3)@UNM^K`;JO_VF^F'O]S2+DDD`-'QA#9134BGB3FU
+M"`Y795@^9$HJ629ARX(Q9A`,`G783?-ZRF/T1%U at 5A824XGW9*+;[&+ZYA]S
+M#TJ@/%ZXYD%P!#,7D,D4+:BN,D<$;;[+19W6.)40R7BZ/+U8KEZLRNTZK]=^
+MOZ]EPA)A2&0AHGMH6R2)IA3UBS11"JOJ;@A0#QA(F*I4",32HX#;Y6<D@`96
+MPMA^+K at Z)U2:[HW9`FSY8+@$<4*@VLO`O8E)E#!#2P3E[:[X(.#5Z at K59T6\
+MRX#$(.E5)9'$K_RH"I2HISH+9B8/S1:%B$.*?)2W:7>)PR+"7P*1+(6Q9<4X
+MQ/;0?E/+BE$P,`W$5-[0)(@733<BTL)V(\*D3B%&6W8.7U8J".RRAIB7R3P-
+MHVA!5JY;U$-4"*:%^"L<`QPET`0EO)3$JETTKHNMOBH4H(!Q7?SK!N:,34/[
+M0C)GV>V"[MI6Q%JFXI:+`&P%WG@``0TVYV.<]_[CJ[U8*G,0V@#CTHR6L"@R
+M.R*>[P1%8+(*O@:P'C7N\T'D*=+MN2)%:B;9*0P46<92;W;EQ;HDC\D"CBHU
+MX"!3#(%(R]FHP;,00$Q[-05#M6O^'*DT at SM]>'KU^7630OUJX_>[@GE-9`O"
+MH<P:0:>'H4KNOK6>%$Q)@%3_A?6=I@:SP40H2V2=,,84,2E1?L[<^BX:S3HE
+MOK2D)A$""M\UE:[E8HM(XP(4C-RZRQ!!V0!SG$^!RUI4O]!TY`_,U84)>SHG
+MA1]ZCE0PQ)+;@F#4HCVQ*<JB'(PD\0$D,>]%<;=`N:;O+";*HBG%`<K-,,0A
+MIC#D,<6H"K.KEL!)2IXG/TU3GEW.9=J3_=!2E3.P2ER5L70)C;83)R)<S#Y7
+M>"V(EDA4W&:?H\J\[N`JF at 54`/%1]QJ+OL\>23Q[NOZ%8#L3R0/S/-#)@W:J
+M=3"'PLG[$D(K&?.4042B(]:%*>;B0LK^-M<-'+33DP>#K"Z,$@O7>GWLW'>_
+M<[K.^8<?[&*</)LN9I\HI74A.VCRE&FV`T:B?IT at 6SX#C(4Q1PR.=+A.0PTO
+M5WZSGY]<N+$U/?B6,P:?$_R'+U8P32:5[PJQM`%HB`(9A&B\J:C(U#WC:NRR
+M!59W6U<M3IX]7;VX+:MU76WK?EO='GI"J%)3F9$]!S'_^5 at MUWA8QT;3DKE0
+MD+2!@:;X&Y\4RT3.Q)Q`X8H3`>UCHZJ:3*48/R^&HGW\Q<@*205>2-1#E1JD
+MO32M!I7$9`T;&#>(5S$]@TJXGI0/0&'O!B>AW\I@,HWSWB(!J,U&$%J\*II!
+M6(UD93'X at 9+EX$].TO(TG>+N3Q=A'$E)<YVG)G],JU7=[K=77VZ;R?;Z>D-,
+M47(C%H?3\X6/Y>+AXF(YM';&Y2!L-A>_W<S;[;S=S=,NM]9:HIY!GS)5-!DY
+M;GBUB`)B)?QX!`J=*SX'>2^8;;6*:L>!3(+R9E_-WNBB6$O(/`4W,S'2G+%!
+M-=L26&%J[2>?6GYV#=<H78>AEB^O_.UZ^L:S),[A.M5]<K?!/_#N'_S-\Y]_
+MMKG9!VK5%/95/J_9V$VHW#CC/1/]*B&+JY5*/V<K8D`ELTKD!'.%`VZ7_1>W
+M\Y/S%(.@<5D4!!SD0I/U\N__J]H-ZD:??>A`8GX'2UZ%K%^5V%0=GEZ&&*:7
+MZ[Q:N6E;`9+[`VK9Q<39<57,Y<\>E. at H$LK\HUB=`/H.&$BR9XX06#&BVN./
+M^:B!@>EXHD'+Y.Z at G]$1&Z17XT5G/_!)I'&(6&)*<6`^*6A**#,L0'ZWN^Q\
+MYX'=CRI2>-08G8.-GHT+XM'`$XF&481;4?!B&B/96DJ+<+(<3L_CY</A8ND'
+M7ZYNYE<O]U^^V+]XM=W<SO.DXE[.644FFR!O?<IBA0N'C6`B)Q##:#DY75X^
+M6EX^:?>3Y=DX[?-F71IB;S93PTGRRA)HK1%N4)R:$J0[L>2&&`@O=XR-2LID
+M?\4,Z[L- at ML;3/SQ6N"N33)P-ZJN*]<S6(`"?2W)QQHC"D,(Y^H.`S;M=`Q?
+M?Y9`">E</D_NU..:G/MG__;3$H8HC%#0$4Q(*47?2LFGI4T,HPGO0M'HXDF8
+MHWFCP=X#!'Y4:/3MZ45:0#]`*,\8_)?KO`@^J4W($S0[W,[DO]UIT%,O7'2Y
+ME1]J(%5\X[*-<;K>YML;-^]+G5R97.C5[4&6T,0/=A$KGQUIN6&@E]G)`GO-
+MX:`+R%^LE>]>Y"5^TJJE`US01T.\;A]@<<OT,F/%0$8UV4>PP[G4R"W-[2%(
+M1?4D6*2'<%;?,5`#H\R\S3S]3)D:IA)1Q_ at 8/;2Y<0AC2"F!_XUA<3)>7*2'
+ME^F-$]#8+[_<??CA[7L_7C<9'\KL+$8$48EHJ8.N)3I%E1$>9CR7HG$6YGC-
+M\K5,&AU!+=D7Q$-=O]K<7*T__+D$')48TX-'RW>^^>!;OW,^S^[V=K^ZG3&&
+M&2S2DS>*RP**GL8_\%YD-P77;65"\28_53ZR!2J%D.NR6MXBI7V"5U!258#=
+M(I,+,KDB5AQR)+#5D!DOE/RT1SQ.2JW;/-1P6\N+*_?&9?($MBWT")<JA.T_
+M^%N7?_X_KF=J^/[@8)T%%LT,434VI[!7O#FBBL:)$0A:?V:S*C!WPQ([S]4'
+MB)OKG:MCSFV(U`O:WDVI)'$BXZ9+H_Q``U_D8U#:%F353.;4 at 6I5"LGGISZ&
+MN?'`=>.!.]<8($1<?Y]?]KO%I9(#]W@>Y8.6?#05J8MRW%`Z9H.,-TN%NW>9
+MF1`-<Z]4G5HIDH=<2Q!>S7-5#:55'ZY)>07-T+ACJ(9/HL at A&%:1F`8+DS!:
+M$E>:-`BIDG)E at KW$$TJ&(8[+%!=@MB<GXX.+X<%E?'`2=OORP2]6O_A_K]:;
+MG,M\\#00^8%4=58_Q"Q1?89RQ91A0KFY)\3,S'>VH'$PM:@-5S5;JGEWF6?+
+M:TSVBT_;=<,(U3HLQG?>N?CK?^.-!F'7M_/-U6Z><WOF_*G)%9`D:26H.P?V
+M1(&'OEVVPJ;?"'NL`FS4I+WPIDRL#ED]AQIM2'@,N/"6Z?2**82,+X'!JGG*
+M0+12AA0^>YG/+](06@;ZVQ5PT8O at O_/N\OGM_-_>6\V%`A::%S at A3'(-,4;V
+M"6N/.D+)1S*[5X$5KSZ at 7<QG]C56[#6MJU_.4XLBN#CQ(BOL2TZMYO*[?U8I
+M61^'4&5T3V3^JH'D.-,BL!@QO/C:TZFY!-=;/^]RV<*^(".[G[I[_X"_E?HH
+MYZ4*DG9*`8[^5X"UXJ2D*%SQ?OO(Q+"Z*BBPI;A1LTVG6,UC3=0FBUHTAQ+L
+M4NMH.`F:Z).,,<)]U](042?Y:0+09`(N-4!\%7[*64"\5/2#J20L&N*-<;&`
+M]>3\9'S\YO+R(BYB??]GM[_X\+9I97,!0596S7FIU7XN!3^28]-%/ST1UOLF
+MY8(2A>5:TC(6;PN0I>M&/IG&IK`HF19XS?88F4UMU?W>W_G:.V^?K=;EQ8OU
+MM*_3E*76G+,T at 4VR`,-@\H`@48_:"P<FJ;W+/4J`=@]>06%5PS3&#7DIA(+"
+M^$29`BOO*QWH";5AGPKM#L_^M[\Q#EXUF$632$,]=77CPY_\FR]JS3V2#KUT
+MH.H/!*V02&VE&+-9GBYET`D,B9D`WDB9F?I&?>,L+(<VC#!E=[69_>*[_](T
+M(NV-VZ`47_51FJ!-F%!'Q;%%E*3HK:=NN\_7:^B!95?=S'7_E8D.,?UFG at YQ
+M3ON(5S"0C at PBKCG5G#L>>E.].MQ8JH3-P$\92DO&C&A3.-(#)1K$DGXE&U8R
+M%$F at 10T)/BU2&D1EHGF$VB`V&PH_8AMW68B_UG(IQJK[$\<4HDL)FF5*;K$<
+MA^4PCL##RT>GEQ>M[?+3]ZX^_7 at UNX+*-$\63%L,B0%:'!(]3MG,N2U_QNP4
+M%9$H=A90:I3.+N,C_YF4V(UMMLC<[KXR!=P.P;VRL&KAZOHM5P^)[=)L_(WO
+M//G.[SZ<JOOLT_U^-[?DB?E.!%*E(R9D">/S@"FQAT at 8D4*6!4B&>H23:K(R
+MXX0HSBAF4:`#+,#$;2YUM%"\%#/#FR2J!I$T[S[#28F1,'=:W3G"$\)F-_W)
+MG[\`,[=0"%$S at H")#</X0Q7`/&"GJ)NB#:;V"WE'ETM<2ZDUT[8^QD=G\60,
+MI]&]]WSRB[_[+SHX6N)&6TYE)*5)?9IC\$I:2=GWV5.WF]SMMN[78/*$&ZEP
+MW'@'=T-[]83301,Q-<T-!PR4O at 0-[N$>,I49J*=3?6ZF$(I<(=O9-<&>&8S!
+M]F2 at EGAZ)P+.8M)`Y at 2NY2.JT!D7\0QA4F/9-GN:(GR!<PW5')QUPO<2'`;$
+MO3B.Z>QB?/*HO?CW?WKU^:=7&C1;BU$?_$ZM?PM>(^(!9(4M$D&5FQ7ZJE7B
+M))JIA=8;FA6S1Q-UBRBZ_$SA_UC`,0FHTI9ZM#Z*%1K(K_8T4:NEGH?5[V__
+MO6\^?C2N-O/+Y_O]!`..>H***06"<1WP.'1&8V:B$,UN.AZ))N>=Q4-E`0,`
+MEA=S5S+P2(*3$1P)6\?O:4!AB2\=8WKGV?CD(7C>@DV=5;>$^N3^ZOW5#_[7
+MC>P%*A)2R6N-W`?>S&1GV&C1WDAF7J79AD%1PE1+XEQ:SB*%)^=#Z^*3JSD.
+M;_V15V9D.-,Q at Y?%J:%5U17YRK47`$AO/O%3=NM-V6^+VR)3JKX&"0VI at KS8
+MQA/)V(V1`(Z`FR6&,\CE6M/+F`FU*JS),RX.#\1!7HMDBB"JCBLAP`!C3N0(
+M_?@D;]%C"2M>-!`<DB<=<AK.`F)+-SY$H+";:AST!-$PIG&Y&$^'Y<FP/%\V
+M9\#)V7C^</S:LXO+!^GV:O=_?_+%SW[V:G6SJ=0]\IU@`8E;41\*([7(3V at V
+M`50#QY"`C55U=PW^8 at 4N@HC%)=-OG4&G4(G<J]MJ6%QETMQC:1D[H^OES;8<
+MS,#=[5A5?GS@%*B)U<\^O/[@O5>G#Y9OOWT"57GBWA2`"HK)_E@;WNB!R)DH
+M*A<AF at 35XYM2U6[N5=>=?0_()8X>1!G==AE<`*<3Q9.5IJD^:,IA at J`4S2X[
+M^OKLT?B7_V>%41&YBC6GOY3X^6M^.A$3?4<1(R[&!%2LJN1GW7BX2.YV#]B)
+MX>WO=U/&:U.W[1UC$_'^[-2EY%:;O-OYNJL''O@:)!3Q^1@#32CE9T5"ZY:+
+MKAX\Y)I=2,F$@JQZZWPA]ED,W5<U/MSQV2:M5\7%362F2O="]O2<""1ZFJ`3
+M%4)QE(/3Q580:(A,'*-+8QP6PWBR&.EY.VV10V?CZ?GX^/'R\>4R[^:?_O3+
+MCS^\N7ZYS9RP at 3VQPTB?/M<R9\Q[%AR3215/B+X;:)#S7'LJ7$JVKA&R7#9T
+MP;6RW.ZD45)EZ.'%#M&7UZS&OAZK1I)?>$=U`Q%4>?'I[4<_OWKKFP\?/5E*
+M_&<Y6#.DN$5+"<9U?9YW4Q2]=-RAB$!MA8.A,_,LR<#I2##K-[;.R+D1ZN9<
+M'0;`8_'*$P:NW&I7/KV:#"[MERTI>BFHJ#-9*(NZ2;6,"FP2EVM!5U[=,IS5
+M-/NYUA'V\+?^R8'YO#9AU&8(U1#2JM+(,/J'#_S-NNRVM;9KUE5Z#1+BUSK[
+M*A)Z:I\];%V\P(9U0NAL`)W']56J%NYI%]HC_[`QZZ97>=970STI8913K0"X
+M`AUV1$+GXY`T3CX%SP<+6_4>7L2P/%TL3AH2II,3L+ZSL\6CQ\OHW8<_?_7A
+MSU\VTT69[8!TS>C=7%Y'1_NYUO.<*V!7#OJ;^Z`0C2IPKSUF%J"H23:BL7AH
+MP&(OE8<R'ZDKA+C8GJX<D(\+B8%UQM.I7E&GE-X5(8J(HI*AE?1$P"<?O/KR
+MB\V[WWSP\'QL=J8L<:C]Y*[B4@'EZ+X!]5W(]A@%P;B893CGD6&L5-PT!FA&
+M$SSMFK+/ADO5*T/:[,K#LY02514B86J7=W_M:^-__M^W[,(H(P4FW'1J>!`4
+M5R)B7F7I7&Y6%C](A"3<0DW>O]K.+2>E2"0,(GS at 0E?'ETW:NL/$3*([.0\7
+M%^YV5[:;ZK:.&-A%4?\:5*S]M<N!*&TN.BH,Q6M1PR at 3?N39OG(;`)!"KH\B
+M69%9[;):3(=Q]&12BL;%\5BU"Z22-+35Z.4 at 0QQ20([7,S-`0K*^,2U/1C<.
+MIV?+D]/AY/3D\G*,T7WVR?6G'U^_>+[:[V?U!^G17 at V"-I>Z&L'%TY at 9<@\$
+M([3B6;"I)90LF4'XM:``&"6S6`#*(*M1G.29$$E$-GY!2;1JK1M-DS(B+Q6N
+M+>NUYM2)K5^]9ZX&E<,`QF%87'&0>;%JJ'[>3K]\_]7G7]Q^^SN/SL[&S6XN
+M1J>/[1'=2E^-)BFM58U6N);Z^8TE6"(%[QQ#>4:KJU$P,/T&W>1:E<UN]_7T
+M-"(4 at HZ&"F8(B^*SA^-//MIKJ`Z;[`8.I>+5@(B[QD)>C7RXRS#ZX6:R92 at O
+M%3[F,?K;+3 at A("B]_8<UT.UMDL0QKZI?O:H4&Q;NX45=-PQ<.[>M9::"8=+F
+ML9GG;DXQX<]+0YUXW*G2%Y=TML=P%ZMJX^&@C6NJ6FC8?0\);0SWDV9R?X*.
+ME*J at 1&3(X2$?D%K?-')"Y?>,AX[C,(SIY'0<3X9AD5K)L_-T=A)WZ_V'/WM^
+M_6*UW^6^J)'NY5D7T8:&9*$1PLXYDYDG`W+6PQ,ES"9<4O>CDU`O5"](J(Z]
+MJ&(.(9>0K[E81\9O#36/C"[$-//!*JNC2"5M:2B)F`V[:&]ZCS?^8&$63"*-
+M[*9/?G'[\-GYD\?+]2:34W>"SJ[(V8RWZ.YVH#;)IS`_:.>$%?/G>:4&IKR(
+M:?<`LKYH_+%BC$!LVZPP^`$=L`[7X<F#^!<_N<412O5SJ:M74A1KL9"C#N2A
+MR$)0]^M\_G"Z6^(2&>ZQF>I^AG5WRB7&KW]?@FX/<^2%%H\]A$KCNJSVY+%;
+M[?UFZ^NN%`K0)$-?]19XIOYJ5_'*UQ45#544(^6WI\IU-XG4&]+ZPO="W"SR
+M28(QM4`?!DF[-2_#_0H2VKD at TA+BC,3*T4@@ZY<2[*9Q@(EM2(-H@$L$E(WM
+M/857+U:??7R]64U4EW0BYI+K-DAA_.0]8 at PG%G%1LBJ`,($B/PLWP($Y`J_Z
+MXGWQ8%PL9H<N]4YA*>B)'X*;PG>A?D*6AP=X#HDPI8L[3*:&&1TVDZ;I$^S/
+M<E@^!(%JVSZS8QO<!`9Y?_[Q=1C2L[>7FTT%XU;>I:T0%Q6O8X_GD%WO+8>N
+M?P8E&`Q4D!RA+D6&2K2TH[D&5:J5,N(FN1W..H4%E`OUBHZ^;)U_\\'XWD<K
+M\C9VJ,<A0]&#<4&)DC'#.[.W(XVV#%%0ADHI("BXERL. at IRY&6:^IS6/DP'K
+M4;O]E/CCQW!#;#:N;DO=LT0OW_'P]092P\;NK^!6$4X4D?PQ9JJA&(]6B<\%
+M%_+OGG\X,K<(9AXSV]J%X7X783316"XG;WE8`H^)(69@?WA8CA&'AAKKB^-B
+M&(:F_B$TZN6+]6>_?+7?YD"1EL!DG9JDKT$W at DC&GVO&2Q;.)`B8"?5WU;IB
+MJH5I<=07*PO at JV0*8X305J07K0XF+ at LFSGIU.!J:W=4A[L36*@'I3J,2;*^Y
+MR$)?1=DQ>5YQY=C4;$&?K?K-\_54X]MOG?KH]OO2\=V"'_LSMTDSS6##3MBQ
+M\G1I("CO-)^YHC)S3$XD$M`S:>@I?#NT[8NC&Y79X2$5_]9E_(\_O"E"TMF(
+M=!8LFHIKI72`@S`ONBJC+,M"YMNLR4<A[^NI!/%#PJ)')+3T>ISIV2$^>>IG
+M5V]7M;0KUXZ`O9#<#P'AO[[-8X2L]1[R5UD!?+&OI$I'9*+P<DIY%2#TJ?=N
+M&J-V>K=G,CM2)T$_;F00;$P5&(A_;DBN8=TR-<P;%R$E:(C3-+WX]*JY'';;
+M?2X'&:W8R1/>:3\P05.R"`'F52!^=7MO9J$\X[11R:KT,5$>8XU,"1-L,)MY
+MD^CHH29G3\'4CD02.87/BE7',+!+\G;NW8P>=X47XX&R#6!3:K96`SSOI/_,
+M"<%0T6)*CB-.UM>;3SZ\O7QZ\>3Q8K6:;<<Q+W6@,$L[M`,&VH(M9O&&H\3/
+M'F<H"HD at 62&>*D'DT)4<$;DL]F"S+BU.T,6ZL"Z2JQOGO_WVXG_^=%6JFS-7
+MLYCQR8#O$->B`@C'8\#68Q8Y4L5\A,Y=[246C^V\!@F]-VGM6!`%>7_ZV&=7
+M5IN:MZY.U6<,J9\^^$HRA/R5[+'7Z.JBY7>GN2$4M]H(W[&FB at 2EG565*NC,
+M>YFNYII3MT<+%%%\$/6B)X;$-=_*%#TU&_V8*D30Q@*#!&S-F_W-R]MV]T3A
+M8@>MY5!JB/@5;4)MDL6462-0 at J1DZYW-T2]/[I=+9:U"0)4<+62J at U*DH@>V
+MN4Z:S*FF/84N((BQ](![O9 at 8V[TQZP.L]7U4B"8$J2/[."P]4/<B;NA,S9&I
+M$3;&-%]^?I66RR=/EVNXEI6UBF9D"@IR='GZ2!5!C>W8SAIQS0IW!!VS($#%
+MZ-"G,KFI'NC[_&Q(H+=N5/,,RCY:IA_\Z%;QOYKWN3#^SQ13H^1=>I>C(KB3
+MS<<0)3>B.W^U4L]N0(+(`B1\O2#:!39-3Q[CQ/EZ4_?;4K<]3*I7^$I;_?&K
+MS_>M,AT#+767?:^ERV>"DJ4.<#WKKOC:4;'[XD-G@\"82/6/R`EY,I&>\K3^
+MF'!L-]%Y&/0/F.Q>WN8I>Z_UVWV>LZNVQ<!#@*CI@\)[3!`Z^!M(8NVT@\]\
+MQJ,YY5&@''+;.YNE\"F(5W,-;(V\EZ9^5C;4JKXK^R:LLJRM#%\U9MX(9;78
+MV<[1U(W:E7'48S$K)P$C9'VJ.!AT`G,U`6XC[E2$;U^L3QZ>/GX8UQLE*\0I
+M>0AX#JI)X"N2<3L+4/!VPIV#[_Y"+)&2"NP.UP7O1$9S']J48W#;J5R<X$CT
+MZ'6V#77FX/_BQS<=I$19".H*+*H+>`-*SHEC-V\WRAKU at 59\.OCGJRSK8?)&
+M:!$S?VA^0HM(,L9B"."#`'-:-$-2N&%@FF*@^5R^XFGMVKFEUV"@BM'V;K$(
+M'9;U^9Z/^/BU/_<[DV)U/YD6>UU#0G, at 0ALL/);&+W)FGQB(P\_X@/'E7+;[
+M>K5V<R',F4)4H'#/>]%>E7\7P)$87_22D95\8-"B`?)'[O!,"%!EM)/E3P$4
+MW?.LSL`#1A'5V[N2:,`;'K)`KTJ86=11,7I6Y%(N;3FX3+#CYG77J3)TI7==
+M3V/J!,[W+%7'C at _>">"C?0U74=]X/)P>O?EB,SX\?WPYK-;[@Y&C$U,+=C*Q
+M-(@S60<@F at EQOQ993P%EQAL+Z3J$AUAD;`<WKB94?=*JLY,1M'=TD:-,SN^K
+M>_=I^,G[ZU;*V&VG]C(B4<BI&8C6JT*`&H.J##D`JT/X].5<54SM:]:LH]^C
+MGJ2FIJH\)UJ1R/4*_O&C9GJOKV[+'B[!0F7#9(">PFM8W[',2?CH&-A3YX?]
+MH9]_[9SP-8A]W&,P"T-?<I,=HIG0@]G*(C(#YJLP%;`VN/B,EG/QJTTCF'XF
+ML"-%.42GSJ#L]G,)W1HJEB/*@0=[/=&2J]?##7PQ^=!E0BO7:&80&=1!M&.X
+MA\0-5X\\&^&K.BH0/.,RI75KO-(_7H_\INCGON&-<6LTTO,S28MZRFWE)!GE
+M5"N)9-\+=BFT2DBMJHM=29JT';(XYH;:^&%)\8TGR\T6P]<.F!BTK*)@_[.7
+M5;%?=&PE/3U:10,AJ@`/0Y\%R!D/CQS"NFXCUI31ZNM].6]X&/V"=I:!ELRG
+M9^-_^O$-U4H32W/A3Y5-L\7`C:$4^#7S$;HB(8([^60(5]LLIHD8Y<PV)I6Z
+MO46Y&L&W<T+V>[)TR^5\N_%3HU6[`ECQ/8"OXP_INE7FTW$R?IM]KQ>.R['5
+M>WC5/VBFO-A7>^.]IQY??N^(TS$+Y:N%XQZ.<)-^A2+-3G/8,BQ%/L:(H%1&
+ME(4DL$IQ-#KB@(NM0%77,_`USSZEBCJHGLO,C2]]H+4B)SL17;OBB+K($2PE
+M^@GJB'JI5@>@+2H#ULPP#$#IJP=PZ.MS/Q"?-?L==87GW'53A>Z[X&AU#.:2
+MTT_VI`5\EXFT.]]CP`T5JP1D/__X9K$8'EZ>OGJQX=%0D1^X)EEC77V^`Q*Y
+MB&<_4/,*%4D,:[0%1YYJYJ8Q4;X/4-.F>4HQH4B=/984A#:#(>;9S;DT,GN2
+M<*YBY_U(I\F#LW2]*B@". at E*C5R#86P+XVSTY&TIHM;R/(=03I5+/OAR2Y;F
+M2W`R,. at 4.(3SSO>P%)R!+;<R!(U'][$98^K-)JS6N:ZK+I`=>7Q=>LTG:13U
+M3<`P$[,E;MVOEV/K/7'V=7UI.[HZW0Y^ES/)L]E%T1H?]'\6DG/=[7V>'#WF
+M_:]'J^,5R02UTE[S3%@AU"`'Q:HX*]0R)U`KT$6;C%`EB:K4[1(..4L`)Y_)
+M_<S?5[S@:5&WHS:5V;,4YC?*=."0BD'=@5Z-$[*D*GMZQVN/_]3@!3;(7"8V
+MKL8^S2$VL`QI$!?+_!A?22&H=A"-%)*KW5QMS\_&\21(>`-RC?$9L&F&RI2U
+M6#BV=(1O![VSVJ2/)"'NANFJ(2CLJ8>^?9GFIG*E-$#_2#R=N/;NZX_&'[V_
+M.A(@NLJC?:!AR36_?)E+:(G\,+'B:BOKR7($(.'4Z<X9\*CD2D=/B70<XYMO
+MS"]ORNK6U0T=$B84<?Z_M7O#*R^_AS]&GC,SXZ\-)*_WOQD&_I;)9%$*'[H1
+M]PM$8T?SOFZS`B=]]$"(+`B,^GG*,"_,F;8<@'<N<Y6_8@!NF9T`4 at XNB):G
+M*P#8P<W.!^5L?R?/[+1BP#'3C'D7-7"/5AJ3.IB<D'L&I)F+!W/H6,_\S-X/
+MAW'->63GMJUN]1E'X8[VL8H)5%U%8B97YY<Y"&/H6T\,U#<R*8'[+H,4:YEG
+MC'T(=EK&?_3!RZ?O/GATN7AUM2OS\5[W4,@>H9)K"0 at EDB62_"+Z%KD>Q(^2
+M*=4(#6E?16;A(>]$?7#BZ9+L_13J>CMOYW$Q\0]F$UY.G/N=IXMZI$^I#=@.
+M1I)I\QQZHO8IT>J!7M!A\..`Y6G:H&==&WS-,S<J^#B^\_U6W$NJ)HB*DW$8
+M%F^].:_6]>;6Y75U%JQAHN!OCX&,]^O1KJ;UW2]9?[,YYUCE>]TPC+SVND?^
+M*M4&C1.*@A+P*"?NYMGE;#Z:?A)<PQL-PF+T)L]J&$&>JMH"!>5$:)0(S$QU
+MT?1`@7L-N=9UL;,@:J<!;F$,M)]J6'8_?,3J52^SW"B;M<6F-GC@<\Q1)+%T
+M[]5BUS%C%<EY$@"$1&@Z<CA58*`Z`'I;!U\8Z9RV']@D_8^2NO&`F&V'9S1&
+M?+N:6 at Q@C&&:BBBS=['N7NPOAFIQ249B/.<KF('6CP!!*FN;TKB/E:2256+$
+M29GE$NP\>L21"KG^X4?;S2YWS[+T)9.0T!+A_#8SY8!L?TS^=EOV<PU`M-RE
+M,G-JQO3N'ZE.:?_?!H'1&H?EU[^V;QCX:E7S;2E[,PP8Z/_6;+"^!EM_0_7?
+M(-QVU8X3.7[5Q;9G+HMR.H.7HABHTJ6I4GM79O5CF1%"<8_MV:%4=&/_<QA_
+MB/PLN=B!@XP:%J+8A\?Z>#O(C:A1B*M9F5NY0]5+)E)YVC,52QW*HI#'HVJ,
+MQX&@QYY1FR1'W8/][_MN%:6B5[@-IAEZM2]*E="QP#-9^QQ,!T'F":`2&4+W
+M8ZBP2:SNT39,G'-U[>37?BZJZ>N/[T(E+XOJ*:+5\%>!D^X.*9#K78-%54Q1
+M%.(+3.)2"!P22]A\AI!O&"`\>+>M;@C_G[9O:9+D1M(+."*K.3,<CJTTTMI*
+MU&HU_TA'_5]==)693)<]Z#"[G&&SR7Y796;`75.?^Y>>0`:8U2T3F-:,0B`B
+M\/+W`_K/_WK"9 at J[(]<39E%',EZ'FN8J``%<R?+NL47<4Q6&&:'GN%_7[__K
+MA?H5DD0KY7?_]/W3IT_Z]M-R_JCM9$NY1P-I;?=1=@Z9=R$0[[P/@3+0S[&]
+ME.O[-MH)(Y^>EB$=E)LJSF;GV(>1Z\D&MX%0'4>5Y]B+9?`]HIL&+K2K$$DF
+M*:<I+[*_@>@Q]AW1$*)&M7F#GW=#- at H7XJEN@0T_0-F-?@&`Z5CD>UD$O>HL
+M0N):.PE$(FB<L^<0&+M=!)8$<+8^'\XTD)R"*$I;+#D%A,8;`WTYO1E]3WG#
+M at 1.=8ZNX!+1OQW/]YN%OD2CG<[,BH8=,#CQ`D_!F-%K0GUL=/!2?+;A+52XC
+M<VFF"#/3\TC7.(^PBGS[.Y$JS[$.:WDPVY;R_7</__U_?;1E<]H+&";3$_[D
+MN(-^"GD'P?V?W[6M+>OJB``<5Z$C.<CXZ at IZI@VH(*[UV__R_:<W[_67=TM[
+MW-IQ2$@R+ZGJ;,6XN^</W:>!Q.9C782:)1HG<9\3X>%T1H/4JY at U&HFM7)]V
+M"`RI['Y=(H^2&H1GV4Q+D\"E/$A&50KB%?"=#K,$%"WU8,XFIB3&UI>4[LJ,
+M%$7C+WK\`WJ1.CZII9')!(!G!B#NR_RZ-?=#M[#1.?;&!8M/K/>M5KFHBD3P
+M"28GE'C0*B>6VG+/ET$*6WK65^F(;[`;DD![;SWHUM4^[_[UPW?_X??UL.CQ
+MN<^M-:XO,0X^D5D5<:?6JMI"LQA;G@&!V_-P2`9+K2F'FR&'=RFR+N=6I>G[
+M3WI8ZW&USTOYG98#F'%`_!HHH_-H<50<KY-:%'`/854>JIVW9\A[>M2'5\]#
+MWQ85U\TZVI0.`DN!G^3O__0?'S]]MO?O2WM4/7:)[^Z)@EKB5Q?W.K$7,Z)<
+MR&E>#.$%-(H1`9G-)DQOYOQFC>)ODUA.12XS([.86#;`8'%JU5#)%-W(;-A:
+M at TL+#'?*8/>VE.:9F!O\LIOJ9G&-';,U42O/DF=;\$C!#R3ON?+Y/7C)TK(G
+M5K0M3<*3I"0U(-TC9ADS2G+3&N`<-WS^7E!4==2H80<3LCJT##HW<9"*O<X=
+M%/$D$2`"$X1S$RC,('!Z.C\<5J/JR!_':F"QB9K,"_/N<#I;U&K9SN[CYU-K
+M:&,;[*GZ7'QRQ<S.^LR`G)J^_W@^;G;:Y+0M3Q4>M9X4%6CBUIX6&2X:1DVW
+M`E^O'W_>;(G,04]/F%),*SP<P[5I+<7SD*Y%9%G7;__3WS]]>FQO/R_'Q\V.
+M at R9F0@O'6]3%O5P4S'O6$\#1$,)%#5[<1T=G4.;SZGH5R5J3[@CO;V3NNT(X
+M7`AOKC2H,>.9>()1 at C@\8%5IID8JA&*6?1$-XM-,"K$ZBL1EF at 3,KUR?%7%S
+MF=$R:*"1TXLX">_6GA,A-L8(,<:I5HL,=\IH%IHH,D354V"N!$CIX,NMZ:SR
+MPT.Y$A&O;B&;#T;:9*&QGJS7XMUX>OM8:_W--^7C1Q,!VVF]*;A9)\@P309M
+M+C30A0^"58'J"HI1<;:YB*JZ0_K6RJ'(>6L'D?-FS99-E]/9/IG^&ZE-EC_^
+MW<.;7\Z6E"7I8?C`5.&8B\(L\;!NY\UBTG"Z^.FXU%H.#XY)U>?D^50F62\0
+M^.^/G\_G7][KYP]JCY1_1[HT"&;$2KY$8]N7*V-LO"V]KK3DER_HABXPN;8E
+M4E1./F477&IT+:26S!+E\W'?V_CBI;$)$ZK`S3LR2U99&F#P2 at 0B2LS(*:Q[
+MAU6ZD"L.";"LX:U&.J#XT]":03I1J(E-#&8I"/1<.A1*425XC-VK]'@/**,M
+MS<<3_GF5PB[JTL87!GI;Z,N21S5[D%X8]%@HM_@?>,("F6+X,1FMV?I0FCI&
+M8)_4I$O(DHKKOG=]UG<^G2N.+H6$QI-Z1=SAK7SSJHH4>`W+<YY\>U:9_Y\?
+M3U(DM'"TNS#K7!`'D3`G2RU_^6F+>6`OJ!VWM8KR5GWXTW_#":+K=__X-QIX
+M/KW^>7E\K_IHJH,;RBP`PE*W=C]X<+\%L-90R4OAW.$+P at 4R;KO^2Y8N[;,B
+M&>S/A<T43Z471;G12`2`Z at 1UJ)$52!#VGJ89TWW)1L>QD"]@(*%42[V-^87Z
+MGR2S"5270`$E37,LP#0+N1O1BM=[ODN706M`17?']3'4:(4UPL%*>/J0X,J?
+MO,99@#38XPC>Z4#*"P(=P1=0D%&JI/+1`H+<\NHY3IH9Y;"%!9*(0XZ%@W<A
+MX?-6S"3`",R2D8I7^43"4<*]2VE:\E$LV]:^_<U!:ED/RP/VX!]_=_@?__S1
+MV--:),!=C,ZI9/-Q=O_'S]`KQ6AX<@5C@,_-#@>QD+D/50X/?_C'?SB=]?SF
+M%WWZT!IR5;!,;>*``QVK$Y&.?#-*5\D'NDK,&1O(8*LUM0QI\I[-%3RZ+_EH
+M7EEI((B39CY=F8:%WF&J03DI50)A:>3UVR`"0-V#(`C_(D^V8\21-C/^EL;/
+MA;!DIAHPF<2M`R9+2WK6=8A..17FH!1_\B5UG#[E'L9.;5$#:=,DHC'4I9OK
+M16?^(_HQ$M^+]<O*B^QK\S36K73-N/3,8GE\@S"GJZT(F5GUW);&",L6OT at V
+MA#81%-8L`J`QH^93W_!7*ZVI82VW#:]I2]OBU.;C>7&Y<=OL"2ZXOW]U[0-9
+MFL^(J%LV"B/1'=&L#_;Q*8VHGO\\0KMC/,OCYZ90-:Q27WWW3__V]+D=7[]K
+MCQ\6?4(?&")H4Q92V:%4.6:RT!$LY^:'F/1<":+N/NN^W()T,$GS(HMV[^EW
+MI^8+76EX21M5>:<Y'79-DV7;8A;$0%5%JA9W*-O4:-NG5&F,#R?8).&W\-R)
+M'/$,_T/D80*(4?0*2.Z53)'"&@E/G!X/(XT$V3E-U``S]=?0OE[6`C-A?4QI
+M*(X1?P>A7/!Y?E8\O(X:6O(3XD,CQ70+9RV^B13[F3.CZHEU.=D at J*=3.QR>
+MI:LXBZA9(TVC6MC1C-9:+:))0G+@:[&X=='62(PU7%NPD0]2VP;]"PYO664M
+M1;=6SN?E_,WR<5E^Z]P*(*^L.(48OC[AJ-U\+>U"[/_Z4Q/#N6B%.1ZA!B+'
+M:Z9(]_:XR5+D#W_Z=]O3]OCFO7YXM^AC4R4>\FF;2'03M2>32=XO[K&STW@"
+M.4D'YNK0 at G+OPZ+\!DOB3G9@;`*E)VMXEA0MZPW7&OVAI at 1XC,XQ7F,:2A2J
+M1"-?(8H_S(MQ7O%C]ZCUO.$I1H\%!$ZP&F)P_(NIFD1RTV186&_=5R3R`H43
+MF+$XZ;Q.[DIDE",*.U"NN_C/;$#P.1!;6OMP5&50KP8!Q<\UV*&?,QS]VYJ3
+MEWA/:#\M,*8O1U!"C50]VJPQLV332YZ1\N[C^6CM?+)F(:RO!X#OV1JD:*KY
+M:,4EV_*;AV>5+)7R2*'>[[3XM,9!8NO3A^/CZU_TW3O53[B)<E&A"6G.C29@
+MYVP)??Z7()Q9)/<AD.?83G0_?#`K93!G?5W1&4TF=4UTQ>9I\2[J"+7D0=!@
+MZ:&<MDU+%:,@(AB>ZRQIP+[JA4E>2T$RO at O9W.]8RRU.0TY\&T2)[!SH5`6M
+M=P),\:RSJ2YZ.\/T(F9--D!^U.K8AR=_>YQ#2'*N5V)D*_6E'*6810R^]:R-
+M$RBY/AS&N8H0'"%G5C-K3VTY%&<!,;TT4\&(&!"`Z;9X%>F/=]H4!PK!QK"I
+M.X[B?\MZ$&=:M/DZZ29%FHFT=^_MN]]^\[CJP\F>7EDU^\.WZ^LW6Y'4E>#R
+MLL!2Z_+J4'[X^:RI+XYP?)<7)<TM:6>2I[]!X(>W9H\VGA?MLF^?$(FJ@%M1
+MT+\S2'W\:Y0/F11TC*[O`J-&L-1\PTMM_=)35)M`X-B](GFX"@T&02$9:J&Q
+M^6-#:)B_(>.%K53L0E$!I:@L1NE++R^D'4*+,8%J_I9<JAPE)5)\J1N1=R.?
+MU5&>]WL3=D9]F`1'1NX"U&";RZV at F;#02)L=`U$OECL5(\_>>RX?Y1#"\!!!
+MAZ at 74\QDS%5;3A^>T,PS#G!=&NA(0^RE2<PS3=5.:IACH.`:H8`63(GX@<.;
+MF98P,*IL2X%P:(K1M>5L5HY:3B`#__!WKYB-U0L>C\TA4NVPRF+E='8E]F5^
+M\`?SL"I%L,1]^OX7:X_:-K36V_3U<ZWF6'U[I_![7^@U*KE'`00O843OFD.8
+M'^M^L2N8Q`IV>@Z4R&@=<?GJR2Z543:X:PU(FZ=&8$OYGVS#S#`LMX"!IU()
+MU#$C'&'J+?;RC+C at X[*@CHQ`HCY>%-+`?+R([#H5"AGDN(OI<)F1W?%HP6<C
+MO@!A-<Q5<.F$I>=JZGU5DT<%T8OOBA8]-=,KU-XB*[!#6FAE&BB:!U-;Y/S7
+M!JX40*V*WP88Q\=P,U*Y;@JNU"F7R;FUT_E95:.M'-OS:OWGOW]8]"),(?<H
+MNF]-:K$##E[Z\YNCL=LQ at M+I,L#ND at RBK*W!&L%6P[;F.HW79<>OQ7 at Q6MC[
+M:T'+\1T=!%/]L`LS]R%P[+;A)Q/.^*40GD`"I52-75UM:U(%3W'4Z3L6P\D,
+M at 18UZ)%D;(^7CA4G!\Y7=/X2^!;>PC@)WB+1OPIU3Z>.XE;.Z&Z\\Q:;,A<2
+MBW-3ZN:^XD,1D#CU]MVL651P&U!)PSX7[0].620L+HH;2/$A4N-=3*':/I_7
+M;PX(?B(CJP'X$"*N]N'&#C%_CIFP2EV'8J%[5JA3M$%6?9#:BLEY.Y=59),B
+M[]X??_MJ.;?#4UO.A^7[/SX\]V?SD^`6.N;IP^I92^SQU+2A$Y[K+15Q(\.E
+M(L(0D=4A$/]V at 7^[KBJ&3TMFW$G![N41?:.3HLDB$_7,?0A\(6&3*2-Z__W<
+M3,E"A'^6T7>Z0=UGIKA;S6B2M]3UQN-4F68LS("-LFV"WBZN`3O8_8EW)IVR
+M'L(@<XI$Z-1N$B"NN$,.[;,7>::/*NE#*`9_(U:S)>0TOLLBOT@)B9N:Y$@1
+MBEO6,!S7$=%BK:X=I4"EOLO)(+"CQ3@(Q59__HZ`M*7SNL9HK33X`ZT%<+Z9
+M&THE/!'E\:EM6VEGW;2T8F7EGM4\/O75(3O_\]L-UGY3$Z'NWO)`BL[(!,]S
+M#'$0LWH(C!\9H6A&))>3;\8?RKA=6!B6/*!_G5&EX?$>0N17R:`D3YL0.!JL
+MQD>DC!@'F/Z6JGMG:.XJW/+)0/;H)"S*U%A&+E)&G1BNLUB:WRU17]'XL5QW
+MJP950S,N&VK0GATV:13F1UE12&;I/*3D"^@*AL+L7WF")XFL1RMQBOA9?ER]
+M/;!5/)4I%KU85[+/9O2)53UM8"K9)M6DJ=!2V&J-A^A$QKH-Y-7(\5)"5W7K
+MXC,HMJ:;NM;4%#&<VW92.+8VM>-I:4B9M1E>2;YOK<4D.M3.BO-#U)K+JPW-
+M.!#FVG&=*IEJSP;&,7NK&3 at H?K>%E?.2.Z;NPIO-'KG#<^JO0>#X=\K!,]"]
+MI<8D:[;?*37V7L/"P<TZV,#I13J^)5V1^AH6W951=Z>ND8C13I=4+NVBA99B
+M;]BOA28KW at 5`1!7==(*\"JYJG*W+!$5V#?!C'ZE+++VG\<PAQ/H2TWO6LJGP
+MO-%BDK>Q_R%JABB(7\.0&_P-1#4@>%,-<^*E`TT!O:;/=TW;@@._ZW8NV]FV
+M[1F>ELT.$B)$:=HVK>XDV2+6[%_>',$"+4H7!M!P9^+U*E$'!1\4T;*F1$\N
+MMT^"5'8 at C0WVZG,5N\8F,XK'EC0)9.44`N>52?TN-7DCX7#T&+<=5],\G)W#
+M$1,L</IDQYRY_HW?,2:$,/.7H,0,>+UZC)OS]E+$V02A#S8+(W]Z@:OY?%X#
+M)NDS!T0+&W)Y!%FK</(HL*(X?>\L)5*,T:VE7'IBY)R1EA4,=GRR5ENLXM-.
+MA8@%L/IBM_H\@GTED.LUZSS(M.&)`>^']*DPJR9AQ0/BFP057$UCVQRA-,P;
+MN-)B5=P0Y:FY2X64V(K!3BLFT.24S;0BM,)4-ISA<[S$=I;R<%@]JX54*V8_
+MOWLJZMU*FA\T3Y=6)7`'H2_,GHL at GG"ZK2?2"H-E=4(U=]YC<H?G[*%H7R]2
+M7J at .E7V22/@@1/4HH]\S=*E!?=)\[=T7:,%EG-[UG!6/[<RV$KA1J.!7B7&)
+MFETA0>*^7DS-;J?%$O=<9.K\:XIO38\][/!.72KDJN2I,4KI?.#-W$+C&9DP
+M.3PLEQY1[F.Y+IU!7SL,;L.&L(MQ6$(>R]6B<7(L3`)""*>W&.`^UJ at QQ2L&
+M[A:;>(8#1YTST`IH at TFPP!N]P6VTX?$@J*5M1:68P.E0%JA&]<&J%3LLGJ;1
+M'FH-B0PU:VV/3TRUP['[!?"M%`1ITS^L]*)^7?>W=1<7;[M<:*^4FQ="X"UN
+MW&NM7Z<.=1W'/1WI^&A'L=52TD)ECGO646H(,-.1NY`)'="B7DWFX"96L/S^
+MCO185J63O^^U7^?V?05&<36YUJED40:DR1-2,!X>TFC4J71^%Z at 1J[CF`EU#
+M"7G+O>"8:(19<GD;_^M[1-I(>HY.<9J:^YU54<U,5H8W0S]&5(#V*B$=.`%$
+MP3.>)H#.ZMZ'VM;BD5@(_12U"H&Q06(\(1IT0XM:G74A.EJV/_^EV:(%D31A
+ME*]47*HI.0_TM-=,HG*=RV(\/,"R2DNN-^[Z9,42WA$+IW\)+[`J7UA(XN4&
+MAH4?TJPIXW?-=$\3.I2T-9L:8$,$ZY7Q"WQASC,$`;J/&.X.I=CPY8A%J"!/
+MP6C.(C9-Z6'#BE'`!I6[:$0 at O"E;UFC#:`]\"0!9`XS+J%F-.<"JCZ=S=J,0
+MD>S)(.DY+E)UYA[F'L*84)A%/Q,4`1;,L&&*[+W0L at A@K at LY1RSB)3$=\SLX
+M0LM!`8856!*,!$!=2RN1[=K:MA31JJ+-MK.VPV('42A'T=9:"]L,3KV6IB>/
+MA+1(<@F5#[/R,+(Z,O0H!08C5*XSYH[2?*>S$"[%R^-T,<OWGWB)5;"8H$9G
+M05+SS!@2NH>[5A#@RQT(-.,R`H$:06XL&EK"DIP>D3J^;Y)`E;*K74BP!\C3
+M&Y[2]71BQ_-<1\F*T""6O-E>=.B2/LUQH`0^G\PG0[0P--#X?7=?SE+XV9!1
+MY2WGB2PY=67.GU#M4@[/X$^I>20N,V%D(%NND8EO?D:8%@NQ5BWP4'"^JZ at J
+MIP<0C at 1S?DYDU051%J6VNFU:R_+AX^G5JV].FZK)9E:=\"2;5__R^I.(A):;
+M2C(@(C4&.HM(,!+-.*\I[DI493'^N&"\Z%W2F+!@[C9M.O$:I3C`WPX$DMH3
+MA+04NIO>6!HLD43>DA[B]!9H9A"H/9"G+Z5R50>7$0I8\>DTR:?D9D$DY293
+MN-XB![E-0#[G,,>HYW$)EKVQB*'T:0!S'?E=];LA@%F:M^KX*9FCMG at L?(/8
+M27R^0>!$"1#I.L:Y:J:-VDZUMD4;/*IL6?S<8L,U!&+/'0*8-'Q<(3R'NPQ<
+MV7F,A^(Q.-PHS]USS[5FS[E#5<U3**]`,3`5A<#P_OV3ZL*DS[&A2QSF(Z:0
+M/U'B?_A.!`O$T2.ZSO.FC7]B-5Y8Z-`]EF(4`+[,<V6NK"^(]IZX>@O_[9G-
+M.02:$8.B1#XESD#-3Q=6#C(9<]^Q4.?IKZ$.T#4?[">?_4J?!.Q@&4^>2BQ0
+MDZD9U(_XWR2GEO+?$A<BV,O`4R[H)RNNW5-B0Z)GY5!O?""5$FG!YB3=QNMY
+M]A/5=1D;K/B&.A=IP"ELQ`]QNCF?AA0P1"4-"AKD7G^&PT#P`BA<5(LHT`'R
+MT6BIS7W?EO)HMF$**OC=0UD^?FK.++N+NZH&GP3K'X7MZKF`K>$C2[.>B5N7
+M%Y=<J:\N%J&%7Z*,X=4.(YK)46X"#D<+.]=)U#0K2;1&+G2,D[S^4[2$?:S_
+M8FYKBG*]>C-B\3N=^S32\J6RL3-E<E<2UXENN61LU'KIJES;T$?"&-SVGI(,
+M8!/F*-`<-LE8TVL!O9N]SO at 3S$BBC(8/:09V+RJRJG(&%J7^@KF\,U5]<XA`
+MUW(#NTPH:S7/IVZ)845%-9V&VV8*M<Z&Z,`XLZ"68O;#CT^7E6^JDCD<O=.M
+MV//^K*H(>,):*R#>]?$2#.`Z@$0RHG.5I-D\0Z'9S"IH"[!G:M4ZK#RG5`%1
+M`P3NYE#C!K<N-`E7DLT*\71"H#?>';"FPKV#/9[WRS[G!462"X^M1ETC]'%9
+M>(3(`-)74#IV1K5S<Z<#U5S2MLF4&O->I!(2?^>$Y*D1J>AW(4]]^^PB(*@F
+M*'&EIPZ^<XMZTQUGYLG$(F,6*^:_ZU+3$U$VPB$E4+/6YZ.-SC9B9+=5MN(D
+M#'*AR&:UEFW394'\TU(>82?TV?KY[6G3YKRKB.!)*#$WM^Z8F_)U01YH5],!
+M>5Q\YMP\)7)#":<0R+UXOYCL$5"Y#<B8.7S;56:6?1J8ZE#K:GNZ%Y`V4O#N
+M6P"/J?T2DSH1C_NH*T(4SZQ,5HC(6R:N[9Y0&\;T.2.:OLZ)8HA3IF9=DB%=
+M.MTLM;7)SS.[5&&:FIPK-U;P&!5O5:;HF?X0(K0Q4#5(QM at +P<^HJD$K?GST
+MI*)+::=S'8+F9$E,BCXJ9UXP"N1&R%U!.X8W515/8^R)8%2+\GQQ`-BV&9);
+MEF:RA-'1GHX:R"L[0\.,F;DI4@`,7.4N>A:PBZ^W=:Y,*1WBS,+%VBOP3>O;
+M>S?D-DU;PM4.!&8[M3*3#76DP+S>5\1:Y!W,1ZI8`NT04#OR8U.'5:[E/@*"
+M`-7;"<=1"T,QX3SCOMAYMQ_C+;/,//SA2R`8SMBL^VB2Q[2D,).T%5ESC6&/
+M0'=J+N!5B,783_H>J6I7UT?0,>NXXF9VJ6>.$N1H8&MD=#T;R,A3])8>@N_2
+M>- at Z#WSK^`N>/@P"A[39:%@C9$J;HL`!3NU<D)UY77[XZQ'SK!'2V0"7%S_U
+MS/7L at D[@%V/JA&BCZM+S.H'`M&Y_41;M`0)IE:YWC1FYA!TP\&*:B"$1$(E3
+M`E6,-C4KVE&A*AF.L'B.>OPK,Q-%O9L[W)A)A;J^0?H*K[6]V+SX2L?F3;Y"
+M4&]T/F/EBX.\6`\ZT/U9B=TJ*HV-%6![BT`O]$2Z/*@\7@=V?]@/,+D:?(4$
+ME&4RBYP?:G84P&.6"TJ(<A-%:J'3/<`Z?YW":A6K>+E=G/Z2=A6FB_1\^DU5
+MJC43613Y`UK3#6&&VW9X4BNF;]^>EN9WB1^JCY4KYYF#V#G,#_/H`']@1D(B
+M<'02D<9SYPR;B?N&TA,]NV'KZJ[FNC=L9,*"1=$Y$V>A[_J1]A0>A:*@.&C:
+M'OF2/D)2C?SDSM"X.[-&;(`]_JL6VIZB;#SU$M?.S'4O08Z)#X1?3+?)'(OE
+MZF22XJ[#`?\<;#H3%VAQV:!VQCIVKRTVFHX6&QP),FUJ^)TR*9C"O!Y)"O6Y
+M2LU_<XS<"@*"^2!H!Y;*DZL9W*W115)2%HV,/I?($A[4TZ\L30<.[,%%"JI4
+M-ZF+-ME::QM"HG1[W,RL'H_`3>R\F!JRMC6EHR_J+0OFVI/C:,P(>AFQ_^O5
+M at GVA*,C9GSB(4C\A7BDS+>LHFZ4^NAC#40<?EXF'W;10>)K+6O-)T#U%H#/\
+MHX"7`QMAGK&MW1?"P_J>I^[PE0SSN\!7TVN!D^0W@^@C7?E``VO_E30)I56#
+MSSCWJ97B#:=%\VGJ1?I4JPG)PUC<V#%!4M2[P'/(#?0MD[4YD1&&04FN(`'I
+MPI.8\&!0-S1;6D4M1"<UJP+HJ&JVJ*A`)JRK5-U:*\MJ=4,$V&;E]4]/KW_Z
+MN)0:#KKPF6KB<](`C[K0??7B:X3OHSU]Y@"J]<(NR>"/AM^PJ5CFPA*9]:[@
+M8T-P0Y+!76K+;2J_'J$["2\:(O.3<]-;,DCG8##R.9!Y47Y^G(H.3^S%XQ`W
+M\:.I_V2$>Y at H=5>SY>S3&.B8D58=;TD5)OB=%,.,\R]3#63OG)Y4$:^4I+&\
+M8D%E=N^:)&8".^47]R.VXF@&0)K"OMU,JH%V]`[1I8,TOFYV6I$3*S&:XXGH
+M^=H6&#5[%9E)#J&>P3O<<EC4VO(___<[NY1FGD76J33@*V*E7")F#<,<61S>
+M/-^LUZP#`NZ164Y]_KM3RD`#&2_OCTB"][YS#,]>#O9EHA%-23KS5>WG?2,=
+MX'E55U\LE#?EEF8GC`[])`KGU&1:SC((K4R/7?8, at +#1:RMK-<I^@@Q^(Q8H
+M.M<VTW>/$Q4>C)P08U?%TF](!]).J(GED4Q)SV2'G<4_B"Y)ZHTY2FV"PD)C
+MB9>.OE`"&,V54&_8KBP0R?NHCH('X%HZ#>HD;1\+XWEI3KA&U!81^1X$_%!$
+MP5R(R796J4O;]%#*+T_M_8^?\4#S*0]6C7']SM3S4X+15&QD_&>E</Y(U>/9
+M52>JSEZA,(=`NH/OU"W:T=6YNZ;-[?)SIC+;CV2C at Z7>5N#R&K."[AG'J8T8
+M:R;GQ at P=HK=G&@\S*SRU7+S%,Y>_OG1>.Y9]X(!8G8Y$-*92^R42B&T4O,4E
+M=+3!W1[;"BE2Z!>FFBIC4$E.IOK<6]3SA;SHJ:7--EZA4IJ?R#N]@73,;:MZ
+MB?K0(..%%A2<U%O<IZ7*HAX-^-SNH=I/[[>GCYM98Z at W+2P1+T]93SC_5VY"
+M'G[/Z/(Q-FV]S5PR$07GNT5L;&M"#N;7EB=GD`B>"H.79#24&>*0SIU4?:G(
+MA5Y].I_*ZXP((>"EM\?XL5![I=D;=;>@2I1'OE3%/5038C%\--TS_:<.<*2*
+M.IB?`Z!ZY1F at +4('W8XY^`:Z=Y6-66<8;F$]O<D>E62MN^+O3*J.AD;UL at X&
+MB;2:,#R_*SJ5.,QD@$`N""5P?R6#2<+J*\#OU[A2C8&.J]12M+6E2M76PK#0
+MGE?HYP^;+G8^GZ`[#-R#S66VU`)YD(8NQ+N+B:`*-B!<JS5)43MM+4,H4^Z_
+M!*'[;FRY^,2TLD\]DD3P^A:)HD8GX)?^V2\+M%=N:,R(6LE at GLXCX)Y".+N]
+MLU.)[_O*T2[-D>ZD#\3?N3.FPS$)_L)DHB1+.-2H]04=)Z0P'MB@/$3.,?C&
+M<H&8N2B)Y)0(#_[NCNK*M3'7$0V]SS!,8C?\WV6JS)\RAJ21S\^T3]WVXZT+
+M0E-5JGPU#`9T9ZE\1/R- at O%6_%,0*05F7IO!A<&359A:>WQ<;!7?-6,`I#4M
+M/%V]3[?'$&^_#J3A,PP$%[%7NQ;/\B*;7FK0D at S1^4EW'$2%ZFP4[LO<Y>1"
+ME1](E_\>\<\AT`0_6I*'8+P<(#-BI at 0J_.VDVX#DO6L5S"I7.L=7F`.?'[V&
+M!!V,.J;1\YT$6?G_%";B at DDH]NPNJ+VLM&60$45!"U&P$`-(E^G0:I at EK!)!
+MC?FO>%?L5M%"[TWQ9F.R:H.R)$8AL50Y76KD>"\3OUW;<O);H at 8PN<++"K\7
+M+;APG4J1J^7+_BBU`%1:;B*AO_'SM986V>I?K?;#3V?=[#V<UC)[-=0P@^.7
+MHH&/D3LB+V!@R1E3M;#<3(C)UXHJLO\&*MMF5,MZ[U!N[$$-H$E=[Y87Y"S5
+M+V5Z!TB>J4^,W^I1S!2#>.+ at B:]/Z<P_?/--T#T/($@NM`S)RZV7$@?KK at 6[
+MIDJE3BUIQ!N_A+0/`X-CI%>=,IRPAU<%/)`O=;#)E]"AE_-,];+,U)^I'$WJ
+M*B;XD=*B&XRIL,'R'`-470^N+5.T"<50U45,__POCU+K=FYO?GR$/DX-3>E_
+MK][G<882W8R9Z=6B%$,S3,37E5TQJ5(//H'M>;&B>Y5WN%`VDUQS\IAW(;"@
+M3%XKTR'G<.8'"<^'QL8[5O5\(>4!TAVQ$E;@#I%=`"MI7)YHTR_LD'V"9'`L
+M91;-"-I"\:_HX&`\P(=9&X`D`ODB$9(,>0UYK3YZ;Z.HS&YU\RR$\[P_K at OH
+MH3^WV;@FT0TFN3P<5F_-](KHC!HPT>JSI5J>WCW2LU;]9Y9Q@=Z>L)W\3EZ@
+M%*($4,&H6;\:!&]W(9F^E\<*S at NUF'<!`Z7G5\%HSPW@>[2.H&)`)67LRBRA
+M31_\SJH44&[ZX;JUI)QNT:81C+E=-'RU;8_1X.>"[%GOE^[WR70.X,?_]>/C
+M^2UAU!<N4'1BG,%RI:FZ^+.AU<R%T>+L4>U.IR"X"J=Q%,=)/P8S;^*HT?TX
+M$RN-.:_;8BM340UZP75=S>(C7'HK(')2]"\_?%Q^\TTI^G1>WK[^B,Q0[+#2
+M*=0+LV&1KXM/H&7$`72JN"L(_2)*R.]-T/E-IIE];<6](\T&IRN[1T(S3C]7
+M;V]))<ZB-CXT0&#66/][>;G)62@],7<ZT+!!Z<C?SXQ.\%CI-/[428]M>YA$
+M&>];D=J101')51`+8Y?;Z$DV at HU4-B.ZS5F>!*8Q-J*:YE;1SGD`-=?<+'\^
+M.-LW6HSZH;:8_PJ2_>I-E\#TE9Z(V'I((H30%Q*THE+M]5^/IFV1K=IR.EL[
+M'J%+B32SH.^Z=$:'UE-%<PY",^>YD=SV(2!F]N+H)!L at D%`GG5)G!KK9)NV#
+M\]U\GX^U#@*G28$MDU&;S5PT2\&O+A-)4G>QE10VD"Z$:B#=J:"_24P^#BB9
+M)<;::I!3VTO'RD_<91?2K+^*]96WD)X0SB]K2097BP6N1Z$#=)F>Q$RBG`&[
+MX?-<<Q((?OUT%-O3JPT?0F^E0+M9M+AT>^NGT+T!?:@5;".*XEO*5-JEV.?'
+MDRYG@%.5II_.?F9;*UI25*;;C:'@@\;/J0$L50-0B5[1O=0P46-^%P+SWSN-
+MY3;+]9P1U6QVWVM<YK?S\3XZAA#(?XM%UJ&)."IS:*?CUH1--6LORPJ79]UH
+MO&'G+%1RFZZMDV(<T=WBR%XRJ4VB.U>W2]GM%9<&*GL)KS=X3E\IA\E&=D9(
+M%UJU>P^ODSWI()"WSJ9)V,W2TL`?7]CY6^=U%GRQQ<):OZ-[.*3<2TOXX&<G
+M-+=)+1\_/L8Q;'4YG;=S,\";\87*/MZP76IQUXJ89/PQ+OR'B4QKZ?H5$;H9
+M7IFY9>L89"V1'9`]%K-VQ[6"2$&):HK.(;#<!"CR-+V=/%&I5&0=(.$^!&8X
+M?;GR5ANU,G&^IP\'FWU,XT"O:%U$,E`HW[_KFF.XCKR&&-HH;15+'".=XR>'
+M5 at 2F,)%JY=;]H at 9KZ280,;E5S[`F_7O&G=>=(,3=-N3XT(M!0 at 5Y#BSM51.^
+MH'?+S=?)7"7&H##?!_QHUQCA>[6:T68?T<K:%EEU659 at W->OWQNS?!2Q\[8\
+M?GCT at ZDBZYR*1\9S#V+"&;SNR#,49%8L61;!'<=NK13QP:U?GEY&YK9$>@-)
+MYI/)E2H3UXJQ``93OIH8IB=DL'OYU.M-$@[OEB&?-`'R;DF?#)0KB)2Y>%NG
+M?H&[*3^`;F\;\%L1'CX_F1AIY8W)"/NAIAJ_1.QP/S1RFFHCLV?Y&ERDT4*?
+MV\?=,CQURQ-U5GCQAU`SGL!!K)$I.JJ%">160\%@!J(V<*&)7@[EO&T at T88&
+MS5G'\X=C('#4HHYR/?O)\%TNQQB'[0Y^K!0\?C\/H,E-0DZ9I8=)>U&J!FR2
+MW'XFD`AK?+KYN:F0*6/>KB7IZOQS/6J80L4\@7^90;N,41QDJ!+7DQ'M5=CE
+M"P\A)E03`B></V_)?FRT5-)@GNP]JOOSW+N1=\4F#>3:9\[NDR82`J&BX!*;
+M^%,W0>Y4R=#B'6DEI6NL)7XL"8$PX&5N+EMF*L#Q^##G:2NFZMV[1W)2&W15
+M>CRV[=.G8ORZA$5#]L1 at _DO;;Q?$J-P?#&0$LR\[B)\RR8TK64+(KK$AWIG%
+MR/*]Q.:64>+DUR>`M`,YFE)3QN8.LM:>*$AES#UA>*S?'S[5VXD7^P&F8\<H
+M.<^=!,<W%,Z!=7,X45H5+WSS#'5&2P9557:&=P,,9(S2PE2S\_3J3K-XJK4(
+MWDS"W?8%*D(?[U(B1RU)<3HP,3T\/7C2,YHP-FXV)K_!+29Z(F*5YP'^_,MG
+M'S-`-!SNCZ>F%M91+JZYVK/L\BP*MX=)O#+#@-+2N(X.[]EK_&W,%8W:$1C,
+MTS'+J*#/(KWV7R>;)B$PR\0=>LAQ`@!+[=E>[B8M^P)DN4,#[Y7._.!]&*10
+M-A.3:6XK^N&_@`9R at P?3DYSY'&AUXK@@/N$.8)E^K,,+(\YE`#L;VF at U'="*
+M%5$/BH=;B!E?<,6_J:9_;WYIB'Z0+M*G%VYIJ*3==39U4DO%IG8=>695=RD-
+MV4[>?WQLC<,1`T&M[:30=+J,+4[\K;,)MV3B($IA:JN#1Q%,1.1BA`*W]">Z
+MS,5<B?=*F:HN;,P?B99#F7"D`_RAIWUEW0O\9<+MS#RK20UV`J,$=\;-%-Y$
+M*%\#@69[T"B[NUV=0V)>3MW]%AO,(NM-A)TR'JQU1Y`E6(G]*@;1DI*`'\`T
+MDN7;\W.*=<'L@&.SA$\^@ZAU<*T-S^RXGK50$NIU?:GI$=JES!CFB`XNB0<M
+M9+Z]A)'K4AAE/'IB%7,]8CD>VS5:@42HUDP_?_;'Q)(-Z&%>#26-*V'T1;3R
+MT at 8#3$!D?,LDF>/]<@N!Y;Y;9E;:^/C\*RSS`S&[[^Y%&,EN at LVQ2XSYD.6%
+MY<M-]A-D,Q'\I+")['+L"4F>'D[0#)IT*].>8EU?W&,;N\T$Y+?CBF%X"Z!>
+MN\4\#>W:@BS6*'O(I1C=1RQ^8O/87!HY^&,3AL[A*WOSO]:,[1R3>C+C]YM?
+M/BW2JV0](\:YZ?GLJ#*\L?O#^;L]C'3]N*,)ZLPK,Z(&]U8?H[8[Q[S9?@J)
+M_ZO*77N73&P2DC:)KMY^]3V=P^$0!WB/D-SKLY3YD[:3%.L6O\C^;M,2`-G"
+M,PTT2L1OBE?YWIMDP9KW<$R6N(\4Y at A1282#_1;.<`K>&N)84UQ"1<PR!'\I
+MQ;-9H9^Z[JVOY!_>P*0S>W#:#X>JSV(H:\5M"W:5P;8<C\<BU#.5:X3=5#-J
+MG=#$4:OUD*"CBW]1?Q+#K*.[+-<KDTRRAT90=\`=06*4^\C at W8,KW8T,3*7\
+MKC=@(C?;C]"W*SB4F;E"NG["B^J..I1F2GZD3V-4&(K'#S(IH/`B!UKQ.FAB
+M=,S[IB4"3 at TPD6'$?M,*UY[1MT1&S"C.M2SW$YF/(==NH^(QYHO"W38[Z*UV
+MG&-90[XQ>8T&K"#,`S?'OV1J"'XVE8<=Z0#>D at S*;;,&,0\C2@@L*(=54".Y
+MP9!X8J5"N(@<3^=/CYNSXCEJ78I@)MO);\$:3/Z+(+0[U0`1#\!OV)?5*1YR
+MX(_IDK%SI<A>6,#EW[O(%1^0>_:`F=%?;VJRDHL]4K-[=$FRYR_WC"'JVM45
+M#P;TW;`LZX?,`-!TF\[J,N9T&@F%E(1&M.*(F%R,140(J(.+S"Z)A@*CRB*F
+MI3O&'*\.K)%[<>2?+2&0?&-#WQN=W;1D]BJ=<!,%O-U=/G_05V5"FKGA0?K%
+MJK68]5@[CV,3H!$IBWWZ?&)"<'XWE<];TY.5G-9;1S]=1B(_[']H at X$I)*+#
+M\G#E:%0H)N%GH_U`<LEOU([L=V_`R,?KS$6;@<90#+/N!CBU?TIF`F21;,-F
+MY?])K"LZ/V'?K at 7ZH7MC."`3-'8K3#5:$9J28LDKO\W&C+C-_IMZ*.^`N/"%
+MP7MS;G),<27@<#B0W"19]SZE0+EBJ)1GC_92NAIA>$(#K1A55#9-]&C#;J&Y
+M4L?7YL4H2!\.=?)R9L*7LDKYY>W'8-.N=:^6JGYEU#^R,`[PEL&$>=:`+#2;
+ML"6S#S0+",3;$O-*[H^]\?3P9K]Z<)+=.*-:;EP:.0;EI]S!@B_3*>Q4=C!I
+MQ5Z@(IJ^99YH8RS&9I=M.N%5&%-O0C`;<D_2$)]HB)`,I5O/N?0V/?XU=BU1
+M9KV`7T?\01L=F-G`]SYCQO&[LL<9.>?QK/_=66+2`483Y(:]->J.['-ZWDQ6
+M9&`HUK7RTW:K7PB10N3-SY_,=[81071Q")[4,+>VS8)7<#O#Z3L_4A]NKBJ'
+M<PV$DUB&,2B;KY at 4&2"P-P\(?V6/FNE.*'"V]%CI*1FT#MYV[/)&@>Z.71Z_
+M.Q"X^^DA'O>NFM>,TTX&@?8B]Q[P6WW,-C\F$^V+R)T%XM"809!DLZ@(5BW]
+M/-+I7U6]H8.]N at M+QQ0D!&8P^P2/XQ/X<B[6[>Y3AAUI'A"&Z]WE$`/_W)=7
+M*VC at C`P2`C]]>C*C*H4(;WK*:B?F!JM=))GSDF2/P,;,%OYT-$B"1%V7JBPO
+M"[#M2>+N0S(8W/=`0B<`++^Z<>>/2YDWZ.&VE"^D at 5^OYJ73T\!_+O.4UU;V
+M at +NZTR;]?VTWKV2F2+J_DNQ)=ZI+I$5A+IST%$%+U6M4FA*R>TXF!"9+-I\3
+MD\YH%(/:V0QBZL!B>R<:4H+E1WO6^ED7.O&X8E%HE.QXW&ZU@)UIDI/C]B`^
+MS'\#S'9&&FF+Q?H^+STS;_L`4+)4UE0`E\E2[BYP-[^LU?+_P9(Q0J",E4-O
+M*=Q^?9&Z1P;+5$_`SZ5%[8:]YY06"5M\AXG]4M/59U\+E]"4 at G>9D,%!65(N
+MMRQ#=7NI at 5P3G4AN.N"%[M3+#KM>$@)Y"MH<MRHE%XD']R"P8KQ>27,.D[74
+MB_NXC02#N[W6NDI]^_:I\PJZ"65TUE3+'GZAC2"QTTW9]2D57L<RQ=-ES3"3
+M0:^<V#?`O1!C`V'NHKUA!RB3-Z16:NX&,+:QW`NJ[/<N*\BVK at +);EB$@M?[
+MSC'WR:#R2Q#+I.1W.0KF*LWN*=]%43`3RP<!M*`O6K)U\;OBPCOS(TB9H2KC
+M]=5VMQB7)S(<CP\$F4Z^<CSQ.QV at 4<&@/3&J1AI2O>%]?-"-,6/?TL9$_E+8
+MD1V5VQ!$HF4?`G-S"HSTE*P._Y>]+\NVVUBR0T2>>RFO5:L\)L_"$_#</`Y_
+M>B at E4A(E]KR(;2DS]PI$($,`Z?=3*J;.X\/!S0-D%WWW[,'0!8W=5/_ZO'[S
+M#AMRCDE&AYE*PX81ESMD!:JW*83;D)QG1;2-R<+W8U45`]P7&H#11N43EXZ*
+MC2(%!=9@),B9D7RX9FK)DK$T1Y$)J9I6(3WV;801,>V/U#VEQ!LU!$H(G1I&
+MPG(6(*SRN9)>0>Z1=-N2ZX\7N97>KAP#8J05RXPD%,,2W\SF4H<OSQ"A%FA:
+M<E5O'7T`$OUX:PT;U,3`A9+%AAJ3DE@!@81SV6SK3]/@@]KEP&2O=KZ2.!K2
+M]-??/L+(#:846]2.2F_!+I]#BN>^\*;ZR*<V1[/1`CE%I=#,\]A`5C]0*CUS
+MU6"Q:Z9A\AI`B2+9-DW>LC79\"U5DM0.FV2#@M^5T+)=?L6%(MGE*XFQ4!$K
+MW9#6ILLQ6ISA6L(R*`X;KRK&$!\'O.D\W_]#Y0+'_F,O/?HOQ;G3!IC#)K#I
+MP*T)GVIK70]A0&'MH8:6.+ZLV#6$)]+`I46"H:=3(Z417<:D;YQCTN&WIB82
+MI>:%.W=K^O'C%S,KMIN5GZ*UW("%"82Q&L3)W?A9-_+'6-9*4!:1R_K?>IR\
+MFH\\0Y>*\C`M&YG^)0U,$[X/@;?M\O4J27&2ZOQ4E7`3H at R("VN:EB,,&:=W
+MJ:>%WW$-.(WXW&9C=P\^9/!>,*O,8!_9!(5$/<)YU'!K%E07A_0B6.P+?`N<
+M4_`5D*#8E&0>;$UUE4Y5$'"CJNZV_0F$YR/.C at A8QBPD+\[-X051PR3BUYZ)
+M.1953385+2!0.O_<Y*A-[NV*F501,"N)`O at F+I1BQ7437*DWY3I>^8Y-(EA9
+MJM0I=>@M0+E<JL(IV)KXUUG(,(PAEIM7+_\DRO/-GJ)4P$R`[%!'-[2F1"OH
+MW^??0'2JJB%-!AOSIH0_Q-3:8<#,4-5,;!/F'!,K*FTU?U(\,8VB`!^:99_G
+MIT<@\X575E=]X>W;]]5N8^8>A["R51Q)34M<RMUM!A)!@N.$N4=*JEV9M0E%
+M(]]5>B=`4P&C0CRXHDM&I<+WZU%S_D*Y%2]_36VNR:!&.1:Q#(/\W<A9NH0B
+M=WQ9[?BRBJC.KY+>X*6"("[#\:+CJT,#V#@6F$$6K$%(=!TL\HI9#'"_/`/9
+MJ*MRA,"=WG#3P2H2V\=#P91J=3,1T0=^_>U#L!9L<LE2C=E=-H8A-1'PZW[`
+M4W+$V9;?8 at 5@:)B8'B201/'H7XOCMIM<<WYV-?\2#4E0\?-70EVNW8?`Z_3$
+MW]^*^(:J48\.242XTB#=M at IFLP03BI&<)CJ&934;-Y&%M"XFQH=[$\IL(!W+
+M0R*8,3[=^:Q@@J>#M4*ATC9!9']::T6>NQP3*TW_^/U3B$,L4 at WX73BZJ9M<
+M^D+:.;)1L1[HB87*&HX4[2;L=(I[<`3I?EB%OVVJW$LL>\4(()0ZJEM)?E+]
+M=QH,<JOUGSB#*#(OX%9OSE<J5:2PS9?"C3M7:92SI(>83`9`D$,T1+5)8^P]
+M!1)1-9>/'/,6KF&K,CNQ'VO<)],G[WA!F!#FIYRJ$-053*/&Y7Q^:@]?X;))
+MUXB^O.Q?OUI0/;/E>!TOF^=!6#<#WDSL'#FDQ][,`'#!(JX2L:S].:$2>@6X
+M#'YKV6>J5&9(<@'_1DL]DFO%_=)NEUD8TR+`1ZT^HR(-^>7^82G0ZM(10BHR
+MR'RA15A(IP8D at X=H0.(C*DPA3-]6$UL]<JV*@OQBJ?72%&>T"ASQ-(Z#ED:O
+M-%HC$&ARJ9MH^O*"=W]\XII?RQV.623H2*\`1R16#2/ILI1Z;\D#Z978AJ5C
+MS1&!92T6[]NQ^!X*]!-82G%$&%L5-I&+HTB+#J)(1S7JK>S,\I]ULUS-E%E>
+MSQ#H)>D"3U&^0 at IQ-!85'-=20Z#[<($AI''2CK",QK&@5A4+.%2`C3#)A]&+
+M2I?'3A93R/$TPAFI#%/D%)S"%$*X$^WR;N><$-AY*(ZWU,M!5$3TW?O/Q>E>
+M16!2Z#PO=>VV:1RP4RGATF73=TXB3O;[BOC49\@W3F[Z84*D3)W&.Z@%0E^%
+MRW'>]XRI&P@,]QJA5,43H0N*N+YJ<9E:LIX.I,0::[2]_NK=5'5DRO"<_ at .I
+M65[>EU1*Z6],%$5*7QG&1R50)Y,#EO,BFSH at 4,3 at +%O95)KJ+[^^"^4;(*O1
+MUHH)%=QR=>9Z0"R5LMK4>.S7`8<&&>L151&+<HU1DAYWY(IOM#@?X._B@'#7
+M-UIR9,9\N);Q\N2XDI+8KNSRC%OU)'%Z`>[DYTX)8X2VL at PP"!+#ADQ4/?MC
+MAD`Z0*4C(XP8=E<;"3"09RH&5L_-^L\0%`H@*$[&YU*-WP]8"Z$@NJ%($736
+MD9IXIO"GIMU\!T+ at A7WJ]W>?*@V*1);894LZ8X9A569>2_$0JA0.[2"%Z0W+
+MMC)BV$EM_UHFQF54T:7\5LJ!]4_L.\(;(/:-69O0XV;E7^U0'O1^.>C!:YC!
+MEIX)/.*\3'[]4D"@^)U#A[H4.0(-'-]Y'%FZ"N/C]H`"9I9268(0SL at F1TF?
+ML"3L5<'?.HNUV:LG$9'=K at X)H>'C^Z]?/W^-++TW%(F23;S#]0E1U#P74"DF
+MUZ"BHE33%5Y at 5=-B4O^ZPUTZOJBSYI=-4_4\+-97HYY`\DOQO=/4_IP85N\"
+M<X*<>G$HSF43"\:=^Z$G`;`I^XVY"X?J*,2-$PHRHF(H7N>U/C+K2V(TG,L4
+MY?FDCZM_G9[9T-U/:=64].BOM#&BN09KW8AY#$MD+Z[KN7N>D6P28@`*`Y@^
+M-D-'%`)/^>L*AHSAUHH<2YWO-[Y(EK&"@+)Z1F8&J$.SZQR^#EI6ZL>05E!C
+MA\:]J&M$J&3-P.P2WDG?6E="",Y\SF:*,2K)9C2=GLR*4YC20$N#SD^:PTT2
+M2$Z_)*(^1/'M=M<RU9T)JLWZSQDXKTO[T."$3>!E3%UE"$Y2@^-1Z2AO$Z+U
+M^6GH0 at 5`>=*XL".KQ<^OWU$L+9(C?Z--&'QKT?-`]("<G0.:BNE@%.!Q7L9.
+MV2CHW1L5=,CR:*8CI0VD-!OPHH)`7R"=_Z;T4%!\<R6)JXRID%KS<;]YP+6<
+MH36E*L[F%I'^3S%"!I4M(%",$5S:ET8%"0*QBAZ2UAKH&D7A06T at 8H0`(N*3
+M6M\#!>/-X030XQ4U),N[R,ROJJ\>3;"]8%0X1KT7.@[^XZ$_O_[C>!O7RK2;
+M:4UT#?^NE8!NIM[?9<[JO6!U<(78^!Q^YN]V""R#(<PQA=C9M6IA.,PSM4SX
+MZPIJW%8B.&G7WJ%U$]&%?;/6&(?[$).)WU.W)(^)N)+0$G^!M.7&B!8"YSIF
+M/_+DC0FC9FIC@]`SA at -,08.!4R($1FTD=AAWQ$Q"%GZ3E4I&P""LD"B?`ZA=
+M*;B=)L/@"1-3E:<>2+W?0X6JTIK^]OO''#9VKPD_2U&%_(EM5IAU/<P?FUO\
+M#4!Z!_ at 1/CF51I.%?Z`JKV\%Z5V1'0$L*6HG;7;%UIT5,X\]O6KX/_]S^]'^
+MD[?__K_^[Y5=7MZ__[*_6#Y^63U:L1C]NC)XWM>)0(*<Y:JI at L6-0*@KQ8QX
+MJLD;C3U)W1@,*CBRM7*24#V5J@$.]J7'.H1RX!H.318E2OZS-N[HCQ9:#G?[
+M].GELZM#$SCEY`-K[;%(3H2K;>&;">M1K[O0SFD"YHQ6FK.LETC<96M1"F!1
+M1'>3<2#4TE(?1W\S,,(6=0M/L<(J.%)\Z\RQ5#GM:*V*4W(X3*OYH_WS&X^%
+MRKYO'SY\J;)@5A%J6%@F[09"'#E+V^%PTB>,'!J#H=N at TC@SR!JHLVYXW'R]
+M#_O&#/.X52X)_"$*2]GSN]H/&/RO`H$"%57]_8\/!_0+7+$55;K`^$V^AT.1
+ME%A]7WIT0F)Q628+T!L6\\8:J^5YAPD2I:(5FR_%>H9*Z'7F,Q,]<QVI1F(8
+MG&.RI?%'^R>V;G!L[:%O?GEWT/ZO at B382NCBJ:O.-40KZ8;UA)6_8T;SY`X>
+MXQL/CJ9D1/G^:P.]=)"JM4^<:IZ`A02D*C=B<TV699CJ$:X>:C]8TW]@8P#:
+MTS/>O/D+`H'O#LXNE#&B&VX30*BM8Z3<"BM1A,U$*M!(4I)U\67&N3#=ND#!
+M_E[J1*%Z=&ISG8K.W'$7T4,6778DU90S0>5"Q.H.UN>-'Q#X#VRTACT]MY]_
+M?N_<9U)#\,[%<Y8=9M8IK8KV,>H]$ULOH99\UN<8/>;30_;%D*D*14PWLA$F
+MSIGK)<8R0E;B9Z3$=5;D/)]HZ4[YO/@U<:I!',4/R?`?V;1[9S\]RYLW[TN-
+MQ85!HNQ#`)/:)A%]JNMW0"Y)J+LQ/#Q`5<SH#`X5,5UEE[&C4XZ:F-C&A+/]
+M4:H<,6C-%AA$5P*G+OU]F6Y5W"?1&6BC[Z6G&,(B?$=^*/7_>4VZAN^YR<^O
+MWX\#?$'BZ at 0\@A28[I2JRNE4>;T9 at V9)MW+FAY`#$[N#M#(SM[`90P1-W)/5
+MXI at 0.5KKD`II)N9C\G>G:5B80.W"2RP%4MJKEG0Q/[C0?VB3GB_NU]\__GT<
+M#ZZ3!JU]7U&&CV8(K/G'W&HE",Z<KAX<W@`]4K\BS:'_!*HMU7-DU&9*RI1)
+MZQ(">8U5(G2M?^+D'C_L%/]$98P^Y+>W'UY>+$1BRCT'T;KV*Y4Q[<)0)XL,
+MWU:\Z[*Y_,@,W`,>CH,P:/"J(T6V&!ZNI[HYEE(S`":G4#=93=CD?K;\G/LY
+M at S?_Q0^/DW\,!*I\_OQB[D19)B^L$_C735I9&<7AX)SP3AA,P&YU?H`(([+!
+M.S^@(J<>[L6"E5MS%QMA1V\8C`K?&\4\0*Y"1?0`V&*"$@+K];VU>?_C?P=9
+MX*9'&R2[4W!FR?$`4\G,F7@`"ICD3YDX1BAWL+8S-HB/`=*XPLRW.9/]P4M-
+M>*T\))04TU[).??A3`[49K[`Q\%3=X<'SW=28T=[G`'.=)4;5*<)9_["GYX>
+M.PR;242ZD*)J+X6GGK)I_],M)K%E@"RQ<SY[M7L:H>OZ)%W<N=MLTYR^\3&`
+M2*CJ=;IG<&]/#[=KQYS](@=@\(``!"RRS+CL)1TPO/++GD63[U at X490/J<&0
+MU04E\_<LBPM6KW,(Y"][PU@*D;@D_-W8$$*SE\B=(&UAM%/<1W'LY%3(`932
+M?4RQ%RU(3#^\FSF*G+E</7:Q<"2&/S&S)(9>P*R)/#\]7L""L(8^$FSP!U80
+M*`]\?/_ETY>7W`5ETO0KJZ!=E<VK at Q:XK*C942%N7?QNQ3VK;T\(HFF'66&,
+M,P>SRX8P!^.?]!H9\$78P)*.90-P_HIO1UW8;C>(TWR:ACFS\IFK@^B&U9NX
+M0ZI:`*.V@("L2FXIX*U077 at 5Q):"9IAN$$C'5)0GNXA0P_B(9Q9F&/UFA at V;
+M/3=]/+8=YK:QI-`O#1(J#1_>_YFJ8K]#B`!\JUV^/JZ)^;QI:3M#H%P>0$T1
+MM[/!;V*F`".:P2(0UJA8-=;TH#T#?%HR:YK).7HC=6LA+U7"=M_,&ZC,U;-D
+M<2GA2`3`8C&=7'%9_*Z&/=(0#`Z9J,K#6T\%<(XL7]Y([*SM at VNH]OHM3A\4
+MX[<:\S(.\CK@>YW3>L#AZM4J8SHBE/;[9YLL at JH\/S>H&`/N%'I3%Z"C#IWJ
+MYR\O$1%C89=G6R:"$Y1V^;OU3GSE\8V^RT@&\#KO*&O*QS.J(\D^'V3"!5Y!
+M?T=<.FNRSU`1QI at +%GZH%03FFECWB!XN at J-OEZ;!E*"J+%5EV*CJE6JAXAZ[
+MW"69D-*MU^EIS2G4 at EG.M$?"I>F!`H\1R]@9S,:HS#8Z2NVK0(XX1D%0G/KQ
+MI^<&'YM)Q>`5B=H>?[F&OJ^@XW[%`4AU;%`>O_RKB^)Y]9V[)C8KX\IUX=*I
+MW+^%#[6A*S[AL5 at Z'J)$R2%FOP:&*GA*4*]%D2]91V:4,*\+?4QPNP&[5T5O
+M=)E2-?N:@]!"Y<S)J!,3/YE7WLW<C%<R+"`P%VKN8#-C#L"X>^L?(LV]6A-?
+M#@('_2OWN?4B_6/'*"%5?7[UV"$X.EE9^?`T"]5'>^CK-W]L0%[8(F=VD@*N
+M,U;4O.AM>-,:K6O^89V/\[%I$P!@F=\0P,_="A02D3=67PCJ5/L]!"!7M*C8
+M,AX#ZN2:;U40JZZ*<(C4S#H'S(F`+Y("`BE5\V4.U<@;'^N`BX^//&=VLT!G
+M0FWFN#YR=U!1X=?T1CG*EHL84S+MI2I<).?\!1.M$:BPV9`5S8Q;N="K218T
+M&YGGOBT'#/CT],!F+Y8,VF7U*.#([XFJ/MK6:6"FG;@!&Y`[4K]^:URUJHXZ
+MO"$?U;E8(#7E"ZM@'J1X:"U$Q_]'_?OQ9'7$SMGR]<J=CI*;-NDM$577'+)R
+M<%'SL%Q"!XD:PZEJ_?.+TD@#5J%\2Z']JZMY\Z!K$T%D+#$G/OMI<"U8!->8
+M3&*JA18PF$+SO/KR)M5"8%_:+,BS]Z(.[AQOWOTRB*&"C:?GAVVV0PHNL6H8
+MV]=S3\DO;S\"*%Q/OM\N3]:LLLO7\"X"P77&7:$L=CWLG-L7P3BA,CYP560J
+MVQP8R\+ZIUF,9E@]+9S0D&?ZLLF=K%AQ;,UQP84&EK)N?$Y\"6_*$*C"X'GH
+MR9LE;(*S_M/-=VME`726+ES,6Z-`E/DQ at 1*4X3LX^^O_OPP#O])4MOKQI&:[
+MP:6)I`Q+[V+.*+>//9K\]O:C[59+<-<TD`CO6AE9>[^(WW&;HZ"OME8G7S([
+M.DM$(I6R"-CBL:E(%O&-TQ.A1#%>FU&#;'#)W$0:<PX8M7")+]7.?+&F,]`Z
+M-#*W;-F07GY+T;]A3`06<UJ?Q`D(:+%%M#(M_,([K=S at 4EE68RY*FH$DE$EW
+M3)<XDJ4L+"3"BM7G#V=:TT3&E<UYI.&)R=;4?9[.F.OE91?1JY)@E9IQ^TL"
+MW'<#L.F%/K\6Z5\]Z7_\\@%F"Z'B=M:FR%_<IZ5:WF$^WL$ZRPSB2_!O7-8$
+MN>OHO0R^_'@-'5X`T at W\8MZ?'Z at 84XU:[PZQ,7,3I0$`YPP=O()-&%8%9CDE
+M0L+-VGS8]@K%(NY-X;G*KT*B]W?5:P2,&<L681=]I<B7Q;36`*".\A0G]F3L
+M9?.M+>W(=M+K"'PV_0M;@DF5[?FA)[!RV*OL1EBF+E=Y]>IIW_>^W[HZ;:I$
+M*XD&8BS?K#XO__'F'6S/216*P:3:(=>-'LYET5I#@71X8L=%1E+*96\$$F'-
+MJ1!.81N&)B8D91-3P7ENI%TTIL6L^,;4I8YR%$1ZV$TVA<,.@=:RJH._/2-F
+M%?$.%QQJNQ(,:@S$(:6#6#T!Z>E10EZ66R5=#<5`%0?Q%9J6_B;:SI300,J\
+M*EO)?00K8S^>PJ.!K4)_<U3]KY83AZD(VD.>GQ]F=ED5ZYRART]7EP/?_O;Q
+MEB?3O?I8WV at CJ!/>9KVK7&Z'$8E<-D*(QNY.$HT4KW5\!S\:L^F14S!)I%5-
+M>!1YW\0FPD9`9E$CZJU$R=]7SB7K7;6CDWP\O$/R.-4B+0"45<WRAB5/?_<X
+M%QL%56*Q#:(5,'P[HT(D:!\71M`"O0 at C0')TJNZVK^UEMZ-IJ0WY8N$44=]I
+M^T^]4(L9=HAQ/*MF2_YVYP]:DS_>?=F!<VJ_U=8D,?AV29+K9 at LYR/&C9V\@
+M]M<9-RM-)/,18.-U`9G0Q[2K^K2%D&9`?WKG%*PKMKT8R*PST(!])/)N$).Y
+MI)C2MG2JJ"+CZ$B3:53:9`\&-XAN.!H2#31ME1`552.UU[Q(.Q&]`\+(-D"Z
+M:&=&%-EW>50BFUVE\I*#]/^(6_8))"K:?P(A'\MM4]D06. at H"FD<ZA&0!$G^
+M\,FR6*]A,!IF>_?8=K,H5-P*`O at K:;&=!Y'@_>JY[<"+[=WYVVISMLV:V'+.
+M(S[MJ\^OVNO7[Q.1$PX$6YD$_5_EGG8S^;JY6^\,"N;M*4C'OMD-8I-BB<X5
+MC*,2I4%B,3=U&R`+_"OE_HC[22HA9A*,,ZNJ\>80&%3O%_D1124`C*I+9;F6
+MBRYKKB8(A(`/%'Y"#;-4]#)[=9]S6J+0TL%WO>)"XQNQ=@UE]GCC1OF!2'B'
+M$/AHHMJ`N%GI=2DH3,DM]'H/ST_MQ0R]ZP[4GI8V6.6U.-?C2YX>^N;U^[5!
+M6+X_<5->SX[DM^]J60<AQA=CX+U[T3SCS!=`2$\TY8%H?"A8,BI0E8']S;/J
+MA]J1L<SHQBK(.C71HE.'*Z;(.O?:WN!WTE=DGZSTVW;&=C8_*9A&*`%).KN@
+ML_]I5"K(9%/.`SX,.R*:6TH%``?1X%RFW[OQ*BV1TW*B3;36ONY1M*'2''U)
+MDGT?!Q0W^,]!^O898*$5!,I0WZUX!, at FJL\/_?7M!UK"$#LY#91+,<0ML+5K
+MN^AMZ3*[I+C:'!IZ.1FS<+X6M:4EE@:S>4$3Q4-82Z1[=(*#H$W953DBVA\'
+MJL&)8YTT^7"Q09GONY/)QZOI3S/4MFT\V)]"0F^ID&U1<3]<TSI7`G:&-DK/
+M1U\?1"G`N7 at D,M79*U`!?98BBJ\K5&^$CPL(S`IM\LU]+OOAJ:,S<"B=(]$A
+M:=^PV^[<1E,`0S2V.!^XUZL^/RFP]6A`P$-F.+QUTW+J/;O1S[^\R^%77&NL
+MAG%]!KSY9M6;(+4*H2:MT.!V`]!O::]5RK*H%`8]IL%7JEC;G(PA#)`>V"XB
+M2!L=J5)OFP'34WTH!V8LZ&;2^^@4H$#E$K;9>^\^I3HPH8V2/*)8,I\>K`5<
+M59O(Y\/8+;MW@@\/7EGD2Q%!HJE`R4+[LF1)AJ%T_:2=2U.!()$E6.C9K&01
+M)ENH)B!R>*[9)+G</JBH"I=\_/'IN0&P'9#IP`^NN*J:[8GFMX<^-171K_L+
+M%XH02.M_(0K6V*6;]=_\^KZ"#8B3'[(A1$F\H.?@==:F at D]6/KAL""E-8ST(
+MY5ZPH.0(^0)P2UD/S>RH*]R(X'NMIZB?I!N-CK*&7?K*%0H9)<"J%RIMZZ.#
+M(?J"0ZG9<Q(JG&<5T14&<ZME""Q+8FE@\*83`C*<P^^0UJA$CSGQ/3]X=1)K
+M:#0E\WE<_U7$IQ99AJAH94EW.Y>O4PQT1V)K0CTJ"]Z%Q[8666[%3__MZ:DI
+M%3`IDA-7-+#8HR9/S_K+K^]J-0F$IZV*W(5LMK`9W<_UHE6'F^D:T at 0A(^X-
+M%2+(*:'R:#2JL[/+B/!XF>/CX72_62A=J-',`!Y0=9_`G(H<NK!#:*PW>K95
+MZ`VG1)]Y#8&JF]F9/ZF#@%13!_AUDB+DT*BS]36TWIW>N&WT4 at U:Q%$3<]]P
+MT+ZL^6UL^[#YKI;%=&Q%M&'P",9D$&V>^T>3GUX]GA\/>['=).?, at WQ_C?0F
+MCT=[_?I=?=:Q2=9-TW+LQS*Q'Z4Z]'83-ASY8T"SCX</()X6I&Y\6BA36Q7,
+M?%0!471<Y!ND";S\Y5`OTY+!TS!!<M\P-]U`EJ4=<`^.L20&N$)^\"',KY*0
+MA[#GTCY1D,]B=L:BLEND/2*K/#0Y<YRC at P!UO'9-S#C43<DX:H>M+AE'!VNH
+MD`T9(R)1%;=8`,`A$8:@SOG'.^3]9EWQ1X?;KU_L#,P`L./YN375EY?=#/`-
+M(B)PVFV%,B:1X>`=I:HP>_WF at QM!BBA;Y'GYC?@ORQS$7D1Y;-<2>A9P at EKN
+M8'I=)@.0JOPSU(5`$ODE$*KJP)68&&>>!A7P,*G':(D>G965M%2BZEDWI6P(
+M'::.&8/(9]+7%/R)2S(9PY%@CK<'1*<//JKD at HS]PS;W5Z;WB&0(3'8.HDKC
+M]L1B([$N-+1[:CK3/DDE#>X^JH1'E]845$KC[#8DIV!H/=J+'D\*$[-]O#G:
+MQ(?\N.W[/K5Y"$9SR\%R<K\F%K3[=C_:[W]\XARO[.FE,B9OV*;S"TU1W,&[
+M+6N#HV+<PM;(/4=:E9LH@$Y4HL[B"W!P@!30!=')ZYAD/`38I`7,2O]I#;2B
+MP$`!%`JO6PX/1WW`01^E_*1)A[1+V\:T$IB$!"2#0%G#2:2EKQ!GU!,M=HE+
+MZC-*UCVSN^@4`XCT1$T(ZF1,DZX<8ZG!+$!YW3SUP4/(XZRV8%C^N`()`FF8
+MOFY(ML$122PJ;W[YPY]9;/+R>/!?@?`<`0ZWP"EOFA1UW6OO*^I at A'<L5]=4
+M"-*Z`7L:-.B,,0F at FR*RG3`[C4"T!P$VF;5<#-)!D6W!.LO);M[&/O$DJ+O#
+MM:='?#>.PE(HBJ;@%=$W8Z,T"VPFY8K3$E at HM6/4TO at Z5TM$SB#'!G\"$.R6
+M%ZYV$L1;E2.W:6(A2#\8`Y6.?@EA^QBR85;!#CKM?^S_T+;97Z$2D-+Y8>D<
+MCY-S[!4CFG5(HO:KZT*%;MZQH2:#KEQ01R``W>CD9**P\Z#*W)EA;?U8.N2X
+M^)U#9"M&]+(1X8-;LU%--[A?J,[P3J,N0?O(]C2"/CR;:X/6`Y)TA^D(I\#P
+M5395Z1:*+BLJQ,9Z02#T.MAP,!5010``=)=MD.!*)3B&BJOU&9EDT>Z8K:2/
+M-'FU at WI"RA3<`#G&X(.;2C_;X#?GYP&38VF"(H,ZQ"#<2$*@VR0/7JQ3S#Y"
+M(!2`C#4/<1 at R5P,P!DM-(SEL$]$V4Y^VAWS98:L8%0I%!ZVK[)SVTN*'&GK=
+M?W6X9?_^_O.?D!]D9UZ&<"TV+GZLH1G"U6VCKX2`O-J*C#I8`BD_ at A_L,Z;F
+M>$:]Z_E>98#U`$L$:WM.2YE, at N3M&>.IH%*"J@)R:<+8I>%`,\=,+D&WIM/R
+M9M'#'@<*8ZKCFD&)JAP2)FNGJE00=W!5_C;DU3]A7),Z;D4I`R_)$60N>/HM
+M.56J'/@K'5`KC7N$#GYM4R4M2_H/SVMF(O=K&'0(K./?Q-R`"9U4+G'-2N69
+MP3/<N5[$QVN05VTK(/!?V<0F!**K`EX,A,`(P/5WG$9ELJ9O at G(4%%[J5&!T
+MOTS- at K=3.]S[A@"7O$W1%@RQ16Y5RK*B4VL!U]*X"^ADSYA\+>L5$((J3(2&
+M8'T:C^)?J9=WQU3=7/8<@V%/CP3/S$`JH=&"<@23U`KYET+BMZ5HQ&?*E`14
+MFHHJS[,#<2")*K'(E&;&0>QL!UJ'!4,S?Q/%+&QJR<N\CXZT?:4$5_WRLNT=
+M'ESE+X416>Q>6C?+0?T&U\3HMMOVIR9F\Q;J9=IF%9,(X"+#I6K-<`J/BEZ;
+M^XYXK<RWDE\7.^3[Q9)&!`H-N^._/QB1.G/9&<R9XB:DZ191T-<KYA%7P*/R
+MQ]/TT3J,QF10=/89^=&!\<.)SC%=LT&R:#+_SZMB'`->Y.#%`])XYT`*",0Q
+M9>4*-B!9*<XF_AM764D+5@,[H`E`+.44 at Z#8,\&1#$*9B9`:I>BB353E,^!-
+MH\)3M4?]O>Q#:R=E^3Z3U5\D*FFL4EDI9`P5'6M]_;*___ at Y6U^W8%S-5*).
+M7 at A^)0>.L&!UO2`N3K[C5 at 065"J2MMBFFJ>PV55(AZVM at K)69'3342RBW>4G
+M4:![7FWC?]`.DRG0`;#P];@*-DFH=LII^P`=%P,`+L>P2#5PZ(3AC31X,EWC
+M at A#(GH-X&&AJY4/[%<I`08=`2^GK-1_3+*8WB4*10E4!*!(&I:*;IY/,_]&G
+M*ZD!LO%`W'3#D)FPY1TW:9O/42Z]M<YN:YO<]*NF;[]\Q;:UJG at E"KKA$$@I
+MHW3HG6D<F^IO;]^;^3CK+#&R"&^H\P(3`F^I0#A"R;"--DP`P7=IK4[#HF;H
+MG;@-/OGR)@!1:+>CBPFM<11*.\\R-5*0IM#&,H:@Y=!/+K^N+%29R""6;6!/
+M7E`A+KS#SNQVE@\&``X^[FPXJ(,P7%$KC=B1SUY!(!D8')-*0)5#/JM#]<"(
+MZM'/,T*@S.UQUS#MAZ.Y:?$4]&1"&U+'E?!A0K$1KF:G/W4CLFWMSG$1JV5:
+M*_T?#-`1&/'XLWJ96:Y41ZE,0J8C$`)OUP at H4C9=\;1P:C]54,#\E!`HU&.G
+M!]H936'3\=G at G]!E%>H)4(VF\!`;Z(1&8J`.I.+E00>)'+R4`Y5X(D!R00?>
+MG:9($7H#LG/TQ`,O5`M>G[]US0]F\=&YH8Y=Q6E:%+V\F7]O?/(9\L7],U4@
+MEIU"!A&2M<,`L$/8-Y0B3J'6:T($P%?`(."=PQ-3258?<,R*V*G at 2BD"P+[!
+M[%Y#H(CHT[/^F23&C'CJ'G15I-5D8?80<3`F;KIHJFH24MVYL:<>&"0_7*1B
+M1*\;YL%M><H=@!^C-@@@4+#PR#[8JPT#;$1T/VC0VY`>X3XF$+*)UE^#Z=:&
+M]OP\E?ZM/]`P2"P`*HFYLM@(A\9##=N$#)!.2<P at P<-)HKV(2G#9G#.-J1<A
+M.E$SV5I*H5DM#ARM"]1#./`H%.2E98F21?P^29857&[I0 at 6`L`31D]H0*C"3
+MN9)\O at Z0&%C_WU\]WGYZ.7*]@]Y)Y$(I<3V8ME=6T:=8&-R;-I5/GU_>_OYE
+M`<`B.41",HB:#M`01PUAI at J%^^N*8!^:?*VS5&C(MW"D\X&E4J'OVTKASF:#
+M+S5?)9?`E`BGU+O4ZO%4;7=(-M"!]8G[(2KC6N4Q2"YDX:@Z&"^<4IB!*D,`
+M9.BDKC,AH40,G"3R)3[N4$O8.\R,]SB%%"J=T.-;:##5<[BPGCP3Q.=+1Q#^
+MJ(!`33/%+<E!SXD;%CI>B.]E6RRIT8(OEMR9"8&KL<B0\Q6!#2LXL2$A:VOR
+M\F*?/KT`N$D3ACCK'X1SB1C!0Z&!TJGQ')9-;^=K--QA?5560 at KBCN24$??;
+M`]+&O at P>M$U:--,TA=)9/=/,]"A&5T@(^I>9?69HFH0&;0`L$(,NWNS3Q.\J
+M!!N69QS<U='O4`DKF.@?4;:?47"'&(7>W6R>??&D(`$H-L4QDY6VI'ES+T$5
+MY$5G^*:"D.*<_;(&E(DIU(WMP:2K)$CK!LE?$=DS<*C,50,C&8SU*O#A<WB+
+M0R#TC)B!G4FZ4J9]6Z#RI@^5]^\_?_KZ(G<3-'.=707@;S\*1_XOPUQ%)(^J
+M!J'E75ST5'?-";RN.=&FRD]J4^%M,D@@)(+18?D5P&99.!A+"(I(ED.$6NEQ
+M_NE\]]>UT>GBT73:KP'%M)B#%'N`8NN'9PJ:_1^=:B'*6KH!(=^$6F(F/6%<
+MS)G=*'G"9P%Z.77Z`786F2R`S/.!C/B%KL/(T'96IJI@@ZDH),$PH)[@()L$
+M"=F%1W_(8$E;CD]1W:Q*KT&%X-^?'V\_[-J(XPY\>WXU(7")$\C"N"@KNCVU
+M]N:W/^9!J?.42I$#-G0F*9;*L5L%J]P\`"K9,MV/U4]I5O6F-#)7-?,BM5A9
+M(&Z209-0Y?HA@]N&XB"6C8L)!:=<;FT35RV9,#2./K9*9OGQU!W6,,O]J at X!
+M'LJ at -%<="#"5*ZIJUI]`ZP7'RHTR)7GLM[+V-0DD^3M%2=X$W:DG>F!MW6B8
+MBDGO:#<X5\8=/($2=XD[B$Z8&<L,93'_53Z+-5UU[8LMF"`WGRJZD]I3V[`_
+MI,%F%)I/-THRT2%6EJG`N(H`=Z*U3;7]F9^"(#V\XLO*/7Q]P.E1L5143G,5
+MI5$L'39M<P\0NE6F>E49`OF4Y"!:)]H#+ZY5ROD.R5(2=),Y9&8OZ'T/]GJN
+MB".\Y!!(I>SD$AN5@],4!L9Y27M^'+9V_GQ:"P=8PF8D!XQ,+.+HA6/&3*-(
+MB at 2?0\D6XHA],:ZG at 39F9;;>JW5X"Q`X`R838*`T&-$I`:0L"J4T/"GAY,PW
+M:_F<BXAA6QHVL4"BP0T?!E&P at S)_R+^]TO>?;('8L9+3<AL["S*PYO&)C^WE
+MQ7[_[1V?)!GVEA"832R9WUYS]73?=601YFX$1770JF,U:@D"!YN$Q:FD<180
+M6/*A_ at 7I'@GS@[DZP"+T@^'P^%;`4JI/C%.&X+X&.*1)$V";IPTJL at .T:X\%
+M[0"O:(#QL;.H^Q1R=CM5S>6&JP(XRH15ZE;:*>>,-%FJ5?Q'TK#9V<9H8E7:
+M@;*ZK(2,O0>*BZ/2*YUU$0$YQ;HY%YI\E$TTB:]C4D^B+]N^2/^2J"@6<$KL
+M:3&M;5.U#Q]>/G_9[Z3'3HGJ"ABHI<>R?F80)X^Z0%+%`)-VQZB@<5P\S+GL
+MWWV[?.WZ1U]HB9'U,LZ"2PM\,;9]0I="7 at 2;>$07?)V#F6&2%#6Q)ML^[08V
+M@@;$,-SB at 2%8F--GW:C9;.HQ-"F=%K0/-3,5ZR!H*$7!,[HE6QB</-OA&JI2
+MF!Q2TP-6MC[0!@,47-4L.:Q$%U%--WM'U`(/GQP52Y-]_+?G[:LLRZRZWQ8\
+M6\[RN&=_U\=C^_S%_K1&E$5$:3V">88^DWZ!RW@?#0.0\Y#D1G%K<_F%EFW9
+M!!;KZG at -Z:GG!)*KB3G/A4,Z*>@=\8^/JN?HS+,K9N`&[NF)"V.R)H#E5RD+
+M!I=%80`,74:G/4Z5[)'T4"-SBD;-M&!J%`3"_#5\),*!G^RT;5#`+)74M*57
+M=(_. at Z1RF\HM!M=U at U#M:483JIN2;E6'5\$0MFC\."DAFF]>X)>8,"^&:Y$4
+M1.8-J%&L!R8_7CVVS7YZTG>?,KWJ.G!.D'$8?(UY,KND^5!I\E?AP9]__ at .;
+M7-$_6G at AK$(:_UI&T%N`4 at 8Q&HFY.!W%`@D.0SSE#O>.H/XAY$,QSJ/OVD&Y
+M9QZU at SR]@VRM":7>5,;P^7HH52`#"!V/SK>T3FT`8T!M+"+;^_K$9"H$?;2T
+M$XZX#.L7HO+_2/NV)<F-9+EP#U3W#'=71Z]ZT;/^_Y=D)CM++KF\SW179;@D
+M1H8E, at L@FG8P35HU&H5+(B/CYN'1(A:[7!K'EQLH:7DSG,GP2$K#VZPCZYPS
+MTPR!'*H]B+:\S#J&)AI3ATU).1YVPUZ:$P,8RCK7I-T,7G2OL`!<J/Z(FGPT
+MYJKW49*B$9"`5:H);VWY_NHM(X2#\`S7\QO<_;OO?C70]"P`AP@$Y'4"1DWF
+M]#"TSCDL`+?9.3^7^5&JMPS7!2'8.12FBA47D`(.`P%'%6JD#B60ARB?;9DK
+MU,10EMF8S/[E;"\7<;\>#8#U1+,!8$]=C&8DYGKP,8/LK'JE2G\K5)LRH=94
+M:?^C'A4E3247M'([4]>-(*?97"H$(#!7/`SO#A,#ORIJM&/,%T)+PWT)Y+/9
+M!,#&\JP5F!+*.Z'R%4[6U!D-1`V=_OOG37,C+5A?*&.M7M at 5$(<,V%LZ!4+$
+M]S_\:L?1_SA%O:W76L4()ZSU&*?52?]W+%0]@"IT_/',P7F[(1U8NJL)@(SF
+M3IA[%+PXL`#N5K1#[407PJE*"18(AJ(+9WH&15F]R[$*F6F?$/V#!9H.0'T=
+M%*R93,1AXW)UL9YTVJ)R`*R$S"O",\_.0 at 4B;/)R<QFA^S1EZP)7>(L9P@:$
+M]%PM(PR4/ZY0]E)^X;1N:`W&E(=P5JN&OAEI at KX^]DPL8:$Q.;`\=:B6H9$N
+M2]?6[7YO_Z\LL*#D'V=\W?4 at V76>G5+M^/.&V+R at -ETF]+.A:%Y[/KP5F.=Z
+M&X[T9.AJ34X6L''0-Z_;9D[V]4^%`'6C4%ZCJH"[*A1Z&-1E41Z%L#-O8)1L
+M8RI`>%-`1,_CTZRI>]T!==&NN//3L,H&_F:"[W#RK'+@`!<"8H4<1D at VCP#^
+M=/TSB%3%*]>D.5=F?NP+'/9WN=BBB5<43K)8P^A9O$0K!(D*N#LGV>K!AZR[
+M67/?4 at WN@3(R"C,ATIJ'U,A)4`GY>WG9_O7]+ZT]SZ]KE1)C!WG`D"U<2^`E
+M=VB=J(Z<?0=/'3 at KB?$!6`5^5#S.VP&![QKBKKY&QI-<R'+%V#_E!B]CK\<W
+M1"F&Z1\`=Y.J&5B8`E$5'`7VN%N$\>4VS%5.W4I)1H3)0%D, at M%2+\-"6EH*
+MQGFDF^9U7,;"J#+,-2CH6%0J`SLQ15/98<%,1/H1?^NB.;63P/X.Z][J`MG`
+M$$_?Y5/((A9I'.,)2'GO,8P"4<4Y7%&H`/SOGUQFU'E=CV$.:^=;')X\"2BV
+MV_;M=[^J6Q`7VTEOL*5D[SR60U_:^@$?183I-`&SZL`5A;M^[^/;M00N.:IY
+M__IX&T3S0#`BD!2]D;]PUX`>N>02FZ3<`T`H&W)YW\YM\P"L68#%M=MJU$I-
+M[U*+^UZ""=&=IO*N,A%2]",5U71&5L_<#$Z#4F^%=H7(>=B8D`$@L^AYPBZ0
+M>[-3!@O3!+G:TTQYR7`<):9#@DZ:NN'`?JN_CKF;!Y][@\+<+0B(3QM@"F35
+M(@5,;72)Y*,9 at 7BI4$L`8=1&O-\?/_[KBR0#=>+OG9N($5CWK-3,U-I at HUYW
+M#>_9%A-3UM,8?IP![:!,^?"QCM3 at 83#F_%;W4#N%"3,]PE91$TL)M%!2,2$B
+M2=*BL8A/]]%V6<HB:5&A&:#OD42ZK,$(*B./@MC#<7)2LM`>"":I6+^8!A)!
+M653*HUBU'!5M at 9II\@P=V^2)$4<V$I`&D at K(UJ?R[/9`QWB.XSJ2650D78?C
+MB"?5UT,.4EJD)O6Q-0F<O4%JCP$%!?`__OX""P!O;R&X),5)"5S(.&A'9*0;
+MB>W&?W[[RW`<5X9%3`38J^VM@)ZGW>KQPC`$:55'PJGO=&&@7DE@!5V'>"R/
+M`!U]47L=JI7T50+/JM at .]*T`/)6\;.@(LE(I+*`JMTC=Y3191#E4BP4R:K(@
+M!8V][LT32F6)G$'K1IU8=.J@&"B7T&"(<7/E at C)C'5U\L-B03FJ:[L4NL\R>
+M`L;!56DF&H`%*+'D)=>A.U_E(L*`0QXG/;W)X@*S9T\=$"H['(@:"JOH+3!Q
+MZ4WEB#(C4G&#TF]WY?E/<6'$?M4@;-MP?[3OO_VZ:KJU(Q+KM,L\]B-HBYYS
+M^CCAJ/^KE;+Q7.NX;"GLDYW5Y]6D"7EL<!_FY5>`*!77CNO4C_DH,`/`"JV]
+MATY!#!JL%U9PY/0G7+^D@=-*("DEI1_Y@`")-`F1*K3E%)(,A(1T.S4!5\J/
+M4E3BRW<Q*-_Y+U at D</I@\S&I/#$AN\J-U](-9K]#Q$C[=J4<F'O\'YJ+83),
+M4-5)<A16IFF)J]0?F2;383.;]1E'-/B;;UZ=P[N3YOZ/.";F)!QF+Z_X][^_
+MO-_U/!^7J.8$[EV6Y3,LVKJZZ2C#MD\\\,P)7PS1<S0>K9,1+'KI8"A/[-7Y
+M/I'VF,^'**Z+%J]9$C?"9>I8F`:3K(QR41:990ND#,3<*:[RAR-.462E,"B#
+M&G(@Y&9R6$@$HE":*;;<FW`S6P,!82A&&+`RH.TT'DE)1V$Z&&HBRF2GY3`X
+M`&H;.```2Q%@K"'*7=\./6N4)5+':IBD@#!4.LLJY=R&O((QU-,)==OHD)L!
+M>&LJ7BSK9\)1`2^"!E*^_?]$?"0B>/).=9Z4UY+$$T)GAN at J@;I(/,Q7#P1G
+M?&=<EP6&L$KX:0L:V0=Z)\GDZZY3.H7UTD+`SH70""*3@`PO>5*#&#"QZL="
+M7=7%\Z17A>^LX.#(8CZ`P>)3]\@R6C4:),2HU>B*IZQBH=P#F?+6!@AJ8F2@
+M($;$HA4#=K+>$E at 2P0=-N?>*0GC./IG657>E&RY)TY(3S]3E)(T+9^ZP70YG
+MQLJ,#)FY`+Q^NE5C;_WRY0[+5\.ZRMKF#13!VPW__O'K_=ZN>I6S9$!]=7X.
+MP!YX67I2!7&=>%@S;Y+E7"$/,ALXUCQXUOE'>O698>2D=6A'!8OUW>(CO- at X
+M.:NGFC"3$:R^F,C%9E.+G<NG019*E=%$,XV%/YZ`5#1K`0AD1(01[('/:!F-
+M#$E5-]'_BX(4H[@]7&4?8RC)T=`704?+Y!:[B"+E%W]NV'`IW"Z\4FTPC0S9
+M\-#BO#QGZ?LG6-'6L[C[)ZL>$+!O>\+E@)D-,>9"B\'K\?G3!H#HSJ+D.T/K
+M(#!#`M)MXW??_A[6=A[LBLLYH6R5S:"0&%*^&6(&@M5"4'[TQ[<8<!7FK\OM
+M+?=YR)>W<&3&^,KP]Z[;IPE/#@OL:02`PV",X5I2B0Y0\DVHY-5&``1A;L32
+MDI8^^8:0D2"I-*:J*RA)`M6NT$'""*0WJ*EJ@>D^6K&`PP!N#O/>=0B.J;)6
+M!95T`QQ*F>S_'YL`C4F&X1SG0PW>+L)X4;443T4QAQ+8)X<XRG`MI`.`991N
+M&7ZBE%?AB7][V,2(#EB`#%I[F.IO99/,[XX$@K1_?O>;K;S at JAGN'PM(<@5D
+M8\A>_:S,$A\G.#P,A(QN1XOU00B&VLYN?I+`TZ*D"PQJX..,C-=/NN7]EM$M
+M!R0:+4R"0#`4\L[#'6:(Y&\R1E4H8&E4%'.KHMXM)@_9@`;W'B85Q'U504D+
+M*H4%&E7Q(1U82FX"$,U;/R6,$P_!@']"!6MQK<-"%&;H)"`Q(K//Z>]SDA@*
+M`W:P;H/AN#`%!<`-(!![@/L<V\0N-!9_^_R:H2Q'F/#;_=&'<,$&2B0!O3I_
+M^JV]OSTF(.\'*K9.<H!6H\(_8]PQ7))0G(9>Y&8:^J>H29:$Y<F[4Y%.8Y]I
+M>%XUKO"E,VFB,;#6>9Z5UUP3/7%S212DENGGS-1`!G=)<"`R,$/D7ZAB"[9(
+M1Z9(F;P;SB4J3IEM-[N_=_ATIO(C@@;11NW%^J at R8Z$G;)E2(RXG1&KQFR&B
+MR+?S\GCVT?L%>5!I&C,]6TQPLK4GR.%,$_Y<=6#F7\(QT74]Z:0?H;%C\F.U
+M;5N:ET3G]GT/LEZ*(6K\0)*T>-AW/_W><7"\6$WV!F?M&>5PA_4'&3V=*%*)
+MPR90?R7]H$.&2`T<+$VG^E89:F`Z.G\!&WIF\<:I=L44K*(.O$;Q60-O4%B7
+M8Y>RR"#-Q$1:8`_4E`RB"I$+@`H!>;4]#XH[(R2%"`5(=I[96I)3-*HL@[UJ
+M"J8%8TX\(_W$3B<%&.LE.5T1LBI9B))(C*%1E>9'K)4'(ZLUU6NMN-!#XTJX
+MR";+!D#^&/*+G4($`IJ,,:Q1OA)B?'KU?#"Z59 at ZM(/V.S?`2-QN^.67M]]_
+M?Q^!Q at NE-*_T8XYQK0!:@8823E$OUQ)X4C at V3W'-[VJ,Z_'*6%V2!=EI#F9=
+M'8Z[U>]JQT\JK;"WZ=9;6240^X8P&A:.;.?Z[B`@%0Q-]0="UE)?/;OR*JY(
+MDDTBV5H#:56/:V4,(:H/H\\\K0;ND)^2!NH*4`\NJ((Q4B$?]PNGD,F794E6
+MQZ\NFRBL7!YQ-4V5J,W11NX:8WE`A"Y5U#^';APY1[>Q[U?U\L+J_YWQ8_U^
+M[Z5FR>"<NWV#(O[Y[5=3#+SE>;RJ=LYD5,A17>`-7.H]S]RP_Z($SFF&!0W(
+M,_"M41.ZI8ZY=`7!$](=,UPE)$[!<HCGH<AC-B?54=MF%EU,QH2DFO4`6JJ.
+M]`:1BM&YBU:U%*[,9Q.6V.6H:>U$R$A()0!5'J`"*['+7<U.(108:0"AL*!4
+M:JN:IJ1,FVL']!KT$*KI6[Y!/`'!6R=LO.!=6+>*?QYA!<>>L4BMQXUO>DJ@
+MJLM+'7P28Q!IW/H1V0'&8%_NC>E&`Y!`O/R1A'C_6C8DXMP/I*3=HEQXO/(.
+MEI88)Q at C'"\]Y@<9%\29'SB71'"64@%^M*ZM.1()'[(YQ>E7*$P&'!;F2II`
+M?(=22ME5*\A]4]@-9/E1*EO1I-YI+"!!+I<D2G?XZ"-K#PN5\$#-(ZEC<@<E
+MJ](B"N&RQFH^#U3!3G21&R;XM/B)@)VVT,I76]6T[1EPR&*S81(M=CGLLBY@
+M5&^<1_!TO'IS7ESY at 9JWJ5@5\[1K>0^$0C!.0.<#$(F_O at XF1I*0J at BW\Z%_
+M?L'W/W[]\=V4R*H<IS.,UM(JPT!%B8%I%!:MI!B7$E@/'E&_<]C8/OIR7VO%
+ME?87P'E,\N0AQ8_%8_B4 at SDJWQG>DW;0JKB,[M34[>6VF[E!6,.ODK5J_,<N
+M6!2;2U&U?VJN$:L57)3+9$D-5=?>P#L>-, at 8Q5E(RM()+&NVY&\LF>/Y#\91
+M>0P$>3?8L*74-05(2`^%6R?T;0 at W%R*DI)>*B6GA5`<^-?W5/O?UU[+/0\H'
+MQ>Q:!:?I<CBYF9<7W]/7NL%J,03HU.N-_^<_?Q,$VS(!W>UV#.SU^<-J,+A5
+M3>I![!'VH:WX/CCX6Z)&D'N(9EPBMFM,KC-[--/Q>GJLAP\KRL:QP'%W/12F
+MK1[HHO1CU:M9Z;)5J:A!C#!9HRA8HF>2M+"*CR*S=U*&;UR>%=0QW!MT+`$W
+MV,.,^.,BQF!$$"[;CT)'V>R-18,61!I&]+0.J)SU at .17![*07-Z4:!TTR64U
+M3:/6*I,YT/8QTORX7^#7*!JF+I"`][L3UM%>IT4-SODR'\<AU["C5C/N<`<*
+M"NMD0 at R^QF.C;S?[X8?W]_NCGB%@-/1RQ&L8EPD3%(%/*]%%6D_6]AAM*82#
+M#'H4[91`R@)^5!+!IYU^'+=<7=R/%!^O-NU2E!0XY7A;<!V]^/U<#6*5\,XM
+MG_IP&ZTVPLP[!RZ:43UH0@,"S5I]O2>S%!WT6;'3\O0(!&"0=\H_VYP1:$EZ
+MJ,0TJ at GT1VOL`I#\^QC-:I\B!:/NAD9A![-5SF!/=<N>*.=3.1\MXJD\#),O
+M!-4L/-QHG)'*^&!A:)S-ANL]7!I%O]Q<(7,C"!C0W-QH#/_^IR^/UE!4'I*>
+MRB!P%93/)VP!XH0`1M+S4@)C%7\0!F7:MIU:"1QYH!"!&;?P[%F<MZW&AQI.
+M7'/4#PF\!A40YR;N^L6GD[*X9YB';2E"T=3#_6G^N1#L9DEGC?8PJ5OP()5U
+M at 8I`$1VY>R2$E-`C>/-(:J5';-MV;^\D.R)#0F7-"SL*057&46'!"`++VEU!
+MSYE=1\8T=)ME1#["S-T4DG99`+$X.\(R?_]LK`]*D+G:I90E]E'!/8</SZPC
+M`1]E`:L3"L*!!.+E=3,9O.>(:-A`F-V;_?-?OQ<9?0\K`'B29YU%+)=V*P>^
+M(['P3<5L)8C]ZGWF5/>X#ZQ*N-)O:1U>0LS"S,]4]`4V`)?-[>+/JB1P6HK%
+M]4G%?7<3>M83TC=(4K/TL1K,W"1C).9/:=>D/-9(A4&DJX5R9BL):Z2(=K_?
+M7K;>^LC16B,+_CNX"D<E,:K288_4<[+X(2N>BZ<'[GMJA)RFEHMF1*)[=DE.
+MP)BPGQ/P[<IN*9HB]X$6L63DU\C^96>BZZVF(`Y*#5Y>O1Y#`$"`<.GA^/6W
+MNU1U+9*N_=MIW;GFTB:N]/;TE5V)%D^E;YP*TWEP6%']?$4N5,BG$G@]Z"LN
+MHU[$2>6^GBE/!4%75Z,JS4N(,#B<6V7,B#_VF'*F83ANK3)+%)O%'&*F(9S6
+MPCIO;,!D;JVI(P`VBP9*C<@4JQM;!(%'B+OF-CUJ&6@*@A:%]9 at 98Z6^C(1%
+MM6_J:`&.6M at .,9"[U1IA!HV^H at Y$DL%%A'#,W5!4=-C!'WB9\KK6@=?6SL&J
+M[(Y=.$$P$A9-CYLVVW[^^7V(TP$GXN28!)9H1SRE*("%1^LHDL'AN4(KD,V?
+M(B*+3.:LT^XT%`JYA-RWFM/[!*!&J""_>,8D<FV+:EX@?#4N8U>OP9-34*,R
+M1Y>]*%/QT at E@<T<V0 at JS32:Q01$J=)4U&6IBRN5A7;[*_D at Y5$Y21*\6;(+#
+M#&@--#?737H\+!"(M(%O4). at 3'</"G?/U6*C_MCVU"\S:M0'>:EZ83]L8J7A
+MAK<O[P8L`A8(RL)<91A/:^$IZQ[MKVP`_BI%DF`XTH$D;R\T"Y)`@A\4]]@V
+M.BSLK at M;"]"0P!-%M.=W+EJ$,OH*$GX`2J8DZFQP%JK(02DOSOJ-"SMUC<:A
+MSMWO@[!*^[4M>MZ7.P_7>:WN]?YNV,62DQB4:`3IYD[2G/S\S0V`.S9`!"`'
+MR"[Q2/YM*'^,,@=)8?*>=R4+;LQ/01HADMNV&>#NY@`+R`_TH`Y)!\D:]_P\
+M.#2C.N;G?<"(:2MPL[-V#'I"F-]NMWH'J.P^F5U0$0-Z+T.Q.'V$=2_^C$CH
+MPRW5B066S4,W%7BYT422"DAV?Y<9W//;_/I>D^]$&V0Z-6!'$KBR,`@1)JCR
+M$!0PIZZA*8A"Y8A?;A.2:<-1[V%>&0[+Y,9B.F*W[<4L<"F!XTC9]7;A'R+6
+M7=)`K1`&DLP2]XTW?/['2X3>?KM#O6QM`[,9K at P8Z].#YH(9Y;)H,(LIE-]-
+M&/8>$$SY4)/H9D![`!7\Z2F#B308I at 0#-++K*$I%=CBR(-+Z6 at 1AI^A at 4*I)
+M:R"WFR)0\)LH.B?/VD!6!YN9:]AG355_*,GBKG/CGM$20'9B"+ON!R0IAX!I
+MT!4'QVR%^NV6N5/],>:*AZ'<Y_2IO__AR^[D7`CD^Y%Y/SC4P'QB'S0])3,`
+MUI.RB$W.4)NL;^F0&LMLQA)&GLJO@&+EO8R]EX6U:[9YD)H/JQM4=)3B\#_Q
+M3.^_Q-[.O7U-J4AQ/#5!T$`X<PF.UK:-;!!)_AV__?HN(%*2J;Q(!`!$!.G2
+MN$B/0%;<&^I&'9ER#Z?W6,HC<&,\Y)OKT>`0I>CP4:E$/\J4QE:,P]WYSO!1
+M2!/6<877#!D<42B$WQCD_?U=%JGUB@&@2364H`W<!J?0QO6VDLL"IBO4TL@[
+MY^'#K9H9*3??MHSQ#N;E`N6B]. at RN0<-^>FJOP[:L!C/866HH'1_.J"61=%P
+MEBRG$!=ASQ1%'".KC\W[\SUGP\X:$,"JY_(.[_+4/'"5P+4G[/E6 at P9J#)JZ
+M!((;2,&JS*"!VK#!9=:L`7_[Q^N7W^]`4H^Z.OM,/(K)`KTH'DT2 at F0DR+2`
+M\]0H,"PR&?F+V]ULLQ?9`\AHJE*0(O+,$D&80M7.584#`9E]#EG.H49#"%,H
+M[9'A.E?[7:'G.<SI[BT"'1,F&=1`(@9=@$OMF:47F!.2RS95J14A!P_FRD'4
+M1W6U4:Z.G0+D=@/,,_NZI!;@&=RVC?CER[W.NK!LC`L)T)$9I>D&EDQ-C$$P
+MSWW1Y34UMP(*0*8S;;`8BCDI=.8\PSBJ.D>3CRJ\DJ:S\Z(>\D2:J0,DE@[?
+MU-K&/.:LX%$T#S&32J+HQ6#L>"8XBSHII(#Y=H,]8&'F0;/X_,UV?XO[`Z`>
+M=R&_+(M(P[0W0B'R:J+4DJ1Z[O=*\NW+VZ=_?++&N\(W0U at 8$30-(*&1D:JV
+M\X#G:RC^Z4!*(.3&,+%;:^J]2SO8$J96E&W+^$F];FYS>X]=KXL1JI@@RU*9
+MD66FUJ8+H$DM!,!Y7KZN6UIOIUL,NR-O-P<LFIFU<EEGAZH\9D at __?166="1
+M?I#%`JW&*B&JN.(9AP5R$`HG*-ES[T37<9.FV`G>S-.SBLCJCR9R;Q$,851:
+M[EJ[Y[7^\B:8+D3W""B70W%\]PM3V`@IYX?B;=B,Z)YVUT0NB7)N/3YB#I!V
+M>_6_?7:S\$U=GCS#,^#P_L#TV,KG(":L at F1?O[S1S;9XN5$9?R%!L+8RJUA6
+M`M"9ZZ<_P8K88B<8,5<Q&"EHSW&0#JH1-&MA[O#;EA,]+UW5A6Z3"3).+OTI
+M^9^&U*6NF4T^E`G$YZ_GX<+N2^AED-O&V\TC(D+K%4=@C=9'RV at K]W?`=!G(
+M)8UN]'UC!@'[`B[58A2(0.PD<,X5U5:?=3A6>$9UB?DSB;4,<-1V6`<DV+[W
+MT0=:*4^DZZD+SR/>G'_2"ABN at B04N='X$8`NV_%,ED4:G-@$$Q&P:/G%KO.W
+MF[-1V\.:B[+-^#`+VN=O;E^_/$"TNSIW6H^Z2(1::O346^JE?]I7IBG>`\&$
+M,+ULC+!FMKUX>W]T at GJCK"DH:3)"O)E8DUNJQK_I8Y)S@][A2"&@?5!AY9`G
+M-28A"S^@A,.<2EW)UT*P+9A4ZA>'+ at IV5<IGB$(!`+9B?UG(%U>B-)+IIQ,D
+M\X!E_H5;]9`Q7B9.4!V#D$\"+\45SVW)3AJ;4-6BYQP*SX7^\91=@C@:HX#\
+M.;%YJL<0$'7P5U*695^#=)_'5-EC8=+(`:H\O3GQ.'@WN!_D**\L50)!0$!$
+M9?3J#)L[V-0V(M1N4M,FM8?!^?EO+U^_W&U#>XAN"C3UMC4D998=9M7=;D>"
+M=3E2N'0T,X(1S9V]GNT13=KZ/*:@E,,</C63;;)=>I"]YY]ZI4]#\ML at 9\MP
+ML0?:;!$8R4RD;Z\OC[?W<KH\(E.;Z at +,S=J]%OO^Y1B"L#;E%F`A[)RBF#(<
+M1QV4-'XK9<_Y,(6)P#G!2;U3AM-^_C7V@;O`FOTKHD&N='+'90%AG2O>KS(L
+MZ]=7W@#"QDR/,HFQ2VVW?GR^J2,40!GJM^3I.&SC<^"8B7J^G_(XW/;>/J'2
+MP3H(AT+L8(3A0+B%`!K6I81+[I[U%NB]YLQI]W?FY0+`GO(0;JT!4(-YM,!V
+MT^,>DGUZO7W]>@]"04-S,$LNHC))QE8V>E1.:0S(^]?W3__MU2(VLID<`- at 2
+MEAA2!.80LD1X4(P(U9I-\_(FPB*<3'>P>+M'TWQ$:-+&73SS-!$/<.-MB_MC
+MWX-65$3T6%5//RBN0$^13TB8ND#-;1BTE)\MY/,$2"XLNE)@GZ4 at 9EZG7'Y5
+M[A_<^/.O7_(KBKGB8XJ\#A:\2[X)K;0Q,4YXG-N`V7F3LTILK,`1`L:Z0PUV
+MB6/87,P,%S at U.T]JL`'43CTCOZ/GCS5=:TD4UU4/^M4<Q+P8&#1+UO/AT*/U
+M4LRE%\6-"$/#AA8&M:#4 at P%4Q,:73YN^M`"B&:FT9"%4P-SWG4K=?<=9QM]_
+M^O+Y/S[!LV.UDOS^=G.8>B`G8E@=!1XW!C-[$2C$4%5GT])H0A=2E'0*-;PY
+M2PH3I0GF)]&IQKRNU:+H7M1(&_2(F+DM3#-2<&'IS!N`<L_:+;B\4&'?$WQ/
+M",*)H!+&DL`UK=^]:#G+=A5$:+HSSGKA`LTCFQK;QD%^S$>&5IIN3$LB,6:H
+MYRF%J:`YLT*S\AI+C9[P:IN0+_H"(B,`6G6DB.G@^;:/KEA=&,0B4L&1[,WG
+MU&!>--#*V(E'P&IPQ#D1=?-H(J*!UD(&=XL6&W&7@'#BY95O;X%`+=<PN%D#
+M+#567E,EXRQBE\>C.1DAFH%$8N\^W2(:8`A&@R3K8E.<%((R5N$R57OZ!0+B
+M7O53`L`<*B)"V at 5OL&\#7.%7?[VU]Z;VB!K49AT<"1,VJ at U/<C#F`='CP+%T
+MKJAA'U$TX$F$3AI<\X]-F3"I4*ZPUA<LB!!W`^Q?__Z2-D3)/YY at 8KLF$<!Z
+M]9I`L<[+(0-K8A9[N8*A=(A8Y293D<_<&^?$2E]6"]`4:W*H#%0:#)=136E%
+M,:T8.*D^'V3_5.MLMG[@A*H7#'%>O\Q@)[<K]%A/LR>N&L]\-G_XA`X$`[*&
+M@"-$6+-P<W-K+1PN?'KUKWJ/QM[5Q7/<BS*[[0CA9];/Q]MC>V%/Z;I$0*![
+MJ)%51ANPZ)5H83T'6:V(^FBI0<?=3WOTG'NV)$TNW,Y`J7G_XH_?[X27/RDS
+M5FI9=&N/G1Q*NZAFU,NIGAW(?V'"@?BEY$IG.:B(").[R\*9!O:*$2'Z1G8A
+M3/7Q]3'.!"P,,1KQ<0!+NF6^44E[I7?FCL[*?$0,$VA0ZQR69./HW,XJMEDZ
+MSJ\"M+98TM!+UTS6.LY#+A<B,)5-J_X*#B'IP2WL31L(K6;^S!PE`HC2@:D7
+MB)+`D$'CY'75@>`#E(<G!LHA;"DK`@E%!H5>/KEO$'KZ@\0(+Z`;71FQ)53S
+M+W[XSY_<G0[2^L]FM\^O($%VVXPR-U"@"+BY*%$F1F$ON*'[MU0^;8*,E->&
+M1SZ6DP`GG\1]MIFS3)&?7DR*A=@/1AEJDS1%("%-7'=&<O\.#D)_XB5WAL+:
+M(]1&/&/$QP7`"Y?4TB at B`>CQ$"!#$6Q3J$V80`1S'T7.G-RL/WG/1T#%J0YA
+MT2-C.WX2$M28P8C:R7T_8$P843T9A,\P&!X3)4WOCKESJ:*\`+,1.=(HP3GJ
+MY99YA?S_7D0-D+`_IHIW0)7/7Q(8&;R@`1I5%D)&1S=$<SW"G1$MX?E&D:PY
+MZ_2(9IO37HVN]W<CK2E(Y``.DI.,>B)4/0+C\4B64;ED\(*;T='"!OVV*`\I
+M%!#EU4G-0V%@#3IH%OXP47WI;OM1<Q9?QKY#D\)2M0[EEOD)O+[H_5W2)*(U
+ME!&QND/`J8UYV,I;K(/.<\$&LEOR3>8+*0E'YS-@(XV$.V'V\V_O^7>AGK0+
+M`)>"IBF?,,TS+N4+DRLH,TT2>/:DDY,YJB"4^*RP2 at W5G_+?TKQ)TA'3LG+/
+M)6EB53],IY(,.*GI)RZX#T]@L2)F0SH$E*Z'<N4J<#:;%,7?59C;9TC61 at .I
+MM#78L4&P%G='Z at 9FRS0W!:#P#9_H$M_>[A9F['1I3>J^4TCFQI`Y%&9\>WO[
+M],TG:\5IG^P7?__T]LM;\U[W9$BG:T.23,FW@*0'X!:E];NWD!#C9D+(\\.^
+M:,V8:="%%"S=SKU#S]OM!MR_?#VDXOO#*!W*9.%-\%UV>S8^`:%R67X5W6>_
+MD\ISM"9`)$=8'P)8'P@@;;XOCY;J"[*^2S(@%['4G`OM'^MN*>W[JZQ^$<>B
+M\T$6K,7<):L-BZ0=9X0(2<P13DWR%,`,@&*=#<_`;F"P4:RJ$H"8SW[($[E_
+MP'JH$7?):J.EQG_AO.#>D!9VES81\'Q!^>PM%-;A9*!3BF$Q$46`AVVC2;0-
+M[_<[25=+K\G#1&N*C!QZ6*/YAA:689>75RH at L;5H31MJ`:QF[XI.)/K=__[Q
+M?_ZO_X$;&&H6&_'(2[PX'M9D0D236?%RRPW6,P>@A'SBWD*=*O!U?@8M8F&"
+M2KIA!:8`Z<KZ&/'XOY5]78\D69*5';L>D5F555T]T\T.,,NR*_&$!I`0+&)Y
+MX(7_QG_ at B5^"Q!.O2"L!#S#2LCO36W1/UU=69D3XM7-HR:[)/S)R:L>[E1GI
+M%>%Q_?JU:U_'COG4II>WE\=32A!A4EA^K1;J<0,*["7W9 at 6IOM;T3T7#XU^4
+MP`I#[%(:(,W=L8J*^RC\TN0-4H/!*F=-E;^:/'8JG9\VT&89<N,D93R,;J67
+MD+?XAS3-W;_5=WF%&D]U@"O1OH)6-8Y?2$"=$>ZZ3 at 9SA7L"\OR8&30-^*:X
+M+^P`JC'L=NS:@V!KP_(KE<S at PA)6KF":(-76A`KFCJDB7H&YFB at 6C#81N4EY
+M.--A$]R2<32C'+.:`_(P:Y.B9\Y<#2*-E+NKJGZFJ4GJG>28\IR.W&-#F)I)
+M9LU%A91L&C<O;TZ?'MV=&16DD4`SAFWRZ3G2+;$58FR<,D%>A(^R.KA>2<W7
+MO7"'M9D?#?K4#K<W\^FL=?LWLP*(%UP(1$6KGP;?A0V6S5R_'VL/N-;"B`WO
+M&U.FI`:OYMYN@!K:!`B?'GO.FZT8RDNGH:0(N21")0/;THD4N;'?U-KY`C'^
+M[E_WX6#4''"+2=4UAQE7RP(K]Y7_E;#M.?FQX[;`*J=:?OAPB2K:L]5^7ZY(
+MNMZSH(Y%9ZIPFQ4471=G@>O(:H$M=B#DR1.+2+.#Q4P'Y-9H:J:`.864$8%F
+MS1!I;%2G"G<ER05U.#1)82"I3E5RM)GF,Z?C!"BI7\S4#D!/YY463HG&4:O1
+M(/:DWZKQ,VS=+C?<C?FL+00]44M(=[7P+OO,619=$3*)O:/Y\<7M_'A:2&X*
+M>>1+DL,%JTCHGG9Q_:)F^;EC0=G"]T]]U#NT)'!`%T%O[@D=G.!-A-EY#G?/
+MU.O*7TW?F1L5L=\O?->#QD:H=5.^`."Y7AKYZZJJK(4N[;@>=2V;OT<7+%E3
+MU'>N"P>WA5&^-1H%VT/)M4N9%LJW[D;#O;OFV%\=MJ1$E6R,<$<!60&?!LHG
+MTGD:%M$76Z]-#:;)."L;%U`912&\"#0)1R&!J)C,6>:W1,J3XMHA<TDM<P#-
+MI4P]V'SA=[_^W9_]ZA<TGQ*[8N9$-QY?W\SW%Y0IHO1"F154R-MV^:!="R-,
+MA3U'CHJI9+7-WHY=T`%CM7:JXJ'Z2128BIUM\NGN17\\>S!,^SC=.FOO at HHO
+M,\](6TVSAU!<U0#P)^M8$/+'0MD0PT(%#KAU`!8$W%%,R34$56AP6 at 2@Q$Z^
+M1"/79<KE)ZL&_SSW%4K\M)IJ)'ATE2'(9`2U*6($M*/3'=NDGF<9Q=.I(P2X
+MM"GL`BI\7<*S;B:QE_\TFSB<\,(Y+68)36.?Q5X^J_:[3K;ZD`/P@@=6B'M)
+M+U\G1URG8:;;HY_.QM;G;FC6LH)O:/Q"KC1":!.M)W,G:/*AJ10FA``/#8,.
+MYE(!'R8[-A=QN;?IE9!?3LDUF9$V3X+@`Z`W=?4QN<T$!R%$W@%;8CGKSIFM
+MHKN$]69/U5+9Z0&Q_MZ0EJ>5&EV`VLL;76CG$XH[2&#&1#;$I-`S*;4KN[M*
+MH at O4LP>RL?*\6,M"8A+<X4/NY]"EZ<9YGM&:@:`G7`*2H2)57'59\]KVKX52
+M/-$GE;9FKJ;?H\$<XLI/+J8,KNJ965)NOIKC<@4X(L^E47P=_ZBK78\S+S8G
+MC#OVLH:MQ0 at 7S4N*L:,C32(RRMQVK!W+^_9(5BV&)0P5@<,:AZAZV$_P&+L&
+M6]QVF#)8FXZ'Z70YNZ,U,9R9")Q:NQ`&09Z]`R8972Z at D71WNC$(F@/#.:1<
+M%HO.@&B)E1'T]NWWO_KE+^_O.T)"2S;AZ8#;%[=GG<V:=4A9*$R+7((62B!X
+MXG2$5)-4KM?4G&N94R8PB6((4*VG\C,DPQAN,6MQF;59.$Q'?WE^/$%NSIQT
+MYH:^LH]6>^(50$^]"X+):O\6X(O9F1OVDT3E]E+#Z*57R_N'.'S_[N,WW[SJ
+MT1&VY&_DD+&A_BP^LI)[X&F5JDDY)J[S(E?;/"B'Z\;JL%]].A=9]7R]/URB
+MK\X3FQ=US_P[<&;C*=YF[["!)F_78#3<9I<$6S6:6L;Z>UJ^UIC'ZX%&;*[*
+M:5T=]M8,P-,>.--Q\M<O;SX\S,U(@@@T7$*MF84U at UR-;I[0\;$=D`;))F?0
+M#2(%@S<%&DG0820PH;8_P?#Y_G+W]0V(3Y_F\RQK,$4[F!^<##0,7P]-3@@D
+MX6Z1H>!(=912"ME2]#WBH+!*DQ"IC8F"VTHY+ZH0712I6*1D+#'Y'C:UFU<O
+M^^.900Q&-B[M\I4JZ_I">;X>)_,'I01TK704U]#)*'<>@GMP[G-_^_;3B]OV
+MYLUM#PM)TH at 8H;A1<TVHXB.BME>6=J:@::/M;6-+.$:\C<HSUPP!+;L^F$\$
+M*/]ZW0IR23^(V/:4I^1XPEM=S.Y/-93:$^_[.J"4]G<C7"N9W!TT[1HNP]T<
+MC at 6SN98W:+?EN>E*@[0TYB?`#LUN&SY32;4FL!GHBZ<32)&HACC=!T]$<'*$
+M at 7".Y`*M.0354J6[#\RW_OK7[W[UKWXAX/6;Z:7:_4?J8FAZ<7?X'**Z`T8'
+MR2F[^3II\NYH'&S>=)-E_(;6#"EO',L,DJIV`!6HD/(E"WPT^/Q4X,=R+0;#
+MA:F'8'Y[;)AXBNB76BBE5U<(["M&J4QKA5:TWO5F.`<Z!TLIVNX*^8%,5,C<
+M$VMOPMOO/L&:J,>'_OAP;X9O?_%B:E/OH at PY-ZNZU0I$36L4WJ*Q'8Y69VIE
+MFX:]`-^$$:E=^_@=">*>%VL)F.[C0_5U%:3?MU]EN@]:1[GD^UUKGUB7N<F:
+MR]:W.=)T>AK7!:$2YRVW[9H,2F%RUV(2<[A+;C"4<6Y<:B.PSVO`M!BBZS%/
+MV1KM_O[T^M5/R8+IW(/5%`T']9C at 0<%Z&#RDUBR;H4T'BY"10S:,3@=$9FYG
+M``0I1RD/DQGAL+_]OQ___C]^TPBYW;WQ^7<TH0&'FVF6H@<<E2IIP7`WH)')
+M*U4X&'+TX at Y"E:Q>>(<,*"YJEE#`Y&Z%;BPVIT#-RYI)K1A`:`U^>W0=^NE<
+M2P);:RU/:DW(C7PVA4;?@D9]4-J-T)"P+L]?'MCXJ@*.NB--@*>D@/[#]_>P
+MP^NOCG>O;GHP`J-<I6WT&:4:X`;(MBRVVNOKJX'ZO/(Y/@T;RI_ETH<@.+`"
+M2EY%D^VK\*!\HA5&+E4IT<;V5WHQ'WR!@@5L[4TLZ01L(;#+Z%LN$0T.759,
+M542E+MV';8^%]L:GEN3RRTPZGJW@%N`;&P?8BJ)/+<AIPMWM%(_=)#,7V9P6
+MS4RMN872UAX)!5CBPQGFS90Q/3H at N5#$P0U+HQA4CO;=]P__\$^_KE`;WOS\
+M\/''668WMY-FBB/JCO2?O85HL@:+6%#YZXK5?+,3PB(#"[C8S6(`-`H[/+JE
+MD<0XI1VF7C!(,)!R40V'ER\8$:>+=(7#:7G\><%:>26CM0<+">J5J]#0.PFL
+MUFB^LN)@7OSB[S^<=UW*I#!-0GS\>/KX\?SRU>'KKUZ&HO>5GUQ!,FIL1&57
+MBI*71O%4?5$5TDLO@,!N8\^3E2N[9 at Z4AELD<V<,H[S?9?^2`]BS3A4_GNK)
+M[`I!ZA[WE<W/TVRO(Y0*Y?A]`^/>[Q=HACKE&D`E-&VY%TK=M1T<QYSNSW>/
+M-9MNFL\7O;YSV*&3#V>BR<-Z`+!.`QM`!,UP,2')\-U3M3$B:X$2/156L/%E
+MUU5K*`*11O)O?OWN'_V3-P>.^JPWWQX_?^QV[K=W1]V?NIQCVI68$&_ at S-8P
+MIIA$<W#)::D2.&B+;>#F-!6&2JE$Z!!S/0^EJGTF682/B=6P[449"/?IU0M2
+M=KZ$`A4.&;7YOLCA<VWQX-9*,2<,`/O*-)1`HIR-P0S4)I?T\'F_"VR!`7BX
+M[P_W'P&[>7G\YN<W$>JT"%--9U7K#8M=/M`/JF*2VL%4MZ)%VQ0D,$^:RMA+
+M$9!_,;*RH`*<VJS(O.%=4$K;#_LU@:^4P)</[.A'Y"@K6]?X]7+7SO>L0II(
+MH$NS=:<`Y at XR.K6XKX8*`;XO%Z[?*`!W2#Y-'NJO;J?+?)ECU#V[H8%AX1P@
+M\2,U&]CD(C'4M)'6'"[2D!6W;5)PY)&H83%#F:_Z\.[\R]!T-(0%(>K%5S[_
+MB`9,-T<[]SYUAKF<EDZA-#DZT<P&RG4PE8XT_>AR-VA?RE*E&YCUDR$;A`):
+ME>0..>RJUDXT(K?O-(18#F"A+D(.Z,7-E'[C>3:'3/`-*I58RK#4MI4K._C/
+MZL^"VHR5,A0#1LK)'5MKTE<URT]KCGAZG'_SVTMK[=MO7AZ.-E,]S`7(DU!.
+M*(R_89%!2="S`%%5P#6QJ6N*V^>!0<2N9XM4'O75 at LF$"Z[+]C`RPDJ91P''
+MF!]U__WLXQ4)TS.[A(K:1S6$G>,J5. at .S04W0QY++\`5/^/JP;81^_.5T<H-
+M%;+GK?S'__;YTCD=<)C\,NLRQ[M/T<5NUCMEWGLGAZ<[R]39E4:C1T081#,R
+ME$=Z^4,^"FX)I73$B$53^&?_YH\D]=!,)T':IP]S[[K_<%)7F"PD,4(6EM]/
+M5MZ=59BOFH@`R=1WXA)^2,B,ZHC$\7.S-X<I3[L*#,#U6ZX\8Z#Z#??0W/,Z
+M.WYKUP)9OLY3JD7ZH`WT<@#Q(?CDD#?<3-[%M[^]+X]G06RO4N?YIXI&0!7-
+MM9_]_-6+E\YHYQZ%%Q%E*72#0T"#H("F+^#7Y,_(',7KW!,U/_Y\6_)]V=33
+M;Y3KF88T>TJ+=>I?*O$8OTH at J'Q`5QOI;D95CR2%IC*EL0*7<]W88&,A@[YE
+MK"SQ&U$W=TR'R0"[!%_='LS"S+^ZPX?'V4)(HP^.)IHIT$(Q^2'4Y92RI5,X
+M&-[, at L5ZKP;4UDH0(YM.#!,(P@^_^?SM+^^F9M:L=YGA]9OVX8/=O;E]?'\!
+M&5-Q at +I:D"4/DN6*D0C('<H49H,"9D875(5(OEKUCA8BW)I)2I7G1*M at 4DYF
+M1G.]GM\J8C],E_Q;%$1OKNG&#;W/[-%*LK1PA&_SSK[I5U"NA+;@YZ'WT%JN
+M6_<FQ_>_>5P6%NH:GE=8`Q3R5"!OWAWP=^]/[SZ8FW_S[>WAX'-G1,XCAMZG
+MR93.9ZO=1'I&G,"K, at FX.>N>"N at L)\I3+XTA:=]Y6]L_]]>OF"-H];/^L>T[
+M[Y90E<R"J*+GU3X)SWG74R*0,H"V>T31BU2CVA7\$)"PR<D8'8;J=85QF",O
+M8ZVAN;7!B>N0^=%T.)@L26GBX(=W#WT.401L#H.<;LW, at YPD"C'6%*1NE0U.
+M]`M'#H`:,1/`*3JGE**0WKY]O+V[_=G/#FYDMFRA?_TU'T_M,KN=S&D!!*AN
+MFMQE`$7KH@\!;R)I at H\I9G/D[$AP2*(UA3`:?1N!:="N&@)$@N[A"[`;KIP_
+M$PD`)7YH,*F9DZM]3L.D\S;Y-%D>P>A]F*:D`ZQXH:@-:T-%<%2K-*-Z6E'1
+M&#R=:AK-BVL,BR6;JX'#,"LK"I/68B/E%;Y_>Y^ZZ.7=S>O71PA=02(0$B1;
+MI=V'<)?3`ZM#VU2A(R_N2!%>,\)F2&-?X<YM72]+GWORH^/9_ILJ?=A2!,J,
+MA*0%4%IC$)Y6A"Q1DQ%RT$;9+<4D->QZ+`Z7P5AJ3=6%(`70E9^J"\&KB1$<
+MGN2CS7%PEV,R/LQ\]SX>+[/)IT/VAS`<6U**V at PTX^/<S12$S":`M,C02_8D
+M4T3SS!FP[!XR=05`UV)LIRP:E'L(2!E`ZJ]^_>.W?_[W7`:SLZD+/-K=P8';
+M]S]<8HXV"I%)4S51U('>,[(N`C[$`$`!+H-,Q!9CX.:HEO:A5VA@<-))HB\Z
+M"IZN[.#C][;;^U7<G#G16^"HK.*?UKQ-1U/I;M(I(]7,N(F at 8HO,<E\JCUMS
+MRYY6#G=\_'""5\ERY=V3#;^TV5#O%819'9OB5J42_GQ__NE_;W9[>_OJ]70\
+M3$&+D,Q(9<R2DBN7LJ]`6,MZ72_PM>T@:9RX7A7E6P;1MJS<4K]:QT^W\$,8
+M]EITU()41B$/:L/$H<WN4<*VLSAK:+4[UIUAL$SDNA)1. at _8:/F2.G//!XKF
+M:`T.N=GY at A\?+J?''N(B\^#4@*DA3`>'IA&Z</C7KX[O/E[F88")5FML\@AE
+M3;T?G)G5<03'S at 1!@]3>5+MI8*F"A#NR57W#__S+]__T7_[LF. at LU^7B9O;R
+M%6YO;K[_;IXOLP0X>A!5DB/C1`64YE8CV1HHT9'YC$,3320F<T(B,BYJE:B'
+M&56,B;5NK`B"TTR=:MD%?7)CLUK at PMA%Y3!"3F@@B42 at -.WB:0`^N=E4+8K2
+ME!4K&M+4B%KCJ0H=`Z2=4MCP^13F;4\"(16!`J]S%I>_M!)%#$?9$E[3'AY/
+M#P^"^\WA\.JKP_'0)/8PTJ"J3ZFBQ1*KIY;V4 at F?!1\A`FW=`U0KA at LS%>]2
+M,UL&JG(94WMPFV4=13;8B at TLGV*137`%^_%JM0,KV=OYX4N4R%??M"%2@'O:
+M2$`ECVE:\XZ[#[_)X3Y,33AH1!?>?[P\GB(8!0"HFZKQX#_]CSDBYL!7=XU4
+M-T2WN;-W7GK\[M/Y/%LG:0A9A!A&RT5N8D8[$&2&JX:<Y)%Z28GXUDB'5VXF
+MWQ'"MW_TXH__](YFE]"%N)S#P@@'\.G'^/CC.<9;:6$]-`S`T#AMJDT:DM91
+M&2U'GJS0"\J\XA@)I54O!`(@N0_)U`4WD;'Q2:]T!<=7$V&1T0(O-4+LD%EK
+M)ZXPW*5FTF'Q9C?3)+??_LTGK/.9+E0(RF+5WZ*.O03B"19L5*;1=H<F;_W5
+MZQ=W+PYP(SGW5.=<FZ!2OM at 5_CC-GD[:54C-IN+_^6[^W)TO/;N#!^3CO-(8
+M&'MFT#UGW/98QSBS95WV,,NCR`KD&]XM2_S,P1L`B1?QXX=XO,SBAH^6>*99
+MS7_^7^=NTW'BBYMVZ<;."]6)2X_HFCL_/?8/ITXB1)(BNB2!M"[2/'%>8:*E
+M#-B0#7,CTHR50%*P$'*A9DR2I&C_X(]?_/)/7LR!LW29 at 3["!#/C_#E.]^W3
+MQU/O'/HCDL3;5'I`JFY!5*4H$<R"`A1EO2KN5TM!B)%GD<K/=[-(W2Y325T5
+M90>K#"-E+\IT1*5A!,^L`2,W)<M[3%&LI9\8Z!*;6BB2J@\TJO.'M8;CT7_W
+MXT_*ZK+*`C,]SZ(RU(Y`9;^^@6M=+)]D%^1/">IA?CA.7[T^'F^F;(X5M(B@
+M("W6J:1%$E8'S8OQJ1FU%8,FQ5KZ:HWNJW[V`VN":B\@-O*YNB:`)[?C&R=0
+MFSIFN$3`E^(&.0&XC_8I*"%W6&OMX+G\+`P/I_C)MH]\(OXTR^/%2*\K at 65P
+M>GG;;FX<\*`9;#9, at O<P.%VM>7-GV$/ODTQ^.,]QR*AI at T<N!HL)3@^3,!2+
+MCZ="HE&BJ;5,`X`3HNL@$,/`>/O=XY_\V=T$-MDTX701PB0>K$UNQCC>'BZS
+MW7^('D80;-Y2_(1(?T^DU-8%WFX$21E(`H.L434P"#ZA9`(LP.!P4)#VYABS
+M)*D")*0F%WF0#WX=-Z_^2I3)U``RQZ)#@^26'BB:RYJ91MGNIEZVFMXHA;ZU
+M-C7!\/B869!!*B/*N.:NA8WC60USM9_S%[)\=5S._8?+!=8$N[V97MX=?_J9
+MMG?2Q#'&7@,L;9XDK0"`K1G,%0*P8)+D&QWH:]HN<"5+V%(K+5R;\*+&K/#0
+M&C?WA&];#C=<;6VGP3CGYO4H!&])WC>A.9HFB?))BDN_O'_?SQ>1:T2>ZO7Z
+M<*[1K=<._)?WFFFDI5\>0I=%:)X94G2[D/UB'Q_ZI\=.*622]6"G9!82*2IE
+MSU0V4I at T[,],&"@/9G4 at 4GT9F0K4ILG_];_])HRGT&4.LO4N"2&0/'WJ,8-4
+M=)U.^OR9O<]&B(C4L$H[=2BDS%B)IM)G.3E+M8'4=SV")#DJ2>A&,=4*B7I*
+M'+5:J;*JM&VP[D1:UQA(O9$G5C5G:<A8.9<QY$%J30T&>;D9@(Z'*:BWW]WG
+M(-3++UX:<>X;[@K<J\']RJ`YOISZ*\I0%&GR!E\@M<EO;J87+XZ'@[=$C8LT
+M<(BE2),MZ4QIT74KH^^ZQA/,]KW[-[XHJN\'P:?4&]@E.8$]+94-9K,,<R:.
+M-%'+Q<4Y9#',@[J<Y\\/\SQ+TMJ4W=&H$\R![W4 at 4#?XY`#Q7]]+!6*=:5'_
+M=UH/ZUU!G3M[UVGF#^_/I%&*$,V")EG"]RDQ[4R9*<4!0RY*1#,$DE+3ASDQ
+M-G-*+V_;/__S-PJ>Z1=#=.NS**,H^N5SG!\I4Y_%0%"]\_Q at IW,P+&U2EDBG
+MM#%=OE`%,360N:#*2Q,$H3"\XKJD1PD:]CR=9TEFW(E/O*/R/A$5-R^P19ZW
+M6+U?4B7&?8EM>G4J=FL-T^13P]OO/S\^=G4Q6.NRQ`-ZPIKQA-'P*6V?XPOY
+M]TU4TDW+1ZZV at L@SWC`=<#BVV^-T.,!1:8Y!(I*A&@]RP1NN/<8J'2EH6T$M
+ME%.B2N.`V[R>R[9H),E]SXX!M.*"1,4R&ZSYN+71H5-B<`X[G>+2&:$"4#Y;
+MZ[BA]G%M^X45Z<:JTO_J3H?__EYAUF&4C1=FHEUH#.NR'C:']:YYYIG\_G=S
+M#X9!G3%\/T10AA28J`AY2$R7K"`80<G`\><(VYB!^9/"A'__%U^?H;/9#.L7
+MNW2CS`(F/3[$Z2&Q.1;=2)$(BB&&2)TO%IV7BRD4U!A&5YA<&#II"5:G:[$Z
+MIX6!9O.<M3!'D84;%L9'J&I(4RP'@#3@/@P!T,`40>2*S06D2!:^/`TT3$B:
+M8YL:1/R?__V#$5:8TG6IQ],^#8OD;*%R?Y@$+NH.5S]RC;7)!)2PT`QEU#>X
+MW&V:VO'0#D<_M-8:W&5PJ"0-H*QF9C$KI7V:PV3:V)R&+?G&R.JA7#AXZ2N3
+M0-G<>Y\3Z<3>18;DJV)()#XEAXB<5>JY0(XTOH*@"X(J^NEB2:FO'H3\NA!:
+MO27,0A80#6$VFRATVMQ%HM-.LRA[]V'^^/FBC"N&9`@E1I1,:VTD\Y$"2)9,
+M#D@;<N%&/@&9`*J&`?V'O_C9HUG(SK(S+7HZ?];5^HF?/G6C at FGU&<."8H#C
+MRV1,Q)OUD,E[J/?HLZ);#RD0EN*TDK@"<GLV at W"U"2N#T7RC"&#@B+C(J*$A
+MJP$"*?1+5Y4S,G_F@*/>+*T#2Q5D4QO<A1YS1`2IO_WN7L+51NI;":PWH%DV
+M^2PDRA\@@;4L_E`AE"\0FZ42#WC6T$U?%`Y8:TVFJ<&]36[MF/@1'%JK,*7Y
+MA)TF<5E?Y4OF>>Q-E[F;682%B9VB50[WV:,&OF%>735R*O:WI\HLH1Z%7UVI
+M=8X2$]4D@/;\@;]\/_:M6#<:EP*@69C-9@'KM#"=+^KT3HO.O_Y_9Y)#K1$T
+MDQ@":4P-4]K/S*)`GC2+D608Q4=1>8+T`,WX^D[_[E^\N;B=P\^F2U?00L at L
+M_*7KX_O9W$B:H]-`GR-(4U<(-!-3SADS*$1$:KJ\4T:%[`CMZ%*$8DCATFIJ
+MZ',GBWN?B(B:<E_$B1Z7(,S+*R;'11)<6P-)TST_`F_6:E\@[7R:+Q<>#P#L
+M_G[^\/[Q&H25:R&LA,3SG((KP^S+$EC_]`4)W`EAI==3P`;IP?/']N+#2Y.Z
+MNU=QDVWYNR(%@[@>:GJJK+1^N01XM&6OP?:,#_96<]24/FD^N=UBH`6FMP79
+MITGT13G\_Q<H\@+ADSFR````!W1)344'U`D."C$D7WV';@````!)14Y$KD)@
+!@@``
+`
+end

Modified: branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-bin.install
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-bin.install	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-bin.install	2007-11-21 19:32:05 UTC (rev 8018)
@@ -26,15 +26,10 @@
 usr/bin/plasmoidviewer
 usr/bin/solidshell
 usr/bin/startkde
-
 usr/lib/kconf_update_bin/khotkeys_update
-
 usr/lib/kde4/ion_bbcukmet.so
 usr/lib/kde4/ion_envcan.so
 usr/lib/kde4/ion_noaa.so
-
-usr/lib/kde4/libexec/kcheckpass
-
 usr/lib/kde4/kcm_access.so
 usr/lib/kde4/kcm_accessibility.so
 usr/lib/kde4/kcm_background.so
@@ -47,9 +42,9 @@
 usr/lib/kde4/kcm_info.so
 usr/lib/kde4/kcm_input.so
 usr/lib/kde4/kcm_joystick.so
+usr/lib/kde4/kcm_kdm.so
 usr/lib/kde4/kcm_keyboard.so
 usr/lib/kde4/kcm_keyboard_layout.so
-usr/lib/kde4/kcm_kdm.so
 usr/lib/kde4/kcm_keys.so
 usr/lib/kde4/kcm_khotkeys.so
 usr/lib/kde4/kcm_ksplashthemes.so
@@ -64,38 +59,31 @@
 usr/lib/kde4/kcm_usb.so
 usr/lib/kde4/kcm_view1394.so
 usr/lib/kde4/kcm_xinerama.so
-
 usr/lib/kde4/kded_khotkeys.so
 usr/lib/kde4/kded_networkstatus.so
-
 usr/lib/kde4/kgreet_classic.so
 usr/lib/kde4/kgreet_winbind.so
-
 usr/lib/kde4/krunner_bookmarksrunner.so
 usr/lib/kde4/krunner_calculatorrunner.so
 usr/lib/kde4/krunner_searchrunner.so
 usr/lib/kde4/krunner_webshortcuts.so
-
 usr/lib/kde4/kstyle_keramik_config.so
-
+usr/lib/kde4/libexec/kcheckpass
 usr/lib/kde4/libexec/test_kcm_xinerama
-
-
 usr/lib/kde4/solid_bluez.so
 usr/lib/kde4/solid_fakebluetooth.so
 usr/lib/kde4/solid_fakenet.so
 usr/lib/kde4/solid_hal_power.so
 usr/lib/kde4/solid_networkmanager.so
-
 usr/lib/libkdeinit4_kaccess.so
 usr/lib/libkdeinit4_kcminit.so
 usr/lib/libkdeinit4_kcminit_startup.so
 usr/lib/libkdeinit4_kcontroledit.so
 usr/lib/libkdeinit4_khotkeys.so
 usr/lib/libkdeinit4_kmenuedit.so
+usr/lib/libkdeinit4_krunner.so
 usr/lib/libkdeinit4_ksmserver.so
 usr/lib/libkdeinit4_kxkb.so
-
 usr/lib/libkscreensaver.so.5
 usr/lib/libkscreensaver.so.5.0.0
 usr/lib/libksgrd.so.4

Modified: branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-data.install
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-data.install	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/kdebase-workspace-data.install	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,6 @@
+usr/share/kde4/apps/desktoptheme/default/widgets/battery-oxygen.svg
+usr/share/kde4/apps/ksplash/Themes/SimpleSmall/Preview.png
+usr/share/kde4/apps/ksplash/Themes/SimpleSmall/Theme.rc
 etc/kde4/background.knsrc
 etc/kde4/kdm.knsrc
 usr/share/applications/kde4/kmenuedit.desktop

Modified: branches/kde4/packages/kdebase-workspace/debian/kwin.install
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/kwin.install	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/kwin.install	2007-11-21 19:32:05 UTC (rev 8018)
@@ -94,3 +94,38 @@
 usr/share/kde4/services/kwin/videorecord.desktop
 usr/share/kde4/servicetypes/kwineffect.desktop
 usr/share/sounds/pop.wav
+usr/share/kde4/apps/kwin/blur-render.frag
+usr/share/kde4/apps/kwin/blur-render.vert
+usr/share/kde4/apps/kwin/blur.frag
+usr/share/kde4/apps/kwin/blur.vert
+usr/share/kde4/apps/kwin/circle-edgy.png
+usr/share/kde4/apps/kwin/circle.png
+usr/share/kde4/apps/kwin/explosion-end.png
+usr/share/kde4/apps/kwin/explosion-start.png
+usr/share/kde4/apps/kwin/explosion.frag
+usr/share/kde4/apps/kwin/explosion.vert
+usr/share/kde4/apps/kwin/invert.frag
+usr/share/kde4/apps/kwin/invert.vert
+usr/share/kde4/apps/kwin/lookingglass.frag
+usr/share/kde4/apps/kwin/lookingglass.vert
+usr/share/kde4/apps/kwin/shadow-texture.png
+usr/share/kde4/apps/kwin/sharpen.frag
+usr/share/kde4/apps/kwin/sharpen.vert
+usr/share/kde4/apps/kwin/trackmouse.png
+usr/share/kde4/services/kwin/blur.desktop
+usr/share/kde4/services/kwin/explosion.desktop
+usr/share/kde4/services/kwin/invert.desktop
+usr/share/kde4/services/kwin/invert_config.desktop
+usr/share/kde4/services/kwin/lookingglass.desktop
+usr/share/kde4/services/kwin/lookingglass_config.desktop
+usr/share/kde4/services/kwin/magnifier.desktop
+usr/share/kde4/services/kwin/magnifier_config.desktop
+usr/share/kde4/services/kwin/mousemark.desktop
+usr/share/kde4/services/kwin/mousemark_config.desktop
+usr/share/kde4/services/kwin/shadow.desktop
+usr/share/kde4/services/kwin/sharpen.desktop
+usr/share/kde4/services/kwin/sharpen_config.desktop
+usr/share/kde4/services/kwin/showfps.desktop
+usr/share/kde4/services/kwin/showpaint.desktop
+usr/share/kde4/services/kwin/trackmouse.desktop
+usr/share/kde4/services/kwin/trackmouse_config.desktop

Modified: branches/kde4/packages/kdebase-workspace/debian/libplasma-dev.install
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/libplasma-dev.install	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/libplasma-dev.install	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,4 @@
+usr/include/KDE/Plasma/View
 usr/include/KDE/Plasma/AbstractRunner
 usr/include/KDE/Plasma/Applet
 usr/include/KDE/Plasma/AppletBrowser
@@ -41,24 +42,26 @@
 usr/include/plasma/taskmanager.h
 usr/include/plasma/theme.h
 usr/include/plasma/uiloader.h
-usr/include/plasma/widgets/borderlayout.h
-usr/include/plasma/widgets/boxlayout.h
 usr/include/plasma/widgets/checkbox.h
 usr/include/plasma/widgets/flash.h
-usr/include/plasma/widgets/freelayout.h
-usr/include/plasma/widgets/hboxlayout.h
 usr/include/plasma/widgets/icon.h
 usr/include/plasma/widgets/label.h
-usr/include/plasma/widgets/layout.h
-usr/include/plasma/widgets/layoutanimator.h
-usr/include/plasma/widgets/layoutitem.h
 usr/include/plasma/widgets/lineedit.h
 usr/include/plasma/widgets/meter.h
-usr/include/plasma/widgets/nodelayout.h
 usr/include/plasma/widgets/progressbar.h
 usr/include/plasma/widgets/pushbutton.h
 usr/include/plasma/widgets/radiobutton.h
 usr/include/plasma/widgets/signalplotter.h
-usr/include/plasma/widgets/vboxlayout.h
 usr/include/plasma/widgets/widget.h
 usr/lib/libplasma.so
+usr/include/plasma/layouts/borderlayout.h
+usr/include/plasma/layouts/boxlayout.h
+usr/include/plasma/layouts/flowlayout.h
+usr/include/plasma/layouts/freelayout.h
+usr/include/plasma/layouts/hboxlayout.h
+usr/include/plasma/layouts/layout.h
+usr/include/plasma/layouts/layoutanimator.h
+usr/include/plasma/layouts/layoutitem.h
+usr/include/plasma/layouts/nodelayout.h
+usr/include/plasma/layouts/vboxlayout.h
+usr/include/plasma/view.h

Modified: branches/kde4/packages/kdebase-workspace/debian/libplasma1.install
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/libplasma1.install	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/libplasma1.install	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,4 @@
+usr/lib/libkdeinit_plasma.so
 usr/lib/kde4/plasma_animator_default.so
 usr/lib/kde4/plasma_applet_battery.so
 usr/lib/kde4/plasma_applet_clock.so

Added: branches/kde4/packages/kdebase-workspace/debian/patches/01_kdebase-workspace_branch_r739381.diff
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/patches/01_kdebase-workspace_branch_r739381.diff	                        (rev 0)
+++ branches/kde4/packages/kdebase-workspace/debian/patches/01_kdebase-workspace_branch_r739381.diff	2007-11-21 19:32:05 UTC (rev 8018)
@@ -0,0 +1,43595 @@
+--- a/ksmserver/shutdowndlg.cpp
++++ b/ksmserver/shutdowndlg.cpp
+@@ -323,7 +323,12 @@
+     // this is a WType_Popup on purpose. Do not change that! Not
+     // having a popup here has severe side effects.
+ {
+-    setWindowRole( "logoutdialog" );
++#if QT_VERSION >= QT_VERSION_CHECK( 4, 4, 0 )
++#ifdef __GNUC__
++#warning Check if qt-bugs@ is lame enough not to handle a report with a patch attached for months and months.
++#endif
++//    setWindowRole( "logoutdialog" );
++#endif
+ //#if !(QT_VERSION >= QT_VERSION_CHECK(4, 3, 3) || defined(QT_KDE_QT_COPY))
+ // Qt doesn't set this on unmanaged windows
+     QByteArray appName = qAppName().toLatin1();
+--- a/ksmserver/startup.cpp
++++ b/ksmserver/startup.cpp
+@@ -180,7 +180,6 @@
+         return;
+     kDebug( 1218 ) << "Autostart 0 done";
+     upAndRunning( "desktop" );
+-    upAndRunning( "ready" ); // desktop is more or less ready at this point, tell ksplash to go away
+     kcminitSignals = new QDBusInterface("org.kde.kcminit", "/kcminit", "org.kde.KCMInit", QDBusConnection::sessionBus(), this );
+     if( !kcminitSignals->isValid())
+         kWarning() << "kcminit not running?" ;
+@@ -342,6 +341,8 @@
+     if( waitAutoStart2 || waitKcmInit2 )
+         return;
+ 
++    upAndRunning( "ready" );
++
+     state = Idle;
+     setupXIOErrorHandler(); // From now on handle X errors as normal shutdown.
+ }
+--- a/ksmserver/server.cpp
++++ b/ksmserver/server.cpp
+@@ -585,6 +585,7 @@
+ 
+ KSMServer::KSMServer( const QString& windowManager, bool _only_local )
+   : sessionGroup( "" )
++  , logoutEffectWidget( NULL )
+ {
+     new KSMServerInterfaceAdaptor( this );
+     QDBusConnection::sessionBus().registerObject("/KSMServer", this);
+--- a/ksmserver/server.h
++++ b/ksmserver/server.h
+@@ -134,6 +134,7 @@
+     void completeKillingWM();
+     void cancelShutdown( KSMClient* c );
+     void killingCompleted();
++    void createLogoutEffectWidget();
+ 
+     void discardSession();
+     void storeSession();
+@@ -205,6 +206,7 @@
+     bool waitAutoStart2;
+     bool waitKcmInit2;
+     QTimer pendingShutdown;
++    QWidget* logoutEffectWidget;
+     KWorkSpace::ShutdownConfirm pendingShutdown_confirm;
+     KWorkSpace::ShutdownType pendingShutdown_sdtype;
+     KWorkSpace::ShutdownMode pendingShutdown_sdmode;
+--- a/ksmserver/shutdown.cpp
++++ b/ksmserver/shutdown.cpp
+@@ -83,6 +83,8 @@
+ 
+ #include <QX11Info>
+ #include <QApplication>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
+ 
+ void KSMServer::logout( int confirm, int sdtype, int sdmode )
+ {
+@@ -437,7 +439,9 @@
+ 
+         KNotification *n = KNotification::event( "exitkde" , QString() , QPixmap() , 0l ,  KNotification::DefaultEvent  ); // KDE says good bye
+         connect(n, SIGNAL( closed() ) , this, SLOT(logoutSoundFinished()) );
++        kDebug( 1218 ) << "Starting logout event";
+ 	state = WaitingForKNotify;
++        createLogoutEffectWidget();
+ 
+     } else if ( state == Checkpoint ) {
+         foreach( KSMClient* c, clients ) {
+@@ -449,6 +453,7 @@
+ 
+ void KSMServer::startKilling()
+ {
++    kDebug( 1218 ) << "Starting killing clients";
+     // kill all clients
+     state = Killing;
+     foreach( KSMClient* c, clients ) {
+@@ -483,6 +488,8 @@
+ 
+ void KSMServer::killWM()
+ {
++    delete logoutEffectWidget;
++    kDebug( 1218 ) << "Starting killing WM";
+     state = KillingWM;
+     bool iswm = false;
+     foreach( KSMClient* c, clients ) {
+@@ -520,6 +527,7 @@
+ {
+     if( state != WaitingForKNotify )
+         return;
++    kDebug( 1218 ) << "Logout event finished";
+     startKilling();
+ }
+ 
+@@ -538,3 +546,26 @@
+     }
+     killingCompleted();
+ }
++
++void KSMServer::createLogoutEffectWidget()
++{
++// Ok, this is rather a hack. In order to fade the whole desktop when playing the logout
++// sound, killing applications and leaving KDE, create a dummy window that triggers
++// the logout fade effect again.
++    logoutEffectWidget = new QWidget( NULL, Qt::X11BypassWindowManagerHint );
++    logoutEffectWidget->setWindowRole( "logouteffect" );
++//#if !(QT_VERSION >= QT_VERSION_CHECK(4, 3, 3) || defined(QT_KDE_QT_COPY))
++// Qt doesn't set this on unmanaged windows
++    QByteArray appName = qAppName().toLatin1();
++    XClassHint class_hint;
++    class_hint.res_name = appName.data(); // application name
++    class_hint.res_class = const_cast<char *>(QX11Info::appClass());   // application class
++    XSetWMProperties( QX11Info::display(), logoutEffectWidget->winId(),
++        NULL, NULL, NULL, NULL, NULL, NULL, &class_hint );
++    XChangeProperty( QX11Info::display(), logoutEffectWidget->winId(),
++        XInternAtom( QX11Info::display(), "WM_WINDOW_ROLE", False ), XA_STRING, 8, PropModeReplace,
++        (unsigned char *)"logouteffect", strlen( "logouteffect" ));
++//#endif
++    logoutEffectWidget->setGeometry( -100, -100, 1, 1 );
++    logoutEffectWidget->show();
++}
+--- a/kcontrol/dateandtime/clock.desktop
++++ b/kcontrol/dateandtime/clock.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kde-clock.desktop
+ Icon=preferences-system-time
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/clock/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/clock/index.html
+ 
+ X-KDE-Library=kcm_clock
+ X-KDE-RootOnly=true
+@@ -56,7 +55,7 @@
+ Name[ne]=मिति र समय
+ Name[nl]=Datum en Tijd
+ Name[nn]=Dato og Tid
+-Name[pa]=ਮਿਤੀ ਅਤੇ ਸਮਾਂ
++Name[pa]=ਮਿਤੀ ਅਤੇ ਟਾਈਮ
+ Name[pl]=Data i czas
+ Name[pt]=Data e Hora
+ Name[pt_BR]=Data & Hora
+@@ -123,7 +122,7 @@
+ Comment[ne]=मिति र समय सेटिङ
+ Comment[nl]=Instellen van datum en tijd
+ Comment[nn]=Innstilling av dato og klokkeslett
+-Comment[pa]=ਮਿਤੀ ਅਤੇ ਸਮਾਂ ਸੈਟਿੰਗ
++Comment[pa]=ਮਿਤੀ ਅਤੇ ਟਾਈਮ ਸੈਟਿੰਗ
+ Comment[pl]=Ustawienia daty i czasu
+ Comment[pt]=Configuração da data e hora
+ Comment[pt_BR]=Configurações de data e hora
+@@ -148,67 +147,67 @@
+ Comment[zh_CN]=日期和时间设置
+ Comment[zh_TW]=日期和時間設定值
+ 
+-Keywords=clock,date,time,time zone
+-Keywords[af]=horlosie,date,time,time zone,datum,tyd,tyd sone
+-Keywords[ar]=الساعة,التاريخ,الوقت,النطاق الزمني
+-Keywords[be]=гадзіннік,дата,час,часавая зона,часавы пояс,clock,date,time,time zone
+-Keywords[bg]=Keywords=дата, час, време, часови, пояс, clock, date, time, time zone
+-Keywords[br]=eurier,deiziad,amzer,takad-eur
+-Keywords[ca]=rellotge,data,hora,zona horària
+-Keywords[cs]=Datum,Čas,Časová zóna
+-Keywords[csb]=zédżer,datum,czas,czasowô cona
+-Keywords[cy]=cloc,dyddiad,amser,cylchfa amser
+-Keywords[da]=ur,dato,tid,tidszone
+-Keywords[de]=uhr,datum,zeit,zeitzone
+-Keywords[el]=ρολόι,ημερομηνία,ώρα,ζώνη ώρας
+-Keywords[eo]=horloĝo,dato,tempo,tempozono
+-Keywords[es]=reloj,fecha,hora,zona horaria
+-Keywords[et]=kell,kuupäev,kellaaeg,ajavöönd
+-Keywords[eu]=erlojua,data,ordua,ordu eremua
+-Keywords[fa]=ساعت، تاریخ، زمان، ناحیۀ زمان
+-Keywords[fi]=kello,päiväys,aika,aikavyöhyke
+-Keywords[fr]=horloge,date,heure,fuseau horaire
+-Keywords[fy]=datum,tiid,tiidszone,klok
+-Keywords[ga]=clog,dáta,am,crios ama
+-Keywords[gl]=data,reloxo,hora,zona horária
+-Keywords[he]=clock,date,time,time zoneשעון,תאריך,זמן,אזור זמן
+-Keywords[hr]=clock,date,time,time zone,datum,vrijeme,vremenska zona
+-Keywords[hu]=óra,dátum,idő,időzóna
+-Keywords[is]=dagssetning,klukka,tími
+-Keywords[it]=data,ora,fuso orario,orologio
+-Keywords[ja]=時刻,日付,時間,タイムゾーン
+-Keywords[ka]=საათი, თარიღი, დრო, დროიტი სარტყელი
+-Keywords[km]=នាឡិកា,កាល​បរិច្ឆេទ,ពេលវេលា,តំបន់​ពេល​វេលា
+-Keywords[ko]=날짜,시간,지역 시간대,시간대
+-Keywords[lt]=laikrodis,data,laikas,laiko juosta
+-Keywords[lv]=pulkstenis,datums,laiks,laika zona
+-Keywords[mk]=часовник,датум,време,временска зона
+-Keywords[ms]=jam,tarikh,masa,zon masa
+-Keywords[nb]=klokke,dato,tid,tidssone
+-Keywords[nds]=Klock,Datum,Tiet,Tietzone,Tietrebeet
+-Keywords[ne]=घडी, मिति, समय, टाइमजोन
+-Keywords[nl]=datum,tijd,tijdszone,klok
+-Keywords[nn]=klokke,dato,tid,tidssone
+-Keywords[pa]=clock,date,time,time zone,ਘੜੀ,ਸਮਾਂ,ਸਮਾਂ ਖੇਤਰ
+-Keywords[pl]=zegar, data, czas, strefa czasowa
+-Keywords[pt]=relógio,data,hora,fuso horário
+-Keywords[pt_BR]=relógio,data,hora,fuso horário
+-Keywords[ro]=ceas,dată,timp,ora,zona de timp
+-Keywords[se]=diibmu,dáhton,áigi,áigeavádat
+-Keywords[sl]=datum,ura,čas,časovno območje,CET,SEČ
+-Keywords[sr]=clock,date,time,time zone,часовник,сат,датум,време,временска зона
+-Keywords[sr at latin]=clock,date,time,time zone,časovnik,sat,datum,vreme,vremenska zona
+-Keywords[sv]=klocka,datum,tid,tidszon
+-Keywords[ta]=கடிகாரம்,தேதி,நேரம்,நேர பகுதி
+-Keywords[tg]=соат,таърих,вақт,минтақаи вақт
+-Keywords[th]=นาฬิกา,วัน,เวลา,พื้นที่เวลา
+-Keywords[tr]=tarih,saat,saat dilimi,zaman,zaman dilimi
+-Keywords[uk]=дата,час,часовий пояс,годинник
+-Keywords[uz]=соат,сана,вақт,вақт зонаси
+-Keywords[vi]=đồng hồ,ngày,giờ,múi giờ
+-Keywords[wa]=ôrlodje,date,eure,coisse d' eureye
+-Keywords[x-test]=xxclock,date,time,time zonexx
+-Keywords[zh_CN]=clock,date,time,time zone,时钟,日期,时间,时区
+-Keywords[zh_TW]=clock,日期,時間,時區
++X-KDE-Keywords=clock,date,time,time zone
++X-KDE-Keywords[af]=horlosie,date,time,time zone,datum,tyd,tyd sone
++X-KDE-Keywords[ar]=الساعة,التاريخ,الوقت,النطاق الزمني
++X-KDE-Keywords[be]=гадзіннік,дата,час,часавая зона,часавы пояс,clock,date,time,time zone
++X-KDE-Keywords[bg]=Keywords=дата, час, време, часови, пояс, clock, date, time, time zone
++X-KDE-Keywords[br]=eurier,deiziad,amzer,takad-eur
++X-KDE-Keywords[ca]=rellotge,data,hora,zona horària
++X-KDE-Keywords[cs]=Datum,Čas,Časová zóna
++X-KDE-Keywords[csb]=zédżer,datum,czas,czasowô cona
++X-KDE-Keywords[cy]=cloc,dyddiad,amser,cylchfa amser
++X-KDE-Keywords[da]=ur,dato,tid,tidszone
++X-KDE-Keywords[de]=uhr,datum,zeit,zeitzone
++X-KDE-Keywords[el]=ρολόι,ημερομηνία,ώρα,ζώνη ώρας
++X-KDE-Keywords[eo]=horloĝo,dato,tempo,tempozono
++X-KDE-Keywords[es]=reloj,fecha,hora,zona horaria
++X-KDE-Keywords[et]=kell,kuupäev,kellaaeg,ajavöönd
++X-KDE-Keywords[eu]=erlojua,data,ordua,ordu eremua
++X-KDE-Keywords[fa]=ساعت، تاریخ، زمان، ناحیۀ زمان
++X-KDE-Keywords[fi]=kello,päiväys,aika,aikavyöhyke
++X-KDE-Keywords[fr]=horloge,date,heure,fuseau horaire
++X-KDE-Keywords[fy]=datum,tiid,tiidszone,klok
++X-KDE-Keywords[ga]=clog,dáta,am,crios ama
++X-KDE-Keywords[gl]=data,reloxo,hora,zona horária
++X-KDE-Keywords[he]=clock,date,time,time zoneשעון,תאריך,זמן,אזור זמן
++X-KDE-Keywords[hr]=clock,date,time,time zone,datum,vrijeme,vremenska zona
++X-KDE-Keywords[hu]=óra,dátum,idő,időzóna
++X-KDE-Keywords[is]=dagssetning,klukka,tími
++X-KDE-Keywords[it]=data,ora,fuso orario,orologio
++X-KDE-Keywords[ja]=時刻,日付,時間,タイムゾーン
++X-KDE-Keywords[ka]=საათი, თარიღი, დრო, დროიტი სარტყელი
++X-KDE-Keywords[km]=នាឡិកា,កាល​បរិច្ឆេទ,ពេលវេលា,តំបន់​ពេល​វេលា
++X-KDE-Keywords[ko]=날짜,시간,지역 시간대,시간대
++X-KDE-Keywords[lt]=laikrodis,data,laikas,laiko juosta
++X-KDE-Keywords[lv]=pulkstenis,datums,laiks,laika zona
++X-KDE-Keywords[mk]=часовник,датум,време,временска зона
++X-KDE-Keywords[ms]=jam,tarikh,masa,zon masa
++X-KDE-Keywords[nb]=klokke,dato,tid,tidssone
++X-KDE-Keywords[nds]=Klock,Datum,Tiet,Tietzone,Tietrebeet
++X-KDE-Keywords[ne]=घडी, मिति, समय, टाइमजोन
++X-KDE-Keywords[nl]=datum,tijd,tijdszone,klok
++X-KDE-Keywords[nn]=klokke,dato,tid,tidssone
++X-KDE-Keywords[pa]=clock,date,time,time zone,ਘੜੀ,ਸਮਾਂ,ਸਮਾਂ ਖੇਤਰ
++X-KDE-Keywords[pl]=zegar, data, czas, strefa czasowa
++X-KDE-Keywords[pt]=relógio,data,hora,fuso horário
++X-KDE-Keywords[pt_BR]=relógio,data,hora,fuso horário
++X-KDE-Keywords[ro]=ceas,dată,timp,ora,zona de timp
++X-KDE-Keywords[se]=diibmu,dáhton,áigi,áigeavádat
++X-KDE-Keywords[sl]=datum,ura,čas,časovno območje,CET,SEČ
++X-KDE-Keywords[sr]=clock,date,time,time zone,часовник,сат,датум,време,временска зона
++X-KDE-Keywords[sr at latin]=clock,date,time,time zone,časovnik,sat,datum,vreme,vremenska zona
++X-KDE-Keywords[sv]=klocka,datum,tid,tidszon
++X-KDE-Keywords[ta]=கடிகாரம்,தேதி,நேரம்,நேர பகுதி
++X-KDE-Keywords[tg]=соат,таърих,вақт,минтақаи вақт
++X-KDE-Keywords[th]=นาฬิกา,วัน,เวลา,พื้นที่เวลา
++X-KDE-Keywords[tr]=tarih,saat,saat dilimi,zaman,zaman dilimi
++X-KDE-Keywords[uk]=дата,час,часовий пояс,годинник
++X-KDE-Keywords[uz]=соат,сана,вақт,вақт зонаси
++X-KDE-Keywords[vi]=đồng hồ,ngày,giờ,múi giờ
++X-KDE-Keywords[wa]=ôrlodje,date,eure,coisse d' eureye
++X-KDE-Keywords[x-test]=xxclock,date,time,time zonexx
++X-KDE-Keywords[zh_CN]=clock,date,time,time zone,时钟,日期,时间,时区
++X-KDE-Keywords[zh_TW]=clock,日期,時間,時區
+ 
+ Categories=Qt;KDE;X-KDE-settings-system;
+--- a/kcontrol/background/background.desktop
++++ b/kcontrol/background/background.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 background
+ Icon=preferences-desktop-wallpaper
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/background/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/background/index.html
+ 
+ X-KDE-Library=kcm_background
+ X-KDE-ParentApp=kcontrol
+@@ -143,63 +142,63 @@
+ Comment[zh_CN]=更改背景设置
+ Comment[zh_TW]=改變背景設定
+ 
+-Keywords=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
+-Keywords[be]=фон,працоўныя сталы,колеры,відарысы,малюнкі,шпалеры,баланс,кэш,некалькі шпалераў,background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
+-Keywords[bg]=Keywords=фон, изображение, работен, плот, работен плот, background, desktops, colors, colours, images, wallpapers, blending, balance, cache, multiple wallpapers, pixmap
+-Keywords[ca]=fons,escriptoris,colors,colors,imatges,paper pintat,barreja,balanç,cau,múltiples papers pintats,mapa de píxels
+-Keywords[cs]=Pozadí,Plochy,Barvy,Obrázky,Tapety,Směšování,Vyvážení,Cache,Pixmapa
+-Keywords[csb]=spódk,spòdlé,pùltë,biurka,farwë,òbrôzczi,tapetë,mieszanié,pòdrãcznô pamiãc,wielorazowé tapetë,bitmapa
+-Keywords[cy]=cefndir,penbwrdd,lliwiau,lliwiau,delweddau,papurau w?l,cymysgu,cydbwys,storfa,papurau w?l lluosog,picsfap
+-Keywords[da]=baggrund,desktoppe,farver,billeder,tapeter,blanding,balance,cache,flere tapeter,billede
+-Keywords[de]=Hintergrund,Arbeitsflächen,Desktop,Farben,Bilder,Hintergrundbilder,Überblendung,Pixmap,Cache,Zwischenspeicher
+-Keywords[el]=φόντο,επιφάνειες εργασίας,χρώματα,χρώματα,εικόνες,ταπετσαρίες,εξομάλυνση,ισορροπία,λανθάνουσα μνήμη,πολλαπλές ταπετσαρίες,pixmap
+-Keywords[en_GB]=background,desktops,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
+-Keywords[eo]=fono,tabuloj,koloroj,bildoj,tapetoj,kolorŝanĝo,tenejo,rastrobildo
+-Keywords[es]=fondo,escritorios,colores,imágenes,tapices,mezcla,equilibrio,caché,tapices múltiples,mapa de píxeles,pixmap
+-Keywords[et]=taust,töölaud,töölauad,värvid,pildid,taustapildid,üleminek,tasakaal,vahemälu,pikselrastrid
+-Keywords[eu]=atzeko planoa,mahaigainak,kolorea,koloreak,irudiak,hormapaperak,nahasketa, oreka,katxea,hormapaper anitz,pixel mapa
+-Keywords[fa]=زمینه، رومیزیها، رنگها، رنگها، تصاویر، کاغذهای دیواری، مخلوط، توازن، نهانگاه، کاغذ دیواریهای متعدد، نگاشت بیت
+-Keywords[fi]=tausta,työpöydät,värit,kuvat,taustakuvat,sekoitus,välimuisti,useat taustakuvat,kuvakartat
+-Keywords[fr]=fond d'écran,fond,bureau,couleur,image,papier peint,image de fond,dégradé,cache,papiers peints multiples
+-Keywords[fy]=eftergrûn,buroblêden,kleur,kleuren,ôfbyldingen,behang,ferminge, balâns,lyts ûnthâld,meardere ôfbyldingen,pixmap,grafysk
+-Keywords[ga]=cúlra,deasca,dathanna,íomhánna,cúlbhrait,cumasc,cothrom,taisce,cúlbhrait iomadúla,mapa picteilíní
+-Keywords[gl]=fondo,escritórios,cores,imaxes,papeis tapiz,balance,cache,múltiples papeis tapiz,mapa de píxels
+-Keywords[he]=רקע,תמונות,background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple,wallpapers,pixmapעירוב,איזון,מטמון,טפטים,מרובים,צבעים,שולחנות עבודה, 
+-Keywords[hr]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,pozadina, radna površina,boje,boja,slike,slika radne površine,preklapanje,prozirnost,balans,pohrana,višestruke slike radne površine
+-Keywords[hu]=háttér,asztalok,színek,képek,tapéták,színkeverés,egyensúly,gyorstár,több tapéta,pixmap
+-Keywords[is]=bakgrunnur,skjáborð,litir,myndir,veggfóður,blöndun,jafnvægi,skyndiminni,mörg veggfóður,mynd,punktamynd,bitamynd
+-Keywords[it]=sfondo,desktop,colori,immagini,immagini di sfondo,sfumature,bilanciamento,cache,sfondi multipli
+-Keywords[ja]=背景,色,色付け,画像,壁紙,ブレンディング,バランス,キャッシュ,複数の壁紙,ピクスマップ
+-Keywords[km]=ផ្ទៃ​ខាង​ក្រោយ,ផ្ទៃតុ​,ពណ៌,រូបភាព,ក្រដាស​បិទ​ជញ្ជាំង,ច្របល់,តុល្យភាព,ឃ្លាំង​សម្ងាត់,ក្រដាស​បិទ​ជញ្ជាំង​ច្រើន, pixmap
+-Keywords[ko]=배경 그림,배경,데스크톱,색,그림,바탕 화면
+-Keywords[lt]=background,fonas,desktops,darbastaliai,colors,spalvos,colours,images,paveiksliukai,wallpapers,apmušalai,blending,balance,perėjimas,cache,kešas,krepšys,multiple wallpapers,pixmap,taškinė grafika
+-Keywords[lv]=fons,darbvirsmas,krāsu,krāsas,attēli,tapetes,saplūstošas,balanss,kešs,daudzas tapetes,piksmapi
+-Keywords[mk]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,подлога,позадина,површини,бои,слики,позадини,мешање,рамнотежа,кеш,повеќе подлоги,повеќе позадини
+-Keywords[nb]=bakgrunn,skrivebord,farger,bilder,bakgrunnsbilder,flere bakgrunnsbilder
+-Keywords[nds]=Achtergrund,Schriefdischen,Klören,Biller,wallpapers,blending,balance,Twischenspieker,multiple wallpapers,pixmap
+-Keywords[ne]=पृष्ठभूमि,डेस्कटप,रङ,रङ,छवि, क्यास,छवि,बहुँविध वालपेपर,सन्तुलन,ब्लेन्डिङ पिक्सम्याप
+-Keywords[nl]=achtergrond,desktops,bureaubladen,kleur,kleuren,afbeeldingen,behang,wallpapers,gradiënt,vermenging,balans,cache,meerdere afbeeldingen,pixmap,graphics
+-Keywords[nn]=bakgrunn,skrivebord,fargar,bilete,bakgrunnsbilete,overgang,balanse,fleire bakgrunnsbilete
+-Keywords[pa]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap, ਵਾਲਪੇਪਰ, ਰੰਗ, ਚਿੱਤਰ, ਬੈਕਗਰਾਊਂਡ
+-Keywords[pl]=tło,pulpity,biurka,kolory,obrazki,tapety,mieszanie,równowaga,pamięć podręczna,wielokrotne tapety,mapa bitowa
+-Keywords[pt]=fundo,ecrãs,cores,imagens,papéis de parede,mistura,balanceamento,cache,múltiplos,imagem
+-Keywords[pt_BR]=fundo de tela,áreas de trabalho,cores,imagens,papel de parede,mistura,balanço,cache,múltiplos papéis de parede,pixmap
+-Keywords[ro]=fundal,ecrane,culori,imagini,multiplu,amestecare,balans,cache,pixmap
+-Keywords[se]=duogáš,čállinbeavddit,ivnnit,govat,duogášgovat,seaguheapmi,balánsa,máŋgá duogášgova
+-Keywords[sl]=ozadje,namizja,barve,slike,tapete,več tapet,blending,pixmap
+-Keywords[sr]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,позадина,радне површине,боје,слике,претапање,баланс,кеш,вишеструке позадине
+-Keywords[sr at latin]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,pozadina,radne površine,boje,slike,pretapanje,balans,keš,višestruke pozadine
+-Keywords[sv]=bakgrund,skrivbord,färger,bilder,skrivbordsunderlägg,blandning,balans,cache,flera skrivbordsunderlägg,pixmapp
+-Keywords[ta]=பின்னணி,மேல்மேசை,வண்ணங்கள்,வண்ணங்கள்,சித்திரங்கள்,பின்னணி சித்திரங்கள்,கலத்தல்,மீதி,தற்காலிக,பலவகையான பின்னணி சித்திரங்கள்,பிக்ஸ்மாப்
+-Keywords[tg]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap, пасзамина
+-Keywords[th]=พื้นหลัง,พื้นที่ทำงาน,สี,ชุดสี,ภาพ,ภาพพื้นหลัง,สมดุล,แคช,พื้นหลังหลายภาพ,บิตแมพ
+-Keywords[tr]=artalan,masaüstü,renkler,renkler,resimler,duvar kağıtları,karıştırma,denge,ön bellek,çoklu duvar kağıtları,pixmap
+-Keywords[uk]=тло,стільниці,кольори,зображення,шпалери,перехід,баланс,кеш,декілька шпалери,pixmap,стільниці
+-Keywords[uz]=орқа фон,иш столлари,ранглар,расмлар,wallpapers,блендинг,balance,кэш,multiple wallpapers,pixmap
+-Keywords[vi]=nền,màn hình nền,màu,màu sắc,ảnh,ảnh nền,trộn,cân bằng,đệm,nhiều ảnh nền,mảng ảnh
+-Keywords[x-test]=xxbackground,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmapxx
+-Keywords[xh]=indawo yangasemva,desktops,imibala,imibala,imifanekiso,amaphepha odonga,uxubo,isikali,indawo efihlakeleyo yokufihla izixhobo,amaphepha odonga amaninzi,imaphu ye pix
+-Keywords[zh_CN]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,背景,桌面,颜色,图像,墙纸,混色,平衡,缓冲,多个墙纸,位图
+-Keywords[zh_TW]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,背景,桌面,顏色,影像,桌布,混色,平衡,緩衝,多個桌布,位圖
++X-KDE-Keywords=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
++X-KDE-Keywords[be]=фон,працоўныя сталы,колеры,відарысы,малюнкі,шпалеры,баланс,кэш,некалькі шпалераў,background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
++X-KDE-Keywords[bg]=Keywords=фон, изображение, работен, плот, работен плот, background, desktops, colors, colours, images, wallpapers, blending, balance, cache, multiple wallpapers, pixmap
++X-KDE-Keywords[ca]=fons,escriptoris,colors,colors,imatges,paper pintat,barreja,balanç,cau,múltiples papers pintats,mapa de píxels
++X-KDE-Keywords[cs]=Pozadí,Plochy,Barvy,Obrázky,Tapety,Směšování,Vyvážení,Cache,Pixmapa
++X-KDE-Keywords[csb]=spódk,spòdlé,pùltë,biurka,farwë,òbrôzczi,tapetë,mieszanié,pòdrãcznô pamiãc,wielorazowé tapetë,bitmapa
++X-KDE-Keywords[cy]=cefndir,penbwrdd,lliwiau,lliwiau,delweddau,papurau w?l,cymysgu,cydbwys,storfa,papurau w?l lluosog,picsfap
++X-KDE-Keywords[da]=baggrund,desktoppe,farver,billeder,tapeter,blanding,balance,cache,flere tapeter,billede
++X-KDE-Keywords[de]=Hintergrund,Arbeitsflächen,Desktop,Farben,Bilder,Hintergrundbilder,Überblendung,Pixmap,Cache,Zwischenspeicher
++X-KDE-Keywords[el]=φόντο,επιφάνειες εργασίας,χρώματα,χρώματα,εικόνες,ταπετσαρίες,εξομάλυνση,ισορροπία,λανθάνουσα μνήμη,πολλαπλές ταπετσαρίες,pixmap
++X-KDE-Keywords[en_GB]=background,desktops,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap
++X-KDE-Keywords[eo]=fono,tabuloj,koloroj,bildoj,tapetoj,kolorŝanĝo,tenejo,rastrobildo
++X-KDE-Keywords[es]=fondo,escritorios,colores,imágenes,tapices,mezcla,equilibrio,caché,tapices múltiples,mapa de píxeles,pixmap
++X-KDE-Keywords[et]=taust,töölaud,töölauad,värvid,pildid,taustapildid,üleminek,tasakaal,vahemälu,pikselrastrid
++X-KDE-Keywords[eu]=atzeko planoa,mahaigainak,kolorea,koloreak,irudiak,hormapaperak,nahasketa, oreka,katxea,hormapaper anitz,pixel mapa
++X-KDE-Keywords[fa]=زمینه، رومیزیها، رنگها، رنگها، تصاویر، کاغذهای دیواری، مخلوط، توازن، نهانگاه، کاغذ دیواریهای متعدد، نگاشت بیت
++X-KDE-Keywords[fi]=tausta,työpöydät,värit,kuvat,taustakuvat,sekoitus,välimuisti,useat taustakuvat,kuvakartat
++X-KDE-Keywords[fr]=fond d'écran,fond,bureau,couleur,image,papier peint,image de fond,dégradé,cache,papiers peints multiples
++X-KDE-Keywords[fy]=eftergrûn,buroblêden,kleur,kleuren,ôfbyldingen,behang,ferminge, balâns,lyts ûnthâld,meardere ôfbyldingen,pixmap,grafysk
++X-KDE-Keywords[ga]=cúlra,deasca,dathanna,íomhánna,cúlbhrait,cumasc,cothrom,taisce,cúlbhrait iomadúla,mapa picteilíní
++X-KDE-Keywords[gl]=fondo,escritórios,cores,imaxes,papeis tapiz,balance,cache,múltiples papeis tapiz,mapa de píxels
++X-KDE-Keywords[he]=רקע,תמונות,background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple,wallpapers,pixmapעירוב,איזון,מטמון,טפטים,מרובים,צבעים,שולחנות עבודה,
++X-KDE-Keywords[hr]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,pozadina, radna površina,boje,boja,slike,slika radne površine,preklapanje,prozirnost,balans,pohrana,višestruke slike radne površine
++X-KDE-Keywords[hu]=háttér,asztalok,színek,képek,tapéták,színkeverés,egyensúly,gyorstár,több tapéta,pixmap
++X-KDE-Keywords[is]=bakgrunnur,skjáborð,litir,myndir,veggfóður,blöndun,jafnvægi,skyndiminni,mörg veggfóður,mynd,punktamynd,bitamynd
++X-KDE-Keywords[it]=sfondo,desktop,colori,immagini,immagini di sfondo,sfumature,bilanciamento,cache,sfondi multipli
++X-KDE-Keywords[ja]=背景,色,色付け,画像,壁紙,ブレンディング,バランス,キャッシュ,複数の壁紙,ピクスマップ
++X-KDE-Keywords[km]=ផ្ទៃ​ខាង​ក្រោយ,ផ្ទៃតុ​,ពណ៌,រូបភាព,ក្រដាស​បិទ​ជញ្ជាំង,ច្របល់,តុល្យភាព,ឃ្លាំង​សម្ងាត់,ក្រដាស​បិទ​ជញ្ជាំង​ច្រើន, pixmap
++X-KDE-Keywords[ko]=배경 그림,배경,데스크톱,색,그림,바탕 화면
++X-KDE-Keywords[lt]=background,fonas,desktops,darbastaliai,colors,spalvos,colours,images,paveiksliukai,wallpapers,apmušalai,blending,balance,perėjimas,cache,kešas,krepšys,multiple wallpapers,pixmap,taškinė grafika
++X-KDE-Keywords[lv]=fons,darbvirsmas,krāsu,krāsas,attēli,tapetes,saplūstošas,balanss,kešs,daudzas tapetes,piksmapi
++X-KDE-Keywords[mk]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,подлога,позадина,површини,бои,слики,позадини,мешање,рамнотежа,кеш,повеќе подлоги,повеќе позадини
++X-KDE-Keywords[nb]=bakgrunn,skrivebord,farger,bilder,bakgrunnsbilder,flere bakgrunnsbilder
++X-KDE-Keywords[nds]=Achtergrund,Schriefdischen,Klören,Biller,wallpapers,blending,balance,Twischenspieker,multiple wallpapers,pixmap
++X-KDE-Keywords[ne]=पृष्ठभूमि,डेस्कटप,रङ,रङ,छवि, क्यास,छवि,बहुँविध वालपेपर,सन्तुलन,ब्लेन्डिङ पिक्सम्याप
++X-KDE-Keywords[nl]=achtergrond,desktops,bureaubladen,kleur,kleuren,afbeeldingen,behang,wallpapers,gradiënt,vermenging,balans,cache,meerdere afbeeldingen,pixmap,graphics
++X-KDE-Keywords[nn]=bakgrunn,skrivebord,fargar,bilete,bakgrunnsbilete,overgang,balanse,fleire bakgrunnsbilete
++X-KDE-Keywords[pa]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap, ਵਾਲਪੇਪਰ, ਰੰਗ, ਚਿੱਤਰ, ਬੈਕਗਰਾਊਂਡ
++X-KDE-Keywords[pl]=tło,pulpity,biurka,kolory,obrazki,tapety,mieszanie,równowaga,pamięć podręczna,wielokrotne tapety,mapa bitowa
++X-KDE-Keywords[pt]=fundo,ecrãs,cores,imagens,papéis de parede,mistura,balanceamento,cache,múltiplos,imagem
++X-KDE-Keywords[pt_BR]=fundo de tela,áreas de trabalho,cores,imagens,papel de parede,mistura,balanço,cache,múltiplos papéis de parede,pixmap
++X-KDE-Keywords[ro]=fundal,ecrane,culori,imagini,multiplu,amestecare,balans,cache,pixmap
++X-KDE-Keywords[se]=duogáš,čállinbeavddit,ivnnit,govat,duogášgovat,seaguheapmi,balánsa,máŋgá duogášgova
++X-KDE-Keywords[sl]=ozadje,namizja,barve,slike,tapete,več tapet,blending,pixmap
++X-KDE-Keywords[sr]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,позадина,радне површине,боје,слике,претапање,баланс,кеш,вишеструке позадине
++X-KDE-Keywords[sr at latin]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,pozadina,radne površine,boje,slike,pretapanje,balans,keš,višestruke pozadine
++X-KDE-Keywords[sv]=bakgrund,skrivbord,färger,bilder,skrivbordsunderlägg,blandning,balans,cache,flera skrivbordsunderlägg,pixmapp
++X-KDE-Keywords[ta]=பின்னணி,மேல்மேசை,வண்ணங்கள்,வண்ணங்கள்,சித்திரங்கள்,பின்னணி சித்திரங்கள்,கலத்தல்,மீதி,தற்காலிக,பலவகையான பின்னணி சித்திரங்கள்,பிக்ஸ்மாப்
++X-KDE-Keywords[tg]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap, пасзамина
++X-KDE-Keywords[th]=พื้นหลัง,พื้นที่ทำงาน,สี,ชุดสี,ภาพ,ภาพพื้นหลัง,สมดุล,แคช,พื้นหลังหลายภาพ,บิตแมพ
++X-KDE-Keywords[tr]=artalan,masaüstü,renkler,renkler,resimler,duvar kağıtları,karıştırma,denge,ön bellek,çoklu duvar kağıtları,pixmap
++X-KDE-Keywords[uk]=тло,стільниці,кольори,зображення,шпалери,перехід,баланс,кеш,декілька шпалери,pixmap,стільниці
++X-KDE-Keywords[uz]=орқа фон,иш столлари,ранглар,расмлар,wallpapers,блендинг,balance,кэш,multiple wallpapers,pixmap
++X-KDE-Keywords[vi]=nền,màn hình nền,màu,màu sắc,ảnh,ảnh nền,trộn,cân bằng,đệm,nhiều ảnh nền,mảng ảnh
++X-KDE-Keywords[x-test]=xxbackground,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmapxx
++X-KDE-Keywords[xh]=indawo yangasemva,desktops,imibala,imibala,imifanekiso,amaphepha odonga,uxubo,isikali,indawo efihlakeleyo yokufihla izixhobo,amaphepha odonga amaninzi,imaphu ye pix
++X-KDE-Keywords[zh_CN]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,背景,桌面,颜色,图像,墙纸,混色,平衡,缓冲,多个墙纸,位图
++X-KDE-Keywords[zh_TW]=background,desktops,colors,colours,images,wallpapers,blending,balance,cache,multiple wallpapers,pixmap,背景,桌面,顏色,影像,桌布,混色,平衡,緩衝,多個桌布,位圖
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/kfontinst/kcmfontinst/fontinst.desktop
++++ b/kcontrol/kfontinst/kcmfontinst/fontinst.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 fontinst
+ Icon=preferences-desktop-font-installer
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/fontinst/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/fontinst/index.html
+ 
+ X-KDE-Library=kcm_fontinst
+ X-KDE-ParentApp=kcontrol
+@@ -81,6 +80,7 @@
+ Comment[ca]=Instal·lació , gestió i vista prèvia dels tipus de lletra
+ Comment[de]=Schriftarten installieren, verwalten und betrachten
+ Comment[el]=Εγκατάσταση, διαχείριση και προεπισκόπηση γραμματοσειρών
++Comment[eo]=Instali, administri kaj antaŭrigardi tiparojn
+ Comment[et]=Fontide haldamine, paigaldamine ja eelvaatlus
+ Comment[ga]=Suiteáil, bainisteoireacht, agus réamhamharc na gclónna
+ Comment[hu]=Betűtípusok telepítése, áttekintése
+@@ -94,6 +94,7 @@
+ Comment[ne]=फन्टहरू स्थापना, प्रबन्ध र पूर्वावलोकन गर्नुहोस्
+ Comment[nl]=Lettertypen installeren, beheren en bekijken
+ Comment[nn]=Installer, handter og vis skrifter
++Comment[pa]=ਫੋਂਟ ਇੰਸਟਾਲ, ਮੈਨਿਜਮੈਂਟ ਅਤੇ ਝਲਕ
+ Comment[pt]=Instalar, gerir e antever tipos de letra
+ Comment[pt_BR]=Instalar, gerenciar, e visualizar fontes
+ Comment[sr]=Инсталација, управљање и преглед фонтова
+@@ -105,38 +106,38 @@
+ Comment[zh_CN]=安装和预览字体
+ Comment[zh_TW]=安裝、管理並預覽字型
+ 
+-Keywords=font,fonts,installer,truetype,type1,bitmap
+-Keywords[be]=Шрыфт,Шрыфты,Устаноўка,font,fonts,installer,truetype,type1,speedo,bitmap
+-Keywords[bg]=Keywords=шрифт, шрифтове, преглед, печат, font, fonts, installer, truetype, type1, speedo, bitmap
+-Keywords[ca]=tipus de lletra,tipus de lletres,instal·lador,truetype,type1,speedo,bitmap
+-Keywords[de]=Schrift,Fonts,Schriftarten,Installation,TrueType,Type1,Speedo,Bitmapschriften
+-Keywords[el]=γραμματοσειρά,γραμματοσειρές,εγκαταστάτης,εγκατάσταση,truetype,type1,bitmap
+-Keywords[es]=tipo de letra,tipos de letra,instalador,truetype,type1,mapa de bits
+-Keywords[et]=font,fondid,paigaldaja,truetype,type1,bitmap
+-Keywords[fa]=قلم، قلمها، نصب‌کننده، قلم حقیقی، نوع۱، نگاشت بیت
+-Keywords[ga]=cló,clónna,clófhoirne,suiteálaí,truetype,type1,mapa giotán,giotánmhapach
+-Keywords[he]=גופן,גופנים,מתקין,התקנה,מפת סיביות,font,fonts,installer,truetype,type1,bitmap
+-Keywords[hu]=betűtípus,betűtípusok,telepítő,TrueType,Type1,bittérkép
+-Keywords[it]=font,caratteri,installatore,truetype,type1,bitmap,tipi di carattere
+-Keywords[ja]=フォント,インストーラ,truetype,type1,bitmap,ビットマップ
+-Keywords[km]=ពុម្ព​អក្សរ ពុម្ព​អក្សរ កម្មវិធី​ដំឡើង truetype ប្រភេទ ១ រូបភាព
+-Keywords[ko]=글꼴,트루타입,타입 1,비트맵,type1,bitmap
+-Keywords[nb]=skrift,skrifter,skrifttype,skrifttyper,installer,truetype,type1,bitmap
+-Keywords[nds]=Schriftoort,Schriftoorden,Installeren,TrueType,Type1,Bitmap
+-Keywords[ne]=फन्ट, फन्टहरू, स्थापक, ट्रु टाइप, टाइप १,बिटम्याप
+-Keywords[nl]=letters,lettertypen,fonts,installatie,truetype,type1,speedo,bitmap,lettertype-installatie
+-Keywords[nn]=skrift,skrifter,installering,truetype,type1,bitmap
+-Keywords[pt]=tipo de letra,tipos de letra,instalador,truetype,type1,speedo,bitmap
+-Keywords[pt_BR]=fonte,fontes,instalador,truetype,type1,bitmap
+-Keywords[sr]=font,fonts,installer,truetype,type1,bitmap,фонт,фонтови,инсталатер,трутајп,тип1,битмапски
+-Keywords[sr at latin]=font,fonts,installer,truetype,type1,bitmap,font,fontovi,instalater,Truetype,Type1,bitmapski
+-Keywords[sv]=teckensnitt,installation,truetype,type1,bitmap
+-Keywords[th]=แบบอักษร,ตัวติดตั้ง,ทรูไทป์,ไทป์1,บิตแมป
+-Keywords[vi]=phông,phông chữ,trình cài đặt,truetype,kiểu 1,mảng ảnh, ảnh mảnh
+-Keywords[wa]=fonte,fontes,astaler,truetype,type1,bitmap
+-Keywords[x-test]=xxfont,fonts,installer,truetype,type1,bitmapxx
+-Keywords[zh_CN]=font,fonts,installer,truetype,type1,speedo,bitmap,字体,安装程序,位图字体
+-Keywords[zh_TW]=font,fonts,installer,truetype,type1,bitmap,字型,安裝程式,點陣
++X-KDE-Keywords=font,fonts,installer,truetype,type1,bitmap
++X-KDE-Keywords[be]=Шрыфт,Шрыфты,Устаноўка,font,fonts,installer,truetype,type1,speedo,bitmap
++X-KDE-Keywords[bg]=Keywords=шрифт, шрифтове, преглед, печат, font, fonts, installer, truetype, type1, speedo, bitmap
++X-KDE-Keywords[ca]=tipus de lletra,tipus de lletres,instal·lador,truetype,type1,speedo,bitmap
++X-KDE-Keywords[de]=Schrift,Fonts,Schriftarten,Installation,TrueType,Type1,Speedo,Bitmapschriften
++X-KDE-Keywords[el]=γραμματοσειρά,γραμματοσειρές,εγκαταστάτης,εγκατάσταση,truetype,type1,bitmap
++X-KDE-Keywords[es]=tipo de letra,tipos de letra,instalador,truetype,type1,mapa de bits
++X-KDE-Keywords[et]=font,fondid,paigaldaja,truetype,type1,bitmap
++X-KDE-Keywords[fa]=قلم، قلمها، نصب‌کننده، قلم حقیقی، نوع۱، نگاشت بیت
++X-KDE-Keywords[ga]=cló,clónna,clófhoirne,suiteálaí,truetype,type1,mapa giotán,giotánmhapach
++X-KDE-Keywords[he]=גופן,גופנים,מתקין,התקנה,מפת סיביות,font,fonts,installer,truetype,type1,bitmap
++X-KDE-Keywords[hu]=betűtípus,betűtípusok,telepítő,TrueType,Type1,bittérkép
++X-KDE-Keywords[it]=font,caratteri,installatore,truetype,type1,bitmap,tipi di carattere
++X-KDE-Keywords[ja]=フォント,インストーラ,truetype,type1,bitmap,ビットマップ
++X-KDE-Keywords[km]=ពុម្ព​អក្សរ ពុម្ព​អក្សរ កម្មវិធី​ដំឡើង truetype ប្រភេទ ១ រូបភាព
++X-KDE-Keywords[ko]=글꼴,트루타입,타입 1,비트맵,type1,bitmap
++X-KDE-Keywords[nb]=skrift,skrifter,skrifttype,skrifttyper,installer,truetype,type1,bitmap
++X-KDE-Keywords[nds]=Schriftoort,Schriftoorden,Installeren,TrueType,Type1,Bitmap
++X-KDE-Keywords[ne]=फन्ट, फन्टहरू, स्थापक, ट्रु टाइप, टाइप १,बिटम्याप
++X-KDE-Keywords[nl]=letters,lettertypen,fonts,installatie,truetype,type1,speedo,bitmap,lettertype-installatie
++X-KDE-Keywords[nn]=skrift,skrifter,installering,truetype,type1,bitmap
++X-KDE-Keywords[pt]=tipo de letra,tipos de letra,instalador,truetype,type1,speedo,bitmap
++X-KDE-Keywords[pt_BR]=fonte,fontes,instalador,truetype,type1,bitmap
++X-KDE-Keywords[sr]=font,fonts,installer,truetype,type1,bitmap,фонт,фонтови,инсталатер,трутајп,тип1,битмапски
++X-KDE-Keywords[sr at latin]=font,fonts,installer,truetype,type1,bitmap,font,fontovi,instalater,Truetype,Type1,bitmapski
++X-KDE-Keywords[sv]=teckensnitt,installation,truetype,type1,bitmap
++X-KDE-Keywords[th]=แบบอักษร,ตัวติดตั้ง,ทรูไทป์,ไทป์1,บิตแมป
++X-KDE-Keywords[vi]=phông,phông chữ,trình cài đặt,truetype,kiểu 1,mảng ảnh, ảnh mảnh
++X-KDE-Keywords[wa]=fonte,fontes,astaler,truetype,type1,bitmap
++X-KDE-Keywords[x-test]=xxfont,fonts,installer,truetype,type1,bitmapxx
++X-KDE-Keywords[zh_CN]=font,fonts,installer,truetype,type1,speedo,bitmap,字体,安装程序,位图字体
++X-KDE-Keywords[zh_TW]=font,fonts,installer,truetype,type1,bitmap,字型,安裝程式,點陣
+ 
+ Categories=Qt;KDE;X-KDE-settings-system;
+ X-KDE-System-Settings-Parent-Category=computer-administration
+--- a/kcontrol/kfontinst/viewpart/kfontviewpart.desktop
++++ b/kcontrol/kfontinst/viewpart/kfontviewpart.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Font Viewer
+ Name[af]=Skriftipe Besigter
+ Name[ar]=عارض الخطوط
+@@ -66,8 +65,8 @@
+ Name[zh_CN]=字体查看器
+ Name[zh_TW]=字型檢視器
+ MimeType=application/x-font-ttf;application/x-font-type1;application/x-font-otf;application/x-font-pcf;application/x-font-bdf;fonts/package;
+-ServiceTypes=KParts/ReadOnlyPart,Browser/View
+-X-KDE-Library=libkfontviewpart
++X-KDE-ServiceTypes=KParts/ReadOnlyPart,Browser/View
++X-KDE-Library=kfontviewpart
+ Type=Service
+ InitialPreference=1
+ Icon=kfontview
+--- a/kcontrol/kfontinst/viewpart/CMakeLists.txt
++++ b/kcontrol/kfontinst/viewpart/CMakeLists.txt
+@@ -5,7 +5,7 @@
+ 
+ set(kfontviewpart_PART_SRCS ${libkfontinstview_SRCS} FontViewPart.cpp )
+ 
+-kde4_add_plugin(kfontviewpart WITH_PREFIX ${kfontviewpart_PART_SRCS})
++kde4_add_plugin(kfontviewpart ${kfontviewpart_PART_SRCS})
+ 
+ target_link_libraries(kfontviewpart  ${KDE4_KPARTS_LIBS} kfontinstui kfontinst )
+ 
+--- a/kcontrol/kfontinst/kio/Helper.cpp
++++ b/kcontrol/kfontinst/kio/Helper.cpp
+@@ -313,7 +313,7 @@
+ 
+         bool rv=QFile::copy(from, to);
+         if(rv)
+-            ::chmod(QFile::encodeName(to).constData(), Misc::FILE_PERMS);
++            Misc::setFilePerms(to);
+         return rv;
+     }
+ 
+@@ -340,7 +340,7 @@
+ 
+         if(res)
+         {
+-            ::chmod(toC.constData(), Misc::FILE_PERMS);
++            Misc::setFilePerms(toC);
+             ::chown(toC.constData(), user, group);
+         }
+ 
+--- a/kcontrol/kfontinst/kio/fonts.desktop
++++ b/kcontrol/kfontinst/kio/fonts.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Link
+ URL=fonts:/
+ Icon=fonts-folder
+--- a/kcontrol/kfontinst/kio/KioFonts.cpp
++++ b/kcontrol/kfontinst/kio/KioFonts.cpp
+@@ -53,6 +53,7 @@
+ #include <KDE/KStandardDirs>
+ #include <KDE/KMD5>
+ #include <KDE/KZip>
++#include <KDE/KConfigGroup>
+ #include <kxftconfig.h>
+ #include <fontconfig/fontconfig.h>
+ #include "KfiConstants.h"
+@@ -61,7 +62,6 @@
+ #include "SuProc.h"
+ #include "Socket.h"
+ #include <ctype.h>
+-#include <kconfiggroup.h>
+ 
+ // Enable the following so that all URLs are actually <family>, <style>, e.g.
+ //   without #define: fonts:/arial.ttf
+@@ -1401,7 +1401,7 @@
+                 Misc::createDir(destFolderReal);
+             if(0==::rename(tmpFileC.constData(), destC.constData()))
+             {
+-                ::chmod(destC.constData(), Misc::FILE_PERMS);
++                Misc::setFilePerms(destC);
+                 if(FILE_FONT==type)
+                     modified(timeout, FOLDER_USER, clearList, destFolderReal);
+                 createAfm(dest);
+@@ -1927,7 +1927,7 @@
+                             return;
+                         }
+ 
+-                        ::chmod(realDest.constData(), Misc::FILE_PERMS);
++                        Misc::setFilePerms(realDest);
+ 
+                         // copy access and modification time
+                         struct utimbuf ut;
+--- a/kcontrol/kfontinst/apps/Viewer.cpp
++++ b/kcontrol/kfontinst/apps/Viewer.cpp
+@@ -34,17 +34,15 @@
+ #include <KDE/KConfig>
+ #include <KDE/KStandardAction>
+ #include <KDE/KActionCollection>
++#include <KDE/KShortcutsDialog>
+ #include <KDE/KParts/BrowserExtension>
+ 
+-#define CFG_GROUP    "FontViewer Settings"
+-#define CFG_SIZE_KEY "Window Size"
+-
+ namespace KFI
+ {
+ 
+ CViewer::CViewer()
+ {
+-    KPluginFactory *factory=KPluginLoader("libkfontviewpart").factory();
++    KPluginFactory *factory=KPluginLoader("kfontviewpart").factory();
+ 
+     if(factory)
+     {
+@@ -52,6 +50,7 @@
+ 
+         actionCollection()->addAction(KStandardAction::Open, this, SLOT(fileOpen()));
+         actionCollection()->addAction(KStandardAction::Quit, kapp, SLOT(quit()));
++        actionCollection()->addAction(KStandardAction::KeyBindings, this, SLOT(configureKeys()));
+         itsPrintAct=actionCollection()->addAction(KStandardAction::Print, itsPreview, SLOT(print()));
+ 
+         itsPrintAct->setEnabled(false);
+@@ -73,20 +72,13 @@
+                 itsPreview->openUrl(url);
+         }
+ 
+-        QSize defSize(440, 530);
+-
+-        resize(KGlobal::config()->group(CFG_GROUP).readEntry(CFG_SIZE_KEY, defSize));
++        setAutoSaveSettings();
++        applyMainWindowSettings(KGlobal::config()->group("MainWindow"));
+     }
+     else
+         exit(0);
+ }
+ 
+-CViewer::~CViewer()
+-{
+-    KGlobal::config()->group(CFG_GROUP).writeEntry(CFG_SIZE_KEY, size());
+-    KGlobal::config()->sync();
+-}
+-
+ void CViewer::fileOpen()
+ {
+     KUrl url(KFileDialog::getOpenUrl(KUrl(), "application/x-font-ttf application/x-font-otf "
+@@ -97,6 +89,14 @@
+         itsPreview->openUrl(url);
+ }
+ 
++void CViewer::configureKeys()
++{
++    KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsAllowed, this);
++
++    dlg.addCollection(actionCollection());
++    dlg.configure();
++}
++
+ void CViewer::enableAction(const char *name, bool enable)
+ {
+     if(0==qstrcmp("print", name))
+--- a/kcontrol/kfontinst/apps/kfontview.desktop
++++ b/kcontrol/kfontinst/apps/kfontview.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KFontView
+ Name[be]=Прагляд шрыфтоў
+ Name[cs]=Prohlížeč písem
+--- a/kcontrol/kfontinst/apps/Viewer.h
++++ b/kcontrol/kfontinst/apps/Viewer.h
+@@ -39,11 +39,12 @@
+     public:
+ 
+     CViewer();
+-    virtual ~CViewer();
++    virtual ~CViewer() { }
+ 
+     public Q_SLOTS:
+ 
+     void fileOpen();
++    void configureKeys();
+     void enableAction(const char *name, bool enable);
+ 
+     private:
+--- a/kcontrol/kfontinst/apps/installfont.desktop
++++ b/kcontrol/kfontinst/apps/installfont.desktop
+@@ -1,6 +1,5 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+-ServiceTypes=KonqPopupMenu/Plugin,application/x-font-ttf,application/x-font-type1,application/x-font-bdf,application/x-font-pcf,application/x-font-otf,application/x-font-afm,fonts/package
++X-KDE-ServiceTypes=KonqPopupMenu/Plugin,application/x-font-ttf,application/x-font-type1,application/x-font-bdf,application/x-font-pcf,application/x-font-otf,application/x-font-afm,fonts/package
+ Actions=installFont;
+ Type=Service
+ 
+@@ -11,6 +10,7 @@
+ Name[ca]=Instal·la...
+ Name[de]=Installieren ...
+ Name[el]=Εγκατάσταση...
++Name[eo]=Instali...
+ Name[et]=Paigalda...
+ Name[ga]=Suiteáil...
+ Name[hu]=Telepítés...
+@@ -24,6 +24,7 @@
+ Name[ne]=स्थापना गर्नुहोस्
+ Name[nl]=Installeren...
+ Name[nn]=Installer …
++Name[pa]=ਇੰਸਟਾਲ...
+ Name[pt]=Instalar...
+ Name[pt_BR]=Instalar...
+ Name[sl]=Namesti ...
+--- a/kcontrol/kfontinst/thumbnail/fontthumbnail.desktop
++++ b/kcontrol/kfontinst/thumbnail/fontthumbnail.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Font Files
+ Name[af]=Skrif tipe Lêers
+@@ -66,7 +65,7 @@
+ Name[xh]=Iifayile Zohlobo lwamagama
+ Name[zh_CN]=字体文件
+ Name[zh_TW]=字型檔案
+-ServiceTypes=ThumbCreator
++X-KDE-ServiceTypes=ThumbCreator
+ MimeType=application/x-font-ttf;application/x-font-type1;application/x-font-bdf;application/x-font-pcf;application/x-font-otf;fonts/package;
+ X-KDE-Library=fontthumbnail
+ CacheThumbnail=true
+--- a/kcontrol/kfontinst/lib/Misc.h
++++ b/kcontrol/kfontinst/lib/Misc.h
+@@ -30,10 +30,12 @@
+ #include <time.h>
+ 
+ #include <QtCore/QDataStream>
++#include <QtCore/QFile>
+ #include <KDE/KUrl>
+ #include "KfiConstants.h"
+ 
+ class QTextStream;
++class QByteArray;
+ 
+ namespace KFI
+ {
+@@ -42,8 +44,8 @@
+ {
+     enum EConstants
+     {
+-        FILE_PERMS   = 0644,
+-        DIR_PERMS    = 0755
++        FILE_PERMS = 0644,
++        DIR_PERMS  = 0755
+     };
+ 
+     struct TFont
+@@ -70,6 +72,8 @@
+     extern KDE_EXPORT QString getDir(const QString &f);
+     extern KDE_EXPORT QString getFile(const QString &f);
+     extern KDE_EXPORT bool    createDir(const QString &dir);
++    extern KDE_EXPORT void    setFilePerms(const QByteArray &f);
++    inline KDE_EXPORT void    setFilePerms(const QString &f) { setFilePerms(QFile::encodeName(f)); }
+     extern KDE_EXPORT QString changeExt(const QString &f, const QString &newExt);
+     extern KDE_EXPORT bool    doCmd(const QString &cmd, const QString &p1=QString(),
+                                     const QString &p2=QString(), const QString &p3=QString());
+--- a/kcontrol/kfontinst/lib/Misc.cpp
++++ b/kcontrol/kfontinst/lib/Misc.cpp
+@@ -120,6 +120,16 @@
+     return status;
+ }
+ 
++void setFilePerms(const QByteArray &f)
++{
++    //
++    // Clear any umask before setting file perms
++    mode_t oldMask(umask(0000));
++    ::chmod(f.constData(), FILE_PERMS);
++    // Reset umask
++    ::umask(oldMask);
++}
++
+ bool doCmd(const QString &cmd, const QString &p1, const QString &p2, const QString &p3)
+ {
+     QStringList args;
+--- a/kcontrol/screensaver/screensaver.desktop
++++ b/kcontrol/screensaver/screensaver.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 screensaver
+ Icon=preferences-desktop-wallpaper
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/screensaver/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/screensaver/index.html
+ 
+ X-KDE-Library=kcm_screensaver
+ X-KDE-ParentApp=kcontrol
+@@ -144,63 +143,63 @@
+ Comment[zh_TW]=螢幕保護程式設定
+ 
+ 
+-Keywords=screensavers,Priority
+-Keywords[be]=Зберагальнік экрану.Прыярытэт,screensavers,Priority
+-Keywords[bg]=Keywords=предпазител, екран, приоритет, screensavers, Priority
+-Keywords[ca]=estalvi de pantalla,Prioritat
+-Keywords[cs]=Šetřiče obrazovky,Priorita
+-Keywords[csb]=wëgaszaczë ekranu,prioritet
+-Keywords[cy]=arbedyddion sgrîn,Blaenoriaeth
+-Keywords[da]=pauseskærme,Prioritet
+-Keywords[de]=Bildschirmschoner,Priorität
+-Keywords[el]=προφύλαξη οθόνης,Προτεραιότητα
+-Keywords[eo]=ekrano,kurteno,prioritato
+-Keywords[es]=salvapantallas,Prioridad
+-Keywords[et]=ekraanisäästjad,prioriteet
+-Keywords[eu]=pantaila babesleak,lehentasuna
+-Keywords[fa]=محافظهای صفحه نمایش، اولویت
+-Keywords[fi]=näytönsäästäjät,prioriteetti
+-Keywords[fr]=écrans de veille,priorité,économiseur
+-Keywords[fy]=screensavers,skermbefeiliging,prioriteit,skermferskoatteling
+-Keywords[ga]=spárálaithe scáileáin,tosaíocht
+-Keywords[gl]=protectores de pantalla,Prioridade
+-Keywords[he]=שומרי מסך,עדיפות, screensavers,Priority
+-Keywords[hr]=screensavers,Priority,zaštita zaslona,prioritet
+-Keywords[hu]=képernyővédők,prioritás
+-Keywords[is]=skjásvæfa,forgangur
+-Keywords[it]=salvaschermi,priorità
+-Keywords[ja]=スクリーンセーバー,優先度
+-Keywords[km]=ធាតុ​រក្សា​អេក្រង់ អាទិភាព
+-Keywords[ko]=화면 보호기,우선 순위
+-Keywords[lt]=ekrano užsklanda,ekrano užsklandos,Pirmenybė
+-Keywords[lv]=ekrāna saudzētāji,Prioritāte
+-Keywords[mk]=screensavers,Priority,екран,екрански чувар,приоритет
+-Keywords[ms]=gantian skrin, Keutamaan
+-Keywords[nb]=skjermbeskyttere,pauseskjerme,prioritet
+-Keywords[nds]=screensavers,Pausschirmen,Prioriteet
+-Keywords[ne]=स्क्रिनसेभर, प्राथमिकता
+-Keywords[nl]=screensavers,schermbeveiliging,prioriteit,schermvergrendeling
+-Keywords[nn]=pauseskjerm,prioritet
+-Keywords[pa]=ਸਕਰੀਨ-ਸੇਵਰ,ਦਰਜਾ
+-Keywords[pl]=wygaszacze ekranu,priorytet
+-Keywords[pt]=protectores de ecrã,prioridade
+-Keywords[pt_BR]=protetores de tela,prioridade
+-Keywords[ro]=protecţie de ecran,prioritate
+-Keywords[se]=šearbmasiestejeaddji,ovdavuorru
+-Keywords[sl]=ohranjevalniki zaslona,prednost
+-Keywords[sr]=screensavers,Priority,чувари екрана,приоритет
+-Keywords[sr at latin]=screensavers,Priority,čuvari ekrana,prioritet
+-Keywords[sv]=skärmsläckare,Prioritet
+-Keywords[ta]=திரைக்காப்பு, முக்கியத்துவம்
+-Keywords[th]=โปรแกรมรักษาจอภาพ,ความสำคัญ
+-Keywords[tr]=ekran koruyucular,Öncelik,ekran koruyucusu,ekran koruyucuları
+-Keywords[uk]=зберігачі екрана,пріоритет
+-Keywords[uz]=экран сақловчилари,Муҳимлик даражаси
+-Keywords[vi]=bảo vệ màn hình,Ưu tiên
+-Keywords[wa]=sipårgneu di waitroûle,prumiristé
+-Keywords[x-test]=xxscreensavers,Priorityxx
+-Keywords[xh]=abagcini bekhusi,Ukubaluleka
+-Keywords[zh_CN]=screensavers,Priority,优先级,屏幕保护程序
+-Keywords[zh_TW]=screensavers,Priority,螢幕保護程式,優先權
++X-KDE-Keywords=screensavers,Priority
++X-KDE-Keywords[be]=Зберагальнік экрану.Прыярытэт,screensavers,Priority
++X-KDE-Keywords[bg]=Keywords=предпазител, екран, приоритет, screensavers, Priority
++X-KDE-Keywords[ca]=estalvi de pantalla,Prioritat
++X-KDE-Keywords[cs]=Šetřiče obrazovky,Priorita
++X-KDE-Keywords[csb]=wëgaszaczë ekranu,prioritet
++X-KDE-Keywords[cy]=arbedyddion sgrîn,Blaenoriaeth
++X-KDE-Keywords[da]=pauseskærme,Prioritet
++X-KDE-Keywords[de]=Bildschirmschoner,Priorität
++X-KDE-Keywords[el]=προφύλαξη οθόνης,Προτεραιότητα
++X-KDE-Keywords[eo]=ekrano,kurteno,prioritato
++X-KDE-Keywords[es]=salvapantallas,Prioridad
++X-KDE-Keywords[et]=ekraanisäästjad,prioriteet
++X-KDE-Keywords[eu]=pantaila babesleak,lehentasuna
++X-KDE-Keywords[fa]=محافظهای صفحه نمایش، اولویت
++X-KDE-Keywords[fi]=näytönsäästäjät,prioriteetti
++X-KDE-Keywords[fr]=écrans de veille,priorité,économiseur
++X-KDE-Keywords[fy]=screensavers,skermbefeiliging,prioriteit,skermferskoatteling
++X-KDE-Keywords[ga]=spárálaithe scáileáin,tosaíocht
++X-KDE-Keywords[gl]=protectores de pantalla,Prioridade
++X-KDE-Keywords[he]=שומרי מסך,עדיפות, screensavers,Priority
++X-KDE-Keywords[hr]=screensavers,Priority,zaštita zaslona,prioritet
++X-KDE-Keywords[hu]=képernyővédők,prioritás
++X-KDE-Keywords[is]=skjásvæfa,forgangur
++X-KDE-Keywords[it]=salvaschermi,priorità
++X-KDE-Keywords[ja]=スクリーンセーバー,優先度
++X-KDE-Keywords[km]=ធាតុ​រក្សា​អេក្រង់ អាទិភាព
++X-KDE-Keywords[ko]=화면 보호기,우선 순위
++X-KDE-Keywords[lt]=ekrano užsklanda,ekrano užsklandos,Pirmenybė
++X-KDE-Keywords[lv]=ekrāna saudzētāji,Prioritāte
++X-KDE-Keywords[mk]=screensavers,Priority,екран,екрански чувар,приоритет
++X-KDE-Keywords[ms]=gantian skrin, Keutamaan
++X-KDE-Keywords[nb]=skjermbeskyttere,pauseskjerme,prioritet
++X-KDE-Keywords[nds]=screensavers,Pausschirmen,Prioriteet
++X-KDE-Keywords[ne]=स्क्रिनसेभर, प्राथमिकता
++X-KDE-Keywords[nl]=screensavers,schermbeveiliging,prioriteit,schermvergrendeling
++X-KDE-Keywords[nn]=pauseskjerm,prioritet
++X-KDE-Keywords[pa]=ਸਕਰੀਨ-ਸੇਵਰ,ਦਰਜਾ
++X-KDE-Keywords[pl]=wygaszacze ekranu,priorytet
++X-KDE-Keywords[pt]=protectores de ecrã,prioridade
++X-KDE-Keywords[pt_BR]=protetores de tela,prioridade
++X-KDE-Keywords[ro]=protecţie de ecran,prioritate
++X-KDE-Keywords[se]=šearbmasiestejeaddji,ovdavuorru
++X-KDE-Keywords[sl]=ohranjevalniki zaslona,prednost
++X-KDE-Keywords[sr]=screensavers,Priority,чувари екрана,приоритет
++X-KDE-Keywords[sr at latin]=screensavers,Priority,čuvari ekrana,prioritet
++X-KDE-Keywords[sv]=skärmsläckare,Prioritet
++X-KDE-Keywords[ta]=திரைக்காப்பு, முக்கியத்துவம்
++X-KDE-Keywords[th]=โปรแกรมรักษาจอภาพ,ความสำคัญ
++X-KDE-Keywords[tr]=ekran koruyucular,Öncelik,ekran koruyucusu,ekran koruyucuları
++X-KDE-Keywords[uk]=зберігачі екрана,пріоритет
++X-KDE-Keywords[uz]=экран сақловчилари,Муҳимлик даражаси
++X-KDE-Keywords[vi]=bảo vệ màn hình,Ưu tiên
++X-KDE-Keywords[wa]=sipårgneu di waitroûle,prumiristé
++X-KDE-Keywords[x-test]=xxscreensavers,Priorityxx
++X-KDE-Keywords[xh]=abagcini bekhusi,Ukubaluleka
++X-KDE-Keywords[zh_CN]=screensavers,Priority,优先级,屏幕保护程序
++X-KDE-Keywords[zh_TW]=screensavers,Priority,螢幕保護程式,優先權
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/smartcard/smartcard.desktop
++++ b/kcontrol/smartcard/smartcard.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-desktop-user-smartcard
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
++X-KDE-ServiceTypes=KCModule,KCModuleInit
+ Exec=kcmshell4 smartcard
+-DocPath=kcontrol/smartcard.html
++X-DocPath=kcontrol/smartcard.html
+ 
+ X-KDE-Library=kcm_smartcard
+ X-KDE-Init-Symbol=smartcard
+@@ -128,59 +127,59 @@
+ Comment[xh]=Qwalasela inkxaso ye smartcard
+ Comment[zh_CN]=配置智能卡支持
+ Comment[zh_TW]=設定智慧卡 (SmartCard) 支援
+-Keywords=Smartcard,PKCS,SSL,reader,smart,card
+-Keywords[be]=Смарткарта,Смарткартка,Чытач,Карта,Смарт,Smartcard,PKCS,SSL,reader,smart,card
+-Keywords[bg]=Keywords=карти, поддръжка, Smartcard, PKCS, SSL, reader, smart, card
+-Keywords[ca]=Targeta intel·ligent,PKCS,SSL,lector,smart,targeta
+-Keywords[csb]=Smartcard,PKCS,SSL,czëtôrz,bezpiek,karta
+-Keywords[cy]=Smartcard,PKCS,SSL,darllenydd,smart,cerdyn
+-Keywords[da]=Smartcard,PKCS,SSL,læser,smart,card
+-Keywords[de]=Smartcard,PKCS,SSL,Reader,Smart,Card,Leser
+-Keywords[el]=Έξυπνη κάρτα,PKCS,SSL,αναγνώστης,έξυπνη,κάρτα
+-Keywords[eo]=Memorkarto,PKCS,SSL,legilo,memoro,karto
+-Keywords[es]=Smartcard,PKCS,SSL,lector,smart,tarjeta
+-Keywords[et]=Smartcard,PKCS,SSL,lugeja,kiipkaart,kaart,kiip
+-Keywords[eu]=Txartel adimenduna,PKCS,SSL,irakurgailua,adimenduna,txartela
+-Keywords[fa]=کارت هوشمند، PKCS، SSL، خواننده، هوشمند، کارت
+-Keywords[fi]=Älykortti,PKCS,SSL,lukija
+-Keywords[fr]=carte à puce,puce,smartcard,pkcs,ssl,lecteur,carte
+-Keywords[fy]=Smartcard,PKCS,SSL,reader,smart,card,chipkaart,kaart
+-Keywords[ga]=Smartcard,PKCS,SSL,léitheoir,cliste,cárta
+-Keywords[gl]=Smartcard,PKCS,SSL,lector,pequena,tarxeta
+-Keywords[he]=כרטיסים חכמים,PKCS,SSL,קורא,כרטיס,חכם, Smartcard,reader,smart,card
+-Keywords[hr]=Smartcard,PKCS,SSL,reader,smart,card,čitač,kartica
+-Keywords[hu]=smartcard,PKCS,SSL,olvasó,smart,kártya
+-Keywords[is]=Snjallkort,PKCS,SSL,reader,smart,card,snjall,kort
+-Keywords[it]=smartcard,PKCS,SSL,lettore
+-Keywords[ja]=スマートカード,PKCS,SSL,リーダー,スマート,カード
+-Keywords[km]=Smartcard PKCS SSL កម្មវិធី​​អាន smart កាត​
+-Keywords[ko]=스마트카드,PKCS,SSL,리더,스마트,카드
+-Keywords[lt]=Smartcard,PKCS,SSL,reader,smart,card, gudri kortelė,skaitytuvas,gudri,kortelė
+-Keywords[mk]=Smartcard,PKCS,SSL,reader,smart,card,паметна картичка,читач,паметна,картичка
+-Keywords[nb]=smartkort,PKCS,SSL,leser,smart,kort
+-Keywords[nds]=Smartcard,PKCS,SSL,Leser,smart,card,Koort,Koorten
+-Keywords[ne]=स्मार्टकार्ड,PKCS,SSL, रिडर, छरितो, कार्ड
+-Keywords[nl]=Smartcard,PKCS,SSL,reader,smart,card,chipkaart,kaart
+-Keywords[nn]=smartkort,PKCS,SSL,lesar,smart,kort
+-Keywords[pa]=Smartcard,PKCS,SSL,reader,smart,card, ਰੀਡਰ, ਕਾਰਡ, ਸਮਾਟ
+-Keywords[pl]=Smartcard,PKCS,SSL,czytnik,bezpieczeństwo,karta
+-Keywords[pt]=smartcard,PKCS,SSL,leitor,smart,placa
+-Keywords[pt_BR]=Smart Card,PKCS,SSL,leitor,smart,card
+-Keywords[ro]=smartcard,PKCS,SSL,cititor,smart,card
+-Keywords[se]=jierbmásgoarta,PKCS,SSL,logan,jierbmái,goarta
+-Keywords[sl]=Smartcard,PKCS,SSL,bralnik,pamet,kartica
+-Keywords[sr]=Smartcard,PKCS,SSL,reader,smart,card,читач,смарт,картица,ССЛ
+-Keywords[sr at latin]=Smartcard,PKCS,SSL,reader,smart,card,čitač,smart,kartica,SSL
+-Keywords[sv]=Smartkort,PKCS,SSL,läsare,smart,kort
+-Keywords[ta]=ஸ்மார்ட்கார்டு,PKCS,SSL,படிப்பான்,புத்திசாலி,அட்டை
+-Keywords[th]=การ์ดอัจฉริยะ,PKCS,SSL,เครื่องอ่าน,ฉลาด,การ์ด
+-Keywords[tr]=Smartcard,PKCS,SSL,okuyucu,smart,kart,akıllıkart
+-Keywords[uk]=Smartcard,PKCS,SSL,смарт-карта,зчитувач,картка
+-Keywords[uz]=Smartcard,PKCS,SSL,ўқувчи,smart,card
+-Keywords[vi]=Thẻ thông minh,PKCS,SSL,đầu đọc,thông minh,thẻ
+-Keywords[x-test]=xxSmartcard,PKCS,SSL,reader,smart,cardxx
+-Keywords[xh]=Smartcard,PKCS,SSL,umfundi,bukeka,ikhadi
+-Keywords[zh_CN]=Smartcard,PKCS,SSL,reader,smart,card,智能卡,智能,卡,读卡器
+-Keywords[zh_TW]=Smartcard,PKCS,SSL,reader,smart,card,智慧卡,閱讀器,智慧,卡
++X-KDE-Keywords=Smartcard,PKCS,SSL,reader,smart,card
++X-KDE-Keywords[be]=Смарткарта,Смарткартка,Чытач,Карта,Смарт,Smartcard,PKCS,SSL,reader,smart,card
++X-KDE-Keywords[bg]=Keywords=карти, поддръжка, Smartcard, PKCS, SSL, reader, smart, card
++X-KDE-Keywords[ca]=Targeta intel·ligent,PKCS,SSL,lector,smart,targeta
++X-KDE-Keywords[csb]=Smartcard,PKCS,SSL,czëtôrz,bezpiek,karta
++X-KDE-Keywords[cy]=Smartcard,PKCS,SSL,darllenydd,smart,cerdyn
++X-KDE-Keywords[da]=Smartcard,PKCS,SSL,læser,smart,card
++X-KDE-Keywords[de]=Smartcard,PKCS,SSL,Reader,Smart,Card,Leser
++X-KDE-Keywords[el]=Έξυπνη κάρτα,PKCS,SSL,αναγνώστης,έξυπνη,κάρτα
++X-KDE-Keywords[eo]=Memorkarto,PKCS,SSL,legilo,memoro,karto
++X-KDE-Keywords[es]=Smartcard,PKCS,SSL,lector,smart,tarjeta
++X-KDE-Keywords[et]=Smartcard,PKCS,SSL,lugeja,kiipkaart,kaart,kiip
++X-KDE-Keywords[eu]=Txartel adimenduna,PKCS,SSL,irakurgailua,adimenduna,txartela
++X-KDE-Keywords[fa]=کارت هوشمند، PKCS، SSL، خواننده، هوشمند، کارت
++X-KDE-Keywords[fi]=Älykortti,PKCS,SSL,lukija
++X-KDE-Keywords[fr]=carte à puce,puce,smartcard,pkcs,ssl,lecteur,carte
++X-KDE-Keywords[fy]=Smartcard,PKCS,SSL,reader,smart,card,chipkaart,kaart
++X-KDE-Keywords[ga]=Smartcard,PKCS,SSL,léitheoir,cliste,cárta
++X-KDE-Keywords[gl]=Smartcard,PKCS,SSL,lector,pequena,tarxeta
++X-KDE-Keywords[he]=כרטיסים חכמים,PKCS,SSL,קורא,כרטיס,חכם, Smartcard,reader,smart,card
++X-KDE-Keywords[hr]=Smartcard,PKCS,SSL,reader,smart,card,čitač,kartica
++X-KDE-Keywords[hu]=smartcard,PKCS,SSL,olvasó,smart,kártya
++X-KDE-Keywords[is]=Snjallkort,PKCS,SSL,reader,smart,card,snjall,kort
++X-KDE-Keywords[it]=smartcard,PKCS,SSL,lettore
++X-KDE-Keywords[ja]=スマートカード,PKCS,SSL,リーダー,スマート,カード
++X-KDE-Keywords[km]=Smartcard PKCS SSL កម្មវិធី​​អាន smart កាត​
++X-KDE-Keywords[ko]=스마트카드,PKCS,SSL,리더,스마트,카드
++X-KDE-Keywords[lt]=Smartcard,PKCS,SSL,reader,smart,card, gudri kortelė,skaitytuvas,gudri,kortelė
++X-KDE-Keywords[mk]=Smartcard,PKCS,SSL,reader,smart,card,паметна картичка,читач,паметна,картичка
++X-KDE-Keywords[nb]=smartkort,PKCS,SSL,leser,smart,kort
++X-KDE-Keywords[nds]=Smartcard,PKCS,SSL,Leser,smart,card,Koort,Koorten
++X-KDE-Keywords[ne]=स्मार्टकार्ड,PKCS,SSL, रिडर, छरितो, कार्ड
++X-KDE-Keywords[nl]=Smartcard,PKCS,SSL,reader,smart,card,chipkaart,kaart
++X-KDE-Keywords[nn]=smartkort,PKCS,SSL,lesar,smart,kort
++X-KDE-Keywords[pa]=Smartcard,PKCS,SSL,reader,smart,card, ਰੀਡਰ, ਕਾਰਡ, ਸਮਾਟ
++X-KDE-Keywords[pl]=Smartcard,PKCS,SSL,czytnik,bezpieczeństwo,karta
++X-KDE-Keywords[pt]=smartcard,PKCS,SSL,leitor,smart,placa
++X-KDE-Keywords[pt_BR]=Smart Card,PKCS,SSL,leitor,smart,card
++X-KDE-Keywords[ro]=smartcard,PKCS,SSL,cititor,smart,card
++X-KDE-Keywords[se]=jierbmásgoarta,PKCS,SSL,logan,jierbmái,goarta
++X-KDE-Keywords[sl]=Smartcard,PKCS,SSL,bralnik,pamet,kartica
++X-KDE-Keywords[sr]=Smartcard,PKCS,SSL,reader,smart,card,читач,смарт,картица,ССЛ
++X-KDE-Keywords[sr at latin]=Smartcard,PKCS,SSL,reader,smart,card,čitač,smart,kartica,SSL
++X-KDE-Keywords[sv]=Smartkort,PKCS,SSL,läsare,smart,kort
++X-KDE-Keywords[ta]=ஸ்மார்ட்கார்டு,PKCS,SSL,படிப்பான்,புத்திசாலி,அட்டை
++X-KDE-Keywords[th]=การ์ดอัจฉริยะ,PKCS,SSL,เครื่องอ่าน,ฉลาด,การ์ด
++X-KDE-Keywords[tr]=Smartcard,PKCS,SSL,okuyucu,smart,kart,akıllıkart
++X-KDE-Keywords[uk]=Smartcard,PKCS,SSL,смарт-карта,зчитувач,картка
++X-KDE-Keywords[uz]=Smartcard,PKCS,SSL,ўқувчи,smart,card
++X-KDE-Keywords[vi]=Thẻ thông minh,PKCS,SSL,đầu đọc,thông minh,thẻ
++X-KDE-Keywords[x-test]=xxSmartcard,PKCS,SSL,reader,smart,cardxx
++X-KDE-Keywords[xh]=Smartcard,PKCS,SSL,umfundi,bukeka,ikhadi
++X-KDE-Keywords[zh_CN]=Smartcard,PKCS,SSL,reader,smart,card,智能卡,智能,卡,读卡器
++X-KDE-Keywords[zh_TW]=Smartcard,PKCS,SSL,reader,smart,card,智慧卡,閱讀器,智慧,卡
+ 
+ Categories=Qt;KDE;X-KDE-settings-peripherals;
+--- a/kcontrol/krdb/kcs/BlueSlate.kcsrc
++++ b/kcontrol/krdb/kcs/BlueSlate.kcsrc
+@@ -37,7 +37,7 @@
+ Name[ne]=नीलो स्लेट
+ Name[nl]=Leisteenblauw
+ Name[nn]=Blågrå
+-Name[pa]=ਨੀਲਾ ਸਲਾਟੀ
++Name[pa]=ਨੀਲਾ ਸਲੇਟ
+ Name[pl]=Niebieska dachówka
+ Name[pt]=Azul Forte
+ Name[pt_BR]=Azul Ardósia
+--- a/kcontrol/krdb/kcs/YellowOnBlue.kcsrc
++++ b/kcontrol/krdb/kcs/YellowOnBlue.kcsrc
+@@ -36,7 +36,7 @@
+ Name[ne]=निलोमा उच्च व्यतिरेक पहेँलो
+ Name[nl]=Hoog contrast geel op blauw
+ Name[nn]=Høgkontrast gult på blått
+-Name[pa]=ਨੀਲੇ 'ਤੇ ਗੂਡ਼ਾ ਪੀਲਾ
++Name[pa]=ਨੀਲੇ ਉੱਤੇ ਵੱਧ ਗੂਡ਼ਾ ਪੀਲਾ
+ Name[pl]=Żółty na niebieskim z wysokim kontrastem
+ Name[pt]=Alto Contraste Amarelo em Azul
+ Name[pt_BR]=Alto Contraste do Texto Amarelo ou Azul
+--- a/kcontrol/krdb/kcs/DigitalCDE.kcsrc
++++ b/kcontrol/krdb/kcs/DigitalCDE.kcsrc
+@@ -21,7 +21,7 @@
+ Name[lv]=Ciparu CDE
+ Name[ms]=CDE Digital
+ Name[ne]=डिजिटल सीडीई
+-Name[pa]=ਡਿਜ਼ੀਟਲ CDE
++Name[pa]=ਡਿਜਿਟਲ CDE
+ Name[pl]=CDE firmy Digital
+ Name[pt]=CDE da Digital
+ Name[pt_BR]=CDE Digital
+--- a/kcontrol/krdb/kcs/BlackOnWhite.kcsrc
++++ b/kcontrol/krdb/kcs/BlackOnWhite.kcsrc
+@@ -36,7 +36,7 @@
+ Name[ne]=उच्च व्यतिरेक कालो पाठ
+ Name[nl]=Hoog contrast zwarte tekst
+ Name[nn]=Høgkontrast svart tekst
+-Name[pa]=ਜਿਆਦਾ ਗੂਡ਼ਾ ਕਾਲਾ ਪਾਠ
++Name[pa]=ਵੱਧ ਗੂਡ਼ਾ ਕਾਲਾ ਟੈਕਸਟ
+ Name[pl]=Kontrastowy czarny tekst
+ Name[pt]=Alto Contraste Texto Preto
+ Name[pt_BR]=Alto Contraste do Texto Preto
+--- a/kcontrol/krdb/kcs/WhiteOnBlack.kcsrc
++++ b/kcontrol/krdb/kcs/WhiteOnBlack.kcsrc
+@@ -36,7 +36,7 @@
+ Name[ne]=उच्च व्यतिरेक सेतो पाठ
+ Name[nl]=Hoog contrast witte tekst
+ Name[nn]=Høgkontrast, kvit tekst
+-Name[pa]=ਜਿਆਦਾ ਗੂੜਾ ਪਾਠ ਸਫੈਦ
++Name[pa]=ਵੱਧ ਗੂੜਾ ਸਫੈਦ ਟੈਕਸਟ
+ Name[pl]=Kontrastowy biały tekst
+ Name[pt]=Alto Contraste Texto Branco
+ Name[pt_BR]=Alto Contraste do Texto Branco
+--- a/kcontrol/accessibility/accessibility.desktop
++++ b/kcontrol/accessibility/accessibility.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 accessibility
+ Icon=preferences-desktop-accessibility
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ 
+ X-KDE-Library=kcm_accessibility
+@@ -117,7 +116,7 @@
+ Comment[ne]=अक्षम व्यक्तिका लागि पहुँच क्षमता सुधार गर्नुहोस्
+ Comment[nl]=Verbeterde toegankelijkheid voor gebruikers met een handicap
+ Comment[nn]=Forbetra tilgjenge for funksjonshemma personar
+-Comment[pa]=ਅਪੰਗ ਵਿਅਕਤੀ ਲਈ ਸੁਧਾਰੀ ਮੱਦਦ
++Comment[pa]=ਅਪੰਗ ਵਿਅਕਤੀ ਲਈ ਸੁਧਾਰੀਆਂ ਸਹੂਲਤਾਂ
+ Comment[pl]=Poprawiona dostępność dla osób niepełnosprawnych
+ Comment[pt]=Acessibilidade melhorada para pessoas com necessidades especiais
+ Comment[pt_BR]=Melhora a acessibilidade para pessoas com deficiência
+@@ -140,59 +139,59 @@
+ Comment[zh_CN]=方便残疾人使用的辅助功能
+ Comment[zh_TW]=方便傷殘人士使用
+ 
+-Keywords=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[af]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num bordjie
+-Keywords[be]=доступ,даступнасць,званок,гукавы сігнал,бачны сігнал,клавіятура,клавішы,"ліпучыя" клавішы,"рухомыя" клавішы,марудныя клавішы,навігацыя мышшу,лічбавая клавіятура,access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[bg]=Keywords=достъп, увреждания, равностоен, равноправен, зрителни, зрителен, без зрение, access, accessibility, deaf, impaired, bell, audible bell, visible bell, Keyboard, keys, sticky keys, bounce keys, slow keys, mouse navigation, num pad
+-Keywords[ca]=accés,accessibilitat,sord,disminuït,timbre,timbre audible,timbre visible,Teclat,tecles,tecles apegaloses,tecles de repetició,tecles lentes,navegació del ratolí,teclat numèric
+-Keywords[cs]=Zpřístupnění,Hluchý,Slepý,Postižený,Zvonek,Slyšitelný zvonek,Viditelný zvonek,Klávesnice,Pomalé klávesy,Navigace myši,Num pad
+-Keywords[csb]=przëstãp,przëstãpnosc,głëchy,zwónk,słëszalny zwónk,widzalny zwónk,klawiatura,klawisze,przëklejone klawisze,odbijanié klawiszów,pòwólné klawisze,nawigacëjô mëszą,numericznô klawiatura
+-Keywords[cy]=mynediad,hygyrchedd,byddar,cloch,cloch clywadwy,cloch gweladwy,bysellfwrdd,allweddell,bysell,bysell gludog,bysell sponcio,bysell araf,llywio llygoden,pad rhif
+-Keywords[da]=adgang,tilgængelighed,døv,handicappet,klokke,hørbar klokke,synlig klokke,Tastatur,taster,klæbrige taster,bounce-taster,langsomme taster,musenavigering,numerisk tastatur
+-Keywords[de]=Behinderung,Maussteuerung,Signale,Tastatur,Tasten,Taubheit,Verlangsamte Tasten,Zahlenblock,Zugang,Zugangshilfen
+-Keywords[el]=πρόσβαση,προσιτότητα,κωφός,impaired,κουδούνι,ακουστή ειδοποίηση,ορατή ειδοποίηση,Πληκτρολόγιο,πλήκτρα,κολλημένα πλήκτρα,πλήκτρα αναπήδησης,αργά πλήκτρα,πλοήγηση ποντικιού,αριθμητικό πληκτρολόγιο
+-Keywords[eo]=aliro,handikapito,malhelpito,pepo,videbla pepo,klavaro,klavoj,klavfikso, musnavigado,nombroklavaro
+-Keywords[es]=acceso,accesibilidad,sordo,disminuido,timbre,timbre audible,timbre visible,Teclado,teclas,teclas pegajosas,teclas de golpe,teclas lentas,navegación del ratón,teclado numérico
+-Keywords[et]=juurdepääs,kurt,puue,puudega,signaal,kuuldav signaal,visuaalne signaal,klaviatuur,klahvid,kleepuvad klahvid,põrkavad klahvid,aeglased klahvid,hiire liigutamine,numbriklaviatuur
+-Keywords[eu]=sarrera,erabilerraztasuna,gorra,elbarria,ezkila,ezkila entzungarria, ezkila ikusgarria,Teklatua,teklak,tekla itsaskorrak, bounce teklak,tekla geldoak,sagu bidezko arakaketa,tekla numerikoak
+-Keywords[fa]=دستیابی، دستیابی‌پذیری، ناشنوا، معلول، زنگ، زنگ شنیدنی، زنگ مرئی، صفحه کلید، کلیدها، کلیدهای چسبناک، کلیدهای واگشت، کلیدهای کند، ناوش موشی، صفحه اعداد
+-Keywords[fi]=käytettävyys,esteettömyys,kuuro,vammautunut,virheilmoitus,virheääni,näkyvä virheilmoitus,näppäimistö,näppäimet,alas jäävät näppäimet,toistavat näppäimet,hitaat näppäimet,hiirinavigointi,numeronäppäimistö
+-Keywords[fr]=accès,accessibilité,surdité,sourd,cloche,son,cloche visuelle,cloche sonore,clavier,touches,souris,touches lentes,touches rémanentes,cloche auditive,touches répétées,répétition des touches,auto-maintien des touches,maintien des touches,navigation à la souris,pointeur de souris,émulation du clavier,clavier numérique
+-Keywords[fy]=tagong,tagonklikens,dôf,handikap,beheind,bel,sinjalearing,sichtbermeldingen,Kaaiboerd,kaaien,kleef kaaien,kaaioanslag,Mûsnavigaasje,num pad,numeryske klavier
+-Keywords[ga]=rochtain,inrochtaineacht,bodhar,clog,clog inchloiste,clog infheicthe,Méarchlár,eochracha,eochracha greamaitheacha,eochracha preabtha,eochracha go mall,nascleanúint luiche,eochaircheap uimhriúil
+-Keywords[gl]=aceso,acesibilidade,impar,campá,badalada audíbel,badalada visíbel,teclado,teclas,teclas pegadias,teclas de repetición,teclas lentas,navegación do rato,teclado numérico
+-Keywords[he]=גישה,נגישות,חירשים,לקויים,פעמון,פעמון נשמע,פעמון  חזותי,לוח,מקשים ,מקלדת ,מקשים,מקשים דביקים,מקשים מוקפצים,מקשים אטיים,ניווט עכבר,מקשי מספרים, access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[hr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluh,gluhoća,oštećenje,zvono,zvuk zvona,vidljivo zvono,tipkovnica,tipke,odbijanje tipki,spore tipke,navigacija mišem,numeričke tipke
+-Keywords[hu]=hozzáférés,segédeszközök,süket,fogyatékos,csengő,hallható csengetés,látható csengetés,billentyűzet,billentyűk,ragadós billentyűk,visszaugró billentyűk,lassú billentyűk,egérkezelés,numerikus billentyűzet
+-Keywords[is]=aðgangur,aðgengi,heyrnarlaus,fatlaður,píp,bjalla,sjáanleg bjalla,lyklaborð,takkar,músarnotkun,talnaborð
+-Keywords[it]=accesso,accessibilità,non udenti,portatori di handicap,campanella,campanella udibile,campanella visibile,tastiera,tasti,permanenza dei tasti,pressione ravvicinata dei tasti,rallentamento dei tasti,navigazione mouse,tastierino numerico
+-Keywords[ja]=アクセス,アクセシビリティ,聾唖,障害,ベル,音声ベル,視覚ベル,キーボート,キー,スティッキーキー,バウンスキー,スローキー,マウス補助,数字パッド
+-Keywords[km]=ចូល​ដំណើរការ,មធ្យោបាយ​ងាយស្រួល,ថ្លង់,ពិការ,កណ្ដឹង,កណ្ដឹង​លឺ,កណ្ដឹង​មើល​ឃើញ,ក្ដារចុច,គ្រាប់ចុច គ្រាប់ចុច​ស្អិត,គ្រាប់ចុច​លោត,គ្រាប់ចុច​យឺត,ការ​រុករក​កណ្ដុរ,បន្ទះ​លេខ
+-Keywords[ko]=접근성,시각 장애,청각 장애,키보드,키,마우스 탐색,숫자 키,종소리
+-Keywords[lt]=prieinamumas,kurčias,kurčnebylys,neįgalus,skambutis,girdimas,matomas skambutis,klaviatūra,mygtukai,prisegti mygtukai,lėti mygtukai,navigacija su pele
+-Keywords[lv]=pieeja,pieejamība,kurls,vājināts,zvans,dzirdams zvans,redzams zvans,Tastatūra,taustiņi,salīmētie taustiņi,elastīgie taustiņi,lēnie taustiņi,peles navigācija,num pads
+-Keywords[mk]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,пристап,пристапност,глув,хендикепиран,ѕвонче,звучно ѕвонче,визуелно ѕвонче,Тастатура,копчиња,лепливи копчиња,отскочни копчиња,бавни копчиња,навигација со глушецот,тастатура со бројки
+-Keywords[nb]=tilgang,tilgjengelighet,døv,handikappet,lyd,signal,bjelle,synlig signal,tastatur,taster,faste valgtaster,trege taster,filtertaster,musnavigering,numerisk tastatur
+-Keywords[nds]=Togang,accessibility,doof,Behinnerte,Pingel,höörbore Pingel,Ogenpingel,Tastatuur,Tasten,backige Tasten,springen Tasten,langsam Tasten,Muusnavigatschoon,Tallenblock
+-Keywords[ne]=पहुँच, पहुँचयोग्यता, डिफ, बिग्रेको, बेल, सुन्न सकिने बेल, हेर्न सकिने बेल, कुञ्जीपाटी, कुञ्जीहरू, टाँसिने कुञ्जीहरू, उफ्रिने कुञ्जीहरू, ढिलो कुञ्जीहरू, माउस नेभिगेसन, नम प्याड
+-Keywords[nl]=toegang,toegankelijkheid,doof,handicap,gehandicapt,bel,signalering,zichtbare meldingen,Keyboard,toetsenbord,keys,toetsen,vastgeplakte toetsen,toetsenaanslag,muisnavigatie,num pad,numerieke klavier
+-Keywords[nn]=tilgang,tilgjenge,døv,handikappa,lyd,signal,bjelle,synleg signal,tastatur,tastar,faste modifikasjonstastar,trege tastar,filtertastar,musnavigering,numerisk tastatur
+-Keywords[pa]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,ਕੀ-ਬੋਰਡ,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[pl]=dostęp,dostępność,głuchy,upośledzony,dzwonek,słyszalny dzwonek widzialny dzwonek,klawiatura,klawisze,klejące klawisze,odbijanie klawiszy,powolne klawisze,nawigacja myszą,klawiatura numeryczna
+-Keywords[pt]=acesso,acessibilidade,surdo,deficiente,campainha,campainha audível,campainha visível,teclado,teclas,teclas 'sticky',teclas 'bounce',teclas lentas,navegação com o rato,num pad
+-Keywords[pt_BR]=acesso,acessibilidade,surdo,deficiente,campainha,audível,campainha visível, teclado,teclas,teclas persistentes,teclas repetidas,teclas lentas,navegação do mouse,teclado numérico
+-Keywords[ro]=acces,accesibilitate,surd,handicap,difuzor,audibil,sunet vizibil,tastatură,taste,taste comutator,taste fără repetiţie,taste lente,navigare mouse,tastatura numerică
+-Keywords[se]=álkkibut,bealljeheapmi,doaimmahehttejuvvon,jietna,signála,oaidnus signála,boallobeavdi,boalut,giddes boalut,sáhpannavigašuvdna,numerálaš boallobeavdi
+-Keywords[sl]=dostop,dostopnost,gluh,gluhota,prizadetost,zvonec,vidni zvonec,zvonček,tipkovnica,tipke,lepljive tipke,počasne tipke,navigacija miške,numerična tipkovnica,invalidnost,invalid
+-Keywords[sr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,приступ,приступачност,глув,хендикепиран,звоно,звучно звоно,визуелно звоно,тастатура,тастери,лепљиви тастери,спори тастери,померање миша,нумеричка тастатура
+-Keywords[sr at latin]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluv,hendikepiran,zvono,zvučno zvono,vizuelno zvono,tastatura,tasteri,lepljivi tasteri,spori tasteri,pomeranje miša,numerička tastatura
+-Keywords[sv]=tillgång,tillgänglighet,döv,handikappad,signal,ljudsignal,visuell signal,Tangentbord,tangenter,klistriga tangenter,studsande tangenter,långsamma tangenter,musnavigering,numeriskt tangentbord
+-Keywords[ta]=அணுகல்,அணுகும் முறை,காது கேளாத,ஆற்றல் குறைந்த,மணியோசை,காதால் கேட்கும் அளவிற்கு மணியோசை,தெரியும் மணியோசை,விசைபலகை,விசைகள்,ஒட்டும் விசைகள்,மீளும் தன்மையுடைய விசைகள்,மெதுவான விசைகள்,சுட்டிநாவிகேஷன்,எண்ணிக்கை அட்டை
+-Keywords[th]=การเข้าถึง,ความง่ายในการใช้งาน,หูหนวก,บกพร่อง,ออด, ออดใช้ฟัง,ออดใช้ดู,แป้นพิมพ์,ปุ่ม,ปุ่มติดหนึบ,ปุ่มสะท้อน, ปุ่มชะลอ,นำทางโดยเมาส์,แผงปุ่มตัวเลข
+-Keywords[tr]=erişim,erişilebilirlik,sağır,özürlü,zil,duyulabilir zil,görünür zil,Klavye,tuşlar,yapışkan tuşlar,zıplayan tuşlar,yavaş tuşlar,fare yönlendirmesi,num pad
+-Keywords[uk]=доступ,доступність,глухий,каліка,дзвінок,аудіодзвінок,відеодзвінок,клавіатура,клавіші,липкі клавіші,пружні клавіші,повільні клавіші,навігація миші,цифрова клавіатура
+-Keywords[vi]=truy cập,hỗ trợ người tàn tật,điếc,bị thương,chuông,chuông kêu,chuông rung,bàn phím,phím,phím dính,phím nảy,phím chậm,di chuyển chuột,bàn phím số
+-Keywords[x-test]=xxaccess,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num padxx
+-Keywords[xh]=nikezela,unikezelo,ayiva,yonakalisiwe,intsimbi,intsimbi evakalayo, intsimbi ebonakalayo,ibhodi yezitshixo,izitshixo,isithixo esincangathi, izitshixo ezilungisiweyo,izitshixo ezinengxolo,izitshixo ezicothayo,indlela yokubeka i mouse endaweni,inkatha ye num
+-Keywords[zh_CN]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,辅助功能,聋,键盘,粘滞键,撞击键,筛选键,鼠标导航,可视铃声,小键盘
+-Keywords[zh_TW]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,使用,聾,鈴聲,聽得見的鈴,看得見的鈴,鍵盤,按鍵,滑鼠導向,數字鍵
++X-KDE-Keywords=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[af]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num bordjie
++X-KDE-Keywords[be]=доступ,даступнасць,званок,гукавы сігнал,бачны сігнал,клавіятура,клавішы,"ліпучыя" клавішы,"рухомыя" клавішы,марудныя клавішы,навігацыя мышшу,лічбавая клавіятура,access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[bg]=Keywords=достъп, увреждания, равностоен, равноправен, зрителни, зрителен, без зрение, access, accessibility, deaf, impaired, bell, audible bell, visible bell, Keyboard, keys, sticky keys, bounce keys, slow keys, mouse navigation, num pad
++X-KDE-Keywords[ca]=accés,accessibilitat,sord,disminuït,timbre,timbre audible,timbre visible,Teclat,tecles,tecles apegaloses,tecles de repetició,tecles lentes,navegació del ratolí,teclat numèric
++X-KDE-Keywords[cs]=Zpřístupnění,Hluchý,Slepý,Postižený,Zvonek,Slyšitelný zvonek,Viditelný zvonek,Klávesnice,Pomalé klávesy,Navigace myši,Num pad
++X-KDE-Keywords[csb]=przëstãp,przëstãpnosc,głëchy,zwónk,słëszalny zwónk,widzalny zwónk,klawiatura,klawisze,przëklejone klawisze,odbijanié klawiszów,pòwólné klawisze,nawigacëjô mëszą,numericznô klawiatura
++X-KDE-Keywords[cy]=mynediad,hygyrchedd,byddar,cloch,cloch clywadwy,cloch gweladwy,bysellfwrdd,allweddell,bysell,bysell gludog,bysell sponcio,bysell araf,llywio llygoden,pad rhif
++X-KDE-Keywords[da]=adgang,tilgængelighed,døv,handicappet,klokke,hørbar klokke,synlig klokke,Tastatur,taster,klæbrige taster,bounce-taster,langsomme taster,musenavigering,numerisk tastatur
++X-KDE-Keywords[de]=Behinderung,Maussteuerung,Signale,Tastatur,Tasten,Taubheit,Verlangsamte Tasten,Zahlenblock,Zugang,Zugangshilfen
++X-KDE-Keywords[el]=πρόσβαση,προσιτότητα,κωφός,impaired,κουδούνι,ακουστή ειδοποίηση,ορατή ειδοποίηση,Πληκτρολόγιο,πλήκτρα,κολλημένα πλήκτρα,πλήκτρα αναπήδησης,αργά πλήκτρα,πλοήγηση ποντικιού,αριθμητικό πληκτρολόγιο
++X-KDE-Keywords[eo]=aliro,handikapito,malhelpito,pepo,videbla pepo,klavaro,klavoj,klavfikso, musnavigado,nombroklavaro
++X-KDE-Keywords[es]=acceso,accesibilidad,sordo,disminuido,timbre,timbre audible,timbre visible,Teclado,teclas,teclas pegajosas,teclas de golpe,teclas lentas,navegación del ratón,teclado numérico
++X-KDE-Keywords[et]=juurdepääs,kurt,puue,puudega,signaal,kuuldav signaal,visuaalne signaal,klaviatuur,klahvid,kleepuvad klahvid,põrkavad klahvid,aeglased klahvid,hiire liigutamine,numbriklaviatuur
++X-KDE-Keywords[eu]=sarrera,erabilerraztasuna,gorra,elbarria,ezkila,ezkila entzungarria, ezkila ikusgarria,Teklatua,teklak,tekla itsaskorrak, bounce teklak,tekla geldoak,sagu bidezko arakaketa,tekla numerikoak
++X-KDE-Keywords[fa]=دستیابی، دستیابی‌پذیری، ناشنوا، معلول، زنگ، زنگ شنیدنی، زنگ مرئی، صفحه کلید، کلیدها، کلیدهای چسبناک، کلیدهای واگشت، کلیدهای کند، ناوش موشی، صفحه اعداد
++X-KDE-Keywords[fi]=käytettävyys,esteettömyys,kuuro,vammautunut,virheilmoitus,virheääni,näkyvä virheilmoitus,näppäimistö,näppäimet,alas jäävät näppäimet,toistavat näppäimet,hitaat näppäimet,hiirinavigointi,numeronäppäimistö
++X-KDE-Keywords[fr]=accès,accessibilité,surdité,sourd,cloche,son,cloche visuelle,cloche sonore,clavier,touches,souris,touches lentes,touches rémanentes,cloche auditive,touches répétées,répétition des touches,auto-maintien des touches,maintien des touches,navigation à la souris,pointeur de souris,émulation du clavier,clavier numérique
++X-KDE-Keywords[fy]=tagong,tagonklikens,dôf,handikap,beheind,bel,sinjalearing,sichtbermeldingen,Kaaiboerd,kaaien,kleef kaaien,kaaioanslag,Mûsnavigaasje,num pad,numeryske klavier
++X-KDE-Keywords[ga]=rochtain,inrochtaineacht,bodhar,clog,clog inchloiste,clog infheicthe,Méarchlár,eochracha,eochracha greamaitheacha,eochracha preabtha,eochracha go mall,nascleanúint luiche,eochaircheap uimhriúil
++X-KDE-Keywords[gl]=aceso,acesibilidade,impar,campá,badalada audíbel,badalada visíbel,teclado,teclas,teclas pegadias,teclas de repetición,teclas lentas,navegación do rato,teclado numérico
++X-KDE-Keywords[he]=גישה,נגישות,חירשים,לקויים,פעמון,פעמון נשמע,פעמון  חזותי,לוח,מקשים ,מקלדת ,מקשים,מקשים דביקים,מקשים מוקפצים,מקשים אטיים,ניווט עכבר,מקשי מספרים, access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[hr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluh,gluhoća,oštećenje,zvono,zvuk zvona,vidljivo zvono,tipkovnica,tipke,odbijanje tipki,spore tipke,navigacija mišem,numeričke tipke
++X-KDE-Keywords[hu]=hozzáférés,segédeszközök,süket,fogyatékos,csengő,hallható csengetés,látható csengetés,billentyűzet,billentyűk,ragadós billentyűk,visszaugró billentyűk,lassú billentyűk,egérkezelés,numerikus billentyűzet
++X-KDE-Keywords[is]=aðgangur,aðgengi,heyrnarlaus,fatlaður,píp,bjalla,sjáanleg bjalla,lyklaborð,takkar,músarnotkun,talnaborð
++X-KDE-Keywords[it]=accesso,accessibilità,non udenti,portatori di handicap,campanella,campanella udibile,campanella visibile,tastiera,tasti,permanenza dei tasti,pressione ravvicinata dei tasti,rallentamento dei tasti,navigazione mouse,tastierino numerico
++X-KDE-Keywords[ja]=アクセス,アクセシビリティ,聾唖,障害,ベル,音声ベル,視覚ベル,キーボート,キー,スティッキーキー,バウンスキー,スローキー,マウス補助,数字パッド
++X-KDE-Keywords[km]=ចូល​ដំណើរការ,មធ្យោបាយ​ងាយស្រួល,ថ្លង់,ពិការ,កណ្ដឹង,កណ្ដឹង​លឺ,កណ្ដឹង​មើល​ឃើញ,ក្ដារចុច,គ្រាប់ចុច គ្រាប់ចុច​ស្អិត,គ្រាប់ចុច​លោត,គ្រាប់ចុច​យឺត,ការ​រុករក​កណ្ដុរ,បន្ទះ​លេខ
++X-KDE-Keywords[ko]=접근성,시각 장애,청각 장애,키보드,키,마우스 탐색,숫자 키,종소리
++X-KDE-Keywords[lt]=prieinamumas,kurčias,kurčnebylys,neįgalus,skambutis,girdimas,matomas skambutis,klaviatūra,mygtukai,prisegti mygtukai,lėti mygtukai,navigacija su pele
++X-KDE-Keywords[lv]=pieeja,pieejamība,kurls,vājināts,zvans,dzirdams zvans,redzams zvans,Tastatūra,taustiņi,salīmētie taustiņi,elastīgie taustiņi,lēnie taustiņi,peles navigācija,num pads
++X-KDE-Keywords[mk]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,пристап,пристапност,глув,хендикепиран,ѕвонче,звучно ѕвонче,визуелно ѕвонче,Тастатура,копчиња,лепливи копчиња,отскочни копчиња,бавни копчиња,навигација со глушецот,тастатура со бројки
++X-KDE-Keywords[nb]=tilgang,tilgjengelighet,døv,handikappet,lyd,signal,bjelle,synlig signal,tastatur,taster,faste valgtaster,trege taster,filtertaster,musnavigering,numerisk tastatur
++X-KDE-Keywords[nds]=Togang,accessibility,doof,Behinnerte,Pingel,höörbore Pingel,Ogenpingel,Tastatuur,Tasten,backige Tasten,springen Tasten,langsam Tasten,Muusnavigatschoon,Tallenblock
++X-KDE-Keywords[ne]=पहुँच, पहुँचयोग्यता, डिफ, बिग्रेको, बेल, सुन्न सकिने बेल, हेर्न सकिने बेल, कुञ्जीपाटी, कुञ्जीहरू, टाँसिने कुञ्जीहरू, उफ्रिने कुञ्जीहरू, ढिलो कुञ्जीहरू, माउस नेभिगेसन, नम प्याड
++X-KDE-Keywords[nl]=toegang,toegankelijkheid,doof,handicap,gehandicapt,bel,signalering,zichtbare meldingen,Keyboard,toetsenbord,keys,toetsen,vastgeplakte toetsen,toetsenaanslag,muisnavigatie,num pad,numerieke klavier
++X-KDE-Keywords[nn]=tilgang,tilgjenge,døv,handikappa,lyd,signal,bjelle,synleg signal,tastatur,tastar,faste modifikasjonstastar,trege tastar,filtertastar,musnavigering,numerisk tastatur
++X-KDE-Keywords[pa]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,ਕੀ-ਬੋਰਡ,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[pl]=dostęp,dostępność,głuchy,upośledzony,dzwonek,słyszalny dzwonek widzialny dzwonek,klawiatura,klawisze,klejące klawisze,odbijanie klawiszy,powolne klawisze,nawigacja myszą,klawiatura numeryczna
++X-KDE-Keywords[pt]=acesso,acessibilidade,surdo,deficiente,campainha,campainha audível,campainha visível,teclado,teclas,teclas 'sticky',teclas 'bounce',teclas lentas,navegação com o rato,num pad
++X-KDE-Keywords[pt_BR]=acesso,acessibilidade,surdo,deficiente,campainha,audível,campainha visível, teclado,teclas,teclas persistentes,teclas repetidas,teclas lentas,navegação do mouse,teclado numérico
++X-KDE-Keywords[ro]=acces,accesibilitate,surd,handicap,difuzor,audibil,sunet vizibil,tastatură,taste,taste comutator,taste fără repetiţie,taste lente,navigare mouse,tastatura numerică
++X-KDE-Keywords[se]=álkkibut,bealljeheapmi,doaimmahehttejuvvon,jietna,signála,oaidnus signála,boallobeavdi,boalut,giddes boalut,sáhpannavigašuvdna,numerálaš boallobeavdi
++X-KDE-Keywords[sl]=dostop,dostopnost,gluh,gluhota,prizadetost,zvonec,vidni zvonec,zvonček,tipkovnica,tipke,lepljive tipke,počasne tipke,navigacija miške,numerična tipkovnica,invalidnost,invalid
++X-KDE-Keywords[sr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,приступ,приступачност,глув,хендикепиран,звоно,звучно звоно,визуелно звоно,тастатура,тастери,лепљиви тастери,спори тастери,померање миша,нумеричка тастатура
++X-KDE-Keywords[sr at latin]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluv,hendikepiran,zvono,zvučno zvono,vizuelno zvono,tastatura,tasteri,lepljivi tasteri,spori tasteri,pomeranje miša,numerička tastatura
++X-KDE-Keywords[sv]=tillgång,tillgänglighet,döv,handikappad,signal,ljudsignal,visuell signal,Tangentbord,tangenter,klistriga tangenter,studsande tangenter,långsamma tangenter,musnavigering,numeriskt tangentbord
++X-KDE-Keywords[ta]=அணுகல்,அணுகும் முறை,காது கேளாத,ஆற்றல் குறைந்த,மணியோசை,காதால் கேட்கும் அளவிற்கு மணியோசை,தெரியும் மணியோசை,விசைபலகை,விசைகள்,ஒட்டும் விசைகள்,மீளும் தன்மையுடைய விசைகள்,மெதுவான விசைகள்,சுட்டிநாவிகேஷன்,எண்ணிக்கை அட்டை
++X-KDE-Keywords[th]=การเข้าถึง,ความง่ายในการใช้งาน,หูหนวก,บกพร่อง,ออด, ออดใช้ฟัง,ออดใช้ดู,แป้นพิมพ์,ปุ่ม,ปุ่มติดหนึบ,ปุ่มสะท้อน, ปุ่มชะลอ,นำทางโดยเมาส์,แผงปุ่มตัวเลข
++X-KDE-Keywords[tr]=erişim,erişilebilirlik,sağır,özürlü,zil,duyulabilir zil,görünür zil,Klavye,tuşlar,yapışkan tuşlar,zıplayan tuşlar,yavaş tuşlar,fare yönlendirmesi,num pad
++X-KDE-Keywords[uk]=доступ,доступність,глухий,каліка,дзвінок,аудіодзвінок,відеодзвінок,клавіатура,клавіші,липкі клавіші,пружні клавіші,повільні клавіші,навігація миші,цифрова клавіатура
++X-KDE-Keywords[vi]=truy cập,hỗ trợ người tàn tật,điếc,bị thương,chuông,chuông kêu,chuông rung,bàn phím,phím,phím dính,phím nảy,phím chậm,di chuyển chuột,bàn phím số
++X-KDE-Keywords[x-test]=xxaccess,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num padxx
++X-KDE-Keywords[xh]=nikezela,unikezelo,ayiva,yonakalisiwe,intsimbi,intsimbi evakalayo, intsimbi ebonakalayo,ibhodi yezitshixo,izitshixo,isithixo esincangathi, izitshixo ezilungisiweyo,izitshixo ezinengxolo,izitshixo ezicothayo,indlela yokubeka i mouse endaweni,inkatha ye num
++X-KDE-Keywords[zh_CN]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,辅助功能,聋,键盘,粘滞键,撞击键,筛选键,鼠标导航,可视铃声,小键盘
++X-KDE-Keywords[zh_TW]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,使用,聾,鈴聲,聽得見的鈴,看得見的鈴,鍵盤,按鍵,滑鼠導向,數字鍵
+--- a/kcontrol/taskbar/kcmtaskbar.desktop
++++ b/kcontrol/taskbar/kcmtaskbar.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kcmtaskbar
+ Icon=preferences-desktop-panel-taskbar
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kcmtaskbar/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kcmtaskbar/index.html
+ 
+ 
+ X-KDE-Library=kcm_taskbar
+@@ -141,62 +140,62 @@
+ Comment[zh_CN]=配置面板的任务栏
+ Comment[zh_TW]=您可以在這裡設定面板工作列
+ 
+-Keywords=kicker,panel,kpanel,taskbar,startbar,launchbar,windows
+-Keywords[be]=Панель,Панель заданняў,Панель стартавання,Вокны,Акно,kicker,panel,kpanel,taskbar,startbar,launchbar,windows
+-Keywords[bg]=Keywords=системен, панел, задачи, задача, прозорец, kicker, panel, kpanel, taskbar, startbar, launchbar, windows
+-Keywords[ca]=kicker,plafó,kpanel,barra de tasques,barra d'inici,barra d'engegar,finestres
+-Keywords[cs]=Kicker,Panel,Pruh úloh,Startovací lišta,Spouštěcí lišta,Okna
+-Keywords[csb]=kicker,panel,kpanel,lëstew dzejaniów,sztartowô lëstew,zrëszanié,òkna
+-Keywords[cy]=kicker,ciciwr,panel,kpanel,bar tasgau,bar cychwyn,bar lawnsio,ffenestri
+-Keywords[da]=kicker,panel,kpanel,opgavelinje,startlinje,kørelinje,vinduer
+-Keywords[de]=Kicker,Kontrollleiste,Panel,KPanel,Taskbar,Startleiste,Fensterleiste,Startleiste,Fenster
+-Keywords[el]=kicker,πίνακας,kpanel,μπάρα εργασιών,μπάρα έναρξης,μπάρα εκκίνησης,παράθυρα
+-Keywords[eo]=lanĉilo,panelo,tasklistelo,lanĉlistelo,fenestro
+-Keywords[es]=kicker,panel,kpanel,barra de tareas,barra de inicio,barra de lanzamiento,ventanas
+-Keywords[et]=kicker,paneel,kpanel,tegumiriba,käivitusriba,aknad
+-Keywords[eu]=kicker,panela,kpanela,ataza-barra,hasiera-barra,abiatze-barra,leihoak
+-Keywords[fa]=kicker، تابلو، kpanel، میله تکلیف، میله آغازه میله راه‌اندازی، پنجره‌ها
+-Keywords[fi]=kicker,paneeli,kpanel,tehtäväpalkki,käynnistys,käynnistyspalkki,ikkunat
+-Keywords[fr]=kicker,tableau de bord,kpanel,barre des tâches,barre de démarrage,barre de lancement,fenêtres
+-Keywords[fy]=kicker,panel,paniel,kpanel,taakbalke,startbalk,Begjinbalke,startmenu,finsters
+-Keywords[ga]=kicker,painéal,kpanel,tascbharra,barra tosaigh,fuinneoga
+-Keywords[gl]=kicker,painel,kpanel,barra de tarefas,startbar,launchbar,windows
+-Keywords[he]=לוח,שורת משימות,שורת התחל,שורת הפעלה,חלונות, kicker,panel,kpanel,taskbar,startbar,launchbar,windows
+-Keywords[hr]=kicker,panel,kpanel,taskbar,startbar,launchbar,ploča,prozori,traka zadataka,ploča,traka pokretanja,windows
+-Keywords[hu]=Kicker,panel,kpanel,feladatlista,indítómenü,ablakok
+-Keywords[is]=spjald,kspjald,tækjaslá,forritaslá,gluggar,ræsingarslá
+-Keywords[it]=kicker,pannello,kpanel,barra delle applicazioni,barra di avvio,finestre
+-Keywords[ja]=kicker,パネル,kpanel,タスクバー,スタートバー,ラウンチバー,ウィンドウ
+-Keywords[km]=kicker បន្ទះ kpanel របារ​ភារកិច្ច របារ​ចាប់ផ្ដើម របារ​ចាប់ផ្ដើម វីនដូ
+-Keywords[ko]=kicker,패널,kpanel,작업 표시줄,창
+-Keywords[lt]=kicker,pultas,kpanel,užduočių juosta,startavimo juosta,paleisties juosta
+-Keywords[lv]=kikers,panelis,kpanelis,uzdevumjosla,startjosla,palaišanasjosla,logi
+-Keywords[mk]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,панел,прозорци
+-Keywords[ms]=kicker,panel, kpanel, 'taskbar', bar mula, bar pelancar, tetingkap
+-Keywords[nb]=kicker,panel,kpanel,oppgavelinje,startlinje,kjørelinje,programlinje,vinduer
+-Keywords[nds]=kicker,Paneel,kpanel,Opgavenbalken,Startbalken,starten,Fnstern
+-Keywords[ne]=हान्ने, प्यानल, केडीई प्यानल, कार्यपट्टी, सुरुपट्टी, सुरुआतपट्टी, सञ्झ्याल
+-Keywords[nl]=kicker,panel,paneel,kpanel,takenbalk,startbalk,launchbar,startmenu,vensters,taakbalk
+-Keywords[nn]=kicker,panel,kpanel,oppgåvelinje,startlinje,programlinje,vindauge
+-Keywords[pa]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,ਪੈਨਲ,ਕੇਪੈਨਲ,ਝਰੋਖੇ,ਸਥਿਤੀ-ਪੱਟੀ
+-Keywords[pl]=kicker,panel,kpanel,pasek zadań,pasek startu,uruchamianie,okna
+-Keywords[pt]=kicker,painel,kpanel,barra de tarefas,barra de arranque,janelas
+-Keywords[pt_BR]=kicker,painel,kpanel,barra de tarefas,barra de início,barra de lançamento,janelas
+-Keywords[ro]=kicker,panou,kpanel,bară de procese,bară de start,pornire,ferestre
+-Keywords[se]=kicker,panela,kpanel,bargoholga,álggahanholga,láset
+-Keywords[sl]=kicker,panel,kpanel,opravilna vrstica,začetna vrstica,izstrelišče,okna
+-Keywords[sr]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,панел,послови,трака задатака,прозори
+-Keywords[sr at latin]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,panel,poslovi,traka zadataka,prozori
+-Keywords[sv]=kicker,panel,kpanel,aktivitetsfält,startrad,programrad,fönster
+-Keywords[ta]= கிக்கர், பலகம்.kபலகம்,பணிப்பட்டி,துவக்கபட்டி, வெளியீட்டுப்பட்டி, சாளரம்
+-Keywords[th]=kicker,ถาดพาเนล,kpanel,taskbar,startbar,แถบเรียกใช้งานด่วน,หน้าต่าง
+-Keywords[tr]=kicker,panel,kpanel,görev çubuğu,başlangıç çubuğu,yükleme çubuğu,pencere,pencereler
+-Keywords[uk]=kicker,панель,панель,kpanel,смужка задач,панель запуску,стартова панель,вікна
+-Keywords[uz]=kicker,kpanel,панел,ойналар,вазифалар панели
+-Keywords[vi]=kích hoạt,bảng điều khiển,bảng điều khiển KDE,thanh tác vụ,thanh khởi chạy,cửa sổ
+-Keywords[x-test]=xxkicker,panel,kpanel,taskbar,startbar,launchbar,windowsxx
+-Keywords[xh]=umkhabi,iwindowe eneenkcukacha,kpanel,ibar yomsebenzi,ibar yokuqalisa,ibar yelaunch,i windows
+-Keywords[zh_CN]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,面板,任务栏,启动栏
+-Keywords[zh_TW]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,控制面板,工作列,狀態列,快捷列,視窗
++X-KDE-Keywords=kicker,panel,kpanel,taskbar,startbar,launchbar,windows
++X-KDE-Keywords[be]=Панель,Панель заданняў,Панель стартавання,Вокны,Акно,kicker,panel,kpanel,taskbar,startbar,launchbar,windows
++X-KDE-Keywords[bg]=Keywords=системен, панел, задачи, задача, прозорец, kicker, panel, kpanel, taskbar, startbar, launchbar, windows
++X-KDE-Keywords[ca]=kicker,plafó,kpanel,barra de tasques,barra d'inici,barra d'engegar,finestres
++X-KDE-Keywords[cs]=Kicker,Panel,Pruh úloh,Startovací lišta,Spouštěcí lišta,Okna
++X-KDE-Keywords[csb]=kicker,panel,kpanel,lëstew dzejaniów,sztartowô lëstew,zrëszanié,òkna
++X-KDE-Keywords[cy]=kicker,ciciwr,panel,kpanel,bar tasgau,bar cychwyn,bar lawnsio,ffenestri
++X-KDE-Keywords[da]=kicker,panel,kpanel,opgavelinje,startlinje,kørelinje,vinduer
++X-KDE-Keywords[de]=Kicker,Kontrollleiste,Panel,KPanel,Taskbar,Startleiste,Fensterleiste,Startleiste,Fenster
++X-KDE-Keywords[el]=kicker,πίνακας,kpanel,μπάρα εργασιών,μπάρα έναρξης,μπάρα εκκίνησης,παράθυρα
++X-KDE-Keywords[eo]=lanĉilo,panelo,tasklistelo,lanĉlistelo,fenestro
++X-KDE-Keywords[es]=kicker,panel,kpanel,barra de tareas,barra de inicio,barra de lanzamiento,ventanas
++X-KDE-Keywords[et]=kicker,paneel,kpanel,tegumiriba,käivitusriba,aknad
++X-KDE-Keywords[eu]=kicker,panela,kpanela,ataza-barra,hasiera-barra,abiatze-barra,leihoak
++X-KDE-Keywords[fa]=kicker، تابلو، kpanel، میله تکلیف، میله آغازه میله راه‌اندازی، پنجره‌ها
++X-KDE-Keywords[fi]=kicker,paneeli,kpanel,tehtäväpalkki,käynnistys,käynnistyspalkki,ikkunat
++X-KDE-Keywords[fr]=kicker,tableau de bord,kpanel,barre des tâches,barre de démarrage,barre de lancement,fenêtres
++X-KDE-Keywords[fy]=kicker,panel,paniel,kpanel,taakbalke,startbalk,Begjinbalke,startmenu,finsters
++X-KDE-Keywords[ga]=kicker,painéal,kpanel,tascbharra,barra tosaigh,fuinneoga
++X-KDE-Keywords[gl]=kicker,painel,kpanel,barra de tarefas,startbar,launchbar,windows
++X-KDE-Keywords[he]=לוח,שורת משימות,שורת התחל,שורת הפעלה,חלונות, kicker,panel,kpanel,taskbar,startbar,launchbar,windows
++X-KDE-Keywords[hr]=kicker,panel,kpanel,taskbar,startbar,launchbar,ploča,prozori,traka zadataka,ploča,traka pokretanja,windows
++X-KDE-Keywords[hu]=Kicker,panel,kpanel,feladatlista,indítómenü,ablakok
++X-KDE-Keywords[is]=spjald,kspjald,tækjaslá,forritaslá,gluggar,ræsingarslá
++X-KDE-Keywords[it]=kicker,pannello,kpanel,barra delle applicazioni,barra di avvio,finestre
++X-KDE-Keywords[ja]=kicker,パネル,kpanel,タスクバー,スタートバー,ラウンチバー,ウィンドウ
++X-KDE-Keywords[km]=kicker បន្ទះ kpanel របារ​ភារកិច្ច របារ​ចាប់ផ្ដើម របារ​ចាប់ផ្ដើម វីនដូ
++X-KDE-Keywords[ko]=kicker,패널,kpanel,작업 표시줄,창
++X-KDE-Keywords[lt]=kicker,pultas,kpanel,užduočių juosta,startavimo juosta,paleisties juosta
++X-KDE-Keywords[lv]=kikers,panelis,kpanelis,uzdevumjosla,startjosla,palaišanasjosla,logi
++X-KDE-Keywords[mk]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,панел,прозорци
++X-KDE-Keywords[ms]=kicker,panel, kpanel, 'taskbar', bar mula, bar pelancar, tetingkap
++X-KDE-Keywords[nb]=kicker,panel,kpanel,oppgavelinje,startlinje,kjørelinje,programlinje,vinduer
++X-KDE-Keywords[nds]=kicker,Paneel,kpanel,Opgavenbalken,Startbalken,starten,Fnstern
++X-KDE-Keywords[ne]=हान्ने, प्यानल, केडीई प्यानल, कार्यपट्टी, सुरुपट्टी, सुरुआतपट्टी, सञ्झ्याल
++X-KDE-Keywords[nl]=kicker,panel,paneel,kpanel,takenbalk,startbalk,launchbar,startmenu,vensters,taakbalk
++X-KDE-Keywords[nn]=kicker,panel,kpanel,oppgåvelinje,startlinje,programlinje,vindauge
++X-KDE-Keywords[pa]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,ਪੈਨਲ,ਕੇਪੈਨਲ,ਝਰੋਖੇ,ਸਥਿਤੀ-ਪੱਟੀ
++X-KDE-Keywords[pl]=kicker,panel,kpanel,pasek zadań,pasek startu,uruchamianie,okna
++X-KDE-Keywords[pt]=kicker,painel,kpanel,barra de tarefas,barra de arranque,janelas
++X-KDE-Keywords[pt_BR]=kicker,painel,kpanel,barra de tarefas,barra de início,barra de lançamento,janelas
++X-KDE-Keywords[ro]=kicker,panou,kpanel,bară de procese,bară de start,pornire,ferestre
++X-KDE-Keywords[se]=kicker,panela,kpanel,bargoholga,álggahanholga,láset
++X-KDE-Keywords[sl]=kicker,panel,kpanel,opravilna vrstica,začetna vrstica,izstrelišče,okna
++X-KDE-Keywords[sr]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,панел,послови,трака задатака,прозори
++X-KDE-Keywords[sr at latin]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,panel,poslovi,traka zadataka,prozori
++X-KDE-Keywords[sv]=kicker,panel,kpanel,aktivitetsfält,startrad,programrad,fönster
++X-KDE-Keywords[ta]= கிக்கர், பலகம்.kபலகம்,பணிப்பட்டி,துவக்கபட்டி, வெளியீட்டுப்பட்டி, சாளரம்
++X-KDE-Keywords[th]=kicker,ถาดพาเนล,kpanel,taskbar,startbar,แถบเรียกใช้งานด่วน,หน้าต่าง
++X-KDE-Keywords[tr]=kicker,panel,kpanel,görev çubuğu,başlangıç çubuğu,yükleme çubuğu,pencere,pencereler
++X-KDE-Keywords[uk]=kicker,панель,панель,kpanel,смужка задач,панель запуску,стартова панель,вікна
++X-KDE-Keywords[uz]=kicker,kpanel,панел,ойналар,вазифалар панели
++X-KDE-Keywords[vi]=kích hoạt,bảng điều khiển,bảng điều khiển KDE,thanh tác vụ,thanh khởi chạy,cửa sổ
++X-KDE-Keywords[x-test]=xxkicker,panel,kpanel,taskbar,startbar,launchbar,windowsxx
++X-KDE-Keywords[xh]=umkhabi,iwindowe eneenkcukacha,kpanel,ibar yomsebenzi,ibar yokuqalisa,ibar yelaunch,i windows
++X-KDE-Keywords[zh_CN]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,面板,任务栏,启动栏
++X-KDE-Keywords[zh_TW]=kicker,panel,kpanel,taskbar,startbar,launchbar,windows,控制面板,工作列,狀態列,快捷列,視窗
+ 
+ Categories=Qt;KDE;X-KDE-settings-desktop;
+--- a/kcontrol/fonts/fonts.desktop
++++ b/kcontrol/fonts/fonts.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 fonts
+ Icon=preferences-desktop-font
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/fonts/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/fonts/index.html
+ 
+ X-KDE-Library=kcm_fonts
+ X-KDE-ParentApp=kcontrol
+@@ -143,63 +142,63 @@
+ Comment[zh_CN]=字体设置
+ Comment[zh_TW]=字型設定
+ 
+-Keywords=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
+-Keywords[be]=шрыфты,памер шрыфту,стылі,знаказборы,знакавыя зборы,панель,панель кіравання,працоўныя сталы,працоўны стол,кіраўнік файлаў,панелі начынняў,панель начыння,меню,загаловак акна,загаловак,назва,fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
+-Keywords[bg]=Keywords=шрифт, шрифтове, размер, символи, знаци, системен панел, fonts, font size, styles, charsets, character sets, panel, kicker, control panel, desktops, FileManager, Toolbars, Menu, Window Title, Title
+-Keywords[ca]=tipus de lletra,mida de tipus de lletra,estils,jocs de caràcters,plafó,kicker,plafó de control,escriptoris,Gestor de fitxers,Barres d'eines,Menú,Títol de finestra,Títol
+-Keywords[cs]=Písma,Velikost písem,Styly,Znaková sada,Panel,Kicker,Ovládací centrum,Plocha,Správce souborů,Nástrojová lišta,Nabídka,Titulek okna,Titulek
+-Keywords[csb]=fòntë,miara fòntu,sztél,zestôw znaków,panel,kicker,panel sterowaniô,pùltë,biurka,menedżera lopków,lëstwë nôrzãdzów,menu,titel òkna,titel
+-Keywords[cy]=ffontiau,maint ffontiau,arddulliau,setiau nodau,panel,ciciwr,rheolydd panel,penbyrddau,Rheolwr Ffeiliau,Barrau Offer,Dewislen,Teitl Ffenestr,Teitl
+-Keywords[da]=skrifttyper,skriftstørrelse,stil,tegnsæt,panel,kicker,kontrolpanel,desktoppe,Filhåndtering,Værktøjslinje,Menu,Vinduestitel,Titel
+-Keywords[de]=Schriftarten,Schriftgrößen,Zeichensätze,Kontrollleiste,Panel,Kicker,Stile,Dateimanager,Arbeitsflächen,Werkzeugleisten,Menüs,Fenstertitel,Titel
+-Keywords[el]=γραμματοσειρές,μέγεθος γραμματοσειράς,στυλ,σύνολα χαρακτήρων,σύνολα χαρακτήρων,πίνακας,kicker,πίνακας ελέγχου,επιφάνειες εργασίας,Διαχειριστής αρχείων,Γραμμές εργαλείων,Μενού,Τίτλος παραθύρου,Τίτλος
+-Keywords[eo]=tiparo,grandeco,stilo,signaro,panelo,lanĉilo,stirpanelo,tabuloj,dosieradministrilo,illistelo,menuo,fenestrotitolo,titolo
+-Keywords[es]=tipos de letra,tamaño de letra,estilos,mapas de caracteres,panel,kicker,panel de control,escritorios,Gestor de ficheros,Barras de herramientas,Menú,Título de la ventana,Título
+-Keywords[et]=fondid,font,fondi suurus,stiil,kooditabel,paneel,kicker,juhtimiskeskus,töölauad,failihaldur,tööriistaribad,menüü,akna pealdis,pealdis
+-Keywords[eu]=letra-tipoak,letra-tipoa,neurria,estiloak,karaktere-multzoak,karactere ezarpenak ,panela,kicker,kontrol panela,mahaigainak,Fitxategi kudeatzailea,Tresna-barrak, Menua,Leihoaren titulua,Titulua 
+-Keywords[fa]=قلمها، اندازۀ قلم، سبکها، نویسه‌گان، نویسه‌گان، تابلو، kicker، تابلوی کنترل، رومیزیها، مدیر پرونده، میله ابزارها، گزینگان، عنوان پنجره، عنوان
+-Keywords[fi]=kirjasimet,kirjasin,kirjasimen koko,tyyli,merkistö,paneeli,kicker,ohjauspaneeli,työpöydät,Tiedostonhallinta,Työkalurivit,Valikko,Ikkunan otsikko,Otsikko
+-Keywords[fr]=polices,police,taille de police,jeu de caractères,tableau de bord,kicker,bureau,bureaux,gestionnaire de fichiers,gestion de fichiers,barre d'outils,menu,titre de fenêtre,titre,fenêtre,barre de menus,barres de menus,barres d'outils
+-Keywords[fy]=fonts,font,letters,lettertypen,lettertypes,tekenset,karakterferzamling,paniel,kicker,Konfiguraasjesintrum,styl,triembehearder,wurkbalke,menu,Finster,titel,finstertitel,desktops,buroblêden
+-Keywords[ga]=clónna,clófhoirne,clómhéid,stíleanna,tacair charachtair,painéal,kicker,painéal rialaithe,deasca,Bainisteoir Comhad,Barraí Uirlisí,Roghchlár,Teideal Fuinneoige,Teideal
+-Keywords[gl]=fontes,tamaño da fonte,estilos,codificación,conxunto de carácteres,painel,kicker,painel de control,escritórios,Xestor de Ficheiros,Barras de ferramentas,Menu,Título da Fiestra,Título
+-Keywords[he]=לוח הבקרה,שולחנות עבודה,מנהל קבצים,סרגלי כלים,תפריט,כותרת, חלון,כותרת,גופנים,גודל גופן,סגנונות,מערכי תווים,לוח, fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
+-Keywords[hr]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,fontovi,veličina fonta,stilovi,znakovi,ploča,radna površina,alatne trake,izbornik,naslov prozora,naslov,upravljanje datotekama
+-Keywords[hu]=betűtípusok,betűméret,stílusok,karakterkészletek,panel,Kicker,vezérlőközpont,asztalok,fájlkezelő,eszköztár,menü,ablakcím,címsor
+-Keywords[is]=letur,leturstærð,leturgerð,stafatafla,spjald,stillingar,spjald,kicker,gluggar,titill,titilrönd
+-Keywords[it]=tipi di carattere,caratteri,dimensione carattere,stile,insieme di caratteri,pannello,kicker,pannello di controllo,desktop,file manager,barre degli strumenti,menu,finestre,titolo finestra,titolo
+-Keywords[ja]=フォント,フォントサイズ,スタイル,文字セットパネル,kicker,コントロールパネル,デスクトップ,ファイルマネージャ,ツールバー,メニュー,ウィンドウタイトル,タイトル
+-Keywords[ka]=ფონტები,ფონტების ზომა,სტილები,სიმბოლოების რუქა,სიმბოლოების რუქა,პანელი,kicker,კონტროლის პანელი,სამუშაო მაგიდები,ფაილის მენეჯერი,ინსტრუმენტთა პანელი,მენიუ,ფანჯრის სათაური,სათაური
+-Keywords[km]=ពុម្ពអក្សរ,ទំហំ​ពុម្ពអក្សរ,រចនាប័ទ្ម,​តួអក្សរ,សំណុំ​តួអក្សរ,បន្ទះ, kicker,ស្លាបព្រិល​បញ្ជា,ផ្ទៃតុ,កម្មវិធី​គ្រប់គ្រង​ឯកសារ,របារ​ឧបករណ៍,ម៉ឺនុយ,ចំណងជើង​បង្អួច,ចំណងជើង
+-Keywords[ko]=글꼴,글꼴 크기,문자셋,문자 인코딩,패널,제어판,데스크톱,배경 화면,도구 모음,창 제목,메뉴
+-Keywords[lt]=fonts,šriftai,font size,šrifto dydis,styles,stiliai,charsets,kodavimas,koduotė,simbolių rinkinys,panel,pultas,kicker,control panel,Valdymo Centras,desktops,darbastaliai,FileManager,failų tvarkyklė,Toolbars,įrankinės,įrankių juostos,Menu,meniu,Window Title,Title,antraštė
+-Keywords[lv]=fonti,fonta izmērs,stili,čārseti,simbolu komplekti,panelis,kikers,vadības panelis,darbvirsmas,FailuMenedžeris,Rīkjoslas,Izvēlne,Loga Titli,Titli
+-Keywords[mk]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,фонтови,големина на фонтови,стилови,знаковно множество,знаковни множества,панел,контролен панел,површини,лентасо алатки,алатки,Мени,Наслов на прозорец,Наслов
+-Keywords[nb]=skrift,skrifttyper,skriftstørrelse,stil,tegnsett,panel,kicker,kontrollpanel,skrivebord,filbehandler,verktøylinjer,meny,vindustittel,tittel
+-Keywords[nds]=Schriftoorden,Schriftgrött,Stilen,Tekensetten,Paneel,kicker,Kuntrullbalken,Schriefdischen,Dateimanager,Dateipleger,Warktüüchbalken,Menü,Finstertitel,Titel
+-Keywords[ne]=फन्ट,फन्ट साइज,शैली,क्यारेक्टर सेट,क्यारेक्टर सेट,प्यानल,किकर,नियन्त्रण प्यानल,डेस्कटप,फाइल प्रबन्धक,उपकरणपट्टी,मेनु,सञ्झ्याल शीर्षक,शीर्षक
+-Keywords[nl]=fonts,font,letters,lettertypen,lettertypes,tekenset,tekenverzamelingen,paneel,kicker,configuratiecentrum,stijl,bestandsbeheerder,werkbalk,menu,venster,titel,venstertitel,desktops,bureaubladen
+-Keywords[nn]=skrift,skrift,skriftstorleik,stil,teiknsett,panel,kicker,kontrollpanel,skrivebord,filhandsamar,verktøylinjer,meny,vindaugstittel,tittel
+-Keywords[pa]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,ਫੋਂਟ,ਫੋਂਟ ਅਕਾਰ,ਕੰਟਰੋਲ ਪੈਨਲ,ਡੈਸਕਟਾਪ,ਫਾਇਲ ਮੈਨੇਜਰ,ਮੇਨੂ,ਟਾਇਟਲ
+-Keywords[pl]=czcionki,rozmiar czcionki,styl,zestaw znaków,panel,kicker,panel sterowania,pulpity,biurka,menedżer plików,paski narzędzi,menu,tytuł okna,tytuł
+-Keywords[pt]=tipo de letra,tipos de letra,fontes,fonte,tamanho de fonte,estilo,mapa de caracteres,painel,kicker,painel de controlo,ecrãs,gestor de ficheiros,barras de ferramentas,menu,título da janela,título
+-Keywords[pt_BR]=fontes,letras,tipos de letra,tamanho de fonte,tamanho de letra,estilo,conjunto de caracteres,painel,gerenciador de janelas,painel de controle,áreas de trabalho,Gerenciador de arquivos,barras de ferramentas,título da janela,título
+-Keywords[ro]=fonturi,font,mărime,stil,set de caractere,panou,kicker,panou de control,ecrane,manager de fişiere,bară de unelte,meniu,titlu fereastră,titlu
+-Keywords[se]=fonttat,fontasturrodat,stiila,charsets,character sets,panela,kicker,stivrenpanela, čállinbeavddit,fiilagieđahalli,neavvoholggat,fálut,lásenamahusat,namahus
+-Keywords[sl]=pisava,pisave,velikost pisave,slog,stil,znakovni nabor,pult,kicker,nadzorna plošča,upravitelj datotek,upravitelj,orodna vrstica,naslov okna,naslov
+-Keywords[sr]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,фонтови,величина фонтова,стилови,скупови знакова,панел,контролни панел,радне површи,менаџер фајлова,траке са алатом,мени,наслов прозора,наслов
+-Keywords[sr at latin]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,fontovi,veličina fontova,stilovi,skupovi znakova,panel,kontrolni panel,radne površi,menadžer fajlova,trake sa alatom,meni,naslov prozora,naslov
+-Keywords[sv]=typsnitt,teckensnitt,typsnittstorlek,teckensnittstorlek,stil,teckenkodning,panel,kicker,kontrollpanel,inställningscentral,Filhanterare,Verktygsrader,Meny,Fönstertitel,Titel
+-Keywords[ta]=எழுத்துருக்கள்,எழுத்துரு அளவு,பாணிகள்,எழுத்து அமைப்பு,எழுத்து அமைப்புகள்,பலகம்,கிக்கர்,கட்டுப்பாட்டு பலகம்,மேல்மேசைகள்,கோப்பு மேலாளர்,கருவிப்பட்டிகள்,பட்டியல்,சாளர தலைப்பு,தலைப்பு
+-Keywords[th]=แบบอักษร,ขนาดแบบอักษร,ลักษณะ,ชุดรหัสอักขระ,ชุดอักขระ,พาเนล,คิกเกอร์,ถาดควบคุม,พื้นที่ทำงาน,จัดการแฟ้ม,แถบเครื่องมือ,เมนู,แถบหัวเรื่องหน้าต่าง,แถบหัวเรื่อง
+-Keywords[tr]=yazıtipleri,yazı boyutu,stil,karakter kümesi,panel,kicker,denetim masası,masaüstü,masaüstleri,Araç Çubuğu,Menü,Pencere Başlığı,Başlık
+-Keywords[uk]=шрифти,шрифт,розмір шрифту,стиль,набір символів,панель,kicker,панель керування,стільниці,панель інструментів,меню,заголовок вікна,заголовок
+-Keywords[uz]=шрифтлар,шрифтнинг ўлчами,услублар,белги тўплами,кодлаш усули,панел,бошқарув панели,иш столлари,Файл бошқарувчиси,Асбоблар панели,Меню,Ойнанинг сарлавҳаси,Сарлавҳа
+-Keywords[vi]=Phông chữ,cỡ,kiểu,bảng mã,bộ ký tự,bảng,thanh đẩy,bảng điều khiển,màn hình nền,Trình quản lý Tập tin,Thanh công cụ,Thực đơn,Tên Cửa sổ,Tên
+-Keywords[wa]=fonte,fontes,grandeu del fonte,stîle,miernowes,cråsses,clintcheyes,ecôdaedjes,djeu di caracteres,scriftôr,kicker,cinte di controle,scribannes,Manaedjeu di fitchîs,Bår d' usteyes,Menu,Tite do purnea,Bår di tite,Tite
+-Keywords[x-test]=xxfonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Titlexx
+-Keywords[xh]=ubungakanani bamagama,ubungakanani begama,iintlobo,iicharset,amaqela abasebenzi,iqela labantu benjongo ethile,umkhabi,iqela labantu abalawulayo benjongo ethile,desktops,Umphathi wefayile iibar zesixhobo,Menu,Umxholo we Window,Umxholo
+-Keywords[zh_CN]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,字体,字体大小,风格,字符集,面板,控制面板,桌面,文件管理器,工具条,菜单,窗口标题,标题
+-Keywords[zh_TW]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,字型,字型大小,風格,字元,字元集,面板,控制面板,桌面,檔案管理程式,工具列,選單,視窗標題,標題
++X-KDE-Keywords=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
++X-KDE-Keywords[be]=шрыфты,памер шрыфту,стылі,знаказборы,знакавыя зборы,панель,панель кіравання,працоўныя сталы,працоўны стол,кіраўнік файлаў,панелі начынняў,панель начыння,меню,загаловак акна,загаловак,назва,fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
++X-KDE-Keywords[bg]=Keywords=шрифт, шрифтове, размер, символи, знаци, системен панел, fonts, font size, styles, charsets, character sets, panel, kicker, control panel, desktops, FileManager, Toolbars, Menu, Window Title, Title
++X-KDE-Keywords[ca]=tipus de lletra,mida de tipus de lletra,estils,jocs de caràcters,plafó,kicker,plafó de control,escriptoris,Gestor de fitxers,Barres d'eines,Menú,Títol de finestra,Títol
++X-KDE-Keywords[cs]=Písma,Velikost písem,Styly,Znaková sada,Panel,Kicker,Ovládací centrum,Plocha,Správce souborů,Nástrojová lišta,Nabídka,Titulek okna,Titulek
++X-KDE-Keywords[csb]=fòntë,miara fòntu,sztél,zestôw znaków,panel,kicker,panel sterowaniô,pùltë,biurka,menedżera lopków,lëstwë nôrzãdzów,menu,titel òkna,titel
++X-KDE-Keywords[cy]=ffontiau,maint ffontiau,arddulliau,setiau nodau,panel,ciciwr,rheolydd panel,penbyrddau,Rheolwr Ffeiliau,Barrau Offer,Dewislen,Teitl Ffenestr,Teitl
++X-KDE-Keywords[da]=skrifttyper,skriftstørrelse,stil,tegnsæt,panel,kicker,kontrolpanel,desktoppe,Filhåndtering,Værktøjslinje,Menu,Vinduestitel,Titel
++X-KDE-Keywords[de]=Schriftarten,Schriftgrößen,Zeichensätze,Kontrollleiste,Panel,Kicker,Stile,Dateimanager,Arbeitsflächen,Werkzeugleisten,Menüs,Fenstertitel,Titel
++X-KDE-Keywords[el]=γραμματοσειρές,μέγεθος γραμματοσειράς,στυλ,σύνολα χαρακτήρων,σύνολα χαρακτήρων,πίνακας,kicker,πίνακας ελέγχου,επιφάνειες εργασίας,Διαχειριστής αρχείων,Γραμμές εργαλείων,Μενού,Τίτλος παραθύρου,Τίτλος
++X-KDE-Keywords[eo]=tiparo,grandeco,stilo,signaro,panelo,lanĉilo,stirpanelo,tabuloj,dosieradministrilo,illistelo,menuo,fenestrotitolo,titolo
++X-KDE-Keywords[es]=tipos de letra,tamaño de letra,estilos,mapas de caracteres,panel,kicker,panel de control,escritorios,Gestor de ficheros,Barras de herramientas,Menú,Título de la ventana,Título
++X-KDE-Keywords[et]=fondid,font,fondi suurus,stiil,kooditabel,paneel,kicker,juhtimiskeskus,töölauad,failihaldur,tööriistaribad,menüü,akna pealdis,pealdis
++X-KDE-Keywords[eu]=letra-tipoak,letra-tipoa,neurria,estiloak,karaktere-multzoak,karactere ezarpenak ,panela,kicker,kontrol panela,mahaigainak,Fitxategi kudeatzailea,Tresna-barrak, Menua,Leihoaren titulua,Titulua
++X-KDE-Keywords[fa]=قلمها، اندازۀ قلم، سبکها، نویسه‌گان، نویسه‌گان، تابلو، kicker، تابلوی کنترل، رومیزیها، مدیر پرونده، میله ابزارها، گزینگان، عنوان پنجره، عنوان
++X-KDE-Keywords[fi]=kirjasimet,kirjasin,kirjasimen koko,tyyli,merkistö,paneeli,kicker,ohjauspaneeli,työpöydät,Tiedostonhallinta,Työkalurivit,Valikko,Ikkunan otsikko,Otsikko
++X-KDE-Keywords[fr]=polices,police,taille de police,jeu de caractères,tableau de bord,kicker,bureau,bureaux,gestionnaire de fichiers,gestion de fichiers,barre d'outils,menu,titre de fenêtre,titre,fenêtre,barre de menus,barres de menus,barres d'outils
++X-KDE-Keywords[fy]=fonts,font,letters,lettertypen,lettertypes,tekenset,karakterferzamling,paniel,kicker,Konfiguraasjesintrum,styl,triembehearder,wurkbalke,menu,Finster,titel,finstertitel,desktops,buroblêden
++X-KDE-Keywords[ga]=clónna,clófhoirne,clómhéid,stíleanna,tacair charachtair,painéal,kicker,painéal rialaithe,deasca,Bainisteoir Comhad,Barraí Uirlisí,Roghchlár,Teideal Fuinneoige,Teideal
++X-KDE-Keywords[gl]=fontes,tamaño da fonte,estilos,codificación,conxunto de carácteres,painel,kicker,painel de control,escritórios,Xestor de Ficheiros,Barras de ferramentas,Menu,Título da Fiestra,Título
++X-KDE-Keywords[he]=לוח הבקרה,שולחנות עבודה,מנהל קבצים,סרגלי כלים,תפריט,כותרת, חלון,כותרת,גופנים,גודל גופן,סגנונות,מערכי תווים,לוח, fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title
++X-KDE-Keywords[hr]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,fontovi,veličina fonta,stilovi,znakovi,ploča,radna površina,alatne trake,izbornik,naslov prozora,naslov,upravljanje datotekama
++X-KDE-Keywords[hu]=betűtípusok,betűméret,stílusok,karakterkészletek,panel,Kicker,vezérlőközpont,asztalok,fájlkezelő,eszköztár,menü,ablakcím,címsor
++X-KDE-Keywords[is]=letur,leturstærð,leturgerð,stafatafla,spjald,stillingar,spjald,kicker,gluggar,titill,titilrönd
++X-KDE-Keywords[it]=tipi di carattere,caratteri,dimensione carattere,stile,insieme di caratteri,pannello,kicker,pannello di controllo,desktop,file manager,barre degli strumenti,menu,finestre,titolo finestra,titolo
++X-KDE-Keywords[ja]=フォント,フォントサイズ,スタイル,文字セットパネル,kicker,コントロールパネル,デスクトップ,ファイルマネージャ,ツールバー,メニュー,ウィンドウタイトル,タイトル
++X-KDE-Keywords[ka]=ფონტები,ფონტების ზომა,სტილები,სიმბოლოების რუქა,სიმბოლოების რუქა,პანელი,kicker,კონტროლის პანელი,სამუშაო მაგიდები,ფაილის მენეჯერი,ინსტრუმენტთა პანელი,მენიუ,ფანჯრის სათაური,სათაური
++X-KDE-Keywords[km]=ពុម្ពអក្សរ,ទំហំ​ពុម្ពអក្សរ,រចនាប័ទ្ម,​តួអក្សរ,សំណុំ​តួអក្សរ,បន្ទះ, kicker,ស្លាបព្រិល​បញ្ជា,ផ្ទៃតុ,កម្មវិធី​គ្រប់គ្រង​ឯកសារ,របារ​ឧបករណ៍,ម៉ឺនុយ,ចំណងជើង​បង្អួច,ចំណងជើង
++X-KDE-Keywords[ko]=글꼴,글꼴 크기,문자셋,문자 인코딩,패널,제어판,데스크톱,배경 화면,도구 모음,창 제목,메뉴
++X-KDE-Keywords[lt]=fonts,šriftai,font size,šrifto dydis,styles,stiliai,charsets,kodavimas,koduotė,simbolių rinkinys,panel,pultas,kicker,control panel,Valdymo Centras,desktops,darbastaliai,FileManager,failų tvarkyklė,Toolbars,įrankinės,įrankių juostos,Menu,meniu,Window Title,Title,antraštė
++X-KDE-Keywords[lv]=fonti,fonta izmērs,stili,čārseti,simbolu komplekti,panelis,kikers,vadības panelis,darbvirsmas,FailuMenedžeris,Rīkjoslas,Izvēlne,Loga Titli,Titli
++X-KDE-Keywords[mk]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,фонтови,големина на фонтови,стилови,знаковно множество,знаковни множества,панел,контролен панел,површини,лентасо алатки,алатки,Мени,Наслов на прозорец,Наслов
++X-KDE-Keywords[nb]=skrift,skrifttyper,skriftstørrelse,stil,tegnsett,panel,kicker,kontrollpanel,skrivebord,filbehandler,verktøylinjer,meny,vindustittel,tittel
++X-KDE-Keywords[nds]=Schriftoorden,Schriftgrött,Stilen,Tekensetten,Paneel,kicker,Kuntrullbalken,Schriefdischen,Dateimanager,Dateipleger,Warktüüchbalken,Menü,Finstertitel,Titel
++X-KDE-Keywords[ne]=फन्ट,फन्ट साइज,शैली,क्यारेक्टर सेट,क्यारेक्टर सेट,प्यानल,किकर,नियन्त्रण प्यानल,डेस्कटप,फाइल प्रबन्धक,उपकरणपट्टी,मेनु,सञ्झ्याल शीर्षक,शीर्षक
++X-KDE-Keywords[nl]=fonts,font,letters,lettertypen,lettertypes,tekenset,tekenverzamelingen,paneel,kicker,configuratiecentrum,stijl,bestandsbeheerder,werkbalk,menu,venster,titel,venstertitel,desktops,bureaubladen
++X-KDE-Keywords[nn]=skrift,skrift,skriftstorleik,stil,teiknsett,panel,kicker,kontrollpanel,skrivebord,filhandsamar,verktøylinjer,meny,vindaugstittel,tittel
++X-KDE-Keywords[pa]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,ਫੋਂਟ,ਫੋਂਟ ਅਕਾਰ,ਕੰਟਰੋਲ ਪੈਨਲ,ਡੈਸਕਟਾਪ,ਫਾਇਲ ਮੈਨੇਜਰ,ਮੇਨੂ,ਟਾਇਟਲ
++X-KDE-Keywords[pl]=czcionki,rozmiar czcionki,styl,zestaw znaków,panel,kicker,panel sterowania,pulpity,biurka,menedżer plików,paski narzędzi,menu,tytuł okna,tytuł
++X-KDE-Keywords[pt]=tipo de letra,tipos de letra,fontes,fonte,tamanho de fonte,estilo,mapa de caracteres,painel,kicker,painel de controlo,ecrãs,gestor de ficheiros,barras de ferramentas,menu,título da janela,título
++X-KDE-Keywords[pt_BR]=fontes,letras,tipos de letra,tamanho de fonte,tamanho de letra,estilo,conjunto de caracteres,painel,gerenciador de janelas,painel de controle,áreas de trabalho,Gerenciador de arquivos,barras de ferramentas,título da janela,título
++X-KDE-Keywords[ro]=fonturi,font,mărime,stil,set de caractere,panou,kicker,panou de control,ecrane,manager de fişiere,bară de unelte,meniu,titlu fereastră,titlu
++X-KDE-Keywords[se]=fonttat,fontasturrodat,stiila,charsets,character sets,panela,kicker,stivrenpanela, čállinbeavddit,fiilagieđahalli,neavvoholggat,fálut,lásenamahusat,namahus
++X-KDE-Keywords[sl]=pisava,pisave,velikost pisave,slog,stil,znakovni nabor,pult,kicker,nadzorna plošča,upravitelj datotek,upravitelj,orodna vrstica,naslov okna,naslov
++X-KDE-Keywords[sr]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,фонтови,величина фонтова,стилови,скупови знакова,панел,контролни панел,радне површи,менаџер фајлова,траке са алатом,мени,наслов прозора,наслов
++X-KDE-Keywords[sr at latin]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,fontovi,veličina fontova,stilovi,skupovi znakova,panel,kontrolni panel,radne površi,menadžer fajlova,trake sa alatom,meni,naslov prozora,naslov
++X-KDE-Keywords[sv]=typsnitt,teckensnitt,typsnittstorlek,teckensnittstorlek,stil,teckenkodning,panel,kicker,kontrollpanel,inställningscentral,Filhanterare,Verktygsrader,Meny,Fönstertitel,Titel
++X-KDE-Keywords[ta]=எழுத்துருக்கள்,எழுத்துரு அளவு,பாணிகள்,எழுத்து அமைப்பு,எழுத்து அமைப்புகள்,பலகம்,கிக்கர்,கட்டுப்பாட்டு பலகம்,மேல்மேசைகள்,கோப்பு மேலாளர்,கருவிப்பட்டிகள்,பட்டியல்,சாளர தலைப்பு,தலைப்பு
++X-KDE-Keywords[th]=แบบอักษร,ขนาดแบบอักษร,ลักษณะ,ชุดรหัสอักขระ,ชุดอักขระ,พาเนล,คิกเกอร์,ถาดควบคุม,พื้นที่ทำงาน,จัดการแฟ้ม,แถบเครื่องมือ,เมนู,แถบหัวเรื่องหน้าต่าง,แถบหัวเรื่อง
++X-KDE-Keywords[tr]=yazıtipleri,yazı boyutu,stil,karakter kümesi,panel,kicker,denetim masası,masaüstü,masaüstleri,Araç Çubuğu,Menü,Pencere Başlığı,Başlık
++X-KDE-Keywords[uk]=шрифти,шрифт,розмір шрифту,стиль,набір символів,панель,kicker,панель керування,стільниці,панель інструментів,меню,заголовок вікна,заголовок
++X-KDE-Keywords[uz]=шрифтлар,шрифтнинг ўлчами,услублар,белги тўплами,кодлаш усули,панел,бошқарув панели,иш столлари,Файл бошқарувчиси,Асбоблар панели,Меню,Ойнанинг сарлавҳаси,Сарлавҳа
++X-KDE-Keywords[vi]=Phông chữ,cỡ,kiểu,bảng mã,bộ ký tự,bảng,thanh đẩy,bảng điều khiển,màn hình nền,Trình quản lý Tập tin,Thanh công cụ,Thực đơn,Tên Cửa sổ,Tên
++X-KDE-Keywords[wa]=fonte,fontes,grandeu del fonte,stîle,miernowes,cråsses,clintcheyes,ecôdaedjes,djeu di caracteres,scriftôr,kicker,cinte di controle,scribannes,Manaedjeu di fitchîs,Bår d' usteyes,Menu,Tite do purnea,Bår di tite,Tite
++X-KDE-Keywords[x-test]=xxfonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Titlexx
++X-KDE-Keywords[xh]=ubungakanani bamagama,ubungakanani begama,iintlobo,iicharset,amaqela abasebenzi,iqela labantu benjongo ethile,umkhabi,iqela labantu abalawulayo benjongo ethile,desktops,Umphathi wefayile iibar zesixhobo,Menu,Umxholo we Window,Umxholo
++X-KDE-Keywords[zh_CN]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,字体,字体大小,风格,字符集,面板,控制面板,桌面,文件管理器,工具条,菜单,窗口标题,标题
++X-KDE-Keywords[zh_TW]=fonts,font size,styles,charsets,character sets,panel,kicker,control panel,desktops,FileManager,Toolbars,Menu,Window Title,Title,字型,字型大小,風格,字元,字元集,面板,控制面板,桌面,檔案管理程式,工具列,選單,視窗標題,標題
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/fonts/fonts.cpp
++++ b/kcontrol/fonts/fonts.cpp
+@@ -530,14 +530,14 @@
+ 
+   QFont f0("Sans Serif", 10);
+   QFont f1("Monospace", 10);
+-  QFont f2("Sans Serif", 10);
++  QFont f2("Sans Serif", 8);
+   QFont f3("Sans Serif", 9, QFont::Bold);
+   QFont f4("Sans Serif", 10);
+   QFont f5("Sans Serif", 8); // smallestReadableFont
+ 
+   f0.setPointSize(10);
+   f1.setPointSize(10);
+-  f2.setPointSize(10);
++  f2.setPointSize(8);
+   f3.setPointSize(9);
+   f4.setPointSize(10);
+   f5.setPointSize(8);
+--- a/kcontrol/energy/energy.desktop
++++ b/kcontrol/energy/energy.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 energy
+ Icon=preferences-system-power-management
+-DocPath=kcontrol/energy/index.html
++X-DocPath=kcontrol/energy/index.html
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
++X-KDE-ServiceTypes=KCModule,KCModuleInit
+ X-KDE-Library=kcm_energy
+ X-KDE-Init-Symbol=energy
+ X-KDE-ParentApp=kcontrol
+@@ -120,7 +119,7 @@
+ Comment[ne]=प्रर्दशन शक्ति व्यवस्थापनका लागि सेटिङ
+ Comment[nl]=Instellingen voor energiebesparing voor monitors/displays
+ Comment[nn]=Innstillingar for straumkontroll av skjerm
+-Comment[pa]=ਊਰਜਾ ਪਰਬੰਧਨ ਝਲਕ ਲਈ ਸੈਟਿੰਗ
++Comment[pa]=ਡਿਸਪਲੇਅ ਪਾਵਰ ਮੈਨਿਜਮੈਂਟ ਲਈ ਸੈਟਿੰਗ
+ Comment[pl]=Ustawienia zarządzania mocą
+ Comment[pt]=Configurações para a gestão de energia do ecrã
+ Comment[pt_BR]= Configurações para o gerenciamento de energia do monitor
+@@ -143,61 +142,61 @@
+ Comment[zh_CN]=显示器电源管理设置
+ Comment[zh_TW]=顯示器電源管理的設定值
+ 
+-Keywords=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power
+-Keywords[be]=энергія,зберагальнік,збераганне,тэрмін чакання,ачышчэнне,выключэнне,сілкаванне,сон,energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power
+-Keywords[bg]=Keywords=ток, захранване, прекъсване, батерия, батерии, контакт, energy, saver, apm, acpi, dpms, timeout, blanking, stand by, suspend, power
+-Keywords[ca]=energia,salva,apm,acpi,dpms,expiració,en blanc,en espera, suspès,corrent
+-Keywords[cs]=Energie,Úspora,APM,ACPI,Časový limit,Vypnutí,Napájení,Šetřič,Spořič
+-Keywords[csb]=sëła,energijô,zachòwëwanié,apm,acpi,dpms,limit czasu,zaczôrnienié,wëłączanié, ùspienié,zasëlanié
+-Keywords[cy]=ynni,arbedwr,apm,acpi,dpms,goroedi,gwagu,sefyll wrthlaw,seibio, pwer
+-Keywords[da]=energi,sparer,apm,acpi,dpms,timeout,udløb,gør blank,standby,suspendér,strøm
+-Keywords[de]=Energie,APM,ACPI,DPMS,Zeitüberlauf,Timeout,Standby,Bereitschaft
+-Keywords[el]=ενέργεια,εξοικονόμηση,apm,acpi,dpms,χρονικό όριο,blanking,αναμονή,παύση,ισχύς
+-Keywords[eo]=energio,sekurigo,APM,ACPI,tempolimo,ekrano,kurteno,nigrigo, dormigo,malŝalto
+-Keywords[es]=energía,ahorro,APM,ACPI,tiempo límite,apagar monitor,modo de espera,suspender
+-Keywords[et]=energia,säästja,apm,acpi,dpms,taimaut,aegumine,energiasääst,passiivne
+-Keywords[eu]=energia,babeslea,apm,acpi,dpms,denbora-muga,monitorea itzali, zain,suspenditu,indarra
+-Keywords[fa]=انرژی، محافظ، apm، acpi، dpms، اتمام وقت، فاصله‌گذاری، نیمه روشن، معلق، توان
+-Keywords[fi]=energia,säästö,apm,acpi,dpms,aikavalvonta,sammutus,valmiustila,teho
+-Keywords[fr]=énergie,économie,apm,acpi,suspension,suspendre,tension,éteindre,extinction,veille,mise en veille,alimentation
+-Keywords[fy]=energy,besparring,apm,acpi,tiidslimyt,sliepstân,stand-by,suspend,power,wachtstân,laptop,byldskerm,monitor,display,timeout
+-Keywords[ga]=cumhacht,sábhálaí,apm,acpi,dpms,teorainn ama,bánú,croch,fuinneamh
+-Keywords[gl]=enerxia,aforro,apm,acpi,dpms,tempo de espera,espera,suspender,timeout,bloqueo
+-Keywords[he]=זמן מוקצב,האפלה,המתנה,חשמל,dpms,acpi,apm,אנרגיה,חיסכון, energy,saver,timeout,blanking,stand y,suspend,power
+-Keywords[hr]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,štednja energije,energija,štednja,crnilo
+-Keywords[hu]=energia,kímélő,apm,acpi,dpms,időtúllépés,képernyőkioltás,készenlét,felfüggesztés,tápfeszültség
+-Keywords[is]=orka,sparnaður,svæfing,apm,slökkva,svæfa,kveikja,dpms,tímamörk
+-Keywords[it]=energia,risparmio,apm,acpi,tempo massimo,schermo nero,stand by,sospensione,corrente
+-Keywords[ja]=電源,節約,apm,acpi,dpms,タイムアウト,ブランク,スタンバイ,サスペンド,パワー
+-Keywords[ka]=ენერგია,შემნახველი, apm, acpi, dpms, დროის ამოწურვა, გასუფთავება, მზაობა, გაუქმება, კვება
+-Keywords[km]=ថាមពល,​កម្មវិធី​សង្គ្រោះ apm,​acpi,​dpms អស់​ពេល, ទទេ, ឈប់​មួយ​ភ្លែត, ឈប់​បណ្ដោះ​អាសន្ន, ថាមពល
+-Keywords[ko]=전원,에너지,apm,acpi,dpms,절전,대기 모드,최대 절전 모드,전원
+-Keywords[lt]=energija,saugojimas,apm,acpi,pertrauka,gesinimas,stabdymas, pristabdymas,energija
+-Keywords[lv]=enerģija,glabātājs,apm,acpi,dpms,taimauts,tukšs,gaidīt,izslēgt,iemidzināt,Barošana
+-Keywords[mk]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,енергија,штедач,истек на време
+-Keywords[nb]=energi,sparing,apm,acpi,dpms,tidsgrense,tom skjerm,ventemodus,hvilemodus,dvalemodus,strøm
+-Keywords[nds]=Energie,sporen,apm,acpi,dpms,timeout,blanking,stand by,suspend,Energie
+-Keywords[ne]=शक्ति, बचतकर्ता, apm, acpi, dpms, समय समाप्त, खाली, उभिनु, निलम्बन, सामर्थ्य
+-Keywords[nl]=energie,besparing,apm,acpi,tijdslimiet,slaapstand,stand-by,suspend,power,wachtstand,laptop,beeldscherm,monitor,display,timeout
+-Keywords[nn]=energi,sparing,apm,acpi,dpms,tidsgrense,tom skjerm,standby,suspend,straum,dvale
+-Keywords[pa]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,ਊਰਜਾ,ਸਸਪੈਂਡ
+-Keywords[pl]=energia,zachowywanie,apm,acpi,dpms,limit czasu,wygaszenie ekranu,wyłączanie,uśpienie,hibernacja,zasilanie
+-Keywords[pt]=energia,poupança,apm,acpi,temporizador,stand by,suspender,alimentação
+-Keywords[pt_BR]=energia,poupar,APM,ACPI,dpms,tempo limite,desligamento,em espera,suspender,Força
+-Keywords[ro]=energie,salvare,apm,acpi,dpms,temporizare,stinge,stand by,suspendare,reţea electrică
+-Keywords[se]=árja,siestin,acpm,acpi,dpms,áigemearri,guorus šearbma,standby,suspend,el-rávdnji
+-Keywords[sl]=energija,ohranjevalnik,varčevalnik,apm,acpi,suspend,potek,zatemnitev,energija
+-Keywords[sr]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,енергија,штедња,АПМ,АЦПИ,ДПМС,прековреме,црно,стендбај,суспендовање,напајање
+-Keywords[sr at latin]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,energija,štednja,APM,ACPI,DPMS,prekovreme,crno,stendbaj,suspendovanje,napajanje
+-Keywords[sv]=energi,spar,apm,acpi,dpms,tidsgräns,viloläge,vänteläge,ström
+-Keywords[ta]=சக்தி,சேமிப்பான்,apm,acpi,dpms,நேரமுடிவு,இடைவெளி விடுதல்,ஆதாரம்,நீக்கம்,மின்சக்தி
+-Keywords[th]=พลังงาน,ประหยัด,apm,acpi,dpms,หมดเวลา,ว่าง,เตรียมตัว,ปิดชั่วคราว,พลัง
+-Keywords[tr]=enerji,apm,acpi,dpms,zaman aşımı,boşaltma,bekleme,karartma,güç
+-Keywords[uk]=енергія,живлення,зберігач,apm,acpi, тайм-аут,гасіння,режим чергування,призупинення
+-Keywords[uz]=энергия,тежаш,apm,acpi,dpms,таймаут,blanking,stand by,suspend,электр таъминоти
+-Keywords[vi]=năng lượng,tiết kiệm,apm,acpi,dpms,hết giờ,mất điện,tạm nghỉ,treo,công suất
+-Keywords[x-test]=xxenergy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,powerxx
+-Keywords[xh]=amandla,umgcini,apm,acpi,dpms,ixesha lokuphuma,engenambhalo,umphumzi,gxotha,amandla
+-Keywords[zh_CN]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,能源,节省,超时,黑屏,待机,休眠,电源
+-Keywords[zh_TW]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,Power,能源,省電器,逾時,轉暗,待機,休眠,電源
++X-KDE-Keywords=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power
++X-KDE-Keywords[be]=энергія,зберагальнік,збераганне,тэрмін чакання,ачышчэнне,выключэнне,сілкаванне,сон,energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power
++X-KDE-Keywords[bg]=Keywords=ток, захранване, прекъсване, батерия, батерии, контакт, energy, saver, apm, acpi, dpms, timeout, blanking, stand by, suspend, power
++X-KDE-Keywords[ca]=energia,salva,apm,acpi,dpms,expiració,en blanc,en espera, suspès,corrent
++X-KDE-Keywords[cs]=Energie,Úspora,APM,ACPI,Časový limit,Vypnutí,Napájení,Šetřič,Spořič
++X-KDE-Keywords[csb]=sëła,energijô,zachòwëwanié,apm,acpi,dpms,limit czasu,zaczôrnienié,wëłączanié, ùspienié,zasëlanié
++X-KDE-Keywords[cy]=ynni,arbedwr,apm,acpi,dpms,goroedi,gwagu,sefyll wrthlaw,seibio, pwer
++X-KDE-Keywords[da]=energi,sparer,apm,acpi,dpms,timeout,udløb,gør blank,standby,suspendér,strøm
++X-KDE-Keywords[de]=Energie,APM,ACPI,DPMS,Zeitüberlauf,Timeout,Standby,Bereitschaft
++X-KDE-Keywords[el]=ενέργεια,εξοικονόμηση,apm,acpi,dpms,χρονικό όριο,blanking,αναμονή,παύση,ισχύς
++X-KDE-Keywords[eo]=energio,sekurigo,APM,ACPI,tempolimo,ekrano,kurteno,nigrigo, dormigo,malŝalto
++X-KDE-Keywords[es]=energía,ahorro,APM,ACPI,tiempo límite,apagar monitor,modo de espera,suspender
++X-KDE-Keywords[et]=energia,säästja,apm,acpi,dpms,taimaut,aegumine,energiasääst,passiivne
++X-KDE-Keywords[eu]=energia,babeslea,apm,acpi,dpms,denbora-muga,monitorea itzali, zain,suspenditu,indarra
++X-KDE-Keywords[fa]=انرژی، محافظ، apm، acpi، dpms، اتمام وقت، فاصله‌گذاری، نیمه روشن، معلق، توان
++X-KDE-Keywords[fi]=energia,säästö,apm,acpi,dpms,aikavalvonta,sammutus,valmiustila,teho
++X-KDE-Keywords[fr]=énergie,économie,apm,acpi,suspension,suspendre,tension,éteindre,extinction,veille,mise en veille,alimentation
++X-KDE-Keywords[fy]=energy,besparring,apm,acpi,tiidslimyt,sliepstân,stand-by,suspend,power,wachtstân,laptop,byldskerm,monitor,display,timeout
++X-KDE-Keywords[ga]=cumhacht,sábhálaí,apm,acpi,dpms,teorainn ama,bánú,croch,fuinneamh
++X-KDE-Keywords[gl]=enerxia,aforro,apm,acpi,dpms,tempo de espera,espera,suspender,timeout,bloqueo
++X-KDE-Keywords[he]=זמן מוקצב,האפלה,המתנה,חשמל,dpms,acpi,apm,אנרגיה,חיסכון, energy,saver,timeout,blanking,stand y,suspend,power
++X-KDE-Keywords[hr]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,štednja energije,energija,štednja,crnilo
++X-KDE-Keywords[hu]=energia,kímélő,apm,acpi,dpms,időtúllépés,képernyőkioltás,készenlét,felfüggesztés,tápfeszültség
++X-KDE-Keywords[is]=orka,sparnaður,svæfing,apm,slökkva,svæfa,kveikja,dpms,tímamörk
++X-KDE-Keywords[it]=energia,risparmio,apm,acpi,tempo massimo,schermo nero,stand by,sospensione,corrente
++X-KDE-Keywords[ja]=電源,節約,apm,acpi,dpms,タイムアウト,ブランク,スタンバイ,サスペンド,パワー
++X-KDE-Keywords[ka]=ენერგია,შემნახველი, apm, acpi, dpms, დროის ამოწურვა, გასუფთავება, მზაობა, გაუქმება, კვება
++X-KDE-Keywords[km]=ថាមពល,​កម្មវិធី​សង្គ្រោះ apm,​acpi,​dpms អស់​ពេល, ទទេ, ឈប់​មួយ​ភ្លែត, ឈប់​បណ្ដោះ​អាសន្ន, ថាមពល
++X-KDE-Keywords[ko]=전원,에너지,apm,acpi,dpms,절전,대기 모드,최대 절전 모드,전원
++X-KDE-Keywords[lt]=energija,saugojimas,apm,acpi,pertrauka,gesinimas,stabdymas, pristabdymas,energija
++X-KDE-Keywords[lv]=enerģija,glabātājs,apm,acpi,dpms,taimauts,tukšs,gaidīt,izslēgt,iemidzināt,Barošana
++X-KDE-Keywords[mk]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,енергија,штедач,истек на време
++X-KDE-Keywords[nb]=energi,sparing,apm,acpi,dpms,tidsgrense,tom skjerm,ventemodus,hvilemodus,dvalemodus,strøm
++X-KDE-Keywords[nds]=Energie,sporen,apm,acpi,dpms,timeout,blanking,stand by,suspend,Energie
++X-KDE-Keywords[ne]=शक्ति, बचतकर्ता, apm, acpi, dpms, समय समाप्त, खाली, उभिनु, निलम्बन, सामर्थ्य
++X-KDE-Keywords[nl]=energie,besparing,apm,acpi,tijdslimiet,slaapstand,stand-by,suspend,power,wachtstand,laptop,beeldscherm,monitor,display,timeout
++X-KDE-Keywords[nn]=energi,sparing,apm,acpi,dpms,tidsgrense,tom skjerm,standby,suspend,straum,dvale
++X-KDE-Keywords[pa]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,ਊਰਜਾ,ਸਸਪੈਂਡ
++X-KDE-Keywords[pl]=energia,zachowywanie,apm,acpi,dpms,limit czasu,wygaszenie ekranu,wyłączanie,uśpienie,hibernacja,zasilanie
++X-KDE-Keywords[pt]=energia,poupança,apm,acpi,temporizador,stand by,suspender,alimentação
++X-KDE-Keywords[pt_BR]=energia,poupar,APM,ACPI,dpms,tempo limite,desligamento,em espera,suspender,Força
++X-KDE-Keywords[ro]=energie,salvare,apm,acpi,dpms,temporizare,stinge,stand by,suspendare,reţea electrică
++X-KDE-Keywords[se]=árja,siestin,acpm,acpi,dpms,áigemearri,guorus šearbma,standby,suspend,el-rávdnji
++X-KDE-Keywords[sl]=energija,ohranjevalnik,varčevalnik,apm,acpi,suspend,potek,zatemnitev,energija
++X-KDE-Keywords[sr]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,енергија,штедња,АПМ,АЦПИ,ДПМС,прековреме,црно,стендбај,суспендовање,напајање
++X-KDE-Keywords[sr at latin]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,energija,štednja,APM,ACPI,DPMS,prekovreme,crno,stendbaj,suspendovanje,napajanje
++X-KDE-Keywords[sv]=energi,spar,apm,acpi,dpms,tidsgräns,viloläge,vänteläge,ström
++X-KDE-Keywords[ta]=சக்தி,சேமிப்பான்,apm,acpi,dpms,நேரமுடிவு,இடைவெளி விடுதல்,ஆதாரம்,நீக்கம்,மின்சக்தி
++X-KDE-Keywords[th]=พลังงาน,ประหยัด,apm,acpi,dpms,หมดเวลา,ว่าง,เตรียมตัว,ปิดชั่วคราว,พลัง
++X-KDE-Keywords[tr]=enerji,apm,acpi,dpms,zaman aşımı,boşaltma,bekleme,karartma,güç
++X-KDE-Keywords[uk]=енергія,живлення,зберігач,apm,acpi, тайм-аут,гасіння,режим чергування,призупинення
++X-KDE-Keywords[uz]=энергия,тежаш,apm,acpi,dpms,таймаут,blanking,stand by,suspend,электр таъминоти
++X-KDE-Keywords[vi]=năng lượng,tiết kiệm,apm,acpi,dpms,hết giờ,mất điện,tạm nghỉ,treo,công suất
++X-KDE-Keywords[x-test]=xxenergy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,powerxx
++X-KDE-Keywords[xh]=amandla,umgcini,apm,acpi,dpms,ixesha lokuphuma,engenambhalo,umphumzi,gxotha,amandla
++X-KDE-Keywords[zh_CN]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,power,能源,节省,超时,黑屏,待机,休眠,电源
++X-KDE-Keywords[zh_TW]=energy,saver,apm,acpi,dpms,timeout,blanking,stand by,suspend,Power,能源,省電器,逾時,轉暗,待機,休眠,電源
+ 
+--- a/kcontrol/infocenter/usbview/kcmusb.desktop
++++ b/kcontrol/infocenter/usbview/kcmusb.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=usb
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/usb/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/usb/index.html
+ Exec=kcmshell4 kcmusb
+ 
+ X-KDE-Library=kcm_usb
+@@ -142,64 +141,64 @@
+ Comment[zh_CN]=查看连接到该计算机的 USB 设备
+ Comment[zh_TW]=查看連接到這台電腦的 USB 裝置
+ 
+-Keywords=USB,devices,viewer,control
+-Keywords[be]=Прылады,Прагляд,Праглядальнік,Кіраванне,USB,devices,viewer,control
+-Keywords[bg]=Keywords=информация, система, системна, устройства, контрол, USB, devices, viewer, control
+-Keywords[br]=USB,trobarzhelloù,gweller,ren
+-Keywords[ca]=USB,dispositius,visor,control
+-Keywords[cs]=USB,zařízení,prohlížeč,ovládání
+-Keywords[csb]=USB,ùrządzenia,przezérnik,kòntrola
+-Keywords[cy]=USB,dyfeisiau,gwelydd,gwyliwr,rheoli
+-Keywords[da]=USB,enheder,fremviser,kontrol
+-Keywords[de]=USB,Geräte
+-Keywords[el]=USB,συσκευές,προβολέας,έλεγχος
+-Keywords[eo]=USB,aparatoj,rigardilo,stirado
+-Keywords[es]=USB,dispositivos,visor,control
+-Keywords[et]=USB,seadmed,näitaja,juhtimine
+-Keywords[eu]=USB,gailuak,ikustailua,kontrola
+-Keywords[fa]=USB، دستگاهها، مشاهده‌گر، کنترل
+-Keywords[fi]=USB,laitteet,näyttää,ohjaus
+-Keywords[fr]=USB,périphériques,afficheur,contrôle
+-Keywords[fy]=USB,devices,viewer,control,werjefteprogramma
+-Keywords[ga]=USB,gléasanna,amharcán,rialú
+-Keywords[gl]=USB,dispositivos,visor,control
+-Keywords[he]=התקנים,מציג,בקרה,USB, devices,viewer,control
+-Keywords[hr]=USB,devices,viewer,control,uređaji,preglednik,upravljanje
+-Keywords[hu]=USB,eszközök,megnézés,vezérlés
+-Keywords[is]=USB,tæki,skoðari,stilling
+-Keywords[it]=USB,dispositivi,controllo
+-Keywords[ja]=USB,デバイス,ビューア,コントロール
+-Keywords[km]=យូអេសប៊ី ឧបករណ៍ កម្មវិធី​មើល វត្ថុ​បញ្ជា
+-Keywords[ko]=USB,장치,USB 장치,제어
+-Keywords[lt]=USB,devices,viewer,control, įrengimai, žiūriklis, kontrolė
+-Keywords[lv]=USB,iekārtas,skatītājs,vadība
+-Keywords[mk]=USB,devices,viewer,control,уреди,прегледник,контрола
+-Keywords[ms]=USB,peranti, pemapar, kawalan
+-Keywords[nb]=USB,enheter,fremviser,kontroll
+-Keywords[nds]=USB, Reedschappen,Kieker,Kuntrull
+-Keywords[ne]=USB,यन्त्र, दर्शक, नियन्त्रण
+-Keywords[nl]=USB,devices,viewer,control,weergaveprogramma
+-Keywords[nn]=USB,einingar,visar,kontroll
+-Keywords[pa]=USB,ਜੰਤਰ,ਦਰਸ਼ਕ,ਕੰਟਰੋਲ
+-Keywords[pl]=USB,urządzenia,przeglądarka,sterowanie
+-Keywords[pt]=USB,dispositivos,visualizador,controlo
+-Keywords[pt_BR]=USB,dispositivos,visualizador,controle
+-Keywords[ro]=USB,dispozitive,vizualizor,control
+-Keywords[se]=USB,ovttadagat,čájeheaddji,stivren
+-Keywords[sl]=USB,naprave,pregledovalnik,nadzor
+-Keywords[sr]=USB,devices,viewer,control,УСБ,уређаји,контрола,преглед
+-Keywords[sr at latin]=USB,devices,viewer,control,USB,uređaji,kontrola,pregled
+-Keywords[sv]=USB,enheter,visare,kontroll
+-Keywords[ta]=யூ எஸ் பி,சாதனங்கள்,பார்வையாள்,கட்டுப்பாடு
+-Keywords[th]=USB,อุปกรณ์,ตัวแสดงผล,ควบคุม
+-Keywords[tr]=USB,aygıtlar,görüntüleyici,kontrol
+-Keywords[uk]=USB,пристрої,перегляд,керування
+-Keywords[uz]=USB,ускуналар,кўрувчи,бошқарув
+-Keywords[vi]=USB,thiết bị,xem,điều khiển
+-Keywords[wa]=USB,éndjins,håyneu,controle,corwaitaedje
+-Keywords[x-test]=xxUSB,devices,viewer,controlxx
+-Keywords[xh]=USB,amacebo,umboniseli,ulawula
+-Keywords[zh_CN]=USB,devices,viewer,control,设备,查看器,控制
+-Keywords[zh_TW]=USB,devices,viewer,control,裝置,檢視器,控制
++X-KDE-Keywords=USB,devices,viewer,control
++X-KDE-Keywords[be]=Прылады,Прагляд,Праглядальнік,Кіраванне,USB,devices,viewer,control
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, устройства, контрол, USB, devices, viewer, control
++X-KDE-Keywords[br]=USB,trobarzhelloù,gweller,ren
++X-KDE-Keywords[ca]=USB,dispositius,visor,control
++X-KDE-Keywords[cs]=USB,zařízení,prohlížeč,ovládání
++X-KDE-Keywords[csb]=USB,ùrządzenia,przezérnik,kòntrola
++X-KDE-Keywords[cy]=USB,dyfeisiau,gwelydd,gwyliwr,rheoli
++X-KDE-Keywords[da]=USB,enheder,fremviser,kontrol
++X-KDE-Keywords[de]=USB,Geräte
++X-KDE-Keywords[el]=USB,συσκευές,προβολέας,έλεγχος
++X-KDE-Keywords[eo]=USB,aparatoj,rigardilo,stirado
++X-KDE-Keywords[es]=USB,dispositivos,visor,control
++X-KDE-Keywords[et]=USB,seadmed,näitaja,juhtimine
++X-KDE-Keywords[eu]=USB,gailuak,ikustailua,kontrola
++X-KDE-Keywords[fa]=USB، دستگاهها، مشاهده‌گر، کنترل
++X-KDE-Keywords[fi]=USB,laitteet,näyttää,ohjaus
++X-KDE-Keywords[fr]=USB,périphériques,afficheur,contrôle
++X-KDE-Keywords[fy]=USB,devices,viewer,control,werjefteprogramma
++X-KDE-Keywords[ga]=USB,gléasanna,amharcán,rialú
++X-KDE-Keywords[gl]=USB,dispositivos,visor,control
++X-KDE-Keywords[he]=התקנים,מציג,בקרה,USB, devices,viewer,control
++X-KDE-Keywords[hr]=USB,devices,viewer,control,uređaji,preglednik,upravljanje
++X-KDE-Keywords[hu]=USB,eszközök,megnézés,vezérlés
++X-KDE-Keywords[is]=USB,tæki,skoðari,stilling
++X-KDE-Keywords[it]=USB,dispositivi,controllo
++X-KDE-Keywords[ja]=USB,デバイス,ビューア,コントロール
++X-KDE-Keywords[km]=យូអេសប៊ី ឧបករណ៍ កម្មវិធី​មើល វត្ថុ​បញ្ជា
++X-KDE-Keywords[ko]=USB,장치,USB 장치,제어
++X-KDE-Keywords[lt]=USB,devices,viewer,control, įrengimai, žiūriklis, kontrolė
++X-KDE-Keywords[lv]=USB,iekārtas,skatītājs,vadība
++X-KDE-Keywords[mk]=USB,devices,viewer,control,уреди,прегледник,контрола
++X-KDE-Keywords[ms]=USB,peranti, pemapar, kawalan
++X-KDE-Keywords[nb]=USB,enheter,fremviser,kontroll
++X-KDE-Keywords[nds]=USB, Reedschappen,Kieker,Kuntrull
++X-KDE-Keywords[ne]=USB,यन्त्र, दर्शक, नियन्त्रण
++X-KDE-Keywords[nl]=USB,devices,viewer,control,weergaveprogramma
++X-KDE-Keywords[nn]=USB,einingar,visar,kontroll
++X-KDE-Keywords[pa]=USB,ਜੰਤਰ,ਦਰਸ਼ਕ,ਕੰਟਰੋਲ
++X-KDE-Keywords[pl]=USB,urządzenia,przeglądarka,sterowanie
++X-KDE-Keywords[pt]=USB,dispositivos,visualizador,controlo
++X-KDE-Keywords[pt_BR]=USB,dispositivos,visualizador,controle
++X-KDE-Keywords[ro]=USB,dispozitive,vizualizor,control
++X-KDE-Keywords[se]=USB,ovttadagat,čájeheaddji,stivren
++X-KDE-Keywords[sl]=USB,naprave,pregledovalnik,nadzor
++X-KDE-Keywords[sr]=USB,devices,viewer,control,УСБ,уређаји,контрола,преглед
++X-KDE-Keywords[sr at latin]=USB,devices,viewer,control,USB,uređaji,kontrola,pregled
++X-KDE-Keywords[sv]=USB,enheter,visare,kontroll
++X-KDE-Keywords[ta]=யூ எஸ் பி,சாதனங்கள்,பார்வையாள்,கட்டுப்பாடு
++X-KDE-Keywords[th]=USB,อุปกรณ์,ตัวแสดงผล,ควบคุม
++X-KDE-Keywords[tr]=USB,aygıtlar,görüntüleyici,kontrol
++X-KDE-Keywords[uk]=USB,пристрої,перегляд,керування
++X-KDE-Keywords[uz]=USB,ускуналар,кўрувчи,бошқарув
++X-KDE-Keywords[vi]=USB,thiết bị,xem,điều khiển
++X-KDE-Keywords[wa]=USB,éndjins,håyneu,controle,corwaitaedje
++X-KDE-Keywords[x-test]=xxUSB,devices,viewer,controlxx
++X-KDE-Keywords[xh]=USB,amacebo,umboniseli,ulawula
++X-KDE-Keywords[zh_CN]=USB,devices,viewer,control,设备,查看器,控制
++X-KDE-Keywords[zh_TW]=USB,devices,viewer,control,裝置,檢視器,控制
+ 
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/processor.desktop
++++ b/kcontrol/infocenter/info/processor.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 processor
+ Icon=kcmprocessor
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/processor/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/processor/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -142,65 +141,65 @@
+ Comment[zh_CN]=处理器信息
+ Comment[zh_TW]=處理器資訊
+ 
+-Keywords=Processor,CPU,FPU,MHz,System Information
+-Keywords[af]=Processor,CPU,FPU,MHz,System Informasie
+-Keywords[be]=Працэсар,МГц,Сістэмная інфармацыя,Processor,CPU,FPU,MHz,System Information
+-Keywords[bg]=Keywords=информация, система, системна, процесор, Processor, CPU, FPU, MHz, System Information
+-Keywords[br]=Kewerier,UTK,UNS,MHz,titouroù reizhiad
+-Keywords[ca]=Processador,CPU,FPU,MHz,Informació del sistema
+-Keywords[cs]=Procesor,CPU,FPU,MHz,Informace o systému
+-Keywords[csb]=procesora,CPU,JAL,FPU,MHz,wëdowiédzô ò systemie
+-Keywords[cy]=Prosesydd,CPU,FPU,MHz,Gwybodaeth Cysawd
+-Keywords[da]=Processor,CPU,FPU,MHz,Systeminformation
+-Keywords[de]=Prozessor,CPU,FPU,MHz,Systeminformation
+-Keywords[el]=Επεξεργαστής,ΚΜΕ,FPU,Πληροφορίες συστήματος
+-Keywords[eo]=procezilo,CPU,FPU,MHz,frekvenco,sistemo,operaciumo,informo
+-Keywords[es]=Procesador,CPU,FPU,MHz,Información del sistema
+-Keywords[et]=Protsessor,CPU,FPU,MHz,Süsteemi info
+-Keywords[eu]=Prozesagailua,CPU,FPU,MHz,Sistemaren informazioa
+-Keywords[fa]=پردازنده، واحد پردازش مرکزی، FPU، مگاهرتز، اطلاعات سیستم
+-Keywords[fi]=Prosessori,CPU,FPU,MHz,Järjestelmätiedot
+-Keywords[fr]=processeur,CPU,FPU,MHz,informations système,cpu
+-Keywords[fy]=Processor,Ferwurkingsienheid,CPU,FPU,MHz,Systeemynformaasje
+-Keywords[ga]=Próiseálaí,CPU,LAP,FPU,MHz,Eolas faoin Chóras
+-Keywords[gl]=Procesador,CPU,FPU,MHz,Información do Sistema
+-Keywords[he]=FPU,מעבד,מעבד מתמטי,מגה־הרץ,מידע מערכת,System Information
+-Keywords[hr]=Processor,CPU,FPU,MHz,System Information,procesor,Podaci o sustavu
+-Keywords[hu]=processzor,CPU,FPU,MHz,rendszerinformáció
+-Keywords[is]=örgjörvi,örgjörfi,Gjörvi,kerfi,upplýsingar,CPU,MHz,FPUz
+-Keywords[it]=processore,CPU,FPU,MHz,informazioni sul sistema
+-Keywords[ja]=プロセッサ,CPU,FPU,MHz,システムの情報
+-Keywords[ka]=პროცესორი,CPU,FPU,MHz,ინფორმაცია სისტემის შესახებ
+-Keywords[km]=ប្រព័ន្ធ​ដំណើរការ ស៊ីភីយូ FPU MHz ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=Processor,프로세서,CPU,FPU,MHz,시스템 정보
+-Keywords[lt]=Procesorius,CPU,FPU,MHz,Sistemos Informacija
+-Keywords[lv]=Procesors,CPU,FPU,MHz,Sistēmas Informācija
+-Keywords[mk]=Processor,CPU,FPU,MHz,System Information,Процесор,Информации за системот
+-Keywords[ms]=Pemproses,CPU,FPU,MHz,Maklumat Sistem
+-Keywords[nb]=Prosessor,CPU,FPU,Sentralenhet,MHz,Systeminformasjon
+-Keywords[nds]=Perzesser,CPU,FPU,MHz,Systeeminformatschoon
+-Keywords[ne]=प्रोसेसर, सीपीयू, एफपीयू, एमएचजेट, प्रणाली सूचना
+-Keywords[nl]=processor,CPU,FPU,MHz,systeeminformatie
+-Keywords[nn]=prosessor,CPU,FPU,MHz,systeminformasjon
+-Keywords[pa]=ਪਰੋਸੈਸਰ,CPU,FPU,MHz,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=procesor,CPU,JAL,FPU,MHz,informacja o systemie
+-Keywords[pt]=processador,CPU,FPU,MHz,informações do sistema
+-Keywords[pt_BR]=Processador,CPU,FPU,MHz,Informações de sistema
+-Keywords[ro]=procesor,microprocesor,CPU,FPU,MHz,informaţii despre sistem
+-Keywords[se]=Doaimmár,CPU,FPU,MHz,vuogádatdieđut
+-Keywords[sl]=procesor,CPE,CPU,FPU,MHz,informacije o sistemu
+-Keywords[sr]=Processor,CPU,FPU,MHz,System Information,ЦПУ,ФПУ,процесор,системске информације,системски подаци
+-Keywords[sr at latin]=Processor,CPU,FPU,MHz,System Information,CPU,FPU,procesor,sistemske informacije,sistemski podaci
+-Keywords[sv]=Processor,CPU,FPU,MHz,Systeminformation
+-Keywords[ta]=செயலி,CPU,FPU,MHz,அமைப்புத் தகவல்
+-Keywords[th]=หน่วยประมวลผล,CPU,FPU,MHz,ข้อมูลระบบ
+-Keywords[tr]=İşlemci,MİB,FPU,MHz,Sistem Hakkında Bilgi
+-Keywords[uk]=процесор,CPU,FPU,МГц,системна інформація
+-Keywords[uz]=Процессор,CPU,FPU,МГц,Тизим ҳақида маълумот
+-Keywords[vi]=Bộ vi xử lý,CPU,FPU,Mhz,Thông tin Hệ thống
+-Keywords[wa]=Processeu,CPU,FPU,MHz,Infôrmåcion sol sistinme
+-Keywords[x-test]=xxProcessor,CPU,FPU,MHz,System Informationxx
+-Keywords[xh]=Umqhubekekisi,CPU,FPU,MHz,Inkcukacha Yendlela yokusebenza
+-Keywords[zh_CN]=Processor,CPU,FPU,MHz,System Information,处理器,系统信息
+-Keywords[zh_TW]=Processor,CPU,FPU,MHz,System Information,處理器,中央處理器,浮點運算器,系統資訊
++X-KDE-Keywords=Processor,CPU,FPU,MHz,System Information
++X-KDE-Keywords[af]=Processor,CPU,FPU,MHz,System Informasie
++X-KDE-Keywords[be]=Працэсар,МГц,Сістэмная інфармацыя,Processor,CPU,FPU,MHz,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, процесор, Processor, CPU, FPU, MHz, System Information
++X-KDE-Keywords[br]=Kewerier,UTK,UNS,MHz,titouroù reizhiad
++X-KDE-Keywords[ca]=Processador,CPU,FPU,MHz,Informació del sistema
++X-KDE-Keywords[cs]=Procesor,CPU,FPU,MHz,Informace o systému
++X-KDE-Keywords[csb]=procesora,CPU,JAL,FPU,MHz,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=Prosesydd,CPU,FPU,MHz,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=Processor,CPU,FPU,MHz,Systeminformation
++X-KDE-Keywords[de]=Prozessor,CPU,FPU,MHz,Systeminformation
++X-KDE-Keywords[el]=Επεξεργαστής,ΚΜΕ,FPU,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=procezilo,CPU,FPU,MHz,frekvenco,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=Procesador,CPU,FPU,MHz,Información del sistema
++X-KDE-Keywords[et]=Protsessor,CPU,FPU,MHz,Süsteemi info
++X-KDE-Keywords[eu]=Prozesagailua,CPU,FPU,MHz,Sistemaren informazioa
++X-KDE-Keywords[fa]=پردازنده، واحد پردازش مرکزی، FPU، مگاهرتز، اطلاعات سیستم
++X-KDE-Keywords[fi]=Prosessori,CPU,FPU,MHz,Järjestelmätiedot
++X-KDE-Keywords[fr]=processeur,CPU,FPU,MHz,informations système,cpu
++X-KDE-Keywords[fy]=Processor,Ferwurkingsienheid,CPU,FPU,MHz,Systeemynformaasje
++X-KDE-Keywords[ga]=Próiseálaí,CPU,LAP,FPU,MHz,Eolas faoin Chóras
++X-KDE-Keywords[gl]=Procesador,CPU,FPU,MHz,Información do Sistema
++X-KDE-Keywords[he]=FPU,מעבד,מעבד מתמטי,מגה־הרץ,מידע מערכת,System Information
++X-KDE-Keywords[hr]=Processor,CPU,FPU,MHz,System Information,procesor,Podaci o sustavu
++X-KDE-Keywords[hu]=processzor,CPU,FPU,MHz,rendszerinformáció
++X-KDE-Keywords[is]=örgjörvi,örgjörfi,Gjörvi,kerfi,upplýsingar,CPU,MHz,FPUz
++X-KDE-Keywords[it]=processore,CPU,FPU,MHz,informazioni sul sistema
++X-KDE-Keywords[ja]=プロセッサ,CPU,FPU,MHz,システムの情報
++X-KDE-Keywords[ka]=პროცესორი,CPU,FPU,MHz,ინფორმაცია სისტემის შესახებ
++X-KDE-Keywords[km]=ប្រព័ន្ធ​ដំណើរការ ស៊ីភីយូ FPU MHz ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=Processor,프로세서,CPU,FPU,MHz,시스템 정보
++X-KDE-Keywords[lt]=Procesorius,CPU,FPU,MHz,Sistemos Informacija
++X-KDE-Keywords[lv]=Procesors,CPU,FPU,MHz,Sistēmas Informācija
++X-KDE-Keywords[mk]=Processor,CPU,FPU,MHz,System Information,Процесор,Информации за системот
++X-KDE-Keywords[ms]=Pemproses,CPU,FPU,MHz,Maklumat Sistem
++X-KDE-Keywords[nb]=Prosessor,CPU,FPU,Sentralenhet,MHz,Systeminformasjon
++X-KDE-Keywords[nds]=Perzesser,CPU,FPU,MHz,Systeeminformatschoon
++X-KDE-Keywords[ne]=प्रोसेसर, सीपीयू, एफपीयू, एमएचजेट, प्रणाली सूचना
++X-KDE-Keywords[nl]=processor,CPU,FPU,MHz,systeeminformatie
++X-KDE-Keywords[nn]=prosessor,CPU,FPU,MHz,systeminformasjon
++X-KDE-Keywords[pa]=ਪਰੋਸੈਸਰ,CPU,FPU,MHz,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=procesor,CPU,JAL,FPU,MHz,informacja o systemie
++X-KDE-Keywords[pt]=processador,CPU,FPU,MHz,informações do sistema
++X-KDE-Keywords[pt_BR]=Processador,CPU,FPU,MHz,Informações de sistema
++X-KDE-Keywords[ro]=procesor,microprocesor,CPU,FPU,MHz,informaţii despre sistem
++X-KDE-Keywords[se]=Doaimmár,CPU,FPU,MHz,vuogádatdieđut
++X-KDE-Keywords[sl]=procesor,CPE,CPU,FPU,MHz,informacije o sistemu
++X-KDE-Keywords[sr]=Processor,CPU,FPU,MHz,System Information,ЦПУ,ФПУ,процесор,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=Processor,CPU,FPU,MHz,System Information,CPU,FPU,procesor,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=Processor,CPU,FPU,MHz,Systeminformation
++X-KDE-Keywords[ta]=செயலி,CPU,FPU,MHz,அமைப்புத் தகவல்
++X-KDE-Keywords[th]=หน่วยประมวลผล,CPU,FPU,MHz,ข้อมูลระบบ
++X-KDE-Keywords[tr]=İşlemci,MİB,FPU,MHz,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=процесор,CPU,FPU,МГц,системна інформація
++X-KDE-Keywords[uz]=Процессор,CPU,FPU,МГц,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=Bộ vi xử lý,CPU,FPU,Mhz,Thông tin Hệ thống
++X-KDE-Keywords[wa]=Processeu,CPU,FPU,MHz,Infôrmåcion sol sistinme
++X-KDE-Keywords[x-test]=xxProcessor,CPU,FPU,MHz,System Informationxx
++X-KDE-Keywords[xh]=Umqhubekekisi,CPU,FPU,MHz,Inkcukacha Yendlela yokusebenza
++X-KDE-Keywords[zh_CN]=Processor,CPU,FPU,MHz,System Information,处理器,系统信息
++X-KDE-Keywords[zh_TW]=Processor,CPU,FPU,MHz,System Information,處理器,中央處理器,浮點運算器,系統資訊
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/devices.desktop
++++ b/kcontrol/infocenter/info/devices.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 devices
+ Icon=kcmdevices
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/devices/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/devices/index.html
+ Categories=Qt;KDE;X-KDE-information;
+ 
+ 
+@@ -121,7 +120,7 @@
+ Comment[ne]=सङ्लग्न गरिएका यन्त्र सूचना
+ Comment[nl]=Informatie over aangesloten apparaten
+ Comment[nn]=Informasjon om tilkopla einingar
+-Comment[pa]=ਜੁੜੇ ਜੰਤਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ
++Comment[pa]=ਅਟੈਂਚ ਹੋਏ ਜੰਤਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ
+ Comment[pl]=Informacje o włączonych urządzeniach
+ Comment[pt]=Informações sobre os dispositivos ligados
+ Comment[pt_BR]=Informações sobre dispositivos conectados
+@@ -146,62 +145,62 @@
+ Comment[zh_CN]=附加的设备信息
+ Comment[zh_TW]=附加的設備資訊
+ 
+-Keywords=dev,Devices,System Information,Information
+-Keywords[be]=прылады,прылада,сістэмная інфармацыя,інфармацыя,dev,Devices,System Information,Information
+-Keywords[bg]=Keywords=информация, система, системна, устройства, устройство, dev, Devices, System Information, Information
+-Keywords[br]=trobarzhell,titouroù reizhiad,titouroù
+-Keywords[ca]=dev,dispositius,Informació del sistema,Informació
+-Keywords[cs]=dev,Zařízení,Systémové informace,Informace
+-Keywords[csb]=dev,systemòwé ùrządzenia,wëdowiédzô ò systemie,wëdowiédzô,infòrmacëjô
+-Keywords[cy]=dyf,Dyfeisiau,Gwybodaeth Cysawd,Gwybodaeth
+-Keywords[da]=dev,Enheder,Systeminformation,Information
+-Keywords[de]=Geräte,Devices,Systeminformation,Information
+-Keywords[el]=dev,Συσκευές,Πληροφορίες συστήματος,Πληροφορίες
+-Keywords[eo]=aparato,dev,sistemo,operaciumo,informo
+-Keywords[es]=Dispositivos,Información del sistema
+-Keywords[et]=dev,Seadmed,Süsteemi informatsioon,Informatsioon
+-Keywords[eu]=dev,Dispositiboak,Sistemaren informazioa,informazioa
+-Keywords[fa]=dev،دستگاهها، اطلاعات سیستم، اطلاعات
+-Keywords[fi]=dev,Laitteet,Järjestelmätiedot,Tiedot
+-Keywords[fr]=dev,périphériques,information,informations système
+-Keywords[fy]=dev,devices,systeemynformaasje,ynformaasje,apparaten,apparaatbehear
+-Keywords[ga]=dev,Gléasanna,Eolas faoin Chóras,Eolas
+-Keywords[gl]=dev,Dispositivo,Información do Sistema,Información
+-Keywords[he]=התקנים,מידע מערכת,מידע,dev,Devices,System Information,Information
+-Keywords[hr]=dev,Devices,System Information,Information,uređaji,uređaj,sustav,podaci o sustavu,podaci
+-Keywords[hu]=dev,eszközök,rendszerinformáci,információ
+-Keywords[is]=dev,tæki,jaðartæki,upplýsingar,kerfi
+-Keywords[it]=dev,dispositivi,periferiche,informazioni sul sistema,informazioni
+-Keywords[ja]=dev,デバイスシステム,システムの情報,情報
+-Keywords[km]=dev ឧបករណ៍ ព័ត៌មាន​ប្រព័ន្ធ ព័ត៌មាន
+-Keywords[ko]=장치,시스템 정보,정보
+-Keywords[lt]=dev,Įrenginiai,Sistemos Informacija,Informacija
+-Keywords[lv]=iek,Iekārtas,Sistēmas Informācija,Informācija
+-Keywords[mk]=dev,Devices,System Information,Information,Уреди,Информации за системот,Информација
+-Keywords[nb]=dev,enheter,systeminformasjon,Informasjon
+-Keywords[nds]=dev,Reedschappen,Systeeminformatschoon,Informatschoon
+-Keywords[ne]=डेभ, यन्त्र, प्रणाली सूचना, सूचना
+-Keywords[nl]=dev,devices,systeeminformatie,informatie,apparaten,apparaatbeheer
+-Keywords[nn]=dev,eining,einingar,systeminformasjon,informasjon
+-Keywords[pa]=dev,ਜੰਤਰ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=dev,Urządzenia systemowe,informacja o systemie,Informacja
+-Keywords[pt]=dev,dispositivos,informações de sistema,informação
+-Keywords[pt_BR]=dev,Dispositivos,Informações de sistema,Informações,Informação
+-Keywords[ro]=dev,dispozitive,informaţii sistem,informaţii
+-Keywords[se]=dev,ovttadat,ovttadagat,vuogádatdiehtu,diehtu
+-Keywords[sl]=dev,naprave,informacije o sistemu,informacije
+-Keywords[sr]=dev,Devices,System Information,Information,уређаји,системске информације,информације,подаци
+-Keywords[sr at latin]=dev,Devices,System Information,Information,uređaji,sistemske informacije,informacije,podaci
+-Keywords[sv]=enhet,Enheter,Systeminformation,Information
+-Keywords[ta]=dev,சாதனங்கள், கணினித் தகவல், தகவல்
+-Keywords[tg]=dev,Дастгоҳҳо,Иттилооти система,Иттилоот
+-Keywords[th]=dev,อุปกรณ์,ข้อมูลระบบ,ข้อมูล
+-Keywords[tr]=dev,Aygıtlar,Sistem Hakkında Bilgi, Bilgi
+-Keywords[uk]=пристрої,інформація,dev,devices,system-information,information
+-Keywords[uz]=dev,Ускуналар,Маълумот,Тизим ҳақида маълумот
+-Keywords[vi]=dev,Thiết bị,Thông tin Hệ thống,Thông tin
+-Keywords[x-test]=xxdev,Devices,System Information,Informationxx
+-Keywords[xh]=dev,Amacebo,Ulwazi lwendlela,Ulwazi
+-Keywords[zh_CN]=dev,Devices,System Information,Information,设备,系统信息,信息
+-Keywords[zh_TW]=dev,Devices,System Information,Information,設備,系統資訊,資訊
++X-KDE-Keywords=dev,Devices,System Information,Information
++X-KDE-Keywords[be]=прылады,прылада,сістэмная інфармацыя,інфармацыя,dev,Devices,System Information,Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, устройства, устройство, dev, Devices, System Information, Information
++X-KDE-Keywords[br]=trobarzhell,titouroù reizhiad,titouroù
++X-KDE-Keywords[ca]=dev,dispositius,Informació del sistema,Informació
++X-KDE-Keywords[cs]=dev,Zařízení,Systémové informace,Informace
++X-KDE-Keywords[csb]=dev,systemòwé ùrządzenia,wëdowiédzô ò systemie,wëdowiédzô,infòrmacëjô
++X-KDE-Keywords[cy]=dyf,Dyfeisiau,Gwybodaeth Cysawd,Gwybodaeth
++X-KDE-Keywords[da]=dev,Enheder,Systeminformation,Information
++X-KDE-Keywords[de]=Geräte,Devices,Systeminformation,Information
++X-KDE-Keywords[el]=dev,Συσκευές,Πληροφορίες συστήματος,Πληροφορίες
++X-KDE-Keywords[eo]=aparato,dev,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=Dispositivos,Información del sistema
++X-KDE-Keywords[et]=dev,Seadmed,Süsteemi informatsioon,Informatsioon
++X-KDE-Keywords[eu]=dev,Dispositiboak,Sistemaren informazioa,informazioa
++X-KDE-Keywords[fa]=dev،دستگاهها، اطلاعات سیستم، اطلاعات
++X-KDE-Keywords[fi]=dev,Laitteet,Järjestelmätiedot,Tiedot
++X-KDE-Keywords[fr]=dev,périphériques,information,informations système
++X-KDE-Keywords[fy]=dev,devices,systeemynformaasje,ynformaasje,apparaten,apparaatbehear
++X-KDE-Keywords[ga]=dev,Gléasanna,Eolas faoin Chóras,Eolas
++X-KDE-Keywords[gl]=dev,Dispositivo,Información do Sistema,Información
++X-KDE-Keywords[he]=התקנים,מידע מערכת,מידע,dev,Devices,System Information,Information
++X-KDE-Keywords[hr]=dev,Devices,System Information,Information,uređaji,uređaj,sustav,podaci o sustavu,podaci
++X-KDE-Keywords[hu]=dev,eszközök,rendszerinformáci,információ
++X-KDE-Keywords[is]=dev,tæki,jaðartæki,upplýsingar,kerfi
++X-KDE-Keywords[it]=dev,dispositivi,periferiche,informazioni sul sistema,informazioni
++X-KDE-Keywords[ja]=dev,デバイスシステム,システムの情報,情報
++X-KDE-Keywords[km]=dev ឧបករណ៍ ព័ត៌មាន​ប្រព័ន្ធ ព័ត៌មាន
++X-KDE-Keywords[ko]=장치,시스템 정보,정보
++X-KDE-Keywords[lt]=dev,Įrenginiai,Sistemos Informacija,Informacija
++X-KDE-Keywords[lv]=iek,Iekārtas,Sistēmas Informācija,Informācija
++X-KDE-Keywords[mk]=dev,Devices,System Information,Information,Уреди,Информации за системот,Информација
++X-KDE-Keywords[nb]=dev,enheter,systeminformasjon,Informasjon
++X-KDE-Keywords[nds]=dev,Reedschappen,Systeeminformatschoon,Informatschoon
++X-KDE-Keywords[ne]=डेभ, यन्त्र, प्रणाली सूचना, सूचना
++X-KDE-Keywords[nl]=dev,devices,systeeminformatie,informatie,apparaten,apparaatbeheer
++X-KDE-Keywords[nn]=dev,eining,einingar,systeminformasjon,informasjon
++X-KDE-Keywords[pa]=dev,ਜੰਤਰ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=dev,Urządzenia systemowe,informacja o systemie,Informacja
++X-KDE-Keywords[pt]=dev,dispositivos,informações de sistema,informação
++X-KDE-Keywords[pt_BR]=dev,Dispositivos,Informações de sistema,Informações,Informação
++X-KDE-Keywords[ro]=dev,dispozitive,informaţii sistem,informaţii
++X-KDE-Keywords[se]=dev,ovttadat,ovttadagat,vuogádatdiehtu,diehtu
++X-KDE-Keywords[sl]=dev,naprave,informacije o sistemu,informacije
++X-KDE-Keywords[sr]=dev,Devices,System Information,Information,уређаји,системске информације,информације,подаци
++X-KDE-Keywords[sr at latin]=dev,Devices,System Information,Information,uređaji,sistemske informacije,informacije,podaci
++X-KDE-Keywords[sv]=enhet,Enheter,Systeminformation,Information
++X-KDE-Keywords[ta]=dev,சாதனங்கள், கணினித் தகவல், தகவல்
++X-KDE-Keywords[tg]=dev,Дастгоҳҳо,Иттилооти система,Иттилоот
++X-KDE-Keywords[th]=dev,อุปกรณ์,ข้อมูลระบบ,ข้อมูล
++X-KDE-Keywords[tr]=dev,Aygıtlar,Sistem Hakkında Bilgi, Bilgi
++X-KDE-Keywords[uk]=пристрої,інформація,dev,devices,system-information,information
++X-KDE-Keywords[uz]=dev,Ускуналар,Маълумот,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=dev,Thiết bị,Thông tin Hệ thống,Thông tin
++X-KDE-Keywords[x-test]=xxdev,Devices,System Information,Informationxx
++X-KDE-Keywords[xh]=dev,Amacebo,Ulwazi lwendlela,Ulwazi
++X-KDE-Keywords[zh_CN]=dev,Devices,System Information,Information,设备,系统信息,信息
++X-KDE-Keywords[zh_TW]=dev,Devices,System Information,Information,設備,系統資訊,資訊
+ 
+--- a/kcontrol/infocenter/info/sound.desktop
++++ b/kcontrol/infocenter/info/sound.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 sound
+ Icon=kcmsound
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/sound/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/sound/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -52,7 +51,7 @@
+ Name[ne]=ध्वनि
+ Name[nl]=Geluid
+ Name[nn]=Lyd
+-Name[pa]=ਧੁਨੀ
++Name[pa]=ਸਾਊਂਡ
+ Name[pl]=Dźwięk
+ Name[pt]=Som
+ Name[pt_BR]=Som
+@@ -119,7 +118,7 @@
+ Comment[ne]=ध्वनि सूचना
+ Comment[nl]=Geluidssysteeminformatie
+ Comment[nn]=Lydinformasjon
+-Comment[pa]=ਧੁਨੀ ਜਾਣਕਾਰੀ
++Comment[pa]=ਸਾਊਂਡ ਜਾਣਕਾਰੀ
+ Comment[pl]=Informacje o ustawieniach dźwięku
+ Comment[pt]=Informação sobre o som
+ Comment[pt_BR]=Informações sobre o som
+@@ -144,62 +143,62 @@
+ Comment[zh_CN]=音响效果信息
+ Comment[zh_TW]=音效資訊
+ 
+-Keywords=Sound,Audio,Soundcard,MIDI,OSS,System Information
+-Keywords[af]=Sound,Audio,Soundcard,Midi,OSS,System Informasie
+-Keywords[be]=Гук,Аўдыё,Гукавая карта,Сістэмная інфармацыя,Сінтэзатар,Sound,Audio,Soundcard,MIDI,OSS,System Information
+-Keywords[bg]=Keywords=информация, система, системна, аудио, звук Sound, Audio, Soundcard, MIDI, OSS, System Information
+-Keywords[br]=Son,klevet,kartenn son,MIDI,OSS,titouroù reizhiad
+-Keywords[ca]=So,Àudio,tarja de so,MIDI,OSS,Informació del sistema
+-Keywords[cs]=Zvuk,Audio,Zvuková karta,Midi,OSS,Informace o systému
+-Keywords[csb]=zwãk,audio,zwãkòwô karta,Midi,OSS,wëdowiédzô ò systemie
+-Keywords[cy]=Sain,Swn,Cerdyn Sain,Midi,OSS,Gwybodaeth Gysawd
+-Keywords[da]=Lyd,Audio,Lydkort,MIDI,OSS,Systeminformation
+-Keywords[de]=Klänge,Sound,Audio,Soundkarte,Systemklänge,Midi,OSS,Systeminformation
+-Keywords[el]=Ήχος,Μουσική,Κάρτα ήχου,MIDI,OSS,Πληροφορίες συστήματος
+-Keywords[eo]=Sonoro,Sono,Aŭdio,Sonorkarto,MIDI,OSS,sistemo,informo,operaciumo
+-Keywords[es]=Sonido,Audio,Tarjeta de sonido,MIDI,OSS,Información del sistema
+-Keywords[et]=Heli,Audio,Helikaart,MIDI,OSS,Süsteemi info
+-Keywords[eu]=Soinua,Audioa,Soinu txartela,Midi,OSS,Sistemaren informazioa
+-Keywords[fa]=صوت، صوتی، کارت صوتی ،MIDI ،OSS ،اطلاعات سیستم
+-Keywords[fi]=Ääni,Äänikortti,Midi,OSS,Järjestelmätiedot
+-Keywords[fr]=son,audio,carte son,midi,OSS,informations système
+-Keywords[fy]=lûd,audio,soundcard,midi,OSS,systeemynformaasje,ALSA,lûdskaart
+-Keywords[ga]=Fuaim,Cárta Fuaime,MIDI,OSS,Eolas faoin Chóras
+-Keywords[gl]=Son,Audio,Tarxeta de son,Midi,OSS,Información do Sistema
+-Keywords[he]=מידע מערכת,OSS,Midi,צליל,שמע,כרטיס קול,מידי,Sound, Audio,Soundcard,MIDI,OSS,System Information
+-Keywords[hr]=Sound,Audio,Soundcard,Midi,OSS,System Information,Zvuk,Podaci o sustavu,Zvučna kartica
+-Keywords[hu]=hang,audió,hangkártya,MIDI,OSS,rendszerinformáció
+-Keywords[is]=Hljóð,Hljóðkort,kerfi,upplýsingar,OSS,MIDI
+-Keywords[it]=suono,audio,scheda sonora,MIDI,OSS,informazioni sul sistema
+-Keywords[ja]=サウンド,オーディオ,サウンドカード,MIDI,OSS,システムの情報
+-Keywords[ka]=ხმა,აუდიო,აუდიოდაბა,MIDI,OSS,ინფორმაცია სისტემის შესახებ
+-Keywords[km]=សំឡេង អូឌីយ៉ូ កាត​សំឡេង មីឌី OSS ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=사운드,소리,오디오,사운드 카드,MIDI,OSS,시스템 정보
+-Keywords[lt]=Garsas,Audio,Garso korta,Midi,OSS,Sistemos informacija
+-Keywords[lv]=Skaņa,Audio,Skaņaskarte,MIDI,OSS,Sistēmas Informācija
+-Keywords[mk]=Sound,Audio,Soundcard,MIDI,OSS,System Information,Звук,Аудио,Звучна картичка,Информации за системот
+-Keywords[nb]=Lyd,Lydkort,Midi,OSS,Systeminformasjon
+-Keywords[nds]=Klang,Audio,Soundkort,Midi,OSS,Systeeminformatschoon
+-Keywords[ne]=ध्वनि, अडियो, ध्वनि कार्ड, MIDI, OSS, प्रणाली सूचना
+-Keywords[nl]=geluid,audio,soundcard,midi,OSS,systeeminformatie,ALSA,geluidskaart
+-Keywords[nn]=lyd,lydkort,MIDI,OSS,systeminformasjon
+-Keywords[pa]=Sound,Audio,Soundcard,MIDI,OSS,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਆਡੀਓ,ਸਾਊਂਡਕਾਰਡ
+-Keywords[pl]=dźwięk,audio,karta dźwiekowa,Midi,OSS,informacja o systemie
+-Keywords[pt]=som,áudio,placa de som,midi,oss,informações de sistema
+-Keywords[pt_BR]=Som,Áudio,placa de som,MIDI,OSS,Informações de sistema
+-Keywords[ro]=sunet,audio,placă de sunet,card de sunet,MIDI,OSS,informaţii despre sistem
+-Keywords[se]=jietna,jietnagoarta,midi,OSS,vuogádatdiehtu
+-Keywords[sl]=zvok,glasba,zvočna kartica,avdio,midi,OSS,informacije o sistemu
+-Keywords[sr]=Sound,Аудио,Soundcard,Midi,OSS,System Information,звук,аудио,звучна карта,звучна картица,МИДИ,ОСС,системске информације,системски подаци
+-Keywords[sr at latin]=Sound,Audio,Soundcard,Midi,OSS,System Information,zvuk,audio,zvučna karta,zvučna kartica,MIDI,OSS,sistemske informacije,sistemski podaci
+-Keywords[sv]=Ljud,Ljudkort,Midi,OSS,Systeminformation
+-Keywords[ta]=ஒலி,ஒலி அமைப்பு,ஒலி அட்டை,மிடி,OSS,சாதன தகவல்
+-Keywords[th]=เสียง,ระบบเสียง,แผงวงจรเสียง,มิดี้,OSS,ข้อมูลระบบ
+-Keywords[tr]=Ses,Seskartı,Midi,OSS,Sistem Bilgisi,MIDI
+-Keywords[uk]=звук,аудіо,sound,audio,звукова плата,midi,oss,системна інформація
+-Keywords[uz]=MIDI,OSS,Товуш,Аудио,Товуш картаси,Тизм ҳақида маълумот
+-Keywords[vi]=Âm thanh,âm,Thẻ âm thanh,MIDI,OSS,Thông tin Hệ thống
+-Keywords[x-test]=xxSound,Audio,Soundcard,MIDI,OSS,System Informationxx
+-Keywords[zh_CN]=Sound,Audio,Soundcard,MIDI,OSS,System Information,音频,音响,声卡,系统信息
+-Keywords[zh_TW]=Sound,Audio,Soundcard,Midi,OSS,系統資訊
++X-KDE-Keywords=Sound,Audio,Soundcard,MIDI,OSS,System Information
++X-KDE-Keywords[af]=Sound,Audio,Soundcard,Midi,OSS,System Informasie
++X-KDE-Keywords[be]=Гук,Аўдыё,Гукавая карта,Сістэмная інфармацыя,Сінтэзатар,Sound,Audio,Soundcard,MIDI,OSS,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, аудио, звук Sound, Audio, Soundcard, MIDI, OSS, System Information
++X-KDE-Keywords[br]=Son,klevet,kartenn son,MIDI,OSS,titouroù reizhiad
++X-KDE-Keywords[ca]=So,Àudio,tarja de so,MIDI,OSS,Informació del sistema
++X-KDE-Keywords[cs]=Zvuk,Audio,Zvuková karta,Midi,OSS,Informace o systému
++X-KDE-Keywords[csb]=zwãk,audio,zwãkòwô karta,Midi,OSS,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=Sain,Swn,Cerdyn Sain,Midi,OSS,Gwybodaeth Gysawd
++X-KDE-Keywords[da]=Lyd,Audio,Lydkort,MIDI,OSS,Systeminformation
++X-KDE-Keywords[de]=Klänge,Sound,Audio,Soundkarte,Systemklänge,Midi,OSS,Systeminformation
++X-KDE-Keywords[el]=Ήχος,Μουσική,Κάρτα ήχου,MIDI,OSS,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=Sonoro,Sono,Aŭdio,Sonorkarto,MIDI,OSS,sistemo,informo,operaciumo
++X-KDE-Keywords[es]=Sonido,Audio,Tarjeta de sonido,MIDI,OSS,Información del sistema
++X-KDE-Keywords[et]=Heli,Audio,Helikaart,MIDI,OSS,Süsteemi info
++X-KDE-Keywords[eu]=Soinua,Audioa,Soinu txartela,Midi,OSS,Sistemaren informazioa
++X-KDE-Keywords[fa]=صوت، صوتی، کارت صوتی ،MIDI ،OSS ،اطلاعات سیستم
++X-KDE-Keywords[fi]=Ääni,Äänikortti,Midi,OSS,Järjestelmätiedot
++X-KDE-Keywords[fr]=son,audio,carte son,midi,OSS,informations système
++X-KDE-Keywords[fy]=lûd,audio,soundcard,midi,OSS,systeemynformaasje,ALSA,lûdskaart
++X-KDE-Keywords[ga]=Fuaim,Cárta Fuaime,MIDI,OSS,Eolas faoin Chóras
++X-KDE-Keywords[gl]=Son,Audio,Tarxeta de son,Midi,OSS,Información do Sistema
++X-KDE-Keywords[he]=מידע מערכת,OSS,Midi,צליל,שמע,כרטיס קול,מידי,Sound, Audio,Soundcard,MIDI,OSS,System Information
++X-KDE-Keywords[hr]=Sound,Audio,Soundcard,Midi,OSS,System Information,Zvuk,Podaci o sustavu,Zvučna kartica
++X-KDE-Keywords[hu]=hang,audió,hangkártya,MIDI,OSS,rendszerinformáció
++X-KDE-Keywords[is]=Hljóð,Hljóðkort,kerfi,upplýsingar,OSS,MIDI
++X-KDE-Keywords[it]=suono,audio,scheda sonora,MIDI,OSS,informazioni sul sistema
++X-KDE-Keywords[ja]=サウンド,オーディオ,サウンドカード,MIDI,OSS,システムの情報
++X-KDE-Keywords[ka]=ხმა,აუდიო,აუდიოდაბა,MIDI,OSS,ინფორმაცია სისტემის შესახებ
++X-KDE-Keywords[km]=សំឡេង អូឌីយ៉ូ កាត​សំឡេង មីឌី OSS ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=사운드,소리,오디오,사운드 카드,MIDI,OSS,시스템 정보
++X-KDE-Keywords[lt]=Garsas,Audio,Garso korta,Midi,OSS,Sistemos informacija
++X-KDE-Keywords[lv]=Skaņa,Audio,Skaņaskarte,MIDI,OSS,Sistēmas Informācija
++X-KDE-Keywords[mk]=Sound,Audio,Soundcard,MIDI,OSS,System Information,Звук,Аудио,Звучна картичка,Информации за системот
++X-KDE-Keywords[nb]=Lyd,Lydkort,Midi,OSS,Systeminformasjon
++X-KDE-Keywords[nds]=Klang,Audio,Soundkort,Midi,OSS,Systeeminformatschoon
++X-KDE-Keywords[ne]=ध्वनि, अडियो, ध्वनि कार्ड, MIDI, OSS, प्रणाली सूचना
++X-KDE-Keywords[nl]=geluid,audio,soundcard,midi,OSS,systeeminformatie,ALSA,geluidskaart
++X-KDE-Keywords[nn]=lyd,lydkort,MIDI,OSS,systeminformasjon
++X-KDE-Keywords[pa]=Sound,Audio,Soundcard,MIDI,OSS,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਆਡੀਓ,ਸਾਊਂਡਕਾਰਡ
++X-KDE-Keywords[pl]=dźwięk,audio,karta dźwiekowa,Midi,OSS,informacja o systemie
++X-KDE-Keywords[pt]=som,áudio,placa de som,midi,oss,informações de sistema
++X-KDE-Keywords[pt_BR]=Som,Áudio,placa de som,MIDI,OSS,Informações de sistema
++X-KDE-Keywords[ro]=sunet,audio,placă de sunet,card de sunet,MIDI,OSS,informaţii despre sistem
++X-KDE-Keywords[se]=jietna,jietnagoarta,midi,OSS,vuogádatdiehtu
++X-KDE-Keywords[sl]=zvok,glasba,zvočna kartica,avdio,midi,OSS,informacije o sistemu
++X-KDE-Keywords[sr]=Sound,Аудио,Soundcard,Midi,OSS,System Information,звук,аудио,звучна карта,звучна картица,МИДИ,ОСС,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=Sound,Audio,Soundcard,Midi,OSS,System Information,zvuk,audio,zvučna karta,zvučna kartica,MIDI,OSS,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=Ljud,Ljudkort,Midi,OSS,Systeminformation
++X-KDE-Keywords[ta]=ஒலி,ஒலி அமைப்பு,ஒலி அட்டை,மிடி,OSS,சாதன தகவல்
++X-KDE-Keywords[th]=เสียง,ระบบเสียง,แผงวงจรเสียง,มิดี้,OSS,ข้อมูลระบบ
++X-KDE-Keywords[tr]=Ses,Seskartı,Midi,OSS,Sistem Bilgisi,MIDI
++X-KDE-Keywords[uk]=звук,аудіо,sound,audio,звукова плата,midi,oss,системна інформація
++X-KDE-Keywords[uz]=MIDI,OSS,Товуш,Аудио,Товуш картаси,Тизм ҳақида маълумот
++X-KDE-Keywords[vi]=Âm thanh,âm,Thẻ âm thanh,MIDI,OSS,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxSound,Audio,Soundcard,MIDI,OSS,System Informationxx
++X-KDE-Keywords[zh_CN]=Sound,Audio,Soundcard,MIDI,OSS,System Information,音频,音响,声卡,系统信息
++X-KDE-Keywords[zh_TW]=Sound,Audio,Soundcard,Midi,OSS,系統資訊
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/partitions.desktop
++++ b/kcontrol/infocenter/info/partitions.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 partitions
+ Icon=kcmpartitions
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/partitions/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/partitions/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -53,7 +52,7 @@
+ Name[ne]=विभाजन
+ Name[nl]=Partities
+ Name[nn]=Partisjonar
+-Name[pa]=ਭਾਗ
++Name[pa]=ਪਾਰਟੀਸ਼ਨ
+ Name[pl]=Partycje
+ Name[pt]=Partições
+ Name[pt_BR]=Partições
+@@ -99,6 +98,7 @@
+ Comment[fi]=Osiotiedot
+ Comment[fr]=Informations sur les partitions
+ Comment[fy]=Partitie-ynformaasje
++Comment[ga]=Faisnéis deighiltí
+ Comment[gl]=Información das particións
+ Comment[he]=מידע על מחיצות
+ Comment[hr]=Podaci o particijama
+@@ -119,7 +119,7 @@
+ Comment[ne]=विभाजन सूचना
+ Comment[nl]=Partitie-informatie
+ Comment[nn]=Partisjonsinformasjon
+-Comment[pa]=ਭਾਗ ਜਾਣਕਾਰੀ
++Comment[pa]=ਪਾਰਟੀਸ਼ਨ ਜਾਣਕਾਰੀ
+ Comment[pl]=Informacje o partycjach dyskowych
+ Comment[pt]=Informação sobre as partições
+ Comment[pt_BR]=Informações sobre partições
+@@ -144,64 +144,64 @@
+ Comment[zh_CN]=分区信息
+ Comment[zh_TW]=磁碟分割區資訊
+ 
+-Keywords=Partitions,Harddrive,HD,System Information
+-Keywords[af]=Partitions,Harddrive,HD,System Informasie
+-Keywords[be]=Раздзелы,Жорсткі дыск,Сістэмная інфармацыя,Partitions,Harddrive,HD,System Information
+-Keywords[bg]=Keywords=информация, система, системна, дял, дялове, диск, твърд, хард, Partitions, Harddrive, HD, System Information
+-Keywords[br]=Parzhadur,pladenn galet,HD,titouroù reizhiad
+-Keywords[ca]=Particions,disc dur,HD,Informació del sistema
+-Keywords[cs]=Oddíly disku,Pevný disk,HD,Informace o systému
+-Keywords[csb]=particëje,cwiardi disk,HD,wëdowiédzô ò systemie
+-Keywords[cy]=Rhaniadau,Disg Caled,DC,Gwybodaeth Cysawd
+-Keywords[da]=Partitioner,Harddisk,HD,Systeminformation
+-Keywords[de]=Partitionen,Festplatten,Laufwerke,HD,Systeminformation
+-Keywords[el]=Κατατμήσεις,Σκληρός Δίσκος,HD,Πληροφορίες συστήματος
+-Keywords[eo]=subdisko,disko,sistemo,operaciumo,informo
+-Keywords[es]=Particiones,Disco duro,Información del sistema
+-Keywords[et]=Partitsioonid,kõvaketas,HD,Süsteemi info
+-Keywords[eu]=Zatiketak,Disko gogorra,HD,Sistemaren informazioa
+-Keywords[fa]=افرازها، گردانندۀ سخت ،HD ،اطلاعات سیستم
+-Keywords[fi]=Osiot,Kiintolevy,HD,Järjestelmätiedot
+-Keywords[fr]=partitions,disque dur,HD,DD,informations système
+-Keywords[fy]=partities,Hardrive, HD,systeemynformaasje,fêste skiif 
+-Keywords[ga]=Deighiltí,Tiomántán Crua,HD,Eolas faoin Chóras
+-Keywords[gl]=Particións,Disco duro,HD,Información do Sistema
+-Keywords[he]=מחיצות,כונן קשיח,מידע מערכת, Partitions,Harddrive,HD,System Information
+-Keywords[hr]=Partitions,Harddrive,HD,System Information,Particije,hard disk,Podaci o sustavu,Tvrdi disk
+-Keywords[hu]=partíciók,merevlemez,HD,rendszerinformáció
+-Keywords[is]=Sneiðar,Disksneiðar,Harðir diskar,Harður diskur,kerfi,upplýsingar
+-Keywords[it]=partizioni,disco rigido,hard disk,HD,informazioni sul sistema
+-Keywords[ja]=パーティション,ハードドライブ,HD,システムの情報
+-Keywords[km]=ភាគថាស ដ្រាយរឹង HD ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=파티션,하드 디스크,하드디스크,시스템 정보Partitions,Harddrive,HD,System Information,파티션,분할 영역,하드 디스크,하드 드라이브,시스템 정보,하드,나눠진 공간
+-Keywords[lt]=Skirsniai,Kietasis diskas,HD,Sistemos Informacija
+-Keywords[lv]=Partīcijas,CietaisDisks,HD,Sistēmas Informācija
+-Keywords[mk]=Partitions,Harddrive,HD,System Information,Партиции,Тврд диск,Информации за системот
+-Keywords[nb]=Partisjoner,Platelager,Harddisk,HD,Systeminformasjon
+-Keywords[nds]=Partitschonen,Fastplaat,HD,Systeeminformatschoon
+-Keywords[ne]=विभाजन, हार्ड ड्राइभ,HD, प्रणाली सूचना
+-Keywords[nl]=partities,harddrive,HD,systeeminformatie,harde schijf
+-Keywords[nn]=partisjonar,harddisk,HD,systeminformasjon
+-Keywords[pa]=Partitions,Harddrive,HD,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਭਾਗ,ਹਾਰਡ ਡਿਸਕ
+-Keywords[pl]=partycje,twardy dysk,HD,informacja o systemie
+-Keywords[pt]=partições,disco rígido,HD,informações do sistema
+-Keywords[pt_BR]=Partições,Disco Rígido,Informações de sistema
+-Keywords[ro]=partiţii,harddisk,hard-disk,HD,hdd,informaţii despre sistem
+-Keywords[se]=partišuvnnat,garraskearru,HD,vuogádatdieđut
+-Keywords[sl]=particije,trdi disk,HD,informacije o sistemu
+-Keywords[sr]=Partitions,Harddrive,HD,System Information,партиције,хард диск,системске информације,системски подаци,хд
+-Keywords[sr at latin]=Partitions,Harddrive,HD,System Information,particije,hard disk,sistemske informacije,sistemski podaci,hd
+-Keywords[sv]=Partitioner,Hårddisk,HD,Systeminformation
+-Keywords[ta]=பகுதிகள், வன் சாதனம்,எச்டி,அமைப்பு தகவல்
+-Keywords[th]=พาร์ติชัน,ฮาร์ดไดรฟ์,HD,ข้อมูลระบบ
+-Keywords[tr]=Bölümleme,Sabitdisk,HD,Sistem Hakkında Bilgi
+-Keywords[uk]=розділи диску,жорсткий диск,HD,системна інформація
+-Keywords[uz]=Дискнинг қисмлари,қаттиқ диск,HD,Тизим ҳақида маълумот
+-Keywords[vi]=Phân vùng,Ổ cứng,HD,Thông tin Hệ thống
+-Keywords[wa]=Pårticions,pårtixhaedje,deure plake,Infôrmåcions sol sistinme
+-Keywords[x-test]=xxPartitions,Harddrive,HD,System Informationxx
+-Keywords[xh]=Ulwahlulelwano ngokwamaqhekeza,Harddrive,HD,Ulwazi lwendlela yokusebenza
+-Keywords[zh_CN]=Partitions,Harddrive,HD,System Information,分区,硬盘,系统信息
+-Keywords[zh_TW]=Partitions,Harddrive,HD,System Information,磁碟分割區,硬式磁碟機,硬碟,系統資訊
++X-KDE-Keywords=Partitions,Harddrive,HD,System Information
++X-KDE-Keywords[af]=Partitions,Harddrive,HD,System Informasie
++X-KDE-Keywords[be]=Раздзелы,Жорсткі дыск,Сістэмная інфармацыя,Partitions,Harddrive,HD,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, дял, дялове, диск, твърд, хард, Partitions, Harddrive, HD, System Information
++X-KDE-Keywords[br]=Parzhadur,pladenn galet,HD,titouroù reizhiad
++X-KDE-Keywords[ca]=Particions,disc dur,HD,Informació del sistema
++X-KDE-Keywords[cs]=Oddíly disku,Pevný disk,HD,Informace o systému
++X-KDE-Keywords[csb]=particëje,cwiardi disk,HD,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=Rhaniadau,Disg Caled,DC,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=Partitioner,Harddisk,HD,Systeminformation
++X-KDE-Keywords[de]=Partitionen,Festplatten,Laufwerke,HD,Systeminformation
++X-KDE-Keywords[el]=Κατατμήσεις,Σκληρός Δίσκος,HD,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=subdisko,disko,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=Particiones,Disco duro,Información del sistema
++X-KDE-Keywords[et]=Partitsioonid,kõvaketas,HD,Süsteemi info
++X-KDE-Keywords[eu]=Zatiketak,Disko gogorra,HD,Sistemaren informazioa
++X-KDE-Keywords[fa]=افرازها، گردانندۀ سخت ،HD ،اطلاعات سیستم
++X-KDE-Keywords[fi]=Osiot,Kiintolevy,HD,Järjestelmätiedot
++X-KDE-Keywords[fr]=partitions,disque dur,HD,DD,informations système
++X-KDE-Keywords[fy]=partities,Hardrive, HD,systeemynformaasje,fêste skiif
++X-KDE-Keywords[ga]=Deighiltí,Tiomántán Crua,HD,Eolas faoin Chóras
++X-KDE-Keywords[gl]=Particións,Disco duro,HD,Información do Sistema
++X-KDE-Keywords[he]=מחיצות,כונן קשיח,מידע מערכת, Partitions,Harddrive,HD,System Information
++X-KDE-Keywords[hr]=Partitions,Harddrive,HD,System Information,Particije,hard disk,Podaci o sustavu,Tvrdi disk
++X-KDE-Keywords[hu]=partíciók,merevlemez,HD,rendszerinformáció
++X-KDE-Keywords[is]=Sneiðar,Disksneiðar,Harðir diskar,Harður diskur,kerfi,upplýsingar
++X-KDE-Keywords[it]=partizioni,disco rigido,hard disk,HD,informazioni sul sistema
++X-KDE-Keywords[ja]=パーティション,ハードドライブ,HD,システムの情報
++X-KDE-Keywords[km]=ភាគថាស ដ្រាយរឹង HD ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=파티션,하드 디스크,하드디스크,시스템 정보Partitions,Harddrive,HD,System Information,파티션,분할 영역,하드 디스크,하드 드라이브,시스템 정보,하드,나눠진 공간
++X-KDE-Keywords[lt]=Skirsniai,Kietasis diskas,HD,Sistemos Informacija
++X-KDE-Keywords[lv]=Partīcijas,CietaisDisks,HD,Sistēmas Informācija
++X-KDE-Keywords[mk]=Partitions,Harddrive,HD,System Information,Партиции,Тврд диск,Информации за системот
++X-KDE-Keywords[nb]=Partisjoner,Platelager,Harddisk,HD,Systeminformasjon
++X-KDE-Keywords[nds]=Partitschonen,Fastplaat,HD,Systeeminformatschoon
++X-KDE-Keywords[ne]=विभाजन, हार्ड ड्राइभ,HD, प्रणाली सूचना
++X-KDE-Keywords[nl]=partities,harddrive,HD,systeeminformatie,harde schijf
++X-KDE-Keywords[nn]=partisjonar,harddisk,HD,systeminformasjon
++X-KDE-Keywords[pa]=Partitions,Harddrive,HD,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਭਾਗ,ਹਾਰਡ ਡਿਸਕ
++X-KDE-Keywords[pl]=partycje,twardy dysk,HD,informacja o systemie
++X-KDE-Keywords[pt]=partições,disco rígido,HD,informações do sistema
++X-KDE-Keywords[pt_BR]=Partições,Disco Rígido,Informações de sistema
++X-KDE-Keywords[ro]=partiţii,harddisk,hard-disk,HD,hdd,informaţii despre sistem
++X-KDE-Keywords[se]=partišuvnnat,garraskearru,HD,vuogádatdieđut
++X-KDE-Keywords[sl]=particije,trdi disk,HD,informacije o sistemu
++X-KDE-Keywords[sr]=Partitions,Harddrive,HD,System Information,партиције,хард диск,системске информације,системски подаци,хд
++X-KDE-Keywords[sr at latin]=Partitions,Harddrive,HD,System Information,particije,hard disk,sistemske informacije,sistemski podaci,hd
++X-KDE-Keywords[sv]=Partitioner,Hårddisk,HD,Systeminformation
++X-KDE-Keywords[ta]=பகுதிகள், வன் சாதனம்,எச்டி,அமைப்பு தகவல்
++X-KDE-Keywords[th]=พาร์ติชัน,ฮาร์ดไดรฟ์,HD,ข้อมูลระบบ
++X-KDE-Keywords[tr]=Bölümleme,Sabitdisk,HD,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=розділи диску,жорсткий диск,HD,системна інформація
++X-KDE-Keywords[uz]=Дискнинг қисмлари,қаттиқ диск,HD,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=Phân vùng,Ổ cứng,HD,Thông tin Hệ thống
++X-KDE-Keywords[wa]=Pårticions,pårtixhaedje,deure plake,Infôrmåcions sol sistinme
++X-KDE-Keywords[x-test]=xxPartitions,Harddrive,HD,System Informationxx
++X-KDE-Keywords[xh]=Ulwahlulelwano ngokwamaqhekeza,Harddrive,HD,Ulwazi lwendlela yokusebenza
++X-KDE-Keywords[zh_CN]=Partitions,Harddrive,HD,System Information,分区,硬盘,系统信息
++X-KDE-Keywords[zh_TW]=Partitions,Harddrive,HD,System Information,磁碟分割區,硬式磁碟機,硬碟,系統資訊
+ 
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/xserver.desktop
++++ b/kcontrol/infocenter/info/xserver.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 xserver
+ Icon=kcmx
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/xserver/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/xserver/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -140,58 +139,58 @@
+ Comment[zh_CN]=X 服务器信息
+ Comment[zh_TW]=X 伺服器資訊
+ 
+-Keywords=X,X-Server,XServer,XFree86,Display,VideoCard,System Information
+-Keywords[be]=Сервер X,Дысплей,Відэакарта,Сістэмная інфармацыя,X,X-Server,XServer,XFree86,Display,VideoCard,System Information
+-Keywords[bg]=Keywords=екран, видеокарта, системна информация, сървър, X, X-Server, XServer, XFree86, Display, VideoCard, System Information
+-Keywords[br]=X,servijer X,XServer,XFree86,diskwel,kartenn video,titouroù reizhiad
+-Keywords[ca]=X,Servidor X,XServer,XFree86,Monitor,Targeta de video,Informació del sistema
+-Keywords[cs]=X,X-server,XServer,XFree86,Obrazovka,Informace o systému,Videokarta
+-Keywords[csb]=X,X serwer,Xserwer,XFree86,graficznô karta,grafika,wëdowiédzô ò systemie
+-Keywords[da]=X,X-server,Xserver,XFree86,Skærm,Videokort,Systeminformation
+-Keywords[el]=X,Εξυπηρετητής-X,XServer,XFree86,Οθόνη,Κάρτα Γραφικών, Πληροφορίες συστήματος
+-Keywords[eo]=X,X-servilo,XFree86,ekrano,fenestroj,sistemo,operaciumo,informo
+-Keywords[es]=X,X-Server,XServer,XFree86,Monitor,Tarjeta, Gráfica,Sistema,Información
+-Keywords[et]=X,X'i server,X Server,XFree86,Ekraan,Videokaart,Süsteemi info
+-Keywords[eu]=X,X-Server,XServer,XFree86,Display,VideoCard,sistema informazioa
+-Keywords[fa]=X، کارساز، X، XServer، XFree86، صفحه نمایش، کارت ویدیو، اطلاعات سیستم
+-Keywords[fr]=X,serveur X,XFree86,XServer,moniteur,affichage,informations système,xfree,carte vidéo,carte graphique
+-Keywords[fy]=X,X-Server,XServer,XFree86,display,systeemynformaasje,byldskerm,grafyske kaart
+-Keywords[ga]=X,Freastalaí-X,XFree86,Scáileán,Físchárta,Eolas faoin Chóras
+-Keywords[gl]=X,Servidor X,XServer,XFree86,Pantalla,Display,Información do Sistema
+-Keywords[he]=תצוגה,מידע מערכת,XFree86,שרת X,X, כרטיס מסך,X-Server,XServer,XFree86,Display,VideoCard, System Information, Xorg
+-Keywords[hr]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X-poslužitelj,X poslužitelj,Zaslon,Video kartica,Grafička kartica,Podaci o sustavu
+-Keywords[hu]=X,X-kiszolgáló,XServer,XFree86,képernyő,videokártya,rendszerinformáció
+-Keywords[is]=X,X-Server,X-þjónn,XServer,Xþjónn,XFree86,Display,skjár, VideoCard,skjákort,System Information,kerfisupplýsingar
+-Keywords[it]=X,Server X,XServer,XFree86,display,schermo,informazioni sul sistema,SchedaVideo
+-Keywords[ja]=X,X-サーバ,Xサーバ,XFree86,ディスプレイ,システム情報
+-Keywords[ka]=X,X-სერვერი,Xსერვერი,XFree86,დსიპლეი, ვიდეოდაფა,ინფორმაცია სისტების შესახებ
+-Keywords[km]=X ម៉ាស៊ីន​បម្រើ X ម៉ាស៊ីន​បម្រើ X XFree86 ការ​បង្ហាញ កាត​វីដេអូ ព័័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=X,X 서버,XFree86,디스플레이,비디오 카드,시스템 정보
+-Keywords[lt]=X,X-Serveris,XServer,XFree86,Displėjus,Video plokštė,Sistemos informacija
+-Keywords[lv]=X,X-Serveris,XServeris,XFree86,Ekrāns,Sistēmas Informācija
+-Keywords[mk]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X сервер,Екран,Видеокартичка,Информации за системот
+-Keywords[nb]=X,X-tjener,Xtjener,XFree86,skjerm,videokort,systeminformasjon
+-Keywords[nds]=X,X-Server,XServer,XFree86,Display,Dorstellen,Videokort,Systeeminformatschoon
+-Keywords[ne]=X, X-सर्भर, Xसर्भर, Xस्वतन्त्र 86, प्रदर्शन गर्नुहोस्, भिडियो कार्ड, प्रणाली सूचना
+-Keywords[nl]=X,X-Server,XServer,XFree86,display,systeeminformatie,beeldscherm,videokaart
+-Keywords[nn]=X,X-tenar,XServer,XFree86,skjerm,skjermkort,systeminformasjon
+-Keywords[pa]=X,X-Server,XServer,XFree86,ਦਰਿਸ਼,ਵੀਡਿਓ ਕਾਰਡ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=X,X serwer,Xserwer,XFree86,karta graficzna,grafika,informacja o systemie
+-Keywords[pt]=X,servidor X,XServer,XFree86,ecrã,placa de vídeo,informações de sistema
+-Keywords[pt_BR]=X,Servidor X,XFree,XFree86,Display,Tela,Placa de Vídeo,Informações do sistema
+-Keywords[ro]=X,server X,XServer,XFree86,ecran,afişare,placă video,informaţii despre sistem
+-Keywords[sl]=X,strežnik X,X-strežnik,XServer,XFree86,zaslon,grafična kartica,Podatki o sistemu,sistemske informacije
+-Keywords[sr]=X,X-Server,XServer,XFree86,XOrg,Display,VideoCard,System Information,Икс,Икс-сервер,Икс-фри86,Икс-орг,екран,видео картица,системске информације,системски подаци
+-Keywords[sr at latin]=X,X-Server,XServer,XFree86,XOrg,Display,VideoCard,System Information,X,X-server,XFree86,XOrg,ekran,video kartica,sistemske informacije,sistemski podaci
+-Keywords[sv]=X,X-server,Xserver,Xfree86,skärm,videokort,systeminformation
+-Keywords[ta]=X,X-சேவகன்,Xசேவகன்,XFree86, காட்சி,படக்காட்சிஅட்டை,அமைப்பு தகவல்
+-Keywords[th]=X,เซิร์ฟเวอร์ X,XServer,XFree86,จอแสดงผล,แผงวงจรวิดีโอ,ข้อมูลระบบ
+-Keywords[tr]=X,X-Server,XServer,X sunucu, X-sunucu,Xsunucu,XFree86,Görüntü,Video Kartı,Sistem Bilgisi
+-Keywords[uk]=X,X-Server,XServer,XFree86,Display,системна інформація,монітор,X сервер,відео карта
+-Keywords[uz]=X,X сервер,XFree86,xorg,X-Сервер,Дисплей,видео карта,Тизим ҳақида маълумот
+-Keywords[vi]=X,Trình phục vụ X,XServer,XFree86,Màn hình,Thông tin Hệ thống
+-Keywords[x-test]=xxX,X-Server,XServer,XFree86,Display,VideoCard,System Informationxx
+-Keywords[zh_CN]=X,X-Server,XServer,XFree86,Display,VideoCard,System InformationX 服务器,显示器,显卡,系统信息
+-Keywords[zh_TW]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X 伺服器,X伺服器,顯示器,顯示卡,系統資訊
++X-KDE-Keywords=X,X-Server,XServer,XFree86,Display,VideoCard,System Information
++X-KDE-Keywords[be]=Сервер X,Дысплей,Відэакарта,Сістэмная інфармацыя,X,X-Server,XServer,XFree86,Display,VideoCard,System Information
++X-KDE-Keywords[bg]=Keywords=екран, видеокарта, системна информация, сървър, X, X-Server, XServer, XFree86, Display, VideoCard, System Information
++X-KDE-Keywords[br]=X,servijer X,XServer,XFree86,diskwel,kartenn video,titouroù reizhiad
++X-KDE-Keywords[ca]=X,Servidor X,XServer,XFree86,Monitor,Targeta de video,Informació del sistema
++X-KDE-Keywords[cs]=X,X-server,XServer,XFree86,Obrazovka,Informace o systému,Videokarta
++X-KDE-Keywords[csb]=X,X serwer,Xserwer,XFree86,graficznô karta,grafika,wëdowiédzô ò systemie
++X-KDE-Keywords[da]=X,X-server,Xserver,XFree86,Skærm,Videokort,Systeminformation
++X-KDE-Keywords[el]=X,Εξυπηρετητής-X,XServer,XFree86,Οθόνη,Κάρτα Γραφικών, Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=X,X-servilo,XFree86,ekrano,fenestroj,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=X,X-Server,XServer,XFree86,Monitor,Tarjeta, Gráfica,Sistema,Información
++X-KDE-Keywords[et]=X,X'i server,X Server,XFree86,Ekraan,Videokaart,Süsteemi info
++X-KDE-Keywords[eu]=X,X-Server,XServer,XFree86,Display,VideoCard,sistema informazioa
++X-KDE-Keywords[fa]=X، کارساز، X، XServer، XFree86، صفحه نمایش، کارت ویدیو، اطلاعات سیستم
++X-KDE-Keywords[fr]=X,serveur X,XFree86,XServer,moniteur,affichage,informations système,xfree,carte vidéo,carte graphique
++X-KDE-Keywords[fy]=X,X-Server,XServer,XFree86,display,systeemynformaasje,byldskerm,grafyske kaart
++X-KDE-Keywords[ga]=X,Freastalaí-X,XFree86,Scáileán,Físchárta,Eolas faoin Chóras
++X-KDE-Keywords[gl]=X,Servidor X,XServer,XFree86,Pantalla,Display,Información do Sistema
++X-KDE-Keywords[he]=תצוגה,מידע מערכת,XFree86,שרת X,X, כרטיס מסך,X-Server,XServer,XFree86,Display,VideoCard, System Information, Xorg
++X-KDE-Keywords[hr]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X-poslužitelj,X poslužitelj,Zaslon,Video kartica,Grafička kartica,Podaci o sustavu
++X-KDE-Keywords[hu]=X,X-kiszolgáló,XServer,XFree86,képernyő,videokártya,rendszerinformáció
++X-KDE-Keywords[is]=X,X-Server,X-þjónn,XServer,Xþjónn,XFree86,Display,skjár, VideoCard,skjákort,System Information,kerfisupplýsingar
++X-KDE-Keywords[it]=X,Server X,XServer,XFree86,display,schermo,informazioni sul sistema,SchedaVideo
++X-KDE-Keywords[ja]=X,X-サーバ,Xサーバ,XFree86,ディスプレイ,システム情報
++X-KDE-Keywords[ka]=X,X-სერვერი,Xსერვერი,XFree86,დსიპლეი, ვიდეოდაფა,ინფორმაცია სისტების შესახებ
++X-KDE-Keywords[km]=X ម៉ាស៊ីន​បម្រើ X ម៉ាស៊ីន​បម្រើ X XFree86 ការ​បង្ហាញ កាត​វីដេអូ ព័័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=X,X 서버,XFree86,디스플레이,비디오 카드,시스템 정보
++X-KDE-Keywords[lt]=X,X-Serveris,XServer,XFree86,Displėjus,Video plokštė,Sistemos informacija
++X-KDE-Keywords[lv]=X,X-Serveris,XServeris,XFree86,Ekrāns,Sistēmas Informācija
++X-KDE-Keywords[mk]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X сервер,Екран,Видеокартичка,Информации за системот
++X-KDE-Keywords[nb]=X,X-tjener,Xtjener,XFree86,skjerm,videokort,systeminformasjon
++X-KDE-Keywords[nds]=X,X-Server,XServer,XFree86,Display,Dorstellen,Videokort,Systeeminformatschoon
++X-KDE-Keywords[ne]=X, X-सर्भर, Xसर्भर, Xस्वतन्त्र 86, प्रदर्शन गर्नुहोस्, भिडियो कार्ड, प्रणाली सूचना
++X-KDE-Keywords[nl]=X,X-Server,XServer,XFree86,display,systeeminformatie,beeldscherm,videokaart
++X-KDE-Keywords[nn]=X,X-tenar,XServer,XFree86,skjerm,skjermkort,systeminformasjon
++X-KDE-Keywords[pa]=X,X-Server,XServer,XFree86,ਦਰਿਸ਼,ਵੀਡਿਓ ਕਾਰਡ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=X,X serwer,Xserwer,XFree86,karta graficzna,grafika,informacja o systemie
++X-KDE-Keywords[pt]=X,servidor X,XServer,XFree86,ecrã,placa de vídeo,informações de sistema
++X-KDE-Keywords[pt_BR]=X,Servidor X,XFree,XFree86,Display,Tela,Placa de Vídeo,Informações do sistema
++X-KDE-Keywords[ro]=X,server X,XServer,XFree86,ecran,afişare,placă video,informaţii despre sistem
++X-KDE-Keywords[sl]=X,strežnik X,X-strežnik,XServer,XFree86,zaslon,grafična kartica,Podatki o sistemu,sistemske informacije
++X-KDE-Keywords[sr]=X,X-Server,XServer,XFree86,XOrg,Display,VideoCard,System Information,Икс,Икс-сервер,Икс-фри86,Икс-орг,екран,видео картица,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=X,X-Server,XServer,XFree86,XOrg,Display,VideoCard,System Information,X,X-server,XFree86,XOrg,ekran,video kartica,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=X,X-server,Xserver,Xfree86,skärm,videokort,systeminformation
++X-KDE-Keywords[ta]=X,X-சேவகன்,Xசேவகன்,XFree86, காட்சி,படக்காட்சிஅட்டை,அமைப்பு தகவல்
++X-KDE-Keywords[th]=X,เซิร์ฟเวอร์ X,XServer,XFree86,จอแสดงผล,แผงวงจรวิดีโอ,ข้อมูลระบบ
++X-KDE-Keywords[tr]=X,X-Server,XServer,X sunucu, X-sunucu,Xsunucu,XFree86,Görüntü,Video Kartı,Sistem Bilgisi
++X-KDE-Keywords[uk]=X,X-Server,XServer,XFree86,Display,системна інформація,монітор,X сервер,відео карта
++X-KDE-Keywords[uz]=X,X сервер,XFree86,xorg,X-Сервер,Дисплей,видео карта,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=X,Trình phục vụ X,XServer,XFree86,Màn hình,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxX,X-Server,XServer,XFree86,Display,VideoCard,System Informationxx
++X-KDE-Keywords[zh_CN]=X,X-Server,XServer,XFree86,Display,VideoCard,System InformationX 服务器,显示器,显卡,系统信息
++X-KDE-Keywords[zh_TW]=X,X-Server,XServer,XFree86,Display,VideoCard,System Information,X 伺服器,X伺服器,顯示器,顯示卡,系統資訊
+ 
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/ioports.desktop
++++ b/kcontrol/infocenter/info/ioports.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 ioports
+ Icon=kcmmemory
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/ioports/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/ioports/index.html
+ Categories=Qt;KDE;X-KDE-information;
+ 
+ 
+@@ -145,62 +144,62 @@
+ Comment[zh_CN]=IO 端口信息
+ Comment[zh_TW]=IO-Port 資訊
+ 
+-Keywords=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
+-Keywords[af]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Informasie
+-Keywords[be]=Увод'вывад,парты ўводу/вываду,парты,сістэмная інфармацыя,IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
+-Keywords[bg]=Keywords=информация, система, системна, вход, входно, изход, изходно, порт, портове, IO, I/O, IO-Ports, I/O-Ports, Ports, IO-Range, I/O-Range, System Information
+-Keywords[br]=ED,E/D,porzhioù E/D,porzhioù,rummad ED,rummadE/D,titouroù ar reizhiad
+-Keywords[ca]=ES,E/S,Ports d'ES,Ports d'E/S,Ports,Rang d'ES,Rang d'E/S,Informació del sistema
+-Keywords[cs]=IO,I/O,IO-porty,I/O-porty,Porty,Rozsah IO,Rozsah I/O,Informace o systému
+-Keywords[csb]=IO,I/O,pòrtë IO,pòrtë I/O,portë,òbjim IO,òbjim I/O,wëdowiédzô ò systemie
+-Keywords[cy]=IO,I/O,Pyrth-IO,Pyrth-I/O,Pyrth,Amrediad-IO,Amrediad-I/O,Gwybodaeth Cysawd
+-Keywords[da]=IO,I/O,IO-porte,I/O-Porte,Porte,IO-område,I/O-område,Systeminformation
+-Keywords[de]=Ein/Ausgabe,IO,I/O,IO-ports,I/O-Ports,Ports,IO-Bereich,I/O-Bereich,Systeminformation
+-Keywords[el]=ΕΕ,Ε/Ε,Θύρες ΕΕ,Θύρες Ε/Ε,Θύρες,Εύρος ΕΕ,Εύρος Ε/Ε,Πληροφορίες συστήματος
+-Keywords[eo]=IO,I/O,en,el,eneligo,pordoj,sistemo,operaciumo,informo
+-Keywords[es]=ES,E/S,Puertos de ES,Puertos de E/S,Puertos,Intervalo de ES,Intervalo de E/S,Información del sistema
+-Keywords[et]=IO,I/O,IO pordid,I/O pordid,pordid,IO piirkond,I/O piirkond,Süsteemi info
+-Keywords[eu]=IO,I/O,IO-atakak,Atakak,IO-barrutia,I/O-barrutia,Sistemaren informazioa
+-Keywords[fa]=ورودی خروجی، ورودی/خروجی، درگاههای ورودی خروجی، درگاهها، گسترۀ ورودی خروجی، گسترۀ ورودی/خروجی، اطلاعات سیستم
+-Keywords[fi]=IO,I/O,IO-Portit,I/O-Portit,Portit,I/O-alue,Järjestelmätiedot
+-Keywords[fr]=io,i/o,entrées-sorties,ports,ports d'entrée-sortie,informations système,plage d'entrées-sorties
+-Keywords[fy]=IO,I/O,IO-Ports,I/O-Ports,ports,IO-Range,I/O-Range,systeemynformaasje,IO-poarten
+-Keywords[ga]=IA,I/A,Poirt IA,Poirt I/A,Poirt,Raon IA,Raon I/A,Eolas faoin Chórais
+-Keywords[gl]=IO,I/O,E/S,Portos IO,Portos E/S,Rango IO,Rango E/S,Información do Sistema
+-Keywords[he]=קלט־פלט,יציאות קלט־פלט,יציאות,טווח קלט־פלט,מידע,מערכת,IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
+-Keywords[hr]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,IO portovi,IO raspon,Podaci o sustavu
+-Keywords[hu]=IO,I/O,IO-portok,I/O-portok,portok,IO-tartomány,I/O tartomány,rendszerinformáció
+-Keywords[is]=Inntak,úttak,I/O,Port,upplýsingar,kerfi
+-Keywords[it]=IO,I/O,porte di IO,porte di I/O,porte,intervallo di IO,intervallo di I/O,informazioni sul sistema
+-Keywords[ja]=IO,I/O,IO-ポート,I/O-ポート,ポート,IO-レンジ,I/O-レンジ,システムの情報
+-Keywords[km]=IO I/O ច្រក IO ច្រក I/O ច្រក ជួរ IO ជួរ I/O ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=IO,I/O,IO 포트,I/O 포트,IO 범위,I/O 범위,시스템 정보
+-Keywords[lt]=IO,I/O,IO-Ports,IO-portai,I/O-Ports,I/O-prievadai,Ports,prievadai,IO-Range,IO zona,I/O-Range,I/O zona,System Information,sisteminė informacija
+-Keywords[lv]=IO,I/O,IO-Porti,I/O-Porti,Porti,IO-Diapazons,I/O-Diapazons,Sistēmas Informācija
+-Keywords[mk]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,ВИ,В/И,ВИ-порти,В/И-порти,Порти,В/И-опсег,В/И-опсег,Информации за системот
+-Keywords[nb]=IO,I/O,IO-porter,I/O-porter,port,IO-område,I/O-område,IU,I/U,IU-porter,I/U-porter,port,IU-område,I/U-område,Systeminformasjon
+-Keywords[nds]=IO,I/O,IO-Porten,I/O-Porten,Porten,IO-Range,I/O-Range,IO-Rebeet,I/O-Rebeet,Systeeminformatschoon
+-Keywords[ne]=आगत/निर्गत, आगत/निर्गत, आगत/निर्गत-पोर्ट, आगत/निर्गत-पोर्ट, पोर्ट, आगत/निर्गत-दायरा, आगत/निर्गत दायरा, प्रणाली सूचना
+-Keywords[nl]=IO,I/O,IO-Ports,I/O-Ports,ports,IO-Range,I/O-Range,systeeminformatie,IO-poorten
+-Keywords[nn]=IU,I/U,IO,I/O,IU-portar,I/U-portar,portar,IU-område,I/U-område,systeminformasjon
+-Keywords[pa]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=IO,I/O,porty IO,porty I/O,porty,zakres IO,zakres I/O,informacja o systemie
+-Keywords[pt]=ES,E/S,portos E/S,portos,gama de E/S,informações de sistema
+-Keywords[pt_BR]=ES,E/S,Portas E/S,Portas de E/S,Portas,Faixa de E/S,Faixa de E/S,Informações de sistema
+-Keywords[ro]=I/E,IE,IO,I/O,porturi IO,porturi,domeniu IO,domeniu I/O,informaţii despre sistem
+-Keywords[se]=SO,S/O,IO,I/O,SO-verráhat,S/O-verráhat,verráhat,SO-gaska,S/O-gaska, vuogádatdiehtu
+-Keywords[sl]=VI,V/I,V/I-vrata,VI-vrata,vrata,VI-obseg,V/I-obseg,informacije o sistemu
+-Keywords[sr]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,У/И,У/И портови,У/Ипорт,системске информације,системски подаци,портови
+-Keywords[sr at latin]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,U/I,U/I portovi,U/Iport,sistemske informacije,sistemski podaci,portovi
+-Keywords[sv]=IO,I/O,IO-portar,I/O-portar,Ports,IO-område,I/O-område,Systeminformation
+-Keywords[ta]=IO,I/O,IO-முனையங்கள்,I/O-முனையங்கள்,முனையங்கள்,IO-நிலை,I/O-நிலை,அமைப்பு தகவல்
+-Keywords[th]=นำเข้านำออก,นำเข้า/นำออก,พอร์ตนำเข้านำออก,พอร์ตนำเข้า/นำออก,พอร์ต, แนวการนำเข้านำออก,แนวการนำเข้า/นำออก,ข้อมูลระบบ
+-Keywords[tr]=GÇ,G/Ç,GÇ Portları,G/Ç Portları, Portlar,GÇ-Aralığı,G/Ç-Aralığı,Sistem
+-Keywords[uk]=порти вводу/виводу,ВВ,в/в,порти,io,i/o,io-ports,i/p-ports,ports,system information
+-Keywords[uz]=К/Ч портлар,Портлар,К/Ч чегараси,Тизим ҳақида маълумот
+-Keywords[vi]=VR,V/R,Cổng VR,Cổng V/R,Cổng,Phạm vị VR,Phạm vị V/R,Thông tin Hệ thống
+-Keywords[x-test]=xxIO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Informationxx
+-Keywords[xh]=IO,I/O,IO-Amazibuko,I/O-Amazibuko,Amazibuko,IO-Beka ngendlela,Ulwazi lwendlela
+-Keywords[zh_CN]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,IO 端口,I/O 端口,端口,IO 范围,I/O 范围,系统信息
+-Keywords[zh_TW]=IO,I/O,IO-Ports,Ports,IO-Range,I/O-Range,System Information,IO 範圍,I/O 範圍,系統資訊
++X-KDE-Keywords=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
++X-KDE-Keywords[af]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Informasie
++X-KDE-Keywords[be]=Увод'вывад,парты ўводу/вываду,парты,сістэмная інфармацыя,IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, вход, входно, изход, изходно, порт, портове, IO, I/O, IO-Ports, I/O-Ports, Ports, IO-Range, I/O-Range, System Information
++X-KDE-Keywords[br]=ED,E/D,porzhioù E/D,porzhioù,rummad ED,rummadE/D,titouroù ar reizhiad
++X-KDE-Keywords[ca]=ES,E/S,Ports d'ES,Ports d'E/S,Ports,Rang d'ES,Rang d'E/S,Informació del sistema
++X-KDE-Keywords[cs]=IO,I/O,IO-porty,I/O-porty,Porty,Rozsah IO,Rozsah I/O,Informace o systému
++X-KDE-Keywords[csb]=IO,I/O,pòrtë IO,pòrtë I/O,portë,òbjim IO,òbjim I/O,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=IO,I/O,Pyrth-IO,Pyrth-I/O,Pyrth,Amrediad-IO,Amrediad-I/O,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=IO,I/O,IO-porte,I/O-Porte,Porte,IO-område,I/O-område,Systeminformation
++X-KDE-Keywords[de]=Ein/Ausgabe,IO,I/O,IO-ports,I/O-Ports,Ports,IO-Bereich,I/O-Bereich,Systeminformation
++X-KDE-Keywords[el]=ΕΕ,Ε/Ε,Θύρες ΕΕ,Θύρες Ε/Ε,Θύρες,Εύρος ΕΕ,Εύρος Ε/Ε,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=IO,I/O,en,el,eneligo,pordoj,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=ES,E/S,Puertos de ES,Puertos de E/S,Puertos,Intervalo de ES,Intervalo de E/S,Información del sistema
++X-KDE-Keywords[et]=IO,I/O,IO pordid,I/O pordid,pordid,IO piirkond,I/O piirkond,Süsteemi info
++X-KDE-Keywords[eu]=IO,I/O,IO-atakak,Atakak,IO-barrutia,I/O-barrutia,Sistemaren informazioa
++X-KDE-Keywords[fa]=ورودی خروجی، ورودی/خروجی، درگاههای ورودی خروجی، درگاهها، گسترۀ ورودی خروجی، گسترۀ ورودی/خروجی، اطلاعات سیستم
++X-KDE-Keywords[fi]=IO,I/O,IO-Portit,I/O-Portit,Portit,I/O-alue,Järjestelmätiedot
++X-KDE-Keywords[fr]=io,i/o,entrées-sorties,ports,ports d'entrée-sortie,informations système,plage d'entrées-sorties
++X-KDE-Keywords[fy]=IO,I/O,IO-Ports,I/O-Ports,ports,IO-Range,I/O-Range,systeemynformaasje,IO-poarten
++X-KDE-Keywords[ga]=IA,I/A,Poirt IA,Poirt I/A,Poirt,Raon IA,Raon I/A,Eolas faoin Chórais
++X-KDE-Keywords[gl]=IO,I/O,E/S,Portos IO,Portos E/S,Rango IO,Rango E/S,Información do Sistema
++X-KDE-Keywords[he]=קלט־פלט,יציאות קלט־פלט,יציאות,טווח קלט־פלט,מידע,מערכת,IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information
++X-KDE-Keywords[hr]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,IO portovi,IO raspon,Podaci o sustavu
++X-KDE-Keywords[hu]=IO,I/O,IO-portok,I/O-portok,portok,IO-tartomány,I/O tartomány,rendszerinformáció
++X-KDE-Keywords[is]=Inntak,úttak,I/O,Port,upplýsingar,kerfi
++X-KDE-Keywords[it]=IO,I/O,porte di IO,porte di I/O,porte,intervallo di IO,intervallo di I/O,informazioni sul sistema
++X-KDE-Keywords[ja]=IO,I/O,IO-ポート,I/O-ポート,ポート,IO-レンジ,I/O-レンジ,システムの情報
++X-KDE-Keywords[km]=IO I/O ច្រក IO ច្រក I/O ច្រក ជួរ IO ជួរ I/O ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=IO,I/O,IO 포트,I/O 포트,IO 범위,I/O 범위,시스템 정보
++X-KDE-Keywords[lt]=IO,I/O,IO-Ports,IO-portai,I/O-Ports,I/O-prievadai,Ports,prievadai,IO-Range,IO zona,I/O-Range,I/O zona,System Information,sisteminė informacija
++X-KDE-Keywords[lv]=IO,I/O,IO-Porti,I/O-Porti,Porti,IO-Diapazons,I/O-Diapazons,Sistēmas Informācija
++X-KDE-Keywords[mk]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,ВИ,В/И,ВИ-порти,В/И-порти,Порти,В/И-опсег,В/И-опсег,Информации за системот
++X-KDE-Keywords[nb]=IO,I/O,IO-porter,I/O-porter,port,IO-område,I/O-område,IU,I/U,IU-porter,I/U-porter,port,IU-område,I/U-område,Systeminformasjon
++X-KDE-Keywords[nds]=IO,I/O,IO-Porten,I/O-Porten,Porten,IO-Range,I/O-Range,IO-Rebeet,I/O-Rebeet,Systeeminformatschoon
++X-KDE-Keywords[ne]=आगत/निर्गत, आगत/निर्गत, आगत/निर्गत-पोर्ट, आगत/निर्गत-पोर्ट, पोर्ट, आगत/निर्गत-दायरा, आगत/निर्गत दायरा, प्रणाली सूचना
++X-KDE-Keywords[nl]=IO,I/O,IO-Ports,I/O-Ports,ports,IO-Range,I/O-Range,systeeminformatie,IO-poorten
++X-KDE-Keywords[nn]=IU,I/U,IO,I/O,IU-portar,I/U-portar,portar,IU-område,I/U-område,systeminformasjon
++X-KDE-Keywords[pa]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=IO,I/O,porty IO,porty I/O,porty,zakres IO,zakres I/O,informacja o systemie
++X-KDE-Keywords[pt]=ES,E/S,portos E/S,portos,gama de E/S,informações de sistema
++X-KDE-Keywords[pt_BR]=ES,E/S,Portas E/S,Portas de E/S,Portas,Faixa de E/S,Faixa de E/S,Informações de sistema
++X-KDE-Keywords[ro]=I/E,IE,IO,I/O,porturi IO,porturi,domeniu IO,domeniu I/O,informaţii despre sistem
++X-KDE-Keywords[se]=SO,S/O,IO,I/O,SO-verráhat,S/O-verráhat,verráhat,SO-gaska,S/O-gaska, vuogádatdiehtu
++X-KDE-Keywords[sl]=VI,V/I,V/I-vrata,VI-vrata,vrata,VI-obseg,V/I-obseg,informacije o sistemu
++X-KDE-Keywords[sr]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,У/И,У/И портови,У/Ипорт,системске информације,системски подаци,портови
++X-KDE-Keywords[sr at latin]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,U/I,U/I portovi,U/Iport,sistemske informacije,sistemski podaci,portovi
++X-KDE-Keywords[sv]=IO,I/O,IO-portar,I/O-portar,Ports,IO-område,I/O-område,Systeminformation
++X-KDE-Keywords[ta]=IO,I/O,IO-முனையங்கள்,I/O-முனையங்கள்,முனையங்கள்,IO-நிலை,I/O-நிலை,அமைப்பு தகவல்
++X-KDE-Keywords[th]=นำเข้านำออก,นำเข้า/นำออก,พอร์ตนำเข้านำออก,พอร์ตนำเข้า/นำออก,พอร์ต, แนวการนำเข้านำออก,แนวการนำเข้า/นำออก,ข้อมูลระบบ
++X-KDE-Keywords[tr]=GÇ,G/Ç,GÇ Portları,G/Ç Portları, Portlar,GÇ-Aralığı,G/Ç-Aralığı,Sistem
++X-KDE-Keywords[uk]=порти вводу/виводу,ВВ,в/в,порти,io,i/o,io-ports,i/p-ports,ports,system information
++X-KDE-Keywords[uz]=К/Ч портлар,Портлар,К/Ч чегараси,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=VR,V/R,Cổng VR,Cổng V/R,Cổng,Phạm vị VR,Phạm vị V/R,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxIO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Informationxx
++X-KDE-Keywords[xh]=IO,I/O,IO-Amazibuko,I/O-Amazibuko,Amazibuko,IO-Beka ngendlela,Ulwazi lwendlela
++X-KDE-Keywords[zh_CN]=IO,I/O,IO-Ports,I/O-Ports,Ports,IO-Range,I/O-Range,System Information,IO 端口,I/O 端口,端口,IO 范围,I/O 范围,系统信息
++X-KDE-Keywords[zh_TW]=IO,I/O,IO-Ports,Ports,IO-Range,I/O-Range,System Information,IO 範圍,I/O 範圍,系統資訊
+ 
+--- a/kcontrol/infocenter/info/dma.desktop
++++ b/kcontrol/infocenter/info/dma.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 dma
+ Icon=kcmmemory
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/dma/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/dma/index.html
+ Categories=Qt;KDE;X-KDE-information;
+ 
+ 
+@@ -146,64 +145,64 @@
+ Comment[zh_CN]=DMA 信息
+ Comment[zh_TW]=DMA 資訊
+ 
+-Keywords=dma,DMA-Channels,System Information
+-Keywords[af]=dma,DMA-Channels,System Informasie
+-Keywords[be]=каналы DMA,сістэмная інфармацыя,dma,DMA-Channels,System Information
+-Keywords[bg]=Keywords=информация, система, системна, канали, канал, dma, DMA-Channels, System Information
+-Keywords[br]=dma,kanolioù DMA,titoutoù reizhoad
+-Keywords[ca]=dma,Canals DMA,informació del sistema
+-Keywords[cs]=dma,DMA kanály,Informace o systému
+-Keywords[csb]=dma,kanałë DMA,wëdowiédzô ò systemie
+-Keywords[cy]=dma,Sianeli DMA,Gwybodaeth Cysawd
+-Keywords[da]=dma,DMA-kanaler,Systeminformation
+-Keywords[de]=DMA,DMA-Kanäle,Systeminformation,Information
+-Keywords[el]=dma,Κανάλια DMA,Πληροφορίες συστήματος
+-Keywords[eo]=DMA,kanaloj,sistemo,operaciumo,informo
+-Keywords[es]=DMA,Canales DMA,Información del sistema
+-Keywords[et]=dma,DMA-kanalid,süsteemi informatsioon
+-Keywords[eu]=dma,DMA-Kanalak,Sistemaren informazioa
+-Keywords[fa]=dma ،مجراهای دستیابی مستقیم به حافظه، اطلاعات سیستم
+-Keywords[fi]=dma,DMA-kanavat,Järjestelmätiedot
+-Keywords[fr]=dma,canaux DMA,informations système
+-Keywords[fy]=dma,DMA-channels,systeemynformaasje,DMA-kanalen
+-Keywords[ga]=dma,Cainéil-DMA,Eolas faoin Chóras
+-Keywords[gl]=dma,Canles de DMA,Canales DMA,Información do Sistema
+-Keywords[he]=ערוצי גישה ישירה לזיכרון,מידע מערכת,DMA,DMA-Channels,System Information
+-Keywords[hr]=dma,DMA-Channels,System Information,DMA kanali,podaci o sustavu
+-Keywords[hu]=DMA,DMA-csatornák,DMA-csatorna,rendszerinformáció
+-Keywords[is]=DMA-brautir,DMA-rásir
+-Keywords[it]=DMA,canali DMA,informazioni sul sistema
+-Keywords[ja]=dma,DMA-チャンネル,システムの情報
+-Keywords[ka]=dma,DMA-არხები,ინფორმაცია სისტემის შესახებ
+-Keywords[km]=dma ឆានែល DMA ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=dma,DMA-채널,채널,시스템 정보
+-Keywords[lt]=dma,DMA-Kanalai,Sistemos Informacija
+-Keywords[lv]=dma,DMA-Kanāli,Sistēmas Informācija
+-Keywords[mk]=dma,DMA-Channels,System Information,DMA канали,канали,Информации за системот
+-Keywords[nb]=dma,DMA-kanaler,Systeminformasjon
+-Keywords[nds]=dms,DMA-Kanaals,Systeeminformatschoon
+-Keywords[ne]=dma, DMA-च्यानल, प्रणाली सूचना
+-Keywords[nl]=dma,DMA-channels,systeeminformatie,DMA-kanalen
+-Keywords[nn]=dma,DMA-kanalar,systeminformasjon
+-Keywords[pa]=dma,DMA-Channels,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=dma,kanały DMA,informacja o systemie
+-Keywords[pt]=dma,canais dma,informações de sistema
+-Keywords[pt_BR]=DMA,canais DMA,canal DMA,informações de sistema
+-Keywords[ro]=dma,canale DMA,informaţii despre sistem
+-Keywords[se]=dma,DMA-kanálat,vuogádatdiehtu
+-Keywords[sl]=dma,kanali DMA,informacije o sistemu
+-Keywords[sr]=dma,DMA-Channels,System Information,ДМА,канали,системске информације,системски подаци
+-Keywords[sr at latin]=dma,DMA-Channels,System Information,DMA,kanali,sistemske informacije,sistemski podaci
+-Keywords[sv]=dma,DMA-kanaler,Systeminformation
+-Keywords[ta]=dma,DMA-வழிமுறைகள்,அமைப்பு தகவல்
+-Keywords[tg]=dma,Каналҳои-DMA,Иттилооти система
+-Keywords[th]=dma,ช่อง DMA,ข้อมูลระบบ
+-Keywords[tr]=dma,DMA-Kanalları,Sistem Hakkında Bilgi
+-Keywords[uk]=dma,канал ПДП, інформація,system-information,information
+-Keywords[uz]=dma,DMA каналлари,Тизим ҳақида маълумот
+-Keywords[vi]=dma,Kênh DMA,Thông tin Hệ thống
+-Keywords[x-test]=xxdma,DMA-Channels,System Informationxx
+-Keywords[xh]=dma,DMA-Imijelo,Ulwazi Lwendlela yokusebenza
+-Keywords[zh_CN]=dma,DMA-Channels,System Information,DMA 通道,系统信息
+-Keywords[zh_TW]=dma,DMA-Channels,System Information,DMA通道,系統資訊
++X-KDE-Keywords=dma,DMA-Channels,System Information
++X-KDE-Keywords[af]=dma,DMA-Channels,System Informasie
++X-KDE-Keywords[be]=каналы DMA,сістэмная інфармацыя,dma,DMA-Channels,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, канали, канал, dma, DMA-Channels, System Information
++X-KDE-Keywords[br]=dma,kanolioù DMA,titoutoù reizhoad
++X-KDE-Keywords[ca]=dma,Canals DMA,informació del sistema
++X-KDE-Keywords[cs]=dma,DMA kanály,Informace o systému
++X-KDE-Keywords[csb]=dma,kanałë DMA,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=dma,Sianeli DMA,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=dma,DMA-kanaler,Systeminformation
++X-KDE-Keywords[de]=DMA,DMA-Kanäle,Systeminformation,Information
++X-KDE-Keywords[el]=dma,Κανάλια DMA,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=DMA,kanaloj,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=DMA,Canales DMA,Información del sistema
++X-KDE-Keywords[et]=dma,DMA-kanalid,süsteemi informatsioon
++X-KDE-Keywords[eu]=dma,DMA-Kanalak,Sistemaren informazioa
++X-KDE-Keywords[fa]=dma ،مجراهای دستیابی مستقیم به حافظه، اطلاعات سیستم
++X-KDE-Keywords[fi]=dma,DMA-kanavat,Järjestelmätiedot
++X-KDE-Keywords[fr]=dma,canaux DMA,informations système
++X-KDE-Keywords[fy]=dma,DMA-channels,systeemynformaasje,DMA-kanalen
++X-KDE-Keywords[ga]=dma,Cainéil-DMA,Eolas faoin Chóras
++X-KDE-Keywords[gl]=dma,Canles de DMA,Canales DMA,Información do Sistema
++X-KDE-Keywords[he]=ערוצי גישה ישירה לזיכרון,מידע מערכת,DMA,DMA-Channels,System Information
++X-KDE-Keywords[hr]=dma,DMA-Channels,System Information,DMA kanali,podaci o sustavu
++X-KDE-Keywords[hu]=DMA,DMA-csatornák,DMA-csatorna,rendszerinformáció
++X-KDE-Keywords[is]=DMA-brautir,DMA-rásir
++X-KDE-Keywords[it]=DMA,canali DMA,informazioni sul sistema
++X-KDE-Keywords[ja]=dma,DMA-チャンネル,システムの情報
++X-KDE-Keywords[ka]=dma,DMA-არხები,ინფორმაცია სისტემის შესახებ
++X-KDE-Keywords[km]=dma ឆានែល DMA ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=dma,DMA-채널,채널,시스템 정보
++X-KDE-Keywords[lt]=dma,DMA-Kanalai,Sistemos Informacija
++X-KDE-Keywords[lv]=dma,DMA-Kanāli,Sistēmas Informācija
++X-KDE-Keywords[mk]=dma,DMA-Channels,System Information,DMA канали,канали,Информации за системот
++X-KDE-Keywords[nb]=dma,DMA-kanaler,Systeminformasjon
++X-KDE-Keywords[nds]=dms,DMA-Kanaals,Systeeminformatschoon
++X-KDE-Keywords[ne]=dma, DMA-च्यानल, प्रणाली सूचना
++X-KDE-Keywords[nl]=dma,DMA-channels,systeeminformatie,DMA-kanalen
++X-KDE-Keywords[nn]=dma,DMA-kanalar,systeminformasjon
++X-KDE-Keywords[pa]=dma,DMA-Channels,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=dma,kanały DMA,informacja o systemie
++X-KDE-Keywords[pt]=dma,canais dma,informações de sistema
++X-KDE-Keywords[pt_BR]=DMA,canais DMA,canal DMA,informações de sistema
++X-KDE-Keywords[ro]=dma,canale DMA,informaţii despre sistem
++X-KDE-Keywords[se]=dma,DMA-kanálat,vuogádatdiehtu
++X-KDE-Keywords[sl]=dma,kanali DMA,informacije o sistemu
++X-KDE-Keywords[sr]=dma,DMA-Channels,System Information,ДМА,канали,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=dma,DMA-Channels,System Information,DMA,kanali,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=dma,DMA-kanaler,Systeminformation
++X-KDE-Keywords[ta]=dma,DMA-வழிமுறைகள்,அமைப்பு தகவல்
++X-KDE-Keywords[tg]=dma,Каналҳои-DMA,Иттилооти система
++X-KDE-Keywords[th]=dma,ช่อง DMA,ข้อมูลระบบ
++X-KDE-Keywords[tr]=dma,DMA-Kanalları,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=dma,канал ПДП, інформація,system-information,information
++X-KDE-Keywords[uz]=dma,DMA каналлари,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=dma,Kênh DMA,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxdma,DMA-Channels,System Informationxx
++X-KDE-Keywords[xh]=dma,DMA-Imijelo,Ulwazi Lwendlela yokusebenza
++X-KDE-Keywords[zh_CN]=dma,DMA-Channels,System Information,DMA 通道,系统信息
++X-KDE-Keywords[zh_TW]=dma,DMA-Channels,System Information,DMA通道,系統資訊
+ 
+--- a/kcontrol/infocenter/info/memory.desktop
++++ b/kcontrol/infocenter/info/memory.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 memory
+ Icon=kcmmemory
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/memory/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/memory/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -99,6 +98,7 @@
+ Comment[fi]=Tietoja muistista
+ Comment[fr]=Informations sur la mémoire
+ Comment[fy]=Unthâld ynformaasje
++Comment[ga]=Faisnéis chuimhne
+ Comment[gl]=Información da memória
+ Comment[he]=מידע על הזיכרון
+ Comment[hr]=Podaci o memoriji
+@@ -144,63 +144,63 @@
+ Comment[zh_CN]=内存信息
+ Comment[zh_TW]=記憶體資訊資訊
+ 
+-Keywords=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
+-Keywords[af]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Informasie
+-Keywords[be]=Памяць,віртуальная памяць,фізічная памяць,падкачка,сістэмная інфармацыя,Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
+-Keywords[bg]=Keywords=информация, система, системна, памет, физическа, виртуална, кеш, реална, Memory, RAM, Virtual memory, Physical memory, Shared memory, Swap, System Information
+-Keywords[br]=memor,RAM,memor c'halloudel,memor fizikel,memor rannet,disloañ,titouroù reizhiad
+-Keywords[ca]=Memòria,RAM,Memòria virtual,memòria física,memòria compartida,intercanvi,Informació del sistema
+-Keywords[cs]=Paměť,RAM,Virtuální paměť,Fyzická paměť,Sdílená paměť,Swap,Informace o systému
+-Keywords[csb]=pamiãc,RAM,wirtualnô pamiãc,fizycznô pamiãc,zbiérnô pamiãc,lopk wëmianë,particëjô wëmianë,wëdowiédzô ò systemie
+-Keywords[cy]=Cof,RAM,Cof rhith,Cof corfforol,Cof cyfrannol,Swap,Gwybodaeth Cysawd
+-Keywords[da]=Hukommelse,Ram,Virtuel hukommelse,Fysisk hukommelse,Delt hukommelse,Swap,Systeminformation
+-Keywords[de]=Speicher,RAM,Virtueller Speicher,Physischer Speicher,Shared Memory,Auslagerung,Swap,Systeminformation
+-Keywords[el]=Μνήμη,RAM,Εικονική μνήμη,Φυσική μνήμη,Μοιρασμένη μνήμη,Αντιμετάθεση,Πληροφορίες συστήματος
+-Keywords[eo]=memoro,RAM,virtuala,fizika,komunuza,sistemo,operaciumo,informo
+-Keywords[es]=Memoria,RAM,Memoria virtual,Memoria física,Memoria compartida,Swap,Intercambio,Información del sistema
+-Keywords[et]=Mälu,RAM,Virtuaalmälu,Füüsiline mälu,Jagatud mälu,Swap,Saaleala,Süsteemi info
+-Keywords[eu]=Memoria,RAM,Memoria birtuala,Memoria fisikoa,Partekatutako memoria, Swap,Sistemaren informazioa
+-Keywords[fa]=حافظه، حافظه با دستیابی تصادفی، حافظۀ مجازی، حافظۀ فیزیکی، حافظۀ مشترک، مبادله کردن، اطلاعات سیستم
+-Keywords[fi]=Muisti,RAM,Virtuaalimuisti,Fyysinen muisti,Jaettu muisti,Järjestelmätiedot
+-Keywords[fr]=mémoire,RAM,mémoire virtuelle,mémoire physique,mémoire partagée,swap,partition d'échange,informations système,ram
+-Keywords[fy]=memory,RAM,virtual memory,physical memory,shared memory,swap,systeemynformaasje,ûnthâld,wikselûnthâld,,virtueel ûnthâld,fysiek ûnthâld,dield ûnthâld,
+-Keywords[ga]=Cuimhne,RAM,Cuimhne fhíorúil,Cuimhne ábhartha,Comhchuimhne,Cuimhne bhabhtála,Eolas faoin Chóras
+-Keywords[gl]=Memória,RAM,Memória virtual,Memória física,Memória compartida,Swap,Intercámbio,Información do Sistema
+-Keywords[he]=זיכרון פנימי,זיכרון וירטואלי,זיכרון משותף,תחלופה,מידע, מערכת,RAM,זיכרון,Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
+-Keywords[hr]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,Memorija,Virtualana memorija,Fizička memorija,Dijeljena memorija,Podaci o sustavu
+-Keywords[hu]=memória,RAM,virtuális memória,fizikai memória,megosztott memória,lapozómemória,lapozó,swap,rendszerinformáció
+-Keywords[is]=Minni,vinnsluminni,sýndarminni,samnýtt minni,biðminni,diskminni,kerfi,upplýsingar
+-Keywords[it]=memoria,RAM,memoria virtuale,memoria fisica,memoria condivisa,swap,informazioni sul sistema
+-Keywords[ja]=メモリ,RAM,仮想メモリ,物理メモリ,共有メモリ, スワップ, システム情報
+-Keywords[ka]=მეხსიერება,RAM,ვირტუალური მეხსეირება,ფიზიკური მეხსიერება,საერთო მეხსიერება,მიმოცვლის ფაილია,ინფორმაცია სისტემის შესახებ
+-Keywords[km]=សតិ RAM សតិ​និម្មិត សតិពិត សតិ​ដែល​បាន​ចែករំលែក ស្វប ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=메모리,RAM,가상 메모리,물리 메모리,공유 메모리,스왑,시스템 정보
+-Keywords[lt]=Memory,atmintis,RAM,atmintinė,Virtual memory,virtuali atmintis,Physical memory,fizinė atmintis,Shared memory,bendro naudojimo atmintis,Swap,System Information,sisteminė informacija
+-Keywords[lv]=Atmiņa,RAM,Virtuālā atmiņa,Fiziskā atmiņa,Koplietošanas atmiņa,Svaps,Sistēmas Informācija
+-Keywords[mk]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,Меморија,Виртуелна меморија,Физичка меморија,Заедничка меморија,Информации за системот
+-Keywords[nb]=Minne,RAM,Kunstig minne,Fysisk minne,Delt minne,Vekselsminne,Systeminformasjon
+-Keywords[nds]=Spieker,RAM,Virtuell Spieker,Physikaalsch Spieker,Deelt Spieker,Swap,Utlager-Spieker,utlagern,Systeeminformatschoon
+-Keywords[ne]=स्मृति, र्याम, अवास्तविक स्मृति, भौतीक स्मृति, साझेदारी स्मृति, स्वाप, प्रणाली सूचना
+-Keywords[nl]=memory,RAM,virtual memory,physical memory,shared memory,swap,systeeminformatie,geheugen,wisselgeheugen,virtueel geheugen,fysiek geheugen,gedeeld geheugen
+-Keywords[nn]=minne,RAM,virtuelt minne,fysisk minne,delt minne,veksleminne,systeminformasjon
+-Keywords[pa]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,ਮੈਮੋਰੀ,ਭੌਤਿਕ ਮੈਮੋਰੀ,ਸਾਂਝੀ ਮੈਮੋਰੀ,ਸਵੈਪ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਰੈਮ
+-Keywords[pl]=pamięć,RAM,pamięć wirtualna,pamięć fizyczna,pamięć współdzielona,plik wymiany,partycja wymiany,informacja o systemie
+-Keywords[pt]=memória,RAM,memória virtual,memória física,memória partilhada,swap,informações do sistema
+-Keywords[pt_BR]=Memória,RAM,Memória virtual,Memória física,Memória compartilhada,Swap,Troca,Informações de sistema
+-Keywords[ro]=memorie,RAM,memorie virtuală,memorie fizică,memorie partajată,swap,informaţii despre sistem
+-Keywords[se]=muitu,RAM,virtuella muitu,fysálaš muitu,juohkojuvvon muitu,vuorromuitu, vuogádatdiehtu
+-Keywords[sl]=pomnilnik,RAM,navidezni pomnilnik,fizični pomnilnik,deljeni pomnilnik,izmenjalni prostor,informacije o sistemu
+-Keywords[sr]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,меморија,виртуелна меморија,физичка меморија,дељена меморија,размена,системске информације,системски подаци
+-Keywords[sr at latin]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,memorija,virtuelna memorija,fizička memorija,deljena memorija,razmena,sistemske informacije,sistemski podaci
+-Keywords[sv]=Minne,RAM,Virtuellt minne,Fysiskt minne,Delat minne,Swapp,Systeminformation
+-Keywords[ta]=நினைவகம், RAM,மய் நிகர் நினைவகம், பருநிலை நினைவகம், பகிர்வு நினைவகம், மாறுகொள், அமைப்புத்தகவல்
+-Keywords[th]=หน่วยความจำ,แรม,หน่วยความจำเสมือน,หน่วยความจำจริง,หน่วยความจำที่ใช้ร่วมกัน,สวอป, ข้อมูลระบบ
+-Keywords[tr]=Bellek,RAM,Sanal bellek,Fiziksel bellek,Paylaşılan bellek,Takas,Sistem Hakkında Bilgi
+-Keywords[uk]=пам'ять,RAM,віртуальна пам'ять,фізична пам'ять,спільна пам'ять,свопінг,swap,інформація,система
+-Keywords[uz]=Хотира,RAM,Виртуал хотира,Physical memory,Бўлишилган хотира,Своп,Тизим ҳақида маълумот
+-Keywords[vi]=Bộ nhớ,RAM,Bộ nhớ ảo,Bộ nhớ vật lý,Bộ nhớ dùng chung,Bộ nhỡ tráo đổi,Thông tin Hệ thống
+-Keywords[x-test]=xxMemory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Informationxx
+-Keywords[xh]=Inkumbulo,RAM,Inkumbulo yobume,Inkumbulo yomzimba,Inkumbulo yokwahlulelana,Ukutshintshiselana,Ulwazi lwendlela
+-Keywords[zh_CN]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,内存,虚拟存储,物理存储,共享内存,交换,系统信息
+-Keywords[zh_TW]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,記憶體,虛擬記憶體,實體記憶體,共享記憶體,系統資訊
++X-KDE-Keywords=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
++X-KDE-Keywords[af]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Informasie
++X-KDE-Keywords[be]=Памяць,віртуальная памяць,фізічная памяць,падкачка,сістэмная інфармацыя,Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, памет, физическа, виртуална, кеш, реална, Memory, RAM, Virtual memory, Physical memory, Shared memory, Swap, System Information
++X-KDE-Keywords[br]=memor,RAM,memor c'halloudel,memor fizikel,memor rannet,disloañ,titouroù reizhiad
++X-KDE-Keywords[ca]=Memòria,RAM,Memòria virtual,memòria física,memòria compartida,intercanvi,Informació del sistema
++X-KDE-Keywords[cs]=Paměť,RAM,Virtuální paměť,Fyzická paměť,Sdílená paměť,Swap,Informace o systému
++X-KDE-Keywords[csb]=pamiãc,RAM,wirtualnô pamiãc,fizycznô pamiãc,zbiérnô pamiãc,lopk wëmianë,particëjô wëmianë,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=Cof,RAM,Cof rhith,Cof corfforol,Cof cyfrannol,Swap,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=Hukommelse,Ram,Virtuel hukommelse,Fysisk hukommelse,Delt hukommelse,Swap,Systeminformation
++X-KDE-Keywords[de]=Speicher,RAM,Virtueller Speicher,Physischer Speicher,Shared Memory,Auslagerung,Swap,Systeminformation
++X-KDE-Keywords[el]=Μνήμη,RAM,Εικονική μνήμη,Φυσική μνήμη,Μοιρασμένη μνήμη,Αντιμετάθεση,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=memoro,RAM,virtuala,fizika,komunuza,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=Memoria,RAM,Memoria virtual,Memoria física,Memoria compartida,Swap,Intercambio,Información del sistema
++X-KDE-Keywords[et]=Mälu,RAM,Virtuaalmälu,Füüsiline mälu,Jagatud mälu,Swap,Saaleala,Süsteemi info
++X-KDE-Keywords[eu]=Memoria,RAM,Memoria birtuala,Memoria fisikoa,Partekatutako memoria, Swap,Sistemaren informazioa
++X-KDE-Keywords[fa]=حافظه، حافظه با دستیابی تصادفی، حافظۀ مجازی، حافظۀ فیزیکی، حافظۀ مشترک، مبادله کردن، اطلاعات سیستم
++X-KDE-Keywords[fi]=Muisti,RAM,Virtuaalimuisti,Fyysinen muisti,Jaettu muisti,Järjestelmätiedot
++X-KDE-Keywords[fr]=mémoire,RAM,mémoire virtuelle,mémoire physique,mémoire partagée,swap,partition d'échange,informations système,ram
++X-KDE-Keywords[fy]=memory,RAM,virtual memory,physical memory,shared memory,swap,systeemynformaasje,ûnthâld,wikselûnthâld,,virtueel ûnthâld,fysiek ûnthâld,dield ûnthâld,
++X-KDE-Keywords[ga]=Cuimhne,RAM,Cuimhne fhíorúil,Cuimhne ábhartha,Comhchuimhne,Cuimhne bhabhtála,Eolas faoin Chóras
++X-KDE-Keywords[gl]=Memória,RAM,Memória virtual,Memória física,Memória compartida,Swap,Intercámbio,Información do Sistema
++X-KDE-Keywords[he]=זיכרון פנימי,זיכרון וירטואלי,זיכרון משותף,תחלופה,מידע, מערכת,RAM,זיכרון,Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information
++X-KDE-Keywords[hr]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,Memorija,Virtualana memorija,Fizička memorija,Dijeljena memorija,Podaci o sustavu
++X-KDE-Keywords[hu]=memória,RAM,virtuális memória,fizikai memória,megosztott memória,lapozómemória,lapozó,swap,rendszerinformáció
++X-KDE-Keywords[is]=Minni,vinnsluminni,sýndarminni,samnýtt minni,biðminni,diskminni,kerfi,upplýsingar
++X-KDE-Keywords[it]=memoria,RAM,memoria virtuale,memoria fisica,memoria condivisa,swap,informazioni sul sistema
++X-KDE-Keywords[ja]=メモリ,RAM,仮想メモリ,物理メモリ,共有メモリ, スワップ, システム情報
++X-KDE-Keywords[ka]=მეხსიერება,RAM,ვირტუალური მეხსეირება,ფიზიკური მეხსიერება,საერთო მეხსიერება,მიმოცვლის ფაილია,ინფორმაცია სისტემის შესახებ
++X-KDE-Keywords[km]=សតិ RAM សតិ​និម្មិត សតិពិត សតិ​ដែល​បាន​ចែករំលែក ស្វប ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=메모리,RAM,가상 메모리,물리 메모리,공유 메모리,스왑,시스템 정보
++X-KDE-Keywords[lt]=Memory,atmintis,RAM,atmintinė,Virtual memory,virtuali atmintis,Physical memory,fizinė atmintis,Shared memory,bendro naudojimo atmintis,Swap,System Information,sisteminė informacija
++X-KDE-Keywords[lv]=Atmiņa,RAM,Virtuālā atmiņa,Fiziskā atmiņa,Koplietošanas atmiņa,Svaps,Sistēmas Informācija
++X-KDE-Keywords[mk]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,Меморија,Виртуелна меморија,Физичка меморија,Заедничка меморија,Информации за системот
++X-KDE-Keywords[nb]=Minne,RAM,Kunstig minne,Fysisk minne,Delt minne,Vekselsminne,Systeminformasjon
++X-KDE-Keywords[nds]=Spieker,RAM,Virtuell Spieker,Physikaalsch Spieker,Deelt Spieker,Swap,Utlager-Spieker,utlagern,Systeeminformatschoon
++X-KDE-Keywords[ne]=स्मृति, र्याम, अवास्तविक स्मृति, भौतीक स्मृति, साझेदारी स्मृति, स्वाप, प्रणाली सूचना
++X-KDE-Keywords[nl]=memory,RAM,virtual memory,physical memory,shared memory,swap,systeeminformatie,geheugen,wisselgeheugen,virtueel geheugen,fysiek geheugen,gedeeld geheugen
++X-KDE-Keywords[nn]=minne,RAM,virtuelt minne,fysisk minne,delt minne,veksleminne,systeminformasjon
++X-KDE-Keywords[pa]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,ਮੈਮੋਰੀ,ਭੌਤਿਕ ਮੈਮੋਰੀ,ਸਾਂਝੀ ਮੈਮੋਰੀ,ਸਵੈਪ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਰੈਮ
++X-KDE-Keywords[pl]=pamięć,RAM,pamięć wirtualna,pamięć fizyczna,pamięć współdzielona,plik wymiany,partycja wymiany,informacja o systemie
++X-KDE-Keywords[pt]=memória,RAM,memória virtual,memória física,memória partilhada,swap,informações do sistema
++X-KDE-Keywords[pt_BR]=Memória,RAM,Memória virtual,Memória física,Memória compartilhada,Swap,Troca,Informações de sistema
++X-KDE-Keywords[ro]=memorie,RAM,memorie virtuală,memorie fizică,memorie partajată,swap,informaţii despre sistem
++X-KDE-Keywords[se]=muitu,RAM,virtuella muitu,fysálaš muitu,juohkojuvvon muitu,vuorromuitu, vuogádatdiehtu
++X-KDE-Keywords[sl]=pomnilnik,RAM,navidezni pomnilnik,fizični pomnilnik,deljeni pomnilnik,izmenjalni prostor,informacije o sistemu
++X-KDE-Keywords[sr]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,меморија,виртуелна меморија,физичка меморија,дељена меморија,размена,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,memorija,virtuelna memorija,fizička memorija,deljena memorija,razmena,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=Minne,RAM,Virtuellt minne,Fysiskt minne,Delat minne,Swapp,Systeminformation
++X-KDE-Keywords[ta]=நினைவகம், RAM,மய் நிகர் நினைவகம், பருநிலை நினைவகம், பகிர்வு நினைவகம், மாறுகொள், அமைப்புத்தகவல்
++X-KDE-Keywords[th]=หน่วยความจำ,แรม,หน่วยความจำเสมือน,หน่วยความจำจริง,หน่วยความจำที่ใช้ร่วมกัน,สวอป, ข้อมูลระบบ
++X-KDE-Keywords[tr]=Bellek,RAM,Sanal bellek,Fiziksel bellek,Paylaşılan bellek,Takas,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=пам'ять,RAM,віртуальна пам'ять,фізична пам'ять,спільна пам'ять,свопінг,swap,інформація,система
++X-KDE-Keywords[uz]=Хотира,RAM,Виртуал хотира,Physical memory,Бўлишилган хотира,Своп,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=Bộ nhớ,RAM,Bộ nhớ ảo,Bộ nhớ vật lý,Bộ nhớ dùng chung,Bộ nhỡ tráo đổi,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxMemory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Informationxx
++X-KDE-Keywords[xh]=Inkumbulo,RAM,Inkumbulo yobume,Inkumbulo yomzimba,Inkumbulo yokwahlulelana,Ukutshintshiselana,Ulwazi lwendlela
++X-KDE-Keywords[zh_CN]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,内存,虚拟存储,物理存储,共享内存,交换,系统信息
++X-KDE-Keywords[zh_TW]=Memory,RAM,Virtual memory,Physical memory,Shared memory,Swap,System Information,記憶體,虛擬記憶體,實體記憶體,共享記憶體,系統資訊
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/pci.desktop
++++ b/kcontrol/infocenter/info/pci.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 pci
+ Icon=kcmpci
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/pci/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/pci/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -90,62 +89,62 @@
+ Comment[zh_CN]=PCI 信息
+ Comment[zh_TW]=PCI 資訊
+ 
+-Keywords=PCI,PCI-Devices,PCI-Bus,System Information
+-Keywords[af]=PCI,PCI-Devices,PCI-Bus,System Informasie
+-Keywords[be]=Прылады PCI,Сістэмная інфармацыя,PCI,PCI-Devices,PCI-Bus,System Information
+-Keywords[bg]=Keywords=информация, система, системна, шина, PCI, PCI-Devices, PCI-Bus, System Information
+-Keywords[br]=PCI,trobarzhelloù PCI,bus PCI,titouroù reizhiad
+-Keywords[ca]=PCI,Dispositius PCI,Bus PCI,Informació del sistema
+-Keywords[cs]=PCI,PCI-zařízení,PCI-sběrnice,Informace o systému
+-Keywords[csb]=PCI,ùrządzenia PCI,magistrala PCI,wëdowiédzô ò systemie
+-Keywords[cy]=PCI,Dyfeisiau-PCI,Bws-PCI,Gwybodaeth Cysawd
+-Keywords[da]=PCI,PCI-enheder,PCI-bus,Systeminformation
+-Keywords[de]=PCI,PCI-Geräte,PCI-Bus,Systeminformation
+-Keywords[el]=PCI,Συσκευές PCI,Δίαυλος PCI,Πληροφορίες συστήματος
+-Keywords[eo]=PCI,aparato,buso,sistemo,operaciumo,informo
+-Keywords[es]=PCI,Dispositivos PCI,Bus PCI,Información del sistema
+-Keywords[et]=PCI,PCi seadmed,PCI siin,Süsteemi info
+-Keywords[eu]=PCI,PCI-gailuak,PCI busa,Sistemaren informazioa
+-Keywords[fa]=PCI ،دستگاههای PCI ،گذرگاه PCI ،اطلاعات سیستم
+-Keywords[fi]=PCI,PCI-Laitteet,PCI-Väylä,Järjestelmätiedot
+-Keywords[fr]=PCI,périphériques PCI,bus PCI,informations système,pci
+-Keywords[fy]=PCI,PCI-devices,PCI-bus,systeemynformaasje,PCI-apparaten
+-Keywords[gl]=PCI,Dispositivos PCI,Bus PCI,Información do Sistema
+-Keywords[he]=מידע מערכת,אפיק PCI,התקני PCI,PCI,System Information
+-Keywords[hr]=PCI,PCI-Devices,PCI-Bus,System Information,PCI uređaji,PCI sabirnica,Podaci o sustavu
+-Keywords[hu]=PCI,PCI-eszközök,PCI-busz,rendszerinformáció
+-Keywords[is]=PCI-tæki,PCI-braut,kerfi,upplýsingar
+-Keywords[it]=PCI,dispositivi PCI,bus PCI,informazioni sul sistema
+-Keywords[ja]=PCI,PCI-デバイス,PCI-バス,システムの情報
+-Keywords[km]=PCI ឧបករណ៍ PCI ខ្សែ​បញ្ជូន PCI ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=PCI,PCI 장치,PCI 버스,시스템 정보
+-Keywords[lt]=PCI,PCI-įrenginiai,PCI-Bus,Sistemos Informacija
+-Keywords[lv]=PCI,PCI-Iekārtas,PCI-Šina,Sistēmas Informācija
+-Keywords[mk]=PCI,PCI-Devices,PCI-Bus,System Information,PCI уреди,PCI магистрала,PCI собирница,Информации за системот
+-Keywords[nb]=PCI,PCI-enheter,PCI-buss,Systeminformasjon
+-Keywords[nds]=PCI,PCI-Reedschappen,PCI Bus,Systeeminformatschoon
+-Keywords[ne]=पीसीआई, पीसीआई-यन्त्र, पीसीआई-बस, प्रणाली सूचना
+-Keywords[nl]=PCI,PCI-devices,PCI-bus,systeeminformatie,PCI-apparaten
+-Keywords[nn]=PCI,PCI-einingar,PCI-buss,systeminformasjon
+-Keywords[pa]=PCI,PCI-ਜੰਤਰ,PCI-Bus,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=PCI,urządzenia PCI,magistrala PCI,informacja o systemie
+-Keywords[pt]=PCI,dispositivos PCI,bus PCI,informações do sistema
+-Keywords[pt_BR]=PCI,dispositivos PCI,Barramento PCI,Barramento PCI,Informações de sistema
+-Keywords[ro]=PCI,dispozitive PCI,bus PCI,informaţii despre sistem
+-Keywords[se]=PCI,PCI-ovttadagat,PCI-bussa,vuogádatdiehtu
+-Keywords[sl]=PCI,naprave PCI,vodilo PCI,informacije o sistemu
+-Keywords[sr]=PCI,PCI-Devices,PCI-Bus,System Information,ПЦИ,ПЦИ уређаји,ПЦИ магистрала,системске информације,системски подаци
+-Keywords[sr at latin]=PCI,PCI-Devices,PCI-Bus,System Information,PCI,PCI uređaji,PCI magistrala,sistemske informacije,sistemski podaci
+-Keywords[sv]=PCI,PCI-enheter,PCI-buss,Systeminformation
+-Keywords[ta]=PCI,PCI-சாதனங்கள்,PCI-பஸ்,சாதன தகவல்
+-Keywords[th]=PCI,อุปกรณ์ PCI,บัส PCI,ข้อมูลระบบ
+-Keywords[tr]=PCI,PCI-Aygıtları,PCI-Bus,Sistem Hakkında Bilgi
+-Keywords[uk]=PCI,пристрої PCI,шина PCI,системна інформація
+-Keywords[uz]=PCI,PCI ускуналари,PCI-Bus,Тизим ҳақида маълумот
+-Keywords[vi]=PCI,Thiết bị PCI,Bộ nối PCI,Thông tin Hệ thống
+-Keywords[wa]=PCI,édnjins PCI,bus PCI,Infôrmåcion sol sistinme
+-Keywords[x-test]=xxPCI,PCI-Devices,PCI-Bus,System Informationxx
+-Keywords[xh]=PCI,PCI-Amacebo,PCI-Ibhasi,Ulwazi lwendlela
+-Keywords[zh_CN]=PCI,PCI-Devices,PCI-Bus,System Information,PCI 设备,PCI 总线,系统信息
+-Keywords[zh_TW]=PCI,PCI-Devices,PCI-Bus,System Information,PCI 設備,PCI 匯流排,系統資訊
++X-KDE-Keywords=PCI,PCI-Devices,PCI-Bus,System Information
++X-KDE-Keywords[af]=PCI,PCI-Devices,PCI-Bus,System Informasie
++X-KDE-Keywords[be]=Прылады PCI,Сістэмная інфармацыя,PCI,PCI-Devices,PCI-Bus,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, шина, PCI, PCI-Devices, PCI-Bus, System Information
++X-KDE-Keywords[br]=PCI,trobarzhelloù PCI,bus PCI,titouroù reizhiad
++X-KDE-Keywords[ca]=PCI,Dispositius PCI,Bus PCI,Informació del sistema
++X-KDE-Keywords[cs]=PCI,PCI-zařízení,PCI-sběrnice,Informace o systému
++X-KDE-Keywords[csb]=PCI,ùrządzenia PCI,magistrala PCI,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=PCI,Dyfeisiau-PCI,Bws-PCI,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=PCI,PCI-enheder,PCI-bus,Systeminformation
++X-KDE-Keywords[de]=PCI,PCI-Geräte,PCI-Bus,Systeminformation
++X-KDE-Keywords[el]=PCI,Συσκευές PCI,Δίαυλος PCI,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=PCI,aparato,buso,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=PCI,Dispositivos PCI,Bus PCI,Información del sistema
++X-KDE-Keywords[et]=PCI,PCi seadmed,PCI siin,Süsteemi info
++X-KDE-Keywords[eu]=PCI,PCI-gailuak,PCI busa,Sistemaren informazioa
++X-KDE-Keywords[fa]=PCI ،دستگاههای PCI ،گذرگاه PCI ،اطلاعات سیستم
++X-KDE-Keywords[fi]=PCI,PCI-Laitteet,PCI-Väylä,Järjestelmätiedot
++X-KDE-Keywords[fr]=PCI,périphériques PCI,bus PCI,informations système,pci
++X-KDE-Keywords[fy]=PCI,PCI-devices,PCI-bus,systeemynformaasje,PCI-apparaten
++X-KDE-Keywords[gl]=PCI,Dispositivos PCI,Bus PCI,Información do Sistema
++X-KDE-Keywords[he]=מידע מערכת,אפיק PCI,התקני PCI,PCI,System Information
++X-KDE-Keywords[hr]=PCI,PCI-Devices,PCI-Bus,System Information,PCI uređaji,PCI sabirnica,Podaci o sustavu
++X-KDE-Keywords[hu]=PCI,PCI-eszközök,PCI-busz,rendszerinformáció
++X-KDE-Keywords[is]=PCI-tæki,PCI-braut,kerfi,upplýsingar
++X-KDE-Keywords[it]=PCI,dispositivi PCI,bus PCI,informazioni sul sistema
++X-KDE-Keywords[ja]=PCI,PCI-デバイス,PCI-バス,システムの情報
++X-KDE-Keywords[km]=PCI ឧបករណ៍ PCI ខ្សែ​បញ្ជូន PCI ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=PCI,PCI 장치,PCI 버스,시스템 정보
++X-KDE-Keywords[lt]=PCI,PCI-įrenginiai,PCI-Bus,Sistemos Informacija
++X-KDE-Keywords[lv]=PCI,PCI-Iekārtas,PCI-Šina,Sistēmas Informācija
++X-KDE-Keywords[mk]=PCI,PCI-Devices,PCI-Bus,System Information,PCI уреди,PCI магистрала,PCI собирница,Информации за системот
++X-KDE-Keywords[nb]=PCI,PCI-enheter,PCI-buss,Systeminformasjon
++X-KDE-Keywords[nds]=PCI,PCI-Reedschappen,PCI Bus,Systeeminformatschoon
++X-KDE-Keywords[ne]=पीसीआई, पीसीआई-यन्त्र, पीसीआई-बस, प्रणाली सूचना
++X-KDE-Keywords[nl]=PCI,PCI-devices,PCI-bus,systeeminformatie,PCI-apparaten
++X-KDE-Keywords[nn]=PCI,PCI-einingar,PCI-buss,systeminformasjon
++X-KDE-Keywords[pa]=PCI,PCI-ਜੰਤਰ,PCI-Bus,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=PCI,urządzenia PCI,magistrala PCI,informacja o systemie
++X-KDE-Keywords[pt]=PCI,dispositivos PCI,bus PCI,informações do sistema
++X-KDE-Keywords[pt_BR]=PCI,dispositivos PCI,Barramento PCI,Barramento PCI,Informações de sistema
++X-KDE-Keywords[ro]=PCI,dispozitive PCI,bus PCI,informaţii despre sistem
++X-KDE-Keywords[se]=PCI,PCI-ovttadagat,PCI-bussa,vuogádatdiehtu
++X-KDE-Keywords[sl]=PCI,naprave PCI,vodilo PCI,informacije o sistemu
++X-KDE-Keywords[sr]=PCI,PCI-Devices,PCI-Bus,System Information,ПЦИ,ПЦИ уређаји,ПЦИ магистрала,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=PCI,PCI-Devices,PCI-Bus,System Information,PCI,PCI uređaji,PCI magistrala,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=PCI,PCI-enheter,PCI-buss,Systeminformation
++X-KDE-Keywords[ta]=PCI,PCI-சாதனங்கள்,PCI-பஸ்,சாதன தகவல்
++X-KDE-Keywords[th]=PCI,อุปกรณ์ PCI,บัส PCI,ข้อมูลระบบ
++X-KDE-Keywords[tr]=PCI,PCI-Aygıtları,PCI-Bus,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=PCI,пристрої PCI,шина PCI,системна інформація
++X-KDE-Keywords[uz]=PCI,PCI ускуналари,PCI-Bus,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=PCI,Thiết bị PCI,Bộ nối PCI,Thông tin Hệ thống
++X-KDE-Keywords[wa]=PCI,édnjins PCI,bus PCI,Infôrmåcion sol sistinme
++X-KDE-Keywords[x-test]=xxPCI,PCI-Devices,PCI-Bus,System Informationxx
++X-KDE-Keywords[xh]=PCI,PCI-Amacebo,PCI-Ibhasi,Ulwazi lwendlela
++X-KDE-Keywords[zh_CN]=PCI,PCI-Devices,PCI-Bus,System Information,PCI 设备,PCI 总线,系统信息
++X-KDE-Keywords[zh_TW]=PCI,PCI-Devices,PCI-Bus,System Information,PCI 設備,PCI 匯流排,系統資訊
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/interrupts.desktop
++++ b/kcontrol/infocenter/info/interrupts.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 interrupts
+ Icon=kcmmemory
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/interrupts/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/interrupts/index.html
+ Categories=Qt;KDE;X-KDE-information;
+ 
+ 
+@@ -49,7 +48,7 @@
+ Name[nb]=Avbruddslinjer
+ Name[ne]=रोकावट
+ Name[nn]=Avbrot
+-Name[pa]=ਰੁਕਾਵਟ
++Name[pa]=ਇੰਟਰਰੱਪਟ
+ Name[pl]=Przerwania
+ Name[pt]=Interrupções
+ Name[pt_BR]=Interrupções
+@@ -115,7 +114,7 @@
+ Comment[ne]=रोकावट सूचना
+ Comment[nl]=Interrupt-informatie
+ Comment[nn]=Avbrotsinformasjon
+-Comment[pa]=ਰੁਕਾਵਟ ਜਾਣਕਾਰੀ
++Comment[pa]=ਇੰਟਰਰੱਪਟ ਜਾਣਕਾਰੀ
+ Comment[pl]=Informacje o przerwaniach
+ Comment[pt]=Informação das interrupções
+ Comment[pt_BR]=Informações sobre as interrupções
+@@ -139,64 +138,64 @@
+ Comment[zh_CN]=中断信息
+ Comment[zh_TW]=中斷資訊
+ 
+-Keywords=Interrupts,IRQ,System Information
+-Keywords[af]=Interrupts,IRQ,System Informasie
+-Keywords[be]=Перапыненні,сістэмная інфармацыя,Interrupts,IRQ,System Information
+-Keywords[bg]=Keywords=информация, система, системна, прекъсване, прекъсвания, програмни, Interrupts, IRQ, System Information
+-Keywords[br]=spanoù,IRQ,titouroù reizhiad
+-Keywords[ca]=Interrupcions, IRQ, informació del sistema
+-Keywords[cs]=Přerušení,IRQ,Informace o systému
+-Keywords[csb]=Przerwania,IRQ,wëdowiédzô ò systemie
+-Keywords[cy]=Ymyriadau,IRQ,Gwybodaeth Cysawd
+-Keywords[da]=Interrupts,IRQ,Systeminformation
+-Keywords[de]=Interrupts,IRQ,Systeminformation
+-Keywords[el]=Διακοπές,IRQ,Πληροφορίες συστήματος
+-Keywords[eo]=Interrompoj,IRQ,sistemo,informo,operaciumo
+-Keywords[es]=Interrupciones,IRQ,Información del sistema
+-Keywords[et]=Katkestused,IRQ,Süsteemi info
+-Keywords[eu]=Etenaldiak,IRQ,Sistemaren informazioa
+-Keywords[fa]=وقفه‌ها، IRQ، اطلاعات سیستم
+-Keywords[fi]=Keskeytykset,IRQ,Järjestelmätiedot
+-Keywords[fr]=interruptions,IRQ,informations système,irq
+-Keywords[fy]=Underbrekkings,IRQ,systeemynformaasje
+-Keywords[ga]=Idirbhristeacha,IRQ,Eolas faoin Chórais
+-Keywords[gl]=Interrupcións,IRQ,Información do Sistema
+-Keywords[he]=בקשת פסיקה,מידע מערכת,IRQ,פסיקה,Interrupts,IRQ,System Information
+-Keywords[hr]=Interrupts,IRQ,System Information,Presretanja,Podaci o sustavu
+-Keywords[hu]=megszakítások,IRQ,rendszerinformáció
+-Keywords[is]=rofbeiðni,ígrip,IRQ,Interrupt,kerfi,upplýsingar
+-Keywords[it]=interrupt,IRQ,informazioni sul sistema
+-Keywords[ja]=割り込み,IRQ,システムの情報
+-Keywords[ka]=წყვიტავს,IRQ,ინფორმაცია სისტემის შესახებ
+-Keywords[km]=ផ្អាក IRQ ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=인터럽트,IRQ,시스템 정보
+-Keywords[lt]=Pertrauktys,IRQ,Sistemos Informacija
+-Keywords[lv]=Pārtraukumi,IRQ,Sistēmas Informācija
+-Keywords[mk]=Interrupts,IRQ,System Information,Прекини,Информации за системот
+-Keywords[nb]=Avbrudd,IRQ,Systeminformasjon
+-Keywords[nds]=Interrupts,IRQ,Systeeminformatschoon
+-Keywords[ne]=रोकावट, आईआरक्यू, प्रणाली सूचना
+-Keywords[nl]=interrupts,IRQ,systeeminformatie
+-Keywords[nn]=avbrot,IRQ,systeminformasjon
+-Keywords[pa]=Interrupts,IRQ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਰੁਕਾਵਟ
+-Keywords[pl]=Przerwania,IRQ,informacja o systemie
+-Keywords[pt]=interrupções,IRQ,informações sobre o sistema
+-Keywords[pt_BR]=Interrupções,IRQ,Informações do sistema
+-Keywords[ro]=întreruperi,IRQ,informaţii despre sistem
+-Keywords[se]=Gaskkaldumit,IRQ,vuogádatdieđut
+-Keywords[sl]=prekinitve,IRQ,sistemski podatki
+-Keywords[sr]=Interrupts,IRQ,System Information,прекиди,системске информације,системски подаци,ИРКу
+-Keywords[sr at latin]=Interrupts,IRQ,System Information,prekidi,sistemske informacije,sistemski podaci,IRQ
+-Keywords[sv]=Avbrott,IRQ,Systeminformation
+-Keywords[ta]=குறுக்கீடுகள்,IRQ, கணினித் தகவல்
+-Keywords[te]=ఇంటెరప్ట్, ఐ ఆర్ క్యు, వ్యవస్థ సమాచారం
+-Keywords[th]=อินเตอร์รัพต์,IRQ,ข้อมูลระบบ
+-Keywords[tr]=Kesmeler,IRQ,Sistem hakkında bilgi
+-Keywords[uk]=перепини,interrupts,irq,system-information
+-Keywords[uz]=Тўхталишлар,IRQ,Тизим ҳақида маълумот
+-Keywords[vi]=Gián đoạn,IRQ,Thông tin Hệ thống
+-Keywords[x-test]=xxInterrupts,IRQ,System Informationxx
+-Keywords[xh]=Iziphazamiso,IRQ,Ulwazi lwendlela
+-Keywords[zh_CN]=Interrupts,IRQ,System Information,中断,系统信息
+-Keywords[zh_TW]=Interrupts,IRQ,System Information,中斷,系統資訊
++X-KDE-Keywords=Interrupts,IRQ,System Information
++X-KDE-Keywords[af]=Interrupts,IRQ,System Informasie
++X-KDE-Keywords[be]=Перапыненні,сістэмная інфармацыя,Interrupts,IRQ,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, прекъсване, прекъсвания, програмни, Interrupts, IRQ, System Information
++X-KDE-Keywords[br]=spanoù,IRQ,titouroù reizhiad
++X-KDE-Keywords[ca]=Interrupcions, IRQ, informació del sistema
++X-KDE-Keywords[cs]=Přerušení,IRQ,Informace o systému
++X-KDE-Keywords[csb]=Przerwania,IRQ,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=Ymyriadau,IRQ,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=Interrupts,IRQ,Systeminformation
++X-KDE-Keywords[de]=Interrupts,IRQ,Systeminformation
++X-KDE-Keywords[el]=Διακοπές,IRQ,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=Interrompoj,IRQ,sistemo,informo,operaciumo
++X-KDE-Keywords[es]=Interrupciones,IRQ,Información del sistema
++X-KDE-Keywords[et]=Katkestused,IRQ,Süsteemi info
++X-KDE-Keywords[eu]=Etenaldiak,IRQ,Sistemaren informazioa
++X-KDE-Keywords[fa]=وقفه‌ها، IRQ، اطلاعات سیستم
++X-KDE-Keywords[fi]=Keskeytykset,IRQ,Järjestelmätiedot
++X-KDE-Keywords[fr]=interruptions,IRQ,informations système,irq
++X-KDE-Keywords[fy]=Underbrekkings,IRQ,systeemynformaasje
++X-KDE-Keywords[ga]=Idirbhristeacha,IRQ,Eolas faoin Chórais
++X-KDE-Keywords[gl]=Interrupcións,IRQ,Información do Sistema
++X-KDE-Keywords[he]=בקשת פסיקה,מידע מערכת,IRQ,פסיקה,Interrupts,IRQ,System Information
++X-KDE-Keywords[hr]=Interrupts,IRQ,System Information,Presretanja,Podaci o sustavu
++X-KDE-Keywords[hu]=megszakítások,IRQ,rendszerinformáció
++X-KDE-Keywords[is]=rofbeiðni,ígrip,IRQ,Interrupt,kerfi,upplýsingar
++X-KDE-Keywords[it]=interrupt,IRQ,informazioni sul sistema
++X-KDE-Keywords[ja]=割り込み,IRQ,システムの情報
++X-KDE-Keywords[ka]=წყვიტავს,IRQ,ინფორმაცია სისტემის შესახებ
++X-KDE-Keywords[km]=ផ្អាក IRQ ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=인터럽트,IRQ,시스템 정보
++X-KDE-Keywords[lt]=Pertrauktys,IRQ,Sistemos Informacija
++X-KDE-Keywords[lv]=Pārtraukumi,IRQ,Sistēmas Informācija
++X-KDE-Keywords[mk]=Interrupts,IRQ,System Information,Прекини,Информации за системот
++X-KDE-Keywords[nb]=Avbrudd,IRQ,Systeminformasjon
++X-KDE-Keywords[nds]=Interrupts,IRQ,Systeeminformatschoon
++X-KDE-Keywords[ne]=रोकावट, आईआरक्यू, प्रणाली सूचना
++X-KDE-Keywords[nl]=interrupts,IRQ,systeeminformatie
++X-KDE-Keywords[nn]=avbrot,IRQ,systeminformasjon
++X-KDE-Keywords[pa]=Interrupts,IRQ,ਸਿਸਟਮ ਜਾਣਕਾਰੀ,ਰੁਕਾਵਟ
++X-KDE-Keywords[pl]=Przerwania,IRQ,informacja o systemie
++X-KDE-Keywords[pt]=interrupções,IRQ,informações sobre o sistema
++X-KDE-Keywords[pt_BR]=Interrupções,IRQ,Informações do sistema
++X-KDE-Keywords[ro]=întreruperi,IRQ,informaţii despre sistem
++X-KDE-Keywords[se]=Gaskkaldumit,IRQ,vuogádatdieđut
++X-KDE-Keywords[sl]=prekinitve,IRQ,sistemski podatki
++X-KDE-Keywords[sr]=Interrupts,IRQ,System Information,прекиди,системске информације,системски подаци,ИРКу
++X-KDE-Keywords[sr at latin]=Interrupts,IRQ,System Information,prekidi,sistemske informacije,sistemski podaci,IRQ
++X-KDE-Keywords[sv]=Avbrott,IRQ,Systeminformation
++X-KDE-Keywords[ta]=குறுக்கீடுகள்,IRQ, கணினித் தகவல்
++X-KDE-Keywords[te]=ఇంటెరప్ట్, ఐ ఆర్ క్యు, వ్యవస్థ సమాచారం
++X-KDE-Keywords[th]=อินเตอร์รัพต์,IRQ,ข้อมูลระบบ
++X-KDE-Keywords[tr]=Kesmeler,IRQ,Sistem hakkında bilgi
++X-KDE-Keywords[uk]=перепини,interrupts,irq,system-information
++X-KDE-Keywords[uz]=Тўхталишлар,IRQ,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=Gián đoạn,IRQ,Thông tin Hệ thống
++X-KDE-Keywords[x-test]=xxInterrupts,IRQ,System Informationxx
++X-KDE-Keywords[xh]=Iziphazamiso,IRQ,Ulwazi lwendlela
++X-KDE-Keywords[zh_CN]=Interrupts,IRQ,System Information,中断,系统信息
++X-KDE-Keywords[zh_TW]=Interrupts,IRQ,System Information,中斷,系統資訊
+ 
+--- a/kcontrol/infocenter/info/opengl.desktop
++++ b/kcontrol/infocenter/info/opengl.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 opengl
+ Icon=kcmopengl
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/opengl/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/opengl/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -83,54 +82,54 @@
+ Comment[zh_CN]=OpenGL 信息
+ Comment[zh_TW]=OpenGL 資訊
+ 
+-Keywords=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
+-Keywords[be]=Відэакарта,паскарэнне,графіка,сервер X,дысплей,экран,OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
+-Keywords[bg]=Keywords=видеокарта, хардуер,екран, ускорение, графика, OpenGL, DRI, GLX, 3D, VideoCard, Hardware Acceleration, Graphics, X, X11, Xserver, X-Server, XFree86, Display
+-Keywords[ca]=OpenGL,DRI,GLX,3D,Targeta de vídeo,Hardware Acceleració,Gràfics,X,X11,Xserver,Servidor X,XFree86,Pantalla
+-Keywords[cs]=OpenGL,DRI,GLX,3D,videokarta,akcelerace,grafika,X,X11,Xserver,X-Server,XFree86,Display
+-Keywords[csb]=OpenGL,DRI,GLX,3D,graficznô karta,grafika,X,X11,Xserver,X-Server,XFree86,ekran
+-Keywords[da]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Grafik,X,X11,Xserver,X-Server,XFree86,Skærm
+-Keywords[el]=OpenGL,DRI,GLX,3D,Κάρτα Γραφικών,Υλικό Επιτάχυνση,Γραφικά,X,X11,Xserver,X-Server,XFree86,Οθόνη
+-Keywords[eo]=OpenGL,DRI,GLX,3D,VideoCard,Hardware akcelo,grafikoj,X,X11,Xserver,X-Server,XFree86,ekrano
+-Keywords[es]=OpenGL,DRI,GLX,3D,Tarjeta, Grafica,Hardware Aceleradora,Gráficos,X,X11,Xserver,X-Server,XFree86,Monitor
+-Keywords[et]=OpenGL,DRI,GLX,3D,Videokaart,Riistvaraline kiirendus,Graafika,X,X11,Xserver,X-Server,XFree86,Kuva
+-Keywords[fa]=OpenGL، DRI، GLX، سه بعدی، کارت ویدیو، شتاب‌دهی سخت‌افزار، نگاره‌ای ، X، X11، Xserver، کارساز، XFree86، صفحه نمایش
+-Keywords[fr]=OpenGL,DRI,GLX,3D,carte graphique,carte vidéo,accélération matérielle,graphismes,X,X11,serveur X,XServer,XFree86,affichage
+-Keywords[fy]=OpenGL,DRI,GLX,3D,grafyske kaart,hurd guod -fersnelling,grafysk,graphics,X,X11,Xserver,X-Server,XFree86,display,byldskerm
+-Keywords[ga]=OpenGL,DRI,GLX,3D,FísChárta,Luasú Crua-Earraí,Grafaic,X,X11,Freastalaí-X,XFree86,Scáileán
+-Keywords[gl]=OpenGL,DRI,GLX,3D,Tarxeta de Vídeo,Aceleración por Hardware,Graficos,X,X11,Xserver,X-Server,XFree86,Display,Pantalla
+-Keywords[he]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration, Graphics,X,X11,Xserver,X-Server,XFree86,Display,האצה, כרטיס, כרטיס מסך, מסך, תצוגה
+-Keywords[hr]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Video kartica,Grafička kartica,Hradversko ubrzavanje,Grafika,X poslužitelj,Zaslon
+-Keywords[hu]=OpenGL,DRI,GLX,3D,videokártya,hardveres gyorsítás,grafika,X,X11,Xserver,X-Server,XFree86,képernyő
+-Keywords[is]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,vélbúnaðarhröðun,Graphics,grafík,X,X11,Xserver,Xþjónn, X-Server,X-þjónn,XFree86,Display,skjár
+-Keywords[it]=OpenGL,DRI,GLX,3D,SchedaVideo,Video,Accelerazione Hardware,Grafica,X,X11,Xserver,X-Server,XFree86,Display,Server X
+-Keywords[ka]=OpenGL,DRI,GLX,3D,ვიდეოდაფა,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
+-Keywords[km]=OpenGL DRI GLX ត្រីមាត្រ កាាត​វីដេអ ,ការ​បង្កើន​ល្បឿន​ផ្នែក​រឹ ,ក្រាហ្វិ , ,X1 ,Xserve ,ម៉ាស៊ីន​បម្រើ  XFree8 ,ការ​បង្ហាញ
+-Keywords[ko]=OpenGL,DRI,GLX,3D,비디오 카드,하드웨어 가속,그래픽,X11,X 서버,디스플레이
+-Keywords[lt]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Video plokštė,aparatūros greitinimas,grafika
+-Keywords[lv]=OpenGL,DRI,GLX,3D,VideoKarte,Dzelžu paātrināšana,Grafika,X,X11,Xserveris,X-Serveris,XFree86,Ekrāns
+-Keywords[mk]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Видео-картичка,Хардверско забрзување,Графика,екран,приказ
+-Keywords[nb]=OpenGL,DRI,GLX,3D,skjermkort,maskinvareakselerasjon,grafikk,X,X11,X-tenar,XFree86,skjerm
+-Keywords[nds]=OpenGL,DRI,GLX,3D,Videokort,Hardware Acceleration,Grafik,X,X11,Xserver,X-Server,XFree86,Display,Dorstellen,Beslünigen
+-Keywords[ne]=खुला GL, DRI, GLX, त्रि-आयमिक,भिडियो कार्ड, हार्डवेयर गतिवर्धन, ग्राफिक्स, X, X11, Xसर्भर, X-सर्भर, X स्वतन्त्र 86, प्रदर्शन गर्नुहोस्
+-Keywords[nl]=OpenGL,DRI,GLX,3D,videokaart,hardware-acceleratie,grafisch,graphics,X,X11,Xserver,X-Server,XFree86,display,beeldscherm
+-Keywords[nn]=OpenGL,DRI,GLX,3D,skjermkort,maskinvareakselerasjon,grafikk,X,X11,X-tenar,XFree86,skjerm
+-Keywords[pa]=OpenGL,DRI,GLX,3D,ਵੀਡਿਓਕਾਰਡ, ਹਾਰਡਵੇਅਰ ਪਰਵੇਸ਼ਕ,ਗਰਾਫਿਕਸ,X,X11,Xserver,X-Server,XFree86,ਦਰਿਸ਼
+-Keywords[pl]=OpenGL,DRI,GLX,3D,karta graficzna,grafika,X,X11,Xserver,X-Server,XFree86,ekran
+-Keywords[pt]=OpenGL,DRI,GLX,3D,Placa Vídeo,Aceleração por Hardware,Gráficos,X,X11,Servidor X,XFree86,Ecrã
+-Keywords[pt_BR]=OpenGL,DRI,GLX,3D,Placa de Vídeo,Aceleração de Hardware,Gráficos,X,X11,Servidor X,X Server,XFree86,Display
+-Keywords[ro]=OpenGL,DRI,GLX,3D,placă video,accelerare hardware,grafică,X,X11,Xserver,X-Server,XFree86,monitor
+-Keywords[sl]=OpenGL,DRI,GLX,3D,Strojna pospešitev,Grafika,X,X11,Xserver,X-Server,X-stežnik,X,XFree86,Zaslon
+-Keywords[sr]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,опенГЛ,видео картица,хардверско убрзање,графика,Икс,Икс11,ГЛИкс,ДРИ,3Д,хардвер
+-Keywords[sr at latin]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,OpenGL,video kartica,hardversko ubrzanje,grafika,X,X11,GLX,DRI,3D,hardver
+-Keywords[sv]=OpenGL,DRI,GLX,3D,videokort,hårdvaruacceleration,grafik,X,X11,Xserver,X-server,Xfree86,skärm
+-Keywords[ta]=ஓபன் ஜிஎல்,டிஆரை,ஜிஎல்X,முப்பரிமாணம்,வீடியோஅட்டை,வன்பொருள் முடுக்கம்,சித்திரங்கள்,X,X11,Xசேவகன்,X-சேவகன்,XFree86,காட்டு
+-Keywords[th]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,จอแสดงผล
+-Keywords[tr]=OpenGL,DRI,GLX,3D,VideoCard,Video kartı,Donanım Hızlandırma,Grafik,X,X11,Xserver,X-Server,X-Sunucu,Xsunucu,XFree86,Görüntü
+-Keywords[uk]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,відео карта,3D акселерація,графіка,X сервер,монітор
+-Keywords[vi]=OpenGL,DRI,GLX,3D,Thẻ ảnh động,Tăng tốc Phần cứng,Đồ hoạ,X,X11,Trình phục vụ Xserver,Trình phục vụ - X,XFree86,Hiển thị
+-Keywords[x-test]=xxOpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Displayxx
+-Keywords[zh_CN]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,显卡,硬件加速,图形,X 服务器,显示
+-Keywords[zh_TW]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,顯示卡,硬體加速,圖形,顯示
++X-KDE-Keywords=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
++X-KDE-Keywords[be]=Відэакарта,паскарэнне,графіка,сервер X,дысплей,экран,OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
++X-KDE-Keywords[bg]=Keywords=видеокарта, хардуер,екран, ускорение, графика, OpenGL, DRI, GLX, 3D, VideoCard, Hardware Acceleration, Graphics, X, X11, Xserver, X-Server, XFree86, Display
++X-KDE-Keywords[ca]=OpenGL,DRI,GLX,3D,Targeta de vídeo,Hardware Acceleració,Gràfics,X,X11,Xserver,Servidor X,XFree86,Pantalla
++X-KDE-Keywords[cs]=OpenGL,DRI,GLX,3D,videokarta,akcelerace,grafika,X,X11,Xserver,X-Server,XFree86,Display
++X-KDE-Keywords[csb]=OpenGL,DRI,GLX,3D,graficznô karta,grafika,X,X11,Xserver,X-Server,XFree86,ekran
++X-KDE-Keywords[da]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Grafik,X,X11,Xserver,X-Server,XFree86,Skærm
++X-KDE-Keywords[el]=OpenGL,DRI,GLX,3D,Κάρτα Γραφικών,Υλικό Επιτάχυνση,Γραφικά,X,X11,Xserver,X-Server,XFree86,Οθόνη
++X-KDE-Keywords[eo]=OpenGL,DRI,GLX,3D,VideoCard,Hardware akcelo,grafikoj,X,X11,Xserver,X-Server,XFree86,ekrano
++X-KDE-Keywords[es]=OpenGL,DRI,GLX,3D,Tarjeta, Grafica,Hardware Aceleradora,Gráficos,X,X11,Xserver,X-Server,XFree86,Monitor
++X-KDE-Keywords[et]=OpenGL,DRI,GLX,3D,Videokaart,Riistvaraline kiirendus,Graafika,X,X11,Xserver,X-Server,XFree86,Kuva
++X-KDE-Keywords[fa]=OpenGL، DRI، GLX، سه بعدی، کارت ویدیو، شتاب‌دهی سخت‌افزار، نگاره‌ای ، X، X11، Xserver، کارساز، XFree86، صفحه نمایش
++X-KDE-Keywords[fr]=OpenGL,DRI,GLX,3D,carte graphique,carte vidéo,accélération matérielle,graphismes,X,X11,serveur X,XServer,XFree86,affichage
++X-KDE-Keywords[fy]=OpenGL,DRI,GLX,3D,grafyske kaart,hurd guod -fersnelling,grafysk,graphics,X,X11,Xserver,X-Server,XFree86,display,byldskerm
++X-KDE-Keywords[ga]=OpenGL,DRI,GLX,3D,FísChárta,Luasú Crua-Earraí,Grafaic,X,X11,Freastalaí-X,XFree86,Scáileán
++X-KDE-Keywords[gl]=OpenGL,DRI,GLX,3D,Tarxeta de Vídeo,Aceleración por Hardware,Graficos,X,X11,Xserver,X-Server,XFree86,Display,Pantalla
++X-KDE-Keywords[he]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration, Graphics,X,X11,Xserver,X-Server,XFree86,Display,האצה, כרטיס, כרטיס מסך, מסך, תצוגה
++X-KDE-Keywords[hr]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Video kartica,Grafička kartica,Hradversko ubrzavanje,Grafika,X poslužitelj,Zaslon
++X-KDE-Keywords[hu]=OpenGL,DRI,GLX,3D,videokártya,hardveres gyorsítás,grafika,X,X11,Xserver,X-Server,XFree86,képernyő
++X-KDE-Keywords[is]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,vélbúnaðarhröðun,Graphics,grafík,X,X11,Xserver,Xþjónn, X-Server,X-þjónn,XFree86,Display,skjár
++X-KDE-Keywords[it]=OpenGL,DRI,GLX,3D,SchedaVideo,Video,Accelerazione Hardware,Grafica,X,X11,Xserver,X-Server,XFree86,Display,Server X
++X-KDE-Keywords[ka]=OpenGL,DRI,GLX,3D,ვიდეოდაფა,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display
++X-KDE-Keywords[km]=OpenGL DRI GLX ត្រីមាត្រ កាាត​វីដេអ ,ការ​បង្កើន​ល្បឿន​ផ្នែក​រឹ ,ក្រាហ្វិ , ,X1 ,Xserve ,ម៉ាស៊ីន​បម្រើ  XFree8 ,ការ​បង្ហាញ
++X-KDE-Keywords[ko]=OpenGL,DRI,GLX,3D,비디오 카드,하드웨어 가속,그래픽,X11,X 서버,디스플레이
++X-KDE-Keywords[lt]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Video plokštė,aparatūros greitinimas,grafika
++X-KDE-Keywords[lv]=OpenGL,DRI,GLX,3D,VideoKarte,Dzelžu paātrināšana,Grafika,X,X11,Xserveris,X-Serveris,XFree86,Ekrāns
++X-KDE-Keywords[mk]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,Видео-картичка,Хардверско забрзување,Графика,екран,приказ
++X-KDE-Keywords[nb]=OpenGL,DRI,GLX,3D,skjermkort,maskinvareakselerasjon,grafikk,X,X11,X-tenar,XFree86,skjerm
++X-KDE-Keywords[nds]=OpenGL,DRI,GLX,3D,Videokort,Hardware Acceleration,Grafik,X,X11,Xserver,X-Server,XFree86,Display,Dorstellen,Beslünigen
++X-KDE-Keywords[ne]=खुला GL, DRI, GLX, त्रि-आयमिक,भिडियो कार्ड, हार्डवेयर गतिवर्धन, ग्राफिक्स, X, X11, Xसर्भर, X-सर्भर, X स्वतन्त्र 86, प्रदर्शन गर्नुहोस्
++X-KDE-Keywords[nl]=OpenGL,DRI,GLX,3D,videokaart,hardware-acceleratie,grafisch,graphics,X,X11,Xserver,X-Server,XFree86,display,beeldscherm
++X-KDE-Keywords[nn]=OpenGL,DRI,GLX,3D,skjermkort,maskinvareakselerasjon,grafikk,X,X11,X-tenar,XFree86,skjerm
++X-KDE-Keywords[pa]=OpenGL,DRI,GLX,3D,ਵੀਡਿਓਕਾਰਡ, ਹਾਰਡਵੇਅਰ ਪਰਵੇਸ਼ਕ,ਗਰਾਫਿਕਸ,X,X11,Xserver,X-Server,XFree86,ਦਰਿਸ਼
++X-KDE-Keywords[pl]=OpenGL,DRI,GLX,3D,karta graficzna,grafika,X,X11,Xserver,X-Server,XFree86,ekran
++X-KDE-Keywords[pt]=OpenGL,DRI,GLX,3D,Placa Vídeo,Aceleração por Hardware,Gráficos,X,X11,Servidor X,XFree86,Ecrã
++X-KDE-Keywords[pt_BR]=OpenGL,DRI,GLX,3D,Placa de Vídeo,Aceleração de Hardware,Gráficos,X,X11,Servidor X,X Server,XFree86,Display
++X-KDE-Keywords[ro]=OpenGL,DRI,GLX,3D,placă video,accelerare hardware,grafică,X,X11,Xserver,X-Server,XFree86,monitor
++X-KDE-Keywords[sl]=OpenGL,DRI,GLX,3D,Strojna pospešitev,Grafika,X,X11,Xserver,X-Server,X-stežnik,X,XFree86,Zaslon
++X-KDE-Keywords[sr]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,опенГЛ,видео картица,хардверско убрзање,графика,Икс,Икс11,ГЛИкс,ДРИ,3Д,хардвер
++X-KDE-Keywords[sr at latin]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,OpenGL,video kartica,hardversko ubrzanje,grafika,X,X11,GLX,DRI,3D,hardver
++X-KDE-Keywords[sv]=OpenGL,DRI,GLX,3D,videokort,hårdvaruacceleration,grafik,X,X11,Xserver,X-server,Xfree86,skärm
++X-KDE-Keywords[ta]=ஓபன் ஜிஎல்,டிஆரை,ஜிஎல்X,முப்பரிமாணம்,வீடியோஅட்டை,வன்பொருள் முடுக்கம்,சித்திரங்கள்,X,X11,Xசேவகன்,X-சேவகன்,XFree86,காட்டு
++X-KDE-Keywords[th]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,จอแสดงผล
++X-KDE-Keywords[tr]=OpenGL,DRI,GLX,3D,VideoCard,Video kartı,Donanım Hızlandırma,Grafik,X,X11,Xserver,X-Server,X-Sunucu,Xsunucu,XFree86,Görüntü
++X-KDE-Keywords[uk]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,відео карта,3D акселерація,графіка,X сервер,монітор
++X-KDE-Keywords[vi]=OpenGL,DRI,GLX,3D,Thẻ ảnh động,Tăng tốc Phần cứng,Đồ hoạ,X,X11,Trình phục vụ Xserver,Trình phục vụ - X,XFree86,Hiển thị
++X-KDE-Keywords[x-test]=xxOpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Displayxx
++X-KDE-Keywords[zh_CN]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,显卡,硬件加速,图形,X 服务器,显示
++X-KDE-Keywords[zh_TW]=OpenGL,DRI,GLX,3D,VideoCard,Hardware Acceleration,Graphics,X,X11,Xserver,X-Server,XFree86,Display,顯示卡,硬體加速,圖形,顯示
+ 
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/info/scsi.desktop
++++ b/kcontrol/infocenter/info/scsi.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 scsi
+ Icon=kcmscsi
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/scsi/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/scsi/index.html
+ 
+ 
+ X-KDE-Library=kcm_info
+@@ -88,63 +87,63 @@
+ Comment[zh_CN]=SCSI 信息
+ Comment[zh_TW]=SCSI 資訊
+ 
+-Keywords=SCSI,SCSI-Bus,System Information
+-Keywords[af]=SCSI,SCSI-Bus,System Informasie
+-Keywords[be]=Шына SCSI,Сістэмная інфармацыя,SCSI,SCSI-Bus,System Information
+-Keywords[bg]=Keywords=информация, система, системна, шина, SCSI, SCSI-Bus, System Information
+-Keywords[br]=SCSI,bus SCSI,titouroù reizhiad
+-Keywords[ca]=SCSI,Bus SCSI,Informació del sistema
+-Keywords[cs]=SCSI,SCSI-sběrnice,Informace o systému
+-Keywords[csb]=SCSI,magistrala SCSI,wëdowiédzô ò systemie
+-Keywords[cy]=SCSI,Bws-SCSI,Gwybodaeth Cysawd
+-Keywords[da]=SCSI,SCSI-bus,Systeminformation
+-Keywords[de]=SCSI,SCSI-Bus,Systeminformation
+-Keywords[el]=SCSI,Δίαυλος SCSI,Πληροφορίες συστήματος
+-Keywords[eo]=SCSI,buso,sistemo,operaciumo,informo
+-Keywords[es]=SCSI,Bus SCSI,Información del sistema
+-Keywords[et]=SCSI,SCSI siin,Süsteemi info
+-Keywords[eu]=SCSI,SCSI busa,Sistemaren informazioa
+-Keywords[fa]=اسکازی، گذرگاه اسکازی، اطلاعات سیستم
+-Keywords[fi]=SCSI,SCSI-Väylä,Järjestelmätiedot
+-Keywords[fr]=SCSI,bus SCSI,informations système,scsi
+-Keywords[fy]=SCSI,SCSI-bus,systeemynformaasje
+-Keywords[ga]=SCSI,Bus SCSI,Eolas faoin Chóras
+-Keywords[gl]=SCSI,Bus SCSI,Información do Sistema
+-Keywords[he]=מידע מערכת,אפיק SCSI,SCSI,SCSI-Bus,System Information
+-Keywords[hr]=SCSI,SCSI-Bus,System Information,Podaci o sustavu,SCSI sabirnica
+-Keywords[hu]=SCSI,SCSI-busz,rendszerinformáció
+-Keywords[is]=SCSI-braut,kerfi,upplýsingar
+-Keywords[it]=SCSI,bus SCSI,informazioni sul sistema
+-Keywords[ja]=SCSI,SCSI-バス,システムの情報
+-Keywords[km]=SCSI​ ខ្សែ​បញ្ជូន SCSI ព័ត៌មាន​ប្រព័ន្ធ
+-Keywords[ko]=SCSI,SCSI 버스,시스템 정보
+-Keywords[lt]=SCSI,SCSI-Bus,Sistemos Informacija
+-Keywords[lv]=SCSI,SCSI-Šina,Sistēmas Informācija
+-Keywords[mk]=SCSI,SCSI-Bus,System Information,SCSI магистрала, SCSI собирница,Информации за системот,
+-Keywords[nb]=SCSI,SCSI-buss,Systeminformasjon
+-Keywords[nds]=SCSI,SCSI-Bus,Systeeminformatschoon
+-Keywords[ne]=एससीएसआई, एससीएसआई-बस, प्रणाली सूचना
+-Keywords[nl]=SCSI,SCSI-bus,systeeminformatie
+-Keywords[nn]=SCSI,SCSI-buss,systeminformasjon
+-Keywords[pa]=SCSI,SCSI-Bus,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
+-Keywords[pl]=SCSI,magistrala SCSI,informacja o systemie
+-Keywords[pt]=SCSI,bus SCSI,informações do sistema
+-Keywords[pt_BR]=SCSI,Barramento SCSI,Informações de sistema
+-Keywords[ro]=SCSI,magistrala SCSI,bus SCSI,informaţii despre sistem
+-Keywords[se]=SCSI,SCSI-bussa,vuogádatdiehtu
+-Keywords[sl]=SCSI,vodilo SCSI,informacije o sistemu
+-Keywords[sr]=SCSI,SCSI-Bus,System Information,скази,скази магистрала,системске информације,системски подаци
+-Keywords[sr at latin]=SCSI,SCSI-Bus,System Information,SCSI,SCSI magistrala,sistemske informacije,sistemski podaci
+-Keywords[sv]=SCSI,SCSI-buss,Systeminformation
+-Keywords[ta]=SCSI,SCSI-பஸ்,அமைப்பு தகவல்
+-Keywords[th]=SCSI,บัส SCSI,ข้อมูลระบบ
+-Keywords[tr]=SCSI,SCSI-Bus,Sistem Hakkında Bilgi
+-Keywords[uk]=SCSI,шина SCSI,системна інформація
+-Keywords[uz]=SCSI,Тизим ҳақида маълумот
+-Keywords[vi]=SCSI,SCSI-Bus,Thông tin Hệ thống
+-Keywords[wa]=SCSI,bus SCSI,Infôrmåcion sol sistinme
+-Keywords[x-test]=xxSCSI,SCSI-Bus,System Informationxx
+-Keywords[xh]=SCSI,SCSI-Ibhasi,Ulwazi lwendlela
+-Keywords[zh_CN]=SCSI,SCSI-Bus,System Information,SCSI 总线,系统信息
+-Keywords[zh_TW]=SCSI,SCSI-Bus,System Information,系統資訊
++X-KDE-Keywords=SCSI,SCSI-Bus,System Information
++X-KDE-Keywords[af]=SCSI,SCSI-Bus,System Informasie
++X-KDE-Keywords[be]=Шына SCSI,Сістэмная інфармацыя,SCSI,SCSI-Bus,System Information
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, шина, SCSI, SCSI-Bus, System Information
++X-KDE-Keywords[br]=SCSI,bus SCSI,titouroù reizhiad
++X-KDE-Keywords[ca]=SCSI,Bus SCSI,Informació del sistema
++X-KDE-Keywords[cs]=SCSI,SCSI-sběrnice,Informace o systému
++X-KDE-Keywords[csb]=SCSI,magistrala SCSI,wëdowiédzô ò systemie
++X-KDE-Keywords[cy]=SCSI,Bws-SCSI,Gwybodaeth Cysawd
++X-KDE-Keywords[da]=SCSI,SCSI-bus,Systeminformation
++X-KDE-Keywords[de]=SCSI,SCSI-Bus,Systeminformation
++X-KDE-Keywords[el]=SCSI,Δίαυλος SCSI,Πληροφορίες συστήματος
++X-KDE-Keywords[eo]=SCSI,buso,sistemo,operaciumo,informo
++X-KDE-Keywords[es]=SCSI,Bus SCSI,Información del sistema
++X-KDE-Keywords[et]=SCSI,SCSI siin,Süsteemi info
++X-KDE-Keywords[eu]=SCSI,SCSI busa,Sistemaren informazioa
++X-KDE-Keywords[fa]=اسکازی، گذرگاه اسکازی، اطلاعات سیستم
++X-KDE-Keywords[fi]=SCSI,SCSI-Väylä,Järjestelmätiedot
++X-KDE-Keywords[fr]=SCSI,bus SCSI,informations système,scsi
++X-KDE-Keywords[fy]=SCSI,SCSI-bus,systeemynformaasje
++X-KDE-Keywords[ga]=SCSI,Bus SCSI,Eolas faoin Chóras
++X-KDE-Keywords[gl]=SCSI,Bus SCSI,Información do Sistema
++X-KDE-Keywords[he]=מידע מערכת,אפיק SCSI,SCSI,SCSI-Bus,System Information
++X-KDE-Keywords[hr]=SCSI,SCSI-Bus,System Information,Podaci o sustavu,SCSI sabirnica
++X-KDE-Keywords[hu]=SCSI,SCSI-busz,rendszerinformáció
++X-KDE-Keywords[is]=SCSI-braut,kerfi,upplýsingar
++X-KDE-Keywords[it]=SCSI,bus SCSI,informazioni sul sistema
++X-KDE-Keywords[ja]=SCSI,SCSI-バス,システムの情報
++X-KDE-Keywords[km]=SCSI​ ខ្សែ​បញ្ជូន SCSI ព័ត៌មាន​ប្រព័ន្ធ
++X-KDE-Keywords[ko]=SCSI,SCSI 버스,시스템 정보
++X-KDE-Keywords[lt]=SCSI,SCSI-Bus,Sistemos Informacija
++X-KDE-Keywords[lv]=SCSI,SCSI-Šina,Sistēmas Informācija
++X-KDE-Keywords[mk]=SCSI,SCSI-Bus,System Information,SCSI магистрала, SCSI собирница,Информации за системот,
++X-KDE-Keywords[nb]=SCSI,SCSI-buss,Systeminformasjon
++X-KDE-Keywords[nds]=SCSI,SCSI-Bus,Systeeminformatschoon
++X-KDE-Keywords[ne]=एससीएसआई, एससीएसआई-बस, प्रणाली सूचना
++X-KDE-Keywords[nl]=SCSI,SCSI-bus,systeeminformatie
++X-KDE-Keywords[nn]=SCSI,SCSI-buss,systeminformasjon
++X-KDE-Keywords[pa]=SCSI,SCSI-Bus,ਸਿਸਟਮ ਜਾਣਕਾਰੀ
++X-KDE-Keywords[pl]=SCSI,magistrala SCSI,informacja o systemie
++X-KDE-Keywords[pt]=SCSI,bus SCSI,informações do sistema
++X-KDE-Keywords[pt_BR]=SCSI,Barramento SCSI,Informações de sistema
++X-KDE-Keywords[ro]=SCSI,magistrala SCSI,bus SCSI,informaţii despre sistem
++X-KDE-Keywords[se]=SCSI,SCSI-bussa,vuogádatdiehtu
++X-KDE-Keywords[sl]=SCSI,vodilo SCSI,informacije o sistemu
++X-KDE-Keywords[sr]=SCSI,SCSI-Bus,System Information,скази,скази магистрала,системске информације,системски подаци
++X-KDE-Keywords[sr at latin]=SCSI,SCSI-Bus,System Information,SCSI,SCSI magistrala,sistemske informacije,sistemski podaci
++X-KDE-Keywords[sv]=SCSI,SCSI-buss,Systeminformation
++X-KDE-Keywords[ta]=SCSI,SCSI-பஸ்,அமைப்பு தகவல்
++X-KDE-Keywords[th]=SCSI,บัส SCSI,ข้อมูลระบบ
++X-KDE-Keywords[tr]=SCSI,SCSI-Bus,Sistem Hakkında Bilgi
++X-KDE-Keywords[uk]=SCSI,шина SCSI,системна інформація
++X-KDE-Keywords[uz]=SCSI,Тизим ҳақида маълумот
++X-KDE-Keywords[vi]=SCSI,SCSI-Bus,Thông tin Hệ thống
++X-KDE-Keywords[wa]=SCSI,bus SCSI,Infôrmåcion sol sistinme
++X-KDE-Keywords[x-test]=xxSCSI,SCSI-Bus,System Informationxx
++X-KDE-Keywords[xh]=SCSI,SCSI-Ibhasi,Ulwazi lwendlela
++X-KDE-Keywords[zh_CN]=SCSI,SCSI-Bus,System Information,SCSI 总线,系统信息
++X-KDE-Keywords[zh_TW]=SCSI,SCSI-Bus,System Information,系統資訊
+ Categories=Qt;KDE;X-KDE-information;
+--- a/kcontrol/infocenter/view1394/kcmview1394.desktop
++++ b/kcontrol/infocenter/view1394/kcmview1394.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=ieee1394
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/view1394/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/view1394/index.html
+ Exec=kcmshell4 kcmview1394
+ 
+ X-KDE-Library=kcm_view1394
+@@ -139,60 +138,60 @@
+ Comment[zh_CN]=查看连接到该计算机的 IEEE 1394 设备
+ Comment[zh_TW]=查看連接到這台電腦的 IEEE 1394 裝置
+ 
+-Keywords=1394,Firewire,devices,viewer,control
+-Keywords[be]=Прылады,Прылада,Прагляд,Праглядальнік,Кіраванне,1394,Firewire,devices,viewer,control
+-Keywords[bg]=Keywords=информация, система, системна, устройства, контрол, 1394, Firewire, devices, viewer, control
+-Keywords[br]=1394,Firewire,trobarzhelloù,gweller,ren
+-Keywords[ca]=1394,Firewire,dispositius,visor,control
+-Keywords[cs]=1394,Firewire,zařízení,prohlížeč,ovládání
+-Keywords[csb]=1394,Firewire,ùrządzenia,przezéranié,kòntrola
+-Keywords[cy]=1394,dyfeisiau,gwelydd,gwyliwr,rheoli
+-Keywords[da]=1394,Firewire,enheder,fremviser,kontrol
+-Keywords[de]=USB,Geräte,Geräte,Betrachter,Kontrolle
+-Keywords[el]=1394,Firewire,συσκευές,προβολέας,έλεγχος
+-Keywords[eo]=1394,aparatoj,rigardilo,stirado
+-Keywords[es]=1394,Firewire,dispositivos,visor,control
+-Keywords[et]=1394,Firewire,seadmed,näitaja,juhtimine
+-Keywords[eu]=1394,Firewire,gailuak,ikustailua,kontrola
+-Keywords[fa]=۱۳۹۴، Firewire، دستگاهها، مشاهده‌گر، کنترل
+-Keywords[fi]=1394,Firewire,laitteet,katselija,hallinta
+-Keywords[fr]=1394,Firewire,périphériques,afficheur,contrôle
+-Keywords[fy]=1394,IEEE 1394,firewire,devices,viewer,control,werjefteprogramma,apparaten,râne apparatuur
+-Keywords[ga]=1394,Firewire,gléasanna,amharcán,rialú
+-Keywords[gl]=1394,Firewire,dispositivos,visor,control
+-Keywords[he]=1394,Firewire, התקנים,מציג,בקרה, devices,viewer,control
+-Keywords[hr]=1394,Firewire,devices,viewer,control,uređaji,pregled,nadzor
+-Keywords[hu]=1394,Firewire,eszközök,megnézés,vezérlés
+-Keywords[is]=1394,Firewire,tæki,skoðari,stilling
+-Keywords[it]=1394,dispositivi,controllo,visualizza,firewire
+-Keywords[ja]=1394,Firewire,デバイス,ビューア,コントロール
+-Keywords[km]=1394 ខ្សែ​ភ្លើង ឧបករណ៍ កម្មវិធី​មើល វត្ថុ​បញ្ជា
+-Keywords[ko]=1394,Firewire,장치,제어
+-Keywords[lt]=1394,Firewire,devices,viewer,control,žiūryklė,kontrolė,įrenginiai
+-Keywords[lv]=1394,Fireware,iekārtas,skatītājs,vadība
+-Keywords[mk]=1394,Firewire,devices,viewer,control,уреди,прегледник,контрола
+-Keywords[nb]=1394,Firewire,enheter,framviser,kontroll
+-Keywords[nds]=1394,Firewire,Reedschappen,Kieker,Kuntrull
+-Keywords[ne]=1394,फायर वायर, यन्त्र, दर्शक, नियन्त्रण
+-Keywords[nl]=1394,IEEE 1394,firewire,devices,viewer,control,weergaveprogramma,apparaten,randapparatuur
+-Keywords[nn]=1394,Firewire,einingar,framvisar,kontroll
+-Keywords[pa]=1394,Firewire,ਫਾਇਰਵਾਇਰ,ਜੰਤਰ,ਦਰਸ਼ਕ,ਕੰਟਰੋਲ
+-Keywords[pl]=1394,Firewire,urządzenia,przeglądanie,kontrola
+-Keywords[pt]=1394,Firewire,dispositivos,visualizador,controlo
+-Keywords[pt_BR]=1394,Firewire,dispositivos,visualizador,controle
+-Keywords[ro]=1394,firewire,dispozitive,vizualizor,control
+-Keywords[se]=1394,Firewire,ovttadagat,čájeheaddji,stivren
+-Keywords[sl]=1394,firewire,naprave,pregledovalnik,nadzor
+-Keywords[sr]=1394,Firewire,devices,viewer,control,ИЕЕЕ 1394,фајервајер,уређаји,преглед,контрола
+-Keywords[sr at latin]=1394,Firewire,devices,viewer,control,IEEE 1394,Firewire,uređaji,pregled,kontrola
+-Keywords[sv]=1394,Firewire,enheter,visare,kontroll
+-Keywords[ta]=1394,ஃபயர்ஒயர்,சாதனங்கள்,காட்சி,கட்டுப்பாடு
+-Keywords[th]=1394,ไฟร์ไวร์,อุปกรณ์,ตัวแสดงผล,ควบคุม
+-Keywords[tr]=1394,firewire,aygıtlar,izleyici,denetim,kontrol
+-Keywords[uk]=1394,Firewire,пристрої,перегляд,керування
+-Keywords[uz]=1394,Firewire,ускуналар,кўрувчи,бошқарув
+-Keywords[vi]=1394,Firewire,thiết bị,trình xem,điều khiển
+-Keywords[wa]=1394,IEEE 1394,Firewire,éndjins,håyneu,controle,corwaitaedje
+-Keywords[x-test]=xx1394,Firewire,devices,viewer,controlxx
+-Keywords[zh_CN]=1394,Firewire,devices,viewer,control,设备,查看器,控制,火线
+-Keywords[zh_TW]=1394,Firewire,devices,viewer,control,裝置,檢視器,控制
++X-KDE-Keywords=1394,Firewire,devices,viewer,control
++X-KDE-Keywords[be]=Прылады,Прылада,Прагляд,Праглядальнік,Кіраванне,1394,Firewire,devices,viewer,control
++X-KDE-Keywords[bg]=Keywords=информация, система, системна, устройства, контрол, 1394, Firewire, devices, viewer, control
++X-KDE-Keywords[br]=1394,Firewire,trobarzhelloù,gweller,ren
++X-KDE-Keywords[ca]=1394,Firewire,dispositius,visor,control
++X-KDE-Keywords[cs]=1394,Firewire,zařízení,prohlížeč,ovládání
++X-KDE-Keywords[csb]=1394,Firewire,ùrządzenia,przezéranié,kòntrola
++X-KDE-Keywords[cy]=1394,dyfeisiau,gwelydd,gwyliwr,rheoli
++X-KDE-Keywords[da]=1394,Firewire,enheder,fremviser,kontrol
++X-KDE-Keywords[de]=USB,Geräte,Geräte,Betrachter,Kontrolle
++X-KDE-Keywords[el]=1394,Firewire,συσκευές,προβολέας,έλεγχος
++X-KDE-Keywords[eo]=1394,aparatoj,rigardilo,stirado
++X-KDE-Keywords[es]=1394,Firewire,dispositivos,visor,control
++X-KDE-Keywords[et]=1394,Firewire,seadmed,näitaja,juhtimine
++X-KDE-Keywords[eu]=1394,Firewire,gailuak,ikustailua,kontrola
++X-KDE-Keywords[fa]=۱۳۹۴، Firewire، دستگاهها، مشاهده‌گر، کنترل
++X-KDE-Keywords[fi]=1394,Firewire,laitteet,katselija,hallinta
++X-KDE-Keywords[fr]=1394,Firewire,périphériques,afficheur,contrôle
++X-KDE-Keywords[fy]=1394,IEEE 1394,firewire,devices,viewer,control,werjefteprogramma,apparaten,râne apparatuur
++X-KDE-Keywords[ga]=1394,Firewire,gléasanna,amharcán,rialú
++X-KDE-Keywords[gl]=1394,Firewire,dispositivos,visor,control
++X-KDE-Keywords[he]=1394,Firewire, התקנים,מציג,בקרה, devices,viewer,control
++X-KDE-Keywords[hr]=1394,Firewire,devices,viewer,control,uređaji,pregled,nadzor
++X-KDE-Keywords[hu]=1394,Firewire,eszközök,megnézés,vezérlés
++X-KDE-Keywords[is]=1394,Firewire,tæki,skoðari,stilling
++X-KDE-Keywords[it]=1394,dispositivi,controllo,visualizza,firewire
++X-KDE-Keywords[ja]=1394,Firewire,デバイス,ビューア,コントロール
++X-KDE-Keywords[km]=1394 ខ្សែ​ភ្លើង ឧបករណ៍ កម្មវិធី​មើល វត្ថុ​បញ្ជា
++X-KDE-Keywords[ko]=1394,Firewire,장치,제어
++X-KDE-Keywords[lt]=1394,Firewire,devices,viewer,control,žiūryklė,kontrolė,įrenginiai
++X-KDE-Keywords[lv]=1394,Fireware,iekārtas,skatītājs,vadība
++X-KDE-Keywords[mk]=1394,Firewire,devices,viewer,control,уреди,прегледник,контрола
++X-KDE-Keywords[nb]=1394,Firewire,enheter,framviser,kontroll
++X-KDE-Keywords[nds]=1394,Firewire,Reedschappen,Kieker,Kuntrull
++X-KDE-Keywords[ne]=1394,फायर वायर, यन्त्र, दर्शक, नियन्त्रण
++X-KDE-Keywords[nl]=1394,IEEE 1394,firewire,devices,viewer,control,weergaveprogramma,apparaten,randapparatuur
++X-KDE-Keywords[nn]=1394,Firewire,einingar,framvisar,kontroll
++X-KDE-Keywords[pa]=1394,Firewire,ਫਾਇਰਵਾਇਰ,ਜੰਤਰ,ਦਰਸ਼ਕ,ਕੰਟਰੋਲ
++X-KDE-Keywords[pl]=1394,Firewire,urządzenia,przeglądanie,kontrola
++X-KDE-Keywords[pt]=1394,Firewire,dispositivos,visualizador,controlo
++X-KDE-Keywords[pt_BR]=1394,Firewire,dispositivos,visualizador,controle
++X-KDE-Keywords[ro]=1394,firewire,dispozitive,vizualizor,control
++X-KDE-Keywords[se]=1394,Firewire,ovttadagat,čájeheaddji,stivren
++X-KDE-Keywords[sl]=1394,firewire,naprave,pregledovalnik,nadzor
++X-KDE-Keywords[sr]=1394,Firewire,devices,viewer,control,ИЕЕЕ 1394,фајервајер,уређаји,преглед,контрола
++X-KDE-Keywords[sr at latin]=1394,Firewire,devices,viewer,control,IEEE 1394,Firewire,uređaji,pregled,kontrola
++X-KDE-Keywords[sv]=1394,Firewire,enheter,visare,kontroll
++X-KDE-Keywords[ta]=1394,ஃபயர்ஒயர்,சாதனங்கள்,காட்சி,கட்டுப்பாடு
++X-KDE-Keywords[th]=1394,ไฟร์ไวร์,อุปกรณ์,ตัวแสดงผล,ควบคุม
++X-KDE-Keywords[tr]=1394,firewire,aygıtlar,izleyici,denetim,kontrol
++X-KDE-Keywords[uk]=1394,Firewire,пристрої,перегляд,керування
++X-KDE-Keywords[uz]=1394,Firewire,ускуналар,кўрувчи,бошқарув
++X-KDE-Keywords[vi]=1394,Firewire,thiết bị,trình xem,điều khiển
++X-KDE-Keywords[wa]=1394,IEEE 1394,Firewire,éndjins,håyneu,controle,corwaitaedje
++X-KDE-Keywords[x-test]=xx1394,Firewire,devices,viewer,controlxx
++X-KDE-Keywords[zh_CN]=1394,Firewire,devices,viewer,control,设备,查看器,控制,火线
++X-KDE-Keywords[zh_TW]=1394,Firewire,devices,viewer,control,裝置,檢視器,控制
+--- a/kcontrol/infocenter/nics/nic.desktop
++++ b/kcontrol/infocenter/nics/nic.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 nic
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kinfocenter/nics/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kinfocenter/nics/index.html
+ Icon=network
+ 
+ X-KDE-Library=kcm_nic
+@@ -51,7 +50,7 @@
+ Name[ne]=सञ्जाल इन्टरफेस
+ Name[nl]=Netwerkinterfaces
+ Name[nn]=Nettverksgrensesnitt
+-Name[pa]=ਨੈਟਵਰਕ ਇੰਟਰਫੇਸ
++Name[pa]=ਨੈੱਟਵਰਕ ਇੰਟਰਫੇਸ
+ Name[pl]=Interfejsy sieciowe
+ Name[pt]=Interfaces de Rede
+ Name[pt_BR]=Interfaces de Rede
+--- a/kcontrol/hardware/joystick/joystick.desktop
++++ b/kcontrol/hardware/joystick/joystick.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Comment=joystick - a kcontrol module to test joysticks
+ Comment[af]=joystick - 'n beheer module om joysticks mee te toets
+ Comment[be]=Модуль настаўлення джойстыка
+ Comment[bg]=Настройване на джойстика
+-Comment[ca]=Joystick - un mòdul de kcontrol per a provar palanques de control
++Comment[ca]=Joystick - un mòdul del kcontrol per a provar palanques de control
+ Comment[cs]=Ovládací modul pro testování joysticků
+ Comment[csb]=joystick - mòduł Centróm kòntrolë dlô testowaniô joysticków
+ Comment[cy]=joystick - modiwl kcontrol i brofi ffyn rheoli
+@@ -19,6 +18,7 @@
+ Comment[fi]=peliohjain - KDE:n ohjauskeskuksen moduuli peliohjainta varten
+ Comment[fr]=Manettes de jeu - un module pour tester les manettes de jeu
+ Comment[fy]=joystick - in Konfiguraasjemodule foar it teste fan joysticks
++Comment[ga]=joystick - modúl kcontrol a thástálann luamháin stiúrtha
+ Comment[gl]=joystick - un módulo de kcontrol para probar joysticks
+ Comment[he]=ג'ויסטיק - מודול לבדיקת ג'ויסטיקים
+ Comment[hr]=joystick - kcontrol modul za ispitivanje igraće palice
+@@ -38,7 +38,7 @@
+ Comment[ne]=जोयस्टिक - जोयस्टिक परीक्षण गर्न केडीई नियन्त्रण मोड्युल
+ Comment[nl]=joystick - een configuratiemodule voor het testen van joysticks
+ Comment[nn]=Styrepinne – ein kontrollmodul for å prøva ut styrepinnar
+-Comment[pa]=joystick - ਜਾਏਸਟਿੱਕ ਜਾਂਚ ਲਈ ਕੇਕੰਟਰੋਲ ਮੋਡੀਊਲ
++Comment[pa]=joystick - ਜਾਏਸਟਿੱਕ ਜਾਂਚ ਲਈ ਕੇ-ਕੰਟਰੋਲ ਮੋਡੀਊਲ
+ Comment[pl]=joystick - moduł Centrum sterowania do testowania joysticków
+ Comment[pt]=joystick - um módulo do kcontrol para testar joysticks
+ Comment[pt_BR]=joystick - um módulo kcontrol para testar joysticks
+@@ -61,49 +61,49 @@
+ Comment[zh_CN]=joystick - 测试游戏杆的 kcontrol 模块
+ Comment[zh_TW]=搖桿 - 用來測試搖桿的 kcontrol 模組
+ Exec=kcmshell4 joystick
+-Keywords=joystick,gamepad
+-Keywords[ar]=وسادة اللعبة,عصا الألعاب
+-Keywords[be]=Джойстык,joystick,gamepad
+-Keywords[bg]=Keywords=джойстик, игра, игри, управление, joystick, gamepad
+-Keywords[csb]=joystick,gamepad,dżojstik
+-Keywords[cy]=ffôn reoli,pad gêm
+-Keywords[da]=joystick,spilleplade
+-Keywords[de]=Joystick,Gamepad,Spiele
+-Keywords[el]=χειριστήριο,χειριστήριο κονσόλας παιχνιδιών
+-Keywords[eo]=stirstango,stirstangoj,ludotabuleto
+-Keywords[et]=juhtpult,mängupult
+-Keywords[fa]=اهرم کنترل، صفحه بازی
+-Keywords[fi]=joystick,peliohjain
+-Keywords[fr]=joystick,gamepad,manette de jeu
+-Keywords[ga]=luamhán stiúrtha,ceap cluiche
+-Keywords[he]=joystick,gamepad,ג'ויסטיק,גויסטיק
+-Keywords[hr]=joystick,gamepad,igraća palica,igraća konzola
+-Keywords[hu]=botkormány,joystick,gamepad
+-Keywords[is]=joystick,gamepad,stýripinni
+-Keywords[ja]=joystick,gamepad,ジョイスティック,ゲームパッド
+-Keywords[km]=យ៉យស្ទីក បន្ទះ​ល្បែង
+-Keywords[ko]=조이스틱,게임패드
+-Keywords[lt]=valdymo svirtis, joystick,gamepad
+-Keywords[lv]=kursorsvira,spēļu pults
+-Keywords[nb]=styrepinne,spillkontroll
+-Keywords[ne]=जोयस्टिक, गेमप्याड
+-Keywords[nn]=styrepinne,spelkontroll
+-Keywords[pa]=joystick,gamepad,ਜਾਏਸਟਿੱਕ
+-Keywords[pl]=joystick,gamepad,dżojstik
+-Keywords[se]=stivrensággi,speallanstivrran
+-Keywords[sl]=joystick,gamepad,igralna palica,igralni plošček
+-Keywords[sr]=joystick,gamepad,џојстик,гејмпад
+-Keywords[sr at latin]=joystick,gamepad,džojstik,gejmpad
+-Keywords[sv]=styrspak,spelkonsol
+-Keywords[ta]=இயக்கும் கருவி, விளையாட்டு பலகை
+-Keywords[th]=ก้านควบคุม,แป้นคุมเกม
+-Keywords[tr]=oyun çubuğu
+-Keywords[uk]=джойстик,gamepad
+-Keywords[uz]=жойстик,геймпад
+-Keywords[vi]=cần điều khiển,bàn điều khiển trò chơi
+-Keywords[x-test]=xxjoystick,gamepadxx
+-Keywords[zh_CN]=joystick,gamepad,游戏杆,手柄
+-Keywords[zh_TW]=joystick,gamepad,搖桿,遊戲台
++X-KDE-Keywords=joystick,gamepad
++X-KDE-Keywords[ar]=وسادة اللعبة,عصا الألعاب
++X-KDE-Keywords[be]=Джойстык,joystick,gamepad
++X-KDE-Keywords[bg]=Keywords=джойстик, игра, игри, управление, joystick, gamepad
++X-KDE-Keywords[csb]=joystick,gamepad,dżojstik
++X-KDE-Keywords[cy]=ffôn reoli,pad gêm
++X-KDE-Keywords[da]=joystick,spilleplade
++X-KDE-Keywords[de]=Joystick,Gamepad,Spiele
++X-KDE-Keywords[el]=χειριστήριο,χειριστήριο κονσόλας παιχνιδιών
++X-KDE-Keywords[eo]=stirstango,stirstangoj,ludotabuleto
++X-KDE-Keywords[et]=juhtpult,mängupult
++X-KDE-Keywords[fa]=اهرم کنترل، صفحه بازی
++X-KDE-Keywords[fi]=joystick,peliohjain
++X-KDE-Keywords[fr]=joystick,gamepad,manette de jeu
++X-KDE-Keywords[ga]=luamhán stiúrtha,ceap cluiche
++X-KDE-Keywords[he]=joystick,gamepad,ג'ויסטיק,גויסטיק
++X-KDE-Keywords[hr]=joystick,gamepad,igraća palica,igraća konzola
++X-KDE-Keywords[hu]=botkormány,joystick,gamepad
++X-KDE-Keywords[is]=joystick,gamepad,stýripinni
++X-KDE-Keywords[ja]=joystick,gamepad,ジョイスティック,ゲームパッド
++X-KDE-Keywords[km]=យ៉យស្ទីក បន្ទះ​ល្បែង
++X-KDE-Keywords[ko]=조이스틱,게임패드
++X-KDE-Keywords[lt]=valdymo svirtis, joystick,gamepad
++X-KDE-Keywords[lv]=kursorsvira,spēļu pults
++X-KDE-Keywords[nb]=styrepinne,spillkontroll
++X-KDE-Keywords[ne]=जोयस्टिक, गेमप्याड
++X-KDE-Keywords[nn]=styrepinne,spelkontroll
++X-KDE-Keywords[pa]=joystick,gamepad,ਜਾਏਸਟਿੱਕ
++X-KDE-Keywords[pl]=joystick,gamepad,dżojstik
++X-KDE-Keywords[se]=stivrensággi,speallanstivrran
++X-KDE-Keywords[sl]=joystick,gamepad,igralna palica,igralni plošček
++X-KDE-Keywords[sr]=joystick,gamepad,џојстик,гејмпад
++X-KDE-Keywords[sr at latin]=joystick,gamepad,džojstik,gejmpad
++X-KDE-Keywords[sv]=styrspak,spelkonsol
++X-KDE-Keywords[ta]=இயக்கும் கருவி, விளையாட்டு பலகை
++X-KDE-Keywords[th]=ก้านควบคุม,แป้นคุมเกม
++X-KDE-Keywords[tr]=oyun çubuğu
++X-KDE-Keywords[uk]=джойстик,gamepad
++X-KDE-Keywords[uz]=жойстик,геймпад
++X-KDE-Keywords[vi]=cần điều khiển,bàn điều khiển trò chơi
++X-KDE-Keywords[x-test]=xxjoystick,gamepadxx
++X-KDE-Keywords[zh_CN]=joystick,gamepad,游戏杆,手柄
++X-KDE-Keywords[zh_TW]=joystick,gamepad,搖桿,遊戲台
+ Name=Joystick
+ Name[ar]=عصا الألعاب
+ Name[be]=Джойстык
+@@ -154,7 +154,7 @@
+ Name[zh_TW]=玩具
+ Terminal=false
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ X-KDE-Library=kcm_joystick
+ X-KDE-Test-Module=true
+ Icon=preferences-desktop-gaming
+--- a/kcontrol/hardware/display/display.desktop
++++ b/kcontrol/hardware/display/display.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 display
+ Icon=preferences-desktop-display
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kcmdisplay/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kcmdisplay/index.html
+ 
+ X-KDE-Library=kcm_display
+ X-KDE-ParentApp=kcontrol
+@@ -50,7 +49,7 @@
+ Name[ne]=प्रदर्शन गर्नुहोस्
+ Name[nl]=Beeldscherm
+ Name[nn]=Skjerm
+-Name[pa]=ਝਲਕ
++Name[pa]=ਡਿਸਪਲੇਅ
+ Name[pl]=Ekran
+ Name[pt]=Ecrã
+ Name[pt_BR]=Tela
+@@ -114,7 +113,7 @@
+ Comment[ne]=सेटिङ प्रदर्शन गर्नुहोस्
+ Comment[nl]=Beeldscherminstellingen
+ Comment[nn]=Skjerminnstillingar
+-Comment[pa]=ਝਲਕ ਸੰਰਚਨਾ
++Comment[pa]=ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ
+ Comment[pl]=Ustawienia ekranu
+ Comment[pt]=Configuração do ecrã
+ Comment[pt_BR]=Configurações da Tela
+--- a/kcontrol/input/mouse.desktop
++++ b/kcontrol/input/mouse.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 mouse
+ Icon=preferences-desktop-mouse
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/mouse/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/mouse/index.html
+ 
+ X-KDE-Library=kcm_input
+ X-KDE-Init-Symbol=mouse
+@@ -142,60 +141,60 @@
+ Comment[zh_CN]=鼠标设置
+ Comment[zh_TW]=滑鼠設定
+ 
+-Keywords=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
+-Keywords[af]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handig,left handig
+-Keywords[be]=Мыш,Паскарэнне мышы,Кнопкі мышы,Вылучэнне,Форма курсора,Прылады ўводу,Прызначэнне кнопак,Дзеянне кнопак,Націск,значкі,Указальнік,Курсор,Перацягваць,Двайны націск,для левай рукі,для правай рукі,Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
+-Keywords[bg]=Keywords=настройки, мишка, посочващо, устройство, Mouse, Mouse acceleration, Mouse threshold, Mouse buttons, Selection, Cursor Shape, Input Devices, Button Mapping, Click, icons, feedback, Pointers, Drag, DoubleClick, mapping, right handed, left handed
+-Keywords[ca]=Ratolí,acceleració del ratolí,llindar del ratolí,botons del ratolí,selecció,forma del cursor,dispositius d'entrada,mapejat de botons,clic,icones,realimentació,apuntadors,arrossegar,clic doble,mapejat,dretà,esquerrà
+-Keywords[cs]=Myš,Akcelerace myši,Práh myši,Tlačítka myši,Výběr,Tvar kurzoru,Vstupní zařízení,Mapování tlačítek,Kurzor,Kliknutí,Odezva,Dvojité kliknutí,Pravák,Levák
+-Keywords[csb]=Mësz,przërëchlënié mëszë,Próg mëszë,Knąpë mëszë,Zaznaczenié,Sztôłt kùrsora,Ùrządzenia wéńdzeniô,mapòwanié knąpów,klëkniãce,ikònë,widzałé efektë,wskôzywôczë,przecyganié,podwójné klëkniãce,mapòwanié,prawòrãczny,lewòrãczny
+-Keywords[cy]=Llygoden,Cyflymu Llygoden,Trothwy Llygoden,Botymau Llygoden,Dewis,Si?p Cyrchydd,Dyfeisiau Mewnbwn,Mapio Botymau, Clic,eiconau,adborth,Pwyntyddion,Llusgo,Clic Dwbl,mapio,llaw dde,llaw chwith
+-Keywords[da]=Mus,Museacceleration,Musegrænse,Museknapper,Markering,Markørform,Inddataenheder,Knap-mapping,Klik,ikoner,feedback,Pegere, Træk,Dobbeltklik,mapping,højrehåndet,venstrehåndet
+-Keywords[de]=Maus,Mausbeschleunigung,Mausschwellenwert,Maustasten,Auswahl,Cursor,Cursorform,Eingabegeräte,Knöpfe,Buttons,Zuordnungen,Klicks,Zeigegeräte,Doppelklick,Rechtshänder,Linkshänder
+-Keywords[el]=Ποντίκι,Επιτάχυνση δρομέα,Κατώφλι ποντικιού,Πλήκτρα ποντικιού,Επιλογή,Σχήμα Δρομέα,Συσκευές Εισόδου,Χαρτογράφηση πλήκτρων,Κλικ,εικονίδια,ανάδραση,Δείκτες,Σύρσιμο,Διπλό κλικ,αντιστοίχηση,δεξιόχειρας,αριστερόχειρας
+-Keywords[eo]=muso,akcelado,butonoj,elekto,montrilo,kursoro,enigo,aparatoj,butonsignifo,klako,piktogramoj,reago,montriloj,ŝovado,trenado,duklako,dekstrmanulo,maldekstramanulo
+-Keywords[es]=Ratón,Aceleración del ratón,Umbral del ratón,Botones del ratón,Selección,Forma del cursor,Dispositivos de entrada,Asignaciones de botones,Pulsación,iconos,notificación,Punteros,Arrastrar,Doble pulsación,asignaciones,diestro,zurdo
+-Keywords[et]=hiir,hiire kiirendus,hiire lävi,hiire nupud,valimine,kursori kuju,sisendseadmed,nuppude asetus,klikk,klõps,ikoonid,tagasiside,kursorid,lohistamine,topeltklikk,topeltklõps,asetus,paremakäeline,vasakukäeline
+-Keywords[eu]=Sagua,Saguaren azelerazioa,Saguaren atalasea,Saguarenbotoiak,Hautespena,Kurtsorearen itxura,Sarrera dispositiboak,Botoien esleipena,Klika,ikonoak,atzeraelikadura,Geziak,Arrastatu,Klik bikoitza,esleipenak, eskuinak,ezkertiak
+-Keywords[fa]=موشی، شتاب‌دهی موشی، آستانۀ موشی، دکمه‌های موشی، گزینش، شکل مکان‌نما، دستگاههای ورودی، نگاشت دکمه، فشار دادن، شمایلها، بازخورد، اشاره‌گرها، کشیدن، دو بار فشار دادن، نگاشت، راست‌دست، چپ‌دست
+-Keywords[fi]=Hiiri,Hiiren kiihdytys,Hiiren raja-arvo,Hiiren painikkeet,Valinta,Osoittimen muoto,Syöttölaitteet,Painikkeiden järjestys,Napsautus,kuvakkeet,palaute,Osoittimet,Vedä,Tuplanapsautus,järjestys,oikeakätinen,vasenkätinen
+-Keywords[fr]=souris,accélération de la souris,seuil de la souris,boutons de la souris,sélection,forme du curseur,périphériques d'entrée,curseur,clic,icônes,gaucher,droitier,double clic,simple clic,clic gauche,clic droit
+-Keywords[fy]=Mûs,Mûs fluggens,Mûsknoppen,seleksje,rinnerke-úterlik,ynfier devices,ynfierapparaten,knopyndieling,klikken,Ikoanen,icons,Oanwizers,pointers,drag,slepe,dûbelklikken,loftshandich,rjochtshandich.râneapparaten
+-Keywords[gl]=Rato,Aceleración do rato,Umbral do rato,botóns do rato,Selección,Forma do Cursores,Dispositivos de Entrada,Mapa do botón,Clic,iconas,indicador,Ponteiros,Arrastar,DobreClic,mapear,dereiteiro,esquerdeiro
+-Keywords[he]=עכבר,תאוצת עכבר,סף עכבר,לחצני עכבר,בחירה,צורת מצביע,התקני קלט,לחיצה,סמלים,תגובה,מצביעים,גרירה,לחיצה כפולה,תצורה,ימני,שמאלי,תצורת לחצנים, Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
+-Keywords[hr]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,Miš,Ubrzavanje miša,Prag miša,Tipke miša,Odabir,Oblik pokazivača,Ulazni uređaji,Mapiranje tipki,Klikanje,ikone,povratni podaci,Pokazivači,Prevlačenje,Dvostruki klik,mapiranje,desnoruk,ljevoruk
+-Keywords[hu]=egér,egérgyorsítás,egérérzékenység,egérgombok,kiválasztás,kurzoralak,beviteli eszközök,gombhozzárendelés,kattintás,ikonok,visszajelzés,mutatók,húzás,dupla kattintás,hozzárendelés,jobbkezes,balkezes
+-Keywords[is]=Næmni músar,bendill,inntakstæki,hröðun,örvhentur,rétthentur,smella,tákn,bendill,tvísmella
+-Keywords[it]=mouse,accelerazione del mouse,soglia del mouse,tasti del mouse,selezione,forma del cursore,dispositivi di input,mappatura dei tasti,clic,icone,puntatori,trascinamento,doppio clic,mouse per mancini,mancini
+-Keywords[ja]=マウス,マウスの加速,マウスのしきい,マウスボタン,選択,カーソルの形,入力デバイス,入力デバイス,ボタンの割り当て,クリック,アイコン,フィードバック,ポインタ,ドラッグ,ダブルクリック,割り当て,右利き,左利き
+-Keywords[km]=កណ្ដុរ ការ​បង្កើន​ល្បឿន កម្រិត​ពន្លឺ​កណ្ដុរ ប៊ូតុង​កណ្ដុរ ការជ្រើស រូបរាង​ទស្សន៍​ទ្រនិច ឧបករណ៍​បញ្ចូល ការ​ផ្គូផ្គង​ប៊ូតុង ចុច រូបតំណាង មតិ​អ្នក​ប្រើ ទ្រនិច អូស ចុច​ទ្វេដង ការ​ផ្គូផ្គង ខាង​ស្ដាំ ខាង​ឆ្វេង
+-Keywords[ko]=마우스,마우스 가속,마우스 단추,선택,커서,입력 장치,단추 할당,아이콘,피드백,포인터,드래그,더블클릭
+-Keywords[lt]=Mouse,pelė,Mouse acceleration,pelės pagreitinimas,Mouse threshold,Mouse buttons,pelės mygtukai,Selection,pažymėjimas,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,right handed,left handed,kairiarankė
+-Keywords[lv]=Pele,Peles paātrinājums,Peles slieksnis,Peles taustiņi,Izvēle,Kursora Forma,Ievades Iekārtas,Pogu Sasaiste,Klikšķis,ikonas,atpakaļsaite,Rādītāji,Vilkt,Dubultklikšķis,sasaiste,labās rokas,kreisās rokas
+-Keywords[mk]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,Глушец,Забрзување на глушец,Граница на глушец,Копчиња на глушец,Селекција,Избор,Форма на курсор,Влезни уреди,Мапирање на копче,Клик,икони,Покажувачи,Влечи,Двоен клик,мапирање,деснорак,леворак
+-Keywords[nb]=Mus,musehastighet,museknapper,valg,merking,kursoregenskaper,pekeregenskaper,innenheter,inn-enheter,knappetilordning,trykk,klikk,pekere,dra,dobbelttrykk, høyrehendt,venstrehendt
+-Keywords[nds]=Muus,Muus-Gauheit,Muus-Grenzweert,Muusknööp,Utwahl,Knooptoornen, Wieserform,Ingaavreedschappen,Klicken,Lüttbiller,Torüchmellen,Wieser,Dregen,Dubbelklick,Toornen,Rechtpoot,Linkpoot
+-Keywords[ne]=माउस, माउस गतिवर्धन, माउस थ्रेसहोल्ड, माउस बटनहरू, चयन, कर्सर आकार, आगत यन्त्र, बटन मिलाउने, क्लिक, प्रतिमा, पृष्ठपोषण, सूचक, तान्नुहोस्, डबल क्लिक गर्नुहोस्, मिलाउनुहोस्, दायाँ, बायाँ
+-Keywords[nl]=muis,muissnelheid,muisknoppen,selectie,cursor-uiterlijk,input devices,invoerapparaten,knopindeling,klikken,iconen,pictogrammen,icons,aanwijzers,pointers,drag,verslepen,dubbelklikken,linkshandig,rechtshandig.randapparaten
+-Keywords[nn]=mus,musakselerasjon,musterskel,musknappar,val,peikar,peikarform,inneiningar,knappar,klikk,ikon,tilbakemelding,dra,dobbelklikk,høgrehendt,venstrehendt
+-Keywords[pa]=ਮਾਊਸ,ਮਾਊਸ ਪ੍ਰਵੇਸ਼,ਮਾਊਸ threshold,ਮਾਊਸ buttons,Selection,CursorShape,Input ਜੰਤਰ,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,righthanded,left handed,ਕਲਿੱਕ,ਆਈਕਾਨ
+-Keywords[pl]=Mysz,Akceleracja myszy,Próg myszy,Przyciski myszy,Zaznaczenie,Kształt kursora,Urządzenia wejściowe,mapowanie przycisków,kliknięcie,ikony,widoczne efekty,wskaźniki,przeciąganie,podwójne kliknięcie,mapowanie,praworęczny,leworęczny
+-Keywords[pt]=rato,aceleração do rato,limite do rato,botões do rato,selecção,forma do cursor,dispositivos de entrada,atribuição de botões,click,ícones,feedback,cursores,arrastar,duplo 'click',atribuição,destro,esquerdino
+-Keywords[pt_BR]=Mouse,aceleração do mouse,limiar do mouse, botões do mouse,Seleção,Formato do Cursor,Dispositivos de entrada,mapeamento de botões,clique,ícones,retorno,ponteiros,arrastar,clique duplo,mapeamento,destro,canhoto
+-Keywords[ro]=mouse,acceleraţie mouse,prag mouse,butoane mouse,selecţie,formă cursor,dispozitive de intrare,mapare butoane,clicuri,iconiţe,răspuns,pointeri,indicatori,tragere,dublu clic,dreptaci,stîngaci,drag-and-drop
+-Keywords[se]=sáhpán,sáhpánaksellerašuvdna,sáhpánšielbma,sáhpánboalut, merken, njoallahápmi,sisaovttadagat,boalut,coahkkalit,govažat,feedback,geassit, duppalcoahkkaleapmi,olgešgiehtat,gurutgiehtat
+-Keywords[sl]=miška,pospešitev miške,gumbi miške,izbira,oblika kazalca,vhodne enote,preslikava gumbov,klik,ikone,povratna informacija,kazalci,potegni,dvojni klik,preslikava,levičarji,desničarji
+-Keywords[sr]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,миш,убрзање миша,означавање,избор,облик показивача,показивач,мапирање дугмади,клик,иконе,показивачи,превуци,двоклик,мапирање,леворуки,десноруки
+-Keywords[sr at latin]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,miš,ubrzanje miša,označavanje,izbor,oblik pokazivača,pokazivač,mapiranje dugmadi,klik,ikone,pokazivači,prevuci,dvoklik,mapiranje,levoruki,desnoruki
+-Keywords[sv]=Mus,Musacceleration,Muströskel,Musknappar,Val,Markörutseende,Inmatningsenheter,Knapptolkning,klickning,ikoner,respons,Pekare,Drag,Dubbelklick,Tolkning,högerhänt,vänsterhänt
+-Keywords[ta]=சுட்டி, முடுக்கப்பட்ட சுட்டி ,  சுட்டி பட்டன், தேர்வுகள், காட்டியின் வடிவம், உள்ளிடும் சாதனம்,  பட்டன் பொருத்தல், க்ளிக், சின்னம், கருத்து , காட்டிகள், இழு, இரண்டுமுறை க்ளிக், பொருத்து,வலதுகை பழக்கம், இடது கை பழக்கம்.
+-Keywords[th]=เม้าส์,การเร่งความเร็วของเม้าส์,ระยะตัวชี้ของเม้าส์,ปุ่มเม้าส์,การเลือก,รูปร่างเคอร์เซอร์,อุปกรณ์นำเข้าข้อมูล,การจับคู่ปุ่ม,คลิก,ไอคอน,การตอบสนอง,ตัวชี้,ลาก,ดับเบิลคลิก, การแมพปุ่ม,ใช้มือซ้าย,ใช้มือขวา
+-Keywords[tr]=fare,Fare Hızlandırma,Fare eşiği,Fare Tuşları,Seçim,imleç şekli,girdi aygıtları,Tuş Haritası,Tıklama,simgeler,geri besleme,İşaretçiler,Taşı,Çift Tıkla,haritalama,sağ elli,sol elli
+-Keywords[uk]=Миша,Mouse,прискорення миші,поріг миші,кнопки миші,вибір,форма курсора,вхідні пристрої,відповідність клавіш,клацання,піктограми,зворотній зв'язок,вказівники,перетягнути,подвійне клацання,відображення,лівша,правша
+-Keywords[uz]=Сичқонча,Сичқончани тезлаштириш,Mouse threshold,Сичқончанинг тугмалари,Танлаш,Курсорнинг шакиллари,Киритиш ускунаси,Тугмани аниқлаш,Босиш,нишончалар,feedback,Кўрсатгичлар,Drag,Икки марта босиш,mapping,чап қўл,ўнг қўл
+-Keywords[vi]=Chuột,Con chuột,Gia tốc chuột,Ngưỡng chuột,Nút chuột,Chọn,Hình con trỏ,Thiết bị Nhập,Ánh xạ Nút,Nhấn,biểu tượng,phản hồi,Con trỏ,Kéo,Nhấn đúp,ánh xạ,thuận tay phải,thuận tay trái
+-Keywords[x-test]=xxMouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handedxx
+-Keywords[xh]=Mouse,Unyuso lwesantya seMouse,Ungeno lwe Mouse,Amaqhosha eMouse,Ukhetho,Ukumila kwesalathisi,Amacebo egalelo,Ukucetywa kwamaqhosha,Nqakraza,ii-icon, isiphumo,Izalathi,Tsala,Nqakraza kabini,iyaceba,isandla sokunene,isandla sasekhohlo
+-Keywords[zh_CN]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,鼠标,鼠标加速,鼠标加速阈值,鼠标按钮,选择,光标形状,输入设备,按钮映射,单击,图标,反馈,拖放,双击,映射,右手习惯,左手习惯
+-Keywords[zh_TW]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,滑鼠,滑鼠游標加速,滑鼠游標加速間距,滑鼠按鈕,選擇,指標外觀,輸入設備,按鍵對應,單擊,圖示,反饋,指標,拖放,雙擊,映射,習慣右手,習慣左手 
++X-KDE-Keywords=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
++X-KDE-Keywords[af]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handig,left handig
++X-KDE-Keywords[be]=Мыш,Паскарэнне мышы,Кнопкі мышы,Вылучэнне,Форма курсора,Прылады ўводу,Прызначэнне кнопак,Дзеянне кнопак,Націск,значкі,Указальнік,Курсор,Перацягваць,Двайны націск,для левай рукі,для правай рукі,Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
++X-KDE-Keywords[bg]=Keywords=настройки, мишка, посочващо, устройство, Mouse, Mouse acceleration, Mouse threshold, Mouse buttons, Selection, Cursor Shape, Input Devices, Button Mapping, Click, icons, feedback, Pointers, Drag, DoubleClick, mapping, right handed, left handed
++X-KDE-Keywords[ca]=Ratolí,acceleració del ratolí,llindar del ratolí,botons del ratolí,selecció,forma del cursor,dispositius d'entrada,mapejat de botons,clic,icones,realimentació,apuntadors,arrossegar,clic doble,mapejat,dretà,esquerrà
++X-KDE-Keywords[cs]=Myš,Akcelerace myši,Práh myši,Tlačítka myši,Výběr,Tvar kurzoru,Vstupní zařízení,Mapování tlačítek,Kurzor,Kliknutí,Odezva,Dvojité kliknutí,Pravák,Levák
++X-KDE-Keywords[csb]=Mësz,przërëchlënié mëszë,Próg mëszë,Knąpë mëszë,Zaznaczenié,Sztôłt kùrsora,Ùrządzenia wéńdzeniô,mapòwanié knąpów,klëkniãce,ikònë,widzałé efektë,wskôzywôczë,przecyganié,podwójné klëkniãce,mapòwanié,prawòrãczny,lewòrãczny
++X-KDE-Keywords[cy]=Llygoden,Cyflymu Llygoden,Trothwy Llygoden,Botymau Llygoden,Dewis,Si?p Cyrchydd,Dyfeisiau Mewnbwn,Mapio Botymau, Clic,eiconau,adborth,Pwyntyddion,Llusgo,Clic Dwbl,mapio,llaw dde,llaw chwith
++X-KDE-Keywords[da]=Mus,Museacceleration,Musegrænse,Museknapper,Markering,Markørform,Inddataenheder,Knap-mapping,Klik,ikoner,feedback,Pegere, Træk,Dobbeltklik,mapping,højrehåndet,venstrehåndet
++X-KDE-Keywords[de]=Maus,Mausbeschleunigung,Mausschwellenwert,Maustasten,Auswahl,Cursor,Cursorform,Eingabegeräte,Knöpfe,Buttons,Zuordnungen,Klicks,Zeigegeräte,Doppelklick,Rechtshänder,Linkshänder
++X-KDE-Keywords[el]=Ποντίκι,Επιτάχυνση δρομέα,Κατώφλι ποντικιού,Πλήκτρα ποντικιού,Επιλογή,Σχήμα Δρομέα,Συσκευές Εισόδου,Χαρτογράφηση πλήκτρων,Κλικ,εικονίδια,ανάδραση,Δείκτες,Σύρσιμο,Διπλό κλικ,αντιστοίχηση,δεξιόχειρας,αριστερόχειρας
++X-KDE-Keywords[eo]=muso,akcelado,butonoj,elekto,montrilo,kursoro,enigo,aparatoj,butonsignifo,klako,piktogramoj,reago,montriloj,ŝovado,trenado,duklako,dekstrmanulo,maldekstramanulo
++X-KDE-Keywords[es]=Ratón,Aceleración del ratón,Umbral del ratón,Botones del ratón,Selección,Forma del cursor,Dispositivos de entrada,Asignaciones de botones,Pulsación,iconos,notificación,Punteros,Arrastrar,Doble pulsación,asignaciones,diestro,zurdo
++X-KDE-Keywords[et]=hiir,hiire kiirendus,hiire lävi,hiire nupud,valimine,kursori kuju,sisendseadmed,nuppude asetus,klikk,klõps,ikoonid,tagasiside,kursorid,lohistamine,topeltklikk,topeltklõps,asetus,paremakäeline,vasakukäeline
++X-KDE-Keywords[eu]=Sagua,Saguaren azelerazioa,Saguaren atalasea,Saguarenbotoiak,Hautespena,Kurtsorearen itxura,Sarrera dispositiboak,Botoien esleipena,Klika,ikonoak,atzeraelikadura,Geziak,Arrastatu,Klik bikoitza,esleipenak, eskuinak,ezkertiak
++X-KDE-Keywords[fa]=موشی، شتاب‌دهی موشی، آستانۀ موشی، دکمه‌های موشی، گزینش، شکل مکان‌نما، دستگاههای ورودی، نگاشت دکمه، فشار دادن، شمایلها، بازخورد، اشاره‌گرها، کشیدن، دو بار فشار دادن، نگاشت، راست‌دست، چپ‌دست
++X-KDE-Keywords[fi]=Hiiri,Hiiren kiihdytys,Hiiren raja-arvo,Hiiren painikkeet,Valinta,Osoittimen muoto,Syöttölaitteet,Painikkeiden järjestys,Napsautus,kuvakkeet,palaute,Osoittimet,Vedä,Tuplanapsautus,järjestys,oikeakätinen,vasenkätinen
++X-KDE-Keywords[fr]=souris,accélération de la souris,seuil de la souris,boutons de la souris,sélection,forme du curseur,périphériques d'entrée,curseur,clic,icônes,gaucher,droitier,double clic,simple clic,clic gauche,clic droit
++X-KDE-Keywords[fy]=Mûs,Mûs fluggens,Mûsknoppen,seleksje,rinnerke-úterlik,ynfier devices,ynfierapparaten,knopyndieling,klikken,Ikoanen,icons,Oanwizers,pointers,drag,slepe,dûbelklikken,loftshandich,rjochtshandich.râneapparaten
++X-KDE-Keywords[gl]=Rato,Aceleración do rato,Umbral do rato,botóns do rato,Selección,Forma do Cursores,Dispositivos de Entrada,Mapa do botón,Clic,iconas,indicador,Ponteiros,Arrastar,DobreClic,mapear,dereiteiro,esquerdeiro
++X-KDE-Keywords[he]=עכבר,תאוצת עכבר,סף עכבר,לחצני עכבר,בחירה,צורת מצביע,התקני קלט,לחיצה,סמלים,תגובה,מצביעים,גרירה,לחיצה כפולה,תצורה,ימני,שמאלי,תצורת לחצנים, Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed
++X-KDE-Keywords[hr]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,Miš,Ubrzavanje miša,Prag miša,Tipke miša,Odabir,Oblik pokazivača,Ulazni uređaji,Mapiranje tipki,Klikanje,ikone,povratni podaci,Pokazivači,Prevlačenje,Dvostruki klik,mapiranje,desnoruk,ljevoruk
++X-KDE-Keywords[hu]=egér,egérgyorsítás,egérérzékenység,egérgombok,kiválasztás,kurzoralak,beviteli eszközök,gombhozzárendelés,kattintás,ikonok,visszajelzés,mutatók,húzás,dupla kattintás,hozzárendelés,jobbkezes,balkezes
++X-KDE-Keywords[is]=Næmni músar,bendill,inntakstæki,hröðun,örvhentur,rétthentur,smella,tákn,bendill,tvísmella
++X-KDE-Keywords[it]=mouse,accelerazione del mouse,soglia del mouse,tasti del mouse,selezione,forma del cursore,dispositivi di input,mappatura dei tasti,clic,icone,puntatori,trascinamento,doppio clic,mouse per mancini,mancini
++X-KDE-Keywords[ja]=マウス,マウスの加速,マウスのしきい,マウスボタン,選択,カーソルの形,入力デバイス,入力デバイス,ボタンの割り当て,クリック,アイコン,フィードバック,ポインタ,ドラッグ,ダブルクリック,割り当て,右利き,左利き
++X-KDE-Keywords[km]=កណ្ដុរ ការ​បង្កើន​ល្បឿន កម្រិត​ពន្លឺ​កណ្ដុរ ប៊ូតុង​កណ្ដុរ ការជ្រើស រូបរាង​ទស្សន៍​ទ្រនិច ឧបករណ៍​បញ្ចូល ការ​ផ្គូផ្គង​ប៊ូតុង ចុច រូបតំណាង មតិ​អ្នក​ប្រើ ទ្រនិច អូស ចុច​ទ្វេដង ការ​ផ្គូផ្គង ខាង​ស្ដាំ ខាង​ឆ្វេង
++X-KDE-Keywords[ko]=마우스,마우스 가속,마우스 단추,선택,커서,입력 장치,단추 할당,아이콘,피드백,포인터,드래그,더블클릭
++X-KDE-Keywords[lt]=Mouse,pelė,Mouse acceleration,pelės pagreitinimas,Mouse threshold,Mouse buttons,pelės mygtukai,Selection,pažymėjimas,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,right handed,left handed,kairiarankė
++X-KDE-Keywords[lv]=Pele,Peles paātrinājums,Peles slieksnis,Peles taustiņi,Izvēle,Kursora Forma,Ievades Iekārtas,Pogu Sasaiste,Klikšķis,ikonas,atpakaļsaite,Rādītāji,Vilkt,Dubultklikšķis,sasaiste,labās rokas,kreisās rokas
++X-KDE-Keywords[mk]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,Глушец,Забрзување на глушец,Граница на глушец,Копчиња на глушец,Селекција,Избор,Форма на курсор,Влезни уреди,Мапирање на копче,Клик,икони,Покажувачи,Влечи,Двоен клик,мапирање,деснорак,леворак
++X-KDE-Keywords[nb]=Mus,musehastighet,museknapper,valg,merking,kursoregenskaper,pekeregenskaper,innenheter,inn-enheter,knappetilordning,trykk,klikk,pekere,dra,dobbelttrykk, høyrehendt,venstrehendt
++X-KDE-Keywords[nds]=Muus,Muus-Gauheit,Muus-Grenzweert,Muusknööp,Utwahl,Knooptoornen, Wieserform,Ingaavreedschappen,Klicken,Lüttbiller,Torüchmellen,Wieser,Dregen,Dubbelklick,Toornen,Rechtpoot,Linkpoot
++X-KDE-Keywords[ne]=माउस, माउस गतिवर्धन, माउस थ्रेसहोल्ड, माउस बटनहरू, चयन, कर्सर आकार, आगत यन्त्र, बटन मिलाउने, क्लिक, प्रतिमा, पृष्ठपोषण, सूचक, तान्नुहोस्, डबल क्लिक गर्नुहोस्, मिलाउनुहोस्, दायाँ, बायाँ
++X-KDE-Keywords[nl]=muis,muissnelheid,muisknoppen,selectie,cursor-uiterlijk,input devices,invoerapparaten,knopindeling,klikken,iconen,pictogrammen,icons,aanwijzers,pointers,drag,verslepen,dubbelklikken,linkshandig,rechtshandig.randapparaten
++X-KDE-Keywords[nn]=mus,musakselerasjon,musterskel,musknappar,val,peikar,peikarform,inneiningar,knappar,klikk,ikon,tilbakemelding,dra,dobbelklikk,høgrehendt,venstrehendt
++X-KDE-Keywords[pa]=ਮਾਊਸ,ਮਾਊਸ ਪ੍ਰਵੇਸ਼,ਮਾਊਸ threshold,ਮਾਊਸ buttons,Selection,CursorShape,Input ਜੰਤਰ,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,righthanded,left handed,ਕਲਿੱਕ,ਆਈਕਾਨ
++X-KDE-Keywords[pl]=Mysz,Akceleracja myszy,Próg myszy,Przyciski myszy,Zaznaczenie,Kształt kursora,Urządzenia wejściowe,mapowanie przycisków,kliknięcie,ikony,widoczne efekty,wskaźniki,przeciąganie,podwójne kliknięcie,mapowanie,praworęczny,leworęczny
++X-KDE-Keywords[pt]=rato,aceleração do rato,limite do rato,botões do rato,selecção,forma do cursor,dispositivos de entrada,atribuição de botões,click,ícones,feedback,cursores,arrastar,duplo 'click',atribuição,destro,esquerdino
++X-KDE-Keywords[pt_BR]=Mouse,aceleração do mouse,limiar do mouse, botões do mouse,Seleção,Formato do Cursor,Dispositivos de entrada,mapeamento de botões,clique,ícones,retorno,ponteiros,arrastar,clique duplo,mapeamento,destro,canhoto
++X-KDE-Keywords[ro]=mouse,acceleraţie mouse,prag mouse,butoane mouse,selecţie,formă cursor,dispozitive de intrare,mapare butoane,clicuri,iconiţe,răspuns,pointeri,indicatori,tragere,dublu clic,dreptaci,stîngaci,drag-and-drop
++X-KDE-Keywords[se]=sáhpán,sáhpánaksellerašuvdna,sáhpánšielbma,sáhpánboalut, merken, njoallahápmi,sisaovttadagat,boalut,coahkkalit,govažat,feedback,geassit, duppalcoahkkaleapmi,olgešgiehtat,gurutgiehtat
++X-KDE-Keywords[sl]=miška,pospešitev miške,gumbi miške,izbira,oblika kazalca,vhodne enote,preslikava gumbov,klik,ikone,povratna informacija,kazalci,potegni,dvojni klik,preslikava,levičarji,desničarji
++X-KDE-Keywords[sr]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,миш,убрзање миша,означавање,избор,облик показивача,показивач,мапирање дугмади,клик,иконе,показивачи,превуци,двоклик,мапирање,леворуки,десноруки
++X-KDE-Keywords[sr at latin]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,miš,ubrzanje miša,označavanje,izbor,oblik pokazivača,pokazivač,mapiranje dugmadi,klik,ikone,pokazivači,prevuci,dvoklik,mapiranje,levoruki,desnoruki
++X-KDE-Keywords[sv]=Mus,Musacceleration,Muströskel,Musknappar,Val,Markörutseende,Inmatningsenheter,Knapptolkning,klickning,ikoner,respons,Pekare,Drag,Dubbelklick,Tolkning,högerhänt,vänsterhänt
++X-KDE-Keywords[ta]=சுட்டி, முடுக்கப்பட்ட சுட்டி ,  சுட்டி பட்டன், தேர்வுகள், காட்டியின் வடிவம், உள்ளிடும் சாதனம்,  பட்டன் பொருத்தல், க்ளிக், சின்னம், கருத்து , காட்டிகள், இழு, இரண்டுமுறை க்ளிக், பொருத்து,வலதுகை பழக்கம், இடது கை பழக்கம்.
++X-KDE-Keywords[th]=เม้าส์,การเร่งความเร็วของเม้าส์,ระยะตัวชี้ของเม้าส์,ปุ่มเม้าส์,การเลือก,รูปร่างเคอร์เซอร์,อุปกรณ์นำเข้าข้อมูล,การจับคู่ปุ่ม,คลิก,ไอคอน,การตอบสนอง,ตัวชี้,ลาก,ดับเบิลคลิก, การแมพปุ่ม,ใช้มือซ้าย,ใช้มือขวา
++X-KDE-Keywords[tr]=fare,Fare Hızlandırma,Fare eşiği,Fare Tuşları,Seçim,imleç şekli,girdi aygıtları,Tuş Haritası,Tıklama,simgeler,geri besleme,İşaretçiler,Taşı,Çift Tıkla,haritalama,sağ elli,sol elli
++X-KDE-Keywords[uk]=Миша,Mouse,прискорення миші,поріг миші,кнопки миші,вибір,форма курсора,вхідні пристрої,відповідність клавіш,клацання,піктограми,зворотній зв'язок,вказівники,перетягнути,подвійне клацання,відображення,лівша,правша
++X-KDE-Keywords[uz]=Сичқонча,Сичқончани тезлаштириш,Mouse threshold,Сичқончанинг тугмалари,Танлаш,Курсорнинг шакиллари,Киритиш ускунаси,Тугмани аниқлаш,Босиш,нишончалар,feedback,Кўрсатгичлар,Drag,Икки марта босиш,mapping,чап қўл,ўнг қўл
++X-KDE-Keywords[vi]=Chuột,Con chuột,Gia tốc chuột,Ngưỡng chuột,Nút chuột,Chọn,Hình con trỏ,Thiết bị Nhập,Ánh xạ Nút,Nhấn,biểu tượng,phản hồi,Con trỏ,Kéo,Nhấn đúp,ánh xạ,thuận tay phải,thuận tay trái
++X-KDE-Keywords[x-test]=xxMouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handedxx
++X-KDE-Keywords[xh]=Mouse,Unyuso lwesantya seMouse,Ungeno lwe Mouse,Amaqhosha eMouse,Ukhetho,Ukumila kwesalathisi,Amacebo egalelo,Ukucetywa kwamaqhosha,Nqakraza,ii-icon, isiphumo,Izalathi,Tsala,Nqakraza kabini,iyaceba,isandla sokunene,isandla sasekhohlo
++X-KDE-Keywords[zh_CN]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,鼠标,鼠标加速,鼠标加速阈值,鼠标按钮,选择,光标形状,输入设备,按钮映射,单击,图标,反馈,拖放,双击,映射,右手习惯,左手习惯
++X-KDE-Keywords[zh_TW]=Mouse,Mouse acceleration,Mouse threshold,Mouse buttons,Selection,Cursor Shape,Input Devices,Button Mapping,Click,icons,feedback,Pointers,Drag,DoubleClick,mapping,right handed,left handed,滑鼠,滑鼠游標加速,滑鼠游標加速間距,滑鼠按鈕,選擇,指標外觀,輸入設備,按鍵對應,單擊,圖示,反饋,指標,拖放,雙擊,映射,習慣右手,習慣左手
+ Categories=Qt;KDE;X-KDE-settings-hardware;
+--- a/kcontrol/kxkb/xklavier_adaptor.cpp
++++ b/kcontrol/kxkb/xklavier_adaptor.cpp
+@@ -270,6 +270,12 @@
+     return xkl_engine_start_listen(priv->engine, XKLL_TRACK_KEYBOARD_STATE);
+ }
+ 
++int
++XKlavierAdaptor::stopListening()
++{
++    return xkl_engine_start_listen(priv->engine, XKLL_TRACK_KEYBOARD_STATE);
++}
++
+ int 
+ XKlavierAdaptor::filterEvents(XEvent* ev)
+ {
+--- a/kcontrol/kxkb/kcmlayoutwidget.ui
++++ b/kcontrol/kxkb/kcmlayoutwidget.ui
+@@ -104,6 +104,9 @@
+               <property name="text" >
+                <string>Keyboard &amp;model:</string>
+               </property>
++              <property name="buddy" >
++               <cstring>comboModel</cstring>
++              </property>
+              </widget>
+             </item>
+             <item>
+--- a/kcontrol/kxkb/kxkbcore.h
++++ b/kcontrol/kxkb/kxkbcore.h
+@@ -61,6 +61,8 @@
+     int getStatus() { return m_status; }
+     bool x11EventFilter ( XEvent * event );
+     void setWidget(KxkbWidget* kxkbWidet);
++    void cleanup();
++
+ // DBUS:
+ public slots:
+     bool setLayout(const QString& layoutPair);
+@@ -97,9 +99,12 @@
+     KxkbWidget *m_kxkbWidget;
+     KActionCollection *actionCollection;
+     
++    QWidget* m_dummyWidget;
++    
+     void updateIndicator(int layout, int res);
+     void initTray();
+     void initKDEShortcut();
++    void stopKDEShortcut();
+     void initReactions();
+     void initLayoutGroups();
+     void initSwitchingPolicy();
+--- a/kcontrol/kxkb/keyboard_layout.desktop
++++ b/kcontrol/kxkb/keyboard_layout.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 keyboard_layout
+ Icon=preferences-desktop-keyboard-layout
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kxkb/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kxkb/index.html
+ 
+ X-KDE-Library=kcm_keyboard_layout
+ X-KDE-PluginKeyword=keyboard_layout
+@@ -144,60 +143,60 @@
+ Comment[zh_CN]=键盘布局
+ Comment[zh_TW]=鍵盤配置
+ 
+-Keywords=Keyboard,Layout,International
+-Keywords[be]=Клавіятура,Раскладка,Міжнародны,Інтэрнацыяналізацыя,Keyboard,Layout,International
+-Keywords[bg]=Keywords=клавиатура, подредба, български, фонетична, кирилица, БДС, Keyboard, Layout, International
+-Keywords[ca]=Teclat,Disposició,Internacional
+-Keywords[cs]=Klávesnice,Rozvržení klávesnice,Mezinárodní
+-Keywords[csb]=klawiatura,ùstôw klawiaturë,midzënôrodné
+-Keywords[cy]=Bysellfwrdd,Haenlun,Rhyngwladol
+-Keywords[da]=Tastatur,Layout,International
+-Keywords[de]=Tastatur,Belegung,Layout,International
+-Keywords[el]=Πληκτρολόγιο,Διάταξη,Διεθνής
+-Keywords[eo]=klavaro,aranĝo,internacia
+-Keywords[es]=Teclado,Disposición,Diseño,Internacional
+-Keywords[et]=klaviatuur,paigutus,rahvusvaheline
+-Keywords[eu]=Teklatua,Diseinua,Nazio artekoa
+-Keywords[fa]=صفحه کلید، طرح‌بندی، بین‌المللی
+-Keywords[fi]=Näppäimistö,Näppäimistön järjestys,Kansainvälinen
+-Keywords[fr]=clavier,disposition du clavier,périphériques d'entrée,International
+-Keywords[fy]=keyboard,toetsenbord,toetseboerd,keyboard layout,toetseboerdyndieling,toetsenbordindeling,input devices,invoerapparaten,ynfierapparaten,randapparaten
+-Keywords[ga]=Méarchlár,Leagan Amach,Idirnáisiúnta
+-Keywords[gl]=Teclado,Tipo de teclado,Internacional
+-Keywords[he]=מקלדת,פריסה,בינלאומי, Keyboard,Layout,International
+-Keywords[hr]=Keyboard,Keyboard layout,Input Devices,Tipkovnica,Raspored tipkovnice,Međunarodno
+-Keywords[hu]=billentyűzet,kiosztás,nemzetközi
+-Keywords[is]=Lyklaborð,inntakstæki,alþjóðlegt
+-Keywords[it]=tastiera,mappatura,internazionale
+-Keywords[ja]=キーボード,キーボードレイアウト,国際化
+-Keywords[km]=ក្ដារចុច ប្លង់ អន្តរជាតិ
+-Keywords[ko]=키보드,레이아웃,국제
+-Keywords[lt]=Klaviatūra,Klaviatūros išdėstymas,klaviatūros maketas,tarptautinis
+-Keywords[lv]=Tastatūra,Tastatūras izkārtojums, Ievada Iekārtas
+-Keywords[mk]=Keyboard,Layout,International,Тастатура,Распоред,Интернационален
+-Keywords[nb]=tastatur,tasteoppsett,oppsett,språk,internasjonal
+-Keywords[nds]=Tastatuur,Tasttoornen,Layout,Internatschonaal
+-Keywords[ne]=कुञ्जीपाटी, सजावट, अन्तरराष्ट्रिय
+-Keywords[nl]=keyboard,toetsenbord,keyboard layout,toetsenbordindeling,input devices,invoerapparaten,randapparaten
+-Keywords[nn]=tastatur,tasteoppsett,oppsett,språk,internasjonal
+-Keywords[pa]=ਕੀ-ਬੋਰਡ,ਖਾਕਾ,ਅੰਤਰਰਾਸ਼ਟਰੀ
+-Keywords[pl]=Klawiatura,Układ klawiatury,Międzynarodowe
+-Keywords[pt]=Teclado,Disposição,Internacional
+-Keywords[pt_BR]=Teclado,Layout de Teclado,Internacional
+-Keywords[ro]=tastatură,mapare,internaţional
+-Keywords[se]=boallobeavdi,hápmi,riikkaidgaskasaš
+-Keywords[sl]=tipkovnica,razpored,mednarodno
+-Keywords[sr]=Keyboard,Layout,International,тастатура,распоред,интернационално,међународно
+-Keywords[sr at latin]=Keyboard,Layout,International,tastatura,raspored,internacionalno,međunarodno
+-Keywords[sv]=Tangentbord,Layout,Internationell
+-Keywords[ta]=விசைப்பலகை, உருவரை,சர்வதேச
+-Keywords[th]=แป้นพิมพ์,รูปแบบแป้นพิมพ์,ระหว่างประเทศ
+-Keywords[tr]=Klavye,Yerleşim,Düzen,Uluslararası
+-Keywords[uk]=клавіатура,розкладка клавіатури,інтернаціоналізація
+-Keywords[uz]=Тугматаг,Тугмалар тартиби,Ҳалқаро
+-Keywords[vi]=Bàn phím,Bố trí,Quốc tế
+-Keywords[wa]=Taprece,Adjinçmint,eternåcionå,eternåcionåle
+-Keywords[x-test]=xxKeyboard,Layout,Internationalxx
+-Keywords[xh]=Ibhodi yezitshixo,Ubeko lwebhodi yezitshixo, Okwemazwe ngamazwe
+-Keywords[zh_CN]=Keyboard,Layout,International,键盘,布局,国际
+-Keywords[zh_TW]=Keyboard,Layout,International,鍵盤,配置,國際化
++X-KDE-Keywords=Keyboard,Layout,International
++X-KDE-Keywords[be]=Клавіятура,Раскладка,Міжнародны,Інтэрнацыяналізацыя,Keyboard,Layout,International
++X-KDE-Keywords[bg]=Keywords=клавиатура, подредба, български, фонетична, кирилица, БДС, Keyboard, Layout, International
++X-KDE-Keywords[ca]=Teclat,Disposició,Internacional
++X-KDE-Keywords[cs]=Klávesnice,Rozvržení klávesnice,Mezinárodní
++X-KDE-Keywords[csb]=klawiatura,ùstôw klawiaturë,midzënôrodné
++X-KDE-Keywords[cy]=Bysellfwrdd,Haenlun,Rhyngwladol
++X-KDE-Keywords[da]=Tastatur,Layout,International
++X-KDE-Keywords[de]=Tastatur,Belegung,Layout,International
++X-KDE-Keywords[el]=Πληκτρολόγιο,Διάταξη,Διεθνής
++X-KDE-Keywords[eo]=klavaro,aranĝo,internacia
++X-KDE-Keywords[es]=Teclado,Disposición,Diseño,Internacional
++X-KDE-Keywords[et]=klaviatuur,paigutus,rahvusvaheline
++X-KDE-Keywords[eu]=Teklatua,Diseinua,Nazio artekoa
++X-KDE-Keywords[fa]=صفحه کلید، طرح‌بندی، بین‌المللی
++X-KDE-Keywords[fi]=Näppäimistö,Näppäimistön järjestys,Kansainvälinen
++X-KDE-Keywords[fr]=clavier,disposition du clavier,périphériques d'entrée,International
++X-KDE-Keywords[fy]=keyboard,toetsenbord,toetseboerd,keyboard layout,toetseboerdyndieling,toetsenbordindeling,input devices,invoerapparaten,ynfierapparaten,randapparaten
++X-KDE-Keywords[ga]=Méarchlár,Leagan Amach,Idirnáisiúnta
++X-KDE-Keywords[gl]=Teclado,Tipo de teclado,Internacional
++X-KDE-Keywords[he]=מקלדת,פריסה,בינלאומי, Keyboard,Layout,International
++X-KDE-Keywords[hr]=Keyboard,Keyboard layout,Input Devices,Tipkovnica,Raspored tipkovnice,Međunarodno
++X-KDE-Keywords[hu]=billentyűzet,kiosztás,nemzetközi
++X-KDE-Keywords[is]=Lyklaborð,inntakstæki,alþjóðlegt
++X-KDE-Keywords[it]=tastiera,mappatura,internazionale
++X-KDE-Keywords[ja]=キーボード,キーボードレイアウト,国際化
++X-KDE-Keywords[km]=ក្ដារចុច ប្លង់ អន្តរជាតិ
++X-KDE-Keywords[ko]=키보드,레이아웃,국제
++X-KDE-Keywords[lt]=Klaviatūra,Klaviatūros išdėstymas,klaviatūros maketas,tarptautinis
++X-KDE-Keywords[lv]=Tastatūra,Tastatūras izkārtojums, Ievada Iekārtas
++X-KDE-Keywords[mk]=Keyboard,Layout,International,Тастатура,Распоред,Интернационален
++X-KDE-Keywords[nb]=tastatur,tasteoppsett,oppsett,språk,internasjonal
++X-KDE-Keywords[nds]=Tastatuur,Tasttoornen,Layout,Internatschonaal
++X-KDE-Keywords[ne]=कुञ्जीपाटी, सजावट, अन्तरराष्ट्रिय
++X-KDE-Keywords[nl]=keyboard,toetsenbord,keyboard layout,toetsenbordindeling,input devices,invoerapparaten,randapparaten
++X-KDE-Keywords[nn]=tastatur,tasteoppsett,oppsett,språk,internasjonal
++X-KDE-Keywords[pa]=ਕੀ-ਬੋਰਡ,ਖਾਕਾ,ਅੰਤਰਰਾਸ਼ਟਰੀ
++X-KDE-Keywords[pl]=Klawiatura,Układ klawiatury,Międzynarodowe
++X-KDE-Keywords[pt]=Teclado,Disposição,Internacional
++X-KDE-Keywords[pt_BR]=Teclado,Layout de Teclado,Internacional
++X-KDE-Keywords[ro]=tastatură,mapare,internaţional
++X-KDE-Keywords[se]=boallobeavdi,hápmi,riikkaidgaskasaš
++X-KDE-Keywords[sl]=tipkovnica,razpored,mednarodno
++X-KDE-Keywords[sr]=Keyboard,Layout,International,тастатура,распоред,интернационално,међународно
++X-KDE-Keywords[sr at latin]=Keyboard,Layout,International,tastatura,raspored,internacionalno,međunarodno
++X-KDE-Keywords[sv]=Tangentbord,Layout,Internationell
++X-KDE-Keywords[ta]=விசைப்பலகை, உருவரை,சர்வதேச
++X-KDE-Keywords[th]=แป้นพิมพ์,รูปแบบแป้นพิมพ์,ระหว่างประเทศ
++X-KDE-Keywords[tr]=Klavye,Yerleşim,Düzen,Uluslararası
++X-KDE-Keywords[uk]=клавіатура,розкладка клавіатури,інтернаціоналізація
++X-KDE-Keywords[uz]=Тугматаг,Тугмалар тартиби,Ҳалқаро
++X-KDE-Keywords[vi]=Bàn phím,Bố trí,Quốc tế
++X-KDE-Keywords[wa]=Taprece,Adjinçmint,eternåcionå,eternåcionåle
++X-KDE-Keywords[x-test]=xxKeyboard,Layout,Internationalxx
++X-KDE-Keywords[xh]=Ibhodi yezitshixo,Ubeko lwebhodi yezitshixo, Okwemazwe ngamazwe
++X-KDE-Keywords[zh_CN]=Keyboard,Layout,International,键盘,布局,国际
++X-KDE-Keywords[zh_TW]=Keyboard,Layout,International,鍵盤,配置,國際化
+--- a/kcontrol/kxkb/kxkb_part.h
++++ b/kcontrol/kxkb/kxkb_part.h
+@@ -32,7 +32,7 @@
+  public:
+   KxkbPart( QWidget* parent,
+                const QList<QVariant>& args = QList<QVariant>() );
+-  virtual ~KxkbPart() {}
++  virtual ~KxkbPart();
+ 
+  protected slots:
+   bool setLayout(const QString& layoutPair);
+--- a/kcontrol/kxkb/xklavier_adaptor.h
++++ b/kcontrol/kxkb/xklavier_adaptor.h
+@@ -45,6 +45,7 @@
+ 	XkbConfig getGroupNames();
+ 	int filterEvents(XEvent* ev);
+ 	int startListening();
++	int stopListening();
+ 	
+ 	static XKlavierAdaptor* getInstance(Display* dpy);
+ 		
+--- a/kcontrol/kxkb/kxkbcore.cpp
++++ b/kcontrol/kxkb/kxkbcore.cpp
+@@ -76,7 +76,8 @@
+     m_layoutOwnerMap(NULL),
+     m_rules(NULL),
+     m_kxkbWidget(NULL),
+-    actionCollection(NULL)
++    actionCollection(NULL),
++    m_dummyWidget(NULL)
+ {
+     m_status = 0;
+ 
+@@ -92,6 +93,7 @@
+ 
+ KxkbCore::~KxkbCore()
+ {
++    cleanup();
+     delete actionCollection;
+     delete m_kxkbWidget;
+     delete m_rules;
+@@ -119,7 +121,8 @@
+ void KxkbCore::initReactions()
+ {
+     if( ! m_eventsHandled ) {
+-        KApplication::kApplication()->installX11EventFilter(new DummyWidget(this));
++        m_dummyWidget = new DummyWidget(this);
++        KApplication::kApplication()->installX11EventFilter(m_dummyWidget);
+ #ifdef HAVE_XKLAVIER
+         XKlavierAdaptor::getInstance(QX11Info::display())->startListening();
+ #endif
+@@ -129,6 +132,21 @@
+     initKDEShortcut();
+ }
+ 
++void KxkbCore::cleanup()
++{
++    kDebug() << "cleaning up";
++    if( m_dummyWidget != NULL ) {
++#ifdef HAVE_XKLAVIER
++        XKlavierAdaptor::getInstance(QX11Info::display())->stopListening();
++#endif
++        KApplication::kApplication()->removeX11EventFilter(m_dummyWidget);
++        delete m_dummyWidget;
++        m_dummyWidget = NULL;
++        m_eventsHandled = false;
++    }
++    stopKDEShortcut();
++}
++
+ void KxkbCore::initKDEShortcut()
+ {
+     if( m_mode == KXKB_MAIN && !m_kxkbConfig.m_indicatorOnly ) {        // TODO: should component react to kde shortcut?
+@@ -144,14 +162,19 @@
+         kDebug() << "kde shortcut" << kAction->globalShortcut().toString();
+     }
+     else {
+-        if( actionCollection != NULL ) {
+-            KAction* kAction = static_cast<KAction*>(actionCollection->action(0));
+-            disconnect(kAction, SIGNAL(triggered()), this, SLOT(toggled()));
+-            disconnect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)), this, SLOT(settingsChanged(int)));
+-            actionCollection->clear();
+-            delete actionCollection;
+-            actionCollection = NULL;
+-        }
++        stopKDEShortcut();
++    }
++}
++
++void KxkbCore::stopKDEShortcut()
++{
++    if( actionCollection != NULL ) {
++        KAction* kAction = static_cast<KAction*>(actionCollection->action(0));
++        disconnect(kAction, SIGNAL(triggered()), this, SLOT(toggled()));
++        disconnect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)), this, SLOT(settingsChanged(int)));
++        actionCollection->clear();
++        delete actionCollection;
++        actionCollection = NULL;
+     }
+ }
+ 
+@@ -185,7 +208,9 @@
+ 	initLayoutGroups();
+     }
+     else {
+-	updateGroupsFromServer();
++        // for component or indicator we don't need owner map
++        m_kxkbConfig.m_switchingPolicy = SWITCH_POLICY_GLOBAL;
++        updateGroupsFromServer();
+     }
+ 	
+     if( m_kxkbConfig.m_layouts.count() == 1 ) {
+--- a/kcontrol/kxkb/plasma-applet-kxkb.desktop
++++ b/kcontrol/kxkb/plasma-applet-kxkb.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Keyboard Map Tool
+ Name[af]=Sleutelbord Kaart Program
+ Name[ar]=أداة خارطة لوحة المفاتيح
+@@ -66,7 +65,7 @@
+ Icon=keyboard_layout
+ 
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_kxkb
+ X-KDE-UniqueApplet=true
+--- a/kcontrol/kxkb/kxkb_part.cpp
++++ b/kcontrol/kxkb/kxkb_part.cpp
+@@ -60,6 +60,11 @@
+         }
+ }
+ 
++KxkbPart::~KxkbPart()
++{
++    delete m_kxkbCore;
++}
++
+ bool 
+ KxkbPart::setLayout(const QString& layoutPair)
+ {
+--- a/kcontrol/kxkb/kxkb.desktop
++++ b/kcontrol/kxkb/kxkb.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Application
+ Name=Keyboard Map Tool
+ Name[af]=Sleutelbord Kaart Program
+--- a/kcontrol/keyboard/keyboard.desktop
++++ b/kcontrol/keyboard/keyboard.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 keyboard
+ Icon=preferences-desktop-keyboard
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/keyboard/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/keyboard/index.html
+ 
+ X-KDE-Library=kcm_keyboard
+ X-KDE-PluginKeyword=keyboard
+@@ -145,59 +144,59 @@
+ Comment[zh_CN]=键盘设置
+ Comment[zh_TW]=鍵盤設定
+ 
+-Keywords=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
+-Keywords[be]=Клавіятура,Паўтор клавішаў,Гучнасць націску,Прылады ўводу,Паўтор,Гучнасць,Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
+-Keywords[bg]=Keywords=клавиатура, настройки, повторение, клавиши, задържане, Keyboard, Keyboard repeat, Click volume, Input Devices, repeat, volume
+-Keywords[ca]=Teclat,Repetició del teclat,Volum del clic,dispositius d'entrada,repetició,volum
+-Keywords[cs]=Klávesnice,Opakování klávesy,Hlasitost stisknutí,Vstupní zařízení,Opakování,Hlasitost
+-Keywords[csb]=Klawiatura,powtórzenié klawiaturë,głosnosc klëkniãcô,ùrządzenia wéńdzeniowé,powtórzenié,głosnosc
+-Keywords[cy]=Bysellfwrdd,Allweddell,Ailadrodd bysellfwrdd,Swn y clic,Dyfeisiau Mewnbwn,ailadrodd,sain
+-Keywords[da]=Tastatur,Tastaturgentagelse,Klikstyrke,Inddata-enheder,gentagelse,lydstyrke
+-Keywords[de]=Tastatur,Tastenwiederholung,Klicklautstärke,Eingabegeräte,Wiederholung,Lautstärke
+-Keywords[el]=Πληκτρολόγιο,Επανάληψη πληκτρολογίου,Ένταση κλικ,Συσκευές εισόδου,επανάληψη,ένταση
+-Keywords[eo]=klavaro,klavripeto,klako,laŭteco,enigo,aparatoj,ripeto,laŭteco,aranĝo
+-Keywords[es]=Teclado,Repetición del teclado,Volumen de la pulsación,Dispositivos de entrada,repetición,volumen,Disposición,Internacional
+-Keywords[et]=klaviatuur,klaviatuuri kordus,kliki helitugevus,klõpsu helitugevus,sisendseadmed,kordus,helitugevus
+-Keywords[eu]=Teklatua,Teklatu errepikapena,Klikadaren bolumena, Sarrerako gailuak,errepikatu,bolumena
+-Keywords[fa]=صفحه کلید، تکرار صفحه کلید، حجم فشار، دستگاههای ورودی، تکرار، حجم صدا
+-Keywords[fi]=Näppäimistö,Näppäintoisto,Näppäinäänet,Syöttölaitteet,toisto, äänenvoimakkuus
+-Keywords[fr]=clavier,répétition,clics de touches,périphériques d'entrée,volume
+-Keywords[fy]=keyboard,toetseboerd,keyboard repeat,toetseboerd werhelling,klikvolume,klikfolume,input devices,ynfier apparaten,invoerapparaten,toetsenbord,toetsenbordherhaling,herhaling,werhelling,volume,folume,randapparatuur,internationaal,randapparaten
+-Keywords[gl]=Teclado,repetición do teclado,Volume da tecla,Dispositivos de entrada,repetición,volume
+-Keywords[he]=לוח מקשים,מקלדת,חזרה על תו,עוצמת הקשה,התקני קלט,חזרה,עצמה, Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
+-Keywords[hr]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volme,Tipkovnica,glasnoća,uređaji za unos,ponavljanje,raspored,
+-Keywords[hu]=billentyűzet,billentyűismétlés,leütési hang,beviteli eszközök,ismétlés,hangerő
+-Keywords[is]=Lyklaborð,inntakstæki,endurtekning,útlit,alþjóðlegt
+-Keywords[it]=tastiera,ripetizione dei tasti,volume del clic,dispositivi di input,layout,volume
+-Keywords[ja]=キーボード,キーボードリピート,クリック音量,入力デバイス,リピート,音量
+-Keywords[km]=ក្ដារ​ចុច ការ​ធ្វើ​តាម​ក្ដារចុច សំឡេង​ចុច ឧបករណ៍​បញ្ចូល ធ្វើ​ម្ដង​ទៀត សំឡេង
+-Keywords[ko]=키보드,키보드 반복,입력 음량,입력 장치,반복,음량
+-Keywords[lt]=Klaviatūra,Klaviatūros kartojimai,Paspaudimo garsas,Įvedimo įrenginiai,kartojimas, garsas
+-Keywords[lv]=Tastatūra,Tastatūras atkārtošanās,Klikšķu līmenis,Ievades Iekārtas,atkārtošanās,līmenis,Izkārtojums
+-Keywords[mk]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,Тастатура,Повторување на копчиња,Гласност на кликот,Влезни уреди,повтори,гласност
+-Keywords[nb]=Tastatur,Tastaturgjentagelse,Klikkevolum,Innenheter,gjentagelse,volum
+-Keywords[nds]=Tastatuur,Tastwedderhalen,Klick-Luutstärk,Ingaavreedschappen,wedderhalen,Luutstärk
+-Keywords[ne]=कुञ्जीपाटी, कुञ्जीपाटी दोहोर्याउनुहोस्, भोल्युम क्लिक गर्नुहोस्, आगत यन्त्र, दोहोर्याउनुहोस्, भोल्युम
+-Keywords[nl]=keyboard,keyboard repeat,klikvolume,input devices,invoerapparaten,toetsenbord,toetsenbordherhaling,herhaling,volume,randapparatuur,internationaal,randapparaten
+-Keywords[nn]=tastatur,tastaturrepetisjon,tasterepetisjon,inneiningar,tasteklikk,repetisjon,lydstyrke,volum
+-Keywords[pa]=ਕੀ-ਬੋਰਡ,ਕੀ-ਬੋਰਡ repeat,Click volume,Input ਜੰਤਰ,repeat,ਆਵਾਜ਼
+-Keywords[pl]=Klawiatura,powtórzenie klawiatury,głośność kliknięcia,urządzenia wejściowe,powtórzenie,głośność
+-Keywords[pt]=teclado,repetição do teclado,volume,dispositivos de entrada,repetição,formato,internacional
+-Keywords[pt_BR]=Teclado,repetição de teclado,volume do clique,dispositivos de entrada,repetição,volume
+-Keywords[ro]=tastatură,repetiţie,volum,clic,dispozitiv de intrare,repetare,volum
+-Keywords[se]=boallobeavdi,boallobeavdegeardduheapmi,jietnadássi,geardduheapmi,sisa ovttadagat
+-Keywords[sl]=tipkovnica,ponovitev tipk,glasnost tipkanja,vhodne naprave,ponovitev,glasnost
+-Keywords[sr]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,тастатура,јачина клика,улаз,унос
+-Keywords[sr at latin]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,tastatura,jačina klika,ulaz,unos
+-Keywords[sv]=Tangentbord,Tangentbordsupprepning,Klickvolym,Inenheter,upprepning,volym
+-Keywords[ta]=விசைப்பலகை,விசைப்பலகை திரும்பவும்,ஒலியளவை அழுத்தவும்,உள்ளிடு சாதனங்கள்,திரும்ப,ஒலியளவு
+-Keywords[tg]=Забонак,такрори Забонак,андозаи пахш,дастгоҳҳои вурудӣ,такрор,андоза
+-Keywords[th]=แป้นพิมพ์,การจัดวางแป้นพิมพ์,อุปกรณ์ใส่ข้อมูลา,การกดปุ่มค้าง,กดปุ่มค้างซ้ำ,ระดับเสียง
+-Keywords[tr]=Klavye,Klavye tekrarı,Tıklama sesi,Girdi Aygıtları,tekrar,ses,yerleşim,uluslar arası
+-Keywords[uk]=клавіатура,повтор клавіш,гучність клацань,вхідні пристрої,повтор,гучність
+-Keywords[uz]=Тугматаг,товуш баландлиги,қайтариш,Киритиш ускуналари,Босиш товуши
+-Keywords[vi]=Bàn phím,Bàn phím lặp,Âm lượng nhấn,Thiết bị Vào,lặp,âm lượng
+-Keywords[x-test]=xxKeyboard,Keyboard repeat,Click volume,Input Devices,repeat,volumexx
+-Keywords[xh]=Ibhodi yezitshixo,Ibhodi yezitshixo phinda, Nqakraza izinga lelizwi,Amacebo Ongeniso,phinda, izinga lelizwi
+-Keywords[zh_CN]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,键盘,键盘重复,击键音量,输入设备,重复,音量
+-Keywords[zh_TW]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,鍵盤,鍵盤重複,敲擊音量,輸入裝置,重複速度,音量
++X-KDE-Keywords=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
++X-KDE-Keywords[be]=Клавіятура,Паўтор клавішаў,Гучнасць націску,Прылады ўводу,Паўтор,Гучнасць,Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
++X-KDE-Keywords[bg]=Keywords=клавиатура, настройки, повторение, клавиши, задържане, Keyboard, Keyboard repeat, Click volume, Input Devices, repeat, volume
++X-KDE-Keywords[ca]=Teclat,Repetició del teclat,Volum del clic,dispositius d'entrada,repetició,volum
++X-KDE-Keywords[cs]=Klávesnice,Opakování klávesy,Hlasitost stisknutí,Vstupní zařízení,Opakování,Hlasitost
++X-KDE-Keywords[csb]=Klawiatura,powtórzenié klawiaturë,głosnosc klëkniãcô,ùrządzenia wéńdzeniowé,powtórzenié,głosnosc
++X-KDE-Keywords[cy]=Bysellfwrdd,Allweddell,Ailadrodd bysellfwrdd,Swn y clic,Dyfeisiau Mewnbwn,ailadrodd,sain
++X-KDE-Keywords[da]=Tastatur,Tastaturgentagelse,Klikstyrke,Inddata-enheder,gentagelse,lydstyrke
++X-KDE-Keywords[de]=Tastatur,Tastenwiederholung,Klicklautstärke,Eingabegeräte,Wiederholung,Lautstärke
++X-KDE-Keywords[el]=Πληκτρολόγιο,Επανάληψη πληκτρολογίου,Ένταση κλικ,Συσκευές εισόδου,επανάληψη,ένταση
++X-KDE-Keywords[eo]=klavaro,klavripeto,klako,laŭteco,enigo,aparatoj,ripeto,laŭteco,aranĝo
++X-KDE-Keywords[es]=Teclado,Repetición del teclado,Volumen de la pulsación,Dispositivos de entrada,repetición,volumen,Disposición,Internacional
++X-KDE-Keywords[et]=klaviatuur,klaviatuuri kordus,kliki helitugevus,klõpsu helitugevus,sisendseadmed,kordus,helitugevus
++X-KDE-Keywords[eu]=Teklatua,Teklatu errepikapena,Klikadaren bolumena, Sarrerako gailuak,errepikatu,bolumena
++X-KDE-Keywords[fa]=صفحه کلید، تکرار صفحه کلید، حجم فشار، دستگاههای ورودی، تکرار، حجم صدا
++X-KDE-Keywords[fi]=Näppäimistö,Näppäintoisto,Näppäinäänet,Syöttölaitteet,toisto, äänenvoimakkuus
++X-KDE-Keywords[fr]=clavier,répétition,clics de touches,périphériques d'entrée,volume
++X-KDE-Keywords[fy]=keyboard,toetseboerd,keyboard repeat,toetseboerd werhelling,klikvolume,klikfolume,input devices,ynfier apparaten,invoerapparaten,toetsenbord,toetsenbordherhaling,herhaling,werhelling,volume,folume,randapparatuur,internationaal,randapparaten
++X-KDE-Keywords[gl]=Teclado,repetición do teclado,Volume da tecla,Dispositivos de entrada,repetición,volume
++X-KDE-Keywords[he]=לוח מקשים,מקלדת,חזרה על תו,עוצמת הקשה,התקני קלט,חזרה,עצמה, Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume
++X-KDE-Keywords[hr]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volme,Tipkovnica,glasnoća,uređaji za unos,ponavljanje,raspored,
++X-KDE-Keywords[hu]=billentyűzet,billentyűismétlés,leütési hang,beviteli eszközök,ismétlés,hangerő
++X-KDE-Keywords[is]=Lyklaborð,inntakstæki,endurtekning,útlit,alþjóðlegt
++X-KDE-Keywords[it]=tastiera,ripetizione dei tasti,volume del clic,dispositivi di input,layout,volume
++X-KDE-Keywords[ja]=キーボード,キーボードリピート,クリック音量,入力デバイス,リピート,音量
++X-KDE-Keywords[km]=ក្ដារ​ចុច ការ​ធ្វើ​តាម​ក្ដារចុច សំឡេង​ចុច ឧបករណ៍​បញ្ចូល ធ្វើ​ម្ដង​ទៀត សំឡេង
++X-KDE-Keywords[ko]=키보드,키보드 반복,입력 음량,입력 장치,반복,음량
++X-KDE-Keywords[lt]=Klaviatūra,Klaviatūros kartojimai,Paspaudimo garsas,Įvedimo įrenginiai,kartojimas, garsas
++X-KDE-Keywords[lv]=Tastatūra,Tastatūras atkārtošanās,Klikšķu līmenis,Ievades Iekārtas,atkārtošanās,līmenis,Izkārtojums
++X-KDE-Keywords[mk]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,Тастатура,Повторување на копчиња,Гласност на кликот,Влезни уреди,повтори,гласност
++X-KDE-Keywords[nb]=Tastatur,Tastaturgjentagelse,Klikkevolum,Innenheter,gjentagelse,volum
++X-KDE-Keywords[nds]=Tastatuur,Tastwedderhalen,Klick-Luutstärk,Ingaavreedschappen,wedderhalen,Luutstärk
++X-KDE-Keywords[ne]=कुञ्जीपाटी, कुञ्जीपाटी दोहोर्याउनुहोस्, भोल्युम क्लिक गर्नुहोस्, आगत यन्त्र, दोहोर्याउनुहोस्, भोल्युम
++X-KDE-Keywords[nl]=keyboard,keyboard repeat,klikvolume,input devices,invoerapparaten,toetsenbord,toetsenbordherhaling,herhaling,volume,randapparatuur,internationaal,randapparaten
++X-KDE-Keywords[nn]=tastatur,tastaturrepetisjon,tasterepetisjon,inneiningar,tasteklikk,repetisjon,lydstyrke,volum
++X-KDE-Keywords[pa]=ਕੀ-ਬੋਰਡ,ਕੀ-ਬੋਰਡ repeat,Click volume,Input ਜੰਤਰ,repeat,ਆਵਾਜ਼
++X-KDE-Keywords[pl]=Klawiatura,powtórzenie klawiatury,głośność kliknięcia,urządzenia wejściowe,powtórzenie,głośność
++X-KDE-Keywords[pt]=teclado,repetição do teclado,volume,dispositivos de entrada,repetição,formato,internacional
++X-KDE-Keywords[pt_BR]=Teclado,repetição de teclado,volume do clique,dispositivos de entrada,repetição,volume
++X-KDE-Keywords[ro]=tastatură,repetiţie,volum,clic,dispozitiv de intrare,repetare,volum
++X-KDE-Keywords[se]=boallobeavdi,boallobeavdegeardduheapmi,jietnadássi,geardduheapmi,sisa ovttadagat
++X-KDE-Keywords[sl]=tipkovnica,ponovitev tipk,glasnost tipkanja,vhodne naprave,ponovitev,glasnost
++X-KDE-Keywords[sr]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,тастатура,јачина клика,улаз,унос
++X-KDE-Keywords[sr at latin]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,tastatura,jačina klika,ulaz,unos
++X-KDE-Keywords[sv]=Tangentbord,Tangentbordsupprepning,Klickvolym,Inenheter,upprepning,volym
++X-KDE-Keywords[ta]=விசைப்பலகை,விசைப்பலகை திரும்பவும்,ஒலியளவை அழுத்தவும்,உள்ளிடு சாதனங்கள்,திரும்ப,ஒலியளவு
++X-KDE-Keywords[tg]=Забонак,такрори Забонак,андозаи пахш,дастгоҳҳои вурудӣ,такрор,андоза
++X-KDE-Keywords[th]=แป้นพิมพ์,การจัดวางแป้นพิมพ์,อุปกรณ์ใส่ข้อมูลา,การกดปุ่มค้าง,กดปุ่มค้างซ้ำ,ระดับเสียง
++X-KDE-Keywords[tr]=Klavye,Klavye tekrarı,Tıklama sesi,Girdi Aygıtları,tekrar,ses,yerleşim,uluslar arası
++X-KDE-Keywords[uk]=клавіатура,повтор клавіш,гучність клацань,вхідні пристрої,повтор,гучність
++X-KDE-Keywords[uz]=Тугматаг,товуш баландлиги,қайтариш,Киритиш ускуналари,Босиш товуши
++X-KDE-Keywords[vi]=Bàn phím,Bàn phím lặp,Âm lượng nhấn,Thiết bị Vào,lặp,âm lượng
++X-KDE-Keywords[x-test]=xxKeyboard,Keyboard repeat,Click volume,Input Devices,repeat,volumexx
++X-KDE-Keywords[xh]=Ibhodi yezitshixo,Ibhodi yezitshixo phinda, Nqakraza izinga lelizwi,Amacebo Ongeniso,phinda, izinga lelizwi
++X-KDE-Keywords[zh_CN]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,键盘,键盘重复,击键音量,输入设备,重复,音量
++X-KDE-Keywords[zh_TW]=Keyboard,Keyboard repeat,Click volume,Input Devices,repeat,volume,鍵盤,鍵盤重複,敲擊音量,輸入裝置,重複速度,音量
+--- a/kcontrol/style/style.desktop
++++ b/kcontrol/style/style.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 style
+ Icon=preferences-desktop-theme-style
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/kcmstyle/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/kcmstyle/index.html
+ 
+ X-KDE-Library=kcm_style
+ X-KDE-Init-Symbol=kcminit_style
+@@ -139,62 +138,62 @@
+ Comment[zh_CN]=允许操纵修饰行为和更改 KDE 的样式
+ Comment[zh_TW]=讓您控制視窗元件 (widget) 的操作方式,以及更改 KDE 的風格
+ 
+-Keywords=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
+-Keywords[af]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE programme
+-Keywords[be]=Стыль,Стылі,Выгляд,Вонкавы выгляд,Віджэт,Значкі,Панелі начынняў,Тэкст,Падсвятленне,Праграмы,Праграмы KDE,style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
+-Keywords[bg]=Keywords=стил, тема, външен, вид, икони, текст, цветове, style, styles, look, widget, icons, toolbars, text, highlight, apps, KDE applications
+-Keywords[br]=giz,gizioù,widget,neuz,arlunoù,barrennoù an ostilhoù,skrid,highlight,meziantoù,meziantoù KDE
+-Keywords[ca]=estil,estils,temes,aspecte,objecte visual,estri,icones,barres d'eines,text,ressaltat,aplicacions,aplicacions KDE
+-Keywords[cs]=Styl,Témata,Motivy,Vzhled,Text,Zvýraznění,Tlačítka,Aplikace KDE
+-Keywords[csb]=sztél,sztéle,wëzdrzatk,òkno,ikònë,lëstwë nôrzãdzów,tekstë,nôdpisë,pòdskrzënienié,programë,programë KDE
+-Keywords[cy]=arddull,arddulliau,golwg,teclyn,celfigyn,eiconau,bar offer,testun,amlygu,rhaglenni,rhaglenni  KDE
+-Keywords[da]=stil,udseende,kontrol,ikoner,værktøjslinjer,tekst,fremhæv,prog,KDE-programmer
+-Keywords[de]=Stile,Design,Themes,Schema,Elemente,Bildschirmelemente,Icons,Bedienelemente,Schriften,Symbole,Werkzeugleisten,Text,Hervorhebungen,Knöpfe,Anwendungen,Programme,KDE-Programme
+-Keywords[el]=στυλ,στυλ,εμφάνιση,γραφικό συστατικό,εικονίδια,γραμμές εργαλείων,κείμενο,τονισμός,εφαρμογές,εφαρμογές KDE
+-Keywords[eo]=stilo,aspekto,fenestraĵo,piktogramo,illistelo,aplikaĵoj
+-Keywords[es]=estilo,estilos,temas,aspecto,objeto visual,widget,texto,resaltado,botones, aplicaciones, aplicaciones KDE
+-Keywords[et]=stiil,stiilid,teemad,välimus,elemendid,vidinad,menüüriba,ikoonid, tööriistaribad,rakendused,KDE rakendused
+-Keywords[eu]=estiloa,estiloak,itxura,widget-a,ikonoak,tresna-barrak,testua, nabarmenketa,aplikazioak,KDE aplikazioak
+-Keywords[fa]=سبک، سبکها، ظاهر، عنصر، شمایلها، میله‌ ابزارها، متن، مشخص، کاربردها، کاربردهای KDE
+-Keywords[fi]=tyyli,tyylit,ulkonäkö,kontrolli,kuvakkeet,työkalurivit,teksti,korostus,sovellukset,KDE sovellukset
+-Keywords[fr]=style,styles,thème,apparence,widget,élément graphique,barre demenus,MacOS,police,couleur,non KDE,icône,icônes,barre d'outils,barres d'outils,barres de menus,texte,surbrillance,sélection,bouton,souris,transparence,déplacement,écran,applications,programmes,programmes non KDE,applications non KDE
+-Keywords[fy]=styl,stylen,look,üterlik,widget,icons,ikoan,ikoanen,wurkbalke,tekst,highlight,pljochtsje,apps,KDE-tapassingen,programma's,KDE-programma's,tapassingen
+-Keywords[ga]=stíl,stíleanna,téama,cuma,giuirléid,deilbhíní,barraí uirlisí,téacs,aibhsiú,feidhmchláir,feidhmchláir KDE
+-Keywords[gl]=estilo,estilos,apariencia,widget,iconas,barras de ferramentas,texto,resaltar,aplicacións,aplicacións KDE
+-Keywords[he]=סגנון,מראה,פריטים,סמלים,סרגל כלים,טקסט,הדגשה,יישומים,יישומים של KDE,style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
+-Keywords[hr]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,stil,izgled,ikone,alatne trake,tekst,naglašavanje,KDE aplikacije
+-Keywords[hu]=stílus,stílusok,kinézet,grafikus elem,ikonok,eszköztárak,szöveg,kiemelés,alkalmazások,KDE alkalmazások
+-Keywords[is]=stíll,stílar,þemur,þema,útlit,valmyndir,valslá,MacOS,letur,leturgerðir,leturgerð,gegnsætt,skjár,forrit, táknmyndir,takkar,mús,takki,hnappur
+-Keywords[it]=stile,stili,aspetto,widget,elemento grafico,icone,barre degli strumenti,testo,evidenziazione,applicazioni,applicazioni KDE
+-Keywords[ja]=スタイル,スタイル,外観,ウィジェット,アイコン,ツールバー,テキスト,ハイライト,アプリ,KDEアプリケーション
+-Keywords[km]=រចនាប័ទ្ម រចនាប័ទ្ម រូបរាង ធាតុ​ក្រាហ្វិក រូប​តំណាង របារ​ឧបករណ៍ អត្ថបទ ការ​បន្លិច កម្មវិធី កម្មវិធី​របស់ KDE
+-Keywords[ko]=스타일,모양,위젯,아이콘,도구 모음,텍스트,강조,프로그램,KDE 프로그램
+-Keywords[lt]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications, stilius,stiliai,išvaizda,valdiklis,ženkliukai,piktogramos,įrankių juostos,paryškinimas,KDE taikomosios programos
+-Keywords[mk]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,стил,стилови,изглед,икони,алатници,текст,KDE апликации
+-Keywords[nb]=stil,stiler,temaer,utseende,menylinje,skrifttype,farger,ikke-KDE,ikoner,verktøylinje,tekst,knapper,mus,flytting,skjerm,programmer,ikke-KDE programmer
+-Keywords[nds]=Stil,Stilen,look,widget,Lüttbiller,Warktüüchbalken,Text,markeren,Programmen,KDE-Programmen,Bedeenelement
+-Keywords[ne]=शैली, शैलीहरू, हेर्नुहोस्, विजेट, प्रतिमा, उपकरणपट्टी, पाठ, हाइलाइट,apps,KDE अनुप्रयोगहरू
+-Keywords[nl]=stijl,stijlen,look,uiterlijk,widget,icons,iconen,pictogrammen,werkbalken,tekst,highlight,accentuatie,apps,KDE-toepassingen,programma's,KDE-programma's,toepassingen
+-Keywords[nn]=stil,tema,utsjånad,bunad,element,skjermelement,verktøylinje,tekst,markering,program,KDE-program
+-Keywords[pa]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,ਸ਼ੈਲੀ,ਸ਼ੈਲੀਆਂ,ਦਿੱਖ,ਆਈਕਾਨ,ਸੰਦ-ਪੱਟੀ,ਪਾਠ,ਉਘਾੜੋ,ਕਾਰਜ
+-Keywords[pl]=styl,style,wygląd,okienko,ikony,paski narzędzi,tekst,napisy,podświetlenie,programy,programy KDE
+-Keywords[pt]=estilo,estilos,aparência,elemento,ícones,ferramentas,texto,realce,aplicações,aplicações do KDE
+-Keywords[pt_BR]=estilo,estilos,aparência,widget,ícones,barra de ferramentas,texto,realce,aplicativos,aplicativos não-KDE
+-Keywords[ro]=stil,aspect,componentă,widget,iconiţe,bare de unelte,text,evidenţiere,aplicaţii,KDE
+-Keywords[se]=stiila,fáddá,fárda,áđat,govažat,neavvoholggat,teaksta,merken,prográmmat,KDE-prográmmat
+-Keywords[sl]=slog,slogi,stil,stili,teme,videz,izgled,gradnik,menujska vrstica,osvetlitev,programi,programi za KDEi
+-Keywords[sr]=style,styles,look,widget,icons,toolbars,text,highlight,apps,стил,стилови,теме,изглед,контрола,иконе,траке са алатом,текст,истицање,програми,КДЕ програми
+-Keywords[sr at latin]=style,styles,look,widget,icons,toolbars,text,highlight,apps,stil,stilovi,teme,izgled,kontrola,ikone,trake sa alatom,tekst,isticanje,programi,KDE programi
+-Keywords[sv]=stil,stilar,utseende,komponent,ikoner,verktygrader,text,färgläggning, program,KDE-program
+-Keywords[ta]=பாணி,பாணிகள்,பார்,வளைவு,சின்னம்,கருவிப்பட்டி,உரை,தனிப்படுத்து,பயன்பாடு,கேடியி பயன்பாடுகள்
+-Keywords[th]=ลักษณะ,ที่มองเห็น,วิตเจ็ต,ไอคอน,แถบเครื่องมือ,ข้อความ,ทำตัวเน้น,โปรแกรม,แอพพลิเคชัน KDE
+-Keywords[tr]=simgeler,stil,stiller,dekor,dekorlar,tema,temalar,görünüm,parçacık,menü,KDE uygulamaları,araç çubukları,uygulamalar
+-Keywords[uk]=стиль,стилі,вигляд,віджет,піктограми,пенали, текст,виділення,програми KDE
+-Keywords[uz]=услуб,услублар,ташқи кўриниши,виджет,нишончалар,асбоблар панели,матн,белгилаш,дастурлар,KDE дастурлари
+-Keywords[vi]=kiểu,các kiểu,nhìn,ô điều khiển,biểu tượng,thanh công cụ,văn bản,tô sáng,ứng dụng,ứng dụng KDE
+-Keywords[x-test]=xxstyle,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applicationsxx
+-Keywords[xh]=uhlobo, iintlobo, jonga, widget, amaphawu emifanekiso, iibar zesixhobo, umbhalo, phawula, apps, izicelo ze KDE
+-Keywords[zh_CN]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,风格,外观,窗口部件,图标,工具栏,文字,突出,KDE 程序,KDE 应用程序
+-Keywords[zh_TW]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,風格,主題,外觀,視窗元件,圖示,工具列,文字,突出顯示,應用程式,KDE 應用程式
++X-KDE-Keywords=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
++X-KDE-Keywords[af]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE programme
++X-KDE-Keywords[be]=Стыль,Стылі,Выгляд,Вонкавы выгляд,Віджэт,Значкі,Панелі начынняў,Тэкст,Падсвятленне,Праграмы,Праграмы KDE,style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
++X-KDE-Keywords[bg]=Keywords=стил, тема, външен, вид, икони, текст, цветове, style, styles, look, widget, icons, toolbars, text, highlight, apps, KDE applications
++X-KDE-Keywords[br]=giz,gizioù,widget,neuz,arlunoù,barrennoù an ostilhoù,skrid,highlight,meziantoù,meziantoù KDE
++X-KDE-Keywords[ca]=estil,estils,temes,aspecte,objecte visual,estri,icones,barres d'eines,text,ressaltat,aplicacions,aplicacions KDE
++X-KDE-Keywords[cs]=Styl,Témata,Motivy,Vzhled,Text,Zvýraznění,Tlačítka,Aplikace KDE
++X-KDE-Keywords[csb]=sztél,sztéle,wëzdrzatk,òkno,ikònë,lëstwë nôrzãdzów,tekstë,nôdpisë,pòdskrzënienié,programë,programë KDE
++X-KDE-Keywords[cy]=arddull,arddulliau,golwg,teclyn,celfigyn,eiconau,bar offer,testun,amlygu,rhaglenni,rhaglenni  KDE
++X-KDE-Keywords[da]=stil,udseende,kontrol,ikoner,værktøjslinjer,tekst,fremhæv,prog,KDE-programmer
++X-KDE-Keywords[de]=Stile,Design,Themes,Schema,Elemente,Bildschirmelemente,Icons,Bedienelemente,Schriften,Symbole,Werkzeugleisten,Text,Hervorhebungen,Knöpfe,Anwendungen,Programme,KDE-Programme
++X-KDE-Keywords[el]=στυλ,στυλ,εμφάνιση,γραφικό συστατικό,εικονίδια,γραμμές εργαλείων,κείμενο,τονισμός,εφαρμογές,εφαρμογές KDE
++X-KDE-Keywords[eo]=stilo,aspekto,fenestraĵo,piktogramo,illistelo,aplikaĵoj
++X-KDE-Keywords[es]=estilo,estilos,temas,aspecto,objeto visual,widget,texto,resaltado,botones, aplicaciones, aplicaciones KDE
++X-KDE-Keywords[et]=stiil,stiilid,teemad,välimus,elemendid,vidinad,menüüriba,ikoonid, tööriistaribad,rakendused,KDE rakendused
++X-KDE-Keywords[eu]=estiloa,estiloak,itxura,widget-a,ikonoak,tresna-barrak,testua, nabarmenketa,aplikazioak,KDE aplikazioak
++X-KDE-Keywords[fa]=سبک، سبکها، ظاهر، عنصر، شمایلها، میله‌ ابزارها، متن، مشخص، کاربردها، کاربردهای KDE
++X-KDE-Keywords[fi]=tyyli,tyylit,ulkonäkö,kontrolli,kuvakkeet,työkalurivit,teksti,korostus,sovellukset,KDE sovellukset
++X-KDE-Keywords[fr]=style,styles,thème,apparence,widget,élément graphique,barre demenus,MacOS,police,couleur,non KDE,icône,icônes,barre d'outils,barres d'outils,barres de menus,texte,surbrillance,sélection,bouton,souris,transparence,déplacement,écran,applications,programmes,programmes non KDE,applications non KDE
++X-KDE-Keywords[fy]=styl,stylen,look,üterlik,widget,icons,ikoan,ikoanen,wurkbalke,tekst,highlight,pljochtsje,apps,KDE-tapassingen,programma's,KDE-programma's,tapassingen
++X-KDE-Keywords[ga]=stíl,stíleanna,téama,cuma,giuirléid,deilbhíní,barraí uirlisí,téacs,aibhsiú,feidhmchláir,feidhmchláir KDE
++X-KDE-Keywords[gl]=estilo,estilos,apariencia,widget,iconas,barras de ferramentas,texto,resaltar,aplicacións,aplicacións KDE
++X-KDE-Keywords[he]=סגנון,מראה,פריטים,סמלים,סרגל כלים,טקסט,הדגשה,יישומים,יישומים של KDE,style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications
++X-KDE-Keywords[hr]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,stil,izgled,ikone,alatne trake,tekst,naglašavanje,KDE aplikacije
++X-KDE-Keywords[hu]=stílus,stílusok,kinézet,grafikus elem,ikonok,eszköztárak,szöveg,kiemelés,alkalmazások,KDE alkalmazások
++X-KDE-Keywords[is]=stíll,stílar,þemur,þema,útlit,valmyndir,valslá,MacOS,letur,leturgerðir,leturgerð,gegnsætt,skjár,forrit, táknmyndir,takkar,mús,takki,hnappur
++X-KDE-Keywords[it]=stile,stili,aspetto,widget,elemento grafico,icone,barre degli strumenti,testo,evidenziazione,applicazioni,applicazioni KDE
++X-KDE-Keywords[ja]=スタイル,スタイル,外観,ウィジェット,アイコン,ツールバー,テキスト,ハイライト,アプリ,KDEアプリケーション
++X-KDE-Keywords[km]=រចនាប័ទ្ម រចនាប័ទ្ម រូបរាង ធាតុ​ក្រាហ្វិក រូប​តំណាង របារ​ឧបករណ៍ អត្ថបទ ការ​បន្លិច កម្មវិធី កម្មវិធី​របស់ KDE
++X-KDE-Keywords[ko]=스타일,모양,위젯,아이콘,도구 모음,텍스트,강조,프로그램,KDE 프로그램
++X-KDE-Keywords[lt]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications, stilius,stiliai,išvaizda,valdiklis,ženkliukai,piktogramos,įrankių juostos,paryškinimas,KDE taikomosios programos
++X-KDE-Keywords[mk]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,стил,стилови,изглед,икони,алатници,текст,KDE апликации
++X-KDE-Keywords[nb]=stil,stiler,temaer,utseende,menylinje,skrifttype,farger,ikke-KDE,ikoner,verktøylinje,tekst,knapper,mus,flytting,skjerm,programmer,ikke-KDE programmer
++X-KDE-Keywords[nds]=Stil,Stilen,look,widget,Lüttbiller,Warktüüchbalken,Text,markeren,Programmen,KDE-Programmen,Bedeenelement
++X-KDE-Keywords[ne]=शैली, शैलीहरू, हेर्नुहोस्, विजेट, प्रतिमा, उपकरणपट्टी, पाठ, हाइलाइट,apps,KDE अनुप्रयोगहरू
++X-KDE-Keywords[nl]=stijl,stijlen,look,uiterlijk,widget,icons,iconen,pictogrammen,werkbalken,tekst,highlight,accentuatie,apps,KDE-toepassingen,programma's,KDE-programma's,toepassingen
++X-KDE-Keywords[nn]=stil,tema,utsjånad,bunad,element,skjermelement,verktøylinje,tekst,markering,program,KDE-program
++X-KDE-Keywords[pa]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,ਸ਼ੈਲੀ,ਸ਼ੈਲੀਆਂ,ਦਿੱਖ,ਆਈਕਾਨ,ਸੰਦ-ਪੱਟੀ,ਪਾਠ,ਉਘਾੜੋ,ਕਾਰਜ
++X-KDE-Keywords[pl]=styl,style,wygląd,okienko,ikony,paski narzędzi,tekst,napisy,podświetlenie,programy,programy KDE
++X-KDE-Keywords[pt]=estilo,estilos,aparência,elemento,ícones,ferramentas,texto,realce,aplicações,aplicações do KDE
++X-KDE-Keywords[pt_BR]=estilo,estilos,aparência,widget,ícones,barra de ferramentas,texto,realce,aplicativos,aplicativos não-KDE
++X-KDE-Keywords[ro]=stil,aspect,componentă,widget,iconiţe,bare de unelte,text,evidenţiere,aplicaţii,KDE
++X-KDE-Keywords[se]=stiila,fáddá,fárda,áđat,govažat,neavvoholggat,teaksta,merken,prográmmat,KDE-prográmmat
++X-KDE-Keywords[sl]=slog,slogi,stil,stili,teme,videz,izgled,gradnik,menujska vrstica,osvetlitev,programi,programi za KDEi
++X-KDE-Keywords[sr]=style,styles,look,widget,icons,toolbars,text,highlight,apps,стил,стилови,теме,изглед,контрола,иконе,траке са алатом,текст,истицање,програми,КДЕ програми
++X-KDE-Keywords[sr at latin]=style,styles,look,widget,icons,toolbars,text,highlight,apps,stil,stilovi,teme,izgled,kontrola,ikone,trake sa alatom,tekst,isticanje,programi,KDE programi
++X-KDE-Keywords[sv]=stil,stilar,utseende,komponent,ikoner,verktygrader,text,färgläggning, program,KDE-program
++X-KDE-Keywords[ta]=பாணி,பாணிகள்,பார்,வளைவு,சின்னம்,கருவிப்பட்டி,உரை,தனிப்படுத்து,பயன்பாடு,கேடியி பயன்பாடுகள்
++X-KDE-Keywords[th]=ลักษณะ,ที่มองเห็น,วิตเจ็ต,ไอคอน,แถบเครื่องมือ,ข้อความ,ทำตัวเน้น,โปรแกรม,แอพพลิเคชัน KDE
++X-KDE-Keywords[tr]=simgeler,stil,stiller,dekor,dekorlar,tema,temalar,görünüm,parçacık,menü,KDE uygulamaları,araç çubukları,uygulamalar
++X-KDE-Keywords[uk]=стиль,стилі,вигляд,віджет,піктограми,пенали, текст,виділення,програми KDE
++X-KDE-Keywords[uz]=услуб,услублар,ташқи кўриниши,виджет,нишончалар,асбоблар панели,матн,белгилаш,дастурлар,KDE дастурлари
++X-KDE-Keywords[vi]=kiểu,các kiểu,nhìn,ô điều khiển,biểu tượng,thanh công cụ,văn bản,tô sáng,ứng dụng,ứng dụng KDE
++X-KDE-Keywords[x-test]=xxstyle,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applicationsxx
++X-KDE-Keywords[xh]=uhlobo, iintlobo, jonga, widget, amaphawu emifanekiso, iibar zesixhobo, umbhalo, phawula, apps, izicelo ze KDE
++X-KDE-Keywords[zh_CN]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,风格,外观,窗口部件,图标,工具栏,文字,突出,KDE 程序,KDE 应用程序
++X-KDE-Keywords[zh_TW]=style,styles,look,widget,icons,toolbars,text,highlight,apps,KDE applications,風格,主題,外觀,視窗元件,圖示,工具列,文字,突出顯示,應用程式,KDE 應用程式
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/colors/colors.desktop
++++ b/kcontrol/colors/colors.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 colors
+ Icon=preferences-desktop-color
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/colors/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/colors/index.html
+ 
+ X-KDE-Library=kcm_colors
+ X-KDE-ParentApp=kcontrol
+@@ -146,65 +145,65 @@
+ Comment[zh_CN]=颜色设置
+ Comment[zh_TW]=顏色設定
+ 
+-Keywords=colors,colours,scheme,contrast,Widget colors,Color Scheme
+-Keywords[af]=colors,colours,Skema,contrast,Widget colors,Color Skema
+-Keywords[be]=колеры,схема,кантраст,колеры віджэтаў,колерная схема,colors,colours,scheme,contrast,Widget colors,Color Scheme
+-Keywords[bg]=Keywords=цветове, схема, цветова, colors, colours, scheme, contrast, Widget colors, Color Scheme
+-Keywords[ca]=colors,esquema,contrast,colors d'estri,esquema de color
+-Keywords[cs]=Barvy,Schéma,Kontrast,Barevná schémata
+-Keywords[csb]=farwa,schema,kòntrast,farwë elementów òknów,schema farwów
+-Keywords[cy]=lliwiau,cynlluniau,cyferbyniad,lliwiau celfigion,Cynllun Lliw
+-Keywords[da]=farver,system,kontrast,Kontrolfarver,Farvesammensætning
+-Keywords[de]=Farben,Schema,Kontrast,Farbschema,Elemente
+-Keywords[el]=χρώματα,χρώματα,θέμα,αντίθεση,Χρώματα γραφικού συστατικού,Θέμα χρωμάτων
+-Keywords[en_GB]=colours,scheme,contrast,Widget colours,Colour Scheme
+-Keywords[eo]=koloroj,skemo,kontrasto,fenestraĵo-koloroj,koloraro
+-Keywords[es]=colores,esquema,contraste,Colores de los objetos visuales,Colores de los widgets,Esquema de colores
+-Keywords[et]=värvid,skeem,kontrast,värviskeem
+-Keywords[eu]=koloreak,antolamendua,kontrastea,Widget-en koloreak,Kolore eskema
+-Keywords[fa]=رنگها، رنگها، طرحواره، سایه روشن، رنگهای عنصر، طرحوارۀ رنگ
+-Keywords[fi]=väri,teema,kontrasti,työkalujen värit,väriteema
+-Keywords[fr]=couleurs,modèles de couleurs,contraste,couleur des éléments graphiques,modèle
+-Keywords[fy]=kleuren,kleur,skema,kontrast,widgetkleuren,kleurenskema
+-Keywords[ga]=dathanna,scéim,codarsnacht,dathanna giuirléidí,Scéim Dathanna
+-Keywords[gl]=cor,cores,esquema,contraste,cores dos widgets,Esquema das cores
+-Keywords[he]=colors,colours,scheme,contrast,Widget colors,Color,Schemeצבעים,תבנית,חדות,צבע פריטים,תבנית צבעים
+-Keywords[hr]=colors,colours,scheme,contrast,Widget colors,Color Scheme,boja,boje,shema,kontrast,Boje widgeta,Shema bojanja
+-Keywords[hu]=színek,séma,kontraszt,elemszín,színösszeállítás
+-Keywords[is]=litir,litur,skema,skerpa
+-Keywords[it]=colori,schema,contrasto,colore widget,colore elementi grafici,schema di colori
+-Keywords[ja]=色,スキーム,コントラスト,ウィジェット色,色スキーム
+-Keywords[km]=ពណ៌,គ្រោងការណ៍,កម្រិត​ពណ៌,ពណ៌​ធាតុ​ក្រាហ្វិក,​គ្រោងការណ៍​ពណ៌
+-Keywords[ko]=색,색 배열,명암,위젯 색,색상표
+-Keywords[lt]=colors,colours,scheme,contrast,Widget colors,Color Scheme,spalvos,koloritai,schema,kontrastas, Valdiklių spalvos, Spalvų Schema
+-Keywords[lv]=krāsu,krāsas,shēma,kontrasts,Vidžeta krāsas,Krāsu Shēma
+-Keywords[mk]=colors,colours,scheme,contrast,Widget colors,Color Scheme,бои,шема,контраст,Шема на бои
+-Keywords[ms]=warna,warna,skema, kontras, warna Widget,Skema Warna
+-Keywords[nb]=farger,oppsett,kontrast,elementfarger,fargeoppsett
+-Keywords[nds]=Klören,Schema,Kontrast,Bedeenelementen,Klöörschema
+-Keywords[ne]=रङ, रङ्ग, योजना, व्यतिरेक, विजेट रङ, रङ योजना
+-Keywords[nl]=kleuren,kleur,schema,contrast,widgetkleuren,kleurenschema
+-Keywords[nn]=fargar,oppsett,kontrast,elementfargar,fargeoppsett
+-Keywords[pa]=colors,colours,scheme,contrast,Widget colors,Color Scheme,ਰੰਗ,ਸਕੀਮ
+-Keywords[pl]=kolory,schemat,kontrast,kolory elementów okienek,schemat kolorów
+-Keywords[pt]=cores,esquema,esquema,contraste,cores dos elementos,esquema de cor
+-Keywords[pt_BR]=cores,esquema,contraste,cores dos widgets,Esquema de Cor
+-Keywords[ro]=culoare,culori,schemă,contrast,componente,schemă de culori
+-Keywords[se]=ivnnit,coahkádusat,vuostálasvuohta,áhtaivnnit,ivdnečoahkádus
+-Keywords[sl]=barva,barve,sheme,kontrast,nadzor gradnikov,barvna shema
+-Keywords[sr]=colors,colours,scheme,contrast,Widget colors,Color Scheme,боје,шема,контраст,шема боја
+-Keywords[sr at latin]=colors,colours,scheme,contrast,Widget colors,Color Scheme,boje,šema,kontrast,šema boja
+-Keywords[sv]=färger,schema,kontrast,Komponentfärger,Färgschema
+-Keywords[ta]=வண்ணங்கள்,வண்ணங்கள்,திட்டம்,எதிரான,Widget வண்ணங்கள்,வண்ண முறை
+-Keywords[tg]=colors,colours,scheme,contrast,Widget colors,Color Scheme,рангҳо,рангҳо
+-Keywords[th]=สี,ชุดสี,ความตัดกันของสี,สีของวิดเจ็ต,ชุดสี
+-Keywords[tr]=renkler,şema,kontrast,Renk Tablosu
+-Keywords[uk]=кольори,схема,контрастність,кольори віджетів,схема кольорів
+-Keywords[uz]=ранглар,қолип,контраст,виджет ранглари,ранг қолипи
+-Keywords[vi]=màu,màu sắc,sắc thái,tương phản,Màu của ô điều khiển,Sắc thái Màu
+-Keywords[x-test]=xxcolors,colours,scheme,contrast,Widget colors,Color Schemexx
+-Keywords[xh]=imibala,imibala,udweliso,isiboniso somahluko,Imibala ye widget,Udweliso Olunombala
+-Keywords[zh_CN]=colors,colours,scheme,contrast,Widget colors,Color Scheme,颜色,方案,对比,部件颜色,配色方案
+-Keywords[zh_TW]=colors,colours,scheme,contrast,Widget colors,Color Scheme,顏色,對比,元件顏色,配色
++X-KDE-Keywords=colors,colours,scheme,contrast,Widget colors,Color Scheme
++X-KDE-Keywords[af]=colors,colours,Skema,contrast,Widget colors,Color Skema
++X-KDE-Keywords[be]=колеры,схема,кантраст,колеры віджэтаў,колерная схема,colors,colours,scheme,contrast,Widget colors,Color Scheme
++X-KDE-Keywords[bg]=Keywords=цветове, схема, цветова, colors, colours, scheme, contrast, Widget colors, Color Scheme
++X-KDE-Keywords[ca]=colors,esquema,contrast,colors d'estri,esquema de color
++X-KDE-Keywords[cs]=Barvy,Schéma,Kontrast,Barevná schémata
++X-KDE-Keywords[csb]=farwa,schema,kòntrast,farwë elementów òknów,schema farwów
++X-KDE-Keywords[cy]=lliwiau,cynlluniau,cyferbyniad,lliwiau celfigion,Cynllun Lliw
++X-KDE-Keywords[da]=farver,system,kontrast,Kontrolfarver,Farvesammensætning
++X-KDE-Keywords[de]=Farben,Schema,Kontrast,Farbschema,Elemente
++X-KDE-Keywords[el]=χρώματα,χρώματα,θέμα,αντίθεση,Χρώματα γραφικού συστατικού,Θέμα χρωμάτων
++X-KDE-Keywords[en_GB]=colours,scheme,contrast,Widget colours,Colour Scheme
++X-KDE-Keywords[eo]=koloroj,skemo,kontrasto,fenestraĵo-koloroj,koloraro
++X-KDE-Keywords[es]=colores,esquema,contraste,Colores de los objetos visuales,Colores de los widgets,Esquema de colores
++X-KDE-Keywords[et]=värvid,skeem,kontrast,värviskeem
++X-KDE-Keywords[eu]=koloreak,antolamendua,kontrastea,Widget-en koloreak,Kolore eskema
++X-KDE-Keywords[fa]=رنگها، رنگها، طرحواره، سایه روشن، رنگهای عنصر، طرحوارۀ رنگ
++X-KDE-Keywords[fi]=väri,teema,kontrasti,työkalujen värit,väriteema
++X-KDE-Keywords[fr]=couleurs,modèles de couleurs,contraste,couleur des éléments graphiques,modèle
++X-KDE-Keywords[fy]=kleuren,kleur,skema,kontrast,widgetkleuren,kleurenskema
++X-KDE-Keywords[ga]=dathanna,scéim,codarsnacht,dathanna giuirléidí,Scéim Dathanna
++X-KDE-Keywords[gl]=cor,cores,esquema,contraste,cores dos widgets,Esquema das cores
++X-KDE-Keywords[he]=colors,colours,scheme,contrast,Widget colors,Color,Schemeצבעים,תבנית,חדות,צבע פריטים,תבנית צבעים
++X-KDE-Keywords[hr]=colors,colours,scheme,contrast,Widget colors,Color Scheme,boja,boje,shema,kontrast,Boje widgeta,Shema bojanja
++X-KDE-Keywords[hu]=színek,séma,kontraszt,elemszín,színösszeállítás
++X-KDE-Keywords[is]=litir,litur,skema,skerpa
++X-KDE-Keywords[it]=colori,schema,contrasto,colore widget,colore elementi grafici,schema di colori
++X-KDE-Keywords[ja]=色,スキーム,コントラスト,ウィジェット色,色スキーム
++X-KDE-Keywords[km]=ពណ៌,គ្រោងការណ៍,កម្រិត​ពណ៌,ពណ៌​ធាតុ​ក្រាហ្វិក,​គ្រោងការណ៍​ពណ៌
++X-KDE-Keywords[ko]=색,색 배열,명암,위젯 색,색상표
++X-KDE-Keywords[lt]=colors,colours,scheme,contrast,Widget colors,Color Scheme,spalvos,koloritai,schema,kontrastas, Valdiklių spalvos, Spalvų Schema
++X-KDE-Keywords[lv]=krāsu,krāsas,shēma,kontrasts,Vidžeta krāsas,Krāsu Shēma
++X-KDE-Keywords[mk]=colors,colours,scheme,contrast,Widget colors,Color Scheme,бои,шема,контраст,Шема на бои
++X-KDE-Keywords[ms]=warna,warna,skema, kontras, warna Widget,Skema Warna
++X-KDE-Keywords[nb]=farger,oppsett,kontrast,elementfarger,fargeoppsett
++X-KDE-Keywords[nds]=Klören,Schema,Kontrast,Bedeenelementen,Klöörschema
++X-KDE-Keywords[ne]=रङ, रङ्ग, योजना, व्यतिरेक, विजेट रङ, रङ योजना
++X-KDE-Keywords[nl]=kleuren,kleur,schema,contrast,widgetkleuren,kleurenschema
++X-KDE-Keywords[nn]=fargar,oppsett,kontrast,elementfargar,fargeoppsett
++X-KDE-Keywords[pa]=colors,colours,scheme,contrast,Widget colors,Color Scheme,ਰੰਗ,ਸਕੀਮ
++X-KDE-Keywords[pl]=kolory,schemat,kontrast,kolory elementów okienek,schemat kolorów
++X-KDE-Keywords[pt]=cores,esquema,esquema,contraste,cores dos elementos,esquema de cor
++X-KDE-Keywords[pt_BR]=cores,esquema,contraste,cores dos widgets,Esquema de Cor
++X-KDE-Keywords[ro]=culoare,culori,schemă,contrast,componente,schemă de culori
++X-KDE-Keywords[se]=ivnnit,coahkádusat,vuostálasvuohta,áhtaivnnit,ivdnečoahkádus
++X-KDE-Keywords[sl]=barva,barve,sheme,kontrast,nadzor gradnikov,barvna shema
++X-KDE-Keywords[sr]=colors,colours,scheme,contrast,Widget colors,Color Scheme,боје,шема,контраст,шема боја
++X-KDE-Keywords[sr at latin]=colors,colours,scheme,contrast,Widget colors,Color Scheme,boje,šema,kontrast,šema boja
++X-KDE-Keywords[sv]=färger,schema,kontrast,Komponentfärger,Färgschema
++X-KDE-Keywords[ta]=வண்ணங்கள்,வண்ணங்கள்,திட்டம்,எதிரான,Widget வண்ணங்கள்,வண்ண முறை
++X-KDE-Keywords[tg]=colors,colours,scheme,contrast,Widget colors,Color Scheme,рангҳо,рангҳо
++X-KDE-Keywords[th]=สี,ชุดสี,ความตัดกันของสี,สีของวิดเจ็ต,ชุดสี
++X-KDE-Keywords[tr]=renkler,şema,kontrast,Renk Tablosu
++X-KDE-Keywords[uk]=кольори,схема,контрастність,кольори віджетів,схема кольорів
++X-KDE-Keywords[uz]=ранглар,қолип,контраст,виджет ранглари,ранг қолипи
++X-KDE-Keywords[vi]=màu,màu sắc,sắc thái,tương phản,Màu của ô điều khiển,Sắc thái Màu
++X-KDE-Keywords[x-test]=xxcolors,colours,scheme,contrast,Widget colors,Color Schemexx
++X-KDE-Keywords[xh]=imibala,imibala,udweliso,isiboniso somahluko,Imibala ye widget,Udweliso Olunombala
++X-KDE-Keywords[zh_CN]=colors,colours,scheme,contrast,Widget colors,Color Scheme,颜色,方案,对比,部件颜色,配色方案
++X-KDE-Keywords[zh_TW]=colors,colours,scheme,contrast,Widget colors,Color Scheme,顏色,對比,元件顏色,配色
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/access/kaccess.desktop
++++ b/kcontrol/access/kaccess.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=KDE Accessibility Tool
+ Name[af]=KDE toeganklikheid program
+@@ -69,4 +68,4 @@
+ X-DBUS-StartupType=None
+ X-KDE-Library=kcm_access
+ X-KDE-ParentApp=kcontrol
+-DocPath=kcontrol/kcmaccess/index.html
++X-DocPath=kcontrol/kcmaccess/index.html
+--- a/kcontrol/access/kcmaccess.desktop
++++ b/kcontrol/access/kcmaccess.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kcmaccess
+ Icon=preferences-desktop-accessibility
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/kcmaccess/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/kcmaccess/index.html
+ 
+ X-KDE-Library=kcm_access
+ X-KDE-Init-Symbol=kcminit_access
+@@ -119,7 +118,7 @@
+ Comment[ne]=अक्षम व्यक्तिका लागि पहुँच क्षमता सुधार गर्नुहोस्
+ Comment[nl]=Verbeterde toegankelijkheid voor gebruikers met een handicap
+ Comment[nn]=Forbetra tilgjenge for funksjonshemma personar
+-Comment[pa]=ਅਪੰਗ ਵਿਅਕਤੀ ਲਈ ਸੁਧਾਰੀ ਮੱਦਦ
++Comment[pa]=ਅਪੰਗ ਵਿਅਕਤੀ ਲਈ ਸੁਧਾਰੀਆਂ ਸਹੂਲਤਾਂ
+ Comment[pl]=Poprawiona dostępność dla osób niepełnosprawnych
+ Comment[pt]=Acessibilidade melhorada para pessoas com necessidades especiais
+ Comment[pt_BR]=Melhora a acessibilidade para pessoas com deficiência
+@@ -142,61 +141,61 @@
+ Comment[zh_CN]=方便残疾人使用的辅助功能
+ Comment[zh_TW]=方便傷殘人士使用
+ 
+-Keywords=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[af]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num bordjie
+-Keywords[be]=доступ,даступнасць,званок,гукавы сігнал,бачны сігнал,клавіятура,клавішы,"ліпучыя" клавішы,"рухомыя" клавішы,марудныя клавішы,навігацыя мышшу,лічбавая клавіятура,access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[bg]=Keywords=достъп, увреждания, равностоен, равноправен, зрителни, зрителен, без зрение, access, accessibility, deaf, impaired, bell, audible bell, visible bell, Keyboard, keys, sticky keys, bounce keys, slow keys, mouse navigation, num pad
+-Keywords[ca]=accés,accessibilitat,sord,disminuït,timbre,timbre audible,timbre visible,Teclat,tecles,tecles apegaloses,tecles de repetició,tecles lentes,navegació del ratolí,teclat numèric
+-Keywords[cs]=Zpřístupnění,Hluchý,Slepý,Postižený,Zvonek,Slyšitelný zvonek,Viditelný zvonek,Klávesnice,Pomalé klávesy,Navigace myši,Num pad
+-Keywords[csb]=przëstãp,przëstãpnosc,głëchy,zwónk,słëszalny zwónk,widzalny zwónk,klawiatura,klawisze,przëklejone klawisze,odbijanié klawiszów,pòwólné klawisze,nawigacëjô mëszą,numericznô klawiatura
+-Keywords[cy]=mynediad,hygyrchedd,byddar,cloch,cloch clywadwy,cloch gweladwy,bysellfwrdd,allweddell,bysell,bysell gludog,bysell sponcio,bysell araf,llywio llygoden,pad rhif
+-Keywords[da]=adgang,tilgængelighed,døv,handicappet,klokke,hørbar klokke,synlig klokke,Tastatur,taster,klæbrige taster,bounce-taster,langsomme taster,musenavigering,numerisk tastatur
+-Keywords[de]=Behinderung,Maussteuerung,Signale,Tastatur,Tasten,Taubheit,Verlangsamte Tasten,Zahlenblock,Zugang,Zugangshilfen
+-Keywords[el]=πρόσβαση,προσιτότητα,κωφός,impaired,κουδούνι,ακουστή ειδοποίηση,ορατή ειδοποίηση,Πληκτρολόγιο,πλήκτρα,κολλημένα πλήκτρα,πλήκτρα αναπήδησης,αργά πλήκτρα,πλοήγηση ποντικιού,αριθμητικό πληκτρολόγιο
+-Keywords[eo]=aliro,handikapito,malhelpito,pepo,videbla pepo,klavaro,klavoj,klavfikso, musnavigado,nombroklavaro
+-Keywords[es]=acceso,accesibilidad,sordo,disminuido,timbre,timbre audible,timbre visible,Teclado,teclas,teclas pegajosas,teclas de golpe,teclas lentas,navegación del ratón,teclado numérico
+-Keywords[et]=juurdepääs,kurt,puue,puudega,signaal,kuuldav signaal,visuaalne signaal,klaviatuur,klahvid,kleepuvad klahvid,põrkavad klahvid,aeglased klahvid,hiire liigutamine,numbriklaviatuur
+-Keywords[eu]=sarrera,erabilerraztasuna,gorra,elbarria,ezkila,ezkila entzungarria, ezkila ikusgarria,Teklatua,teklak,tekla itsaskorrak, bounce teklak,tekla geldoak,sagu bidezko arakaketa,tekla numerikoak
+-Keywords[fa]=دستیابی، دستیابی‌پذیری، ناشنوا، معلول، زنگ، زنگ شنیدنی، زنگ مرئی، صفحه کلید، کلیدها، کلیدهای چسبناک، کلیدهای واگشت، کلیدهای کند، ناوش موشی، صفحه اعداد
+-Keywords[fi]=käytettävyys,esteettömyys,kuuro,vammautunut,virheilmoitus,virheääni,näkyvä virheilmoitus,näppäimistö,näppäimet,alas jäävät näppäimet,toistavat näppäimet,hitaat näppäimet,hiirinavigointi,numeronäppäimistö
+-Keywords[fr]=accès,accessibilité,surdité,sourd,cloche,son,cloche visuelle,cloche sonore,clavier,touches,souris,touches lentes,touches rémanentes,cloche auditive,touches répétées,répétition des touches,auto-maintien des touches,maintien des touches,navigation à la souris,pointeur de souris,émulation du clavier,clavier numérique
+-Keywords[fy]=tagong,tagonklikens,dôf,handikap,beheind,bel,sinjalearing,sichtbermeldingen,Kaaiboerd,kaaien,kleef kaaien,kaaioanslag,Mûsnavigaasje,num pad,numeryske klavier
+-Keywords[ga]=rochtain,inrochtaineacht,bodhar,clog,clog inchloiste,clog infheicthe,Méarchlár,eochracha,eochracha greamaitheacha,eochracha preabtha,eochracha go mall,nascleanúint luiche,eochaircheap uimhriúil
+-Keywords[gl]=aceso,acesibilidade,impar,campá,badalada audíbel,badalada visíbel,teclado,teclas,teclas pegadias,teclas de repetición,teclas lentas,navegación do rato,teclado numérico
+-Keywords[he]=גישה,נגישות,חירשים,לקויים,פעמון,פעמון נשמע,פעמון  חזותי,לוח,מקשים ,מקלדת ,מקשים,מקשים דביקים,מקשים מוקפצים,מקשים אטיים,ניווט עכבר,מקשי מספרים, access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[hr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluh,gluhoća,oštećenje,zvono,zvuk zvona,vidljivo zvono,tipkovnica,tipke,odbijanje tipki,spore tipke,navigacija mišem,numeričke tipke
+-Keywords[hu]=hozzáférés,segédeszközök,süket,fogyatékos,csengő,hallható csengetés,látható csengetés,billentyűzet,billentyűk,ragadós billentyűk,visszaugró billentyűk,lassú billentyűk,egérkezelés,numerikus billentyűzet
+-Keywords[is]=aðgangur,aðgengi,heyrnarlaus,fatlaður,píp,bjalla,sjáanleg bjalla,lyklaborð,takkar,músarnotkun,talnaborð
+-Keywords[it]=accesso,accessibilità,non udenti,portatori di handicap,campanella,campanella udibile,campanella visibile,tastiera,tasti,permanenza dei tasti,pressione ravvicinata dei tasti,rallentamento dei tasti,navigazione mouse,tastierino numerico
+-Keywords[ja]=アクセス,アクセシビリティ,聾唖,障害,ベル,音声ベル,視覚ベル,キーボート,キー,スティッキーキー,バウンスキー,スローキー,マウス補助,数字パッド
+-Keywords[km]=ចូល​ដំណើរការ,មធ្យោបាយ​ងាយស្រួល,ថ្លង់,ពិការ,កណ្ដឹង,កណ្ដឹង​លឺ,កណ្ដឹង​មើល​ឃើញ,ក្ដារចុច,គ្រាប់ចុច គ្រាប់ចុច​ស្អិត,គ្រាប់ចុច​លោត,គ្រាប់ចុច​យឺត,ការ​រុករក​កណ្ដុរ,បន្ទះ​លេខ
+-Keywords[ko]=접근성,시각 장애,청각 장애,키보드,키,마우스 탐색,숫자 키,종소리
+-Keywords[lt]=prieinamumas,kurčias,kurčnebylys,neįgalus,skambutis,girdimas,matomas skambutis,klaviatūra,mygtukai,prisegti mygtukai,lėti mygtukai,navigacija su pele
+-Keywords[lv]=pieeja,pieejamība,kurls,vājināts,zvans,dzirdams zvans,redzams zvans,Tastatūra,taustiņi,salīmētie taustiņi,elastīgie taustiņi,lēnie taustiņi,peles navigācija,num pads
+-Keywords[mk]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,пристап,пристапност,глув,хендикепиран,ѕвонче,звучно ѕвонче,визуелно ѕвонче,Тастатура,копчиња,лепливи копчиња,отскочни копчиња,бавни копчиња,навигација со глушецот,тастатура со бројки
+-Keywords[nb]=tilgang,tilgjengelighet,døv,handikappet,lyd,signal,bjelle,synlig signal,tastatur,taster,faste valgtaster,trege taster,filtertaster,musnavigering,numerisk tastatur
+-Keywords[nds]=Togang,accessibility,doof,Behinnerte,Pingel,höörbore Pingel,Ogenpingel,Tastatuur,Tasten,backige Tasten,springen Tasten,langsam Tasten,Muusnavigatschoon,Tallenblock
+-Keywords[ne]=पहुँच, पहुँचयोग्यता, डिफ, बिग्रेको, बेल, सुन्न सकिने बेल, हेर्न सकिने बेल, कुञ्जीपाटी, कुञ्जीहरू, टाँसिने कुञ्जीहरू, उफ्रिने कुञ्जीहरू, ढिलो कुञ्जीहरू, माउस नेभिगेसन, नम प्याड
+-Keywords[nl]=toegang,toegankelijkheid,doof,handicap,gehandicapt,bel,signalering,zichtbare meldingen,Keyboard,toetsenbord,keys,toetsen,vastgeplakte toetsen,toetsenaanslag,muisnavigatie,num pad,numerieke klavier
+-Keywords[nn]=tilgang,tilgjenge,døv,handikappa,lyd,signal,bjelle,synleg signal,tastatur,tastar,faste modifikasjonstastar,trege tastar,filtertastar,musnavigering,numerisk tastatur
+-Keywords[pa]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,ਕੀ-ਬੋਰਡ,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
+-Keywords[pl]=dostęp,dostępność,głuchy,upośledzony,dzwonek,słyszalny dzwonek widzialny dzwonek,klawiatura,klawisze,klejące klawisze,odbijanie klawiszy,powolne klawisze,nawigacja myszą,klawiatura numeryczna
+-Keywords[pt]=acesso,acessibilidade,surdo,deficiente,campainha,campainha audível,campainha visível,teclado,teclas,teclas 'sticky',teclas 'bounce',teclas lentas,navegação com o rato,num pad
+-Keywords[pt_BR]=acesso,acessibilidade,surdo,deficiente,campainha,audível,campainha visível, teclado,teclas,teclas persistentes,teclas repetidas,teclas lentas,navegação do mouse,teclado numérico
+-Keywords[ro]=acces,accesibilitate,surd,handicap,difuzor,audibil,sunet vizibil,tastatură,taste,taste comutator,taste fără repetiţie,taste lente,navigare mouse,tastatura numerică
+-Keywords[se]=álkkibut,bealljeheapmi,doaimmahehttejuvvon,jietna,signála,oaidnus signála,boallobeavdi,boalut,giddes boalut,sáhpannavigašuvdna,numerálaš boallobeavdi
+-Keywords[sl]=dostop,dostopnost,gluh,gluhota,prizadetost,zvonec,vidni zvonec,zvonček,tipkovnica,tipke,lepljive tipke,počasne tipke,navigacija miške,numerična tipkovnica,invalidnost,invalid
+-Keywords[sr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,приступ,приступачност,глув,хендикепиран,звоно,звучно звоно,визуелно звоно,тастатура,тастери,лепљиви тастери,спори тастери,померање миша,нумеричка тастатура
+-Keywords[sr at latin]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluv,hendikepiran,zvono,zvučno zvono,vizuelno zvono,tastatura,tasteri,lepljivi tasteri,spori tasteri,pomeranje miša,numerička tastatura
+-Keywords[sv]=tillgång,tillgänglighet,döv,handikappad,signal,ljudsignal,visuell signal,Tangentbord,tangenter,klistriga tangenter,studsande tangenter,långsamma tangenter,musnavigering,numeriskt tangentbord
+-Keywords[ta]=அணுகல்,அணுகும் முறை,காது கேளாத,ஆற்றல் குறைந்த,மணியோசை,காதால் கேட்கும் அளவிற்கு மணியோசை,தெரியும் மணியோசை,விசைபலகை,விசைகள்,ஒட்டும் விசைகள்,மீளும் தன்மையுடைய விசைகள்,மெதுவான விசைகள்,சுட்டிநாவிகேஷன்,எண்ணிக்கை அட்டை
+-Keywords[th]=การเข้าถึง,ความง่ายในการใช้งาน,หูหนวก,บกพร่อง,ออด, ออดใช้ฟัง,ออดใช้ดู,แป้นพิมพ์,ปุ่ม,ปุ่มติดหนึบ,ปุ่มสะท้อน, ปุ่มชะลอ,นำทางโดยเมาส์,แผงปุ่มตัวเลข
+-Keywords[tr]=erişim,erişilebilirlik,sağır,özürlü,zil,duyulabilir zil,görünür zil,Klavye,tuşlar,yapışkan tuşlar,zıplayan tuşlar,yavaş tuşlar,fare yönlendirmesi,num pad
+-Keywords[uk]=доступ,доступність,глухий,каліка,дзвінок,аудіодзвінок,відеодзвінок,клавіатура,клавіші,липкі клавіші,пружні клавіші,повільні клавіші,навігація миші,цифрова клавіатура
+-Keywords[vi]=truy cập,hỗ trợ người tàn tật,điếc,bị thương,chuông,chuông kêu,chuông rung,bàn phím,phím,phím dính,phím nảy,phím chậm,di chuyển chuột,bàn phím số
+-Keywords[x-test]=xxaccess,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num padxx
+-Keywords[xh]=nikezela,unikezelo,ayiva,yonakalisiwe,intsimbi,intsimbi evakalayo, intsimbi ebonakalayo,ibhodi yezitshixo,izitshixo,isithixo esincangathi, izitshixo ezilungisiweyo,izitshixo ezinengxolo,izitshixo ezicothayo,indlela yokubeka i mouse endaweni,inkatha ye num
+-Keywords[zh_CN]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,辅助功能,聋,键盘,粘滞键,撞击键,筛选键,鼠标导航,可视铃声,小键盘
+-Keywords[zh_TW]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,使用,聾,鈴聲,聽得見的鈴,看得見的鈴,鍵盤,按鍵,滑鼠導向,數字鍵
++X-KDE-Keywords=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[af]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num bordjie
++X-KDE-Keywords[be]=доступ,даступнасць,званок,гукавы сігнал,бачны сігнал,клавіятура,клавішы,"ліпучыя" клавішы,"рухомыя" клавішы,марудныя клавішы,навігацыя мышшу,лічбавая клавіятура,access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[bg]=Keywords=достъп, увреждания, равностоен, равноправен, зрителни, зрителен, без зрение, access, accessibility, deaf, impaired, bell, audible bell, visible bell, Keyboard, keys, sticky keys, bounce keys, slow keys, mouse navigation, num pad
++X-KDE-Keywords[ca]=accés,accessibilitat,sord,disminuït,timbre,timbre audible,timbre visible,Teclat,tecles,tecles apegaloses,tecles de repetició,tecles lentes,navegació del ratolí,teclat numèric
++X-KDE-Keywords[cs]=Zpřístupnění,Hluchý,Slepý,Postižený,Zvonek,Slyšitelný zvonek,Viditelný zvonek,Klávesnice,Pomalé klávesy,Navigace myši,Num pad
++X-KDE-Keywords[csb]=przëstãp,przëstãpnosc,głëchy,zwónk,słëszalny zwónk,widzalny zwónk,klawiatura,klawisze,przëklejone klawisze,odbijanié klawiszów,pòwólné klawisze,nawigacëjô mëszą,numericznô klawiatura
++X-KDE-Keywords[cy]=mynediad,hygyrchedd,byddar,cloch,cloch clywadwy,cloch gweladwy,bysellfwrdd,allweddell,bysell,bysell gludog,bysell sponcio,bysell araf,llywio llygoden,pad rhif
++X-KDE-Keywords[da]=adgang,tilgængelighed,døv,handicappet,klokke,hørbar klokke,synlig klokke,Tastatur,taster,klæbrige taster,bounce-taster,langsomme taster,musenavigering,numerisk tastatur
++X-KDE-Keywords[de]=Behinderung,Maussteuerung,Signale,Tastatur,Tasten,Taubheit,Verlangsamte Tasten,Zahlenblock,Zugang,Zugangshilfen
++X-KDE-Keywords[el]=πρόσβαση,προσιτότητα,κωφός,impaired,κουδούνι,ακουστή ειδοποίηση,ορατή ειδοποίηση,Πληκτρολόγιο,πλήκτρα,κολλημένα πλήκτρα,πλήκτρα αναπήδησης,αργά πλήκτρα,πλοήγηση ποντικιού,αριθμητικό πληκτρολόγιο
++X-KDE-Keywords[eo]=aliro,handikapito,malhelpito,pepo,videbla pepo,klavaro,klavoj,klavfikso, musnavigado,nombroklavaro
++X-KDE-Keywords[es]=acceso,accesibilidad,sordo,disminuido,timbre,timbre audible,timbre visible,Teclado,teclas,teclas pegajosas,teclas de golpe,teclas lentas,navegación del ratón,teclado numérico
++X-KDE-Keywords[et]=juurdepääs,kurt,puue,puudega,signaal,kuuldav signaal,visuaalne signaal,klaviatuur,klahvid,kleepuvad klahvid,põrkavad klahvid,aeglased klahvid,hiire liigutamine,numbriklaviatuur
++X-KDE-Keywords[eu]=sarrera,erabilerraztasuna,gorra,elbarria,ezkila,ezkila entzungarria, ezkila ikusgarria,Teklatua,teklak,tekla itsaskorrak, bounce teklak,tekla geldoak,sagu bidezko arakaketa,tekla numerikoak
++X-KDE-Keywords[fa]=دستیابی، دستیابی‌پذیری، ناشنوا، معلول، زنگ، زنگ شنیدنی، زنگ مرئی، صفحه کلید، کلیدها، کلیدهای چسبناک، کلیدهای واگشت، کلیدهای کند، ناوش موشی، صفحه اعداد
++X-KDE-Keywords[fi]=käytettävyys,esteettömyys,kuuro,vammautunut,virheilmoitus,virheääni,näkyvä virheilmoitus,näppäimistö,näppäimet,alas jäävät näppäimet,toistavat näppäimet,hitaat näppäimet,hiirinavigointi,numeronäppäimistö
++X-KDE-Keywords[fr]=accès,accessibilité,surdité,sourd,cloche,son,cloche visuelle,cloche sonore,clavier,touches,souris,touches lentes,touches rémanentes,cloche auditive,touches répétées,répétition des touches,auto-maintien des touches,maintien des touches,navigation à la souris,pointeur de souris,émulation du clavier,clavier numérique
++X-KDE-Keywords[fy]=tagong,tagonklikens,dôf,handikap,beheind,bel,sinjalearing,sichtbermeldingen,Kaaiboerd,kaaien,kleef kaaien,kaaioanslag,Mûsnavigaasje,num pad,numeryske klavier
++X-KDE-Keywords[ga]=rochtain,inrochtaineacht,bodhar,clog,clog inchloiste,clog infheicthe,Méarchlár,eochracha,eochracha greamaitheacha,eochracha preabtha,eochracha go mall,nascleanúint luiche,eochaircheap uimhriúil
++X-KDE-Keywords[gl]=aceso,acesibilidade,impar,campá,badalada audíbel,badalada visíbel,teclado,teclas,teclas pegadias,teclas de repetición,teclas lentas,navegación do rato,teclado numérico
++X-KDE-Keywords[he]=גישה,נגישות,חירשים,לקויים,פעמון,פעמון נשמע,פעמון  חזותי,לוח,מקשים ,מקלדת ,מקשים,מקשים דביקים,מקשים מוקפצים,מקשים אטיים,ניווט עכבר,מקשי מספרים, access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[hr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluh,gluhoća,oštećenje,zvono,zvuk zvona,vidljivo zvono,tipkovnica,tipke,odbijanje tipki,spore tipke,navigacija mišem,numeričke tipke
++X-KDE-Keywords[hu]=hozzáférés,segédeszközök,süket,fogyatékos,csengő,hallható csengetés,látható csengetés,billentyűzet,billentyűk,ragadós billentyűk,visszaugró billentyűk,lassú billentyűk,egérkezelés,numerikus billentyűzet
++X-KDE-Keywords[is]=aðgangur,aðgengi,heyrnarlaus,fatlaður,píp,bjalla,sjáanleg bjalla,lyklaborð,takkar,músarnotkun,talnaborð
++X-KDE-Keywords[it]=accesso,accessibilità,non udenti,portatori di handicap,campanella,campanella udibile,campanella visibile,tastiera,tasti,permanenza dei tasti,pressione ravvicinata dei tasti,rallentamento dei tasti,navigazione mouse,tastierino numerico
++X-KDE-Keywords[ja]=アクセス,アクセシビリティ,聾唖,障害,ベル,音声ベル,視覚ベル,キーボート,キー,スティッキーキー,バウンスキー,スローキー,マウス補助,数字パッド
++X-KDE-Keywords[km]=ចូល​ដំណើរការ,មធ្យោបាយ​ងាយស្រួល,ថ្លង់,ពិការ,កណ្ដឹង,កណ្ដឹង​លឺ,កណ្ដឹង​មើល​ឃើញ,ក្ដារចុច,គ្រាប់ចុច គ្រាប់ចុច​ស្អិត,គ្រាប់ចុច​លោត,គ្រាប់ចុច​យឺត,ការ​រុករក​កណ្ដុរ,បន្ទះ​លេខ
++X-KDE-Keywords[ko]=접근성,시각 장애,청각 장애,키보드,키,마우스 탐색,숫자 키,종소리
++X-KDE-Keywords[lt]=prieinamumas,kurčias,kurčnebylys,neįgalus,skambutis,girdimas,matomas skambutis,klaviatūra,mygtukai,prisegti mygtukai,lėti mygtukai,navigacija su pele
++X-KDE-Keywords[lv]=pieeja,pieejamība,kurls,vājināts,zvans,dzirdams zvans,redzams zvans,Tastatūra,taustiņi,salīmētie taustiņi,elastīgie taustiņi,lēnie taustiņi,peles navigācija,num pads
++X-KDE-Keywords[mk]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,пристап,пристапност,глув,хендикепиран,ѕвонче,звучно ѕвонче,визуелно ѕвонче,Тастатура,копчиња,лепливи копчиња,отскочни копчиња,бавни копчиња,навигација со глушецот,тастатура со бројки
++X-KDE-Keywords[nb]=tilgang,tilgjengelighet,døv,handikappet,lyd,signal,bjelle,synlig signal,tastatur,taster,faste valgtaster,trege taster,filtertaster,musnavigering,numerisk tastatur
++X-KDE-Keywords[nds]=Togang,accessibility,doof,Behinnerte,Pingel,höörbore Pingel,Ogenpingel,Tastatuur,Tasten,backige Tasten,springen Tasten,langsam Tasten,Muusnavigatschoon,Tallenblock
++X-KDE-Keywords[ne]=पहुँच, पहुँचयोग्यता, डिफ, बिग्रेको, बेल, सुन्न सकिने बेल, हेर्न सकिने बेल, कुञ्जीपाटी, कुञ्जीहरू, टाँसिने कुञ्जीहरू, उफ्रिने कुञ्जीहरू, ढिलो कुञ्जीहरू, माउस नेभिगेसन, नम प्याड
++X-KDE-Keywords[nl]=toegang,toegankelijkheid,doof,handicap,gehandicapt,bel,signalering,zichtbare meldingen,Keyboard,toetsenbord,keys,toetsen,vastgeplakte toetsen,toetsenaanslag,muisnavigatie,num pad,numerieke klavier
++X-KDE-Keywords[nn]=tilgang,tilgjenge,døv,handikappa,lyd,signal,bjelle,synleg signal,tastatur,tastar,faste modifikasjonstastar,trege tastar,filtertastar,musnavigering,numerisk tastatur
++X-KDE-Keywords[pa]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,ਕੀ-ਬੋਰਡ,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad
++X-KDE-Keywords[pl]=dostęp,dostępność,głuchy,upośledzony,dzwonek,słyszalny dzwonek widzialny dzwonek,klawiatura,klawisze,klejące klawisze,odbijanie klawiszy,powolne klawisze,nawigacja myszą,klawiatura numeryczna
++X-KDE-Keywords[pt]=acesso,acessibilidade,surdo,deficiente,campainha,campainha audível,campainha visível,teclado,teclas,teclas 'sticky',teclas 'bounce',teclas lentas,navegação com o rato,num pad
++X-KDE-Keywords[pt_BR]=acesso,acessibilidade,surdo,deficiente,campainha,audível,campainha visível, teclado,teclas,teclas persistentes,teclas repetidas,teclas lentas,navegação do mouse,teclado numérico
++X-KDE-Keywords[ro]=acces,accesibilitate,surd,handicap,difuzor,audibil,sunet vizibil,tastatură,taste,taste comutator,taste fără repetiţie,taste lente,navigare mouse,tastatura numerică
++X-KDE-Keywords[se]=álkkibut,bealljeheapmi,doaimmahehttejuvvon,jietna,signála,oaidnus signála,boallobeavdi,boalut,giddes boalut,sáhpannavigašuvdna,numerálaš boallobeavdi
++X-KDE-Keywords[sl]=dostop,dostopnost,gluh,gluhota,prizadetost,zvonec,vidni zvonec,zvonček,tipkovnica,tipke,lepljive tipke,počasne tipke,navigacija miške,numerična tipkovnica,invalidnost,invalid
++X-KDE-Keywords[sr]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,приступ,приступачност,глув,хендикепиран,звоно,звучно звоно,визуелно звоно,тастатура,тастери,лепљиви тастери,спори тастери,померање миша,нумеричка тастатура
++X-KDE-Keywords[sr at latin]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,pristup,pristupačnost,gluv,hendikepiran,zvono,zvučno zvono,vizuelno zvono,tastatura,tasteri,lepljivi tasteri,spori tasteri,pomeranje miša,numerička tastatura
++X-KDE-Keywords[sv]=tillgång,tillgänglighet,döv,handikappad,signal,ljudsignal,visuell signal,Tangentbord,tangenter,klistriga tangenter,studsande tangenter,långsamma tangenter,musnavigering,numeriskt tangentbord
++X-KDE-Keywords[ta]=அணுகல்,அணுகும் முறை,காது கேளாத,ஆற்றல் குறைந்த,மணியோசை,காதால் கேட்கும் அளவிற்கு மணியோசை,தெரியும் மணியோசை,விசைபலகை,விசைகள்,ஒட்டும் விசைகள்,மீளும் தன்மையுடைய விசைகள்,மெதுவான விசைகள்,சுட்டிநாவிகேஷன்,எண்ணிக்கை அட்டை
++X-KDE-Keywords[th]=การเข้าถึง,ความง่ายในการใช้งาน,หูหนวก,บกพร่อง,ออด, ออดใช้ฟัง,ออดใช้ดู,แป้นพิมพ์,ปุ่ม,ปุ่มติดหนึบ,ปุ่มสะท้อน, ปุ่มชะลอ,นำทางโดยเมาส์,แผงปุ่มตัวเลข
++X-KDE-Keywords[tr]=erişim,erişilebilirlik,sağır,özürlü,zil,duyulabilir zil,görünür zil,Klavye,tuşlar,yapışkan tuşlar,zıplayan tuşlar,yavaş tuşlar,fare yönlendirmesi,num pad
++X-KDE-Keywords[uk]=доступ,доступність,глухий,каліка,дзвінок,аудіодзвінок,відеодзвінок,клавіатура,клавіші,липкі клавіші,пружні клавіші,повільні клавіші,навігація миші,цифрова клавіатура
++X-KDE-Keywords[vi]=truy cập,hỗ trợ người tàn tật,điếc,bị thương,chuông,chuông kêu,chuông rung,bàn phím,phím,phím dính,phím nảy,phím chậm,di chuyển chuột,bàn phím số
++X-KDE-Keywords[x-test]=xxaccess,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num padxx
++X-KDE-Keywords[xh]=nikezela,unikezelo,ayiva,yonakalisiwe,intsimbi,intsimbi evakalayo, intsimbi ebonakalayo,ibhodi yezitshixo,izitshixo,isithixo esincangathi, izitshixo ezilungisiweyo,izitshixo ezinengxolo,izitshixo ezicothayo,indlela yokubeka i mouse endaweni,inkatha ye num
++X-KDE-Keywords[zh_CN]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,辅助功能,聋,键盘,粘滞键,撞击键,筛选键,鼠标导航,可视铃声,小键盘
++X-KDE-Keywords[zh_TW]=access,accessibility,deaf,impaired,bell,audible bell,visible bell,Keyboard,keys,sticky keys,bounce keys,slow keys,mouse navigation,num pad,使用,聾,鈴聲,聽得見的鈴,看得見的鈴,鍵盤,按鍵,滑鼠導向,數字鍵
+ 
+ Categories=Qt;KDE;X-KDE-settings-accessibility;
+--- a/kcontrol/access/kaccess.notifyrc
++++ b/kcontrol/access/kaccess.notifyrc
+@@ -32,6 +32,7 @@
+ Comment[ne]=केडीई पहुँचयोग्य उपकरण
+ Comment[nl]=KDE Toegankelijkheid
+ Comment[nn]=Tilgjengeverktøy for KDE
++Comment[pa]=KDE ਸਹਾਇਕ ਟੂਲ
+ Comment[pl]=Narzędzie ułatwień dostępu KDE
+ Comment[pt]=Ferramenta de Acessibilidade do KDE
+ Comment[pt_BR]=Ferramenta de Acessibilidade do KDE
+@@ -49,6 +50,7 @@
+ [Event/modifierkey-latched]
+ Name=A modifier key has become active
+ Name[af]='n Verandering sleutel was geaktiveer
++Name[ca]=Alguna tecla modificadora ha esdevingut activa
+ Name[da]=En ændringstast er blevet aktiv
+ Name[de]=Eine Modifikator-Taste wurde aktiviert
+ Name[el]=Ένα πλήκτρο τροποποιητή έγινε ενεργό
+@@ -72,6 +74,7 @@
+ Name[ne]=परिमार्जक कुञ्जी सक्रिय भएको छ
+ Name[nl]=Een modificatietoets is geactiveerd
+ Name[nn]=Ein valtast er no aktiv
++Name[pa]=ਮੋਡੀਫਾਇਰ ਸਵਿੱਚ ਐਕਟਿਵ ਕੀਤੀ ਗਈ
+ Name[pl]=Klawisz modyfikujący został włączony
+ Name[pt]=Ficou activa uma tecla modificadora
+ Name[pt_BR]=Uma tecla modificadora se tornou ativa
+@@ -85,8 +88,10 @@
+ Name[zh_CN]=修饰键变为激活
+ Name[zh_TW]=組合鍵已啟動
+ Comment=A modifier key (e.g., Shift or Control) has changed its state and is now active
++Comment[ca]=Ha canviat l'estat d'una tecla modificadora (p.ex. Majúscules o Control) i ara està activa
+ Comment[de]=Eine Modifikator-Taste (Umschalt oder Strg) hat ihren Status verändert und ist nun aktiv
+ Comment[el]=Ένα πλήκτρο τροποποιητή (π.χ., Shift ή Control) άλλαξε την κατάστασή του και είναι τώρα ενεργό
++Comment[eo]=Modifila klavo (ekz. majuskliga klavo aŭ stirklavo) ŝanĝis sian staton kaj nun estas aktiva
+ Comment[et]=Muuteklahv (nt. Shift või Ctrl) muutis oma olekut ning on nüüd aktiivne
+ Comment[hu]=Egy módosító billentyű (pl. a Shift vagy a Ctrl) állapota aktívvá változott
+ Comment[ja]=修飾キー (Shift や Control) の状態が変更され、アクティブになりました
+@@ -112,6 +117,7 @@
+ [Event/modifierkey-unlatched]
+ Name=A modifier key has become inactive
+ Name[af]='n Verandering sleutel was gedeaktiveer
++Name[ca]=Alguna tecla modificadora ha esdevingut inactiva
+ Name[da]=En ændringstast er blevet deaktiveret
+ Name[de]=Eine Modifikator-Taste wurde deaktiviert
+ Name[el]=Ένα πλήκτρο τροποποιητή έγινε ανενεργό
+@@ -135,6 +141,7 @@
+ Name[ne]=परिमार्जक कुञ्जी निष्क्रिय भएको छ
+ Name[nl]=Een modificatietoets is inactief geworden
+ Name[nn]=Ein valtast er no inaktiv
++Name[pa]=ਮੋਡੀਫਾਇਰ ਸਵਿੱਚ ਇਨ-ਐਕਟਿਵ ਕੀਤੀ ਗਈ
+ Name[pl]=Klawisz modyfikujący został wyłączony
+ Name[pt]=Ficou inactiva uma tecla modificadora
+ Name[pt_BR]=Uma tecla modificadora se tornou inativa
+@@ -148,8 +155,10 @@
+ Name[zh_CN]=修饰键变为非激活
+ Name[zh_TW]=組合鍵已放開
+ Comment=A modifier key (e.g., Shift or Control) has changed its state and is now inactive
++Comment[ca]=Ha canviat l'estat d'una tecla modificadora (p.ex. Majúscules o Control) i ara està inactiva
+ Comment[de]=Eine Modifikator-Taste (Umschalt oder Strg) hat ihren Status verändert und ist nun inaktiv
+ Comment[el]=Ένα πλήκτρο τροποποιητή (π.χ., Shift ή Control) άλλαξε την κατάστασή του και είναι τώρα ανενεργό
++Comment[eo]=Modifila klavo (ekz. majuskliga klavo aŭ stirklavo) ŝanĝis sian staton kaj nun estas malaktiva
+ Comment[et]=Muuteklahv (nt. Shift või Ctrl) muutis oma olekut ning on nüüd mitteaktiivne
+ Comment[hu]=Egy módosító billentyű (pl. a Shift vagy a Ctrl) állapota inaktívvá változott
+ Comment[ja]=修飾キー (Shift や Control) の状態が変更され、非アクティブになりました
+@@ -175,6 +184,7 @@
+ [Event/modifierkey-locked]
+ Name=A modifier key has been locked
+ Name[af]='n Verandering sleutel was gesluit
++Name[ca]=S'ha fixat alguna tecla modificadora
+ Name[da]=En ændringstast er blevet låst
+ Name[de]=Eine Modifikator-Taste wurde gesperrt
+ Name[el]=Ένα πλήκτρο τροποποιητή κλειδώθηκε
+@@ -198,6 +208,7 @@
+ Name[ne]=परिमार्जक कुञ्जी ताल्चा लगाइएको छ
+ Name[nl]=Een modificatietoets is vergrendeld
+ Name[nn]=Ein valtast er no låst
++Name[pa]=ਮੋਡੀਫਾਇਰ ਸਵਿੱਚ ਲਾਕ ਕੀਤੀ ਗਈ
+ Name[pl]=Klawisz modyfikujący został zablokowany
+ Name[pt]=Uma tecla modificadora ficou bloqueada
+ Name[pt_BR]=Uma tecla modificadora foi bloqueada
+@@ -211,8 +222,10 @@
+ Name[zh_CN]=修饰键现已锁定
+ Name[zh_TW]=組合鍵已鎖定
+ Comment=A modifier key (e.g., Shift or Control) has been locked and is now active for all of the following keypresses
++Comment[ca]=S'ha fixat alguna tecla modificadora (p.ex. Majúscules o Control) i ara està activa per a les pulsacions següents de tecles
+ Comment[de]=Eine Modifikator-Taste (Umschalt oder Strg) wurde gesperrt und ist nun für alle folgenden Tastendrücke aktiv
+ Comment[el]=Ένα πλήκτρο τροποποιητή (π.χ., Shift ή Control) κλειδώθηκε και τώρα είναι ενεργό για όλα τα ακόλουθα πατήματα πλήκτρων
++Comment[eo]=Modifila klavo (ekz. majuskliga klavo aŭ stirklavo) ŝlosiĝis kaj nun estas aktiva por sekvantaj klavpremoj
+ Comment[et]=Muuteklahv (nt. Shift või Ctrl) on lukustatud ja on nüüd aktiivne kõikide järgnevate klahvivajutuste jaoks
+ Comment[hu]=Egy módosító billentyű (pl. a Shift vagy a Ctrl) zárolódott, és ezután minden billentyűlenyomásnál aktív lesz
+ Comment[ja]=修飾キー (Shift や Control) がロックされ、続くキー押下のすべてに対してアクティブになりました
+@@ -238,6 +251,7 @@
+ [Event/lockkey-locked]
+ Name=A lock key has been activated
+ Name[af]='n Sluit sleutel was geaktiveer
++Name[ca]=S'ha activat alguna tecla de fixació
+ Name[da]=En låsetast er blevet aktiveret
+ Name[de]=Eine Sperrtaste wurde aktiviert
+ Name[el]=Ένα πλήκτρο κλειδώματος έχει ενεργοποιηθεί
+@@ -262,6 +276,7 @@
+ Name[ne]=एउटा ताल्चा कुञ्जी सक्रिय बनाइएको छ
+ Name[nl]=Een vergrendeltoets is geactiveerd
+ Name[nn]=Ein låstetast er no aktiv
++Name[pa]=ਇੱਕ ਲਾਕ ਸਵਿੱਚ ਐਕਟਿਵੇਟ ਕੀਤੀ ਗਈ
+ Name[pl]=Klawisz blokujący został włączony
+ Name[pt]=Uma tecla de bloqueio foi activada
+ Name[pt_BR]=Uma tecla de bloqueio foi ativada
+@@ -274,28 +289,17 @@
+ Name[x-test]=xxA lock key has been activatedxx
+ Name[zh_CN]=锁定键现已激活
+ Name[zh_TW]=已啟動鎖定鍵
+-Comment=A lock key (e.g., Caps Lock or Num Lock) has changed its state and and is now active
+-Comment[de]=Eine Sperrtaste (Hochstelltaste oder Nummernblocksperre) hat ihren Status geändert und ist nun aktiv
++Comment=A lock key (e.g., Caps Lock or Num Lock) has changed its state and is now active
++Comment[ca]=Alguna tecla de fixació (p.ex. BloqMaj o BloqNum) ha canviat el seu estat i ara està activa
+ Comment[el]=Ένα πλήκτρο κλειδώματος (π.χ., Caps Lock ή Num Lock) άλλαξε την κατάστασή του και είναι τώρα ενεργό
+-Comment[et]=Lukustusklahv (nt. Caps Lock või Num Lock) muutis oma seisundit ning on nüüd mitteaktiivne
+-Comment[hu]=Egy zároló billentyű (pl. a Caps Lock vagy a Num Lock) állapota aktívvá vált
+-Comment[it]=Un tasto di blocco (ad es. Bloc Maiusc o Bloc Num) ha cambiato stato ed ora è attivo
+-Comment[ja]=ロックキー (Caps Lock や Num Lock) の状態が変更され、アクティブになりました
+-Comment[km]=គ្រាប់​ចុច​ចាក់​សោ (ឧ. ប្ដូរ​ជាប់ (Caps Lock) ឬ លេខ (Num Lock)) បាន​ផ្លាស់ប្ដូរ​​ស្ថានភាព​របស់​​វា ហើយ​ឥឡូវ​នេះ​វា​សកម្ម
+-Comment[nb]=En låsetast (f.eks. Caps Lock eller Num Lock) har endret status og er nå aktiv
++Comment[eo]=Ŝlosa klavo (ekz. majuskla baskulo aŭ Cifera baskulo) ŝanĝis sian staton kaj nun estas aktiva
++Comment[et]=Lukustusklahv (nt. Caps Lock või Num Lock) muutis oma seisundit ning on nüüd aktiivne
++Comment[ja]=ロックキー (Caps Lock や Num Lock) の状態が変更され、非アクティブになりました
+ Comment[nds]=En Fastsetttast (Tallenrast oder Grootschrievtast a.B.) hett sien Tostand ännert un is nu aktiev
+-Comment[ne]=ताल्चा कुञ्जी (जस्तै, क्याप्स लक वा नम लक) ले यसको स्थिति परिवर्तन गरेको छ र अहिले सक्रिय छ
+-Comment[nl]=Een vergrendeltoets (bijv. Caps Lock of Num Lock) is nu actief
+-Comment[nn]=Ein låsetast (som «Caps Lock» eller «Num Lock») har endra status, og er no aktiv
+ Comment[pt]=Uma tecla de bloqueio (p.ex., a Caps Lock ou a Num Lock) alterou o seu estado e ficou agora activa
+-Comment[pt_BR]=Uma tecla de bloqueio (p. ex., Caps Lock ou Num Lock) teve seu estado alterado e está ativa agora
+-Comment[sr]=Закључавајући тастер (нпр. капслок или нумлок) променио је стање и сада је активан
+-Comment[sr at latin]=Zaključavajući taster (npr. CapsLock ili NumLock) promenio je stanje i sada je aktivan
++Comment[pt_BR]=Uma tecla de bloqueio (p.ex., Caps Lock ou Num Lock) teve seu estado alterado e agora está ativa
+ Comment[sv]=En låstangent (t.ex. Caps Lock eller Num Lock) har ändrat tillstånd och är nu aktiv
+-Comment[th]=ปุ่มล็อค (เช่น Caps Lock หรือ Num Lock) ได้มีการเปลี่ยนสถานะ และขณะนี้เปิดการทำงาน
+-Comment[x-test]=xxA lock key (e.g., Caps Lock or Num Lock) has changed its state and and is now activexx
+-Comment[zh_CN]=锁定键(如 Caps Lock 或 Num Lock)更改了其状态,现已激活
+-Comment[zh_TW]=一個鎖定鍵(如 CapsLock 或 NumLock)已改變它的狀態
++Comment[zh_TW]=一個鎖定鍵(如 CapsLock 或 NumLock)已改變它的狀態為啟用
+ Sound=KDE_Click.wav
+ 
+ nopresentation=236
+@@ -303,6 +307,7 @@
+ [Event/lockkey-unlocked]
+ Name=A lock key has been deactivated
+ Name[af]='n Sluit sleutel was gedeaktiveer
++Name[ca]=S'ha desactivat alguna tecla de fixació
+ Name[da]=En låsetast er blevet deaktiveret
+ Name[de]=Eine Sperrtaste wurde deaktiviert
+ Name[el]=Ένα πλήκτρο κλειδώματος απενεργοποιήθηκε
+@@ -327,6 +332,7 @@
+ Name[ne]=लक कुञ्जी निष्क्रिय भएको छ
+ Name[nl]=Een vergrendeltoets is gedeactiveerd
+ Name[nn]=Ein låsetast er no inaktiv
++Name[pa]=ਇੱਕ ਲਾਕ ਸਵਿੱਚ ਡਿਐਕਟਿਵੇਟ ਕੀਤੀ ਗਈ
+ Name[pl]=Klawisz blokujący został wyłączony
+ Name[pt]=Uma tecla de bloqueio foi desactivada
+ Name[pt_BR]=Uma tecla de bloqueio foi desativada
+@@ -340,8 +346,10 @@
+ Name[zh_CN]=锁定键现已非激活
+ Name[zh_TW]=已解除鎖定鍵
+ Comment=A lock key (e.g., Caps Lock or Num Lock) has changed its state and is now inactive
++Comment[ca]=Alguna tecla de fixació (p.ex. BloqMaj o BloqNum) ha canviat el seu estat i ara està inactiva
+ Comment[de]=Eine Sperrtaste (Hochstelltaste oder Nummernblocksperre) hat ihren Status geändert und ist nun inaktiv
+ Comment[el]=Ένα πλήκτρο κλειδώματος (π.χ., Caps Lock ή Num Lock) άλλαξε την κατάστασή του και είναι τώρα ανενεργό
++Comment[eo]=Ŝlosa klavo (ekz. majuskla baskulo aŭ Cifera baskulo) ŝanĝis sian staton kaj nun estas malaktiva
+ Comment[et]=Lukustusklahv (nt. Caps Lock või Num Lock) muutis oma seisundit ning on nüüd mitteaktiivne
+ Comment[hu]=Egy zároló billentyű (pl. a Caps Lock vagy a Num Lock) állapota inaktívvá vált
+ Comment[it]=Un tasto di blocco (ad es. Bloc Maiusc o Bloc Num) ha cambiato stato ed ora è inattivo
+@@ -368,10 +376,11 @@
+ [Event/stickykeys]
+ Name=Sticky keys has been enabled or disabled
+ Name[af]=Sticky sleutels was geaktiveer of gedeaktiveer
++Name[ca]=Les tecles apegaloses s'han activat o desactivat
+ Name[da]=Klæbrige taster er aktiveret eller deaktiveret
+ Name[de]=Klebende Tasten wurden aktiviert oder deaktiviert
+ Name[el]=Τα κολλημένα πλήκτρα ενεργοποιήθηκαν ή απενεργοποιήθηκαν
+-Name[eo]=Adherklavoj validiĝis aŭ malvalidiĝis
++Name[eo]=Fiksaj klavoj validiĝis aŭ malvalidiĝis
+ Name[et]=Kleepuvad klahvid on keelatud või lubatud
+ Name[eu]=Tekla itsakorrak gaitu edo desgaitu dira
+ Name[fi]=Tahmeat näppäimet on otettu käyttöön tai poistettu käytöstä
+@@ -390,6 +399,7 @@
+ Name[ne]=स्टिकी कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Name[nl]=Plakkende toetsen is geactiveerd of gedeactiveerd
+ Name[nn]=Faste valtastar er no slått på eller av
++Name[pa]=ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Name[pl]=Lepkie klawisze zostały włączone lub wyłączone
+ Name[pt]=As teclas fixas foram activadas ou desactivadas
+ Name[pt_BR]=Teclas de aderência foram habilitadas ou desabilitadas
+@@ -403,9 +413,11 @@
+ Name[zh_TW]=相黏鍵已改變狀態
+ Comment=Sticky keys has been enabled or disabled
+ Comment[af]=Sticky sleutels was geaktiveer of gedeaktiveer
++Comment[ca]=Les tecles apegaloses s'han activat o desactivat
+ Comment[da]=Klæbrige taster er aktiveret eller deaktiveret
+ Comment[de]=Die Funktion "Klebende Tasten" wurde aktiviert oder deaktiviert
+ Comment[el]=Τα κολλημένα πλήκτρα ενεργοποιήθηκαν ή απενεργοποιήθηκαν
++Comment[eo]=Adherklavoj validiĝis aŭ malvalidiĝis
+ Comment[et]=Kleepuvad klahvid on keelatud või lubatud
+ Comment[eu]=Tekla itsakorrak gaitu edo desgaitu dira
+ Comment[fi]=Tahmeat näppäimet on otettu käyttöön tai poistettu käytöstä
+@@ -424,6 +436,7 @@
+ Comment[ne]=स्टिकी कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Comment[nl]=Plakkende toetsen is geactiveerd of gedeactiveerd
+ Comment[nn]=Faste valtastar er no slått på eller av
++Comment[pa]=ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Comment[pl]=Lepkie klawisze zostały włączone lub wyłączone
+ Comment[pt]=As teclas fixas foram activadas ou desactivadas
+ Comment[pt_BR]=Teclas de aderência foram habilitadas ou desabilitadas
+@@ -442,6 +455,7 @@
+ [Event/slowkeys]
+ Name=Slow keys has been enabled or disabled
+ Name[af]=Stadige sleutels was geaktiveer of gedeaktiveer
++Name[ca]=Les tecles lentes s'han activat o desactivat
+ Name[da]=Langsomme taster er aktiveret eller deaktiveret
+ Name[de]=Langsame Tasten wurden aktiviert oder deaktiviert
+ Name[el]=Τα αργά πλήκτρα ενεργοποιήθηκαν ή απενεργοποιήθηκαν
+@@ -464,6 +478,7 @@
+ Name[ne]=शो कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Name[nl]=Langzame toetsen is geactiveerd of gedeactiveerd
+ Name[nn]=Trege tastar er no slått på eller av
++Name[pa]=ਸਲੋਅ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Name[pl]=Powolne klawisze zostały włączone lub wyłączone
+ Name[pt]=As teclas lentas foram activadas ou desactivadas
+ Name[pt_BR]=Teclas lentas foram habilitadas ou desabilitadas
+@@ -477,9 +492,11 @@
+ Name[zh_TW]=慢速鍵已改變狀態
+ Comment=Slow keys has been enabled or disabled
+ Comment[af]=Stadige sleutels was geaktiveer of gedeaktiveer
++Comment[ca]=Les tecles lentes s'han activat o desactivat
+ Comment[da]=Langsomme taster er aktiveret eller deaktiveret
+ Comment[de]=Die Funktion "Langsame Tasten" wurde aktiviert oder deaktiviert
+ Comment[el]=Τα αργά πλήκτρα ενεργοποιήθηκαν ή απενεργοποιήθηκαν
++Comment[eo]=Malrapidklavoj validiĝis aŭ malvalidiĝis
+ Comment[et]=Aeglased klahvid on keelatud või lubatud
+ Comment[eu]=Tekla motelak gaitu edo desgaitu dira
+ Comment[fi]=Hitaat näppäimet on otettu käyttöön tai poistettu käytöstä
+@@ -498,6 +515,7 @@
+ Comment[ne]=शो कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Comment[nl]=Langzame toetsen is geactiveerd of gedeactiveerd
+ Comment[nn]=Trege tastar er no slått på eller av
++Comment[pa]=ਸਲੋਅ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Comment[pl]=Powolne klawisze zostały włączone lub wyłączone
+ Comment[pt]=As teclas lentas foram activadas ou desactivadas
+ Comment[pt_BR]=Teclas lentas foram habilitadas ou desabilitadas
+@@ -515,6 +533,7 @@
+ 
+ [Event/bouncekeys]
+ Name=Bounce keys has been enabled or disabled
++Name[ca]=Les tecles de repetició s'han activat o desactivat
+ Name[da]=Elastiske taster er aktiveret eller deaktiveret
+ Name[de]=Zurückschnellende Tasten wurden aktiviert oder deaktiviert
+ Name[el]=Τα πλήκτρα αναπήδησης ενεργοποιήθηκαν ή απενεργοποιήθηκαν
+@@ -537,6 +556,7 @@
+ Name[ne]=बाउन्स कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Name[nl]=Stuiterende toetsen is geactiveerd of gedeactiveerd
+ Name[nn]=Filtertastar er no slått på eller av
++Name[pa]=ਬਾਊਂਸ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Name[pl]=Odbijające klawisze zostały włączone lub wyłączone
+ Name[pt]=As teclas sonoras foram activadas ou desactivadas
+ Name[pt_BR]=Teclas de repercussão foram habilitadas ou desabilitadas
+@@ -550,9 +570,11 @@
+ Name[zh_TW]=彈回鍵已改變狀態
+ Comment=Bounce keys has been enabled or disabled
+ Comment[af]=Hop sleutels was geaktiveer of gedeaktiveer
++Comment[ca]=Les tecles de repetició s'han activat o desactivat
+ Comment[da]=Elastiske taster er aktiveret eller deaktiveret
+ Comment[de]=Die Funktion "Zurückschnellende Tasten" wurde aktiviert oder deaktiviert
+ Comment[el]=Τα πλήκτρα αναπήδησης ενεργοποιήθηκαν ή απενεργοποιήθηκαν
++Comment[eo]=Revenklavoj validiĝis aŭ malvalidiĝis
+ Comment[et]=Põrkavad klahvid on keelatud või lubatud
+ Comment[eu]=Errebotatze-teklak gaitu edo desgaitu dira
+ Comment[fi]=Kimpoavat näppäimet on otettu käyttöön tai poistettu käytöstä
+@@ -571,6 +593,7 @@
+ Comment[ne]=बाउन्स कुञ्जीहरू सक्षम वा अक्षम बनाइएको छ
+ Comment[nl]=Stuiterende toetsen is geactiveerd of gedeactiveerd
+ Comment[nn]=Filtertastar er no slått på eller av
++Comment[pa]=ਬਾਊਂਸ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Comment[pl]=Powolne klawisze zostały włączone lub wyłączone
+ Comment[pt]=As teclas sonoras foram activadas ou desactivadas
+ Comment[pt_BR]=Teclas de repercussão foram habilitadas ou desabilitadas
+@@ -589,6 +612,7 @@
+ [Event/mousekeys]
+ Name=Mouse keys has been enabled or disabled
+ Name[af]=Muis sleutels was geaktiveer of gedeaktiveer
++Name[ca]=Les tecles del ratolí s'han activat o desactivat
+ Name[da]=Musetaster er aktiveret eller deaktiveret
+ Name[de]=Maustasten wurden aktiviert oder deaktiviert
+ Name[el]=Τα πλήκτρα ποντικιού ενεργοποιήθηκαν ή απενεργοποιήθηκαν
+@@ -611,6 +635,7 @@
+ Name[ne]=माउस कुञ्जी सक्षम वा अक्षम बानइएको छ
+ Name[nl]=Muistoetsen is geactiveerd of gedeactiveerd
+ Name[nn]=Musetastar er no slått på eller av
++Name[pa]=ਮਾਊਸ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Name[pl]=Klawisze myszy zostały włączone lub wyłączone
+ Name[pt]=As teclas do rato foram activadas ou desactivadas
+ Name[pt_BR]=Teclas de mouse foram habilitadas ou desabilitadas
+@@ -624,6 +649,7 @@
+ Name[zh_TW]=滑鼠鍵已改變狀態
+ Comment=Mouse keys has been enabled or disabled
+ Comment[af]=Muis sleutels was geaktiveer of gedeaktiveer
++Comment[ca]=Les tecles del ratolí s'han activat o desactivat
+ Comment[da]=Musetaster er aktiveret eller deaktiveret
+ Comment[de]=Die Funktion "Maustasten" wurde aktiviert oder deaktiviert
+ Comment[el]=Τα πλήκτρα ποντικιού ενεργοποιήθηκαν ή απενεργοποιήθηκαν
+@@ -647,6 +673,7 @@
+ Comment[ne]=माउस कुञ्जी सक्षम वा अक्षम बनाइएको छ
+ Comment[nl]=Muistoetsen is geactiveerd of gedeactiveerd
+ Comment[nn]=Musetastar er no slått på eller av
++Comment[pa]=ਮਾਊਸ ਸਵਿੱਚਾਂ ਯੋਗ ਜਾਂ ਆਯੋਗ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ
+ Comment[pl]=Klawisze myszy zostały włączone lub wyłączone
+ Comment[pt]=As teclas do rato foram activadas ou desactivadas
+ Comment[pt_BR]=Teclas de mouse foram habilitadas ou desabilitadas
+--- a/kcontrol/xinerama/kcmxinerama.cpp
++++ b/kcontrol/xinerama/kcmxinerama.cpp
+@@ -87,7 +87,6 @@
+ 			QString l = i18n("Display %1", i+1);
+ 			QRect geom = QApplication::desktop()->screenGeometry(i);
+ 			xw->_unmanagedDisplay->addItem(l);
+-			xw->_ksplashDisplay->addItem(l);
+ 			dpyList.append(l);
+ 			xw->headTable->setText(i, 0, QString::number(geom.x()));
+ 			xw->headTable->setText(i, 1, QString::number(geom.y()));
+@@ -99,8 +98,6 @@
+ 
+ 		xw->headTable->setRowLabels(dpyList);
+ 
+-		connect(xw->_ksplashDisplay, SIGNAL(activated(int)),
+-			this, SLOT(windowIndicator(int)));
+ 		connect(xw->_unmanagedDisplay, SIGNAL(activated(int)),
+ 			this, SLOT(windowIndicator(int)));
+ 		connect(xw->_identify, SIGNAL(clicked()),
+@@ -147,13 +144,6 @@
+ 		else if (item == -3) // pointer warp
+ 			xw->_unmanagedDisplay->setCurrentIndex(_displays);
+ 		else	xw->_unmanagedDisplay->setCurrentIndex(item);
+-
+-		group =ksplashrc->group("Xinerama");
+-		item = group.readEntry("KSplashScreen", QApplication::desktop()->primaryScreen());
+-		if (item < 0 || item >= _displays)
+-			xw->_ksplashDisplay->setCurrentIndex(QApplication::desktop()->primaryScreen());
+-		else xw->_ksplashDisplay->setCurrentIndex(item);
+-
+ 	}
+ 	emit changed(false);
+ }
+@@ -178,10 +168,6 @@
+ 
+                 org::kde::KWin kwin("org.kde.kwin", "/KWin", QDBusConnection::sessionBus());
+                 kwin.reconfigure();
+-
+-		group = config->group("Xinerama");
+-		group.writeEntry("KSplashScreen", xw->_enableXinerama->isChecked() ? xw->_ksplashDisplay->currentIndex() : -2 /* ignore Xinerama */);
+-		group.sync();
+ 	}
+ 
+ 	KMessageBox::information(this, i18n("Some settings may affect only newly started applications."), i18n("KDE Multiple Monitors"), "nomorexineramaplease");
+@@ -198,8 +184,6 @@
+ 		xw->_enableFullscreen->setChecked(true);
+ 		xw->_unmanagedDisplay->setCurrentIndex(
+ 				QApplication::desktop()->primaryScreen());
+-		xw->_ksplashDisplay->setCurrentIndex(
+-				QApplication::desktop()->primaryScreen());
+ 		emit changed(true);
+ 	} else {
+ 		emit changed(false);
+--- a/kcontrol/xinerama/xineramawidget.ui
++++ b/kcontrol/xinerama/xineramawidget.ui
+@@ -152,29 +152,6 @@
+        </property>
+       </widget>
+      </item>
+-     <item row="1" column="1" >
+-      <widget class="QComboBox" name="_ksplashDisplay" >
+-       <property name="enabled" >
+-        <bool>false</bool>
+-       </property>
+-      </widget>
+-     </item>
+-     <item row="1" column="0" >
+-      <widget class="QLabel" name="TextLabel2_2" >
+-       <property name="enabled" >
+-        <bool>false</bool>
+-       </property>
+-       <property name="text" >
+-        <string>Show KDE splash screen on:</string>
+-       </property>
+-       <property name="wordWrap" >
+-        <bool>false</bool>
+-       </property>
+-       <property name="buddy" >
+-        <cstring>_unmanagedDisplay</cstring>
+-       </property>
+-      </widget>
+-     </item>
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="_unmanagedDisplay" >
+        <property name="enabled" >
+--- a/kcontrol/xinerama/xineramawidget.cpp
++++ b/kcontrol/xinerama/xineramawidget.cpp
+@@ -34,9 +34,6 @@
+     connect(_enablePlacement,SIGNAL(clicked()), this, SLOT(emitConfigChanged()));
+     connect(_enableMaximize,SIGNAL(clicked()), this, SLOT(emitConfigChanged()));
+     connect(_unmanagedDisplay,SIGNAL(activated(int)),this,SLOT(emitConfigChanged()));
+-    connect(_enableXinerama, SIGNAL(toggled(bool)), TextLabel2_2, SLOT(setEnabled(bool)));
+-    connect(_enableXinerama, SIGNAL(toggled(bool)), _ksplashDisplay, SLOT(setEnabled(bool)));
+-    connect(_ksplashDisplay, SIGNAL(activated(int)), this, SLOT(emitConfigChanged()));
+     connect(_enableFullscreen,SIGNAL(clicked()), this, SLOT(emitConfigChanged()));
+     connect(_enableXinerama,SIGNAL(toggled(bool)), _enableFullscreen, SLOT(setEnabled(bool)));
+ }
+--- a/kcontrol/xinerama/xinerama.desktop
++++ b/kcontrol/xinerama/xinerama.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+ Icon=preferences-desktop-display-multiple
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Exec=kcmshell4 xinerama
+-DocPath=kcontrol/multiplemonitors.html
++X-DocPath=kcontrol/multiplemonitors.html
+ Hidden[$e]=$(if test_kcm_xinerama; then echo "false"; else echo "true"; fi)
+ 
+ X-KDE-ParentApp=kcontrol
+@@ -138,53 +138,52 @@
+ Comment[x-test]=xxConfigure KDE for multiple monitorsxx
+ Comment[zh_CN]=配置 KDE 的多个监视器
+ Comment[zh_TW]=設定 KDE 支援多重顯示器
+-Keywords=Xinerama,dual head,multihead,monitor
+-Keywords[be]=Два маніторы,Манітор,Некалькі манітораў,Дысплей,Xinerama,dual head,multihead,monitor
+-Keywords[bg]=Keywords=много, монитори, монитор, екран, дисплей, Xinerama, dual head, multihead, monitor
+-Keywords[ca]=Xinerama,dual head,doble dispositiu,multihead,multiples dispositius,monitor
+-Keywords[csb]=Xinerama,dwa mònitorë,wiele mònitorów,mònitor
+-Keywords[cy]=Xinerama,pen deuol,amlben,dangosydd
+-Keywords[da]=Xinerama,dualt hovede,multihovede,skærm
+-Keywords[de]=inerama,dual head,multihead,monitor
+-Keywords[el]=Xinerama,dual head,multihead,οθόνη
+-Keywords[eo]=duobla,duoblaj,oblaj,ekrano,ekranoj
+-Keywords[et]=Xinerama,kaks monitori,mitu monitori,monitor
+-Keywords[eu]=Xinerama,dual head,multihead,monitorea
+-Keywords[fa]=Xinerama، سرآیند دوگان، سرآیند چندگانه، نمایشگر
+-Keywords[fi]=Xinerama,näyttö,kaksi näyttöä,useita näyttöjä
+-Keywords[fr]=Xinerama,dual head,multihead,moniteur,multitête,double écran, multiécran
+-Keywords[fy]=Xinerama,dual head,multihead,monitor,byldskerm
+-Keywords[gl]=Xinerama,cabeza dual,cabeza múltiple,monitor
+-Keywords[he]=Xinerama,דו ראשי,רב ראשי,מסך, dual head,multihead,monitor
+-Keywords[hr]=Xinerama,dual head,multihead,monitor,višestruki monitori
+-Keywords[hu]=Xinerama,két fejes,két fej,monitor
+-Keywords[it]=Xinerama,dual head,multihead,monitor,monitor multipli
+-Keywords[ja]=Xinerama,デュアルヘッド,マルチヘッド,モニタ
+-Keywords[km]=Xinerama ​ក្បាល​ពីរ ​ក្បាល​ច្រើន ​ម៉ូនីទ័រ
+-Keywords[ko]=Xinerama,듀얼 헤드,모니터,다중 모니터
+-Keywords[lt]=Xinerama,dual head,multihead,monitor,dviejų monitorių,monitorius
+-Keywords[lv]=Xinerama,dual head,multihead,monitori
+-Keywords[mk]=Xinerama,dual head,multihead,monitor,монитор
+-Keywords[nb]=Xinerama,to skjermer,flere skjermer,skjerm,monitor
+-Keywords[nds]=Xinerama,dual head,multihead,monitor,Mehrschirmbedrief,Dubbelschirm
+-Keywords[ne]=जिनेरामा, द्व शीर्षक, बहुँ शीर्षक, मनिटर
+-Keywords[nl]=Xinerama,dual head,multihead,monitor,beeldscherm
+-Keywords[nn]=Xinerama,to skjermar,fleire skjermar,skjerm,monitor
+-Keywords[pa]=Xinerama,dual head,multihead,monitor, ਦੋ ਮਾਨੀਟਰ, ਮਾਨੀਟਰ
+-Keywords[pl]=Xinerama,dwa monitory,wiele monitorów,monitor
+-Keywords[pt]=xinerama,vários monitores,multihead,monitor
+-Keywords[pt_BR]=Xinerama,monitores,multihead,monitor
+-Keywords[sl]=Xinerama,dual head,multihead,monitor,zaslon,dva
+-Keywords[sr]=Xinerama,dual head,multihead,monitor,монитор,више монитора,вишеглави,двоглави,Ксинерама
+-Keywords[sr at latin]=Xinerama,dual head,multihead,monitor,monitor,više monitora,višeglavi,dvoglavi,Xinerama
+-Keywords[sv]=Xinerama,dubbla skärmar,flera skärmar,bildskärm
+-Keywords[ta]= Xinerama,இரட்டை தலைப்பு,பலதலைப்பு,திரை
+-Keywords[th]=Xinerama,หัวต่อคู่,หลายหัวต่อ,จอภาพ
+-Keywords[tr]=Xinerama,çift ekran,çoklu ekran,monitör
+-Keywords[uk]=Xinerama,dual head,multihead,монітор,комбінація моніторів
+-Keywords[uz]=Xinerama,dual head,multihead,монитор
+-Keywords[vi]=Xinerama,đầu kép,đa đầu,màn hình
+-Keywords[wa]=Xinerama,deus waitroûles,multi-waitroûles,waitroûle,dual head,multihead
+-Keywords[x-test]=xxXinerama,dual head,multihead,monitorxx
+-Keywords[zh_CN]=Xinerama,dual head,multihead,monitor,双头,多头,监视器,显示器
+-Encoding=UTF-8
++X-KDE-Keywords=Xinerama,dual head,multihead,monitor
++X-KDE-Keywords[be]=Два маніторы,Манітор,Некалькі манітораў,Дысплей,Xinerama,dual head,multihead,monitor
++X-KDE-Keywords[bg]=Keywords=много, монитори, монитор, екран, дисплей, Xinerama, dual head, multihead, monitor
++X-KDE-Keywords[ca]=Xinerama,dual head,doble dispositiu,multihead,multiples dispositius,monitor
++X-KDE-Keywords[csb]=Xinerama,dwa mònitorë,wiele mònitorów,mònitor
++X-KDE-Keywords[cy]=Xinerama,pen deuol,amlben,dangosydd
++X-KDE-Keywords[da]=Xinerama,dualt hovede,multihovede,skærm
++X-KDE-Keywords[de]=inerama,dual head,multihead,monitor
++X-KDE-Keywords[el]=Xinerama,dual head,multihead,οθόνη
++X-KDE-Keywords[eo]=duobla,duoblaj,oblaj,ekrano,ekranoj
++X-KDE-Keywords[et]=Xinerama,kaks monitori,mitu monitori,monitor
++X-KDE-Keywords[eu]=Xinerama,dual head,multihead,monitorea
++X-KDE-Keywords[fa]=Xinerama، سرآیند دوگان، سرآیند چندگانه، نمایشگر
++X-KDE-Keywords[fi]=Xinerama,näyttö,kaksi näyttöä,useita näyttöjä
++X-KDE-Keywords[fr]=Xinerama,dual head,multihead,moniteur,multitête,double écran, multiécran
++X-KDE-Keywords[fy]=Xinerama,dual head,multihead,monitor,byldskerm
++X-KDE-Keywords[gl]=Xinerama,cabeza dual,cabeza múltiple,monitor
++X-KDE-Keywords[he]=Xinerama,דו ראשי,רב ראשי,מסך, dual head,multihead,monitor
++X-KDE-Keywords[hr]=Xinerama,dual head,multihead,monitor,višestruki monitori
++X-KDE-Keywords[hu]=Xinerama,két fejes,két fej,monitor
++X-KDE-Keywords[it]=Xinerama,dual head,multihead,monitor,monitor multipli
++X-KDE-Keywords[ja]=Xinerama,デュアルヘッド,マルチヘッド,モニタ
++X-KDE-Keywords[km]=Xinerama ​ក្បាល​ពីរ ​ក្បាល​ច្រើន ​ម៉ូនីទ័រ
++X-KDE-Keywords[ko]=Xinerama,듀얼 헤드,모니터,다중 모니터
++X-KDE-Keywords[lt]=Xinerama,dual head,multihead,monitor,dviejų monitorių,monitorius
++X-KDE-Keywords[lv]=Xinerama,dual head,multihead,monitori
++X-KDE-Keywords[mk]=Xinerama,dual head,multihead,monitor,монитор
++X-KDE-Keywords[nb]=Xinerama,to skjermer,flere skjermer,skjerm,monitor
++X-KDE-Keywords[nds]=Xinerama,dual head,multihead,monitor,Mehrschirmbedrief,Dubbelschirm
++X-KDE-Keywords[ne]=जिनेरामा, द्व शीर्षक, बहुँ शीर्षक, मनिटर
++X-KDE-Keywords[nl]=Xinerama,dual head,multihead,monitor,beeldscherm
++X-KDE-Keywords[nn]=Xinerama,to skjermar,fleire skjermar,skjerm,monitor
++X-KDE-Keywords[pa]=Xinerama,dual head,multihead,monitor, ਦੋ ਮਾਨੀਟਰ, ਮਾਨੀਟਰ
++X-KDE-Keywords[pl]=Xinerama,dwa monitory,wiele monitorów,monitor
++X-KDE-Keywords[pt]=xinerama,vários monitores,multihead,monitor
++X-KDE-Keywords[pt_BR]=Xinerama,monitores,multihead,monitor
++X-KDE-Keywords[sl]=Xinerama,dual head,multihead,monitor,zaslon,dva
++X-KDE-Keywords[sr]=Xinerama,dual head,multihead,monitor,монитор,више монитора,вишеглави,двоглави,Ксинерама
++X-KDE-Keywords[sr at latin]=Xinerama,dual head,multihead,monitor,monitor,više monitora,višeglavi,dvoglavi,Xinerama
++X-KDE-Keywords[sv]=Xinerama,dubbla skärmar,flera skärmar,bildskärm
++X-KDE-Keywords[ta]= Xinerama,இரட்டை தலைப்பு,பலதலைப்பு,திரை
++X-KDE-Keywords[th]=Xinerama,หัวต่อคู่,หลายหัวต่อ,จอภาพ
++X-KDE-Keywords[tr]=Xinerama,çift ekran,çoklu ekran,monitör
++X-KDE-Keywords[uk]=Xinerama,dual head,multihead,монітор,комбінація моніторів
++X-KDE-Keywords[uz]=Xinerama,dual head,multihead,монитор
++X-KDE-Keywords[vi]=Xinerama,đầu kép,đa đầu,màn hình
++X-KDE-Keywords[wa]=Xinerama,deus waitroûles,multi-waitroûles,waitroûle,dual head,multihead
++X-KDE-Keywords[x-test]=xxXinerama,dual head,multihead,monitorxx
++X-KDE-Keywords[zh_CN]=Xinerama,dual head,multihead,monitor,双头,多头,监视器,显示器
+--- a/kcontrol/randr/krandrtray.desktop
++++ b/kcontrol/randr/krandrtray.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KRandRTray
+ Name[be]=Змена параметраў манітора
+ Name[hu]=Képernyőfelbontás
+--- a/kcontrol/randr/randr.desktop
++++ b/kcontrol/randr/randr.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 randr
+ Icon=preferences-desktop-display-randr
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ X-KDE-Library=kcm_randr
+ Hidden[$e]=$(if xdpyinfo|grep RANDR > /dev/null; then echo "false"; else echo "true"; fi)
+ 
+@@ -94,6 +93,7 @@
+ Comment[fi]=Resoluution muuttaminen ja ruudun kääntäminen
+ Comment[fr]=Redimensionner et Tourner votre affichage
+ Comment[fy]=Wizigje it skermgrutte en rotearje dizze
++Comment[ga]=Athraigh méid do scáileáin agus rothlaigh é
+ Comment[gl]=Redimensionar e rotar a sua pantalla
+ Comment[he]=שינוי גודל התצוגה שלך וסיבובה
+ Comment[hr]=Promijena veličine i orijentacije zaslona
+@@ -137,61 +137,61 @@
+ Comment[zh_CN]=更改显示大小和旋转显示
+ Comment[zh_TW]=調整大小及旋轉你的螢幕
+ 
+-Keywords=resize,rotate,display,color,depth,size,horizontal,vertical
+-Keywords[be]=Змена памеру,Перагортванне,Дысплей,Экран,Колер,Глыбіня,Памер,Гарызантальны,Вертыкальны,resize,rotate,display,color,depth,size,horizontal,vertical
+-Keywords[bg]=Keywords=ротация, завъртане, екран, размер, промяна, resize, rotate, display, color, depth, size, horizontal, vertical
+-Keywords[ca]=amida,gira,pantalla,color,profunditat,mida,horitzontal,vertical
+-Keywords[cs]=velikost,rotace,obrazovka,barva,hloubka,horizontální,vertikální
+-Keywords[csb]=zmiana miarë,òbrócenié,pòłożenié,miara,ekran,farwa,farwë,głãbòkòsc farwów,wielëna farwów,knôdno,hòrizontalno
+-Keywords[cy]=newid maint,cylchdroi,dangos,lliw,dyfnder,maint,llorweddol,fertigol
+-Keywords[da]=ændr,rotér,visning,farve,dybde,størrelse,vandret,lodret
+-Keywords[de]=Größe ändern,rotieren,anzeigen,Farbe,Tiefe,Größe,horizontal,vertikal,waagrecht,senkrecht
+-Keywords[el]=αλλαγή μεγέθους,περιστροφή,οθόνη,χρώμα,βάθος,μέγεθος,οριζόντια,κατακόρυφα
+-Keywords[en_GB]=resize,rotate,display,colour,depth,size,horizontal,vertical
+-Keywords[eo]=grandigi,turni,direkto,ekrano,ekranbloko,grandeco,koloro,horizontala,vertikala
+-Keywords[es]=redimensionar,rotar,mostrar,color,colores,tamaño,horizontal,vertical
+-Keywords[et]=suuruse muutmine,pööramine,monitor,ekraan,värv,sügavus,suurus,horisontaalne,vertikaalne
+-Keywords[eu]=tamaina aldatu,biratu,pantaila,kolorea,sakonera,tamaina,horizontala, bertikala
+-Keywords[fa]=تغییر اندازه، چرخش، نمایش، رنگ، عمق، اندازه، افقی، عمودی
+-Keywords[fi]=vaihda kokoa,käännä,näyttö,väri,syvyys,koko,vaakasuora,pystysuora
+-Keywords[fr]=redimensionner,rotation,affichage,couleur,profondeur,taille, horizontal,vertical
+-Keywords[fy]=grutte wizigje,rotearje,draaie,display,byldskerm,skerm,monitor,djipte,grutte,horizontaal,vertikaal
+-Keywords[ga]=athraigh méid,rothlaigh,scáileán,dath,doimhneacht,méid,cothrománach,ingearach
+-Keywords[gl]=redimensionar,rotar,pantalla,cor,resolución,tamaño,horizontal,vertical
+-Keywords[he]=שנה גודל,סובב,תצוגה,צבע,עומק,גודל,אופקי,אנכי, resize,rotate,display,color,depth,size,horizontal,vertical
+-Keywords[hr]=resize,rotate,display,color,depth,size,horizontal,vertical,promjena,veličina,rotacija,zaslon,boja,dubina,vodoravno,uspravno
+-Keywords[hu]=átméretezés,elforgatás,képernyő,szín,színmélység,vízszintes,függőleges
+-Keywords[is]=resize,rotate,display,color,depth,size,horizontal,vertical,stækka,minnka,snúa
+-Keywords[it]=ridimensiona,ruota,schermo,colori,profondità di colore,dimensione,orizzontale,verticale
+-Keywords[ja]=リサイズ,回転,ディスプレイ,色,深度,サイズ,水平,垂直
+-Keywords[km]=ផ្លាស់ប្ដូរ​ទំហំ បង្វិល ការ​បង្ហាញ ពណ៌ ជម្រៅ ទំហំ ផ្ដេក បញ្ឈរ
+-Keywords[ko]=크기 조정,회전,색,깊이,크기,수평,수직
+-Keywords[lt]=resize,rotate,display,color,depth,size,horizontal,vertical,keisti dydį,pasukti,sukti,ekranas,spalva,gylis,dydis,horizontalus,vertikalus
+-Keywords[lv]=mainīt izmēru,rotēt,ekrāns,krāsa,dziļums,izmērs,horizontāls,vertikāls
+-Keywords[mk]=resize,rotate,display,color,depth,size,horizontal,vertical,смени големина,ротира,прикажи,екран,боја,длабочина,големина,хоризонтално,вертикално
+-Keywords[nb]=størrelse,rotere,skjerm,farge,dybde,vannrett,loddrett
+-Keywords[nds]=Grött ännern,dreihen,display,Dorstellen,Klöör,Deep,Grött,waagrecht,pielliek
+-Keywords[ne]=रिसाइज, घुमाउनुहोस्, प्रदर्शन, गहिराइ, साइज, तेर्सो, ठाडो
+-Keywords[nl]=grootte wijzigen,roteren,draaien,display,beeldscherm,scherm,monitor,diepte,grootte,horizontaal,verticaal
+-Keywords[nn]=storleik,rotera,skjerm,farge,djupn,vassrett,loddrett
+-Keywords[pa]=ਮੁੜ-ਅਕਾਰ,ਘੁੰਮਾਉ,ਝਲਕ,ਰੰਗ,ਡੂੰਘਾਈ,ਅਕਾਰ,ਖਿਤਿਜੀ,ਲੰਬਕਾਰੀ
+-Keywords[pl]=zmiana rozmiaru,obrót,orientacja,rozmiar,ekran,kolor,kolory,głębokość kolorów,liczba kolorów,pionowo,poziomo
+-Keywords[pt]=redimensionar,rodar,ecrã,cor,profundidade,tamanho,horizontal,vertical
+-Keywords[pt_BR]=redimensionar,rotacionar,display,cor,produndidade,tamanho,horizontal,vertical
+-Keywords[ro]=redimensionare,rotire,ecran,monitor,culoare,adîncime,mărime,orizontal,vertical
+-Keywords[ru]=resize,rotate,display,color,depth,size,horizontal,vertical,экран
+-Keywords[se]=sturrodat,jorahit,šearbma,ivdni,čikŋodat,láskut,ceaggut
+-Keywords[sl]=spremeni,velikost,zavrti,zaslon,barva,globina,navpičn,vodoravn
+-Keywords[sr]=resize,rotate,display,color,depth,size,horizontal,vertical,промена,величина,ротација,екран,боја,дубина,водоравно,усправно
+-Keywords[sr at latin]=resize,rotate,display,color,depth,size,horizontal,vertical,promena,veličina,rotacija,ekran,boja,dubina,vodoravno,uspravno
+-Keywords[sv]=ändra storlek,rotera,skärm,färg,djup,storlek,horisontell,vertikal
+-Keywords[ta]=அளவுமாற்று, சுழற்று, காட்டு,வண்ணம், ஆழம்,அளவு,இடவலம்,மேலிருந்து கீழ்
+-Keywords[th]=ปรับขนาด,หมุน,จอภาพ,สี,ความลึก,ขนาด,แนวราบ,แนวดิ่ง
+-Keywords[tr]=boyutlandır,çevir,görünüm,renk,derinlik,boyut,dikey,yatay
+-Keywords[uk]=зміна розміру,розмір,обертання,дисплей,колір,глибина,горизонтальний,вертикальний
+-Keywords[uz]=ўлчамини ўзгартириш,буриш,экран,ранг,чуқурлик,ўлчам,горизантал,вертикал
+-Keywords[vi]=đổi cỡ,quay,hiển thị,màu,độ sâu,cỡ,ngang,dọc
+-Keywords[wa]=candjî l' grandeu,tourner,håynaedje,coleur,parfondeu,grandeu,di coûtchî,d' astampé
+-Keywords[x-test]=xxresize,rotate,display,color,depth,size,horizontal,verticalxx
+-Keywords[zh_CN]=resize,rotate,display,color,depth,size,horizontal,vertical,更改大小,旋转,显示,颜色,深度,大小,垂直,水平
+-Keywords[zh_TW]=resize,rotate,display,color,depth,size,horizontal,vertical,調整大小,旋轉,螢幕,顏色,深度,尺寸,垂直,水平
++X-KDE-Keywords=resize,rotate,display,color,depth,size,horizontal,vertical
++X-KDE-Keywords[be]=Змена памеру,Перагортванне,Дысплей,Экран,Колер,Глыбіня,Памер,Гарызантальны,Вертыкальны,resize,rotate,display,color,depth,size,horizontal,vertical
++X-KDE-Keywords[bg]=Keywords=ротация, завъртане, екран, размер, промяна, resize, rotate, display, color, depth, size, horizontal, vertical
++X-KDE-Keywords[ca]=amida,gira,pantalla,color,profunditat,mida,horitzontal,vertical
++X-KDE-Keywords[cs]=velikost,rotace,obrazovka,barva,hloubka,horizontální,vertikální
++X-KDE-Keywords[csb]=zmiana miarë,òbrócenié,pòłożenié,miara,ekran,farwa,farwë,głãbòkòsc farwów,wielëna farwów,knôdno,hòrizontalno
++X-KDE-Keywords[cy]=newid maint,cylchdroi,dangos,lliw,dyfnder,maint,llorweddol,fertigol
++X-KDE-Keywords[da]=ændr,rotér,visning,farve,dybde,størrelse,vandret,lodret
++X-KDE-Keywords[de]=Größe ändern,rotieren,anzeigen,Farbe,Tiefe,Größe,horizontal,vertikal,waagrecht,senkrecht
++X-KDE-Keywords[el]=αλλαγή μεγέθους,περιστροφή,οθόνη,χρώμα,βάθος,μέγεθος,οριζόντια,κατακόρυφα
++X-KDE-Keywords[en_GB]=resize,rotate,display,colour,depth,size,horizontal,vertical
++X-KDE-Keywords[eo]=grandigi,turni,direkto,ekrano,ekranbloko,grandeco,koloro,horizontala,vertikala
++X-KDE-Keywords[es]=redimensionar,rotar,mostrar,color,colores,tamaño,horizontal,vertical
++X-KDE-Keywords[et]=suuruse muutmine,pööramine,monitor,ekraan,värv,sügavus,suurus,horisontaalne,vertikaalne
++X-KDE-Keywords[eu]=tamaina aldatu,biratu,pantaila,kolorea,sakonera,tamaina,horizontala, bertikala
++X-KDE-Keywords[fa]=تغییر اندازه، چرخش، نمایش، رنگ، عمق، اندازه، افقی، عمودی
++X-KDE-Keywords[fi]=vaihda kokoa,käännä,näyttö,väri,syvyys,koko,vaakasuora,pystysuora
++X-KDE-Keywords[fr]=redimensionner,rotation,affichage,couleur,profondeur,taille, horizontal,vertical
++X-KDE-Keywords[fy]=grutte wizigje,rotearje,draaie,display,byldskerm,skerm,monitor,djipte,grutte,horizontaal,vertikaal
++X-KDE-Keywords[ga]=athraigh méid,rothlaigh,scáileán,dath,doimhneacht,méid,cothrománach,ingearach
++X-KDE-Keywords[gl]=redimensionar,rotar,pantalla,cor,resolución,tamaño,horizontal,vertical
++X-KDE-Keywords[he]=שנה גודל,סובב,תצוגה,צבע,עומק,גודל,אופקי,אנכי, resize,rotate,display,color,depth,size,horizontal,vertical
++X-KDE-Keywords[hr]=resize,rotate,display,color,depth,size,horizontal,vertical,promjena,veličina,rotacija,zaslon,boja,dubina,vodoravno,uspravno
++X-KDE-Keywords[hu]=átméretezés,elforgatás,képernyő,szín,színmélység,vízszintes,függőleges
++X-KDE-Keywords[is]=resize,rotate,display,color,depth,size,horizontal,vertical,stækka,minnka,snúa
++X-KDE-Keywords[it]=ridimensiona,ruota,schermo,colori,profondità di colore,dimensione,orizzontale,verticale
++X-KDE-Keywords[ja]=リサイズ,回転,ディスプレイ,色,深度,サイズ,水平,垂直
++X-KDE-Keywords[km]=ផ្លាស់ប្ដូរ​ទំហំ បង្វិល ការ​បង្ហាញ ពណ៌ ជម្រៅ ទំហំ ផ្ដេក បញ្ឈរ
++X-KDE-Keywords[ko]=크기 조정,회전,색,깊이,크기,수평,수직
++X-KDE-Keywords[lt]=resize,rotate,display,color,depth,size,horizontal,vertical,keisti dydį,pasukti,sukti,ekranas,spalva,gylis,dydis,horizontalus,vertikalus
++X-KDE-Keywords[lv]=mainīt izmēru,rotēt,ekrāns,krāsa,dziļums,izmērs,horizontāls,vertikāls
++X-KDE-Keywords[mk]=resize,rotate,display,color,depth,size,horizontal,vertical,смени големина,ротира,прикажи,екран,боја,длабочина,големина,хоризонтално,вертикално
++X-KDE-Keywords[nb]=størrelse,rotere,skjerm,farge,dybde,vannrett,loddrett
++X-KDE-Keywords[nds]=Grött ännern,dreihen,display,Dorstellen,Klöör,Deep,Grött,waagrecht,pielliek
++X-KDE-Keywords[ne]=रिसाइज, घुमाउनुहोस्, प्रदर्शन, गहिराइ, साइज, तेर्सो, ठाडो
++X-KDE-Keywords[nl]=grootte wijzigen,roteren,draaien,display,beeldscherm,scherm,monitor,diepte,grootte,horizontaal,verticaal
++X-KDE-Keywords[nn]=storleik,rotera,skjerm,farge,djupn,vassrett,loddrett
++X-KDE-Keywords[pa]=ਮੁੜ-ਅਕਾਰ,ਘੁੰਮਾਉ,ਝਲਕ,ਰੰਗ,ਡੂੰਘਾਈ,ਅਕਾਰ,ਖਿਤਿਜੀ,ਲੰਬਕਾਰੀ
++X-KDE-Keywords[pl]=zmiana rozmiaru,obrót,orientacja,rozmiar,ekran,kolor,kolory,głębokość kolorów,liczba kolorów,pionowo,poziomo
++X-KDE-Keywords[pt]=redimensionar,rodar,ecrã,cor,profundidade,tamanho,horizontal,vertical
++X-KDE-Keywords[pt_BR]=redimensionar,rotacionar,display,cor,produndidade,tamanho,horizontal,vertical
++X-KDE-Keywords[ro]=redimensionare,rotire,ecran,monitor,culoare,adîncime,mărime,orizontal,vertical
++X-KDE-Keywords[ru]=resize,rotate,display,color,depth,size,horizontal,vertical,экран
++X-KDE-Keywords[se]=sturrodat,jorahit,šearbma,ivdni,čikŋodat,láskut,ceaggut
++X-KDE-Keywords[sl]=spremeni,velikost,zavrti,zaslon,barva,globina,navpičn,vodoravn
++X-KDE-Keywords[sr]=resize,rotate,display,color,depth,size,horizontal,vertical,промена,величина,ротација,екран,боја,дубина,водоравно,усправно
++X-KDE-Keywords[sr at latin]=resize,rotate,display,color,depth,size,horizontal,vertical,promena,veličina,rotacija,ekran,boja,dubina,vodoravno,uspravno
++X-KDE-Keywords[sv]=ändra storlek,rotera,skärm,färg,djup,storlek,horisontell,vertikal
++X-KDE-Keywords[ta]=அளவுமாற்று, சுழற்று, காட்டு,வண்ணம், ஆழம்,அளவு,இடவலம்,மேலிருந்து கீழ்
++X-KDE-Keywords[th]=ปรับขนาด,หมุน,จอภาพ,สี,ความลึก,ขนาด,แนวราบ,แนวดิ่ง
++X-KDE-Keywords[tr]=boyutlandır,çevir,görünüm,renk,derinlik,boyut,dikey,yatay
++X-KDE-Keywords[uk]=зміна розміру,розмір,обертання,дисплей,колір,глибина,горизонтальний,вертикальний
++X-KDE-Keywords[uz]=ўлчамини ўзгартириш,буриш,экран,ранг,чуқурлик,ўлчам,горизантал,вертикал
++X-KDE-Keywords[vi]=đổi cỡ,quay,hiển thị,màu,độ sâu,cỡ,ngang,dọc
++X-KDE-Keywords[wa]=candjî l' grandeu,tourner,håynaedje,coleur,parfondeu,grandeu,di coûtchî,d' astampé
++X-KDE-Keywords[x-test]=xxresize,rotate,display,color,depth,size,horizontal,verticalxx
++X-KDE-Keywords[zh_CN]=resize,rotate,display,color,depth,size,horizontal,vertical,更改大小,旋转,显示,颜色,深度,大小,垂直,水平
++X-KDE-Keywords[zh_TW]=resize,rotate,display,color,depth,size,horizontal,vertical,調整大小,旋轉,螢幕,顏色,深度,尺寸,垂直,水平
+--- a/kcontrol/smserver/kcmsmserver.desktop
++++ b/kcontrol/smserver/kcmsmserver.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kcmsmserver
+ Icon=preferences-system-session
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kcmsmserver/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kcmsmserver/index.html
+ 
+ X-KDE-Library=kcm_smserver
+ X-KDE-ParentApp=kcontrol
+@@ -98,6 +97,7 @@
+ Comment[fi]=Istunnonhallinnan ja uloskirjautumisen asetukset
+ Comment[fr]=Configuration du gestionnaire de session et réglages de la sortie
+ Comment[fy]=Hjir kinne jo it sesjebehear en ôfmeld-ynstellings fêststelle
++Comment[ga]=Cumraigh bainisteoir an tseisiúin agus socruithe logála amach
+ Comment[gl]=Configurar o xestor de sesións e as opcións de saída
+ Comment[he]=שינוי הגדרות מנהל ההפעלה והיציאה מהמערכת
+ Comment[hr]=Konfiguriranje upravitelja sesijama i postavkama odjavljivanja
+@@ -142,61 +142,61 @@
+ Comment[zh_CN]=配置会话管理器和注销设置
+ Comment[zh_TW]=設定工作階段管理程式與登出設定值
+ 
+-Keywords=ksmserver,session,logout,confirmation,save,restore
+-Keywords[be]=Сесія,Выхад,Канец сесіі,Пацверджанне,Захаванне,Захаваць,Аднавіць,Аднаўленне,ksmserver,session,logout,confirmation,save,restore
+-Keywords[bg]=Keywords=сесия, сесии, изход, запис, възстановяване, ksmserver, session, logout, confirmation, save, restore
+-Keywords[ca]=ksmserver,sessió,sortida,confirmació,desa,restaura
+-Keywords[cs]=Správce relace,Relace,Odhlášení,Potvrzení,Uložení,Obnovení
+-Keywords[csb]=ksmserver,sesëjô,wëlogòwanié,pòcwierdzenié,zachòwanié stónu,òdtwòrzenié,kùńc robòtë,kùńc pracë
+-Keywords[cy]=ksmserver,sesiwn,allgofnodi,cadarnhau,cadw,adfer
+-Keywords[da]=ksmserver,session,log af,bekræftelse,gem,genopret
+-Keywords[de]=Ksmserver,Sitzung,Abmelden,Logout,Bestätigung,Speichern,Wiederherstellen
+-Keywords[el]=ksmserver,συνεδρία,αποσύνδεση,επιβεβαίωση,αποθήκευση,αποκατάσταση
+-Keywords[eo]=seancokonservilo,seanco,adaiŭo,konfirmo,sekurigo,restarigo
+-Keywords[es]=ksmserver,sesión,salida,confirmación,guardar,restaurar
+-Keywords[et]=ksmserver,seanss,väljalogimine,kinnitus,salvestamine,taastamine
+-Keywords[eu]=ksmserver,saioa,saio amaiera,berrespena,gorde,berrezarri
+-Keywords[fa]=ksmserver، نشست، خروج، تأیید، ذخیره، بازنشانی
+-Keywords[fi]=ksmserver,istunto,lopetus,vahvistus,tallenna,palauta
+-Keywords[fr]=ksmserver,session,arrêt,logout,confirmation,enregistrement,enregistrer,restaurer,restauration,connexion,déconnexion
+-Keywords[fy]=ksmserver,sesje,logout,ôfmelde,befêstiging,herstelle,opslaan,bewarje
+-Keywords[ga]=ksmserver,seisiún,logáil amach,dearbhú,sábháil,athchóiriú
+-Keywords[gl]=ksmserver,sesión,saída,confirmación,guardar,restaurar
+-Keywords[he]=הפעלה,יציאה,אישור,שמירה,שיחזור,ksmserver, session,logout,confirmation,save,restore
+-Keywords[hr]=ksmserver,session,logout,confirmation,save,restore,sesija,odjava,potvrda,spremanje,obnavljanje
+-Keywords[hu]=ksmserver,munkafolyamat,kijelentkezés,megerősítés,mentés,visszatöltés
+-Keywords[is]=ksmserver,seta,stimpla út,innskráning,staðfesting,vista,endurheimta
+-Keywords[it]=ksmserver,sessione,uscita,conferma,salva,ripristina
+-Keywords[ja]=ksmserver,セッション,ログアウト,確認,保存,復旧
+-Keywords[km]=ksmserver សម័យ ចេញ ការ​អះអាង រក្សា​ទុក ស្ដារ
+-Keywords[ko]=ksmserver,세션,로그아웃,확인,저장,복원
+-Keywords[lt]=ksmserver,sesija,išsiregistravimas,patvirtinimas,išsaugoti,atstatyti
+-Keywords[lv]=ksmserveris,sesija,atteikšanās,apstiprinājums,saglabāt,atjaunot
+-Keywords[mk]=ksmserver,session,logout,confirmation,save,restore, сесија,одјави се,потврда,сними,реконструирај
+-Keywords[nb]=ksmserver,økt,utlogging,lagre,gjenopprette
+-Keywords[nds]=ksmserver,Törn,afmellen,nafragen,Nafraag,sekern,wedderherstellen
+-Keywords[ne]=ksmserver,सत्र, लग आउट, यकीन, बचत गर्नुहोस्, पूर्वावस्थामा फर्काउनुहोस्
+-Keywords[nl]=ksmserver,sessie,logout,uitloggen,afmelden,bevestiging,herstellen,opslaan
+-Keywords[nn]=ksmserver,økt,utlogging,stadfesting,lagra,gjenopprett
+-Keywords[pa]=ksmserver,session,logout,confirmation,save,restore,ਸੰਭਾਲੋ,ਲਾਗਆਉਟ,ਪੁਸ਼ਟੀ
+-Keywords[pl]=ksmserver,sesja,wylogowanie,potwierdzenie,zachowanie stanu,odtworzenie,kończenie pracy
+-Keywords[pt]=ksmserver,sessão,terminar,confirmar,gravar,restaurar
+-Keywords[pt_BR]=ksmserver,sessão,finalizar,sair,confirmação,salvar,restaurar
+-Keywords[ro]=ksmserver,sesiune,ieşire,confirmare,salvare,refacere
+-Keywords[se]=ksmserver,bargovuorru,olggosčáliheapmi,nannen,vurket,máhcahit
+-Keywords[sl]=ksmserver,seja,odjava,potrditev,shrani,obnovi
+-Keywords[sr]=ksmserver,session,logout,confirmation,save,restore,сесија,одјављивање, потврда,снимање,обнављање
+-Keywords[sr at latin]=ksmserver,session,logout,confirmation,save,restore,sesija,odjavljivanje, potvrda,snimanje,obnavljanje
+-Keywords[sv]=ksmserver,session,logga ut,bekräftelse,spara,återställa
+-Keywords[ta]=ksmசேவகன்,அமர்வு,வெளிசெல்,உறுதி செய்,சேமி,திரும்ப பெறு
+-Keywords[th]=ksmserver,วาระ,ล็อกเอาต์,การยืนยัน,บันทึก,เรียกค่าคืน
+-Keywords[tr]=ksmserver,oturum,çıkış,kaydet
+-Keywords[uk]=ksmserver,сеанс,кінець сеансу,підтвердження,збереження,відновлення
+-Keywords[uz]=ksmserver,сеанс,чиқиш,тасдиқлаш,сақлаш,тиклаш
+-Keywords[vi]=ksmserver,phiên chạy,đăng xuất,xác nhận,lưu,phục hồi
+-Keywords[x-test]=xxksmserver,session,logout,confirmation,save,restorexx
+-Keywords[xh]=ksmserver,isiqendu,phuma ngaphandle,uqinisekiso,gcina,gcina kwakhona
+-Keywords[zh_CN]=ksmserver,会话,注消,确认,保存,恢复
+-Keywords[zh_TW]=ksmserver,session,logout,confirmation,save,restore,工作階段,登出,確認,儲存,回復
++X-KDE-Keywords=ksmserver,session,logout,confirmation,save,restore
++X-KDE-Keywords[be]=Сесія,Выхад,Канец сесіі,Пацверджанне,Захаванне,Захаваць,Аднавіць,Аднаўленне,ksmserver,session,logout,confirmation,save,restore
++X-KDE-Keywords[bg]=Keywords=сесия, сесии, изход, запис, възстановяване, ksmserver, session, logout, confirmation, save, restore
++X-KDE-Keywords[ca]=ksmserver,sessió,sortida,confirmació,desa,restaura
++X-KDE-Keywords[cs]=Správce relace,Relace,Odhlášení,Potvrzení,Uložení,Obnovení
++X-KDE-Keywords[csb]=ksmserver,sesëjô,wëlogòwanié,pòcwierdzenié,zachòwanié stónu,òdtwòrzenié,kùńc robòtë,kùńc pracë
++X-KDE-Keywords[cy]=ksmserver,sesiwn,allgofnodi,cadarnhau,cadw,adfer
++X-KDE-Keywords[da]=ksmserver,session,log af,bekræftelse,gem,genopret
++X-KDE-Keywords[de]=Ksmserver,Sitzung,Abmelden,Logout,Bestätigung,Speichern,Wiederherstellen
++X-KDE-Keywords[el]=ksmserver,συνεδρία,αποσύνδεση,επιβεβαίωση,αποθήκευση,αποκατάσταση
++X-KDE-Keywords[eo]=seancokonservilo,seanco,adaiŭo,konfirmo,sekurigo,restarigo
++X-KDE-Keywords[es]=ksmserver,sesión,salida,confirmación,guardar,restaurar
++X-KDE-Keywords[et]=ksmserver,seanss,väljalogimine,kinnitus,salvestamine,taastamine
++X-KDE-Keywords[eu]=ksmserver,saioa,saio amaiera,berrespena,gorde,berrezarri
++X-KDE-Keywords[fa]=ksmserver، نشست، خروج، تأیید، ذخیره، بازنشانی
++X-KDE-Keywords[fi]=ksmserver,istunto,lopetus,vahvistus,tallenna,palauta
++X-KDE-Keywords[fr]=ksmserver,session,arrêt,logout,confirmation,enregistrement,enregistrer,restaurer,restauration,connexion,déconnexion
++X-KDE-Keywords[fy]=ksmserver,sesje,logout,ôfmelde,befêstiging,herstelle,opslaan,bewarje
++X-KDE-Keywords[ga]=ksmserver,seisiún,logáil amach,dearbhú,sábháil,athchóiriú
++X-KDE-Keywords[gl]=ksmserver,sesión,saída,confirmación,guardar,restaurar
++X-KDE-Keywords[he]=הפעלה,יציאה,אישור,שמירה,שיחזור,ksmserver, session,logout,confirmation,save,restore
++X-KDE-Keywords[hr]=ksmserver,session,logout,confirmation,save,restore,sesija,odjava,potvrda,spremanje,obnavljanje
++X-KDE-Keywords[hu]=ksmserver,munkafolyamat,kijelentkezés,megerősítés,mentés,visszatöltés
++X-KDE-Keywords[is]=ksmserver,seta,stimpla út,innskráning,staðfesting,vista,endurheimta
++X-KDE-Keywords[it]=ksmserver,sessione,uscita,conferma,salva,ripristina
++X-KDE-Keywords[ja]=ksmserver,セッション,ログアウト,確認,保存,復旧
++X-KDE-Keywords[km]=ksmserver សម័យ ចេញ ការ​អះអាង រក្សា​ទុក ស្ដារ
++X-KDE-Keywords[ko]=ksmserver,세션,로그아웃,확인,저장,복원
++X-KDE-Keywords[lt]=ksmserver,sesija,išsiregistravimas,patvirtinimas,išsaugoti,atstatyti
++X-KDE-Keywords[lv]=ksmserveris,sesija,atteikšanās,apstiprinājums,saglabāt,atjaunot
++X-KDE-Keywords[mk]=ksmserver,session,logout,confirmation,save,restore, сесија,одјави се,потврда,сними,реконструирај
++X-KDE-Keywords[nb]=ksmserver,økt,utlogging,lagre,gjenopprette
++X-KDE-Keywords[nds]=ksmserver,Törn,afmellen,nafragen,Nafraag,sekern,wedderherstellen
++X-KDE-Keywords[ne]=ksmserver,सत्र, लग आउट, यकीन, बचत गर्नुहोस्, पूर्वावस्थामा फर्काउनुहोस्
++X-KDE-Keywords[nl]=ksmserver,sessie,logout,uitloggen,afmelden,bevestiging,herstellen,opslaan
++X-KDE-Keywords[nn]=ksmserver,økt,utlogging,stadfesting,lagra,gjenopprett
++X-KDE-Keywords[pa]=ksmserver,session,logout,confirmation,save,restore,ਸੰਭਾਲੋ,ਲਾਗਆਉਟ,ਪੁਸ਼ਟੀ
++X-KDE-Keywords[pl]=ksmserver,sesja,wylogowanie,potwierdzenie,zachowanie stanu,odtworzenie,kończenie pracy
++X-KDE-Keywords[pt]=ksmserver,sessão,terminar,confirmar,gravar,restaurar
++X-KDE-Keywords[pt_BR]=ksmserver,sessão,finalizar,sair,confirmação,salvar,restaurar
++X-KDE-Keywords[ro]=ksmserver,sesiune,ieşire,confirmare,salvare,refacere
++X-KDE-Keywords[se]=ksmserver,bargovuorru,olggosčáliheapmi,nannen,vurket,máhcahit
++X-KDE-Keywords[sl]=ksmserver,seja,odjava,potrditev,shrani,obnovi
++X-KDE-Keywords[sr]=ksmserver,session,logout,confirmation,save,restore,сесија,одјављивање, потврда,снимање,обнављање
++X-KDE-Keywords[sr at latin]=ksmserver,session,logout,confirmation,save,restore,sesija,odjavljivanje, potvrda,snimanje,obnavljanje
++X-KDE-Keywords[sv]=ksmserver,session,logga ut,bekräftelse,spara,återställa
++X-KDE-Keywords[ta]=ksmசேவகன்,அமர்வு,வெளிசெல்,உறுதி செய்,சேமி,திரும்ப பெறு
++X-KDE-Keywords[th]=ksmserver,วาระ,ล็อกเอาต์,การยืนยัน,บันทึก,เรียกค่าคืน
++X-KDE-Keywords[tr]=ksmserver,oturum,çıkış,kaydet
++X-KDE-Keywords[uk]=ksmserver,сеанс,кінець сеансу,підтвердження,збереження,відновлення
++X-KDE-Keywords[uz]=ksmserver,сеанс,чиқиш,тасдиқлаш,сақлаш,тиклаш
++X-KDE-Keywords[vi]=ksmserver,phiên chạy,đăng xuất,xác nhận,lưu,phục hồi
++X-KDE-Keywords[x-test]=xxksmserver,session,logout,confirmation,save,restorexx
++X-KDE-Keywords[xh]=ksmserver,isiqendu,phuma ngaphandle,uqinisekiso,gcina,gcina kwakhona
++X-KDE-Keywords[zh_CN]=ksmserver,会话,注消,确认,保存,恢复
++X-KDE-Keywords[zh_TW]=ksmserver,session,logout,confirmation,save,restore,工作階段,登出,確認,儲存,回復
+ 
+ Categories=Qt;KDE;X-KDE-settings-components;
+--- a/kcontrol/kthememanager/kthememanager.desktop
++++ b/kcontrol/kthememanager/kthememanager.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kthememanager
+ Icon=preferences-desktop-theme-manager
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kthememanager
+ X-KDE-ParentApp=kcontrol
+@@ -52,7 +51,7 @@
+ Name[ne]=विषयवस्तु प्रबन्धक
+ Name[nl]=Themabeheerder
+ Name[nn]=Temahandsamar
+-Name[pa]=ਸਰੂਪ ਮੈਨੇਜਰ
++Name[pa]=ਥੀਮ ਮੈਨੇਜਰ
+ Name[pl]=Menedżer motywów
+ Name[pt]=Gestor de Temas
+ Name[pt_BR]=Gerenciador de Temas
+@@ -115,7 +114,7 @@
+ Comment[ne]=विश्वव्यापी केडीई दृश्य विषयवस्तु व्यवस्थापन गर्नुहोस्
+ Comment[nl]=Algemene visuele thema's van KDE beheren
+ Comment[nn]=Vel mellom KDE-tema for heile brukarflata
+-Comment[pa]=ਮੁੱਢਲੇ KDE ਦਿੱਖ ਸਰੂਪ ਪਰਬੰਧ
++Comment[pa]=ਗਲੋਬਲ KDE ਦਿੱਖ ਥੀਮ ਪਰਬੰਧ
+ Comment[pl]=Zarządzaj motywami KDE
+ Comment[pt]=Gestão global de temas visuais do KDE
+ Comment[pt_BR]=Gerencia temas visuais globais do KDE
+@@ -136,61 +135,61 @@
+ Comment[zh_CN]=管理全局 KDE 视觉主题
+ Comment[zh_TW]=管理全域 KDE 視覺佈景
+ 
+-Keywords=themes,look and feel
+-Keywords[af]=themes,look and feel,temas
+-Keywords[be]=Тэмы,Вонкавы выгляд,themes,look and feel
+-Keywords[bg]=Keywords=теми, вид, themes, look and feel
+-Keywords[br]=gizioù,Neuz ha feson
+-Keywords[ca]=temes,aspecte i efecte
+-Keywords[cs]=motivy,vzhled a chování
+-Keywords[csb]=téma,wëzdrzatk
+-Keywords[cy]=themau,golwg a theimlad
+-Keywords[da]=temaer,udseende
+-Keywords[de]=Designs,Themes,Erscheinungsbild
+-Keywords[el]=θέματα,εμφάνιση και αίσθηση
+-Keywords[eo]=etoso,etosoj,videbleco,uzebleco
+-Keywords[es]=temas,aspecto y comportamiento
+-Keywords[et]=teemad,välimus
+-Keywords[eu]=gaiak,itxura eta portaera
+-Keywords[fa]=چهره‌ها، ظاهر و احساس
+-Keywords[fi]=teemat,ulkonäkö ja tuntuma
+-Keywords[fr]=thèmes,apparence et ergonomie
+-Keywords[fy]=tema's,úterlik en gedrach
+-Keywords[ga]=téamaí,cuma
+-Keywords[gl]=temas,apariencia
+-Keywords[he]=ערכות נושא, מראה ותחושה,themes,look and feel
+-Keywords[hr]=themes,look and feel,izgled i osjećaj,teme
+-Keywords[hu]=témák,megjelenés
+-Keywords[it]=temi,aspetto
+-Keywords[ja]=テーマ,look and feel,外観,ルックアンドフィール
+-Keywords[km]=ស្បែក រូូបរាង និង​មុខងារ
+-Keywords[ko]=테마,모습과 느낌
+-Keywords[lt]=themes,look and feel,temos,išvaizda ir jausena
+-Keywords[lv]=tēmas,izskats un sajūtas
+-Keywords[mk]=themes,look and feel,теми,изглед и чувство
+-Keywords[ms]=tema, rupa dan rasa
+-Keywords[nb]=temaer,utseende og oppførsel
+-Keywords[nds]=Muster,themes,Themas,look and feel,Achtergrund,Klören,Klöörschemas,Schemas,Klöörschema
+-Keywords[ne]=विषयवस्तु, हेराइ र बुझाइ
+-Keywords[nl]=thema's,uiterlijk en gedrag
+-Keywords[nn]=tema,utsjånad og åtferd
+-Keywords[pa]=ਸਰੂਪ,ਦਿੱਖ ਅਤੇ ਛੋਹ
+-Keywords[pl]=motywy,wygląd
+-Keywords[pt]=temas,aparência e comportamento
+-Keywords[pt_BR]=temas,aparência
+-Keywords[ro]=tematici,apect,grafică
+-Keywords[se]=fáttát,fárda ja láhtten
+-Keywords[sl]=teme,videz in občutek
+-Keywords[sr]=themes,look and feel,теме,изглед и осећај,изглед
+-Keywords[sr at latin]=themes,look and feel,teme,izgled i osećaj,izgled
+-Keywords[sv]=teman,utseende och känsla
+-Keywords[ta]=உரைபொருள்,பார் மற்றும் உணர்ணர்
+-Keywords[th]=ชุดตกแต่ง,รูปแบบและความรู้สึก
+-Keywords[tr]=temalar,görünüm ve hisset
+-Keywords[uk]=теми,вигляд та поведінка
+-Keywords[uz]=мавзулар,ташқи кўриниши
+-Keywords[vi]=sắc thái,giao diện và cảm nhận
+-Keywords[wa]=tinmes,rivnance et dujhance
+-Keywords[x-test]=xxthemes,look and feelxx
+-Keywords[zh_CN]=themes,look and feel,主题,观感
+-Keywords[zh_TW]=themes,look and feel,主題,外觀與感覺
++X-KDE-Keywords=themes,look and feel
++X-KDE-Keywords[af]=themes,look and feel,temas
++X-KDE-Keywords[be]=Тэмы,Вонкавы выгляд,themes,look and feel
++X-KDE-Keywords[bg]=Keywords=теми, вид, themes, look and feel
++X-KDE-Keywords[br]=gizioù,Neuz ha feson
++X-KDE-Keywords[ca]=temes,aspecte i efecte
++X-KDE-Keywords[cs]=motivy,vzhled a chování
++X-KDE-Keywords[csb]=téma,wëzdrzatk
++X-KDE-Keywords[cy]=themau,golwg a theimlad
++X-KDE-Keywords[da]=temaer,udseende
++X-KDE-Keywords[de]=Designs,Themes,Erscheinungsbild
++X-KDE-Keywords[el]=θέματα,εμφάνιση και αίσθηση
++X-KDE-Keywords[eo]=etoso,etosoj,videbleco,uzebleco
++X-KDE-Keywords[es]=temas,aspecto y comportamiento
++X-KDE-Keywords[et]=teemad,välimus
++X-KDE-Keywords[eu]=gaiak,itxura eta portaera
++X-KDE-Keywords[fa]=چهره‌ها، ظاهر و احساس
++X-KDE-Keywords[fi]=teemat,ulkonäkö ja tuntuma
++X-KDE-Keywords[fr]=thèmes,apparence et ergonomie
++X-KDE-Keywords[fy]=tema's,úterlik en gedrach
++X-KDE-Keywords[ga]=téamaí,cuma
++X-KDE-Keywords[gl]=temas,apariencia
++X-KDE-Keywords[he]=ערכות נושא, מראה ותחושה,themes,look and feel
++X-KDE-Keywords[hr]=themes,look and feel,izgled i osjećaj,teme
++X-KDE-Keywords[hu]=témák,megjelenés
++X-KDE-Keywords[it]=temi,aspetto
++X-KDE-Keywords[ja]=テーマ,look and feel,外観,ルックアンドフィール
++X-KDE-Keywords[km]=ស្បែក រូូបរាង និង​មុខងារ
++X-KDE-Keywords[ko]=테마,모습과 느낌
++X-KDE-Keywords[lt]=themes,look and feel,temos,išvaizda ir jausena
++X-KDE-Keywords[lv]=tēmas,izskats un sajūtas
++X-KDE-Keywords[mk]=themes,look and feel,теми,изглед и чувство
++X-KDE-Keywords[ms]=tema, rupa dan rasa
++X-KDE-Keywords[nb]=temaer,utseende og oppførsel
++X-KDE-Keywords[nds]=Muster,themes,Themas,look and feel,Achtergrund,Klören,Klöörschemas,Schemas,Klöörschema
++X-KDE-Keywords[ne]=विषयवस्तु, हेराइ र बुझाइ
++X-KDE-Keywords[nl]=thema's,uiterlijk en gedrag
++X-KDE-Keywords[nn]=tema,utsjånad og åtferd
++X-KDE-Keywords[pa]=ਸਰੂਪ,ਦਿੱਖ ਅਤੇ ਛੋਹ
++X-KDE-Keywords[pl]=motywy,wygląd
++X-KDE-Keywords[pt]=temas,aparência e comportamento
++X-KDE-Keywords[pt_BR]=temas,aparência
++X-KDE-Keywords[ro]=tematici,apect,grafică
++X-KDE-Keywords[se]=fáttát,fárda ja láhtten
++X-KDE-Keywords[sl]=teme,videz in občutek
++X-KDE-Keywords[sr]=themes,look and feel,теме,изглед и осећај,изглед
++X-KDE-Keywords[sr at latin]=themes,look and feel,teme,izgled i osećaj,izgled
++X-KDE-Keywords[sv]=teman,utseende och känsla
++X-KDE-Keywords[ta]=உரைபொருள்,பார் மற்றும் உணர்ணர்
++X-KDE-Keywords[th]=ชุดตกแต่ง,รูปแบบและความรู้สึก
++X-KDE-Keywords[tr]=temalar,görünüm ve hisset
++X-KDE-Keywords[uk]=теми,вигляд та поведінка
++X-KDE-Keywords[uz]=мавзулар,ташқи кўриниши
++X-KDE-Keywords[vi]=sắc thái,giao diện và cảm nhận
++X-KDE-Keywords[wa]=tinmes,rivnance et dujhance
++X-KDE-Keywords[x-test]=xxthemes,look and feelxx
++X-KDE-Keywords[zh_CN]=themes,look and feel,主题,观感
++X-KDE-Keywords[zh_TW]=themes,look and feel,主題,外觀與感覺
+--- a/kcontrol/kthememanager/installktheme.desktop
++++ b/kcontrol/kthememanager/installktheme.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Install KDE Theme
+ Name[af]=Installeer KDE temas
+ Name[ar]=ثبّت سمِة لـٍ كدي
+@@ -42,7 +41,7 @@
+ Name[ne]=केडीई विषयवस्तु स्थापना गर्नुहोस्
+ Name[nl]=KDE-thema installeren
+ Name[nn]=Installer KDE-tema
+-Name[pa]=KDE ਸਰੂਪ ਇੰਸਟਾਲ
++Name[pa]=KDE ਥੀਮ ਇੰਸਟਾਲ
+ Name[pl]=Instaluj motyw KDE
+ Name[pt]=Instalar um Tema do KDE
+ Name[pt_BR]=Instalar Tema do KDE
+--- a/kcontrol/launch/kcmlaunch.desktop
++++ b/kcontrol/launch/kcmlaunch.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-desktop-launch-feedback
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kcmlaunch/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kcmlaunch/index.html
+ Exec=kcmshell4 kcmlaunch
+ 
+ X-KDE-Library=kcm_launch
+@@ -134,60 +133,60 @@
+ Comment[xh]=Khetha isicelo-yenza uhlobo lwesiphumo seLaunch
+ Comment[zh_CN]=选择程序启动反馈风格
+ Comment[zh_TW]=選擇程式啟動時的回饋風格
+-Keywords=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
+-Keywords[be]=Праграма,Запуск,Выкананне,Заняты,Курсор,Мыш,Указальнік,Перагортванне,Дыск,Запуск,Дастасаванне,Справаздача,application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
+-Keywords[bg]=Keywords=програма, приложение, стартиране, зает, показалец, курсор, мишка, показалеца, application, start, launch, busy, cursor, feedback, mouse, pointer, rotating, spinning, disk, startup, program, report
+-Keywords[ca]=aplicació,iniciar,carregar,ocupat,cursor,notificació,ratolí,punter,rotació,gir,disc,arrencar,programa,informe
+-Keywords[cs]=aplikace,spuštění,start,pracuje,kurzor,reakce,odezva,myš,otáčení,rotace,disk,startování,program,oznámení
+-Keywords[csb]=programa,sztart,zrëszanié,òbczas,kùrsor,pòkrok,mësz,kùrsor,rotujący,krãceniowi,disk,programa,rapòrt
+-Keywords[cy]=cymhwysiad,cychwyn,lawnsio,prysur,cyrchydd,adborth,llygoden,pwyntydd,cylchdroi,troelli,disc,dechrau,rhaglen,adroddiad
+-Keywords[da]=program,start,optaget,markør,tilbagemelding,mus,peger, roterende,spinnende,disk,opstart,rapport
+-Keywords[de]=Anwendungen,Start,Programmstart,Cursor,Aktivierung,Mauszeiger,Anzeige
+-Keywords[el]=εφαρμογή,έναρξη,εκκίνηση,απασχολημένο,δρομέας,ανάδραση,ποντίκι,δείκτης,περιστροφή,περιστρεφόμενος,δίσκος,έναρξη,πρόγραμμα,αναφορά
+-Keywords[eo]=aplikaĵo,lanĉo,komenco,okupita,kursilo,reago,muso,montrilo,rotacio,turniĝo,disketo,programo,raporto
+-Keywords[es]=aplicación,iniciar,lanzar,ocupado,cursor,notificación,ratón,puntero,rotación,giro,disco,arrancar,programa,informar
+-Keywords[et]=rakendus,käivitamine,hõivatud,kursor,tagasiside,hiir,hiirekursor
+-Keywords[eu]=aplikazioa,abiatu,lanpetuta,kurtsorea,jakinarazpena,sagua,gezia,errotazioa,itzulbira,diskoa,programa,jakinarazi
+-Keywords[fa]=کاربرد، آغاز، راه‌انداختن، مشغول، مکان‌نما، بازخورد، موشی، اشاره‌گر، چرخش، دوار، دیسک، راه‌اندازی، برنامه، گزارش
+-Keywords[fi]=sovellus,käynnistyminen,käynnistäminen,varattu,osoitin,palaute,hiiri, pyörivä,levy,ohjelma
+-Keywords[fr]=application,démarrage,occupé,curseur,souris,pointeur,rotation,disque,programme,rapport
+-Keywords[fy]=applikaasje,start,begjinne,dwaande,rinnerke,feedback,mûs,wizer,rotaasje,rûndraaie,skiif,begjinne,programma,rapport
+-Keywords[ga]=feidhmchlár,tosach,tosaigh,gafa,cúrsóir,aisfhotha,luch,luchóg,pointeoir,rothlú,casadh,diosca,tosú,clár,tuairisc
+-Keywords[gl]=aplicación,início,executar,ocupado,ponteiro,execución,rato,ponteiro,rotación,xiro,disco,início,programa,informe
+-Keywords[he]=עכבר,מצביע,מסתובב,דיסק,תוכנית,דיווח,יישום,הפעלה,אתחול,עסוק,סמן,משוב,application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
+-Keywords[hr]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,aplikacija,pokretanje,započinjanje,zauzet,pokazivač,povratni podaci,potvrda,miš,vrtnja,disk,izvještaj
+-Keywords[hu]=alkalmazás,start,indítás,elfoglalt,egérmutató,visszajelzés,egér,effektus,forgó,pörgő,lemez,indulás,program,jelzés
+-Keywords[is]=forrit,start,keyrsla,upptekin,bendill,upplýsingar,mús,pointer,rotating,spinning,disk,startup,program,report
+-Keywords[it]=applicazione,avvio,lancio,occupato,cursore,feedback,segnalazione,mouse,puntatore,rotazione,disco,programma,segnale
+-Keywords[ja]=アプリケーション,開始,起動,ビジー,カーソル,フィードバック,マウス,ポインタ,回転,スピン,開始,プログラム,レポート
+-Keywords[km]=កម្មវិធី ចាប់ផ្ដើម ដំណើរ​ការ រវល់ ទស្សន៍​ទ្រនិច មតិ​អ្នកប្រើ កណ្ដុរ ព្រួញ​កណ្តុរ ​បង្វិល បង្កើន​បន្ថយ  ថាស ចាប់ផ្ដើម កម្មវិធី របាយការណ៍
+-Keywords[ko]=프로그램,시작,실행,바쁨,커서,피드백,마우스,포인터,회전,디스크,시작
+-Keywords[lt]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report, programa,startas,paleisti,užimtas,kursorius,atgalinis ryšys, pelė, sukimasis, diskas, paleidimas, raportas
+-Keywords[lv]=aplikācija,startēt,palaist,aizņemts,kursors,atbilde,pele,bultiņa,rotēšana,sagriešanās,disks,startēšana,programma,reports
+-Keywords[mk]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,апликација,старт,зафатен,курсор,глушец,покажувач,ротирачки,вртечки,диск,програма,извештај
+-Keywords[nb]=program,start,åpne,opptatt,markør,mus,peker,rotere,spinne,disk,oppstart,rapport
+-Keywords[nds]=Programm,start,launch,busy,Blinker,feedback,Muus,Wieser,dreihen,spinning,Diskett,Hoochfohren,Programm,Bericht
+-Keywords[ne]=अनुप्रयोग, सुरु, सुरुआत, व्यस्त, कर्सर, पृष्ठपोषण, माउस, सूचक, घुमाउने, स्पाइनिङ, डिस्क, सुरु, कार्यक्रम, प्रतिवेदन
+-Keywords[nn]=program,start,oppstart,oppteken,peikar,mus,musepeikar,tilbakemelding,disk
+-Keywords[pa]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,ਕਾਰਜ, ਸ਼ੁਰੂ,ਰੁਝਿਆ,ਫੀਡਬੈਕ,ਮਾਊਸ,ਬਿੰਦੂ,ਡਿਸਕ,ਕਾਰਜ,ਰਿਪੋਰਟ
+-Keywords[pl]=program,start,uruchomienie,w trakcie,kursor,postęp,mysz,wskażnik,obracający się,wirujący,dysk,program,raport
+-Keywords[pt]=aplicação,iniciar,lançar,ocupado,cursor,comportamento,feedback,rato,rodar,disco,início,programa,comunicar,reacção
+-Keywords[pt_BR]=aplicativo,iniciar,lançar,ocupado,cursor,aviso,mouse,ponteiro,rotacionar,rotação,disco,inicializar,programa,relatório
+-Keywords[ro]=aplicaţie,start,pornire,cursor,mouse,indicator,rotire,disc,program,raportare
+-Keywords[se]=prográmma,álggaheapmi,rahpat,geavahusas,sieván,sáhpán,jorahit,skearru,raporta
+-Keywords[sl]=program,začetek,zagon,zaposlen,utripač,povratna informacija,miška,kazalec,vrteče,disk,aplikacija,poročilo
+-Keywords[sr]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,програм,покретање,почетак,заузет,курсор,одзив,миш,показивач,ротирајући,обртање,извештај,јављање
+-Keywords[sr at latin]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,program,pokretanje,početak,zauzet,kursor,odziv,miš,pokazivač,rotirajući,obrtanje,izveštaj,javljanje
+-Keywords[sv]=program,start,upptagen,markör,gensvar,mus,pekare,roterande,snurrande,disk,uppstart,rapport
+-Keywords[ta]=பயன்பாடு, துவக்கம், தொடக்கம், நேரமின்மை,கருத்து,நிலைக்காட்டடி,சுட்டி,சுழற்று,சுழல்,வட்டு,துவக்கம்,நிரல்,அறிக்கை
+-Keywords[th]=แอพพลิเคชัน,เริ่ม,เรียกทำงาน,ไม่ว่าง,เคอร์เซอร์,ตอบสนอง,เม้าส์,ตัวชี้,การวน,การหมุน,ดิสก์,เริ่มทำงาน,โปรแกรม,รายงาน
+-Keywords[tr]=uygulama,başlat,hızlı başlat,meşgul,imleç,geri besleme,fare,gösterici,dönen,fırıl fırıl dönen,disk,Başlangıç,program,rapor
+-Keywords[uk]=програма,старт,пуск,працюю,курсор,відображення,мишка,вказівник,обертання,крутіння,диск,запуск,звіт
+-Keywords[uz]=дастур,ишга тушириш,банд,курсор,сичқчонча,диск,айланувчи,spinning,ишга тушиш,ҳисобот
+-Keywords[vi]=chương trình ứng dụng,bắt đầu,khởi chạy,bận,con trỏ,chuột,con trỏ,quay,quay tròn,đĩa,khởi động,chương trình,báo cáo
+-Keywords[x-test]=xxapplication,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,reportxx
+-Keywords[xh]=isicelo,qala,launch,xakekile,isalathisi,isiphumo,imouse,isalathisi,iyajikeleza,qulukubhede,idiski,qala,udweliso lwenkqubo,ingxelo
+-Keywords[zh_CN]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,程序,启动,忙,光标,反馈,鼠标指针,旋转,磁盘,启动,报告
+-Keywords[zh_TW]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,應用程式,開始,啟動,忙碌,游標,回饋,滑鼠,指標,回轉,旋轉,磁碟,啟動,程式,報告
++X-KDE-Keywords=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
++X-KDE-Keywords[be]=Праграма,Запуск,Выкананне,Заняты,Курсор,Мыш,Указальнік,Перагортванне,Дыск,Запуск,Дастасаванне,Справаздача,application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
++X-KDE-Keywords[bg]=Keywords=програма, приложение, стартиране, зает, показалец, курсор, мишка, показалеца, application, start, launch, busy, cursor, feedback, mouse, pointer, rotating, spinning, disk, startup, program, report
++X-KDE-Keywords[ca]=aplicació,iniciar,carregar,ocupat,cursor,notificació,ratolí,punter,rotació,gir,disc,arrencar,programa,informe
++X-KDE-Keywords[cs]=aplikace,spuštění,start,pracuje,kurzor,reakce,odezva,myš,otáčení,rotace,disk,startování,program,oznámení
++X-KDE-Keywords[csb]=programa,sztart,zrëszanié,òbczas,kùrsor,pòkrok,mësz,kùrsor,rotujący,krãceniowi,disk,programa,rapòrt
++X-KDE-Keywords[cy]=cymhwysiad,cychwyn,lawnsio,prysur,cyrchydd,adborth,llygoden,pwyntydd,cylchdroi,troelli,disc,dechrau,rhaglen,adroddiad
++X-KDE-Keywords[da]=program,start,optaget,markør,tilbagemelding,mus,peger, roterende,spinnende,disk,opstart,rapport
++X-KDE-Keywords[de]=Anwendungen,Start,Programmstart,Cursor,Aktivierung,Mauszeiger,Anzeige
++X-KDE-Keywords[el]=εφαρμογή,έναρξη,εκκίνηση,απασχολημένο,δρομέας,ανάδραση,ποντίκι,δείκτης,περιστροφή,περιστρεφόμενος,δίσκος,έναρξη,πρόγραμμα,αναφορά
++X-KDE-Keywords[eo]=aplikaĵo,lanĉo,komenco,okupita,kursilo,reago,muso,montrilo,rotacio,turniĝo,disketo,programo,raporto
++X-KDE-Keywords[es]=aplicación,iniciar,lanzar,ocupado,cursor,notificación,ratón,puntero,rotación,giro,disco,arrancar,programa,informar
++X-KDE-Keywords[et]=rakendus,käivitamine,hõivatud,kursor,tagasiside,hiir,hiirekursor
++X-KDE-Keywords[eu]=aplikazioa,abiatu,lanpetuta,kurtsorea,jakinarazpena,sagua,gezia,errotazioa,itzulbira,diskoa,programa,jakinarazi
++X-KDE-Keywords[fa]=کاربرد، آغاز، راه‌انداختن، مشغول، مکان‌نما، بازخورد، موشی، اشاره‌گر، چرخش، دوار، دیسک، راه‌اندازی، برنامه، گزارش
++X-KDE-Keywords[fi]=sovellus,käynnistyminen,käynnistäminen,varattu,osoitin,palaute,hiiri, pyörivä,levy,ohjelma
++X-KDE-Keywords[fr]=application,démarrage,occupé,curseur,souris,pointeur,rotation,disque,programme,rapport
++X-KDE-Keywords[fy]=applikaasje,start,begjinne,dwaande,rinnerke,feedback,mûs,wizer,rotaasje,rûndraaie,skiif,begjinne,programma,rapport
++X-KDE-Keywords[ga]=feidhmchlár,tosach,tosaigh,gafa,cúrsóir,aisfhotha,luch,luchóg,pointeoir,rothlú,casadh,diosca,tosú,clár,tuairisc
++X-KDE-Keywords[gl]=aplicación,início,executar,ocupado,ponteiro,execución,rato,ponteiro,rotación,xiro,disco,início,programa,informe
++X-KDE-Keywords[he]=עכבר,מצביע,מסתובב,דיסק,תוכנית,דיווח,יישום,הפעלה,אתחול,עסוק,סמן,משוב,application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report
++X-KDE-Keywords[hr]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,aplikacija,pokretanje,započinjanje,zauzet,pokazivač,povratni podaci,potvrda,miš,vrtnja,disk,izvještaj
++X-KDE-Keywords[hu]=alkalmazás,start,indítás,elfoglalt,egérmutató,visszajelzés,egér,effektus,forgó,pörgő,lemez,indulás,program,jelzés
++X-KDE-Keywords[is]=forrit,start,keyrsla,upptekin,bendill,upplýsingar,mús,pointer,rotating,spinning,disk,startup,program,report
++X-KDE-Keywords[it]=applicazione,avvio,lancio,occupato,cursore,feedback,segnalazione,mouse,puntatore,rotazione,disco,programma,segnale
++X-KDE-Keywords[ja]=アプリケーション,開始,起動,ビジー,カーソル,フィードバック,マウス,ポインタ,回転,スピン,開始,プログラム,レポート
++X-KDE-Keywords[km]=កម្មវិធី ចាប់ផ្ដើម ដំណើរ​ការ រវល់ ទស្សន៍​ទ្រនិច មតិ​អ្នកប្រើ កណ្ដុរ ព្រួញ​កណ្តុរ ​បង្វិល បង្កើន​បន្ថយ  ថាស ចាប់ផ្ដើម កម្មវិធី របាយការណ៍
++X-KDE-Keywords[ko]=프로그램,시작,실행,바쁨,커서,피드백,마우스,포인터,회전,디스크,시작
++X-KDE-Keywords[lt]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report, programa,startas,paleisti,užimtas,kursorius,atgalinis ryšys, pelė, sukimasis, diskas, paleidimas, raportas
++X-KDE-Keywords[lv]=aplikācija,startēt,palaist,aizņemts,kursors,atbilde,pele,bultiņa,rotēšana,sagriešanās,disks,startēšana,programma,reports
++X-KDE-Keywords[mk]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,апликација,старт,зафатен,курсор,глушец,покажувач,ротирачки,вртечки,диск,програма,извештај
++X-KDE-Keywords[nb]=program,start,åpne,opptatt,markør,mus,peker,rotere,spinne,disk,oppstart,rapport
++X-KDE-Keywords[nds]=Programm,start,launch,busy,Blinker,feedback,Muus,Wieser,dreihen,spinning,Diskett,Hoochfohren,Programm,Bericht
++X-KDE-Keywords[ne]=अनुप्रयोग, सुरु, सुरुआत, व्यस्त, कर्सर, पृष्ठपोषण, माउस, सूचक, घुमाउने, स्पाइनिङ, डिस्क, सुरु, कार्यक्रम, प्रतिवेदन
++X-KDE-Keywords[nn]=program,start,oppstart,oppteken,peikar,mus,musepeikar,tilbakemelding,disk
++X-KDE-Keywords[pa]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,ਕਾਰਜ, ਸ਼ੁਰੂ,ਰੁਝਿਆ,ਫੀਡਬੈਕ,ਮਾਊਸ,ਬਿੰਦੂ,ਡਿਸਕ,ਕਾਰਜ,ਰਿਪੋਰਟ
++X-KDE-Keywords[pl]=program,start,uruchomienie,w trakcie,kursor,postęp,mysz,wskażnik,obracający się,wirujący,dysk,program,raport
++X-KDE-Keywords[pt]=aplicação,iniciar,lançar,ocupado,cursor,comportamento,feedback,rato,rodar,disco,início,programa,comunicar,reacção
++X-KDE-Keywords[pt_BR]=aplicativo,iniciar,lançar,ocupado,cursor,aviso,mouse,ponteiro,rotacionar,rotação,disco,inicializar,programa,relatório
++X-KDE-Keywords[ro]=aplicaţie,start,pornire,cursor,mouse,indicator,rotire,disc,program,raportare
++X-KDE-Keywords[se]=prográmma,álggaheapmi,rahpat,geavahusas,sieván,sáhpán,jorahit,skearru,raporta
++X-KDE-Keywords[sl]=program,začetek,zagon,zaposlen,utripač,povratna informacija,miška,kazalec,vrteče,disk,aplikacija,poročilo
++X-KDE-Keywords[sr]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,програм,покретање,почетак,заузет,курсор,одзив,миш,показивач,ротирајући,обртање,извештај,јављање
++X-KDE-Keywords[sr at latin]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,program,pokretanje,početak,zauzet,kursor,odziv,miš,pokazivač,rotirajući,obrtanje,izveštaj,javljanje
++X-KDE-Keywords[sv]=program,start,upptagen,markör,gensvar,mus,pekare,roterande,snurrande,disk,uppstart,rapport
++X-KDE-Keywords[ta]=பயன்பாடு, துவக்கம், தொடக்கம், நேரமின்மை,கருத்து,நிலைக்காட்டடி,சுட்டி,சுழற்று,சுழல்,வட்டு,துவக்கம்,நிரல்,அறிக்கை
++X-KDE-Keywords[th]=แอพพลิเคชัน,เริ่ม,เรียกทำงาน,ไม่ว่าง,เคอร์เซอร์,ตอบสนอง,เม้าส์,ตัวชี้,การวน,การหมุน,ดิสก์,เริ่มทำงาน,โปรแกรม,รายงาน
++X-KDE-Keywords[tr]=uygulama,başlat,hızlı başlat,meşgul,imleç,geri besleme,fare,gösterici,dönen,fırıl fırıl dönen,disk,Başlangıç,program,rapor
++X-KDE-Keywords[uk]=програма,старт,пуск,працюю,курсор,відображення,мишка,вказівник,обертання,крутіння,диск,запуск,звіт
++X-KDE-Keywords[uz]=дастур,ишга тушириш,банд,курсор,сичқчонча,диск,айланувчи,spinning,ишга тушиш,ҳисобот
++X-KDE-Keywords[vi]=chương trình ứng dụng,bắt đầu,khởi chạy,bận,con trỏ,chuột,con trỏ,quay,quay tròn,đĩa,khởi động,chương trình,báo cáo
++X-KDE-Keywords[x-test]=xxapplication,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,reportxx
++X-KDE-Keywords[xh]=isicelo,qala,launch,xakekile,isalathisi,isiphumo,imouse,isalathisi,iyajikeleza,qulukubhede,idiski,qala,udweliso lwenkqubo,ingxelo
++X-KDE-Keywords[zh_CN]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,程序,启动,忙,光标,反馈,鼠标指针,旋转,磁盘,启动,报告
++X-KDE-Keywords[zh_TW]=application,start,launch,busy,cursor,feedback,mouse,pointer,rotating,spinning,disk,startup,program,report,應用程式,開始,啟動,忙碌,游標,回饋,滑鼠,指標,回轉,旋轉,磁碟,啟動,程式,報告
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/kcontrol/kdm/kdm.desktop
++++ b/kcontrol/kdm/kdm.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kdm
+ Icon=preferences-system-login
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kdm/index.html#configuring-kdm
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kdm/index.html#configuring-kdm
+ 
+ X-KDE-SubstituteUID=true
+ 
+@@ -56,7 +55,7 @@
+ Name[ne]=लगइन प्रबन्धक
+ Name[nl]=Aanmeldscherm
+ Name[nn]=Innloggingshandsamar
+-Name[pa]=ਲਾਗ ਮੈਨੇਜਰ
++Name[pa]=ਲਾਗ-ਇਨ ਮੈਨੇਜਰ
+ Name[pl]=Menedżer logowania
+ Name[pt]=Gestor de Autenticação
+ Name[pt_BR]=Gerenciador de Login
+@@ -122,7 +121,7 @@
+ Comment[ne]=लगइन प्रबन्धक (KDM) कन्फिगर गर्नुहोस्
+ Comment[nl]=Hier kunt u het aanmeldscherm (KDM) instellen
+ Comment[nn]=Set opp innloggingshandsamaren (KDM)
+-Comment[pa]=ਲਾਗਆਨ ਮੈਨੇਜਰ ਸੰਰਚਨਾ(KDM)
++Comment[pa]=ਲਾਗਇਨ ਮੈਨੇਜਰ ਸੰਰਚਨਾ (KDM)
+ Comment[pl]=Konfiguracja menedżera logowania (KDM)
+ Comment[pt]=Configuração do gestor de autenticação (KDM)
+ Comment[pt_BR]=Configurar o gerenciador de login (KDM)
+@@ -146,62 +145,62 @@
+ Comment[zh_CN]=配置登录管理器(KDM)
+ Comment[zh_TW]=設定登入管理程式 (KDM)
+ 
+-Keywords=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
+-Keywords[be]=кіраўнік дысплея,кіраўнік уваходу,карыстальнікі,уваход,запрашэнне,лагатып,стылі,стыль,мова,краіна,шрыфты,фон,шпалеры,сесіі,сесія,выключэнне,перазагрузка,kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
+-Keywords[bg]=Keywords=графична, система, вход, влизане, включване, потребител, kdm, display manager, xdm, users, login, greeting, Logo, styles, language, country, fonts, background, wallpapers, sessions, shutdown, restart
+-Keywords[ca]=kdm,administrador de la pantalla,xdm,usuaris,accés,salutació,Logo,estils,llengua,país,tipus de lletra,fons,tapissos,sessions,apagar,reiniciar
+-Keywords[cs]=kdm,Správce obrazovky,xdm,Uživatelé,Přihlášení,Uvítání,Logo,Styly,Jazyk,Země,Písma,pozadí,Tapety,Relace,Sezení,Vypnutí,Restart
+-Keywords[csb]=kdm,menadżer ekranu,xdm,brëkòwnicë,logòwanié,przëwitanié,Logò,sztéle,jãzëk,kraj,fòntë,spódk,tapetë,spòdlë,sesëje,zamkniãce systemë,resztart,zôczãce robòtë
+-Keywords[cy]=kdm,rheolydd y dangosydd,xdm,defnyddwyr,mewngofnodi,cyfarchiad,Logo,arddulliau,iaith,gwlad,ffontiau,cefndir,papurau wal,sesiynau,cau,ailgychwyn
+-Keywords[da]=kdm,skærmhåndtering,xdm,brugere,login,hilsen,Logo,stil, sprog,land,skrifttyper,baggrund,tapeter,sessioner,luk ned,genstart
+-Keywords[de]=Kdm,Display Manager,Xdm,Benutzer,Login,Logo,Stile,Sprachen,Länder,Schriften,Hintergründe,Hintergrundbilder,Beenden,Neustart
+-Keywords[el]=kdm,διαχειριστής οθόνης,xdm,χρήστες,σύνδεση,χαιρετισμός,Λογότυπο,στυλ,γλώσσα,χώρα,γραμματοσειρές,φόντο,ταπετσαρίες,συνεδρίες,τερματισμός,επανεκκίνηση
+-Keywords[eo]=kdm,ekrano,,xdm,uzantoj,saluto,emblemo,stilo,lingvo,lando,tiparo,fono,tapeto,seanco,adaiaŭo,relanĉo
+-Keywords[es]=kdm,gestor de pantalla,xdm,usuarios,entrada,acceso,saludo,Logo,estilos,idioma,país,tipos de letra,fondo,tapices,sesiones,apagar,reiniciar
+-Keywords[et]=kdm,ekraanihaldur,xdm,kasutajad,sisselogimine,tervitus,logo,stiil,keel,riik,fondid,taust,taustapilt,seansid,töö lõpetamine,taaskäivitamine
+-Keywords[eu]=kdm,pantaila kudeatzailea,xdm,erabiltzaileak,Saio hasiera,agurra,Logoa,estiloak,hizkuntza, herrialdea,letra-tipoak,atzeko planoa,horma-irudiak,saioak,itzali,berrabiarazi
+-Keywords[fa]=kdm، مدیر نمایش، xdm، کاربران، ورود، تبریک، آرمِ، سبک، زبان، کشور، قلمها، زمینه، کاغذهای دیواری، نشستها، تعطیل، بازآغازی
+-Keywords[fi]=kdm,näytönhallinta ,xdm,käyttäjät,sisäänkirjautuminen,tervehdys,Logo,tyylit,kieli,maa,kirjasimet,tausta,istunnot,sammutus,uudelleenkäynnistys
+-Keywords[fr]=kdm,gestionnaire d'affichage,xdm,utilisateurs,login,connexion,bienvenue,message de bienvenue,Logo,styles,langue,pays,style,police,fond d'écran,papier peint,session,arrêt,logout,redémarrage,reboot
+-Keywords[fy]=kdm,display manager,xdm,users,login,begroeting,oanmelde,brûkers,Oanmeldbehearder,logo,stylen,taal,language,country,lân,fonts,lettertypen,eftergrûn,wallpapers,behang,sesjes,shutdown,restart,ôfslute,opnij begjinne,oanmelde
+-Keywords[ga]=kdm,bainisteoir scáileáin,xdm,úsáideoirí,logáil isteach,fáilte,Lógó,stíleanna,teanga,tír,clónna,clófhoirne,cúlra,cúlbhrait,seisiúin,múchadh,atosú
+-Keywords[gl]=kdm,xestor de entrada,xdm,usuarios,identificación,Logo,estilos,lingua,país,fontes,fondo,papeis tapiz,sesións,apagado,reinício
+-Keywords[he]=משתמשים,כניסה למערכת,כניסה,לוגו,סגנונות,שפה,מדינה,גופנים,רקע,טפטים,הפעלות,כיבוי,הפעלה,מחדש,מנהל,תצוגה,display,manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
+-Keywords[hr]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,upravljanje zaslona,korisnici,prijava,pozdrav,stilovi,jezik,država,zemlja,fontovi,pozadina,pozadina radne površine,sesije,gašenje,ponovno pokretanje
+-Keywords[hu]=kdm,képernyőkezelő,xdm,felhasználók,bejelentkezés,üdvözlés,embléma,stílusok,nyelv,ország,betűtípusok,háttér,tapéták,munkafolyamatok,leállítás,újraindítás
+-Keywords[is]=kdm,skjár,gluggastjóri,innskráning,innstimplun,snið,tungumál,land,letur,bakgrunnur,bakgrunnar,veggfóður,setur,slökkva,endurræsa
+-Keywords[it]=kdm,display manager,gestione degli utenti,xdm,utenti,login,accesso,benvenuto,logo,stile,lingua,stato,paese,tipi di carattere,sfondo,immagine di sfondo,sessioni,riavvio,spegnimento,gestione degli accessi
+-Keywords[ja]=kdm,ディスプレイマネージャ,xdm,ユーザ,ログイン,あいさつ,ロゴ,スタイル,言語,国,フォント,背景,壁紙,セッション,シャットダウン,再起動
+-Keywords[km]=kdm កម្មវិធី​គ្រប់គ្រង​ការ​បង្ហាញ xdm អ្នក​ប្រើ ចូល ស្វាគមន៍ រូបសញ្ញា រចនាប័ទ្ម ភាសា ប្រទេស​ពុម្ព​អក្សរ ផ្ទៃ​ខាង​ក្រោយ ក្រដាស​បិទ​ជញ្ជាំង សម័យ បិទ ចាប់ផ្ដើម​ឡើង​វិញ
+-Keywords[ko]=kdm,디스플레이 관리자,xdm,사용자,로그인,환영,로고,스타일,언어,국가,글꼴,배경,세션,끄기,다시 시작
+-Keywords[lt]=kdm,display manager,ekrano tvarkyklė,xdm,users,naudotojai,login,registracija,greeting,pasveikinimas,Logo, styles,stiliai,language,country,fonts,background,wallpapers,sessions, shutdown,restart
+-Keywords[lv]=kdm,displeja menedžeris,xdm,lietotāji,pieteikšanās,apsveikums,Logo,stili,valoda,valsts,fonti,fons,tapetes,sesijas,nošaut,pārstartēt
+-Keywords[mk]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,менаџер на екран,корисници,најава,поздрав,Лого,стилови,јазик,земја,фонтови,подлога,позадина,сесии,исклучување,рестартирање
+-Keywords[nb]=kdm,skjermbehandler,xdm,brukere,innlogging,velkomst,logo,stiler,språk,land,skrifttyper,bakgrunn,bakgrunnsbilde,økter,skru av,slå av,omstart
+-Keywords[nds]=kdm,Startschirm,xdm,Bruker,anmellen,greeting,Logo,Stilen,Spraak,Land,Schriftoorden,Achtergrund,Tapeten,Törns,Utmaken,Nieg starten
+-Keywords[ne]=kdm, प्रदर्शन प्रबन्धक, xdm, प्रयोगकर्ताहरू, लगइन, अभिवादन, परिचायक चिन्ह, शैलीहरू, भाषा, देश, फन्टहरू, पृष्ठभूमि,वालपेपरहरू, सत्र, बन्द गर्नुहोस्, फेरि सुरु गर्नुहोस्
+-Keywords[nl]=kdm,display manager,xdm,users,login,begroeting,inloggen,gebruikers,loginbeheerder,logo,stijlen,taal,language,country,land,fonts,lettertypen,achtergrond,wallpapers,behang,sessies,shutdown,restart,afsluiten,herstarten,aanmelden,opstarten
+-Keywords[nn]=kdm,xdm,brukarar,innlogging,helsing,logo,stil,språk,land,skrifttypar,bakgrunn,bakgrunnsbilete,økt,avslutt,slå av,omstart
+-Keywords[pa]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart, ਲੋਗੋ, ਭਾਸ਼ਾ, ਦੇਸ਼, ਫੋਂਟ, ਲਾਗਿੰਨ, ਯੂਜ਼ਰ,ਸ਼ੈਸ਼ਨ
+-Keywords[pl]=kdm,menedżer ekranu,xdm,użytkownicy,logowanie,powitanie,Logo,style,jezyk,kraj,czcionki,tło,tapety,sesje,zamknięcie systemu,restart,rozpoczęcie pracy
+-Keywords[pt]=kdm,gestor de 'logins',xdm,utilizadores,saudação,logótipo,estilos,língua,país,tipos de letra,fundo,papéis de parede,sessões,terminar,reiniciar
+-Keywords[pt_BR]=kdm,gerenciador de tela, xdm,usuários,login,saudação,Logo,estilos,linguagem,país,fontes, papéis de parede,sessões,desligar,reiniciar
+-Keywords[ro]=kdm,manager de ecran,xdm,utilizatori,logare,întîmpinare,logo,stiluri,limbaj,ţară,fonturi,fundal,imagini de fundal,sesiuni,oprire,restartare
+-Keywords[ru]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,перезагрузка,сеанс,шрифты,страна,фон,стили,обои
+-Keywords[se]=kdm,xdm,geavaheaddjit,sisačáliheapmi,dearvvuođat,logo,stiila,giella,riika, fonttat,duogáš,duogášgovva,bargovuorut,heaittihit,časkit eret,ođđasit álggahit
+-Keywords[sl]=kdm,upravitelj zaslona,upravljalnik,xdm,uporabniki,prijava,login,pozdrav,logo,slogi,jezik,država,pisave,ozadje,tapete,seje,ugasnitev,vnovičen zagon
+-Keywords[sr]=kdm,display manager,xdm,users,login,greeting,logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,КДМ,ИксДМ,менаџер,пријављивање,стил,језик,држава,земља,фонтови,позадина,сесије,гашење,корисници,поздрав,лого
+-Keywords[sr at latin]=kdm,display manager,xdm,users,login,greeting,logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,KDM,XDM,menadžer,prijavljivanje,stil,jezik,država,zemlja,fontovi,pozadina,sesije,gašenje,korisnici,pozdrav,logo
+-Keywords[sv]=kdm,display manager,xdm,användare,inloggning,välkomsttext,Logo,stilar,språk,land,teckensnitt,bakgrund,skrivbordsunderlägg,sessioner,stäng av,starta om
+-Keywords[ta]=கேடிஎம்,காட்சி மேலாளர்,xdm,பயன்படுத்துபவர்,உள்நுழை,வாழ்த்து,சின்னம்,பாணிகள்,மொழி,நாடு,எழுத்துருக்கள்,பின்னணி,வால்பேப்பர்கள்,பகுதிகள்,முடித்தல்,தொடங்குதல்
+-Keywords[th]=kdm,ตัวจัดการจอแสดงผล,xdm,ผู้ใช้,ล็อกอิน, ทักทาย,โลโก้,รูปแบบ,ภาษา,ประเทศ,แบบอักษร,พื้นหลัง, วอลล์เปเปอร์,วาระ,ปิด,เริ่มการทำงานใหม่
+-Keywords[tr]=kdm,görüntü yönetici,xdm,kullanıcılar,oturum açma,karşılama,logo,stiller,dil,ülke,yazı tipleri,artalan,duvar kağıtları,oturumlar,kapat,tekrar başlat
+-Keywords[uk]=kdm,менеджер дисплеїв,xdm,користувачі,реєстрація,привітання,логотип,стилі,мова,країна,шрифти,тло,шпалери,сеанси,вимикання,перезапуск
+-Keywords[uz]=kdm,кириш бошқарувчиси,xdm,фойдаланувчилар,кириш,саломлашиш,Белги,услублар,тил,давлат,шрифтлар,орқа фон,сеанслар,ўчириш,ўчириб-ёқиш
+-Keywords[vi]=kdm,quản lý hiển thị,xdm,người dùng,đăng nhập,chào hỏi,Biểu trưng,kiểu,ngôn ngữ,quốc gia,phông chữ,nền,ảnh nền,phiên đăng nhập,tắt máy,khởi động lại
+-Keywords[x-test]=xxkdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restartxx
+-Keywords[xh]=kdm,umphathi womboniso,xdm,abasebenzisi,igama elithile,umbuliso,ilogo,iintlobo,ulwimi,ilizwe,ubungakanani bamagama, imvelaphi,amaphepha odonga,iintlanganiso,vala,qala kwakhona
+-Keywords[zh_CN]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,显示管理器,用户,登录,欢迎辞,标志,风格,语言,国家,字体,背景,墙纸,会话,关机,重启动
+-Keywords[zh_TW]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,顯示管理程式,使用者,登入,歡迎,風格,語言,國家,字型,背景,底圖,工作階段,關機,重新啟動
++X-KDE-Keywords=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
++X-KDE-Keywords[be]=кіраўнік дысплея,кіраўнік уваходу,карыстальнікі,уваход,запрашэнне,лагатып,стылі,стыль,мова,краіна,шрыфты,фон,шпалеры,сесіі,сесія,выключэнне,перазагрузка,kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
++X-KDE-Keywords[bg]=Keywords=графична, система, вход, влизане, включване, потребител, kdm, display manager, xdm, users, login, greeting, Logo, styles, language, country, fonts, background, wallpapers, sessions, shutdown, restart
++X-KDE-Keywords[ca]=kdm,administrador de la pantalla,xdm,usuaris,accés,salutació,Logo,estils,llengua,país,tipus de lletra,fons,tapissos,sessions,apagar,reiniciar
++X-KDE-Keywords[cs]=kdm,Správce obrazovky,xdm,Uživatelé,Přihlášení,Uvítání,Logo,Styly,Jazyk,Země,Písma,pozadí,Tapety,Relace,Sezení,Vypnutí,Restart
++X-KDE-Keywords[csb]=kdm,menadżer ekranu,xdm,brëkòwnicë,logòwanié,przëwitanié,Logò,sztéle,jãzëk,kraj,fòntë,spódk,tapetë,spòdlë,sesëje,zamkniãce systemë,resztart,zôczãce robòtë
++X-KDE-Keywords[cy]=kdm,rheolydd y dangosydd,xdm,defnyddwyr,mewngofnodi,cyfarchiad,Logo,arddulliau,iaith,gwlad,ffontiau,cefndir,papurau wal,sesiynau,cau,ailgychwyn
++X-KDE-Keywords[da]=kdm,skærmhåndtering,xdm,brugere,login,hilsen,Logo,stil, sprog,land,skrifttyper,baggrund,tapeter,sessioner,luk ned,genstart
++X-KDE-Keywords[de]=Kdm,Display Manager,Xdm,Benutzer,Login,Logo,Stile,Sprachen,Länder,Schriften,Hintergründe,Hintergrundbilder,Beenden,Neustart
++X-KDE-Keywords[el]=kdm,διαχειριστής οθόνης,xdm,χρήστες,σύνδεση,χαιρετισμός,Λογότυπο,στυλ,γλώσσα,χώρα,γραμματοσειρές,φόντο,ταπετσαρίες,συνεδρίες,τερματισμός,επανεκκίνηση
++X-KDE-Keywords[eo]=kdm,ekrano,,xdm,uzantoj,saluto,emblemo,stilo,lingvo,lando,tiparo,fono,tapeto,seanco,adaiaŭo,relanĉo
++X-KDE-Keywords[es]=kdm,gestor de pantalla,xdm,usuarios,entrada,acceso,saludo,Logo,estilos,idioma,país,tipos de letra,fondo,tapices,sesiones,apagar,reiniciar
++X-KDE-Keywords[et]=kdm,ekraanihaldur,xdm,kasutajad,sisselogimine,tervitus,logo,stiil,keel,riik,fondid,taust,taustapilt,seansid,töö lõpetamine,taaskäivitamine
++X-KDE-Keywords[eu]=kdm,pantaila kudeatzailea,xdm,erabiltzaileak,Saio hasiera,agurra,Logoa,estiloak,hizkuntza, herrialdea,letra-tipoak,atzeko planoa,horma-irudiak,saioak,itzali,berrabiarazi
++X-KDE-Keywords[fa]=kdm، مدیر نمایش، xdm، کاربران، ورود، تبریک، آرمِ، سبک، زبان، کشور، قلمها، زمینه، کاغذهای دیواری، نشستها، تعطیل، بازآغازی
++X-KDE-Keywords[fi]=kdm,näytönhallinta ,xdm,käyttäjät,sisäänkirjautuminen,tervehdys,Logo,tyylit,kieli,maa,kirjasimet,tausta,istunnot,sammutus,uudelleenkäynnistys
++X-KDE-Keywords[fr]=kdm,gestionnaire d'affichage,xdm,utilisateurs,login,connexion,bienvenue,message de bienvenue,Logo,styles,langue,pays,style,police,fond d'écran,papier peint,session,arrêt,logout,redémarrage,reboot
++X-KDE-Keywords[fy]=kdm,display manager,xdm,users,login,begroeting,oanmelde,brûkers,Oanmeldbehearder,logo,stylen,taal,language,country,lân,fonts,lettertypen,eftergrûn,wallpapers,behang,sesjes,shutdown,restart,ôfslute,opnij begjinne,oanmelde
++X-KDE-Keywords[ga]=kdm,bainisteoir scáileáin,xdm,úsáideoirí,logáil isteach,fáilte,Lógó,stíleanna,teanga,tír,clónna,clófhoirne,cúlra,cúlbhrait,seisiúin,múchadh,atosú
++X-KDE-Keywords[gl]=kdm,xestor de entrada,xdm,usuarios,identificación,Logo,estilos,lingua,país,fontes,fondo,papeis tapiz,sesións,apagado,reinício
++X-KDE-Keywords[he]=משתמשים,כניסה למערכת,כניסה,לוגו,סגנונות,שפה,מדינה,גופנים,רקע,טפטים,הפעלות,כיבוי,הפעלה,מחדש,מנהל,תצוגה,display,manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart
++X-KDE-Keywords[hr]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,upravljanje zaslona,korisnici,prijava,pozdrav,stilovi,jezik,država,zemlja,fontovi,pozadina,pozadina radne površine,sesije,gašenje,ponovno pokretanje
++X-KDE-Keywords[hu]=kdm,képernyőkezelő,xdm,felhasználók,bejelentkezés,üdvözlés,embléma,stílusok,nyelv,ország,betűtípusok,háttér,tapéták,munkafolyamatok,leállítás,újraindítás
++X-KDE-Keywords[is]=kdm,skjár,gluggastjóri,innskráning,innstimplun,snið,tungumál,land,letur,bakgrunnur,bakgrunnar,veggfóður,setur,slökkva,endurræsa
++X-KDE-Keywords[it]=kdm,display manager,gestione degli utenti,xdm,utenti,login,accesso,benvenuto,logo,stile,lingua,stato,paese,tipi di carattere,sfondo,immagine di sfondo,sessioni,riavvio,spegnimento,gestione degli accessi
++X-KDE-Keywords[ja]=kdm,ディスプレイマネージャ,xdm,ユーザ,ログイン,あいさつ,ロゴ,スタイル,言語,国,フォント,背景,壁紙,セッション,シャットダウン,再起動
++X-KDE-Keywords[km]=kdm កម្មវិធី​គ្រប់គ្រង​ការ​បង្ហាញ xdm អ្នក​ប្រើ ចូល ស្វាគមន៍ រូបសញ្ញា រចនាប័ទ្ម ភាសា ប្រទេស​ពុម្ព​អក្សរ ផ្ទៃ​ខាង​ក្រោយ ក្រដាស​បិទ​ជញ្ជាំង សម័យ បិទ ចាប់ផ្ដើម​ឡើង​វិញ
++X-KDE-Keywords[ko]=kdm,디스플레이 관리자,xdm,사용자,로그인,환영,로고,스타일,언어,국가,글꼴,배경,세션,끄기,다시 시작
++X-KDE-Keywords[lt]=kdm,display manager,ekrano tvarkyklė,xdm,users,naudotojai,login,registracija,greeting,pasveikinimas,Logo, styles,stiliai,language,country,fonts,background,wallpapers,sessions, shutdown,restart
++X-KDE-Keywords[lv]=kdm,displeja menedžeris,xdm,lietotāji,pieteikšanās,apsveikums,Logo,stili,valoda,valsts,fonti,fons,tapetes,sesijas,nošaut,pārstartēt
++X-KDE-Keywords[mk]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,менаџер на екран,корисници,најава,поздрав,Лого,стилови,јазик,земја,фонтови,подлога,позадина,сесии,исклучување,рестартирање
++X-KDE-Keywords[nb]=kdm,skjermbehandler,xdm,brukere,innlogging,velkomst,logo,stiler,språk,land,skrifttyper,bakgrunn,bakgrunnsbilde,økter,skru av,slå av,omstart
++X-KDE-Keywords[nds]=kdm,Startschirm,xdm,Bruker,anmellen,greeting,Logo,Stilen,Spraak,Land,Schriftoorden,Achtergrund,Tapeten,Törns,Utmaken,Nieg starten
++X-KDE-Keywords[ne]=kdm, प्रदर्शन प्रबन्धक, xdm, प्रयोगकर्ताहरू, लगइन, अभिवादन, परिचायक चिन्ह, शैलीहरू, भाषा, देश, फन्टहरू, पृष्ठभूमि,वालपेपरहरू, सत्र, बन्द गर्नुहोस्, फेरि सुरु गर्नुहोस्
++X-KDE-Keywords[nl]=kdm,display manager,xdm,users,login,begroeting,inloggen,gebruikers,loginbeheerder,logo,stijlen,taal,language,country,land,fonts,lettertypen,achtergrond,wallpapers,behang,sessies,shutdown,restart,afsluiten,herstarten,aanmelden,opstarten
++X-KDE-Keywords[nn]=kdm,xdm,brukarar,innlogging,helsing,logo,stil,språk,land,skrifttypar,bakgrunn,bakgrunnsbilete,økt,avslutt,slå av,omstart
++X-KDE-Keywords[pa]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart, ਲੋਗੋ, ਭਾਸ਼ਾ, ਦੇਸ਼, ਫੋਂਟ, ਲਾਗਿੰਨ, ਯੂਜ਼ਰ,ਸ਼ੈਸ਼ਨ
++X-KDE-Keywords[pl]=kdm,menedżer ekranu,xdm,użytkownicy,logowanie,powitanie,Logo,style,jezyk,kraj,czcionki,tło,tapety,sesje,zamknięcie systemu,restart,rozpoczęcie pracy
++X-KDE-Keywords[pt]=kdm,gestor de 'logins',xdm,utilizadores,saudação,logótipo,estilos,língua,país,tipos de letra,fundo,papéis de parede,sessões,terminar,reiniciar
++X-KDE-Keywords[pt_BR]=kdm,gerenciador de tela, xdm,usuários,login,saudação,Logo,estilos,linguagem,país,fontes, papéis de parede,sessões,desligar,reiniciar
++X-KDE-Keywords[ro]=kdm,manager de ecran,xdm,utilizatori,logare,întîmpinare,logo,stiluri,limbaj,ţară,fonturi,fundal,imagini de fundal,sesiuni,oprire,restartare
++X-KDE-Keywords[ru]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,перезагрузка,сеанс,шрифты,страна,фон,стили,обои
++X-KDE-Keywords[se]=kdm,xdm,geavaheaddjit,sisačáliheapmi,dearvvuođat,logo,stiila,giella,riika, fonttat,duogáš,duogášgovva,bargovuorut,heaittihit,časkit eret,ođđasit álggahit
++X-KDE-Keywords[sl]=kdm,upravitelj zaslona,upravljalnik,xdm,uporabniki,prijava,login,pozdrav,logo,slogi,jezik,država,pisave,ozadje,tapete,seje,ugasnitev,vnovičen zagon
++X-KDE-Keywords[sr]=kdm,display manager,xdm,users,login,greeting,logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,КДМ,ИксДМ,менаџер,пријављивање,стил,језик,држава,земља,фонтови,позадина,сесије,гашење,корисници,поздрав,лого
++X-KDE-Keywords[sr at latin]=kdm,display manager,xdm,users,login,greeting,logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,KDM,XDM,menadžer,prijavljivanje,stil,jezik,država,zemlja,fontovi,pozadina,sesije,gašenje,korisnici,pozdrav,logo
++X-KDE-Keywords[sv]=kdm,display manager,xdm,användare,inloggning,välkomsttext,Logo,stilar,språk,land,teckensnitt,bakgrund,skrivbordsunderlägg,sessioner,stäng av,starta om
++X-KDE-Keywords[ta]=கேடிஎம்,காட்சி மேலாளர்,xdm,பயன்படுத்துபவர்,உள்நுழை,வாழ்த்து,சின்னம்,பாணிகள்,மொழி,நாடு,எழுத்துருக்கள்,பின்னணி,வால்பேப்பர்கள்,பகுதிகள்,முடித்தல்,தொடங்குதல்
++X-KDE-Keywords[th]=kdm,ตัวจัดการจอแสดงผล,xdm,ผู้ใช้,ล็อกอิน, ทักทาย,โลโก้,รูปแบบ,ภาษา,ประเทศ,แบบอักษร,พื้นหลัง, วอลล์เปเปอร์,วาระ,ปิด,เริ่มการทำงานใหม่
++X-KDE-Keywords[tr]=kdm,görüntü yönetici,xdm,kullanıcılar,oturum açma,karşılama,logo,stiller,dil,ülke,yazı tipleri,artalan,duvar kağıtları,oturumlar,kapat,tekrar başlat
++X-KDE-Keywords[uk]=kdm,менеджер дисплеїв,xdm,користувачі,реєстрація,привітання,логотип,стилі,мова,країна,шрифти,тло,шпалери,сеанси,вимикання,перезапуск
++X-KDE-Keywords[uz]=kdm,кириш бошқарувчиси,xdm,фойдаланувчилар,кириш,саломлашиш,Белги,услублар,тил,давлат,шрифтлар,орқа фон,сеанслар,ўчириш,ўчириб-ёқиш
++X-KDE-Keywords[vi]=kdm,quản lý hiển thị,xdm,người dùng,đăng nhập,chào hỏi,Biểu trưng,kiểu,ngôn ngữ,quốc gia,phông chữ,nền,ảnh nền,phiên đăng nhập,tắt máy,khởi động lại
++X-KDE-Keywords[x-test]=xxkdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restartxx
++X-KDE-Keywords[xh]=kdm,umphathi womboniso,xdm,abasebenzisi,igama elithile,umbuliso,ilogo,iintlobo,ulwimi,ilizwe,ubungakanani bamagama, imvelaphi,amaphepha odonga,iintlanganiso,vala,qala kwakhona
++X-KDE-Keywords[zh_CN]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,显示管理器,用户,登录,欢迎辞,标志,风格,语言,国家,字体,背景,墙纸,会话,关机,重启动
++X-KDE-Keywords[zh_TW]=kdm,display manager,xdm,users,login,greeting,Logo,styles,language,country,fonts,background,wallpapers,sessions,shutdown,restart,顯示管理程式,使用者,登入,歡迎,風格,語言,國家,字型,背景,底圖,工作階段,關機,重新啟動
+ 
+ Categories=Qt;KDE;X-KDE-settings-system;
+--- a/kcontrol/kdm/kdm-theme.cpp
++++ b/kcontrol/kdm/kdm-theme.cpp
+@@ -114,6 +114,7 @@
+ 	connect( bGetNewThemes, SIGNAL(clicked()), SLOT(getNewStuff()) );
+ 
+ 	themeDir = KGlobal::dirs()->resourceDirs( "data" ).last() + "kdm/themes/";
++	defaultTheme = 0;
+ 	QDir testDir( themeDir );
+ 	if (!testDir.exists() && !testDir.mkdir( testDir.absolutePath() ) && !geteuid())
+ 		KMessageBox::sorry( this, i18n("Unable to create folder %1", testDir.absolutePath() ) );
+--- a/kcontrol/kdm/kdm-gen.cpp
++++ b/kcontrol/kdm/kdm-gen.cpp
+@@ -62,6 +62,7 @@
+ 	guicombo = new KBackedComboBox( box );
+ 	guicombo->insertItem( "", i18n("<placeholder>default</placeholder>") );
+ 	loadGuiStyles( guicombo );
++	guicombo->model()->sort( 0 );
+ 	QLabel *label = new QLabel( i18n("GUI s&tyle:"), box );
+ 	label->setBuddy( guicombo );
+ 	connect( guicombo, SIGNAL(activated( int )), SIGNAL(changed()) );
+@@ -75,6 +76,7 @@
+ 	colcombo = new KBackedComboBox( box );
+ 	colcombo->insertItem( "", i18n("<placeholder>default</placeholder>") );
+ 	loadColorSchemes( colcombo );
++	colcombo->model()->sort( 0 );
+ 	label = new QLabel( i18n("Color sche&me:"), box );
+ 	label->setBuddy( colcombo );
+ 	connect( colcombo, SIGNAL(activated( int )), SIGNAL(changed()) );
+--- a/kcontrol/keys/unix3.kksrc
++++ b/kcontrol/keys/unix3.kksrc
+@@ -39,7 +39,7 @@
+ Name[ne]=यूनिक्स योजना
+ Name[nl]=UNIX-schema
+ Name[nn]=UNIX-oppsett
+-Name[pa]=UNIX ਸਰੂਪ
++Name[pa]=UNIX ਸਕੀਮ
+ Name[pl]=Motyw Uniksa
+ Name[pt]=Esquema do UNIX
+ Name[pt_BR]=Esquema UNIX
+--- a/kcontrol/keys/keys.desktop
++++ b/kcontrol/keys/keys.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 keys
+ Icon=preferences-desktop-keyboard-shortcut
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/keys/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/keys/index.html
+ 
+ X-KDE-Library=kcm_keys
+ X-KDE-Init-Symbol=keys
+@@ -98,6 +97,7 @@
+ Comment[fi]=Näppäinsidosten asetukset
+ Comment[fr]=Configuration des raccourcis clavier
+ Comment[fy]=Ynstellings foar fluchtoetsen
++Comment[ga]=Cumraíocht ceangal eochracha
+ Comment[gl]=Configuración dos atallos de teclado
+ Comment[he]=שינוי הגדרות מיפוי המקשים
+ Comment[hr]=Konfiguriranje prečaca tipkovnice
+@@ -118,7 +118,7 @@
+ Comment[ne]=कुञ्जी बाइन्डिङहरूको कन्फिगरेसन
+ Comment[nl]=Instellingen voor sneltoetsen
+ Comment[nn]=Oppsett av snøggtastar
+-Comment[pa]=ਕੀਬਾਇਡ ਦੀ ਸੰਰਚਨਾ
++Comment[pa]=ਕੀ-ਬਾਇਡਿੰਗ ਦੀ ਸੰਰਚਨਾ
+ Comment[pl]=Ustawienia skrótów klawiszowych
+ Comment[pt]=Configuração das teclas
+ Comment[pt_BR]=Configuração dos atalhos de teclado
+@@ -142,61 +142,61 @@
+ Comment[zh_CN]=键绑定配置
+ Comment[zh_TW]=按鍵關聯設定
+ 
+-Keywords=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
+-Keywords[af]=Keys,Global sleutel bindings,sleutel scheme,sleutel bindings,kortpaaie,application kortpaaie
+-Keywords[be]=Клавішы,Глабальныя скароты,Схема клавішаў,Скароты,Скароты праграмы,Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
+-Keywords[bg]=Keywords=бърз, клавиш, бързи, достъп, клавишна, комбинация, Keys, Global key bindings, Key scheme, Key bindings, shortcuts, application shortcuts
+-Keywords[ca]=Tecles,lligams de tecles globals,Esquema de tecla,Lligams de tecles,dreceres,dreceres d'aplicació
+-Keywords[cs]=Klávesy,Globální klávesové zkratky,Schéma kláves,Klávesové zkratky,Zkratky,Aplikační zkratky,Vazby,Klávesové vazby
+-Keywords[csb]=Klawisze,globalné klawiszowé skrodzënë,schematë skrodzënów,sparłączenia klawiszów,skrodzënë dlô programów
+-Keywords[cy]=Bysell,Rhwymiadau bysell eang,Cynllun bysell,Llwybrau byr,Llwybrau byr y rhaglen
+-Keywords[da]=Taster,Globale tastebindinger,Tastesystem,Tastebindinger,genveje,programgenveje
+-Keywords[de]=Tasten,Tastenzuordnung,Tastenkürzel,Kurzbefehle,Tastenschema,Tastaturlayout
+-Keywords[el]=Πλήκτρα,Καθολικοί συνδυασμοί πλήκτρων,Θέμα πλήκτρων,Συνδυασμοί πλήκτρων,συντομεύσεις,συντομεύσεις εφαρμογών
+-Keywords[eo]=klavoj,malloka,signifoj,asocioj,kombinoj,klavkombinoj
+-Keywords[es]=Teclas,Asociaciones de teclas globales,Esquema de teclas,Asociaciones de teclas,accesos directos,accesos directos de aplicaciones
+-Keywords[et]=klahvid,globaalsed kiirklahvid,klahviskeem,kiirklahvid,klahvide seosed,rakenduste kiirklahvid
+-Keywords[eu]=Teklak,tekla elkarketa globalak,teklen eskema,tekla elkarketak lasterbideak,aplikazio lasterbideak
+-Keywords[fa]=کلیدها، مقیدسازیهای کلید سراسری، طرحوارۀ کلید، مقیدسازیهای کلید، میان‌برها، میان‌برهای کاربرد
+-Keywords[fi]=Näppäimet,Yleiset näppäinsidokset,Näppäinteema,Näppäinsidokset,pikavalinnat,sovellusten pikavalinnat
+-Keywords[fr]=touches,raccourcis globaux,modèle de raccourcis,raccourcis clavier,clavier,raccourcis d'applications,applications,raccourcis communs
+-Keywords[fy]=keys,toetsen,toetsyndielingen,toetsbiningen,key bindings,fluchtoetsen,globaal 
+-Keywords[gl]=Teclas,Atallos de teclado globais,Esquema de teclas,Atallos de teclado,combinacións de teclas,atallos de aplicacións
+-Keywords[he]=מקשים,מיפוי מקשים גלובליים,תצורת מקשים,מיפוי מקשים,קיצורי דרך,קיצורי דרך של יישומים, Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
+-Keywords[hr]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,Tipke,Prečaci tipkovnice,Raspored tipki,prečaci,prečaci aplikacija
+-Keywords[hu]=billentyűk,globális billentyűhozzárendelés,billentyűkiosztás,billentyűparancsok,gyorsbillentyűk
+-Keywords[is]=Lyklar,Hnappar,Flýtihnappar,Flýtilyklar,Lyklabindingar
+-Keywords[it]=tasti,associazioni globali di tasti,schema di tasti,associazioni di tasti,scorciatoie,scorciatoie delle applicazioni
+-Keywords[ja]=キー,グローバルキー,キーバインド,Key sheme,キーバインド,ショートカット,アプリケーションショートカット
+-Keywords[km]=គ្រាប់ចុច ការ​ចង​គ្រាប់ចុច​សកល គ្រោងការណ៍​គ្រាប់ចុច ការ​ចង​គ្រាប់ចុច ផ្លូវកាត់ ផ្លូវកាត់​កម្មវិធី
+-Keywords[ko]=키,전역 키 바인딩,키 배열,키 바인딩,단축키,프로그램 단축키
+-Keywords[lt]=Keys,klavišai,Global key bindings,klavišų sietis,Key scheme,klavišų schema,klavišų išdėstymas,Key bindings,shortcuts,spartieji klavišai,application shortcuts,programų spartieji klavišai
+-Keywords[lv]=Taustiņi,Globālās taustiņu sasaistes,Taustiņu shēma,Taustiņu sasaistes,īsinājumikonas,aplikāciju īsinājumikonas
+-Keywords[mk]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,Копчиња,Глобални врски на копчиња,Шема на копчиња,Врски на копчиња,кратенки,апликациони кратенки
+-Keywords[nb]=taster,generelle hurtigtaster,hurtigtaster,snarveier,programsnarveier
+-Keywords[nds]=Tasten,Globale Tastkombinatschonen,Tastschema,Tastkombinatschonen,Programmtasten
+-Keywords[ne]=कुञ्जी, विश्वब्यापी कुञ्जी बाइन्डिङ, कुञ्जी योजना, कुञ्जी बाइन्डिङ, सर्टकट, अनुप्रयोग सर्टकट
+-Keywords[nl]=keys,toetsen,toetsenindeling,toetsenbindingen,key bindings,sneltoetsen,globale toetsenbindingen
+-Keywords[nn]=tastar,globale snøggtastar,tasteoppsett,snøggtastar,snarvegar,programsnarvegar
+-Keywords[pl]=Klawisze,globalne skróty klawiszowe,schematy skrótów,powiązania klawiszów,skróty dla programów
+-Keywords[pt]=teclas,teclas globais,esquema de teclas,atribuições de teclas,atalhos,atalhos da aplicação
+-Keywords[pt_BR]=Teclas,Teclas de atalho globais,esquema de teclado,teclas de atalho,atalhos de aplicativos
+-Keywords[ro]=taste,asocieri globale de taste,schemă taste,asocieri taste,acceleratori,acceleratori aplicaţii,scurtături
+-Keywords[ru]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,клавиши,комбинации клавиш
+-Keywords[se]=boalut,oppalaš jođánisboalut,boalločoahkádusat,boalločatnasat,njuolgobálgát,prográmmanjuolgabálgát
+-Keywords[sl]=tipke,globalne vezi tipk,razporeditev tipk,vezi tipk,tipkovne vezi
+-Keywords[sr]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,тастери,глобални тастери,пречица,шема тастера,пречице,програмске пречице
+-Keywords[sr at latin]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,tasteri,globalni tasteri,prečica,šema tastera,prečice,programske prečice
+-Keywords[sv]=Tangenter,Globala kortkommandon,bindningar,Tangentbindningar,genvägar,programgenvägar
+-Keywords[ta]=விசைகள்,உலகலாவிய விசை பிணைப்புகள்,விசை திட்டம்,விசை பிணைப்புகள்,குறுக்குவழிகள்,பயன்பாட்டுக் குறுக்குவழிகள்
+-Keywords[th]=ปุ่มพิมพ์,ปุ่มพิมพ์ส่วนกลาง,ชุดปุ่มพิมพ์,การจับคู่ปุ่มพิมพ์,ปุ่มพิมพ์ลัด,แป้นพิมพ์ลัด, ปุ่มพิมพ์ลัดแอพพลิเคชัน
+-Keywords[tr]=tuşlar,Küresel Tuş bağlantıları,Tuş planı,tuş bağlamaları,kısayollar,uygulama kısayolları
+-Keywords[uk]=клавіші,глобальні прив'язки клавіш,схема клавіш,прив'язка клавіш
+-Keywords[uz]=Тугмалар,Умумий тугмалар бирикмаси,Тугма қолипи,Тугмалар бирикмаси,тугма ва дастур бирикмаси
+-Keywords[vi]=Phím,tổ hợp phím toàn cục,phối hợp phím,tổ hợp phím,gõ tắt,gõ tắt cho ứng dụng
+-Keywords[x-test]=xxKeys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcutsxx
+-Keywords[xh]=Izitshixo,Izibophelelo zesitshixo esiNgqukuva,Udweliso lwesitshixo,Izibophelelo zesitshixo,iindlela ezimfutshane,izicelo zeendlela ezimfutshane
+-Keywords[zh_CN]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,键,全局键绑定,键盘布局,键绑定,快捷键,程序快捷键
+-Keywords[zh_TW]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,按鍵,全域按建連結,鍵盤配置,按鍵連結,快速鍵,應用程式捷徑
++X-KDE-Keywords=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
++X-KDE-Keywords[af]=Keys,Global sleutel bindings,sleutel scheme,sleutel bindings,kortpaaie,application kortpaaie
++X-KDE-Keywords[be]=Клавішы,Глабальныя скароты,Схема клавішаў,Скароты,Скароты праграмы,Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
++X-KDE-Keywords[bg]=Keywords=бърз, клавиш, бързи, достъп, клавишна, комбинация, Keys, Global key bindings, Key scheme, Key bindings, shortcuts, application shortcuts
++X-KDE-Keywords[ca]=Tecles,lligams de tecles globals,Esquema de tecla,Lligams de tecles,dreceres,dreceres d'aplicació
++X-KDE-Keywords[cs]=Klávesy,Globální klávesové zkratky,Schéma kláves,Klávesové zkratky,Zkratky,Aplikační zkratky,Vazby,Klávesové vazby
++X-KDE-Keywords[csb]=Klawisze,globalné klawiszowé skrodzënë,schematë skrodzënów,sparłączenia klawiszów,skrodzënë dlô programów
++X-KDE-Keywords[cy]=Bysell,Rhwymiadau bysell eang,Cynllun bysell,Llwybrau byr,Llwybrau byr y rhaglen
++X-KDE-Keywords[da]=Taster,Globale tastebindinger,Tastesystem,Tastebindinger,genveje,programgenveje
++X-KDE-Keywords[de]=Tasten,Tastenzuordnung,Tastenkürzel,Kurzbefehle,Tastenschema,Tastaturlayout
++X-KDE-Keywords[el]=Πλήκτρα,Καθολικοί συνδυασμοί πλήκτρων,Θέμα πλήκτρων,Συνδυασμοί πλήκτρων,συντομεύσεις,συντομεύσεις εφαρμογών
++X-KDE-Keywords[eo]=klavoj,malloka,signifoj,asocioj,kombinoj,klavkombinoj
++X-KDE-Keywords[es]=Teclas,Asociaciones de teclas globales,Esquema de teclas,Asociaciones de teclas,accesos directos,accesos directos de aplicaciones
++X-KDE-Keywords[et]=klahvid,globaalsed kiirklahvid,klahviskeem,kiirklahvid,klahvide seosed,rakenduste kiirklahvid
++X-KDE-Keywords[eu]=Teklak,tekla elkarketa globalak,teklen eskema,tekla elkarketak lasterbideak,aplikazio lasterbideak
++X-KDE-Keywords[fa]=کلیدها، مقیدسازیهای کلید سراسری، طرحوارۀ کلید، مقیدسازیهای کلید، میان‌برها، میان‌برهای کاربرد
++X-KDE-Keywords[fi]=Näppäimet,Yleiset näppäinsidokset,Näppäinteema,Näppäinsidokset,pikavalinnat,sovellusten pikavalinnat
++X-KDE-Keywords[fr]=touches,raccourcis globaux,modèle de raccourcis,raccourcis clavier,clavier,raccourcis d'applications,applications,raccourcis communs
++X-KDE-Keywords[fy]=keys,toetsen,toetsyndielingen,toetsbiningen,key bindings,fluchtoetsen,globaal
++X-KDE-Keywords[gl]=Teclas,Atallos de teclado globais,Esquema de teclas,Atallos de teclado,combinacións de teclas,atallos de aplicacións
++X-KDE-Keywords[he]=מקשים,מיפוי מקשים גלובליים,תצורת מקשים,מיפוי מקשים,קיצורי דרך,קיצורי דרך של יישומים, Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts
++X-KDE-Keywords[hr]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,Tipke,Prečaci tipkovnice,Raspored tipki,prečaci,prečaci aplikacija
++X-KDE-Keywords[hu]=billentyűk,globális billentyűhozzárendelés,billentyűkiosztás,billentyűparancsok,gyorsbillentyűk
++X-KDE-Keywords[is]=Lyklar,Hnappar,Flýtihnappar,Flýtilyklar,Lyklabindingar
++X-KDE-Keywords[it]=tasti,associazioni globali di tasti,schema di tasti,associazioni di tasti,scorciatoie,scorciatoie delle applicazioni
++X-KDE-Keywords[ja]=キー,グローバルキー,キーバインド,Key sheme,キーバインド,ショートカット,アプリケーションショートカット
++X-KDE-Keywords[km]=គ្រាប់ចុច ការ​ចង​គ្រាប់ចុច​សកល គ្រោងការណ៍​គ្រាប់ចុច ការ​ចង​គ្រាប់ចុច ផ្លូវកាត់ ផ្លូវកាត់​កម្មវិធី
++X-KDE-Keywords[ko]=키,전역 키 바인딩,키 배열,키 바인딩,단축키,프로그램 단축키
++X-KDE-Keywords[lt]=Keys,klavišai,Global key bindings,klavišų sietis,Key scheme,klavišų schema,klavišų išdėstymas,Key bindings,shortcuts,spartieji klavišai,application shortcuts,programų spartieji klavišai
++X-KDE-Keywords[lv]=Taustiņi,Globālās taustiņu sasaistes,Taustiņu shēma,Taustiņu sasaistes,īsinājumikonas,aplikāciju īsinājumikonas
++X-KDE-Keywords[mk]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,Копчиња,Глобални врски на копчиња,Шема на копчиња,Врски на копчиња,кратенки,апликациони кратенки
++X-KDE-Keywords[nb]=taster,generelle hurtigtaster,hurtigtaster,snarveier,programsnarveier
++X-KDE-Keywords[nds]=Tasten,Globale Tastkombinatschonen,Tastschema,Tastkombinatschonen,Programmtasten
++X-KDE-Keywords[ne]=कुञ्जी, विश्वब्यापी कुञ्जी बाइन्डिङ, कुञ्जी योजना, कुञ्जी बाइन्डिङ, सर्टकट, अनुप्रयोग सर्टकट
++X-KDE-Keywords[nl]=keys,toetsen,toetsenindeling,toetsenbindingen,key bindings,sneltoetsen,globale toetsenbindingen
++X-KDE-Keywords[nn]=tastar,globale snøggtastar,tasteoppsett,snøggtastar,snarvegar,programsnarvegar
++X-KDE-Keywords[pl]=Klawisze,globalne skróty klawiszowe,schematy skrótów,powiązania klawiszów,skróty dla programów
++X-KDE-Keywords[pt]=teclas,teclas globais,esquema de teclas,atribuições de teclas,atalhos,atalhos da aplicação
++X-KDE-Keywords[pt_BR]=Teclas,Teclas de atalho globais,esquema de teclado,teclas de atalho,atalhos de aplicativos
++X-KDE-Keywords[ro]=taste,asocieri globale de taste,schemă taste,asocieri taste,acceleratori,acceleratori aplicaţii,scurtături
++X-KDE-Keywords[ru]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,клавиши,комбинации клавиш
++X-KDE-Keywords[se]=boalut,oppalaš jođánisboalut,boalločoahkádusat,boalločatnasat,njuolgobálgát,prográmmanjuolgabálgát
++X-KDE-Keywords[sl]=tipke,globalne vezi tipk,razporeditev tipk,vezi tipk,tipkovne vezi
++X-KDE-Keywords[sr]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,тастери,глобални тастери,пречица,шема тастера,пречице,програмске пречице
++X-KDE-Keywords[sr at latin]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,tasteri,globalni tasteri,prečica,šema tastera,prečice,programske prečice
++X-KDE-Keywords[sv]=Tangenter,Globala kortkommandon,bindningar,Tangentbindningar,genvägar,programgenvägar
++X-KDE-Keywords[ta]=விசைகள்,உலகலாவிய விசை பிணைப்புகள்,விசை திட்டம்,விசை பிணைப்புகள்,குறுக்குவழிகள்,பயன்பாட்டுக் குறுக்குவழிகள்
++X-KDE-Keywords[th]=ปุ่มพิมพ์,ปุ่มพิมพ์ส่วนกลาง,ชุดปุ่มพิมพ์,การจับคู่ปุ่มพิมพ์,ปุ่มพิมพ์ลัด,แป้นพิมพ์ลัด, ปุ่มพิมพ์ลัดแอพพลิเคชัน
++X-KDE-Keywords[tr]=tuşlar,Küresel Tuş bağlantıları,Tuş planı,tuş bağlamaları,kısayollar,uygulama kısayolları
++X-KDE-Keywords[uk]=клавіші,глобальні прив'язки клавіш,схема клавіш,прив'язка клавіш
++X-KDE-Keywords[uz]=Тугмалар,Умумий тугмалар бирикмаси,Тугма қолипи,Тугмалар бирикмаси,тугма ва дастур бирикмаси
++X-KDE-Keywords[vi]=Phím,tổ hợp phím toàn cục,phối hợp phím,tổ hợp phím,gõ tắt,gõ tắt cho ứng dụng
++X-KDE-Keywords[x-test]=xxKeys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcutsxx
++X-KDE-Keywords[xh]=Izitshixo,Izibophelelo zesitshixo esiNgqukuva,Udweliso lwesitshixo,Izibophelelo zesitshixo,iindlela ezimfutshane,izicelo zeendlela ezimfutshane
++X-KDE-Keywords[zh_CN]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,键,全局键绑定,键盘布局,键绑定,快捷键,程序快捷键
++X-KDE-Keywords[zh_TW]=Keys,Global key bindings,Key scheme,Key bindings,shortcuts,application shortcuts,按鍵,全域按建連結,鍵盤配置,按鍵連結,快速鍵,應用程式捷徑
+ 
+ Categories=Qt;KDE;X-KDE-settings-accessibility;
+--- a/kcontrol/keys/mac4.kksrc
++++ b/kcontrol/keys/mac4.kksrc
+@@ -39,7 +39,7 @@
+ Name[ne]=म्याक योजना
+ Name[nl]=Mac-schema
+ Name[nn]=Mac-oppsett
+-Name[pa]=Mac ਸਰੂਪ
++Name[pa]=Mac ਸਕੀਮ
+ Name[pl]=Motyw Mac-a
+ Name[pt]=Esquema do Mac
+ Name[pt_BR]=Esquema Mac
+--- a/kcontrol/keys/kde3.kksrc
++++ b/kcontrol/keys/kde3.kksrc
+@@ -36,7 +36,7 @@
+ Name[ne]=३ परिमार्जक कुञ्जीका लागि पूर्वनिर्धारित केडीई
+ Name[nl]=KDE-standaard voor 3 modificatietoetsen
+ Name[nn]=KDE-standard med tre valtastar
+-Name[pa]=3 ਮੋਡੀਫਾਇਰ ਸਵਿੱਚਾਂ ਲਈ KDE ਮੂਲ
++Name[pa]=3 ਮੋਡੀਫਾਇਰ ਸਵਿੱਚਾਂ ਲਈ KDE ਡਿਫਾਲਟ
+ Name[pl]=Ustawienia domyślne KDE dla 3 klawiszy modyfikatorów
+ Name[pt]=Predefinição do KDE para 3 Teclas Modificadoras
+ Name[pt_BR]=Padrão do KDE para 3 Teclas Modificadoras
+--- a/kcontrol/keys/kde4.kksrc
++++ b/kcontrol/keys/kde4.kksrc
+@@ -36,7 +36,7 @@
+ Name[ne]=४ परिमार्जक कुञ्जीका लागि पूर्वनिर्धारित केडीई
+ Name[nl]=KDE-standaard voor 4 modificatietoetsen
+ Name[nn]=KDE-standard med fire valtastar
+-Name[pa]=4 ਮੋਡੀਫਾਇਰ ਸਵਿੱਚਾਂ ਲਈ KDE ਮੂਲ
++Name[pa]=4 ਮੋਡੀਫਾਇਰ ਸਵਿੱਚਾਂ ਲਈ KDE ਡਿਫਾਲਟ
+ Name[pl]=Ustawienia domyślne KDE dla 4 klawiszy modyfikatorów
+ Name[pt]=Predefinição do KDE para 4 Teclas Modificadoras
+ Name[pt_BR]=Padrão do KDE para 4 Teclas Modificadoras
+--- a/kcontrol/bell/bell.desktop
++++ b/kcontrol/bell/bell.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 bell
+ Icon=preferences-desktop-notification-bell
+ Type=Service
+-ServiceTypes=KCModule,KCModuleInit
+-DocPath=kcontrol/bell/index.html
++X-KDE-ServiceTypes=KCModule,KCModuleInit
++X-DocPath=kcontrol/bell/index.html
+ Categories=Qt;KDE;X-KDE-settings-sound;
+ 
+ X-KDE-Library=kcm_bell
+@@ -146,63 +145,63 @@
+ Comment[zh_CN]=系统铃声配置
+ Comment[zh_TW]=系統鈴聲組態
+ 
+-Keywords=Bell,Audio,Sound,Volume,Pitch,Duration
+-Keywords[be]=Званок,аўдыё,гук,гучнасць,Bell,Audio,Sound,Volume,Pitch,Duration
+-Keywords[bg]=Keywords=звук, системен, говорител, сила, Bell, Audio, Sound, Volume, Pitch, Duration
+-Keywords[ca]=Timbre,Àudio,So,Volum,To,Durada
+-Keywords[cs]=Systémový zvonek,Audio,Zvuk,Hlasitost,Trvání
+-Keywords[csb]=brzãczk,audio,zwãk,głosnosc,tonacëjô,dérowanié
+-Keywords[cy]=Cloch,Awdio,S?n,Sain,Gogwydd,Hyd
+-Keywords[da]=Klokke,Audio,Lyd,Lydstyrke,Tonehøjde,Varighed
+-Keywords[de]=Signalton,Systemton,Klänge,Audio,Sound,Dauer,Lautstärke,Höhen
+-Keywords[el]=Μεγαφωνάκι,Audio,Ήχος,Ένταση,Τονισμός,Διάρκεια
+-Keywords[eo]=pepo,sonoro,sono,aŭdio,alteco,daŭro
+-Keywords[es]=Timbre,Audio,Sonido,Volumen,Tono,Duración
+-Keywords[et]=signaal,audio,heli,helitugevus,helikõrgus,kestvus
+-Keywords[eu]=Ezkila,Audioa,Soinua,Bolumena,Pitch-a,Iraupena
+-Keywords[fa]=زنگ، صوتی، صوت، حجم صدا، زیروبمی صدا، دوام
+-Keywords[fi]=Äänet,Piippaus,Ääni,Äänenvoimakkuus,Korkeus,Kesto
+-Keywords[fr]=cloche,audio,son,volume,durée,modulation,bip
+-Keywords[fy]=bel,audio,lûd,folume,singalering,lûd,duer,toan,toanen,toanhichte,systeemlûden,systeembel
+-Keywords[ga]=Clog,Fuaim,Airde,Fad
+-Keywords[gl]=Badalada,Audio,Son,Volume,Pitch,Duración
+-Keywords[he]=פעמון,שמע,צליל,עצמה,גובה,משך, Bell,Audio,Sound,Volume,Pitch,Duration
+-Keywords[hr]=Bell,Audio,Sound,Volume,Pitch,Duration,Zvono,Zvuk,Zvuci sustava,Sistemsko zvono,Glasnoća,Razdoblje
+-Keywords[hu]=csengő,audió,hang,hangerő,hangmagasság,időtartam
+-Keywords[is]=Kerfishljóð,hljóð,bjalla,styrkur,hljóðstyrkur,tónn,lengd,tónlengd
+-Keywords[it]=campanella,segnalazione acustica,audio,suono,volume,tono,durata
+-Keywords[ja]=ベル,オーディオ,サウンド,音量,ピッチ,持続時間
+-Keywords[ka]=ზარი, აუდიო, ხმა, ხმა, მიწოდება, ხანგრძლივობა
+-Keywords[km]=កណ្ដឹង,អូឌីយ៉ូ,សំឡេង,ជម្រេ,ថិរវេលា
+-Keywords[ko]=벨,오디오,종소리,소리,소리 크기
+-Keywords[lt]=Bell,skambutis,Audio,Sound,garsas,Volume,garsumas,Pitch,aukštis,Duration,trukmė
+-Keywords[lv]=Zvans,Audio,Skaņa,Līmenis,Pīķis,Ilgums
+-Keywords[mk]=Bell,Audio,Sound,Volume,Pitch,Duration,Ѕвонче,Аудио,Звук,Гласност,Амплитуда,Траење
+-Keywords[ms]=Loceng,Audio,Bunyi,Volum,Pic,Tempoh
+-Keywords[nb]=signal,audio,lyd,lydstyrke,volum,tone,lengde
+-Keywords[nds]=Pingel,Audio,Klang,Kläng,Luutstärk,Pitch,Duer
+-Keywords[ne]=बेल, अडियो, ध्वनि, भोल्युम, पिच, अन्तराल
+-Keywords[nl]=bel,audio,sound,volume,signalering,geluid,duur,toon,tonen,toonhoogte,systeemgeluiden,systeembel
+-Keywords[nn]=signal,audio,lyd,lydstyrke,volum,tone,lengd
+-Keywords[pa]=Bell,Audio,Sound,Volume,Pitch,Duration, ਘੰਟੀ, ਆਡੀਓ, ਸਾਊਡ
+-Keywords[pl]=Brzęczyk,Audio,Dźwięk,Głośność,Tonacja,Trwanie
+-Keywords[pt]=Campainha,Áudio,Som,Volume,Frequência,Duração
+-Keywords[pt_BR]=Campainha,Áudio,Som,Volume,Tom,Duração
+-Keywords[ro]=difuzor,audio,sunet,volum,frecvenţă,durată
+-Keywords[se]=signála,audio,jietna,voluma,nuohtta,guhkkodat
+-Keywords[sl]=zvonec,avdio,zvok,glasnost,višina,trajanje
+-Keywords[sr]=bell,audio,sound,volume,pitch,duration,звоно,аудио,звук,јачина,трајање
+-Keywords[sr at latin]=bell,audio,sound,volume,pitch,duration,zvono,audio,zvuk,jačina,trajanje
+-Keywords[sv]=Summer,Ljud,Volym,Tonhöjd,Varaktighet
+-Keywords[ta]=மணி,ஒலி அமைப்பு,ஒலி,ஒலி,இடம்,நேர அளவு
+-Keywords[tg]=Bell,Audio,Sound,Volume,Pitch,Duration,Занг,Аудио,Садо
+-Keywords[th]=ออด,ระบบเสียง,เสียง,ความดังเสียง,ระดับเสียง,ความยาวเสียง
+-Keywords[tr]=zil,Ses,Ses,Ses Ayarı,Adım,Süre
+-Keywords[uk]=аудіо,гучність,висота,тривалість,гудок,звук
+-Keywords[uz]=Товуш сигнали,Аудио,Товуш,Товуш баландлиги,Pitch,Давом этиши
+-Keywords[vi]=Chuông,Âm nhạc,Âm thanh,Âm lượng,Âm sắc,Thời lượng
+-Keywords[x-test]=xxBell,Audio,Sound,Volume,Pitch,Durationxx
+-Keywords[xh]=Intsimbi,Evakalayo,iSandi,Umqulu,Uniko lobude obufunekayo,Ixesha ezalithatha
+-Keywords[zh_CN]=Bell,Audio,Sound,Volume,Pitch,Duration,响铃,音频,音量,音调,持续时间
+-Keywords[zh_TW]=Bell,Audio,Sound,Volume,Pitch,Duration,響鈴,聲音,音量,音調,持續時間
++X-KDE-Keywords=Bell,Audio,Sound,Volume,Pitch,Duration
++X-KDE-Keywords[be]=Званок,аўдыё,гук,гучнасць,Bell,Audio,Sound,Volume,Pitch,Duration
++X-KDE-Keywords[bg]=Keywords=звук, системен, говорител, сила, Bell, Audio, Sound, Volume, Pitch, Duration
++X-KDE-Keywords[ca]=Timbre,Àudio,So,Volum,To,Durada
++X-KDE-Keywords[cs]=Systémový zvonek,Audio,Zvuk,Hlasitost,Trvání
++X-KDE-Keywords[csb]=brzãczk,audio,zwãk,głosnosc,tonacëjô,dérowanié
++X-KDE-Keywords[cy]=Cloch,Awdio,S?n,Sain,Gogwydd,Hyd
++X-KDE-Keywords[da]=Klokke,Audio,Lyd,Lydstyrke,Tonehøjde,Varighed
++X-KDE-Keywords[de]=Signalton,Systemton,Klänge,Audio,Sound,Dauer,Lautstärke,Höhen
++X-KDE-Keywords[el]=Μεγαφωνάκι,Audio,Ήχος,Ένταση,Τονισμός,Διάρκεια
++X-KDE-Keywords[eo]=pepo,sonoro,sono,aŭdio,alteco,daŭro
++X-KDE-Keywords[es]=Timbre,Audio,Sonido,Volumen,Tono,Duración
++X-KDE-Keywords[et]=signaal,audio,heli,helitugevus,helikõrgus,kestvus
++X-KDE-Keywords[eu]=Ezkila,Audioa,Soinua,Bolumena,Pitch-a,Iraupena
++X-KDE-Keywords[fa]=زنگ، صوتی، صوت، حجم صدا، زیروبمی صدا، دوام
++X-KDE-Keywords[fi]=Äänet,Piippaus,Ääni,Äänenvoimakkuus,Korkeus,Kesto
++X-KDE-Keywords[fr]=cloche,audio,son,volume,durée,modulation,bip
++X-KDE-Keywords[fy]=bel,audio,lûd,folume,singalering,lûd,duer,toan,toanen,toanhichte,systeemlûden,systeembel
++X-KDE-Keywords[ga]=Clog,Fuaim,Airde,Fad
++X-KDE-Keywords[gl]=Badalada,Audio,Son,Volume,Pitch,Duración
++X-KDE-Keywords[he]=פעמון,שמע,צליל,עצמה,גובה,משך, Bell,Audio,Sound,Volume,Pitch,Duration
++X-KDE-Keywords[hr]=Bell,Audio,Sound,Volume,Pitch,Duration,Zvono,Zvuk,Zvuci sustava,Sistemsko zvono,Glasnoća,Razdoblje
++X-KDE-Keywords[hu]=csengő,audió,hang,hangerő,hangmagasság,időtartam
++X-KDE-Keywords[is]=Kerfishljóð,hljóð,bjalla,styrkur,hljóðstyrkur,tónn,lengd,tónlengd
++X-KDE-Keywords[it]=campanella,segnalazione acustica,audio,suono,volume,tono,durata
++X-KDE-Keywords[ja]=ベル,オーディオ,サウンド,音量,ピッチ,持続時間
++X-KDE-Keywords[ka]=ზარი, აუდიო, ხმა, ხმა, მიწოდება, ხანგრძლივობა
++X-KDE-Keywords[km]=កណ្ដឹង,អូឌីយ៉ូ,សំឡេង,ជម្រេ,ថិរវេលា
++X-KDE-Keywords[ko]=벨,오디오,종소리,소리,소리 크기
++X-KDE-Keywords[lt]=Bell,skambutis,Audio,Sound,garsas,Volume,garsumas,Pitch,aukštis,Duration,trukmė
++X-KDE-Keywords[lv]=Zvans,Audio,Skaņa,Līmenis,Pīķis,Ilgums
++X-KDE-Keywords[mk]=Bell,Audio,Sound,Volume,Pitch,Duration,Ѕвонче,Аудио,Звук,Гласност,Амплитуда,Траење
++X-KDE-Keywords[ms]=Loceng,Audio,Bunyi,Volum,Pic,Tempoh
++X-KDE-Keywords[nb]=signal,audio,lyd,lydstyrke,volum,tone,lengde
++X-KDE-Keywords[nds]=Pingel,Audio,Klang,Kläng,Luutstärk,Pitch,Duer
++X-KDE-Keywords[ne]=बेल, अडियो, ध्वनि, भोल्युम, पिच, अन्तराल
++X-KDE-Keywords[nl]=bel,audio,sound,volume,signalering,geluid,duur,toon,tonen,toonhoogte,systeemgeluiden,systeembel
++X-KDE-Keywords[nn]=signal,audio,lyd,lydstyrke,volum,tone,lengd
++X-KDE-Keywords[pa]=Bell,Audio,Sound,Volume,Pitch,Duration, ਘੰਟੀ, ਆਡੀਓ, ਸਾਊਡ
++X-KDE-Keywords[pl]=Brzęczyk,Audio,Dźwięk,Głośność,Tonacja,Trwanie
++X-KDE-Keywords[pt]=Campainha,Áudio,Som,Volume,Frequência,Duração
++X-KDE-Keywords[pt_BR]=Campainha,Áudio,Som,Volume,Tom,Duração
++X-KDE-Keywords[ro]=difuzor,audio,sunet,volum,frecvenţă,durată
++X-KDE-Keywords[se]=signála,audio,jietna,voluma,nuohtta,guhkkodat
++X-KDE-Keywords[sl]=zvonec,avdio,zvok,glasnost,višina,trajanje
++X-KDE-Keywords[sr]=bell,audio,sound,volume,pitch,duration,звоно,аудио,звук,јачина,трајање
++X-KDE-Keywords[sr at latin]=bell,audio,sound,volume,pitch,duration,zvono,audio,zvuk,jačina,trajanje
++X-KDE-Keywords[sv]=Summer,Ljud,Volym,Tonhöjd,Varaktighet
++X-KDE-Keywords[ta]=மணி,ஒலி அமைப்பு,ஒலி,ஒலி,இடம்,நேர அளவு
++X-KDE-Keywords[tg]=Bell,Audio,Sound,Volume,Pitch,Duration,Занг,Аудио,Садо
++X-KDE-Keywords[th]=ออด,ระบบเสียง,เสียง,ความดังเสียง,ระดับเสียง,ความยาวเสียง
++X-KDE-Keywords[tr]=zil,Ses,Ses,Ses Ayarı,Adım,Süre
++X-KDE-Keywords[uk]=аудіо,гучність,висота,тривалість,гудок,звук
++X-KDE-Keywords[uz]=Товуш сигнали,Аудио,Товуш,Товуш баландлиги,Pitch,Давом этиши
++X-KDE-Keywords[vi]=Chuông,Âm nhạc,Âm thanh,Âm lượng,Âm sắc,Thời lượng
++X-KDE-Keywords[x-test]=xxBell,Audio,Sound,Volume,Pitch,Durationxx
++X-KDE-Keywords[xh]=Intsimbi,Evakalayo,iSandi,Umqulu,Uniko lobude obufunekayo,Ixesha ezalithatha
++X-KDE-Keywords[zh_CN]=Bell,Audio,Sound,Volume,Pitch,Duration,响铃,音频,音量,音调,持续时间
++X-KDE-Keywords[zh_TW]=Bell,Audio,Sound,Volume,Pitch,Duration,響鈴,聲音,音量,音調,持續時間
+ 
+--- a/startkde.cmake
++++ b/startkde.cmake
+@@ -162,7 +162,7 @@
+     None)
+       ;;
+     Simple)
+-      ksplash_pid=`ksplashsimple --pid`
++      ksplash_pid=`ksplashsimple ${ksplashrc_ksplash_theme} --pid`
+       ;;
+     *)
+       ;;
+@@ -274,7 +274,7 @@
+ for resource in tmp cache socket; do
+     if ! "$lnusertemp" $resource >/dev/null; then
+         echo 'startkde: Call to lnusertemp failed (temporary directories full?). Check your installation.'  1>&2
+-        test -n "$ksplash_pid" && kill "$ksplash_pid"
++        test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+         xmessage -geometry 600x100 "Call to lnusertemp failed (temporary directories full?). Check your installation."
+         exit 1
+     fi
+@@ -298,7 +298,7 @@
+     : # ok
+ else
+     echo 'startkde: Could not start D-Bus. Check your installation.'  1>&2
+-    test -n "$ksplash_pid" && kill "$ksplash_pid"
++    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+     xmessage -geometry 500x100 "Could not start D-Bus. Check your installation."
+     exit 1
+ fi
+@@ -339,7 +339,7 @@
+ if test $? -ne 0; then
+   # Startup error
+   echo 'startkde: Could not start kdeinit4. Check your installation.'  1>&2
+-  test -n "$ksplash_pid" && kill "$ksplash_pid"
++  test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+   xmessage -geometry 500x100 "Could not start kdeinit4. Check your installation."
+   exit 1
+ fi
+@@ -368,7 +368,7 @@
+ if test $? -eq 255; then
+   # Startup error
+   echo 'startkde: Could not start ksmserver. Check your installation.'  1>&2
+-  test -n "$ksplash_pid" && kill "$ksplash_pid"
++  test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+   xmessage -geometry 500x100 "Could not start ksmserver. Check your installation."
+ fi
+ 
+@@ -379,7 +379,7 @@
+ 
+ echo 'startkde: Shutting down...'  1>&2
+ # just in case
+-test -n "$ksplash_pid" && kill "$ksplash_pid"
++test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+ 
+ # Clean up
+ kdeinit4_shutdown
+--- a/menu/desktop/kde-education.directory
++++ b/menu/desktop/kde-education.directory
+@@ -8,6 +8,7 @@
+ Name[ca]=Educació
+ Name[de]=Lernprogramme
+ Name[el]=Εκπαίδευση
++Name[eo]=Edukado
+ Name[es]=Educación
+ Name[et]=Õpptimine
+ Name[fa]=آموزش
+--- a/menu/desktop/kde-development-translation.directory
++++ b/menu/desktop/kde-development-translation.directory
+@@ -42,7 +42,7 @@
+ Name[ne]=अनुवाद
+ Name[nl]=Vertaling
+ Name[nn]=Omsetjing
+-Name[pa]=ਅਨੁਵਾਦ
++Name[pa]=ਟਰਾਂਸਲੇਸ਼ਨਦ
+ Name[pl]=Tłumaczenie
+ Name[pt]=Tradução
+ Name[pt_BR]=Tradução
+@@ -108,7 +108,7 @@
+ Name[ne]=अनुवाद
+ Name[nl]=Vertaling
+ Name[nn]=Omsetjing
+-Name[pa]=ਅਨੁਵਾਦ
++Name[pa]=ਟਰਾਂਸਲੇਸ਼ਨਦ
+ Name[pl]=Tłumaczenie
+ Name[pt]=Tradução
+ Name[pt_BR]=Tradução
+--- a/menu/desktop/kde-edu-languages.directory
++++ b/menu/desktop/kde-edu-languages.directory
+@@ -10,6 +10,7 @@
+ Name[csb]=Jãzëczi
+ Name[de]=Sprachen
+ Name[el]=Γλώσσες
++Name[eo]=Lingvoj
+ Name[es]=Idiomas
+ Name[et]=Keeled
+ Name[fa]=زبانها
+--- a/menu/desktop/kde-edu-science.directory
++++ b/menu/desktop/kde-edu-science.directory
+@@ -11,6 +11,7 @@
+ Name[csb]=Ùczba
+ Name[de]=Wissenschaft
+ Name[el]=Επιστήμη
++Name[eo]=Scienco
+ Name[es]=Ciencia
+ Name[et]=Teadus
+ Name[fa]=علم
+--- a/menu/desktop/hidden.directory
++++ b/menu/desktop/hidden.directory
+@@ -13,7 +13,7 @@
+ Name[da]=Interne tjenester
+ Name[de]=Interne Dienste
+ Name[el]=Εσωτερικές υπηρεσίες
+-Name[eo]=Internaciaj servoj
++Name[eo]=Internaj servoj
+ Name[es]=Servicios internos
+ Name[et]=Seesmised teenused
+ Name[eu]=Barne zerbitzuak
+--- a/menu/desktop/kde-graphics.directory
++++ b/menu/desktop/kde-graphics.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=ग्राफिक्स
+ Name[nl]=Grafisch
+ Name[nn]=Bilete
+-Name[pa]=ਚਿੱਤਰਕਲਾ
++Name[pa]=ਗਰਾਫਿਕਸ
+ Name[pl]=Grafika
+ Name[pt]=Gráficos
+ Name[pt_BR]=Gráficos
+--- a/menu/desktop/kde-development-webdevelopment.directory
++++ b/menu/desktop/kde-development-webdevelopment.directory
+@@ -41,7 +41,7 @@
+ Name[ne]=वेब विकास
+ Name[nl]=Webontwikkeling
+ Name[nn]=Nettutvikling
+-Name[pa]=ਵੈਬ ਡੀਵੈਲਪਮਿੰਟ
++Name[pa]=ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ
+ Name[pl]=Programowanie WWW
+ Name[pt]=Desenvolvimento Web
+ Name[pt_BR]=Desenvolvimento Web
+@@ -106,7 +106,7 @@
+ Name[ne]=वेब विकास
+ Name[nl]=Webontwikkeling
+ Name[nn]=Nettutvikling
+-Name[pa]=ਵੈਬ ਡੀਵੈਲਪਮਿੰਟ
++Name[pa]=ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ
+ Name[pl]=Programowanie WWW
+ Name[pt]=Desenvolvimento Web
+ Name[pt_BR]=Desenvolvimento Web
+--- a/menu/desktop/kde-internet-terminal.directory
++++ b/menu/desktop/kde-internet-terminal.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=टर्मिनल अनुप्रयोग
+ Name[nl]=Terminal-toepassingen
+ Name[nn]=Terminalprogram
+-Name[pa]=ਟਰਮੀਨਲ ਕਾਰਜ
++Name[pa]=ਟਰਮੀਨਲ ਐਪਲੀਕੇਸ਼ਨ
+ Name[pl]=Programy terminala
+ Name[pt]=Aplicações de Terminal
+ Name[pt_BR]=Aplicativos de Terminal
+--- a/menu/desktop/kde-edu-tools.directory
++++ b/menu/desktop/kde-edu-tools.directory
+@@ -10,6 +10,7 @@
+ Name[csb]=Nôrzãdza ùczbë
+ Name[de]=Unterrichts-Anwendungen
+ Name[el]=Εργαλείο διδασκαλίας
++Name[eo]=Instruiloj
+ Name[es]=Herramienta de enseñanza
+ Name[et]=Õpperakendused
+ Name[fa]=ابزارهای آموزشی
+--- a/menu/desktop/kde-edu-miscellaneous.directory
++++ b/menu/desktop/kde-edu-miscellaneous.directory
+@@ -10,6 +10,7 @@
+ Name[csb]=(7) Wszelejaczé
+ Name[de]=Verschiedenes
+ Name[el]=Διάφορα
++Name[eo]=Diversaj
+ Name[es]=Diversos
+ Name[et]=Muud
+ Name[fa]=متفرقه
+--- a/menu/desktop/kde-development.directory
++++ b/menu/desktop/kde-development.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=विकास
+ Name[nl]=Ontwikkeling
+ Name[nn]=Utvikling
+-Name[pa]=ਡੀਵੈਲਪਮਿੰਟ
++Name[pa]=ਡਿਵੈਲਪਮੈਂਟ
+ Name[pl]=Narzędzia programistów
+ Name[pt]=Desenvolvimento
+ Name[pt_BR]=Desenvolvimento
+--- a/menu/desktop/kde-utilities-desktop.directory
++++ b/menu/desktop/kde-utilities-desktop.directory
+@@ -13,7 +13,7 @@
+ Name[cy]=Penbwrdd
+ Name[de]=Arbeitsfläche
+ Name[el]=Επιφάνεια εργασίας
+-Name[eo]=Tabulo
++Name[eo]=Labortablo
+ Name[es]=Escritorio
+ Name[et]=Töölaud
+ Name[eu]=Mahaigaina
+--- a/menu/desktop/kde-utilities-peripherals.directory
++++ b/menu/desktop/kde-utilities-peripherals.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=परिधि
+ Name[nl]=Randapparaten
+ Name[nn]=Tilleggseiningar
+-Name[pa]=ਸਹਾਇਕ ਜੰਤਰ
++Name[pa]=ਪਾਰਿਫ਼ਾਰਲ
+ Name[pl]=Urządzenia peryferyjne
+ Name[pt]=Periféricos
+ Name[pt_BR]=Periféricos
+@@ -106,7 +106,7 @@
+ Comment[ne]=परिधि
+ Comment[nl]=Randapparaten
+ Comment[nn]=Tilleggseiningar
+-Comment[pa]=ਜੰਤਰ
++Comment[pa]=ਪਾਰਿਫ਼ਾਰਲ
+ Comment[pl]=Urządzenia peryferyjne
+ Comment[pt]=Periféricos
+ Comment[pt_BR]=Periféricos
+--- a/menu/desktop/kde-games-strategy.directory
++++ b/menu/desktop/kde-games-strategy.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=कौशल र रणनीति
+ Name[nl]=Tactiek en Strategie
+ Name[nn]=Taktikk og strategi
+-Name[pa]=ਤਕਨੀਕੀ ਤੇ ਗਿਆਨ
++Name[pa]=ਤਕਨੀਕੀ ਅਤੇ ਗਿਆਨ
+ Name[pl]=Gry taktyczne i strategiczne
+ Name[pt]=Tácticas e Estratégia
+ Name[pt_BR]=Táticas & Estratégias
+--- a/menu/desktop/kde-system-terminal.directory
++++ b/menu/desktop/kde-system-terminal.directory
+@@ -43,7 +43,7 @@
+ Name[ne]=टर्मिनल अनुप्रयोग
+ Name[nl]=Terminal-toepassingen
+ Name[nn]=Terminalprogram
+-Name[pa]=ਟਰਮੀਨਲ ਕਾਰਜ
++Name[pa]=ਟਰਮੀਨਲ ਐਪਲੀਕੇਸ਼ਨ
+ Name[pl]=Programy terminala
+ Name[pt]=Aplicações de Terminal
+ Name[pt_BR]=Aplicativos de Terminal
+--- a/menu/desktop/kde-unknown.directory
++++ b/menu/desktop/kde-unknown.directory
+@@ -41,7 +41,7 @@
+ Name[ne]=हराएका र फेला परेका
+ Name[nl]=Overig
+ Name[nn]=Tapt og funne
+-Name[pa]=ਗੁਆਚੇ ਤੇ ਲੱਭੇ
++Name[pa]=ਗੁਆਚੇ ਅਤੇ ਲੱਭੇ
+ Name[pl]=Zgubione i znalezione
+ Name[pt]=Perdidos e Achados
+ Name[pt_BR]=Achados & Perdidos
+--- a/menu/desktop/kde-more.directory
++++ b/menu/desktop/kde-more.directory
+@@ -44,7 +44,7 @@
+ Name[ne]=धेरै अनुप्रयोग
+ Name[nl]=Meer programma's
+ Name[nn]=Fleire program
+-Name[pa]=ਹੋਰ ਕਾਰਜ
++Name[pa]=ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ
+ Name[pl]=Więcej programów
+ Name[pt]=Mais Aplicações
+ Name[pt_BR]=Mais Aplicativos
+--- a/menu/desktop/kde-science.directory
++++ b/menu/desktop/kde-science.directory
+@@ -45,7 +45,7 @@
+ Name[ne]=विज्ञान र गणीत
+ Name[nl]=Wetenschap en wiskunde
+ Name[nn]=Vitskap og matematikk
+-Name[pa]=ਵਿਗਿਆਨ ਤੇ ਗਣਿਤ
++Name[pa]=ਵਿਗਿਆਨ ਅਤੇ ਗਣਿਤ
+ Name[pl]=Naukowe
+ Name[pt]=Ciência e Matemática
+ Name[pt_BR]=Ciências & Matemática
+--- a/menu/desktop/kde-editors.directory
++++ b/menu/desktop/kde-editors.directory
+@@ -41,7 +41,7 @@
+ Name[nds]=Editoren
+ Name[ne]=सम्पादक
+ Name[nn]=Skriveprogram
+-Name[pa]=ਸੰਪਾਦਕ
++Name[pa]=ਐਡੀਟਰ
+ Name[pl]=Edytory
+ Name[pt]=Editores
+ Name[pt_BR]=Editores
+--- a/menu/desktop/kde-edu-mathematics.directory
++++ b/menu/desktop/kde-edu-mathematics.directory
+@@ -11,6 +11,7 @@
+ Name[csb]=Matematika
+ Name[de]=Mathematik
+ Name[el]=Μαθηματικά
++Name[eo]=Matematiko
+ Name[es]=Matemáticas
+ Name[et]=Matemaatika
+ Name[fa]=ریاضیات
+--- a/systemsettings/categories/settings-notifications.desktop
++++ b/systemsettings/categories/settings-notifications.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=notifications
+ X-KDE-System-Settings-Parent-Category=look-and-feel
+ Icon=preferences-desktop-notification
+@@ -14,6 +13,7 @@
+ Name[ca]=Notificacions
+ Name[de]=Benachrichtigungen
+ Name[el]=Ειδοποιήσεις
++Name[eo]=Atentigoj
+ Name[es]=Notificaciones
+ Name[et]=Märguanded
+ Name[fa]=اخطارها
+--- a/systemsettings/categories/settings-desktop.desktop
++++ b/systemsettings/categories/settings-desktop.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=desktop
+ X-KDE-System-Settings-Parent-Category=look-and-feel
+ Icon=preferences-desktop
+@@ -18,7 +17,7 @@
+ Name[cy]=Penbwrdd
+ Name[de]=Arbeitsfläche
+ Name[el]=Επιφάνεια εργασίας
+-Name[eo]=Tabulo
++Name[eo]=Labortablo
+ Name[es]=Escritorio
+ Name[et]=Töölaud
+ Name[eu]=Mahaigaina
+--- a/systemsettings/categories/settings-about-me.desktop
++++ b/systemsettings/categories/settings-about-me.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=about-me
+ X-KDE-System-Settings-Parent-Category=personal
+ Icon=preferences-desktop-user
+@@ -9,8 +8,10 @@
+ Name=About Me
+ Name[ar]=نبذة عني
+ Name[bg]=За мен
++Name[ca]=Quant a mi
+ Name[de]=Persönliche Informationen
+ Name[el]=Σχετικά με μένα
++Name[eo]=Pri Mi
+ Name[es]=Acerca de mí
+ Name[et]=Isiklik info
+ Name[fa]=درباره من
+--- a/systemsettings/categories/settings-look-and-feel.desktop
++++ b/systemsettings/categories/settings-look-and-feel.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=look-and-feel
+ X-KDE-System-Settings-Parent-Category=general
+ Icon=preferences-desktop-theme
+--- a/systemsettings/categories/settings-general.desktop
++++ b/systemsettings/categories/settings-general.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=general
+ X-KDE-System-Settings-Parent-Category=
+ 
+--- a/systemsettings/categories/settings-advanced-user-settings.desktop
++++ b/systemsettings/categories/settings-advanced-user-settings.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=advanced-user-settings
+ X-KDE-System-Settings-Parent-Category=advanced
+ Icon=system-users
+@@ -13,6 +12,7 @@
+ Name[ca]=Paràmetres avançats d'usuari
+ Name[de]=Erweiterte Benutzereinstellungen
+ Name[el]=Προχωρημένες ρυθμίσεις χρήστη
++Name[eo]=Plia uzantagordo
+ Name[es]=Preferencias para usuarios avanzados
+ Name[et]=Muud kasutaja seadistused
+ Name[fa]=تنظیمات کاربر پیشرفته
+--- a/systemsettings/categories/settings-computer-administration.desktop
++++ b/systemsettings/categories/settings-computer-administration.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=computer-administration
+ X-KDE-System-Settings-Parent-Category=general
+ Icon=preferences-system
+@@ -13,6 +12,7 @@
+ Name[ca]=Administració de l'ordinador
+ Name[de]=Systemverwaltung
+ Name[el]=Διαχείριση συστήματος
++Name[eo]=Komputiladministrado
+ Name[es]=Administración del equipo
+ Name[et]=Arvuti haldamine
+ Name[fa]=سرپرستی رایانه
+--- a/systemsettings/categories/settings-regional-and-language.desktop
++++ b/systemsettings/categories/settings-regional-and-language.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=regional-and-language
+ X-KDE-System-Settings-Parent-Category=personal
+ Icon=preferences-desktop-locale
+@@ -14,6 +13,7 @@
+ Name[ca]=País/Regió i idioma
+ Name[de]=Land/Region & Sprache
+ Name[el]=Τοπικές ρυθμίσεις & γλώσσα
++Name[eo]=Regiono & Lingvo
+ Name[es]=Región e idioma
+ Name[et]=Riik/regioon ja keel
+ Name[fa]=منطقه‌ای و زبان
+--- a/systemsettings/categories/settings-personal.desktop
++++ b/systemsettings/categories/settings-personal.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=personal
+ X-KDE-System-Settings-Parent-Category=general
+ Icon=preferences-desktop-personal
+@@ -12,6 +11,7 @@
+ Name[bg]=Лични бележки
+ Name[de]=Persönliches
+ Name[el]=Προσωπικά
++Name[eo]=Persona
+ Name[et]=Isiklik
+ Name[fa]=شخصی
+ Name[ga]=Pearsanta
+--- a/systemsettings/categories/settings-system.desktop
++++ b/systemsettings/categories/settings-system.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=system
+ X-KDE-System-Settings-Parent-Category=advanced
+ Icon=preferences-system
+--- a/systemsettings/categories/settings-keyboard-and-mouse.desktop
++++ b/systemsettings/categories/settings-keyboard-and-mouse.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=keyboard-and-mouse
+ X-KDE-System-Settings-Parent-Category=computer-administration
+ Icon=preferences-desktop-keyboard
+@@ -13,6 +12,7 @@
+ Name[ca]=Teclat i ratolí
+ Name[de]=Tastatur & Maus
+ Name[el]=Πληκτρολόγιο & ποντίκι
++Name[eo]=Klavaro & Muso
+ Name[es]=Teclado y ratón
+ Name[et]=Klaviatuur ja hiir
+ Name[fa]=صفحه کلید و موشی
+--- a/systemsettings/categories/settings-network-settings.desktop
++++ b/systemsettings/categories/settings-network-settings.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=network-settings
+ X-KDE-System-Settings-Parent-Category=network-and-connectivity
+ Icon=preferences-system-network
+@@ -14,6 +13,7 @@
+ Name[ca]=Paràmetres de xarxa
+ Name[de]=Netzwerk-Einstellungen
+ Name[el]=Ρυθμίσεις δικτύου
++Name[eo]=Retagordo
+ Name[es]=Preferencias de red
+ Name[et]=Võrguseadistused
+ Name[fa]=تنظیمات شبکه
+@@ -29,7 +29,7 @@
+ Name[ne]=सञ्जाल सेटिङ
+ Name[nl]=Netwerkinstellingen
+ Name[nn]=Nettverksinnstillingar
+-Name[pa]=ਨੈਟਵਰਕ ਸੈਟਿੰਗ
++Name[pa]=ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ
+ Name[pt]=Configuração da Rede
+ Name[pt_BR]=Configurações de Rede
+ Name[sl]=Nastavitve omrežja
+--- a/systemsettings/categories/settings-accessibility.desktop
++++ b/systemsettings/categories/settings-accessibility.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=accessibility
+ X-KDE-System-Settings-Parent-Category=personal
+ Icon=preferences-desktop-accessibility
+--- a/systemsettings/categories/settings-window-behaviour.desktop
++++ b/systemsettings/categories/settings-window-behaviour.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=window-behaviour
+ X-KDE-System-Settings-Parent-Category=look-and-feel
+ Icon=preferences-system-windows
+@@ -48,7 +47,7 @@
+ Name[ne]=सञ्झ्याल व्यवहार
+ Name[nl]=Venstergedrag
+ Name[nn]=Vindaugsåtferd
+-Name[pa]=ਝਰੋਖਾ ਵਿਵਹਾਰ
++Name[pa]=ਵਿੰਡੋ ਰਵੱਈਆ
+ Name[pl]=Okna
+ Name[pt]=Comportamento das Janelas
+ Name[pt_BR]=Comportamento da Janela
+--- a/systemsettings/categories/settings-sharing.desktop
++++ b/systemsettings/categories/settings-sharing.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=sharing
+ X-KDE-System-Settings-Parent-Category=network-and-connectivity
+ Icon=preferences-system-network-share
+@@ -11,8 +10,10 @@
+ Name[be]=Абмен
+ Name[bg]=Споделяне
+ Name[br]=Rannañ
++Name[ca]=Compartició
+ Name[de]=Freigabe
+ Name[el]=Διαμοιρασμός
++Name[eo]=Komunigo
+ Name[es]=Compartición
+ Name[et]=Jagamine
+ Name[fa]=اشتراک
+--- a/systemsettings/categories/settings-appearance.desktop
++++ b/systemsettings/categories/settings-appearance.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=appearance
+ X-KDE-System-Settings-Parent-Category=look-and-feel
+ Icon=preferences-desktop-theme
+--- a/systemsettings/categories/settings-network-and-connectivity.desktop
++++ b/systemsettings/categories/settings-network-and-connectivity.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=network-and-connectivity
+ X-KDE-System-Settings-Parent-Category=general
+ Icon=preferences-system-network
+@@ -9,6 +8,7 @@
+ Name=Network & Connectivity
+ Name[ar]=الشبكة والاتصال
+ Name[bg]=Интернет и мрежа
++Name[ca]=Xarxa i connectivitat
+ Name[cs]=Síť a připojení
+ Name[de]=Netzwerk & Verbindungen
+ Name[el]=Δίκτυο & συνδεσιμότητα
+@@ -28,7 +28,7 @@
+ Name[ne]=सञ्जाल र जडान
+ Name[nl]=Netwerk en connectiviteit
+ Name[nn]=Nettverk og samband
+-Name[pa]=ਨੈੱਟਵਰਕ ਅਤੇ ਕੁਨੈਕਟਵਟੀ
++Name[pa]=ਨੈੱਟਵਰਕ ਅਤੇ ਕੁਨੈਕਟਵਿਟੀ
+ Name[pt]=Rede e Conectividade
+ Name[pt_BR]=Rede & Conectividade
+ Name[sl]=Omrežje in povezljivost
+--- a/systemsettings/categories/settings-bluetooth.desktop
++++ b/systemsettings/categories/settings-bluetooth.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=bluetooth
+ X-KDE-System-Settings-Parent-Category=network-and-connectivity
+ Icon=preferences-system-bluetooth
+--- a/systemsettings/categories/settings-advanced.desktop
++++ b/systemsettings/categories/settings-advanced.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SystemSettingsCategory
++X-KDE-ServiceTypes=SystemSettingsCategory
+ X-KDE-System-Settings-Category=advanced
+ X-KDE-System-Settings-Parent-Category=
+ 
+@@ -17,7 +16,7 @@
+ Name[cy]=Uwch
+ Name[da]=Avanceret
+ Name[de]=Erweitert
+-Name[el]=Προχωρημένα
++Name[el]=Για προχωρημένους
+ Name[eo]=Pliaj
+ Name[es]=Avanzado
+ Name[et]=Muu
+--- a/systemsettings/categories/systemsettingscategory.desktop
++++ b/systemsettings/categories/systemsettingscategory.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=SystemSettingsCategory
+ Name=System Settings Category
+ Name[ar]=فئة إعدادات النظام
+ Name[be]=Катэгорыя сістэмных настаўленняў
+ Name[bg]=Категория системни настройки
++Name[ca]=Categoria d'arranjament del sistema
+ Name[de]=Systemeinstellungen-Kategorie
+ Name[el]=Κατηγορία ρυθμίσεων συστήματος
+ Name[es]=Categoría de preferencias del sistema
+--- a/systemsettings/systemsettings.desktop
++++ b/systemsettings/systemsettings.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=systemsettings -caption "%c" %i %m
+ Icon=systemsettings
+ Type=Application
+--- a/systemsettings/kcmultiwidget.cpp
++++ b/systemsettings/kcmultiwidget.cpp
+@@ -348,12 +348,18 @@
+ 
+ 	ModuleList::Iterator end = m_modules.end();
+ 	int buttons = 0;
++        bool found = false;
+ 	for( ModuleList::Iterator it = m_modules.begin(); it != end; ++it ) {
+ 		if( ( *it ).kcm==d->currentModule) {
+ 			showButton(User3, ( *it ).adminmode);
+ 			buttons = ( *it ).buttons;
++                        found = true;
+ 		}
+ 	}
++        if (!found) {
++            buttons = d->currentModule->buttons();
++        }
++        //Q_ASSERT(found);
+ 
+         showButton(Apply, buttons & KCModule::Apply);
+         showButton(User1, buttons & KCModule::Apply);   // Reset button.
+--- a/klipper/klipperrc.desktop
++++ b/klipper/klipperrc.desktop
+@@ -5,7 +5,7 @@
+ Description[be]=Відарыс JPEG
+ Description[bg]=Изображение Jpeg
+ Description[br]=Skeudenn Jpeg
+-Description[ca]=Imatge jpeg
++Description[ca]=Imatge JPEG
+ Description[cs]=Obrázek JPEG
+ Description[csb]=Òbrôz Jpeg
+ Description[cy]=Delwedd Jpeg
+@@ -110,7 +110,7 @@
+ Description[ne]=केडीई दृश्य सुरुआत गर्नुहोस्
+ Description[nl]=K&View opstarten
+ Description[nn]=Start K&View
+-Description[pa]=ਕੇ-ਵਿਊ ਜਾਰੀ(&V)
++Description[pa]=ਕੇ-ਵਿਊ ਚਲਾਓ(&V)
+ Description[pl]=Uruchom &Przeglądarkę obrazków
+ Description[pt]=Lançar o K&View
+ Description[pt_BR]=Lançar K&View
+@@ -234,7 +234,7 @@
+ Description[ne]=कन्क्वेररसँग खोल्नुहोस्
+ Description[nl]=Openen met &Konqueror
+ Description[nn]=Opna med &Konqueror
+-Description[pa]=ਕੋਨਕਿਉਰੋਰ ਨਾਲ ਖੋਲੋ(&K)
++Description[pa]=ਕੋਨਕਿਉਰੋਰ ਨਾਲ ਖੋਲ੍ਹੋ(&K)
+ Description[pl]=Otwórz w &Konquerorze
+ Description[pt]=Abrir com o &Konqueror
+ Description[pt_BR]=Abrir com o &Konqueror
+@@ -304,7 +304,7 @@
+ Description[ne]=मोजिलासँग खोल्नुहोस्
+ Description[nl]=Openen met &Mozilla
+ Description[nn]=Opna med &Mozilla
+-Description[pa]=ਮੌਜੀਲਾ ਨਾਲ ਖੋਲੋ(&M)
++Description[pa]=ਮੋਜ਼ੀਲਾ ਨਾਲ ਖੋਲ੍ਹੋ(&M)
+ Description[pl]=Otwórz w &Mozilli
+ Description[pt]=Abrir com o &Mozilla
+ Description[pt_BR]=Abrir com o &Mozilla
+@@ -438,7 +438,7 @@
+ Description[ne]=फायरफक्ससँग खोल्नुहोस्
+ Description[nl]=Openen met &Firefox
+ Description[nn]=Opna med &Firefox
+-Description[pa]=ਫਾਇਰਫਾਕਸ ਨਾਲ ਖੋਲੋ(&F)
++Description[pa]=ਫਾਇਰਫਾਕਸ ਨਾਲ ਖੋਲ੍ਹੋ(&F)
+ Description[pl]=Otwórz w &Firefoksie
+ Description[pt]=Abrir com o &Firefox
+ Description[pt_BR]=Abrir com o &Firefox
+@@ -504,7 +504,7 @@
+ Description[ne]=पृष्ठ पठाउनुहोस्
+ Description[nl]=&Pagina verzenden
+ Description[nn]=Send &side
+-Description[pa]=ਸਫ਼ਾ ਭੇਜੋ(&P)
++Description[pa]=ਪੇਜ਼ ਭੇਜੋ(&P)
+ Description[pl]=Wyślij &stronę
+ Description[pt]=Enviar a &Página
+ Description[pt_BR]=Enviar &Página
+@@ -565,7 +565,7 @@
+ Description[ne]=मेल-यूआरएल
+ Description[nl]=URL-adres e-mailen
+ Description[nn]=E-postadresse
+-Description[pa]=ਪੱਤਰ-URL
++Description[pa]=ਮੇਲ-URL
+ Description[pl]=Wyślij pocztą adres (URL)
+ Description[pt]=URL de E-mail
+ Description[pt_BR]=Enviar URL por e-mail
+@@ -634,7 +634,7 @@
+ Description[ne]=केडीई मेल सुरुआत गर्नुहोस्
+ Description[nl]=&Kmail opstarten
+ Description[nn]=Start &KMail
+-Description[pa]=ਕੇ-ਮੇਲ ਜਾਰੀ(&K)
++Description[pa]=ਕੇ-ਮੇਲ ਚਲਾਓ(&K)
+ Description[pl]=Uruchom KM&ail
+ Description[pt]=Lançar o &Kmail
+ Description[pt_BR]=Abrir &Kmail
+@@ -702,7 +702,7 @@
+ Description[ne]=मट सुरुआत गर्नुहोस्
+ Description[nl]=&Mutt opstarten
+ Description[nn]=Start &mutt
+-Description[pa]=ਮੂਟ ਜਾਰੀ(&m)
++Description[pa]=ਮੂਟ ਚਲਾਓ(&m)
+ Description[pl]=Uruchom &mutt
+ Description[pt]=Lançar o &mutt
+ Description[pt_BR]=Abrir &mutt
+@@ -768,7 +768,7 @@
+ Description[ne]=पाठ फाइल
+ Description[nl]=Tekstbestand
+ Description[nn]=Tekstfil
+-Description[pa]=ਪਾਠ ਫਾਇਲਾਂ
++Description[pa]=ਟੈਕਸਟ ਫਾਇਲਾਂ
+ Description[pl]=Plik tekstowy
+ Description[pt]=Ficheiros de Texto
+ Description[pt_BR]=Arquivo de Texto
+@@ -838,7 +838,7 @@
+ Description[ne]=केडीई सम्पादन सुरुआत गर्नुहोस्
+ Description[nl]=K&Edit opstarten
+ Description[nn]=Start K&Edit
+-Description[pa]=ਕੇ-ਸੰਪਾਦਕ ਸ਼ੁਰੂ(&E)
++Description[pa]=ਕੇ-ਐਡਿਟ ਚਲਾਓ(&E)
+ Description[pl]=Uruchom &Edytor
+ Description[pt]=Lançar o K&Edit
+ Description[pt_BR]=Abrir &Kedit
+@@ -905,7 +905,7 @@
+ Description[ne]=केडीई राइट सुरुआत गर्नुहोस्
+ Description[nl]=K&Write opstarten
+ Description[nn]=Start K&Write
+-Description[pa]=ਕੇ-ਲੇਖਕ ਸ਼ੁਰੂ(&W)
++Description[pa]=ਕੇ-ਲੇਖਕ ਚਲਾਓ(&W)
+ Description[pl]=Uruchom &Zaawansowany edytor
+ Description[pt]=Lançar o K&Write
+ Description[pt_BR]=Abrir KW&rite
+@@ -1326,7 +1326,7 @@
+ Description[af]=ftp Url
+ Description[ar]=رابط عنوان ftp
+ Description[br]=URL FTP
+-Description[ca]=URL de ftp
++Description[ca]=URL de FTP
+ Description[cs]=FTP URL
+ Description[cy]=URL ftp
+ Description[da]=ftp-URL
+@@ -1418,7 +1418,7 @@
+ Description[ne]=कन्क्वेररसँग खोल्नुहोस्
+ Description[nl]=Openen met &Konqueror
+ Description[nn]=Opna med &Konqueror
+-Description[pa]=ਕੋਨਕਿਉਰੋਰ ਨਾਲ ਖੋਲੋ(&K)
++Description[pa]=ਕੋਨਕਿਉਰੋਰ ਨਾਲ ਖੋਲ੍ਹੋ(&K)
+ Description[pl]=Otwórz w &Konquerorze
+ Description[pt]=Abrir com o &Konqueror
+ Description[pt_BR]=Abrir com o &Konqueror
+@@ -1556,7 +1556,7 @@
+ Description[ne]=मोजिलासँग खोल्नुहोस्
+ Description[nl]=Openen met &Mozilla
+ Description[nn]=Opna med &Mozilla
+-Description[pa]=ਮੌਜੀਲਾ ਨਾਲ ਖੋਲੋ(&M)
++Description[pa]=ਮੋਜ਼ੀਲਾ ਨਾਲ ਖੋਲ੍ਹੋ(&M)
+ Description[pl]=Otwórz w &Mozilli
+ Description[pt]=Abrir com o &Mozilla
+ Description[pt_BR]=Abrir com o &Mozilla
+--- a/klipper/klipper.desktop
++++ b/klipper/klipper.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Klipper
+ Name[eo]=Poŝilo
+ Name[kk]=Алмасу буфері
+@@ -56,7 +55,7 @@
+ GenericName[ne]=क्लिपबोर्ड उपकरण
+ GenericName[nl]=Klembordbeheer
+ GenericName[nn]=Utklippstavle
+-GenericName[pa]=ਕਲਿੱਪਬੋਰਡ ਸੰਦ
++GenericName[pa]=ਕਲਿੱਪਬੋਰਡ ਟੂਲ
+ GenericName[pl]=Narzędzie schowka
+ GenericName[pt]=Ferramenta da Área de Transferência
+ GenericName[pt_BR]=Ferramenta de Área de Transferência
+--- a/solid/bluez/solid_bluez.desktop
++++ b/solid/bluez/solid_bluez.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SolidBluetoothManager
++X-KDE-ServiceTypes=SolidBluetoothManager
+ X-KDE-Library=solid_bluez
+ InitialPreference=100
+ Name=BlueZ
+@@ -11,6 +10,7 @@
+ Comment=Bluetooth management using the BlueZ stack
+ Comment[be]=Кіраванне Bluetooth пры дапамозе стэка BlueZ
+ Comment[bg]=Bluetooth с BlueZ
++Comment[ca]=Gestió del Bluetooth usant la pila BlueZ
+ Comment[de]=Bluetooth-Verwaltung mit Hilfe von Bluez
+ Comment[el]=Διαχείριση bluetooth με χρήση της στοίβας BlueZ
+ Comment[et]=Bluetoothi haldamine BlueZi pinuga
+@@ -25,7 +25,7 @@
+ Comment[ne]=ब्लुZ थाक प्रयोग गरिएको ब्लुटुथ व्यवस्थापन
+ Comment[nl]=Bluetooth-beheer via de BlueZ Stack
+ Comment[nn]=Bluetooth-handtering med BlueZ
+-Comment[pa]=BlueZ ਸਟੈਕ ਨਾਲ ਬਲਿਊਟੁੱਥ ਪਰਬੰਧ
++Comment[pa]=BlueZ ਸਟੈਕ ਨਾਲ ਬਲਿਊਟੁੱਥ ਮੈਨਿਜਮੈਂਟ
+ Comment[pt]=Gestão do Bluetooth com a plataforma BlueZ
+ Comment[pt_BR]=Gerenciamento Bluetooth usando a pilha BlueZ
+ Comment[sr]=Управљање блутутом механизмима БлуЗ-а
+--- a/solid/hal/solid_hal_power.desktop
++++ b/solid/hal/solid_hal_power.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SolidPowerManager
++X-KDE-ServiceTypes=SolidPowerManager
+ X-KDE-Library=solid_hal_power
+ InitialPreference=100
+ Name=HAL-Power
+@@ -24,6 +23,7 @@
+ Comment=Hardware power management using freedesktop.org HAL daemon
+ Comment[be]=Кіраванне сілкаваннем пры дапамозе сервіса freedesktop.org HAL
+ Comment[bg]=Hardware power management
++Comment[ca]=Gestió d'energia del maquinari que usa el dimoni HAL del freedesktop.org
+ Comment[de]=Energieverwaltung mit Hilfe des HAL-Dienstes von freedesktop.org
+ Comment[el]=Διαχείριση ενέργειας υλικού με χρήση του δαίμονα HAL του freedesktop.org
+ Comment[es]=Gestión de energía del hardware usando el servicio HAL de freedesktop.org
+@@ -39,7 +39,7 @@
+ Comment[ne]=freedesktop.org हल डेइमोन प्रयोग गरिरहेको हार्डवेयर शक्ति व्यवस्थापन
+ Comment[nl]=Hardware-energiebeheer via de HAL-daemon van freedesktop.org
+ Comment[nn]=Straumstyring med freedesktop.org-HAL-tenesta
+-Comment[pa]=freedesktop.org HAL ਡੈਮਨ ਦੀ ਵਰਤੋਂ ਨਾਲ ਹਾਰਡਵੇਅਰ ਪਾਵਰ ਪਰਬੰਧ
++Comment[pa]=freedesktop.org HAL ਡੈਮਨ ਦੀ ਵਰਤੋਂ ਨਾਲ ਹਾਰਡਵੇਅਰ ਪਾਵਰ ਮੈਨਿਜਮੈਂਟ
+ Comment[pt]=Gestão de energia do 'hardware' com o servidor de HAL do freedesktop.org
+ Comment[pt_BR]=Gerenciamento de energia de hardware usando o servidor freedesktop.org HAL
+ Comment[sr]=Хардверско управљање енергијом преко ХАЛ демона
+--- a/solid/networkmanager/solid_networkmanager.desktop
++++ b/solid/networkmanager/solid_networkmanager.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SolidNetworkManager
++X-KDE-ServiceTypes=SolidNetworkManager
+ X-KDE-Library=solid_networkmanager
+ InitialPreference=100
+ Name=NetworkManager
+@@ -11,13 +10,14 @@
+ Name[csb]=Menadżer logòwaniô
+ Name[de]=Netzwerkverwaltung
+ Name[el]=Διαχειριστής δικτύου
++Name[eo]=Retadministrilo
+ Name[et]=Võrguhaldur
+ Name[km]=កម្មវិធី​គ្រប់គ្រង​បណ្តាញ​
+ Name[nb]=Nettverksstyring
+ Name[nds]=Nettwark-Pleger
+ Name[ne]=सञ्जाल प्रबन्धक
+ Name[nn]=Nettverkshandtering
+-Name[pa]=ਨੈਟਵਰਕਮੈਨੇਜਰ
++Name[pa]=ਨੈੱਟਵਰਕਮੈਨੇਜਰ
+ Name[pt_BR]=Gerenciador de Rede
+ Name[sr]=Менаџер мреже
+ Name[sr at latin]=Menadžer mreže
+@@ -29,6 +29,7 @@
+ Comment=Network management using the NetworkManager daemon
+ Comment[be]=Кіраванне сеткай пры дапамозе сервіса NetworkManager
+ Comment[bg]=Управление на мрежата с демона NetworkManager
++Comment[ca]=Gestor de xarxes que usa el dimoni NetworkManager
+ Comment[cs]=Správa sítě pomocí Networkmanager démona
+ Comment[csb]=Sprôwianié sécë ùżëwające ùsłëżnotã menadżera sécë
+ Comment[de]=Netzwerkverwaltung mit dem Netzwerkverwaltungs-Dienst
+@@ -46,7 +47,7 @@
+ Comment[ne]=सञ्जाल प्रबन्धक डेइमोन प्रयोग गरिरहेको सञ्जाल व्यवस्थापन
+ Comment[nl]=Netwerkbeheer via de NetworkManager-daemon
+ Comment[nn]=Nettverkshandtering med NetworkManager-tenesta
+-Comment[pa]=ਨੈੱਟਵਰਕ-ਮੈਨੇਜਰ ਡੈਮਨ ਨਾਲ ਨੈੱਟਵਰਕ ਪਰਬੰਧ
++Comment[pa]=ਨੈੱਟਵਰਕ-ਮੈਨੇਜਰ ਡੈਮਨ ਨਾਲ ਨੈੱਟਵਰਕ ਮੈਨਿਜਮੈਂਟ
+ Comment[pt]=Gestão da rede com o servidor NetworkManager
+ Comment[pt_BR]=Gerenciamento de rede usando o serviço Gerenciador de Rede
+ Comment[sr]=Управљање мрежом демоном Менаџера мреже
+--- a/solid/networking/kded/networkstatus.desktop
++++ b/solid/networking/kded/networkstatus.desktop
+@@ -1,8 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Network Status Daemon
+ Name[ar]=رقيب حالة الشبكة
+ Name[bg]=Демон за състоянието на мрежата
++Name[ca]=Dimoni d'estat de la xarxa
+ Name[de]=Netzwerkstatus-Dienst
+ Name[el]=Δαίμονας κατάστασης δικτύου
+ Name[es]=Servicio del estado de red
+@@ -31,6 +31,7 @@
+ Name[zh_TW]=網路狀態伺服程式
+ Comment=Tracks status of network interfaces and provides notification to applications using the network.
+ Comment[bg]=Проверява състоянието на мрежата и изпраща уведомление на програмите в мрежата
++Comment[ca]=Fa un seguiment de l'estat de les interfícies de xarxa i proporciona notificació a les aplicacions usant la xarxa.
+ Comment[de]=Überprüft den Status von Netzwerkschnittstellen und benachrichtigt Programme, die das Netzwerk verwenden.
+ Comment[el]=Παρακολουθεί την κατάσταση των διασυνδέσεων δικτύου και προσφέρει ειδοποιήσεις σε εφαρμογές που χρησιμοποιούν το δίκτυο.
+ Comment[et]=Võrguliideste oleku jälgimine ja märguannete edastamine rakendustele võrgu vahendusel.
+@@ -46,7 +47,7 @@
+ Comment[ne]=सञ्जाल इन्टरफेसहरूको वस्तुस्थिति ट्रयाक गर्दछ र सञ्जाल प्रयोग गरिरहेको अनुप्रयोगमा सूचना उपलब्ध गर्दछ ।
+ Comment[nl]=Volgt de status van netwerkinterfaces en levert notificatie aan programma's die het netwerk gebruiken.
+ Comment[nn]=Viser status til nettverksgrensesnitt, og varslar program som brukar nettverket.
+-Comment[pa]=ਨੈੱਟਵਰਕ ਇੰਟਰਫੇਸ ਦੀ ਹਾਲਤ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਵਰਤਣ ਵਾਲੇ ਕਾਰਜਾਂ ਲਈ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿੰਦਾ ਹੈ।
++Comment[pa]=ਨੈੱਟਵਰਕ ਇੰਟਰਫੇਸ ਦੀ ਹਾਲਤ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਵਰਤਣ ਵਾਲੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿੰਦਾ ਹੈ।
+ Comment[pt]=Regista o estado das interfaces de rede e notifica as aplicações que necessitem da rede.
+ Comment[pt_BR]=Monitora o estado das interfaces de rede e fornece notificações para os aplicativos usando a rede.
+ Comment[sr]=Прати стање мрежних сучеља и обавештава о програмима који користе мрежу
+@@ -56,7 +57,7 @@
+ Comment[zh_CN]=跟踪网络接口的状态并且为正在使用网络的应用程序提供通知。
+ Comment[zh_TW]=追蹤網路介面的狀態,提供通知給使用網路的應用程式
+ Type=Service
+-ServiceTypes=KDEDModule
++X-KDE-ServiceTypes=KDEDModule
+ X-KDE-ModuleType=Library
+ X-KDE-Library=networkstatus
+ X-KDE-Kded-autoload=true
+--- a/solid/kcm/kcm_solid.desktop
++++ b/solid/kcm/kcm_solid.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kcm_solid
+ Icon=preferences-system-solid
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/solid/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/solid/index.html
+ 
+ X-KDE-Library=kcm_solid
+ X-KDE-ParentApp=kcontrol
+@@ -28,6 +27,7 @@
+ Comment[csb]=Kònfigùracëjô integracëji hardwôrë
+ Comment[de]=Einrichtung zur Hardware-Einbindung
+ Comment[el]=Ρυθμίσεις ενσωμάτωσης υλικού
++Comment[eo]=Agordo de aparat-integrado
+ Comment[es]=Configuración de la integración del hardware
+ Comment[et]=Riistvara lõimimise seadistamine
+ Comment[fa]=پیکربندی مجتمع‌سازی سخت‌افزار
+@@ -54,32 +54,32 @@
+ Comment[zh_CN]=硬件集成配置
+ Comment[zh_TW]=系統整合設定
+ 
+-Keywords=Solid,Hardware,Power,Network,Discovery,Management
+-Keywords[bg]=Solid,Hardware,Power,Network,Discovery,Management,хардуер,захранване,мрежа,управление,откриване
+-Keywords[ca]=Solid,Maquinari,Energia,Xarxa,Discovery,Gestió
+-Keywords[de]=Solid,Hardware,Energie,Netzwerk,Discovery,Management,Verwaltung,Erkennung
+-Keywords[el]=Solid,Υλικό,Hardware,Ενέργεια,Power,Δίκτυο,Network,Εντοπισμός,Discovery,Διαχείριση,Management
+-Keywords[es]=Solid,Hardware,Energía,Red,Detección,Gestión
+-Keywords[et]=Solid,riistvara,voolutarve,võrg,tuvastamine,haldamine
+-Keywords[fa]=Solid، سخت‌افزار، توان، شبکه، اکتشاف، مدیریت
+-Keywords[ga]=Solid,Crua-earraí,Cumhacht,Líonra,Fionnachtain,Bainistíocht
+-Keywords[he]=Solid,Hardware,Power,Network,Discovery,Management,חומרה,צריכת חשמל,רשת,גילוי,ניהול
+-Keywords[it]=Solid,Hardware,Power,Network,Discovery,Management,Rete,Gestione,Esplorazione,Scoperta
+-Keywords[ja]=Solid,ハードウェア,電源,ネットワーク,ディスカバリ,発見,管理
+-Keywords[km]=តាន់ ផ្នែករឹង ថាមពល បណ្តាញ ការ​រក​ឃើញ ការ​គ្រប់គ្រង
+-Keywords[ko]=Solid,하드웨어,전원,네트워크,발견,관리
+-Keywords[nb]=Solid,maskinvare,strøm,nettverk,oppdage,styring
+-Keywords[nds]=Solid,Hardware,Stroom,Nettwark,Opdecken,Pleeg,Pleger
+-Keywords[ne]=ठोस, हार्डवेयर, शक्ति, सञ्जाल, आविष्कार, व्यवस्थापन
+-Keywords[nl]=Solid,Hardware,Energie,Netwerk,Discovery,Management,Beheer
+-Keywords[nn]=Solid,maskinvare,straum,nettverk,oppdaging,handtering,styring
+-Keywords[pa]=ਸਾਲਡ,ਹਾਰਡਵੇਅਰ,ਪਾਵਰ,ਨੈੱਟਵਰਕ,ਖੋਜ,ਪਰਬੰਧ
+-Keywords[pt]=Solid,Hardware,Energia,Rede,Descoberta,Gestão
+-Keywords[pt_BR]=Solid,Hardware,Energia,Rede,Descoberta,Gerenciamento
+-Keywords[sr]=Solid,Hardware,Power,Network,Discovery,Management,Солид,хардвер,напајање,енергија,мрежа,откривање,детектовање,управљање
+-Keywords[sr at latin]=Solid,Hardware,Power,Network,Discovery,Management,Solid,hardver,napajanje,energija,mreža,otkrivanje,detektovanje,upravljanje
+-Keywords[sv]=Solid,hårdvara,ström,nätverk,upptäcka,hantering
+-Keywords[vi]=Đặc,Phần cứng,Điện,Mạng,Phát hiện,Quản lý
+-Keywords[x-test]=xxSolid,Hardware,Power,Network,Discovery,Managementxx
+-Keywords[zh_CN]=Solid,Hardware,Power,Network,Discovery,Management,硬件,电源,网络,发现,管理
++X-KDE-Keywords=Solid,Hardware,Power,Network,Discovery,Management
++X-KDE-Keywords[bg]=Solid,Hardware,Power,Network,Discovery,Management,хардуер,захранване,мрежа,управление,откриване
++X-KDE-Keywords[ca]=Solid,Maquinari,Energia,Xarxa,Discovery,Gestió
++X-KDE-Keywords[de]=Solid,Hardware,Energie,Netzwerk,Discovery,Management,Verwaltung,Erkennung
++X-KDE-Keywords[el]=Solid,Υλικό,Hardware,Ενέργεια,Power,Δίκτυο,Network,Εντοπισμός,Discovery,Διαχείριση,Management
++X-KDE-Keywords[es]=Solid,Hardware,Energía,Red,Detección,Gestión
++X-KDE-Keywords[et]=Solid,riistvara,voolutarve,võrg,tuvastamine,haldamine
++X-KDE-Keywords[fa]=Solid، سخت‌افزار، توان، شبکه، اکتشاف، مدیریت
++X-KDE-Keywords[ga]=Solid,Crua-earraí,Cumhacht,Líonra,Fionnachtain,Bainistíocht
++X-KDE-Keywords[he]=Solid,Hardware,Power,Network,Discovery,Management,חומרה,צריכת חשמל,רשת,גילוי,ניהול
++X-KDE-Keywords[it]=Solid,Hardware,Power,Network,Discovery,Management,Rete,Gestione,Esplorazione,Scoperta
++X-KDE-Keywords[ja]=Solid,ハードウェア,電源,ネットワーク,ディスカバリ,発見,管理
++X-KDE-Keywords[km]=តាន់ ផ្នែករឹង ថាមពល បណ្តាញ ការ​រក​ឃើញ ការ​គ្រប់គ្រង
++X-KDE-Keywords[ko]=Solid,하드웨어,전원,네트워크,발견,관리
++X-KDE-Keywords[nb]=Solid,maskinvare,strøm,nettverk,oppdage,styring
++X-KDE-Keywords[nds]=Solid,Hardware,Stroom,Nettwark,Opdecken,Pleeg,Pleger
++X-KDE-Keywords[ne]=ठोस, हार्डवेयर, शक्ति, सञ्जाल, आविष्कार, व्यवस्थापन
++X-KDE-Keywords[nl]=Solid,Hardware,Energie,Netwerk,Discovery,Management,Beheer
++X-KDE-Keywords[nn]=Solid,maskinvare,straum,nettverk,oppdaging,handtering,styring
++X-KDE-Keywords[pa]=ਸਾਲਡ,ਹਾਰਡਵੇਅਰ,ਪਾਵਰ,ਨੈੱਟਵਰਕ,ਖੋਜ,ਪਰਬੰਧ
++X-KDE-Keywords[pt]=Solid,Hardware,Energia,Rede,Descoberta,Gestão
++X-KDE-Keywords[pt_BR]=Solid,Hardware,Energia,Rede,Descoberta,Gerenciamento
++X-KDE-Keywords[sr]=Solid,Hardware,Power,Network,Discovery,Management,Солид,хардвер,напајање,енергија,мрежа,откривање,детектовање,управљање
++X-KDE-Keywords[sr at latin]=Solid,Hardware,Power,Network,Discovery,Management,Solid,hardver,napajanje,energija,mreža,otkrivanje,detektovanje,upravljanje
++X-KDE-Keywords[sv]=Solid,hårdvara,ström,nätverk,upptäcka,hantering
++X-KDE-Keywords[vi]=Đặc,Phần cứng,Điện,Mạng,Phát hiện,Quản lý
++X-KDE-Keywords[x-test]=xxSolid,Hardware,Power,Network,Discovery,Managementxx
++X-KDE-Keywords[zh_CN]=Solid,Hardware,Power,Network,Discovery,Management,硬件,电源,网络,发现,管理
+ 
+--- a/wallpapers/Time-For-Lunch-2.jpg.desktop
++++ b/wallpapers/Time-For-Lunch-2.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=Time-For-Lunch-2.jpg
+ Name=Time For Lunch
+ Name[af]=Tyd vir Middagete
+--- a/wallpapers/Chicken-Songs-2.jpg.desktop
++++ b/wallpapers/Chicken-Songs-2.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=Chicken-Songs-2.jpg
+ Name=Chicken Songs
+ Name[af]=Kuiken Liedjie
+--- a/wallpapers/Totally-New-Product-1.jpg.desktop
++++ b/wallpapers/Totally-New-Product-1.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=Totally-New-Product-1.jpg
+ Name=Totally New Product
+ Name[af]=Totale nuwe produk
+@@ -36,7 +35,7 @@
+ Name[ne]=सम्पूर्ण नयाँ वस्तु
+ Name[nl]=Gloednieuw product
+ Name[nn]=Heilt nytt produkt
+-Name[pa]=ਬਿਲਕੁੱਲ ਨਵਾਂ ਉਤਪਾਦ
++Name[pa]=ਬਿਲਕੁੱਲ ਨਵੀਂ ਪਰੋਡੱਕਟ
+ Name[pl]=Zupełnie nowy produkt
+ Name[pt]=Produto Totalmente Novo
+ Name[pt_BR]=Produto Totalmente Novo
+--- a/wallpapers/blue-bend.jpg.desktop
++++ b/wallpapers/blue-bend.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=blue-bend.jpg
+ Name=Blue Blend
+ Name[af]=Blou Mengsel
+--- a/wallpapers/sunshine-after-the-rain.jpg.desktop
++++ b/wallpapers/sunshine-after-the-rain.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=sunshine-after-the-rain.jpg
+ Name=Sunshine After The Rain
+ Name[af]=Sonskyn na die Reën
+--- a/wallpapers/andes-venezolanos.svgz.desktop
++++ b/wallpapers/andes-venezolanos.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=andes-venezolanos.svgz
+ Name=Andes Venezolanos
+ Name[ca]=Andes veneçolans
+--- a/wallpapers/default_gears.jpg.desktop
++++ b/wallpapers/default_gears.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=default_gears.jpg
+ Name=Default Gears
+ Name[af]=Standaard Ratte
+@@ -36,7 +35,7 @@
+ Name[ne]=पूर्वनिर्धारित गियर
+ Name[nl]=Standaardtandwielen
+ Name[nn]=Standard tannhjul
+-Name[pa]=ਮੂਲ ਗੇਅਰ
++Name[pa]=ਡਿਫਾਲਟ ਗੇਅਰ
+ Name[pl]=Domyślna - koła zębate
+ Name[pt]=Engrenagens Predefinidas
+ Name[pt_BR]=Engrenagens Padrão
+--- a/wallpapers/lineart.svgz.desktop
++++ b/wallpapers/lineart.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=lineart.svgz
+ Name=Lineart Logo
+ Name[af]=Lynkuns Embleem
+--- a/wallpapers/soft-green.jpg.desktop
++++ b/wallpapers/soft-green.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=soft-green.jpg
+ Name=Soft Green
+ Name[af]=Sagte Groen
+--- a/wallpapers/kde_box.png.desktop
++++ b/wallpapers/kde_box.png.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=kde_box.png
+ Name=KDE Box
+ Name[ar]=مربع كدي
+@@ -20,7 +19,7 @@
+ Name[nds]=KDE-Kist
+ Name[ne]=केडीई बाकस
+ Name[nn]=KDE-boks
+-Name[pa]=KDE ਬਕਸਾ
++Name[pa]=KDE ਬਾਕਸ
+ Name[pt]=Caixa do KDE
+ Name[sl]=Škatla KDE
+ Name[sr]=КДЕ машина
+--- a/wallpapers/floating-leaves.jpg.desktop
++++ b/wallpapers/floating-leaves.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=floating-leaves.jpg
+ Name=Floating Leaves
+ Name[af]=Drywnde Blare
+--- a/wallpapers/moon.svgz.desktop
++++ b/wallpapers/moon.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=moon.svgz
+ Name=Moon
+ Name[af]=Maan
+--- a/wallpapers/triplegears.jpg.desktop
++++ b/wallpapers/triplegears.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=triplegears.jpg
+ Name=Triple Gears
+ Name[af]=Trippel Ratte
+@@ -34,7 +33,7 @@
+ Name[ne]=तेस्रो गियर
+ Name[nl]=Drievoudige tandwielen
+ Name[nn]=Tre tannhjul
+-Name[pa]=ਤੀਹਰੇ ਗੇਅਰ
++Name[pa]=ਡੌਕੂਮੈਂਟੇਸ਼ਨਡੌਕੂਮੈਂਟੇਸ਼ਨਡੌਕੂਮੈਂਟੇਸ਼ਨ
+ Name[pl]=Potrójne koła zębate
+ Name[pt]=Engrenagens Triplas
+ Name[pt_BR]=Engrenagens Triplas
+--- a/wallpapers/stelvio.jpg.desktop
++++ b/wallpapers/stelvio.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=stelvio.jpg
+ Name=Stelvio
+ Name[de]=Sturm
+--- a/wallpapers/default_blue.jpg.desktop
++++ b/wallpapers/default_blue.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=default_blue.jpg
+ Name=Default Blue
+ Name[af]=Standaard Blou
+@@ -38,7 +37,7 @@
+ Name[ne]=पूर्वनिर्धारित नीलो
+ Name[nl]=Standaardblauw
+ Name[nn]=Standard blå
+-Name[pa]=ਮੂਲ ਨੀਲਾ
++Name[pa]=ਡਿਫਾਲਟ ਨੀਲਾ
+ Name[pl]=Domyślna - niebieska
+ Name[pt]=Azul Predefinido
+ Name[pt_BR]=Azul Padrão
+--- a/wallpapers/globe.svgz.desktop
++++ b/wallpapers/globe.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=globe.svgz
+ Name=Geared Globe
+ Name[af]=Rat Balla
+--- a/wallpapers/aurora.svgz.desktop
++++ b/wallpapers/aurora.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=aurora.svgz
+ Name=Aurora
+ Name[be]=Аўрора
+--- a/wallpapers/plasma-default.png.desktop
++++ b/wallpapers/plasma-default.png.desktop
+@@ -1,16 +1,19 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=plasma_default.jpg
+ Name=Default Wallpaper for Plasma
++Name[ca]=Paper pintat per omissió pel Plasma
++Name[de]=Standard-Hintergrundbild für Plasma
+ Name[el]=Προκαθορισμένη ταπετσαρία για το Plasma
+ Name[eo]=Defaŭlta ekranfono por Plasma
+ Name[et]=Plasma vaikimisi taustapilt
+ Name[ja]=Plasma の標準壁紙
+ Name[ko]=Plasma의 기본 배경
++Name[nb]=Standard bakgrunn for Plasma
+ Name[nds]=Standard-Schriefdischachtergrund för Plasma
+ Name[ne]=प्लाज्माका लागि पूर्वनिर्धारित वालपेपर
+ Name[nl]=Standaardachtergrond voor Plasma
+ Name[nn]=Standard bakgrunnsbilete for Plasma
++Name[pa]=ਪਲਾਜ਼ਮਾ ਦਾ ਡਿਫਾਲਟ ਵਾਲਪੇਪਰ
+ Name[pt]=Papel de Parede Predefinido do Plasma
+ Name[pt_BR]=Papel de Parede Padrão para o Plasma
+ Name[sl]=Privzeta tapeta za Plazmo
+--- a/wallpapers/seaofconero.jpg.desktop
++++ b/wallpapers/seaofconero.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=seaofconero.jpg
+ Name=Sea of Conero
+ Name[af]=See van Conero
+--- a/wallpapers/here-gear.svgz.desktop
++++ b/wallpapers/here-gear.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=here-gear.svgz
+ Name=We Are Gear
+ Name[af]=Ons is Ratte
+--- a/wallpapers/No-Ones-Laughing-3.jpg.desktop
++++ b/wallpapers/No-Ones-Laughing-3.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=No-Ones-Laughing-3.jpg
+ Name=No One's Laughing
+ Name[af]=Niemand lag nie
+--- a/wallpapers/celtic.svgz.desktop
++++ b/wallpapers/celtic.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=celtic.svgz
+ Name=Celtic
+ Name[af]=Celties
+--- a/wallpapers/All-Good-People-1.jpg.desktop
++++ b/wallpapers/All-Good-People-1.jpg.desktop
+@@ -1,12 +1,11 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=All-Good-People-1.jpg
+ Name=All Good People
+ Name[af]=Alle Goeie Mense
+ Name[ar]=كلّ الأشخاص الطيبين
+ Name[be]=Усе добрыя людзі
+ Name[bg]=Всички добри хора
+-Name[ca]=La bona gent
++Name[ca]=Tota la bona gent
+ Name[cs]=Všichni dobří lidé
+ Name[csb]=Wszëtcë dobrzi lëdze
+ Name[da]=Alle gode mennesker
+--- a/wallpapers/alta-badia.jpg.desktop
++++ b/wallpapers/alta-badia.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=alta-badia.jpg
+ Name=Alta Badia
+ Name[af]=Alta Badië
+--- a/wallpapers/konqui.svgz.desktop
++++ b/wallpapers/konqui.svgz.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=konqui.svgz
+ Name=Konqui
+ Name[ka]=კონქი
+--- a/wallpapers/Won-Ton-Soup-3.jpg.desktop
++++ b/wallpapers/Won-Ton-Soup-3.jpg.desktop
+@@ -1,5 +1,4 @@
+ [Wallpaper]
+-Encoding=UTF-8
+ File=Won-Ton-Soup-3.jpg
+ Name=Won Ton Soup
+ Name[af]=Won Ton Sop
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3,15 +3,16 @@
+ # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
+ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules )
+ 
++
+ #search packages used by KDE
+ find_package(KDE4 REQUIRED)
+ find_package(Strigi REQUIRED)
+ find_package(Blitz REQUIRED)
+-include (KDE4Defaults)
++
+ include (MacroLibrary)
+-include (MacroOptionalFindPackage)
+-include(MacroOptionalAddSubdirectory)
++include (KDE4Defaults)
+ 
++macro_optional_find_package(OpenGL)
+ 
+ include(ConfigureChecks.cmake)
+ configure_file(config-unix.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-unix.h )
+--- a/krunner/krunnerdialog.cpp
++++ b/krunner/krunnerdialog.cpp
+@@ -34,11 +34,19 @@
+ #include <X11/Xlib.h>
+ 
+ KRunnerDialog::KRunnerDialog( QWidget * parent, Qt::WindowFlags f )
+-    : KDialog( parent, f )
++    : KDialog(parent, f),
++      m_cachedBackground(0)
+ {
+     setButtons(0);
+-    m_background = new Plasma::Svg( "dialogs/background", this );
+-    connect( m_background, SIGNAL(repaintNeeded()), this, SLOT(update()) );
++    m_background = new Plasma::Svg("dialogs/background", this);
++
++    const int topHeight = m_background->elementSize("top").height();
++    const int leftWidth = m_background->elementSize("left").width();
++    const int rightWidth = m_background->elementSize("right").width();
++    const int bottomHeight = m_background->elementSize("bottom").height();
++    setContentsMargins(leftWidth, topHeight, rightWidth, bottomHeight);
++
++    connect(m_background, SIGNAL(repaintNeeded()), this, SLOT(update()));
+ }
+ 
+ KRunnerDialog::~KRunnerDialog()
+@@ -52,13 +60,13 @@
+     p.setClipRect(e->rect());
+     //kDebug() << "clip rect set to: " << e->rect();
+ 
+-    if ( KRunnerApp::s_haveCompositeManager ) {
+-        //kDebug() << "gots us a compmgr!" << m_haveCompositionManager;
+-        p.setCompositionMode( QPainter::CompositionMode_Source );
+-        p.fillRect( rect(), Qt::transparent );
++    if (KRunnerApp::self()->hasCompositeManager()) {
++        //kDebug() << "gots us a compmgr!";
++        p.setCompositionMode(QPainter::CompositionMode_Source );
++        p.fillRect(rect(), Qt::transparent);
+     }
+ 
+-    m_background->paint( &p, 0, 0 );
++    paintBackground(&p, e->rect());
+ }
+ 
+ void KRunnerDialog::resizeEvent(QResizeEvent *e)
+@@ -81,4 +89,99 @@
+     e->accept();
+ }
+ 
++void KRunnerDialog::paintBackground(QPainter* painter, const QRect &exposedRect)
++{
++    if (!m_cachedBackground || m_cachedBackground->size() != rect().size()) {
++        const int contentWidth = rect().width();
++        const int contentHeight = rect().height();
++        
++        m_background->resize();
++        
++        const int topHeight = m_background->elementSize("top").height();
++        const int topWidth = m_background->elementSize("top").width();
++        const int leftWidth = m_background->elementSize("left").width();
++        const int leftHeight = m_background->elementSize("left").height();
++        const int rightHeight = m_background->elementSize("right").height();
++        const int rightWidth = m_background->elementSize("right").width();
++        const int bottomHeight = m_background->elementSize("bottom").height();
++        const int bottomWidth = m_background->elementSize("bottom").width();
++
++        const int topOffset = 0;
++        const int leftOffset = 0;
++        const int rightOffset = contentWidth - rightWidth;
++        const int bottomOffset = contentHeight - bottomHeight;
++        const int contentTop = topHeight;
++        const int contentLeft = leftWidth;
++        
++        delete m_cachedBackground;
++        m_cachedBackground = new QPixmap(contentWidth, contentHeight);
++        m_cachedBackground->fill(Qt::transparent);
++        QPainter p(m_cachedBackground);
++        p.setCompositionMode(QPainter::CompositionMode_Source);
++        p.setRenderHint(QPainter::SmoothPixmapTransform);
++        
++        //FIXME: This is a hack to fix a drawing problems with svg files where a thin transparent border is drawn around the svg image.
++        //       the transparent border around the svg seems to vary in size depending on the size of the svg and as a result increasing the
++        //       svn image by 2 all around didn't resolve the issue. For now it resizes based on the border size.
++        
++        m_background->resize(contentWidth, contentHeight);
++        m_background->paint(&p, QRect(contentLeft, contentTop, contentWidth, contentHeight), "center");
++        m_background->resize();
++
++        m_background->paint(&p, QRect(leftOffset, topOffset, leftWidth, topHeight), "topleft");
++        m_background->paint(&p, QRect(rightOffset, topOffset, rightWidth, topHeight), "topright");
++        m_background->paint(&p, QRect(leftOffset, bottomOffset, leftWidth, bottomHeight), "bottomleft");
++        m_background->paint(&p, QRect(rightOffset, bottomOffset, rightWidth, bottomHeight), "bottomright");
++        
++        if (m_background->elementExists("hint-stretch-borders")) {
++            m_background->paint(&p, QRect(leftOffset, contentTop, leftWidth, contentHeight), "left");
++            m_background->paint(&p, QRect(rightOffset, contentTop, rightWidth, contentHeight), "right");
++            m_background->paint(&p, QRect(contentLeft, topOffset, contentWidth, topHeight), "top");
++            m_background->paint(&p, QRect(contentLeft, bottomOffset, contentWidth, bottomHeight), "bottom");
++        } else {
++            QPixmap left(leftWidth, leftHeight);
++            left.fill(Qt::transparent);
++            {
++                QPainter sidePainter(&left);
++                sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                m_background->paint(&sidePainter, QPoint(0, 0), "left");
++            }
++            p.drawTiledPixmap(QRect(leftOffset, contentTop, leftWidth, contentHeight - topHeight - bottomHeight), left);
++            
++            QPixmap right(rightWidth, rightHeight);
++            right.fill(Qt::transparent);
++            {
++                QPainter sidePainter(&right);
++                sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                m_background->paint(&sidePainter, QPoint(0, 0), "right");
++            }
++            p.drawTiledPixmap(QRect(rightOffset, contentTop, rightWidth, contentHeight - topHeight - bottomHeight), right);
++            
++            QPixmap top(topWidth, topHeight);
++            top.fill(Qt::transparent);
++            {
++                QPainter sidePainter(&top);
++                sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                m_background->paint(&sidePainter, QPoint(0, 0), "top");
++            }
++            p.drawTiledPixmap(QRect(contentLeft, topOffset, contentWidth - rightWidth - leftWidth, topHeight), top);
++            
++            QPixmap bottom(bottomWidth, bottomHeight);
++            bottom.fill(Qt::transparent);
++            {
++                QPainter sidePainter(&bottom);
++                sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                m_background->paint(&sidePainter, QPoint(0, 0), "bottom");
++            }
++            p.drawTiledPixmap(QRect(contentLeft, bottomOffset, contentWidth - rightWidth - leftWidth, bottomHeight), bottom);
++        }
++        
++        // re-enable this once Qt's svg rendering is un-buggered
++        //background->resize(contentWidth, contentHeight);
++        //background->paint(&p, QRect(contentLeft, contentTop, contentWidth, contentHeight), "center");
++    }
++    
++    painter->drawPixmap(exposedRect, *m_cachedBackground, exposedRect);
++}
++
+ #include "krunnerdialog.moc"
+--- a/krunner/startupid.cpp
++++ b/krunner/startupid.cpp
+@@ -34,6 +34,9 @@
+ #include <kconfig.h>
+ #include <X11/Xlib.h>
+ #include <QX11Info>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
++#include <X11/extensions/shape.h>
+ 
+ #define KDE_STARTUP_ICON "kmenu"
+ 
+@@ -48,7 +51,7 @@
+ StartupId::StartupId( QWidget* parent, const char* name )
+     :   QWidget( parent ),
+ 	startup_info( KStartupInfo::CleanOnCantDetect ),
+-	startup_widget( NULL ),
++	startup_window( None ),
+ 	blinking( true ),
+ 	bouncing( false )
+     {
+@@ -130,7 +133,7 @@
+         && e->xclient.message_type == kde_splash_progress )
+         {
+         const char* s = e->xclient.data.b;
+-        if( strcmp( s, "kicker" ) == 0 && kde_startup_status == StartupPre )
++        if( strcmp( s, "desktop" ) == 0 && kde_startup_status == StartupPre )
+             {
+             kde_startup_status = StartupIn;
+             if( startups.count() == 0 )
+@@ -138,7 +141,7 @@
+             // 60(?) sec timeout - shouldn't be hopefully needed anyway, ksmserver should have it too
+             QTimer::singleShot( 60000, this, SLOT( finishKDEStartup()));
+             }
+-        else if( strcmp( s, "session ready" ) == 0 && kde_startup_status < StartupDone )
++        else if( strcmp( s, "ready" ) == 0 && kde_startup_status < StartupDone )
+             QTimer::singleShot( 2000, this, SLOT( finishKDEStartup()));
+         }
+     return false;
+@@ -154,8 +157,9 @@
+ 
+ void StartupId::stop_startupid()
+     {
+-    delete startup_widget;
+-    startup_widget = NULL;
++    if( startup_window != None )
++        XDestroyWindow( QX11Info::display(), startup_window );
++    startup_window = None;
+     if( blinking )
+         for( int i = 0;
+              i < NUM_BLINKING_PIXMAPS;
+@@ -178,6 +182,19 @@
+     return QPixmap::fromImage(result);
+ }
+ 
++// Transparent images are converted to 32bpp pixmaps, but
++// setting those as window background needs ARGB visual
++// and compositing - convert to 24bpp, at least for now.
++static QPixmap make24bpp( const QPixmap& p )
++    {
++    QPixmap ret( p.size());
++    QPainter pt( &ret );
++    pt.drawPixmap( 0, 0, p );
++    pt.end();
++    ret.setMask( p.mask());
++    return ret;
++    }
++
+ void StartupId::start_startupid( const QString& icon_P )
+     {
+ 
+@@ -189,17 +206,30 @@
+         KIconLoader::DefaultState, QStringList(), 0, true ); // return null pixmap if not found
+     if( icon_pixmap.isNull())
+         icon_pixmap = SmallIcon( "system-run" );
+-    if( startup_widget == NULL )
++    if( startup_window == None )
+         {
+-        startup_widget = new QWidget( 0, Qt::X11BypassWindowManagerHint );
+-        XSetWindowAttributes attr;
+-        attr.save_under = True; // useful saveunder if possible to avoid redrawing
+-        XChangeWindowAttributes( QX11Info::display(), startup_widget->winId(), CWSaveUnder, &attr );
++        XSetWindowAttributes attrs;
++        attrs.override_redirect = True;
++        attrs.save_under = True; // useful saveunder if possible to avoid redrawing
++        attrs.colormap = QX11Info::appColormap();
++        attrs.background_pixel = WhitePixel( QX11Info::display(), QX11Info::appScreen());
++        attrs.border_pixel = BlackPixel( QX11Info::display(), QX11Info::appScreen());
++        startup_window = XCreateWindow( QX11Info::display(), DefaultRootWindow( QX11Info::display()),
++            0, 0, 1, 1, 0, QX11Info::appDepth(), InputOutput, static_cast< Visual* >( QX11Info::appVisual()),
++            CWOverrideRedirect | CWSaveUnder | CWColormap | CWBackPixel | CWBorderPixel, &attrs );
++        XClassHint class_hint;
++        QByteArray cls = qAppName().toLatin1();
++        class_hint.res_name = cls.data();
++        class_hint.res_class = const_cast< char* >( QX11Info::appClass());
++        XSetWMProperties( QX11Info::display(), startup_window, NULL, NULL, NULL, NULL, NULL, NULL, &class_hint );
++        XChangeProperty( QX11Info::display(), winId(),
++            XInternAtom( QX11Info::display(), "WM_WINDOW_ROLE", False ), XA_STRING, 8, PropModeReplace,
++            (unsigned char *)"startupfeedback", strlen( "startupfeedback" ));
+         }
+-    startup_widget->resize( icon_pixmap.width(), icon_pixmap.height());
++    XResizeWindow( QX11Info::display(), startup_window, icon_pixmap.width(), icon_pixmap.height());
+     if( blinking )
+-        {
+-        startup_widget->clearMask();
++        { // no mask
++        XShapeCombineMask( QX11Info::display(), startup_window, ShapeBounding, 0, 0, None, ShapeSet );
+         int window_w = icon_pixmap.width();
+         int window_h = icon_pixmap.height();
+         for( int i = 0;
+@@ -216,25 +246,24 @@
+         }
+     else if( bouncing )
+         {
+-        startup_widget->resize( 20, 20 );
+-        pixmaps[ 0 ] = scalePixmap( icon_pixmap, 16, 16 );
+-        pixmaps[ 1 ] = scalePixmap( icon_pixmap, 14, 18 );
+-        pixmaps[ 2 ] = scalePixmap( icon_pixmap, 12, 20 );
+-        pixmaps[ 3 ] = scalePixmap( icon_pixmap, 18, 14 );
+-        pixmaps[ 4 ] = scalePixmap( icon_pixmap, 20, 12 );
++        XResizeWindow( QX11Info::display(), startup_window, 20, 20 );
++        pixmaps[ 0 ] = make24bpp( scalePixmap( icon_pixmap, 16, 16 ));
++        pixmaps[ 1 ] = make24bpp( scalePixmap( icon_pixmap, 14, 18 ));
++        pixmaps[ 2 ] = make24bpp( scalePixmap( icon_pixmap, 12, 20 ));
++        pixmaps[ 3 ] = make24bpp( scalePixmap( icon_pixmap, 18, 14 ));
++        pixmaps[ 4 ] = make24bpp( scalePixmap( icon_pixmap, 20, 12 ));
+         frame = 0;
+         }
+     else
+         {
+-        if( !icon_pixmap.mask().isNull() )
+-            startup_widget->setMask( icon_pixmap.mask() );
+-        else
+-            startup_widget->clearMask();
+-
+-		QPalette palette;
+-        palette.setBrush( startup_widget->backgroundRole(), QBrush( icon_pixmap ) );
+-        startup_widget->setPalette( palette );
+-        startup_widget->update();
++        icon_pixmap = make24bpp( icon_pixmap );
++        if( !icon_pixmap.mask().isNull() ) // set mask
++            XShapeCombineMask( QX11Info::display(), startup_window, ShapeBounding, 0, 0,
++                icon_pixmap.mask().handle(), ShapeSet );
++        else // clear mask
++            XShapeCombineMask( QX11Info::display(), startup_window, ShapeBounding, 0, 0, None, ShapeSet );
++        XSetWindowBackgroundPixmap( QX11Info::display(), startup_window, icon_pixmap.handle());
++        XClearWindow( QX11Info::display(), startup_window );
+         }
+     update_startupid();
+     }
+@@ -259,23 +288,23 @@
+     int yoffset = 0;
+     if( blinking )
+         {
+-		QPalette palette;
+-        palette.setBrush( startup_widget->backgroundRole(), QBrush( pixmaps[ color_to_pixmap[ color_index ]] ) );
+-        startup_widget->setPalette( palette );
++        XSetWindowBackgroundPixmap( QX11Info::display(), startup_window,
++            pixmaps[ color_to_pixmap[ color_index ]].handle());
++        XClearWindow( QX11Info::display(), startup_window );
+         if( ++color_index >= ( sizeof( color_to_pixmap ) / sizeof( color_to_pixmap[ 0 ] )))
+             color_index = 0;
+         }
+     else if( bouncing )
+         {
+         yoffset = frame_to_yoffset[ frame ];
+-        QPixmap pm = pixmaps[ frame_to_pixmap[ frame ] ];
+-		QPalette palette;
+-        palette.setBrush( startup_widget->backgroundRole(), QBrush( pm ) );
+-        startup_widget->setPalette( palette );
+-        if ( !pm.mask().isNull() )
+-            startup_widget->setMask( pm.mask() );
+-        else
+-            startup_widget->clearMask();
++        QPixmap pixmap = pixmaps[ frame_to_pixmap[ frame ] ];
++        XSetWindowBackgroundPixmap( QX11Info::display(), startup_window, pixmap.handle());
++        XClearWindow( QX11Info::display(), startup_window );
++        if ( !pixmap.mask().isNull() ) // set mask
++            XShapeCombineMask( QX11Info::display(), startup_window, ShapeBounding, 0, 0,
++                pixmap.mask().handle(), ShapeSet );
++        else // clear mask
++            XShapeCombineMask( QX11Info::display(), startup_window, ShapeBounding, 0, 0, None, ShapeSet );
+         if ( ++frame >= ( sizeof( frame_to_yoffset ) / sizeof( frame_to_yoffset[ 0 ] ) ) )
+             frame = 0;
+         }
+@@ -285,7 +314,7 @@
+     unsigned int dummy5;
+     if( !XQueryPointer( QX11Info::display(), QX11Info::appRootWindow(), &dummy1, &dummy2, &x, &y, &dummy3, &dummy4, &dummy5 ))
+         {
+-        startup_widget->hide();
++        XUnmapWindow( QX11Info::display(), startup_window );
+         update_timer.start( 100 );
+         return;
+         }
+@@ -304,11 +333,9 @@
+     else
+         X_DIFF = 32 + 7;
+     int Y_DIFF = X_DIFF;
+-    if( startup_widget->x() != c_pos.x() + X_DIFF
+-        || startup_widget->y() != c_pos.y() + Y_DIFF + yoffset )
+-        startup_widget->move( c_pos.x() + X_DIFF, c_pos.y() + Y_DIFF + yoffset );
+-    startup_widget->show();
+-    XRaiseWindow( QX11Info::display(), startup_widget->winId());
++    XMoveWindow( QX11Info::display(), startup_window, c_pos.x() + X_DIFF, c_pos.y() + Y_DIFF + yoffset );
++    XMapWindow( QX11Info::display(), startup_window );
++    XRaiseWindow( QX11Info::display(), startup_window );
+     update_timer.start( bouncing ? 30 : 100 );
+     QApplication::flush();
+     }
+--- a/krunner/main.cpp
++++ b/krunner/main.cpp
+@@ -33,9 +33,8 @@
+ static const char description[] = I18N_NOOP( "KDE run command interface" );
+ static const char version[] = "0.1";
+ 
+-bool KRunnerApp::s_haveCompositeManager = false;
+-
+-int main(int argc, char* argv[])
++extern "C"
++KDE_EXPORT int kdemain(int argc, char* argv[])
+ {
+     KAboutData aboutData( "krunner", 0, ki18n( "Run Command Interface" ),
+                           version, ki18n(description), KAboutData::License_GPL,
+@@ -49,67 +48,10 @@
+         return 0;
+     }
+ 
+-    // thanks to zack rusin and frederik for pointing me in the right direction
+-    // for the following bits of X11 code
+-//     Display *dpy = XOpenDisplay(0); // open default display
+-//     if (!dpy)
+-//     {
+-//         kError() << "Cannot connect to the X server" << endl;
+-//         return 1;
+-//     }
+-// 
+-//     bool argbVisual = false ;
+-//     KRunnerApp::s_haveCompositeManager = KWindowSystem::compositingActive();
+-// 
+-//     Colormap colormap = 0;
+-//     Visual *visual = 0;
+-// 
+-//     if (KRunnerApp::s_haveCompositeManager)
+-//     {
+-//         int screen = DefaultScreen(dpy);
+-//         int eventBase, errorBase;
+-// 
+-//         if (XRenderQueryExtension(dpy, &eventBase, &errorBase))
+-//         {
+-//             int nvi;
+-//             XVisualInfo templ;
+-//             templ.screen  = screen;
+-//             templ.depth   = 32;
+-//             templ.c_class = TrueColor;
+-//             XVisualInfo *xvi = XGetVisualInfo(dpy, VisualScreenMask |
+-//                                                    VisualDepthMask |
+-//                                                    VisualClassMask,
+-//                                               &templ, &nvi);
+-//             for (int i = 0; i < nvi; ++i)
+-//             {
+-//                 XRenderPictFormat *format = XRenderFindVisualFormat(dpy,
+-//                                                                     xvi[i].visual);
+-//                 if (format->type == PictTypeDirect && format->direct.alphaMask)
+-//                 {
+-//                     visual = xvi[i].visual;
+-//                     colormap = XCreateColormap(dpy, RootWindow(dpy, screen),
+-//                                                visual, AllocNone);
+-//                     argbVisual = true;
+-//                     break;
+-//                 }
+-//             }
+-//         }
+-// 
+-//         KRunnerApp::s_haveCompositeManager = argbVisual;
+-//     }
+-// 
+-//     kDebug() << "KRunnerApp::s_haveCompositeManager: " << KRunnerApp::s_haveCompositeManager;
+-
+-    KRunnerApp app;
+-
+-//     if (KRunnerApp::s_haveCompositeManager) {
+-//         app = new KRunnerApp(dpy, Qt::HANDLE(visual), Qt::HANDLE(colormap));
+-//     } else {
+-//         app = new KRunnerApp;//(dpy, 0, 0);
+-//     }
+-
+-    int rc = app.exec();
+-    //delete app;
++    KRunnerApp *app = KRunnerApp::self();
++    app->disableSessionManagement(); // autostarted
++    int rc = app->exec();
++    delete app;
+     return rc;
+ }
+ 
+--- a/krunner/krunnerapp.h
++++ b/krunner/krunnerapp.h
+@@ -35,10 +35,7 @@
+     Q_CLASSINFO("D-Bus Interface", "org.kde.krunner.App")
+ 
+ public:
+-/*    KRunnerApp(Display *display,
+-                          Qt::HANDLE visual = 0,
+-                          Qt::HANDLE colormap = 0);*/
+-    KRunnerApp();
++    static KRunnerApp* self();
+     ~KRunnerApp();
+ 
+     void logout( KWorkSpace::ShutdownConfirm confirm, KWorkSpace::ShutdownType sdtype );
+@@ -48,9 +45,7 @@
+     virtual int newInstance();
+     SaverEngine& screensaver() { return m_saver; }
+ 
+-
+-    //UGLY
+-    static bool s_haveCompositeManager;
++    bool hasCompositeManager() const;
+ 
+ public Q_SLOTS:
+     //void showWindowList();
+@@ -74,6 +69,7 @@
+     void taskDialogFinished();
+ 
+ private:
++    KRunnerApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
+     void initialize();
+ 
+     KActionCollection *m_actionCollection;
+--- a/krunner/CMakeLists.txt
++++ b/krunner/CMakeLists.txt
+@@ -36,15 +36,17 @@
+ qt4_add_dbus_adaptor(krunner_SRCS ${kscreensaver_dbusXML} saverengine.h SaverEngine kscreensaveradaptor KScreenSaverAdaptor)
+ 
+ kde4_add_ui_files(krunner_SRCS runners/shell/shellOptions.ui)
+-kde4_add_executable(krunner ${krunner_SRCS})
++kde4_add_kdeinit_executable(krunner ${krunner_SRCS})
+ # needs qt3support for Q3ListView in lockdlg
+-target_link_libraries(krunner plasma kworkspace processui ${X11_Xrender_LIB} ${KDE4_KDEUI_LIBS} ${QT_QT3SUPPORT_LIBRARY} ${KDE4_KDE3SUPPORT_LIBRARY} )
++target_link_libraries(kdeinit_krunner plasma kworkspace processui ${X11_Xrender_LIB} ${KDE4_KDEUI_LIBS} ${QT_QT3SUPPORT_LIBRARY} ${KDE4_KDE3SUPPORT_LIBRARY} )
+ if(X11_Xss_LIB)
+-  target_link_libraries(krunner ${X11_Xss_LIB})
++  target_link_libraries(kdeinit_krunner ${X11_Xss_LIB})
+ endif(X11_Xss_LIB)
++target_link_libraries( krunner kdeinit_krunner )
+ 
+ add_subdirectory( lock )
+ 
++install(TARGETS kdeinit_krunner  DESTINATION ${LIB_INSTALL_DIR} )
+ install(TARGETS krunner DESTINATION ${BIN_INSTALL_DIR})
+ install(FILES krunner.desktop  DESTINATION  ${AUTOSTART_INSTALL_DIR})
+ install(FILES kscreensaversettings.kcfg  DESTINATION  ${KCFG_INSTALL_DIR})
+--- a/krunner/interface.cpp
++++ b/krunner/interface.cpp
+@@ -49,8 +49,6 @@
+ #include "collapsiblewidget.h"
+ #include "interfaceadaptor.h"
+ 
+-//#define FLASH_DIALOG 0
+-
+ // A little hack of a class to let us easily activate a match
+ 
+ class SearchMatch : public QListWidgetItem
+@@ -74,6 +72,11 @@
+             return m_action->isEnabled();
+         }
+ 
++        bool hasMatchOptions()
++        {
++            return m_action->runner()->hasMatchOptions();
++        }
++
+         void setAction(Plasma::SearchAction* action)
+         {
+             m_action = action;
+@@ -87,9 +90,24 @@
+             setDefault(m_default);
+         }
+ 
+-        Plasma::SearchAction* action()
++        QString toString()
++        {
++            return m_action->data().toString();
++        }
++
++        Plasma::SearchAction::Type actionType()
++        {
++            return m_action->type();
++        }
++
++        /*Plasma::SearchAction* action()
+         {
+             return m_action;
++        }*/
++
++        void createMatchOptions(QWidget* parent)
++        {
++            m_action->runner()->createMatchOptions(parent);
+         }
+ 
+         void setDefault( bool def ) {
+@@ -199,9 +217,9 @@
+     //FIXME: what size should we be?
+     resize(400, 250);
+ 
+-    setWidgetPalettes();
+-    connect( KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()),
+-             SLOT(setWidgetPalettes()) );
++    //setWidgetPalettes();
++    //connect(KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()),
++    //        SLOT(setWidgetPalettes()));
+ 
+     //TODO: how should we order runners, particularly ones loaded from plugins?
+     m_runners.append( new ShellRunner( this ) );
+@@ -210,12 +228,6 @@
+     m_runners += Plasma::AbstractRunner::loadRunners( this );
+ 
+     resetInterface();
+-
+-#ifdef FLASH_DIALOG
+-    QTimer* t = new QTimer(this);
+-    connect( t, SIGNAL(timeout()), this, SLOT(display()));
+-    t->start( 250 );
+-#endif
+ }
+ 
+ Interface::~Interface()
+@@ -228,8 +240,12 @@
+ {
+     m_searchTerm->setFocus();
+ 
+-    if ( !term.isEmpty() ) {
+-        m_searchTerm->setText( term );
++    if (!term.isEmpty()) {
++        m_searchTerm->setText(term);
++    }
++
++    if (!isVisible()) {
++        queueMatch();
+     }
+ 
+     KWindowSystem::setOnDesktop(winId(), KWindowSystem::currentDesktop());
+@@ -242,8 +258,6 @@
+     KDialog::centerOnScreen(this, screen);
+     show();
+     KWindowSystem::forceActiveWindow(winId());
+-
+-    match();
+ }
+ 
+ void Interface::switchUser()
+@@ -264,8 +278,8 @@
+     display();
+     m_header->setText(i18n("Switch users"));
+     m_header->setPixmap("user");
+-    m_context.setSearchTerm("SESSIONS");
+     m_defaultMatch = 0;
++    m_context.setSearchTerm("SESSIONS");
+     sessionrunner->match(&m_context);
+ 
+     foreach (Plasma::SearchAction *action, m_context.exactMatches()) {
+@@ -327,15 +341,22 @@
+         return;
+     }
+ 
+-    Plasma::SearchAction *action = match->action();
+-    m_optionsButton->setEnabled(action->runner()->hasMatchOptions());
+-
+-    if (!action->isEnabled()) {
++    if (!match->actionEnabled()) {
+         return;
+     }
+ 
+-    if (action->type() == Plasma::SearchAction::InformationalMatch) {
+-        m_searchTerm->setText(action->data().toString());
++    QString searchTerm = m_searchTerm->text();
++    if (!m_executions.contains(searchTerm)) {
++        m_executions << searchTerm;
++
++        //TODO: how many items should we remember exactly?
++        if (m_executions.size() > 100) {
++            m_executions.pop_front();
++        }
++    }
++
++    if (match->actionType() == Plasma::SearchAction::InformationalMatch) {
++        m_searchTerm->setText(match->toString());
+     } else {
+         //kDebug() << "match activated! " << match->text();
+         match->activate();
+@@ -353,6 +374,7 @@
+ 
+     QString term = m_searchTerm->text().trimmed();
+     if (!term.isEmpty()) {
++        m_defaultMatch = 0;
+         m_context.setSearchTerm(term);
+         m_context.addStringCompletions(m_executions);
+     }
+@@ -426,7 +448,7 @@
+         return;
+     }
+ 
+-    SearchMatch* match = dynamic_cast<SearchMatch*>(m_matchList->currentItem());
++    QListWidgetItem* match = m_matchList->currentItem();
+     if (!match) {
+         if (m_defaultMatch) {
+             match = m_defaultMatch;
+@@ -434,22 +456,8 @@
+             return;
+         }
+     }
+-    QString searchTerm = m_searchTerm->text();
+ 
+-    if (!m_executions.contains(searchTerm)) {
+-        m_executions << searchTerm;
+-
+-        //TODO: how many items should we remember exactly?
+-        if (m_executions.size() > 100) {
+-            m_executions.pop_front();
+-        }
+-    }
+-
+-    if (match && match->actionEnabled()) {
+-        matchActivated(match );
+-    } else if (m_defaultMatch) {
+-        matchActivated(m_defaultMatch);
+-    }
++    matchActivated(match);
+ }
+ 
+ void Interface::showOptions(bool show)
+@@ -457,7 +465,7 @@
+     //TODO: in the case where we are no longer showing options
+     //      should we have the runner delete it's options?
+     if (show) {
+-        if (!m_defaultMatch || !m_defaultMatch->action()->runner()->hasMatchOptions()) {
++        if (!m_defaultMatch || !m_defaultMatch->hasMatchOptions()) {
+             // in this case, there is nothing to show
+             return;
+         }
+@@ -474,7 +482,7 @@
+         //kDebug() << "set inner widget to " << m_defaultMatch->runner()->options();
+         delete m_optionsWidget;
+         m_optionsWidget = new QWidget(this);
+-        m_defaultMatch->action()->runner()->createMatchOptions(m_optionsWidget);
++        m_defaultMatch->createMatchOptions(m_optionsWidget);
+         m_optionsButton->setText( i18n( "Hide Options" ) );
+     } else {
+         delete m_optionsWidget;
+@@ -510,7 +518,7 @@
+         if (!m_defaultMatch) {
+             return;
+         }
+-        hasOptions = m_defaultMatch && m_defaultMatch->action()->runner()->hasMatchOptions();
++        hasOptions = m_defaultMatch && m_defaultMatch->hasMatchOptions();
+     }
+ 
+     m_optionsButton->setEnabled(hasOptions);
+--- a/krunner/krunnerdialog.h
++++ b/krunner/krunnerdialog.h
+@@ -42,7 +42,9 @@
+         void mousePressEvent( QMouseEvent *e );
+ 
+     private:
+-        Plasma::Svg* m_background;
++        void paintBackground(QPainter* painter, const QRect &exposedRect);
++        Plasma::Svg *m_background;
++        QPixmap *m_cachedBackground;
+ };
+ 
+ #endif
+--- a/krunner/runners/services/servicerunner.cpp
++++ b/krunner/runners/services/servicerunner.cpp
+@@ -87,7 +87,7 @@
+     action->setText(service->name());
+     action->setData(service->storageId());
+ 
+-    if (service->icon().isEmpty()) {
++    if (!service->icon().isEmpty()) {
+         action->setIcon(KIcon(service->icon()));
+     }
+ }
+--- a/krunner/krunner.desktop
++++ b/krunner/krunner.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=krunner
+ X-DBUS-StartupType=wait
+ Name=Command Runner
+ Name[ar]=منفذ الأمر
+ Name[bg]=Команда
++Name[ca]=Execució d'ordres
+ Name[csb]=Pòlét
+ Name[de]=Programmstarter
+ Name[el]=Εκτελεστής εντολών
+--- a/krunner/startupid.h
++++ b/krunner/startupid.h
+@@ -50,7 +50,7 @@
+         void finishKDEStartup();
+     protected:
+         KStartupInfo startup_info;
+-        QWidget* startup_widget;
++        WId startup_window;
+         QTimer update_timer;
+         QMap< KStartupInfoId, QString > startups; // QString == pixmap
+         KStartupInfoId current_startup;
+--- a/krunner/krunnerapp.cpp
++++ b/krunner/krunnerapp.cpp
+@@ -52,62 +52,63 @@
+ Display* dpy = 0;
+ Colormap colormap = 0;
+ Visual *visual = 0;
+-bool argbVisual = false;
+ 
+-bool checkComposite()
++void checkComposite()
+ {
++    // thanks to zack rusin and frederik for pointing me in the right direction
++    // for the following bits of X11 code
+     dpy = XOpenDisplay(0); // open default display
+     if (!dpy)
+     {
+         kError() << "Cannot connect to the X server" << endl;
+-        return true;
++        return;
+     }
+ 
+-    KRunnerApp::s_haveCompositeManager = KWindowSystem::compositingActive();
++    int screen = DefaultScreen(dpy);
++    int eventBase, errorBase;
+ 
+-    if (KRunnerApp::s_haveCompositeManager)
++    if (XRenderQueryExtension(dpy, &eventBase, &errorBase))
+     {
+-        int screen = DefaultScreen(dpy);
+-        int eventBase, errorBase;
+-
+-        if (XRenderQueryExtension(dpy, &eventBase, &errorBase))
++        int nvi;
++        XVisualInfo templ;
++        templ.screen  = screen;
++        templ.depth   = 32;
++        templ.c_class = TrueColor;
++        XVisualInfo *xvi = XGetVisualInfo(dpy, VisualScreenMask |
++                                                VisualDepthMask |
++                                                VisualClassMask,
++                                            &templ, &nvi);
++        for (int i = 0; i < nvi; ++i)
+         {
+-            int nvi;
+-            XVisualInfo templ;
+-            templ.screen  = screen;
+-            templ.depth   = 32;
+-            templ.c_class = TrueColor;
+-            XVisualInfo *xvi = XGetVisualInfo(dpy, VisualScreenMask |
+-                                                   VisualDepthMask |
+-                                                   VisualClassMask,
+-                                              &templ, &nvi);
+-            for (int i = 0; i < nvi; ++i)
++            XRenderPictFormat *format = XRenderFindVisualFormat(dpy,
++                                                                xvi[i].visual);
++            if (format->type == PictTypeDirect && format->direct.alphaMask)
+             {
+-                XRenderPictFormat *format = XRenderFindVisualFormat(dpy,
+-                                                                    xvi[i].visual);
+-                if (format->type == PictTypeDirect && format->direct.alphaMask)
+-                {
+-                    visual = xvi[i].visual;
+-                    colormap = XCreateColormap(dpy, RootWindow(dpy, screen),
+-                                               visual, AllocNone);
+-                    argbVisual = true;
+-                    break;
+-                }
++                visual = xvi[i].visual;
++                colormap = XCreateColormap(dpy, RootWindow(dpy, screen),
++                                            visual, AllocNone);
++                break;
+             }
+         }
+ 
+-        KRunnerApp::s_haveCompositeManager = argbVisual;
++    }
++}
++
++KRunnerApp* KRunnerApp::self()
++{
++    if (!kapp) {
++        checkComposite();
++        return new KRunnerApp(dpy, visual ? Qt::HANDLE(visual) : 0, colormap ? Qt::HANDLE(colormap) : 0);
+     }
+ 
+-    kDebug() << "KRunnerApp::s_haveCompositeManager: " << KRunnerApp::s_haveCompositeManager;
+-    return true;
++    return qobject_cast<KRunnerApp*>(kapp);
+ }
+ 
+-KRunnerApp::KRunnerApp()
+-    : RestartingApplication(checkComposite() ? dpy : dpy, dpy ? Qt::HANDLE(visual) : 0, dpy ? Qt::HANDLE(colormap) : 0),
++KRunnerApp::KRunnerApp(Display *display, Qt::HANDLE visual, Qt::HANDLE colormap)
++    : RestartingApplication(display, visual, colormap),
+       m_interface(0),
+       m_tasks(0),
+-      m_startupId( NULL )
++      m_startupId(NULL)
+ {
+     initialize();
+ }
+@@ -320,4 +321,9 @@
+     //return 0;
+ }
+ 
++bool KRunnerApp::hasCompositeManager() const
++{
++    return colormap && KWindowSystem::compositingActive();
++}
++
+ #include "krunnerapp.moc"
+--- a/kmenuedit/kmenuedit.desktop
++++ b/kmenuedit/kmenuedit.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kmenuedit
+ Icon=kmenuedit
+ X-DocPath=kmenuedit/index.html
+@@ -49,7 +48,7 @@
+ Name[ne]=मेनु सम्पादक
+ Name[nl]=Menubewerker
+ Name[nn]=Menyredigering
+-Name[pa]=ਮੇਨੂ ਸੰਪਾਦਕ
++Name[pa]=ਮੇਨੂ ਐਡੀਟਰ
+ Name[pl]=Edytor menu
+ Name[pt]=Editor de Menus
+ Name[pt_BR]=Editor de Menus
+--- a/libs/kworkspace/dmctl.cpp
++++ b/libs/kworkspace/dmctl.cpp
+@@ -215,7 +215,7 @@
+ 		cmd.append( "shutdown\t" );
+ 		cmd.append( shutdownType == KWorkSpace::ShutdownTypeReboot ?
+ 		            "reboot\t" : "halt\t" );
+-		if (!bootOption.isNull())
++		if (!bootOption.isEmpty())
+ 			cmd.append( "=" ).append( bootOption.toLocal8Bit() ).append( "\t" );
+ 		cmd.append( shutdownMode == KWorkSpace::ShutdownModeInteractive ?
+ 		            "ask\n" :
+--- a/libs/solid/control/solidnetworkmanager.desktop
++++ b/libs/solid/control/solidnetworkmanager.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=SolidNetworkManager
+ 
+@@ -9,6 +8,7 @@
+ Comment[ca]=Dorsal de gestió de xarxa
+ Comment[de]=Backend zur Netzwerkverwaltung
+ Comment[el]=Σύστημα διαχείρισης δικτύου
++Comment[eo]=Retadministra plenumilo
+ Comment[et]=Võrgu haldamise taustaprogramm
+ Comment[fa]=پایانۀ پشتیبانی مدیریت شبکه
+ Comment[he]=ממשק ניהול רשת
+@@ -21,7 +21,7 @@
+ Comment[ne]=सञ्जाल व्यवस्थापन ब्याकइन्ड
+ Comment[nl]=Netwerkbeheer backend
+ Comment[nn]=Motor for nettverkshandtering
+-Comment[pa]=ਨੈਟਵਰਕ ਪਰਬੰਧ ਬੈਕਐਂਡ
++Comment[pa]=ਨੈੱਟਵਰਕ ਮੈਨਿਜਮੈਂਟ ਬੈਕਐਂਡ
+ Comment[pt]=Infra-Estrutura de Gestão da Rede
+ Comment[pt_BR]=Infra-estrutura do Gerenciamento de Rede
+ Comment[sr]=Позадина за управљање мрежом
+--- a/libs/solid/control/solidpowermanager.desktop
++++ b/libs/solid/control/solidpowermanager.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=SolidPowerManager
+ 
+@@ -9,6 +8,7 @@
+ Comment[ca]=Dorsal de gestió d'energia
+ Comment[de]=Backend zur Energieverwaltung
+ Comment[el]=Σύστημα διαχείρισης ενέργειας
++Comment[eo]=kurentadministra plenumilo
+ Comment[es]=Motor de la gestión de energía
+ Comment[et]=Voolutarbe haldamise taustaprogramm
+ Comment[fa]=پایانۀ پشتیبانی مدیریت توان
+@@ -22,7 +22,7 @@
+ Comment[ne]=शक्ति व्यवस्थापन ब्याकइन्ड
+ Comment[nl]=Energiebeheer backend
+ Comment[nn]=Motor for straumstyring
+-Comment[pa]=ਊਰਜਾ ਪਰਬੰਧ ਬੈਕਐਂਡ
++Comment[pa]=ਪਾਵਰ ਮੈਨਿਜਮੈਂਟ ਬੈਕਐਂਡ
+ Comment[pt]=Infra-Estrutura de Gestão da Energia
+ Comment[pt_BR]=Infra-estrutura do Gerenciamento de Energia
+ Comment[sr]=Позадина за управљање енергијом
+--- a/libs/solid/control/solidbluetoothmanager.desktop
++++ b/libs/solid/control/solidbluetoothmanager.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=SolidBluetoothManager
+ 
+@@ -9,6 +8,7 @@
+ Comment[ca]=Dorsal de gestió de bluetooth
+ Comment[de]=Backend zur Bluetooth-Verwaltung
+ Comment[el]=Σύστημα διαχείρισης Bluetooth
++Comment[eo]=Bluetooth-administra plenumilo
+ Comment[et]=Bluetoothi haldamise taustaprogramm
+ Comment[fa]=پایانۀ پشتیبانی مدیریت بلوتوث
+ Comment[he]=ממשק ניהול Bluetooth
+@@ -22,7 +22,7 @@
+ Comment[ne]=ब्लुटुथ व्यवस्थापन ब्याकइन्ड
+ Comment[nl]=Bluetooth-beheer backend
+ Comment[nn]=Motor for Bluetooth-handtering
+-Comment[pa]=ਬਲਿਊਟੁੱਥ ਪਰਬੰਧ ਬੈਕਐਂਡ
++Comment[pa]=ਬਲਿਊਟੁੱਥ ਮੈਨਿਜਮੈਂਟ ਬੈਕਐਂਡ
+ Comment[pt]=Infra-Estrutura de Gestão do Bluetooth
+ Comment[pt_BR]=Infra-estrutura do Gerenciamento de Bluetooth
+ Comment[sr]=Позадина за управљање блутутом
+--- a/libs/solid/control/backends/fakebluetooth/solid_fakebluetooth.desktop
++++ b/libs/solid/control/backends/fakebluetooth/solid_fakebluetooth.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SolidBluetoothManager
++X-KDE-ServiceTypes=SolidBluetoothManager
+ X-KDE-Library=solid_fakebluetooth
+ InitialPreference=10
+ Icon=system
+@@ -12,6 +11,7 @@
+ Name[csb]=Falszëwi Bluetooth
+ Name[de]=Bluetooth (Dummy)
+ Name[el]=Πλαστό Bluetooth
++Name[eo]=Ŝajnigita Bluetooth
+ Name[et]=Liba-Bluetooth
+ Name[fa]=بلوتوث جعلی
+ Name[he]=‏Bluetooth מזוייף
+@@ -40,6 +40,7 @@
+ Comment[csb]=Sprôwianié falszëwim Bluetoothã
+ Comment[de]=Bluetooth-Verwaltung (Dummy)
+ Comment[el]=Διαχείριση πλαστού Bluetooth
++Comment[eo]=Administrilo de ŝajnigita Bluetooth
+ Comment[et]=Liba-Bluetoothi haldur
+ Comment[fa]=مدیریت بلوتوث جعلی
+ Comment[he]=ניהול Bluetooth מזוייף
+@@ -54,7 +55,7 @@
+ Comment[ne]=नक्कली ब्लुटुथ व्यवस्थापन
+ Comment[nl]=Nep Bluetooth-beheer
+ Comment[nn]=Falsk Bluetooth-handtering
+-Comment[pa]=ਫ਼ਰਜ਼ੀ ਬਲਿਊਟੁੱਥ ਪਰਬੰਧ
++Comment[pa]=ਫ਼ਰਜ਼ੀ ਬਲਿਊਟੁੱਥ ਮੈਨਿਜਮੈਂਟ
+ Comment[pt]=Gestão do Bluetooth Falso
+ Comment[pt_BR]=Gerenciamento de Bluetooth Falso
+ Comment[sr]=Управљање лажним блутутом
+--- a/libs/solid/control/backends/fakenet/solid_fakenet.desktop
++++ b/libs/solid/control/backends/fakenet/solid_fakenet.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=SolidNetworkManager
++X-KDE-ServiceTypes=SolidNetworkManager
+ X-KDE-Library=solid_fakenet
+ InitialPreference=10
+ Icon=system
+@@ -11,6 +10,7 @@
+ Name[csb]=Falszëwô séc
+ Name[de]=Netzwerk (Dummy)
+ Name[el]=Πλαστό δίκτυο
++Name[eo]=Ŝajnigita reto
+ Name[et]=Liba-võrk
+ Name[fa]=شبکۀ جعلی
+ Name[he]=רשת מזוייפת
+@@ -39,6 +39,7 @@
+ Comment[csb]=Sprôwianié falszëwą sécą
+ Comment[de]=Netzwerkverwaltung (Dummy)
+ Comment[el]=Διαχειριστής πλαστού δικτύου
++Comment[eo]=Administrilo de ŝajnigita reto
+ Comment[et]=Liba-võrgu haldur
+ Comment[fa]=مدیریت شبکۀ جعلی
+ Comment[he]=ניהול רשת מזוייף
+@@ -53,7 +54,7 @@
+ Comment[ne]=नक्कली सञ्जाल व्यवस्थापन
+ Comment[nl]=Nep netwerkbeheer
+ Comment[nn]=Falskt nettverk-handtering
+-Comment[pa]=ਫ਼ਰਜ਼ੀ ਨੈੱਟਵਰਕ ਪਰਬੰਧ
++Comment[pa]=ਫ਼ਰਜ਼ੀ ਨੈੱਟਵਰਕ ਮੈਨਿਜਮੈਂਟ
+ Comment[pt]=Gestão da Rede Falsa
+ Comment[pt_BR]=Gerenciamento de Rede Falsa
+ Comment[sr]=Управљање лажном мрежом
+--- a/libs/kdm/kgreet_winbind.h
++++ b/libs/kdm/kgreet_winbind.h
+@@ -35,7 +35,7 @@
+ class KLineEdit;
+ class KSimpleConfig;
+ class QLabel;
+-class K3ProcIO;
++class KProcess;
+ 
+ class KWinbindGreeter : public QObject, public KGreeterPlugin {
+ 	Q_OBJECT
+@@ -68,9 +68,8 @@
+ 	void slotLoginLostFocus();
+ 	void slotChangedDomain( const QString &dom );
+ 	void slotActivity();
+-        void slotStartDomainList();
+-        void slotReadDomainList();
+-        void slotEndDomainList();
++	void slotStartDomainList();
++	void slotEndDomainList();
+ 
+   private:
+ 	void setActive( bool enable );
+@@ -83,9 +82,8 @@
+ 	KLineEdit *passwdEdit, *passwd1Edit, *passwd2Edit;
+ 	KSimpleConfig *stsFile;
+ 	QString fixedDomain, fixedUser, curUser;
+-	QStringList allUsers, mDomainListing;
+-	K3ProcIO* m_domainLister;
+-        QTimer mDomainListTimer;
++	QStringList allUsers;
++	KProcess* m_domainLister;
+ 
+ 	Function func;
+ 	Context ctx;
+--- a/libs/kdm/kgreet_winbind.cpp
++++ b/libs/kdm/kgreet_winbind.cpp
+@@ -32,7 +32,7 @@
+ #include <kcombobox.h>
+ #include <klineedit.h>
+ #include <kuser.h>
+-#include <k3procio.h>
++#include <kprocess.h>
+ 
+ #include <QRegExp>
+ #include <QLayout>
+@@ -48,7 +48,7 @@
+ public:
+ 	KDMPasswordEdit( QWidget *parent ) : KLineEdit( parent )
+ 	{
+-		setPasswordMode(true);
++		setPasswordMode( true );
+ 	}
+ 	KDMPasswordEdit( bool em , QWidget *parent ) : KLineEdit( parent )
+ 	{
+@@ -104,7 +104,6 @@
+ 	domainCombo = 0;
+ 	loginEdit = 0;
+ 	passwdEdit = passwd1Edit = passwd2Edit = 0;
+-	m_domainLister = 0;
+ 	if (ctx == ExUnlock || ctx == ExChangeTok)
+ 		splitEntity( KUser().loginName(), fixedDomain, fixedUser );
+ 	else
+@@ -140,9 +139,8 @@
+ 			connect( loginEdit, SIGNAL(editingFinished()), SLOT(slotActivity()) );
+ 			connect( loginEdit, SIGNAL(textChanged( const QString & )), SLOT(slotActivity()) );
+ 			connect( loginEdit, SIGNAL(selectionChanged()), SLOT(slotActivity()) );
+-			connect(&mDomainListTimer, SIGNAL(timeout()), SLOT(slotStartDomainList()));
+ 			domainCombo->addItems( staticDomains );
+-			QTimer::singleShot(0, this, SLOT(slotStartDomainList()));
++			QTimer::singleShot( 0, this, SLOT(slotStartDomainList()) );
+ 		} else if (ctx != Login && ctx != Shutdown && grid) {
+ 			domainLabel = new QLabel( i18n("Domain:"), parent );
+ 			grid->addWidget( domainLabel, line, 0 );
+@@ -168,7 +166,7 @@
+ 			                          i18n("&Password:") :
+ 			                          i18n("Current &password:"),
+ 			                          parent );
+-                        passwdLabel->setBuddy( passwdEdit );
++			passwdLabel->setBuddy( passwdEdit );
+ 			grid->addWidget( passwdLabel, line, 0 );
+ 			grid->addWidget( passwdEdit, line++, 1 );
+ 		}
+@@ -349,14 +347,14 @@
+ 			                          KGreeterPluginHandler::IsSecret );
+ 			return;
+ 		} else if (pr.indexOf( QRegExp( "\\b(re-?(enter|type)|again|confirm|repeat)\\b",
+-		                             Qt::CaseInsensitive ) ) >= 0)
++		                                Qt::CaseInsensitive ) ) >= 0)
+ 			exp = 3;
+ 		else if (pr.indexOf( QRegExp( "\\bnew\\b", Qt::CaseInsensitive ) ) >= 0)
+ 			exp = 2;
+ 		else {
+ 			handler->gplugMsgBox( QMessageBox::Critical,
+ 			                      i18n("Unrecognized prompt \"%1\"",
+-			                        prompt ) );
++			                           prompt ) );
+ 			handler->gplugReturnText( 0, 0 );
+ 			exp = -1;
+ 			return;
+@@ -547,62 +545,40 @@
+ void
+ KWinbindGreeter::slotStartDomainList()
+ {
+-    mDomainListTimer.stop();
+-    mDomainListing.clear();
+-
+-    m_domainLister = new K3ProcIO;
+-    connect(m_domainLister, SIGNAL(readReady(K3ProcIO*)), SLOT(slotReadDomainList()));
+-    connect(m_domainLister, SIGNAL(processExited(K3Process*)), SLOT(slotEndDomainList()));
+-
+-    (*m_domainLister) << "wbinfo" << "--own-domain" << "--trusted-domains";
+-    m_domainLister->setComm (K3Process::Stdout);
+-    m_domainLister->start();
+-}
+-
+-void
+-KWinbindGreeter::slotReadDomainList()
+-{
+-    QString line;
+-
+-    while ( m_domainLister->readln( line ) != -1 ) {
+-        mDomainListing.append(line);
+-    }
++	m_domainLister = new KProcess( this );
++	(*m_domainLister) << "wbinfo" << "--own-domain" << "--trusted-domains";
++	m_domainLister->setOutputChannelMode( KProcess::OnlyStdoutChannel );
++	connect( m_domainLister, SIGNAL(finished( int, QProcess::ExitStatus )),
++	         SLOT(slotEndDomainList()) );
++	m_domainLister->start();
+ }
+ 
+ void
+ KWinbindGreeter::slotEndDomainList()
+ {
+-    delete m_domainLister;
+-    m_domainLister = 0;
+-
+-    QStringList domainList;
+-    domainList = staticDomains;
+-
+-    for (QStringList::const_iterator it = mDomainListing.begin();
+-         it != mDomainListing.end(); ++it) {
++	QStringList domainList;
+ 
+-        if (!domainList.contains(*it))
+-            domainList.append(*it);
+-    }
+-
+-    QString current = domainCombo->currentText();
+-
+-    for (int i = 0; i < domainList.count(); ++i) {
+-        if (i < domainCombo->count())
+-            domainCombo->setItemText(i, domainList[i]);
+-        else
+-            domainCombo->insertItem(i, domainList[i]);
+-    }
+-
+-    while (domainCombo->count() > domainList.count())
+-        domainCombo->removeItem(domainCombo->count()-1);
+-
+-    domainCombo->setCurrentItem( current );
+-
+-    if (domainCombo->currentText() != current)
+-        domainCombo->setCurrentItem( defaultDomain );
++	while (!m_domainLister->atEnd()) {
++		QString dom = m_domainLister->readLine();
++		dom.chop( 1 );
++		if (!staticDomains.contains( dom ))
++			domainList.append( dom );
++	}
++
++	delete m_domainLister;
++
++	for (int i = domainCombo->count(), min = staticDomains.count(); --i >= min; ) {
++		int dli = domainList.indexOf( domainCombo->itemText( i ) );
++		if (dli < 0) {
++			if (i == domainCombo->currentIndex())
++				domainCombo->setCurrentItem( defaultDomain );
++			domainCombo->removeItem( i );
++		} else
++			domainList.removeAt( dli );
++	}
++	domainCombo->addItems( domainList );
+ 
+-    mDomainListTimer.start(5 * 1000);
++	QTimer::singleShot( 5 * 1000, this, SLOT(slotStartDomainList()) );
+ }
+ 
+ // factory
+--- a/libs/ksysguard/tests/processtest.cpp
++++ b/libs/ksysguard/tests/processtest.cpp
+@@ -3,7 +3,8 @@
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/tests/processtest.h
++++ b/libs/ksysguard/tests/processtest.h
+@@ -1,9 +1,10 @@
+ /*  This file is part of the KDE project
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+-    This library is free software; you can redistribute it and/or
++     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/tests/guitest.cpp
++++ b/libs/ksysguard/tests/guitest.cpp
+@@ -3,7 +3,8 @@
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/tests/guitest.h
++++ b/libs/ksysguard/tests/guitest.h
+@@ -3,7 +3,8 @@
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/processcore/process.cpp
++++ b/libs/ksysguard/processcore/process.cpp
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- /dev/null
++++ b/libs/ksysguard/processcore/processes_base_p.cpp
+@@ -0,0 +1,22 @@
++/*  This file is part of the KDE project
++    
++    Copyright (C) 2007 John Tapsell <tapsell at kde.org>
++
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
++
++    This library is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
++
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
++
++*/
++
++#include "processes_base_p.moc"
+--- a/libs/ksysguard/processcore/processes_freebsd_p.cpp
++++ b/libs/ksysguard/processcore/processes_freebsd_p.cpp
+@@ -3,7 +3,8 @@
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/processcore/processes_local_p.cpp
++++ b/libs/ksysguard/processcore/processes_local_p.cpp
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -17,7 +19,6 @@
+ 
+ */
+ 
+-
+ #if defined __linux__
+ #include "processes_linux_p.cpp"
+ #elif defined __FreeBSD__ || defined __DragonFly__
+--- a/libs/ksysguard/processcore/processes_openbsd_p.cpp
++++ b/libs/ksysguard/processcore/processes_openbsd_p.cpp
+@@ -3,7 +3,8 @@
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+--- a/libs/ksysguard/processcore/processes_remote_p.cpp
++++ b/libs/ksysguard/processcore/processes_remote_p.cpp
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -19,9 +21,13 @@
+ #include "processes_remote_p.h"
+ #include "process.h"
+ 
++#include <QString>
++#include <QSet>
++#include <QTimer>
++
+ #include <klocale.h>
++#include <kdebug.h>
+ 
+-#include <QSet>
+ 
+ 
+ 
+@@ -32,39 +38,144 @@
+   class ProcessesRemote::Private
+   {
+     public:
+-      Private() {;}
++      Private() {havePsInfo = false; pidColumn = 1; 
++	      ppidColumn= ppidColumn = nameColumn = uidColumn = gidColumn = 
++	      statusColumn = userColumn = systemColumn = niceColumn = 
++	      vmSizeColumn = vmRSSColumn = loginColumn = commandColumn =
++	      tracerPidColumn = ttyColumn = ioprioClassColumn = ioprioColumn =
++	      vmURSSColumn = -1;
++              usedMemory = freeMemory;}
+       ~Private() {;}
+       QString host;
++      QList<QByteArray> lastAnswer;
++      QSet<long> pids;
++      QHash<long, QList<QByteArray> > processByPid;
++
++      bool havePsInfo;
++      int pidColumn;
++      int ppidColumn;
++      int tracerPidColumn;
++      int nameColumn;
++      int uidColumn;
++      int gidColumn;
++      int statusColumn;
++      int userColumn;
++      int systemColumn;
++      int niceColumn;
++      int vmSizeColumn;
++      int vmRSSColumn;
++      int vmURSSColumn;
++      int loginColumn;
++      int commandColumn;
++      int ioprioClassColumn;
++      int ioprioColumn;
++      int ttyColumn;
++
++      int numColumns;
++
++      long freeMemory;
++      long usedMemory;
++
+     };
+ ProcessesRemote::ProcessesRemote(const QString &hostname) : d(new Private())
+ {
+   d->host = hostname;
++  QTimer::singleShot(0, this, SLOT(setup()));
++}
++
++void ProcessesRemote::setup() {
++  emit runCommand("mem/physical/used", (int)UsedMemory);
++  emit runCommand("mem/physical/free", (int)FreeMemory);
++  emit runCommand("ps?", (int)PsInfo);
++  emit runCommand("ps", (int)Ps);
+ }
+ 
+ 
+ long ProcessesRemote::getParentPid(long pid) {
+-    return 0;
++    if(!d->processByPid.contains(pid)) {
++        kDebug() << "Parent pid requested for pid that we do not have info on " << pid;
++        return 0;
++    }
++    if(d->ppidColumn == -1) {
++        kDebug() << "ppid column not known ";
++        return 0;
++    }
++    return d->processByPid[pid].at(d->ppidColumn).toLong();
+ }
+ bool ProcessesRemote::updateProcessInfo( long pid, Process *process)
+ {
+-    return false;
++    Q_CHECK_PTR(process);
++    if(!d->processByPid.contains(pid)) {
++	kDebug() << "update request for pid that we do not have info on " << pid;
++        return false;
++    }
++    QList<QByteArray> p = d->processByPid[pid];
++
++    if(d->nameColumn!= -1) process->name = p.at(d->nameColumn);
++    if(d->uidColumn!= -1) process->uid = p.at(d->uidColumn).toLong();
++    if(d->gidColumn!= -1) process->gid = p.at(d->gidColumn).toLong();
++    if(d->statusColumn!= -1) {
++	    switch( p.at(d->statusColumn)[0] ) {
++		    case 's':
++			    process->status = Process::Sleeping;
++			    break;
++		    case 'r':
++			    process->status = Process::Running;
++			    break;
++	    }
++    }
++    if(d->userColumn!= -1) process->userTime = p.at(d->userColumn).toLong();
++    if(d->systemColumn!= -1) process->sysTime = p.at(d->systemColumn).toLong();
++    if(d->niceColumn!= -1) process->niceLevel = p.at(d->niceColumn).toLong();
++    if(d->vmSizeColumn!= -1) process->vmSize = p.at(d->vmSizeColumn).toLong();
++    if(d->vmRSSColumn!= -1) process->vmRSS = p.at(d->vmRSSColumn).toLong();
++    if(d->vmURSSColumn!= -1) process->vmURSS = p.at(d->vmURSSColumn).toLong();
++    if(d->loginColumn!= -1) process->login = QString::fromUtf8(p.at(d->loginColumn).data());
++    if(d->commandColumn!= -1) process->command = QString::fromUtf8(p.at(d->commandColumn).data());
++    if(d->tracerPidColumn!= -1) process->tracerpid = p.at(d->tracerPidColumn).toLong();
++    if(d->vmURSSColumn!= -1) process->vmURSS = p.at(d->vmURSSColumn).toLong();
++    if(d->ttyColumn!= -1) process->tty = p.at(d->ttyColumn);
++    if(d->ioprioColumn!= -1) process->ioniceLevel = p.at(d->ioprioColumn).toInt();
++    if(d->ioprioClassColumn!= -1) process->ioPriorityClass = (KSysGuard::Process::IoPriorityClass)(p.at(d->ioprioClassColumn).toInt());
++
++    return true;
+ }
+ 
++void ProcessesRemote::updateAllProcesses() 
++{
++    if(!d->havePsInfo)
++    	emit runCommand("ps?", (int)PsInfo);
++    emit runCommand("ps", (int)Ps);
++}
+ QSet<long> ProcessesRemote::getAllPids( )
+ {
+-    QSet<long> pids;
+-    return pids;
++    d->pids.clear();
++    d->processByPid.clear();
++    foreach(QByteArray process, d->lastAnswer) {
++        QList<QByteArray> info = process.split('\t');
++	if(info.size() == d->numColumns) {
++		int pid =  info.at(d->pidColumn).toLong();
++		Q_ASSERT(! d->pids.contains(pid));
++		d->pids << pid;
++		d->processByPid[pid] = info;
++	}
++    }
++    return d->pids;
+ }
+ 
+ bool ProcessesRemote::sendSignal(long pid, int sig) {
+-    return false;
++	//TODO run the proper command for all these functions below
++    emit runCommand("kill " + QString::number(pid) + " " + QString::number(sig), (int)Kill);
++    return true;
+ }
+ bool ProcessesRemote::setNiceness(long pid, int priority) {
+-    return false;
++    emit runCommand("setpriority " + QString::number(pid) + " " + QString::number(priority), (int)Renice);
++    return true;
+ }
+ 
+ bool ProcessesRemote::setIoNiceness(long pid, int priorityClass, int priority) {
+-    return false; //Not yet supported
++    emit runCommand("ionice " + QString::number(pid) + " " + QString::number(priorityClass) + " " + QString::number(priority), (int)Ionice);
++    return true;
+ }
+ 
+ bool ProcessesRemote::setScheduler(long pid, int priorityClass, int priority) {
+@@ -72,19 +183,85 @@
+ }
+ 
+ bool ProcessesRemote::supportsIoNiceness() {
+-    return false;
++    return true;
+ }
+ 
+ long long ProcessesRemote::totalPhysicalMemory() {
+-    return 0;
++    return d->usedMemory + d->freeMemory;
+ }
+ long ProcessesRemote::numberProcessorCores() {
+     return 0;
+ }
+ 
++void ProcessesRemote::answerReceived( int id, const QList<QByteArray>& answer ) {
++    switch (id) {
++        case PsInfo: {
++            if(answer.isEmpty()) return; //Invalid data
++            QList<QByteArray> info = answer.at(0).split('\t');
++	    d->numColumns = info.size();
++	    for(int i =0; i < d->numColumns; i++) {
++                if(info[i] == "Name")
++			d->nameColumn = i;
++		else if(info[i] == "PID")
++			d->pidColumn = i;
++		else if(info[i] == "PPID")
++			d->ppidColumn = i;
++		else if(info[i] == "UID")
++			d->uidColumn = i;
++		else if(info[i] == "GID")
++			d->gidColumn = i;
++		else if(info[i] == "TracerPID")
++			d->tracerPidColumn = i;
++		else if(info[i] == "Status")
++			d->statusColumn = i;
++		else if(info[i] == "User Time")
++			d->userColumn = i;
++		else if(info[i] == "System Time")
++			d->systemColumn = i;
++		else if(info[i] == "Nice")
++			d->niceColumn = i;
++		else if(info[i] == "VmSize")
++			d->vmSizeColumn = i;
++		else if(info[i] == "VmRss")
++			d->vmRSSColumn = i;
++		else if(info[i] == "VmURss")
++			d->vmURSSColumn = i;
++		else if(info[i] == "Login")
++			d->loginColumn = i;
++		else if(info[i] == "TTY")
++			d->ttyColumn = i;
++		else if(info[i] == "Command")
++			d->commandColumn = i;
++		else if(info[i] == "IO Priority Class")
++			d->ioprioClassColumn = i;
++		else if(info[i] == "IO Priority")
++			d->ioprioColumn = i;
++	    }
++	    d->havePsInfo = true;
++	    break;
++	}
++        case Ps:
++	    d->lastAnswer = answer;
++	    if(!d->havePsInfo) return;  //Not setup yet.  Should never happen
++	    emit processesUpdated();
++	case FreeMemory:
++            if(answer.isEmpty()) return; //Invalid data
++	    d->freeMemory = answer[0].toLong();
++	    break;
++	case UsedMemory:
++            if(answer.isEmpty()) return; //Invalid data
++	    d->usedMemory = answer[0].toLong();
++	    break;
++    }
++
++}
++
+ ProcessesRemote::~ProcessesRemote()
+ {
+     delete d;
+ }
+ 
+ }
++
++#include "processes_remote_p.moc"
++
+--- a/libs/ksysguard/processcore/process.h
++++ b/libs/ksysguard/processcore/process.h
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -49,6 +51,7 @@
+          */
+         Process *parent;
+ 
++	QString login; ///The user login name.  Only used for processes on remote machines.  Otherwise use uid to get the name
+         long long uid; ///The user id that the process is running as
+         long long euid; ///The effective user id that the process is running as
+         long long suid; ///The set user id that the process is running as
+--- a/libs/ksysguard/processcore/processes_base_p.h
++++ b/libs/ksysguard/processcore/processes_base_p.h
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -14,12 +16,14 @@
+     along with this library; see the file COPYING.LIB.  If not, write to
+     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
++
+ */
+ 
+ #ifndef PROCESSES_BASE_P_H
+ #define PROCESSES_BASE_P_H
+ 
+ #include <QSet>
++#include <QObject>
+ 
+ namespace KSysGuard
+ {
+@@ -33,8 +37,9 @@
+      *
+      * @author John Tapsell <tapsell at kde.org>
+      */
+-    class AbstractProcesses 
++    class AbstractProcesses : public QObject
+     {
++      Q_OBJECT
+ 
+       public:
+ 
+@@ -117,6 +122,16 @@
+ 	 *  This is fast (just a system call) */
+ 	virtual long numberProcessorCores() = 0;
+ 
++	/**
++	 *  Get all the current process information from the machine.  When done, emit updateAllProcesses().
++	 */
++	virtual void updateAllProcesses() = 0;
++
++      Q_SIGNALS:
++	/**
++	 *  This is emitted when the processes have been updated, and the view should be refreshed
++	 */
++        void processesUpdated();
+ 
+     };
+ }
+--- a/libs/ksysguard/processcore/processes_linux_p.cpp
++++ b/libs/ksysguard/processcore/processes_linux_p.cpp
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -14,6 +16,7 @@
+     along with this library; see the file COPYING.LIB.  If not, write to
+     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
++
+ */
+ 
+ #include "processes_local_p.h"
+--- a/libs/ksysguard/processcore/processes_local_p.h
++++ b/libs/ksysguard/processcore/processes_local_p.h
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -14,6 +16,7 @@
+     along with this library; see the file COPYING.LIB.  If not, write to
+     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
++
+ */
+ 
+ #ifndef PROCESSES_LOCAL_H_
+@@ -46,6 +49,7 @@
+ 	virtual bool setIoNiceness(long pid, int priorityClass, int priority);
+ 	virtual bool supportsIoNiceness();
+ 	virtual long numberProcessorCores() { return sysconf(_SC_NPROCESSORS_ONLN); } //This should work on any posix system
++	virtual void updateAllProcesses() { emit processesUpdated(); } //For local machine, there is no delay
+ 
+       private:
+ 	/**
+--- a/libs/ksysguard/processcore/processes_remote_p.h
++++ b/libs/ksysguard/processcore/processes_remote_p.h
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -28,6 +30,7 @@
+      * This is used to connect to a remote host
+      */
+     class ProcessesRemote : public AbstractProcesses {
++      Q_OBJECT
+       public:
+ 	ProcessesRemote(const QString &hostname);
+ 	virtual ~ProcessesRemote();
+@@ -41,6 +44,25 @@
+ 	virtual bool setIoNiceness(long pid, int priorityClass, int priority);
+ 	virtual bool supportsIoNiceness();
+ 	virtual long numberProcessorCores();
++	virtual void updateAllProcesses();
++
++
++      Q_SIGNALS:
++	/** For a remote machine, we rely on being able to communicate with ksysguardd.
++	 *  This must be dealt with by the program including this widget.  It must listen to our
++	 *  'runCommand' signal, and run the given command, with the given id. */
++	void runCommand(const QString &command, int id);
++
++      public Q_SLOTS:
++	/** For a remote machine, we rely on being able to communicate with ksysguardd.
++	 *  The programing using this must call this slot when an answer is received from ksysguardd,
++	 *  in response to a runCommand request.  The id identifies the answer */
++	void answerReceived( int id, const QList<QByteArray>& answer );
++	/** Called soon after */
++	void setup();
++
++      protected:
++	enum { PsInfo, Ps, UsedMemory, FreeMemory, Kill, Renice, Ionice };
+ 
+       private:
+ 	/**
+--- a/libs/ksysguard/processcore/processes.cpp
++++ b/libs/ksysguard/processcore/processes.cpp
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -14,6 +16,7 @@
+     along with this library; see the file COPYING.LIB.  If not, write to
+     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
++
+ */
+ 
+ #include "processes.h"
+@@ -85,8 +88,10 @@
+         Processes *processes = d2->processesRemote.value(host, NULL);
+         if( !processes ) {
+             //connect to it
+-	    processes = new Processes( new ProcessesRemote(host) );
++	    ProcessesRemote *remote = new ProcessesRemote(host);
++	    processes = new Processes( remote );
+             d2->processesRemote.insert(host, processes);
++	    connect(remote, SIGNAL(runCommand(const QString &, int )), processes, SIGNAL(runCommand(const QString&, int)));
+ 	}
+ 	return processes;
+     }
+@@ -98,6 +103,7 @@
+ Processes::Processes(AbstractProcesses *abstractProcesses) : d(new Private())
+ {
+     d->mAbstractProcesses = abstractProcesses;
++    connect( abstractProcesses, SIGNAL( processesUpdated() ), SLOT( processesUpdated() ));
+ }
+ 
+ Process *Processes::getProcess(long pid) const
+@@ -244,6 +250,10 @@
+         d->mElapsedTimeCentiSeconds = d->mLastUpdated.restart() / 10;
+     }
+ 
++    d->mAbstractProcesses->updateAllProcesses();
++}
++
++void Processes::processesUpdated() {
+     d->mToBeProcessed = d->mAbstractProcesses->getAllPids();
+ 
+     QSet<long> beingProcessed(d->mToBeProcessed); //keep a copy so that we can replace mProcessedLastTime with this at the end of this function
+@@ -345,5 +355,12 @@
+ 
+ }
+ 
++void Processes::answerReceived( int id, const QList<QByteArray>& answer ) {
++    KSysGuard::ProcessesRemote *processes = dynamic_cast<KSysGuard::ProcessesRemote *>(d->mAbstractProcesses);
++    if(processes)
++        processes->answerReceived(id, answer);
++}
++
+ }
+ #include "processes.moc"
++
+--- a/libs/ksysguard/processcore/processes.h
++++ b/libs/ksysguard/processcore/processes.h
+@@ -1,9 +1,11 @@
+ /*  This file is part of the KDE project
++    
+     Copyright (C) 2007 John Tapsell <tapsell at kde.org>
+ 
+     This library is free software; you can redistribute it and/or
+     modify it under the terms of the GNU Library General Public
+-    License version 2 as published by the Free Software Foundation.
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+     This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+@@ -14,6 +16,7 @@
+     along with this library; see the file COPYING.LIB.  If not, write to
+     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
++
+ */
+ 
+ #ifndef PROCESSES_H_
+@@ -154,6 +157,9 @@
+ 	 *  This is fast (just a system call) */
+ 	long numberProcessorCores();
+ 
++    public Q_SLOTS:
++        /** The abstract processes has updated its list of processes */
++        void processesUpdated();
+ 
+     Q_SIGNALS:
+ 	/** The data for a process has changed.
+@@ -200,6 +206,20 @@
+         inline void deleteProcess(long pid);
+         bool updateProcess( Process *process, long ppid, bool onlyReparent = false);
+         bool addProcess(long pid, long ppid);
++
++
++    Q_SIGNALS:
++	/** For a remote machine, we rely on being able to communicate with ksysguardd.
++	 *  This must be dealt with by the program including this widget.  It must listen to our
++	 *  'runCommand' signal, and run the given command, with the given id. */
++	void runCommand(const QString &command, int id);
++
++    public:
++	/** For a remote machine, we rely on being able to communicate with ksysguardd.
++	 *  The programing using this must call this slot when an answer is received from ksysguardd,
++	 *  in response to a runCommand request.  The id identifies the answer */
++	void answerReceived( int id, const QList<QByteArray>& answer );
++
+     };
+ }
+ #endif 
+--- a/libs/ksysguard/processcore/CMakeLists.txt
++++ b/libs/ksysguard/processcore/CMakeLists.txt
+@@ -6,6 +6,7 @@
+    process.cpp
+    processes_local_p.cpp
+    processes_remote_p.cpp
++   processes_base_p.cpp
+ )
+ 
+ 
+--- a/libs/ksysguard/processui/ReniceDlg.cc
++++ b/libs/ksysguard/processui/ReniceDlg.cc
+@@ -4,19 +4,20 @@
+ 	Copyright (c) 1999 Chris Schlaeger <cs at kde.org>
+ 	Copyright (c) 2007 John Tapsell <tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or modify
+-    it under the terms of the GNU General Public License as published by
+-    the Free Software Foundation; either version 2 of the License, or
+-    (at your option) any later version.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ 
+ */
+@@ -98,14 +99,23 @@
+ 	connect(cpuScheduler, SIGNAL(buttonClicked(int)), this, SLOT(updateUi()));
+ 	connect(ioScheduler, SIGNAL(buttonClicked(int)), this, SLOT(updateUi()));
+ 	connect(ui->sliderCPU, SIGNAL(valueChanged(int)), this, SLOT(cpuSliderChanged(int)));
++	connect(ui->sliderIO, SIGNAL(valueChanged(int)), this, SLOT(ioSliderChanged(int)));
+ 	
+ 	updateUi();
+ }
+ 
++void ReniceDlg::ioSliderChanged(int value) {
++	ui->sliderIO->setToolTip(QString::number(7- value));
++}
+ void ReniceDlg::cpuSliderChanged(int value) {
+-	if( ioScheduler->checkedId() == -1 || ioScheduler->checkedId() == (int)KSysGuard::Process::None) {
+-		ui->sliderIO->setValue((value+20)/5);
+-	}
++	if(cpuScheduler->checkedId() == (int)KSysGuard::Process::Other || cpuScheduler->checkedId() == (int)KSysGuard::Process::Batch) {
++	   // When we are on other or batch, the priority is  -value.  
++		ui->sliderCPU->setToolTip(QString::number(-value));
++		if( ioScheduler->checkedId() == -1 || ioScheduler->checkedId() == (int)KSysGuard::Process::None) {
++			ui->sliderIO->setValue(7 - (-value+20)/5);
++		}
++	} else 
++		ui->sliderCPU->setToolTip(QString::number(value));
+ }
+ 
+ void ReniceDlg::updateUi() {
+@@ -125,13 +135,16 @@
+ 		if(ui->sliderCPU->value() >20) ui->sliderCPU->setValue(20);
+ 		ui->sliderCPU->setMinimum(-19);
+ 		ui->sliderCPU->setMaximum(20);
++		ui->sliderCPU->setTickInterval(5);
+ 	} else {
+ 		if(ui->sliderCPU->value() < 1) ui->sliderCPU->setValue(1);
+ 		ui->sliderCPU->setMinimum(1);
+ 		ui->sliderCPU->setMaximum(99);
++		ui->sliderCPU->setTickInterval(12);
+ 	}
+ 
+ 	cpuSliderChanged(ui->sliderCPU->value());
++	ioSliderChanged(ui->sliderIO->value());
+ }
+ 
+ void ReniceDlg::slotOk()
+--- a/libs/ksysguard/processui/ReniceDlg.h
++++ b/libs/ksysguard/processui/ReniceDlg.h
+@@ -1,21 +1,22 @@
+ /*
+     KSysGuard, the KDE System Guard
+ 
+-    Copyright (c) 2006 John Tapsell <tapsell at kde.org>
++    Copyright (c) 2006-2007 John Tapsell <tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or modify
+-    it under the terms of the GNU General Public License as published by
+-    the Free Software Foundation; either version 2 of the License, or
+-    (at your option) any later version.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -53,6 +54,7 @@
+ 	void slotOk();
+ 	void updateUi();
+ 	void cpuSliderChanged(int value);
++	void ioSliderChanged(int value);
+ 
+ private:
+ 	Ui_ReniceDlgUi *ui;
+--- a/libs/ksysguard/processui/ProcessModel.cc
++++ b/libs/ksysguard/processui/ProcessModel.cc
+@@ -2,20 +2,22 @@
+     KSysGuard, the KDE System Guard
+ 
+ 	Copyright (c) 1999, 2000 Chris Schlaeger <cs at kde.org>
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kde.org>
++	Copyright (c) 2006-2007 John Tapsell <john.tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms version 2 of of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -62,11 +64,18 @@
+ 	mIsChangingLayout = false;
+ }
+ 
+-ProcessModel::ProcessModel(QObject* parent)
++ProcessModel::ProcessModel(QObject* parent, const QString &host)
+ 	: QAbstractItemModel(parent), d(new ProcessModelPrivate)
+ {
+ 	KGlobal::locale()->insertCatalog("processui");  //Make sure we include the translation stuff.  This needs to be run before any i18n call here
+ 	d->q=this;
++	if(host.isEmpty() || host == "localhost") {
++		d->mHostName = QString();
++		d->mIsLocalhost = true;
++	} else {
++		d->mHostName = host;
++		d->mIsLocalhost = false;
++	}
+ 	d->setupProcesses();
+ 	setupHeader();
+ 	d->setupWindows();
+@@ -127,10 +136,14 @@
+ }
+ 
+ void ProcessModelPrivate::setupProcesses() {
+-	if(mProcesses)
+-		KSysGuard::Processes::returnInstance();
++	if(mProcesses) {
++		mWIdToPid.clear();
++		mPidToWindowInfo.clear();
++		KSysGuard::Processes::returnInstance(mHostName);
++		q->reset();
++	}
+ 
+-	mProcesses = KSysGuard::Processes::getInstance();  //For now, hard code in a local instance
++	mProcesses = KSysGuard::Processes::getInstance(mHostName);  //For now, hard code in a local instance
+ 
+         connect( mProcesses, SIGNAL( processChanged(KSysGuard::Process *, bool)), this, SLOT(processChanged(KSysGuard::Process *, bool)));
+ 	connect( mProcesses, SIGNAL( beginAddProcess(KSysGuard::Process *)), this, SLOT(beginInsertRow( KSysGuard::Process *)));
+@@ -163,12 +176,6 @@
+ 	KXErrorHandler handler;
+ 	NETWinInfo *info = new NETWinInfo( QX11Info::display(), wid, QX11Info::appRootWindow(), 
+ 			NET::WMPid | NET::WMVisibleName | NET::WMName | NET::WMState );
+-	long unsigned state = info->state();
+-	if(/*state & NET::SkipTaskbar || state & NET::SkipPager || */state & NET::Hidden) {
+-		delete info;
+-		return;
+-	}
+-
+ 	if (handler.error( false ) ) {
+ 		delete info;
+ 		return;  //info is invalid - window just closed or something probably
+@@ -614,14 +621,14 @@
+ }
+ 
+ QString ProcessModel::getStringForProcess(KSysGuard::Process *process) const {
+-	return i18nc("Short description of a process. PID, name, user", "%1: %2, owned by user %3", (long)(process->pid), process->name, d->getUsernameForUser(process->uid, false));
++	return i18nc("Short description of a process. PID, name, user", "<numid>%1</numid>: %2, owned by user %3", (long)(process->pid), process->name, d->getUsernameForUser(process->uid, false));
+ }
+ 
+ QString ProcessModelPrivate::getGroupnameForGroup(long long gid) const {
+ 	if(mIsLocalhost) {
+ 		QString groupname = KUserGroup(gid).name();
+ 		if(!groupname.isEmpty())
+-			return i18n("%1 (gid: %2)", groupname, gid);
++			return i18n("%1 (gid: <numid>%2</numid>)", groupname, gid);
+ 	}
+ 	return QString::number(gid);
+ }
+@@ -667,6 +674,7 @@
+ 		case HeadingPid:
+ 			return (qlonglong)process->pid;
+ 		case HeadingUser:
++			if(!process->login.isEmpty()) return process->login;
+ 			if(process->uid == process->euid)
+ 				return d->getUsernameForUser(process->uid, false);
+ 			else
+@@ -946,7 +954,7 @@
+ 			long long memory = 0;
+ 			if(process->vmURSS != -1) memory = process->vmURSS;
+ 			else memory = process->vmRSS;
+-			if(process->uid == getuid())
++			if(d->mIsLocalhost && process->uid == getuid())
+ 				base = 0;
+ 			else if(process->uid < 100 || !canUserLogin(process->uid))
+ 				base = 200000000 - process->uid * 10000;
+@@ -961,7 +969,10 @@
+ 				cpu = 1;  //stopped or zombied processes should be near the top of the list
+ 			bool hasWindow = d->mPidToWindowInfo.contains(process->pid);
+ 			//However we can of course have lots of processes with the same user.  Next we sort by CPU.
+-			return (double)(base - (cpu*100) -(hasWindow?50:0) - memory*100.0/d->mMemTotal);
++			if(d->mMemTotal>0)
++				return (double)(base - (cpu*100) -(hasWindow?50:0) - memory*100.0/d->mMemTotal);
++			else
++				return (double)(base - (cpu*100) -(hasWindow?50:0));
+ 		}
+ 		case HeadingCPUUsage: {
+ 			int cpu;
+@@ -1151,3 +1162,7 @@
+ 	return "";  //error
+ }
+ 
++QString ProcessModel::hostName() const {
++	return d->mHostName;
++}
++
+--- a/libs/ksysguard/processui/ProcessModel_p.h
++++ b/libs/ksysguard/processui/ProcessModel_p.h
+@@ -1,3 +1,24 @@
++/*
++    KSysGuard, the KDE System Guard
++
++	Copyright (c) 2006-2007 John Tapsell <john.tapsell at kde.org>
++
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
++
++    This library is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
++
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
++*/
++
+ #ifndef PROCESSMODEL_P_H_
+ #define PROCESSMODEL_P_H_
+ 
+@@ -155,6 +176,9 @@
+ 	/** When displaying memory sizes, this is the units it should be displayed in */
+ 	int mUnits;
+ 
++	/** The hostname */
++	QString mHostName;
++
+ 	ProcessModel* q;
+ };
+ 
+--- a/libs/ksysguard/processui/ProcessModel.h
++++ b/libs/ksysguard/processui/ProcessModel.h
+@@ -2,20 +2,22 @@
+     KSysGuard, the KDE System Guard
+ 
+ 	Copyright (c) 1999, 2000 Chris Schlaeger <cs at kde.org>
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
++	Copyright (c) 2006 John Tapsell <john.tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms of version 2 of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -38,7 +40,7 @@
+ 	Q_ENUMS(Units)
+ 		
+ public:
+-	ProcessModel(QObject* parent = 0);
++	ProcessModel(QObject* parent = 0, const QString &host = QString() );
+ 	virtual ~ProcessModel();
+ 
+ 	/* Functions for our Model for QAbstractItemModel*/
+@@ -93,6 +95,9 @@
+ 	/** Whether this is showing the processes for the current machine
+ 	 */
+ 	bool isLocalhost() const;
++
++	/** The host name that this widget is showing the processes of */
++	QString hostName() const;
+ 	
+ 	/** Whether this process has a GUI window */
+ 	bool hasGUIWindow(long long pid) const;
+--- a/libs/ksysguard/processui/ProcessFilter.cc
++++ b/libs/ksysguard/processui/ProcessFilter.cc
+@@ -1,20 +1,22 @@
+ /*
+     KSysGuard, the KDE System Guard
+ 
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
++	Copyright (c) 2006-2007 John Tapsell <john.tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms version 2 of of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -92,8 +94,9 @@
+ 			if(!model->hasGUIWindow(process->pid))
+ 				accepted = false;
+ 		} else {
+-			//login and getty kinda _are_ the tty, so I do not really count them as 'programs'. So make a special case and hide them
+-			if(process->name == "login" || process->name == "getty")
++			// login and getty kinda _are_ the tty, so I do not really count them as 'programs'. So make a special case and hide them
++			// Their ppid are 1 (init) so by checking we try to avoid false matches, and speed up checking overall
++			if(process->parent_pid == 1 && (process->name == "login" || process->name.endsWith("getty")))
+ 				accepted = false;
+ 		}
+ 		break;
+--- a/libs/ksysguard/processui/ksysguardprocesslist.cpp
++++ b/libs/ksysguard/processui/ksysguardprocesslist.cpp
+@@ -4,18 +4,20 @@
+ 	Copyright (c) 1999 - 2001 Chris Schlaeger <cs at kde.org>
+ 	Copyright (c) 2006 - 2007 John Tapsell <john.tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms version 2 of of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -43,13 +45,13 @@
+ #include <kmessagebox.h>
+ #include <kdialog.h>
+ #include <kicon.h>
++#include <kstandarddirs.h>
+ 
+ #include "ksysguardprocesslist.moc"
+ #include "ksysguardprocesslist.h"
+ #include "ReniceDlg.h"
+ #include "ui_ProcessWidgetUI.h"
+ 
+-
+ //Trolltech have a testing class for classes that inherit QAbstractItemModel.  If you want to run with this run-time testing enabled, put the modeltest.* files in this directory and uncomment the next line
+ //#define DO_MODELCHECK
+ #ifdef DO_MODELCHECK
+@@ -79,8 +81,10 @@
+ 	}
+ 	void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+ 	{
++		Q_ASSERT(index.model());
+ 		QModelIndex realIndex = (reinterpret_cast< const QAbstractProxyModel *> (index.model()))->mapToSource(index);
+ 		KSysGuard::Process *process = reinterpret_cast< KSysGuard::Process * > (realIndex.internalPointer());
++		Q_CHECK_PTR(process);
+ 		if(index.column() == ProcessModel::HeadingCPUUsage) {
+ 			if(numCpuCores == -1) 
+ 				numCpuCores = index.data(Qt::UserRole+4).toInt();
+@@ -93,13 +97,18 @@
+ 				memory = process->vmRSS;
+ 			if(totalMemory == -1)
+ 				totalMemory = index.data(Qt::UserRole+3).toLongLong();
+-
+-			percentage = (int)(memory*100/totalMemory);
++			if(totalMemory > 0) 
++				percentage = (int)(memory*100/totalMemory);
++			else
++				percentage = 0;
+ 		} else if(index.column() == ProcessModel::HeadingSharedMemory) {
+ 			if(process->vmURSS != -1) {
+ 				if(totalMemory == -1)
+ 					totalMemory = index.data(Qt::UserRole+3).toLongLong();
+-				percentage = (int)((process->vmRSS - process->vmURSS)*100/totalMemory);
++				if(totalMemory > 0)
++					percentage = (int)((process->vmRSS - process->vmURSS)*100/totalMemory);
++				else
++					percentage = 0;
+ 			}
+ 		} else
+ 			percentage = 0;
+@@ -115,8 +124,8 @@
+ 
+ struct KSysGuardProcessListPrivate {
+     
+-	KSysGuardProcessListPrivate(KSysGuardProcessList* q) 
+-            : mModel(q), mFilterModel(q), mUi(new Ui::ProcessWidget()), mProcessContextMenu(NULL), mUpdateTimer(NULL) 
++	KSysGuardProcessListPrivate(KSysGuardProcessList* q, const QString &hostName) 
++            : mModel(q, hostName), mFilterModel(q), mUi(new Ui::ProcessWidget()), mProcessContextMenu(NULL), mUpdateTimer(NULL) 
+         {}
+ 
+         ~KSysGuardProcessListPrivate() { delete mUi; mUi = NULL; }
+@@ -142,8 +151,8 @@
+ 	int mUpdateIntervalMSecs;
+ };
+ 
+-KSysGuardProcessList::KSysGuardProcessList(QWidget* parent)
+-	: QWidget(parent), d(new KSysGuardProcessListPrivate(this))
++KSysGuardProcessList::KSysGuardProcessList(QWidget* parent, const QString &hostName)
++	: QWidget(parent), d(new KSysGuardProcessListPrivate(this, hostName))
+ {
+ 	d->mUpdateIntervalMSecs = 2000; //Set 2 seconds as the default update interval
+ 	d->mUi->setupUi(this);
+@@ -180,6 +189,10 @@
+ 	d->mUi->treeView->header()->hideSection(ProcessModel::HeadingPid);
+ 	d->mFilterModel.setFilterKeyColumn(0);
+ 
++	d->mUi->treeView->header()->resizeSection(ProcessModel::HeadingCPUUsage, d->mUi->treeView->header()->sectionSizeHint(ProcessModel::HeadingCPUUsage));
++	d->mUi->treeView->header()->resizeSection(ProcessModel::HeadingMemory, d->mUi->treeView->header()->sectionSizeHint(ProcessModel::HeadingMemory));
++	d->mUi->treeView->header()->resizeSection(ProcessModel::HeadingSharedMemory, d->mUi->treeView->header()->sectionSizeHint(ProcessModel::HeadingSharedMemory));
++
+ 	//Process names can have mixed case. Make the filter case insensitive.
+ 	d->mFilterModel.setFilterCaseSensitivity(Qt::CaseInsensitive);
+ 
+@@ -554,10 +567,13 @@
+ 		arguments << QString::number(unreniced_pids.at(i));
+ 	}
+ 
++	QString su = KStandardDirs::findExe("kdesu");
++	if(su.isEmpty()) return false;  //Cannot find kdesu
++
+ 	QProcess *reniceProcess = new QProcess(NULL);
+ 	connect(reniceProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(reniceFailed()));
+ 	connect(reniceProcess, SIGNAL(finished( int, QProcess::ExitStatus) ), this, SLOT(updateList()));
+-	reniceProcess->start("kdesu", arguments);
++	reniceProcess->start(su, arguments);
+ 	return true; //No way to tell if it was successful :(
+ }
+ 
+@@ -692,35 +708,61 @@
+ 	if(unchanged_pids.isEmpty()) return true;
+ 	if(!d->mModel.isLocalhost()) return false; //We can't use kdesu to kill non-localhost processes
+ 
++
++	QString su = KStandardDirs::findExe("kdesu");
++	if(su.isEmpty()) return false;  //Cannot find kdesu
++
+ 	//We must use kdesu to kill the process
++	
+ 	QStringList arguments;
+-	arguments << "--" << "sh" << "-c";
+-	QString sh("'for f in ");
++	if(unchanged_pids.size() == 1) {
++		arguments << "--" << "ionice" << "-p" << QString::number(unchanged_pids.at(0)) << "-c";
++		switch(newIoSched) {
++		  case KSysGuard::Process::Idle:
++			arguments << "3";
++			break;
++		  case KSysGuard::Process::BestEffort:
++			arguments << "2" << "-n" << QString::number(newIoSchedPriority);
++			break;
++		  case KSysGuard::Process::RealTime:
++			arguments << "1" << "-n" << QString::number(newIoSchedPriority);
++			break;
++		  default:
++			Q_ASSERT(false);
++			return false; //should never happen - wtf?
++		}
++	} else {
++		//Cope with multiple pids by doing a for loop
++		arguments << "--" << "sh" << "-c";
++		QString sh("for f in ");
++
++	        for (int i = 0; i < unchanged_pids.size(); ++i) {
++			sh += QString::number(unchanged_pids.at(i)) + " ";
++		}
++		 sh += "; do ionice -p \"$f\" ";
++		switch(newIoSched) {
++		  case KSysGuard::Process::Idle:
++			sh += "-c 3";
++			break;
++		  case KSysGuard::Process::BestEffort:
++			sh += "-c 2 -n " + QString::number(newIoSchedPriority);
++			break;
++		  case KSysGuard::Process::RealTime:
++			sh += "-c 1 -n " + QString::number(newIoSchedPriority);
++			break;
++		  default:
++			Q_ASSERT(false);
++			return false; //should never happen - wtf?
++		}
++		sh += "; done";
+ 
+-        for (int i = 0; i < unchanged_pids.size(); ++i) {
+-		sh += QString::number(unchanged_pids.at(i)) + " ";
+-	}
+-	 sh += "; do ionice -p \"$f\" ";
+-	switch(newIoSched) {
+-	  case KSysGuard::Process::Idle:
+-		sh += "-c 3";
+-		break;
+-	  case KSysGuard::Process::BestEffort:
+-		sh += "-c 2 -n " + QString::number(newIoSchedPriority);
+-	  case KSysGuard::Process::RealTime:
+-		sh += "-c 1 -n " + QString::number(newIoSchedPriority);
+-	  default:
+-		Q_ASSERT(false);
+-		return false; //should never happen - wtf?
++		arguments << sh;
+ 	}
+-	sh += "; done'";
+ 
+-	arguments << sh;
+-	
+ 	QProcess *process = new QProcess(NULL);
+ 	connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(ioniceFailed()));
+ 	connect(process, SIGNAL(finished( int, QProcess::ExitStatus) ), this, SLOT(updateList()));
+-	process->start("kdesu", arguments);
++	process->start(su, arguments);
+ 	return true;  //assume it ran successfully :(  We cannot seem to actually check if it did.  There must be a better solution
+ }
+ 
+@@ -752,6 +794,9 @@
+ 	if(unkilled_pids.isEmpty()) return true;
+ 	if(!d->mModel.isLocalhost()) return false; //We can't use kdesu to kill non-localhost processes
+ 
++	QString su = KStandardDirs::findExe("kdesu");
++	if(su.isEmpty()) return false;  //Cannot find kdesu
++
+ 	//We must use kdesu to kill the process
+ 	QStringList arguments;
+ 	arguments << "--" << "kill";
+@@ -766,7 +811,7 @@
+ 	QProcess *killProcess = new QProcess(NULL);
+ 	connect(killProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(killFailed()));
+ 	connect(killProcess, SIGNAL(finished( int, QProcess::ExitStatus) ), this, SLOT(updateList()));
+-	killProcess->start("kdesu", arguments);
++	killProcess->start(su, arguments);
+ 	return true;  //assume it ran successfully :(  We cannot seem to actually check if it did.  There must be a better solution
+ 
+ }
+@@ -894,3 +939,6 @@
+ 	return false;
+ }
+ 
++ProcessModel *KSysGuardProcessList::processModel() {
++	return &d->mModel;
++}
+--- a/libs/ksysguard/processui/ProcessFilter.h
++++ b/libs/ksysguard/processui/ProcessFilter.h
+@@ -4,18 +4,20 @@
+ 	Copyright (c) 1999, 2000 Chris Schlaeger <cs at kde.org>
+ 	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms of version 2 of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+--- a/libs/ksysguard/processui/ksysguardprocesslist.h
++++ b/libs/ksysguard/processui/ksysguardprocesslist.h
+@@ -2,20 +2,22 @@
+     KSysGuard, the KDE System Guard
+ 
+ 	Copyright (c) 1999, 2000 Chris Schlaeger <cs at kde.org>
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
++	Copyright (c) 2006 John Tapsell <john.tapsell at kde.org>
+ 
+-    This program is free software; you can redistribute it and/or
+-    modify it under the terms of version 2 of the GNU General Public
+-    License as published by the Free Software Foundation.
++    This library is free software; you can redistribute it and/or
++    modify it under the terms of the GNU Library General Public
++    License as published by the Free Software Foundation; either
++    version 2 of the License, or (at your option) any later version.
+ 
+-    This program is distributed in the hope that it will be useful,
++    This library is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-    GNU General Public License for more details.
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++    Library General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++    You should have received a copy of the GNU Library General Public License
++    along with this library; see the file COPYING.LIB.  If not, write to
++    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++    Boston, MA 02110-1301, USA.
+ 
+ */
+ 
+@@ -58,7 +60,7 @@
+ 	Q_ENUMS( ProcessModel::Units )
+ 
+ public:
+-	KSysGuardProcessList(QWidget* parent);
++	KSysGuardProcessList(QWidget* parent, const QString &hostName = QString());
+ 	virtual ~KSysGuardProcessList();
+ 
+ 	QLineEdit *filterLineEdit() const;
+@@ -83,9 +85,13 @@
+ 
+ 	/** Save the current state of the widget to the given config group */
+ 	void saveSettings(KConfigGroup &cg);
++	
+ 	/** Load the saved state of the widget from the given config group */
+ 	void loadSettings(const KConfigGroup &cg);
+ 
++	/** Returns the process model used. Use with caution. */
++	ProcessModel *processModel();
++
+ public Q_SLOTS:
+ 	/** Inform the view that the user has changed the selection */
+ 	void selectionChanged();
+--- a/libs/plasma/dataengine.cpp
++++ b/libs/plasma/dataengine.cpp
+@@ -226,7 +226,7 @@
+ 
+ DataContainer* DataEngine::containerForSource(const QString &source)
+ {
+-    return d->requestSource(source);
++    return d->source(source, false);
+ }
+ 
+ DataEngine::Data DataEngine::query(const QString& source) const
+@@ -425,6 +425,11 @@
+     return d->valid;
+ }
+ 
++bool DataEngine::isEmpty() const
++{
++    return d->sources.isEmpty();
++}
++
+ void DataEngine::setValid(bool valid)
+ {
+     d->valid = valid;
+--- a/libs/plasma/servicetypes/plasma-containment.desktop
++++ b/libs/plasma/servicetypes/plasma-containment.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/Containment
+ 
+ Comment=Plasma applet container and background painter
++Comment[ca]=Contenidor de miniaplicació del Plasma i pintor de fons
+ Comment[de]=Plasma-Programmcontainer und Hintergrund-Zeichnung
+ Comment[el]=Περιέχει μικροεφαρμογές Plasma και σχεδιάζει το φόντο
+ Comment[et]=Plasma apleti konteiner ja tausta joonistaja
+@@ -15,6 +15,7 @@
+ Comment[ne]=प्लाज्मा एप्लेट कन्टेनर र पृष्ठभूमि पेन्टर
+ Comment[nl]=Container en achtergrond voor Plasma-applet
+ Comment[nn]=Plasma-behaldar og bakgrunnsmålar
++Comment[pa]=ਪਲਾਜ਼ਮਾ ਐਪਲਿਟ ਕੰਨਟੇਨਰ ਅਤੇ ਬੈਕਗਰਾਊਂਡ ਪੇਂਟਰ
+ Comment[pt]=Contentor de 'applets' do Plasma e pintor do fundo
+ Comment[pt_BR]=Recipiente de mini-aplicativos do Plasma e pintor de plano de fundo
+ Comment[sr]=Садржалац плазма аплета
+--- a/libs/plasma/servicetypes/plasma-dataengine.desktop
++++ b/libs/plasma/servicetypes/plasma-dataengine.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/DataEngine
+ 
+ Comment=Plasma Data Engine
+ Comment[be]=Рухавік дадзеных Plasma
++Comment[ca]=Motor de dades del Plasma
+ Comment[csb]=Mòtór dostónków plazmë
+ Comment[de]=Plasma Daten-Treiber
+ Comment[el]=Μηχανή δεδομένων Plasma
+--- a/libs/plasma/servicetypes/plasma-applet.desktop
++++ b/libs/plasma/servicetypes/plasma-applet.desktop
+@@ -1,15 +1,15 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/Applet
+ 
+ Comment=Plasma applet
+ Comment[be]=Аплет Plasma
+ Comment[bg]=Аплет за Plasma
+-Comment[ca]=Miniaplicació de plasma
++Comment[ca]=Miniaplicació del Plasma
+ Comment[csb]=Aplet plazmë
+ Comment[de]=Plasma-Miniprogramm
+ Comment[el]=Μικροεφαρμογή plasma
++Comment[eo]=Plasma-apleto
+ Comment[es]=Miniaplicación de Plasma
+ Comment[et]=Plasma aplett
+ Comment[fa]=برنامک پلاسما
+--- a/libs/plasma/servicetypes/plasma-runner.desktop
++++ b/libs/plasma/servicetypes/plasma-runner.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/Runner
+ 
+@@ -11,6 +10,7 @@
+ Comment[csb]=Wtëkôcze zrëszôcza KRunner
+ Comment[de]=Programmstarter-Modul
+ Comment[el]=Πρόσθετο του KRunner
++Comment[eo]=KRunner-kromaĵo
+ Comment[es]=Complementos de Konqueror
+ Comment[et]=KRunneri plugin
+ Comment[fa]=وصلۀ KRunner
+--- a/libs/plasma/servicetypes/plasma-animator.desktop
++++ b/libs/plasma/servicetypes/plasma-animator.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/Animator
+ 
+ Comment=Plasma Animation Engine
++Comment[ca]=Motor d'animació del Plasma
+ Comment[csb]=Mòtór animacëji plazmë
+ Comment[de]=Plasma Animations-Treiber
+ Comment[el]=Μηχανή κίνησης του Plasma
+--- a/libs/plasma/servicetypes/plasma-scriptengine.desktop
++++ b/libs/plasma/servicetypes/plasma-scriptengine.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Plasma/ScriptEngine
+ 
+ Comment=Scripting language extension for Plasma
+ Comment[bg]=Разширение за Plasma
++Comment[ca]=Extensió de llenguatge d'script pel Plasma
+ Comment[de]=Skriptsprachen-Erweiterung für Plasma
+ Comment[el]=Επέκταση γλώσσας σεναρίων για το Plasma
+ Comment[es]=Extensión de lenguaje de programación para Plasma
+--- a/libs/plasma/uiloader.h
++++ b/libs/plasma/uiloader.h
+@@ -43,14 +43,14 @@
+     Q_OBJECT
+ 
+ public:
+-    UiLoader( QObject *parent = 0 );
++    UiLoader(QObject *parent = 0);
+     virtual ~UiLoader();
+ 
+     QStringList availableWidgets() const;
+-    Widget *createWidget( const QString &className, Widget *parent=0 );
++    Widget *createWidget(const QString &className, Widget *parent = 0);
+ 
+     QStringList availableLayouts() const;
+-    Layout *createLayout( const QString &className, LayoutItem *parent );
++    Layout *createLayout(const QString &className, LayoutItem *parent);
+ 
+ private:
+     class Private;
+--- /dev/null
++++ b/libs/plasma/toolbox_p.h
+@@ -0,0 +1,66 @@
++/*
++ *   Copyright 2007 by Aaron Seigo <aseigo at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_DESKTOPTOOLBOX_H
++#define PLASMA_DESKTOPTOOLBOX_H
++
++#include <QGraphicsItem>
++#include <QObject>
++
++#include <KIcon>
++
++#include "phase.h"
++
++namespace Plasma
++{
++
++class Widget;
++
++class DesktopToolbox : public QObject, public QGraphicsItem
++{
++    Q_OBJECT
++
++public:
++    explicit DesktopToolbox(QGraphicsItem *parent = 0);
++    QRectF boundingRect() const;
++    QPainterPath shape() const;
++
++    void addTool(QGraphicsItem *tool);
++
++protected:
++    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
++    void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
++    void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
++
++protected slots:
++    void animate(qreal progress);
++    void toolMoved(QGraphicsItem*);
++
++private:
++    KIcon m_icon;
++    int m_size;
++    bool m_hidden;
++    bool m_showing;
++    Plasma::Phase::AnimId m_animId;
++    int m_animFrame;
++};
++
++} // Plasma namespace
++#endif // multiple inclusion guard
++
+--- /dev/null
++++ b/libs/plasma/layouts/layoutitem.h
+@@ -0,0 +1,172 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef __LAYOUT_ITEM__
++#define __LAYOUT_ITEM__
++
++#include <QtCore/QRectF>
++#include <QtCore/QSizeF>
++
++#include <plasma/plasma_export.h>
++
++class QGraphicsItem;
++
++namespace Plasma
++{
++
++class Layout;
++
++/**
++ * Base class for Plasma layout-managed items
++ *
++ * @author Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ * All layout-managed items should implement this class, but regular users just need to use
++ * Plasma::Widget and Plasma::Layout.
++ */
++class PLASMA_EXPORT LayoutItem
++{
++    public:
++
++        /**
++         * Constructor.
++         */
++        explicit LayoutItem();
++
++        /**
++         * Virtual Destructor.
++         */
++        virtual ~LayoutItem();
++
++        /**
++         * Returns a bitmask with the directions that this Item can be expanded.
++         */
++        virtual Qt::Orientations expandingDirections() const = 0;
++
++        /**
++         * Returns the minimum size of this Item and it's contents.
++         */
++        virtual QSizeF minimumSize() const = 0;
++
++        /**
++         * Returns the maximum size of this Item.
++         */
++        virtual QSizeF maximumSize() const = 0;
++
++        /**
++         * Returns true whatever this Item can use height-for-width layout management,
++         * false otherwise.
++         */
++        virtual bool hasHeightForWidth() const;
++
++        /**
++         * Returns the corresponding height for a given width.
++         * @param w Width
++         */
++        virtual qreal heightForWidth(qreal w) const;
++
++        /**
++         * Returns true whatever this Item can use width-for-height layout management,
++         * false otherwise.
++         */
++        virtual bool hasWidthForHeight() const;
++
++        /**
++         * Returns the corresponding width for a given height.
++         * @param h Height
++         */
++        virtual qreal widthForHeight(qreal h) const;
++
++        /**
++         * Returns the geometry of this Item.
++         */
++        virtual QRectF geometry() const = 0;
++
++        /**
++         * Sets the geometry of this Item.
++         */
++        virtual void setGeometry(const QRectF& geometry) = 0;
++
++        /**
++         * Updates the layouting of the item without first changing its geometry.
++         * Calling this may result in a geometry change, but may not, depending
++         * on the managing layout if any.
++         */
++        virtual void updateGeometry() = 0;
++
++        /**
++         * Returns the most appropriate size of this Item to hold whatever contents it has.
++         */
++        virtual QSizeF sizeHint() const = 0;
++
++        /**
++         * Sets the layout that will manage children items
++         *
++         * @param layout The Layout that this LayoutItem will be managed by.
++         */
++        void setLayout(Layout* layout);
++
++        /**
++         * @return the layout this item is currently associated with.
++         */
++        Layout* layout() const;
++
++        /**
++         * Sets the layout that manages this item's geometry
++         *
++         * @param layout the layout that manage this item's geometry
++         **/
++        void setManagingLayout(Layout* layout);
++
++        /**
++         * Resets the layout that manges this item's geometry if it is the
++         * currently associated layout
++         *
++         * @param layout to unset
++         **/
++        void unsetManagingLayout(Layout* layout);
++
++        /**
++         * @return the layout that manages this item's geometry, or 0 if none
++         **/
++        Layout* managingLayout() const;
++
++        /**
++         * Returns the graphics item associated with this layout item or 0
++         * if there is no associated graphics item.
++         *
++         * The default implementation returns 0.
++         */
++        virtual QGraphicsItem* graphicsItem();
++
++    protected:
++        /**
++         * Reimplement to respond to a change in managing layout
++         */
++        virtual void managingLayoutChanged();
++
++    private:
++        class Private;
++        Private *const d;
++};
++
++}
++
++#endif /* __LAYOUT_ITEM__ */
+--- /dev/null
++++ b/libs/plasma/layouts/hboxlayout.h
+@@ -0,0 +1,26 @@
++/*
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com> 
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_HBOXLAYOUT
++#define PLASMA_HBOXLAYOUT
++
++#include <plasma/layouts/boxlayout.h>
++
++#endif /* PLASMA_HBOXLAYOUT */
+--- /dev/null
++++ b/libs/plasma/layouts/flowlayout.cpp
+@@ -0,0 +1,217 @@
++/*
++*   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++*
++*   This program is free software; you can redistribute it and/or modify
++*   it under the terms of the GNU Library General Public License,
++*   or (at your option) any later version.
++*
++*   This program is distributed in the hope that it will be useful,
++*   but WITHOUT ANY WARRANTY; without even the implied warranty of
++*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++*   GNU General Public License for more details
++*
++*   You should have received a copy of the GNU Library General Public
++*   License along with this program; if not, write to the
++*   Free Software Foundation, Inc.,
++*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++*/
++
++#include "flowlayout.h"
++
++#include <limits.h>
++#include <math.h>
++
++#include <QtCore/QList>
++#include <QtCore/QRectF>
++#include <QtCore/QTimeLine>
++
++#include <QtDebug>
++
++#include "layoutanimator.h"
++
++using namespace Plasma;
++
++class FlowLayout::Private
++{
++public:
++    Private() : columnWidth( -1 ) {}
++    QList<LayoutItem*> items; 
++    qreal columnWidth;
++};
++
++FlowLayout::FlowLayout(LayoutItem* parent)
++    : Layout(parent)
++    , d(new Private)
++{
++}
++FlowLayout::~FlowLayout()
++{
++    delete d;
++}
++
++int FlowLayout::count() const
++{
++    return d->items.count();
++}
++
++void FlowLayout::addItem(LayoutItem* item)
++{
++    if (d->items.contains(item)) {
++        return;
++    }
++
++    d->items << item;
++
++    if (animator()) {
++        animator()->setCurrentState(item,LayoutAnimator::InsertedState);
++    }
++
++    item->setManagingLayout(this);
++}
++void FlowLayout::removeItem(LayoutItem* item)
++{
++    item->unsetManagingLayout(this);
++    d->items.removeAll(item);
++
++    if (animator()) {
++        animator()->setCurrentState(item,LayoutAnimator::RemovedState);
++    }
++}
++int FlowLayout::indexOf(LayoutItem* item) const
++{
++    return d->items.indexOf(item);
++}
++LayoutItem* FlowLayout::itemAt(int i) const
++{
++    return d->items[i];
++}
++QSizeF FlowLayout::sizeHint() const
++{
++    // TODO A proper algorithm here
++    // 
++    // Idea:  Return a size hint based on the golden ratio to
++    //        make it aesthetically good
++    //        eg. Longer side is 1.61x the length of the shorter side
++    //
++
++    // testing
++    return QSizeF(500,500);
++}
++LayoutItem* FlowLayout::takeAt(int i)
++{
++    return d->items.takeAt(i);
++}
++
++template <class T>
++T qSum(const QList<T>& container) 
++{
++    T total = 0;
++    foreach( const T& item , container ) {
++        total += item; 
++    }   
++    return total;
++}
++
++void FlowLayout::relayout()
++{
++    QRectF rect = geometry().adjusted(margin(LeftMargin), margin(TopMargin), -margin(RightMargin), -margin(BottomMargin));
++
++    qDebug() << "Flow layout geometry set to " << geometry();
++
++    // calculate average size of items
++    qreal totalWidth = 0;
++    qreal totalHeight = 0;
++
++    foreach( LayoutItem *item , d->items ) {
++        totalWidth += item->sizeHint().width();
++        totalHeight += item->sizeHint().height();
++    }
++
++    // use the average item width as the column width.
++    // Also include the spacing either side of each item as part of the 
++    // average width, this provides the spacing between the items and
++    // also allows some tolerance for small differences in item widths 
++    qreal averageWidth;
++    if (d->columnWidth == -1) {
++        averageWidth = totalWidth / d->items.count() + 2*spacing();
++    } else {
++        averageWidth = d->columnWidth;
++    }
++
++    const int columnCount = (int)(rect.width() / averageWidth);
++
++    int insertColumn = 0;
++    qreal rowPos = 0;
++    qreal rowHeight = 0;
++
++    // lay the items out in left-to-right , top-to-bottom order
++    foreach( LayoutItem *item , d->items ) {
++    
++        const QSizeF& itemSize = item->sizeHint();
++
++        int columnSpan = (int)ceil(itemSize.width() / averageWidth);
++
++        if ( insertColumn + columnSpan > columnCount ) {
++            // start a new row
++            insertColumn = 0;
++            rowPos += rowHeight + spacing();
++        }
++
++       // qDebug() << "Inserting item at column" << insertColumn 
++       //          << "spanning" << columnSpan << "columns"
++       //          << "with offset" << offset;
++
++
++        // try to expand the item to fill its allocated number of columns
++        qreal itemWidth = itemSize.width(); 
++        const qreal idealWidth = columnSpan * averageWidth - spacing();
++        if ( itemWidth < idealWidth && 
++             idealWidth < item->maximumSize().width() ) {
++             itemWidth = idealWidth; 
++        }
++       
++        // calculate offset to horizontally center item 
++        qreal offset = (columnSpan * averageWidth) - itemWidth;
++        if ( insertColumn == 0 )
++            offset -= spacing();  
++        offset /= 2;
++
++        // try to restrict the item width to the available geometry's
++        // width
++        if ( itemWidth > rect.width() ) {
++            itemWidth = qMax(rect.width(),item->minimumSize().width());
++            offset = 0;
++        }        
++
++        // position the item
++        const QRectF newGeometry(rect.left() + insertColumn * averageWidth + offset,
++                                 rect.top() + rowPos,
++                                 itemWidth,
++                                 itemSize.height());
++
++        rowHeight = qMax(rowHeight,itemSize.height());
++        insertColumn += columnSpan;
++
++        if ( animator() )
++            animator()->setGeometry( item , newGeometry );
++        else
++            item->setGeometry( newGeometry );
++    }
++
++    startAnimation();
++}
++
++Qt::Orientations FlowLayout::expandingDirections() const
++{
++    return Qt::Vertical | Qt::Horizontal;
++}
++
++qreal FlowLayout::columnWidth() const
++{
++    return d->columnWidth;
++}
++
++void FlowLayout::setColumnWidth( const qreal width )
++{
++    d->columnWidth = width;
++}
+--- /dev/null
++++ b/libs/plasma/layouts/layoutanimator.cpp
+@@ -0,0 +1,317 @@
++/*
++    Copyright 2007 by Robert Knight <robertknight at gmail.com>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++    02110-1301  USA.
++*/
++
++#include "layoutanimator.h"
++
++#include <QtCore/QHash>
++#include <QtCore/QList>
++#include <QtCore/QPointer>
++#include <QtCore/QTimeLine>
++#include <QtGui/QGraphicsItem>
++#include <QtGui/QGraphicsScene>
++#include <QtDebug>
++
++#include "layouts/layout.h"
++#include "widgets/widget.h"
++
++using namespace Plasma;
++
++class LayoutAnimator::Private
++{
++public:
++    QHash<LayoutAnimator::State,int> effects;  
++    
++    class ItemGeometry
++    {
++    public:
++        QRectF startGeometry;
++        QRectF endGeometry;
++    };  
++    
++    QHash<LayoutItem*,ItemGeometry> geometries;
++    QHash<LayoutItem*,LayoutAnimator::State> states;
++    QPointer<QTimeLine> timeLine;
++    qreal lastValue;
++    bool autoDeleteOnRemoval;
++
++    Private() 
++        : lastValue(0)
++        , autoDeleteOnRemoval(false)
++    {
++    }
++
++    qreal delta(qreal currentValue) const
++    {
++        if ( currentValue > lastValue ) 
++            return currentValue - lastValue;
++        else
++            return (1.0-lastValue) + currentValue;
++    }
++
++    QRectF interpolateGeometry(LayoutItem* item,qreal value) const
++    {
++        QRectF newGeometry;
++
++        const QRectF& current = geometries[item].startGeometry;
++        const QRectF& next = geometries[item].endGeometry;
++
++        newGeometry.setLeft(current.left() + (next.left()-current.left()) * value);
++        newGeometry.setRight(current.right() + (next.right()-current.right()) * value);
++        newGeometry.setTop(current.top() + (next.top()-current.top()) * value);
++        newGeometry.setBottom(current.bottom() + (next.bottom()-current.bottom()) * value);
++
++        return newGeometry;
++    }
++
++    void prepareItemForState( LayoutItem *item , LayoutAnimator::State state ) {
++        
++        // opacity setting for widgets
++        if ( state == InsertedState && effects[state] == LayoutAnimator::FadeInMoveEffect ) {
++            Widget *widget = dynamic_cast<Widget*>(item->graphicsItem());
++
++            if ( widget ) {
++                widget->setOpacity(0); // item is invisible immediately after insertion     
++            }
++        }
++    }
++};
++
++LayoutAnimator::LayoutAnimator(QObject* parent)
++: QObject(parent),
++  d(new Private)
++{
++    d->lastValue = 0;
++}
++
++LayoutAnimator::~LayoutAnimator()
++{
++    delete d;
++}
++
++void LayoutAnimator::setAutoDeleteOnRemoval(bool autoDelete) 
++{
++    if ( d->autoDeleteOnRemoval == autoDelete )
++        return;
++
++    d->autoDeleteOnRemoval = autoDelete;
++
++    if ( autoDelete ) { 
++        connect( this , SIGNAL(stateChanged(LayoutItem*,State,State)) , this , 
++                 SLOT(itemAutoDeleter(LayoutItem*,State,State)) );
++    } else { 
++        disconnect( this , SIGNAL(stateChanged(LayoutItem*,State,State)) , this , 
++                SLOT(itemAutoDeleter(LayoutItem*,State,State)) );
++    } 
++}
++
++bool LayoutAnimator::autoDeleteOnRemoval() const
++{
++    return d->autoDeleteOnRemoval;
++}
++
++void LayoutAnimator::itemAutoDeleter(LayoutItem *item , State oldState , State newState)
++{
++    if ( oldState == RemovedState && newState == DeadState ) {
++        if ( item->graphicsItem() ) {
++            item->graphicsItem()->scene()->removeItem( item->graphicsItem() );
++
++            if ( dynamic_cast<QGraphicsItem*>(item) != dynamic_cast<QGraphicsItem*>(item->graphicsItem()) )
++                delete item->graphicsItem();
++        }
++
++        delete item;
++    }
++}
++
++void LayoutAnimator::setEffect( State action , int effect )
++{
++    d->effects[action] = effect;
++}
++int LayoutAnimator::effect(State action) const
++{
++    return d->effects[action];
++}
++
++void LayoutAnimator::setCurrentState( LayoutItem* item , State state )
++{
++    if (state == RemovedState && !d->states.contains(item)) {
++        return;
++    }
++
++    State oldState = d->states[item];
++
++    d->states[item] = state;
++    d->prepareItemForState(item,state);
++
++    emit stateChanged(item,oldState,state);
++}
++LayoutAnimator::State LayoutAnimator::state( LayoutItem* item ) const
++{
++    if ( !d->states.contains(item) ) {
++        return DeadState;
++    } else {
++        return d->states[item];
++    }
++}
++
++void LayoutAnimator::setTimeLine(QTimeLine* timeLine)
++{
++    if ( d->timeLine ) {
++        disconnect( d->timeLine , SIGNAL(valueChanged(qreal)) , this , 
++                SLOT(valueChanged(qreal)) );
++        disconnect( d->timeLine , SIGNAL(finished()) , this , 
++                SLOT(animationCompleted()) );
++    }
++
++    d->timeLine = timeLine;
++
++    connect( d->timeLine , SIGNAL(valueChanged(qreal)) , this , 
++             SLOT(valueChanged(qreal)) );
++    connect( d->timeLine , SIGNAL(finished()) , this , 
++             SLOT(animationCompleted()) );
++}
++void LayoutAnimator::animationCompleted()
++{
++    foreach( LayoutItem* item , d->states.keys() ) {
++        animationFinished(item);
++    }
++}
++QTimeLine* LayoutAnimator::timeLine() const
++{
++    return d->timeLine;
++}
++void LayoutAnimator::valueChanged(qreal value)
++{
++    foreach( LayoutItem* item , d->geometries.keys() ) {
++        updateItem(value,item);
++    }
++
++    d->lastValue = value;
++}
++
++void LayoutAnimator::setGeometry( LayoutItem* item , const QRectF& destGeometry )
++{
++    Q_ASSERT( item );
++
++    Private::ItemGeometry& itemGeometry = d->geometries[item];
++
++    itemGeometry.startGeometry = item->geometry();
++    itemGeometry.endGeometry = destGeometry;
++}
++
++void LayoutAnimator::moveEffectUpdateItem( qreal value , LayoutItem* item , Effect effect )
++{
++    Widget* widget = dynamic_cast<Widget*>(item->graphicsItem());
++
++    if ( widget && effect == FadeInMoveEffect )
++        widget->setOpacity( qMin(1.0,widget->opacity()+d->delta(value)) );
++    else if ( widget && effect == FadeOutMoveEffect )
++        widget->setOpacity( qMax(0.0,widget->opacity()-d->delta(value)) );
++
++    
++    if ( effect == FadeInMoveEffect ) {
++        const QRectF finalGeometry = d->geometries[item].endGeometry;
++
++        if ( item->geometry() != finalGeometry )
++            item->setGeometry( finalGeometry ); 
++    }
++    else 
++        item->setGeometry( d->interpolateGeometry(item,value) );
++}
++
++void LayoutAnimator::noEffectUpdateItem( qreal , LayoutItem* item )
++{
++    const QRectF finalGeometry = d->geometries[item].endGeometry;
++
++    if ( item->geometry() != finalGeometry )
++        item->setGeometry( finalGeometry );
++}
++
++void LayoutAnimator::fadeEffectUpdateItem( qreal value , LayoutItem* item )
++{
++    Widget* widget = dynamic_cast<Widget*>(item->graphicsItem());
++
++    qreal threshold = 0;
++    
++    if ( widget != 0 && d->geometries[item].startGeometry != d->geometries[item].endGeometry ) { 
++        widget->setOpacity( qAbs( (value*2)-1.0 ) );
++        threshold = 0.5; 
++    }
++
++    QRectF newGeometry;
++    
++    if ( value < threshold )
++        newGeometry = d->geometries[item].startGeometry;
++    else
++        newGeometry = d->geometries[item].endGeometry;
++
++    item->setGeometry(newGeometry);
++}
++
++void LayoutAnimator::animationFinished(LayoutItem* item)
++{
++    switch ( state(item) ) 
++    {
++        case InsertedState:
++                setCurrentState(item,StandardState);
++            break;
++        case RemovedState:
++                d->states.remove(item);
++                d->geometries.remove(item);
++
++                emit stateChanged( item , RemovedState , DeadState );
++            break;
++        case StandardState:
++                    d->geometries[item].startGeometry = d->geometries[item].endGeometry;
++            break;
++        default:
++            Q_ASSERT(false);
++    }
++}
++
++void LayoutAnimator::updateItem( qreal value , LayoutItem* item )
++{
++    Q_ASSERT( value >= 0 && value <= 1.0 );
++    Q_ASSERT( item );
++    Q_ASSERT( d->geometries.contains(item) );
++
++    switch ( effect(d->states[item]) )
++    {
++        case NoEffect:
++                noEffectUpdateItem(value,item);
++            break;
++        case MoveEffect:
++                moveEffectUpdateItem(value,item,MoveEffect);
++            break;
++        case FadeInMoveEffect:
++                moveEffectUpdateItem(value,item,FadeInMoveEffect);
++            break;
++        case FadeOutMoveEffect:
++                moveEffectUpdateItem(value,item,FadeOutMoveEffect);
++            break;
++        case FadeEffect:
++                fadeEffectUpdateItem(value,item);
++            break;
++        default:
++            Q_ASSERT(false);
++    }
++}
++
++#include "layoutanimator.moc"
++
+--- /dev/null
++++ b/libs/plasma/layouts/flowlayout.h
+@@ -0,0 +1,64 @@
++/*
++*   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++*
++*   This program is free software; you can redistribute it and/or modify
++*   it under the terms of the GNU Library General Public License,
++*   or (at your option) any later version.
++*
++*   This program is distributed in the hope that it will be useful,
++*   but WITHOUT ANY WARRANTY; without even the implied warranty of
++*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++*   GNU General Public License for more details
++*
++*   You should have received a copy of the GNU Library General Public
++*   License along with this program; if not, write to the
++*   Free Software Foundation, Inc.,
++*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++*/
++
++#ifndef __FLOWLAYOUT__
++#define __FLOWLAYOUT__
++
++#include <plasma/plasma_export.h>
++#include <plasma/layouts/layout.h>
++
++namespace Plasma
++{
++
++/**
++ * A layout which lays items out left-to-right , top-to-bottom.
++ *
++ * This is similar to the layout of items in a QListView. 
++ */
++class PLASMA_EXPORT FlowLayout : public Layout
++{
++public:
++    /** Construct a new flow layout with the specified parent. */
++    explicit FlowLayout(LayoutItem* parent);
++    virtual ~FlowLayout();
++
++    // reimplemented
++    virtual int count() const;
++    virtual void addItem(LayoutItem* item);
++    virtual void removeItem(LayoutItem* item);
++    virtual int indexOf(LayoutItem* item) const;
++    virtual LayoutItem* itemAt(int i) const;
++    virtual LayoutItem* takeAt(int i);
++
++    virtual QSizeF sizeHint() const;
++    virtual Qt::Orientations expandingDirections() const;
++    virtual void setColumnWidth( const qreal width );
++    virtual qreal columnWidth() const;
++
++protected:
++    void relayout();
++
++private:
++    class Private;
++    Private *const d;
++};
++
++}
++
++#endif // __FLOWLAYOUT__
++
+--- /dev/null
++++ b/libs/plasma/layouts/borderlayout.cpp
+@@ -0,0 +1,239 @@
++/*
++ *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library/Lesser General Public License
++ *   version 2, or (at your option) any later version, as published by the
++ *   Free Software Foundation
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library/Lesser General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "borderlayout.h"
++
++namespace Plasma {
++
++class BorderLayout::Private {
++public:
++    BorderLayout * q;
++
++    explicit Private(BorderLayout * parent = 0)
++        : q(parent)
++    {
++        sizes[LeftPositioned] = -1;
++        sizes[RightPositioned] = -1;
++        sizes[TopPositioned] = -1;
++        sizes[BottomPositioned] = -1;
++        sizes[CenterPositioned] = -1;
++
++    }
++
++    virtual ~Private()
++    {
++    }
++
++    QMap< Position, LayoutItem * > itemPositions;
++    QMap< Position, qreal > sizes;
++};
++
++
++
++BorderLayout::BorderLayout(LayoutItem * parent) :
++    Layout(parent), d(new Private(this))
++{
++    if (parent) {
++        parent->setLayout(this);
++    }
++}
++
++BorderLayout::~BorderLayout()
++{
++    delete d;
++}
++
++Qt::Orientations BorderLayout::expandingDirections() const
++{
++    return Qt::Horizontal | Qt::Vertical;
++}
++
++void BorderLayout::relayout()
++{
++    QRectF rect = geometry();
++    rect.setTopLeft(rect.topLeft() + QPointF(margin(LeftMargin), margin(TopMargin)));
++    rect.setBottomRight(rect.bottomRight() - QPointF(margin(RightMargin), margin(BottomMargin)));
++
++    QPointF origin = rect.topLeft();
++    qreal top, bottom, left, right;
++    top    = (d->sizes[TopPositioned] >= 0)    ? d->sizes[TopPositioned]    : 0;
++    left   = (d->sizes[LeftPositioned] >= 0)   ? d->sizes[LeftPositioned]   : 0;
++    bottom = rect.height() - ((d->sizes[BottomPositioned] >= 0) ? d->sizes[BottomPositioned] : 0);
++    right  = rect.width()  - ((d->sizes[RightPositioned] >= 0)  ? d->sizes[RightPositioned]  : 0);
++
++    if (d->itemPositions[TopPositioned] /*&& d->itemPositions[TopPositioned]->isVisible()*/) {
++        top = (d->sizes[TopPositioned] >= 0) ? d->sizes[TopPositioned] : d->itemPositions[TopPositioned]->sizeHint().height();
++        d->itemPositions[TopPositioned]->setGeometry(QRectF(origin, QSizeF(
++                rect.width(), top)));
++        top += spacing();
++    }
++
++    if (d->itemPositions[BottomPositioned] /*&& d->itemPositions[BottomPositioned]->isVisible()*/) {
++        bottom = (d->sizes[BottomPositioned] >= 0) ? d->sizes[BottomPositioned]
++                : d->itemPositions[BottomPositioned]->sizeHint().height();
++        d->itemPositions[BottomPositioned]->setGeometry(QRectF(origin + QPointF(0,
++                rect.height() - bottom), QSizeF(rect.width(),
++                bottom)));
++        bottom = rect.height() - bottom - spacing();
++    }
++
++    if (d->itemPositions[LeftPositioned] /*&& d->itemPositions[LeftPositioned]->isVisible()*/) {
++        left = (d->sizes[LeftPositioned] >= 0) ? d->sizes[LeftPositioned] : d->itemPositions[LeftPositioned]->sizeHint().width();
++        d->itemPositions[LeftPositioned]->setGeometry(QRectF(origin + QPointF(0, top),
++                QSizeF(left, bottom - top)));
++        left += spacing();
++    }
++
++    if (d->itemPositions[RightPositioned] /*&& d->itemPositions[RightPositioned]->isVisible()*/) {
++        right = (d->sizes[RightPositioned] >= 0) ? d->sizes[RightPositioned] : d->itemPositions[RightPositioned]->sizeHint().width();
++        d->itemPositions[RightPositioned]->setGeometry(QRectF(origin + QPointF(
++                rect.width() - right, top), QSizeF(right, bottom - top)));
++        right = rect.width() - right - spacing();
++    }
++
++    if (d->itemPositions[CenterPositioned] /*&& d->itemPositions[CenterPositioned]->isVisible()*/) {
++        d->itemPositions[CenterPositioned]->setGeometry(QRectF(
++                origin + QPointF(left, top), QSizeF(right - left, bottom - top)));
++    }
++}
++
++QSizeF BorderLayout::sizeHint() const
++{
++    qreal hintHeight = 0.0;
++    qreal hintWidth = 0.0;
++
++    if (d->itemPositions[TopPositioned] /*&& d->itemPositions[TopPositioned]->isVisible()*/) {
++        hintHeight += d->itemPositions[TopPositioned]->sizeHint().height();
++    }
++
++    if (d->itemPositions[BottomPositioned] /*&& d->itemPositions[BottomPositioned]->isVisible()*/) {
++        hintHeight += d->itemPositions[BottomPositioned]->sizeHint().height();
++    }
++
++    if (d->itemPositions[LeftPositioned] /*&& d->itemPositions[LeftPositioned]->isVisible()*/) {
++        hintWidth += d->itemPositions[LeftPositioned]->sizeHint().width();
++    }
++
++    if (d->itemPositions[RightPositioned] /*&& d->itemPositions[RightPositioned]->isVisible()*/) {
++        hintWidth += d->itemPositions[RightPositioned]->sizeHint().width();
++    }
++
++    if (d->itemPositions[CenterPositioned] /*&& d->itemPositions[CenterPositioned]->isVisible()*/) {
++        hintHeight += d->itemPositions[CenterPositioned]->sizeHint().height();
++        hintWidth += d->itemPositions[CenterPositioned]->sizeHint().width();
++    }
++
++    return QSizeF(hintWidth + 2 + margin(LeftMargin) + margin(RightMargin), hintHeight + 2 + margin(TopMargin) + margin(BottomMargin));
++}
++
++void BorderLayout::addItem(Plasma::LayoutItem * item)
++{
++    BorderLayout::addItem (item, CenterPositioned);
++}
++
++void BorderLayout::addItem(Plasma::LayoutItem * item, Position position)
++{
++    removeItem(item);
++    d->itemPositions[position] = item;
++    item->setManagingLayout(this);
++    updateGeometry();
++}
++
++void BorderLayout::removeItem(LayoutItem * item)
++{
++    QMutableMapIterator< Position, Plasma::LayoutItem * > i(d->itemPositions);
++    while (i.hasNext()) {
++        i.next();
++        if (i.value() == item) {
++            i.remove();
++            item->unsetManagingLayout(this);
++        }
++    }
++    updateGeometry();
++}
++
++int BorderLayout::count() const
++{
++    int count = 0;
++    foreach (Plasma::LayoutItem * i, d->itemPositions) {
++        if (i) {
++            ++count;
++        }
++    }
++    return count;
++}
++
++int BorderLayout::indexOf(LayoutItem * item) const
++{
++    int count = 0;
++    foreach (Plasma::LayoutItem * i, d->itemPositions) {
++        if (i) {
++            if (item == i) {
++                return count;
++            }
++            ++count;
++        }
++    }
++    return -1;
++}
++
++LayoutItem * BorderLayout::itemAt(int index) const
++{
++    int count = 0;
++    foreach (Plasma::LayoutItem * i, d->itemPositions) {
++        if (i) {
++            if (index == count) {
++                return i;
++            }
++            count++;
++
++        }
++    }
++
++    return 0;
++}
++
++Plasma::LayoutItem * BorderLayout::takeAt(int i)
++{
++    Plasma::LayoutItem * item = itemAt(i);
++    removeItem(item);
++    return item;
++}
++
++void BorderLayout::setSize(qreal size, Position border)
++{
++    d->sizes[border] = size;
++    updateGeometry();
++}
++
++void BorderLayout::setAutoSize(Position border)
++{
++    d->sizes[border] = -1;
++    updateGeometry();
++}
++
++qreal BorderLayout::size(Position border)
++{
++    if (border == CenterPositioned) {
++        return -1;
++    }
++    return d->sizes[border];
++}
++
++}
+--- /dev/null
++++ b/libs/plasma/layouts/layoutanimator.h
+@@ -0,0 +1,213 @@
++/*
++    Copyright 2007 by Robert Knight <robertknight at gmail.com>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++    02110-1301  USA.
++*/
++
++#ifndef __LAYOUTANIMATOR__
++#define __LAYOUTANIMATOR__ 
++
++#include <QtCore/QRectF>
++#include <QtCore/QObject>
++
++#include <plasma/plasma_export.h>
++
++class QTimeLine;
++
++namespace Plasma
++{
++
++class Layout;
++class LayoutItem;
++
++/** 
++ * LayoutAnimator can be used to animate changes
++ * in Layouts.
++ *
++ * @code
++ *
++ * LayoutAnimator* animator = new LayoutAnimator;
++ * QTimeLine* timeLine = new QTimeLine;
++ *
++ * animator->setTimeLine(timeLine);
++ * animator->setEffect( LayoutAnimator::InsertedState , LayoutAnimator::FadeInMoveEffect );
++ * animator->setEffect( LayoutAnimator::StandardState , LayoutAnimator::MoveEffect );
++ * animator->setEffect( LayoutAnimator::RemovedState , LayoutAnimator::FadeOutMoveEffect );
++ * myLayout->setAnimator(animator);
++ *
++ * @endcode
++ */
++class PLASMA_EXPORT LayoutAnimator : public QObject
++{
++Q_OBJECT
++
++public:
++    /** Constructs a new layout animator with the specified parent. */
++    explicit LayoutAnimator(QObject* parent = 0);
++    ~LayoutAnimator();
++
++    /**
++     * This enum describes the possible states which a layout item may be in.  
++     * Different effects can be defined for items which are being inserted, 
++     * moved or resized or removed from layouts.
++     */
++    enum State
++    {
++        /** 
++         * State for an item which has recently been added to a layout. 
++         * When the animation completes, the item's state will change to
++         * StandardState 
++         */
++        InsertedState,
++        /** 
++         * Normal state for items in the layout. 
++         * Items will remain in this state until it is explicitly changed
++         * via setCurrentState()
++         */
++        StandardState,
++        /** 
++         * State for an item which is currently being removed from a layout. 
++         * When the animation completes, the item will be removed from the 
++         * animator and its state will be undefined. 
++         */
++        RemovedState,
++        /**
++         * State for an item whoose geometry is not managed by the animator.
++         *
++         * All LayoutItems are initially in this state and are moved into a 
++         * different state ( usually InsertedState ) by calling
++         * setCurrentState( item , state )
++         *
++         * An item transitions into this state when the animation completes
++         * whilst the item is in RemovedState
++         */
++        DeadState
++    };
++
++    /** 
++     * This enum describes the available effects which can be used 
++     * to animate changes in a layout.
++     */
++    enum Effect
++    {
++        /** 
++         * No effect.  When the animation begins, the item immediately appears 
++         * in its final position and size. 
++         */
++        NoEffect,
++        /**
++         * The item is smoothly moved and resized from its initial geometry to its final
++         * geometry as the animation progresses. 
++         */
++        MoveEffect,
++        /** 
++         * The item fades out during the first half of the animation in its initial geometry
++         * and then fades in at its final position and size during the second half of
++         * the animation.
++         */
++        FadeEffect,
++        /**
++         * The item is initially invisible and fades in whilst moving and resizing to
++         * its final position as the animation progresses.
++         */
++        FadeInMoveEffect,
++        /**
++         * The item is initially fully opqaue and fades out whilst moving and resizing
++         * to its final position as the animation progresses.
++         */
++        FadeOutMoveEffect
++    };
++
++    /**
++     * Sets the @p effect for items in the layout which are under-going a change
++     * specified by @p action.
++     *
++     * This allows different effects to be defined for items which are being added to,
++     * removed from, or repositioned inside layouts.
++     */
++    void setEffect( State state , int effect );
++    /** See setEffect() */
++    int effect( State state ) const;
++
++    /** 
++     * Sets the current action for a particular layout item.  The Layout class
++     * should call this before changing an item so that the animator can apply the correct
++     * animation.
++     *
++     * When the current animation completes, depending on the current @p state, the item
++     * may advance into a new state.
++     */
++    void setCurrentState( LayoutItem* item , State state );
++    /** See setCurrentState() */
++    State state( LayoutItem* item ) const;
++
++    /** 
++     * Sets the new geometry for a layout item.  
++     * The item will animate from its current geometry to @p geometry, using
++     * the effect specified in setEffect() for the state currently associated
++     * with @p item 
++     */
++    virtual void setGeometry( LayoutItem* item , const QRectF& geometry );
++
++    /** 
++     * Sets the time line used by this animator. 
++     * 
++     * The duration of the animation can be changed by altering @p timeLine 's duration
++     */
++    void setTimeLine( QTimeLine* timeLine );
++    /** Returns the QTimeLine used by this animator. */
++    QTimeLine* timeLine() const;
++
++    /** 
++     * Convenience feature which causes LayoutItems and their associated
++     * QGraphicsItems to be automatically deleted when their removal 
++     * animation finishes.
++     *
++     * The default is false.
++     */
++    void setAutoDeleteOnRemoval(bool autoDelete);
++    /** See setAutoDeleteOnRemoval() */
++    bool autoDeleteOnRemoval() const;
++
++Q_SIGNALS:
++    /** This signal is emitted when the state of an item in the animator changes. */
++    void stateChanged( LayoutItem *item , State oldState , State newState );
++
++protected:
++    virtual void updateItem( qreal value , LayoutItem* item );
++
++private Q_SLOTS:
++    void valueChanged(qreal value);
++    void animationCompleted();
++    void itemAutoDeleter( LayoutItem *item , State oldState , State newState );
++
++private:
++    void moveEffectUpdateItem(qreal value,LayoutItem* item,Effect effect);
++    void noEffectUpdateItem(qreal value,LayoutItem* item);
++    void fadeEffectUpdateItem(qreal value,LayoutItem* item);
++
++    void animationFinished(LayoutItem* item);
++
++private:
++    class Private;
++    Private* const d;
++
++};
++
++}
++
++#endif // __LAYOUTANIMATOR__ 
++
+--- /dev/null
++++ b/libs/plasma/layouts/layout.cpp
+@@ -0,0 +1,234 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "layout.h"
++
++#include <math.h>
++
++#include <QtCore/QList>
++#include <QtCore/QTimeLine>
++#include <QtDebug>
++
++#include "widgets/widget.h"
++#include "layouts/layoutanimator.h"
++
++namespace Plasma
++{
++
++class Layout::Private
++{
++    public:
++        Private(LayoutItem* p)
++            : leftMargin(12.0),
++              rightMargin(12.0),
++              topMargin(12.0),
++              bottomMargin(12.0),
++              spacing(6.0),
++              parent(p),
++              animator(0),
++              relayouting(false)
++        {
++        }
++
++        ~Private() {}
++
++        qreal leftMargin;
++        qreal rightMargin;
++        qreal topMargin;
++        qreal bottomMargin;
++        qreal spacing;
++
++        LayoutItem *parent;
++        LayoutAnimator *animator;
++
++        bool relayouting;
++        QRectF geometry;
++};
++
++
++Layout::Layout(LayoutItem *parent)
++    : LayoutItem(),
++      d(new Private(parent))
++{
++    if (parent) {
++        parent->setLayout(this);
++    }
++}
++
++void Layout::setParent(LayoutItem *parent) {
++    d->parent = parent;
++}
++
++Layout::~Layout()
++{
++    if (parent()) {
++        parent()->setLayout(0);
++    }
++    delete d;
++}
++
++bool Layout::isEmpty() const 
++{
++    return count() == 0;
++}
++
++void Layout::updateGeometry()
++{
++    if (d->relayouting) {
++        return;
++    }
++
++    d->relayouting = true;
++    relayout();
++    d->relayouting = false;
++}
++
++QRectF Layout::geometry() const
++{
++    return d->geometry;
++}
++
++void Layout::setGeometry(const QRectF &geometry)
++{
++    if (!geometry.isValid() || geometry == d->geometry) {
++        return;
++    }
++
++    d->geometry = geometry;
++    invalidate();
++}
++
++void Layout::invalidate()
++{
++    if (d->relayouting) {
++        return;
++    }
++
++    d->relayouting = true;
++    // find and update the top level layout
++    Layout *layout = this;
++    Layout *parentLayout = 0;
++
++    do {
++        parentLayout = dynamic_cast<Layout*>(layout->parent());
++        if (parentLayout) {
++            if (parentLayout->d->relayouting) {
++                break;
++            }
++            layout = parentLayout;
++        }
++    } while (parentLayout);
++
++    layout->relayout();
++    d->relayouting = false;
++}
++
++
++LayoutAnimator* Layout::animator() const
++{
++    return d->animator;
++}
++
++void Layout::setAnimator(LayoutAnimator *animator)
++{
++    d->animator = animator;
++}
++
++qreal Layout::margin(MarginEdge edge) const
++{
++    switch (edge) {
++        case LeftMargin:
++            return d->leftMargin;
++            break;
++        case RightMargin:
++            return d->rightMargin;
++            break;
++        case TopMargin:
++            return d->topMargin;
++            break;
++        case BottomMargin:
++            return d->bottomMargin;
++            break;
++    }
++
++    return 0;
++}
++
++void Layout::setMargin(MarginEdge edge, qreal m)
++{
++    switch (edge) {
++        case LeftMargin:
++            d->leftMargin = m;
++            break;
++        case RightMargin:
++            d->rightMargin = m;
++            break;
++        case TopMargin:
++            d->topMargin = m;
++            break;
++        case BottomMargin:
++            d->bottomMargin = m;
++            break;
++    }
++}
++
++void Layout::setMargin(qreal m)
++{
++    d->leftMargin = m;
++    d->rightMargin = m;
++    d->topMargin = m;
++    d->bottomMargin = m;
++}
++
++qreal Layout::spacing() const
++{
++    return d->spacing;
++}
++
++void Layout::setSpacing(qreal s)
++{
++    d->spacing = s;
++}
++
++LayoutItem *Layout::parent() const
++{
++    return d->parent;
++}
++
++QSizeF Layout::minimumSize() const
++{
++    return QSizeF(0,0);
++}
++QSizeF Layout::maximumSize() const
++{
++    return QSizeF(INFINITY,INFINITY);
++}
++
++void Layout::startAnimation() 
++{
++    if (animator() && animator()->timeLine()) {
++        animator()->timeLine()->setCurrentTime(0);
++        if (animator()->timeLine()->state() == QTimeLine::NotRunning) {
++            animator()->timeLine()->start();
++        }
++    }
++}
++
++}
+--- /dev/null
++++ b/libs/plasma/layouts/freelayout.cpp
+@@ -0,0 +1,118 @@
++/*
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "freelayout.h"
++
++#include <KDebug>
++
++#include <plasma/layouts/layout.h>
++
++namespace Plasma
++{
++
++class FreeLayout::Private
++{
++public:
++    QList<LayoutItem*> children;
++};
++
++FreeLayout::FreeLayout(LayoutItem *parent)
++    : Layout(parent),
++      d(new Private)
++{
++}
++
++FreeLayout::~FreeLayout()
++{
++    delete d;
++}
++
++Qt::Orientations FreeLayout::expandingDirections() const
++{
++    return Qt::Horizontal | Qt::Vertical;
++}
++
++void FreeLayout::addItem(LayoutItem *item)
++{
++    if (d->children.contains(item)) {
++        return;
++    }
++
++    d->children << item;
++    item->setManagingLayout(this);
++}
++
++void FreeLayout::removeItem(LayoutItem *item)
++{
++    d->children.removeAll(item);
++    item->unsetManagingLayout(this);
++}
++
++int FreeLayout::indexOf(LayoutItem *item) const
++{
++    return d->children.indexOf(item);
++}
++
++LayoutItem * FreeLayout::itemAt(int i) const
++{
++    return d->children[i];
++}
++
++int FreeLayout::count() const
++{
++    return d->children.count();
++}
++
++LayoutItem * FreeLayout::takeAt(int i)
++{
++    return d->children.takeAt(i);
++}
++
++void FreeLayout::relayout()
++{
++    foreach (LayoutItem *child , d->children) {
++        if (child->geometry().size() != child->sizeHint()) {
++            child->setGeometry(QRectF(child->geometry().topLeft(), child->sizeHint()));
++        }
++    }
++}
++
++QRectF FreeLayout::geometry() const
++{
++    if (parent()) {
++        return parent()->geometry();
++    }
++
++    return QRectF(QPointF(0, 0), maximumSize());
++}
++
++QSizeF FreeLayout::sizeHint() const
++{
++    if (parent()) {
++        //kDebug() << "returning size hint from freelayout of" <<  parent()->geometry().size();
++        return parent()->geometry().size();
++    }
++
++    //kDebug() << "returning size hint from freelayout of" << maximumSize();
++    return maximumSize();
++}
++
++}
++
+--- /dev/null
++++ b/libs/plasma/layouts/borderlayout.h
+@@ -0,0 +1,97 @@
++/*
++ *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library/Lesser General Public License
++ *   version 2, or (at your option) any later version, as published by the
++ *   Free Software Foundation
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library/Lesser General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_BORDER_LAYOUT
++#define PLASMA_BORDER_LAYOUT
++
++#include <QtCore/QMap>
++
++#include <plasma/plasma_export.h>
++#include <plasma/plasma.h>
++#include <plasma/layouts/layout.h>
++
++namespace Plasma {
++
++/**
++ * A layout which lays one item per border (left, top, bottom, right)
++ * and one item in center.
++ *
++ * Similar to java.awt.BorderLayout from the Java's standard library
++ */
++class PLASMA_EXPORT BorderLayout : public Layout {
++public:
++
++    explicit BorderLayout(LayoutItem * parent = 0);
++    virtual ~BorderLayout();
++
++    virtual Qt::Orientations expandingDirections() const;
++
++    QSizeF sizeHint() const;
++
++    /**
++     * Adds item in the center. Equal to:
++     * addItem(item, Plasma::CenterPositioned);
++     */
++    void addItem(Plasma::LayoutItem * item);
++
++    /**
++     * Adds item at the specified position
++     */
++    void addItem(Plasma::LayoutItem * item, Position position);
++
++    void removeItem(Plasma::LayoutItem * item);
++
++    virtual int count() const;
++    virtual int indexOf(LayoutItem * item) const;
++    virtual LayoutItem * itemAt(int i) const;
++    virtual LayoutItem * takeAt(int i);
++
++    /**
++     * Deactivates the automatic sizing of a border widget,
++     * and sets it to the specified size.
++     *
++     * For left and right widgets, it sets the width; while
++     * for top and bottom ones, it sets the height.
++     */
++    void setSize(qreal size, Position border);
++
++    /**
++     * Activates the automatic sizing of a border widget,
++     * according to it's sizeHint()
++     */
++    void setAutoSize(Position border);
++
++    /**
++     * Returns the size of the specified border widget. If
++     * automatic sizing for that border widget is activated,
++     * it will return a value less than zero.
++     */
++    qreal size(Position border);
++
++protected:
++    void relayout();
++
++private:
++    class Private;
++    Private * const d;
++};
++
++}
++
++#endif /* PLASMA_BORDER_LAYOUT */
+--- /dev/null
++++ b/libs/plasma/layouts/vboxlayout.h
+@@ -0,0 +1,26 @@
++/*
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com> 
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_VBOXLAYOUT
++#define PLASMA_VBOXLAYOUT
++
++#include <plasma/layouts/boxlayout.h>
++
++#endif /* PLASMA_VBOXLAYOUT */
+--- /dev/null
++++ b/libs/plasma/layouts/layout.h
+@@ -0,0 +1,195 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef __LAYOUT__
++#define __LAYOUT__
++
++#include <QtCore/QRectF>
++#include <QtCore/QSizeF>
++
++#include <plasma/layouts/layoutitem.h>
++#include <plasma/plasma_export.h>
++
++namespace Plasma
++{
++
++class LayoutAnimator;
++
++/**
++ * Base class for Plasma Layout managers
++ *
++ * @author Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ * All layout managers must implement this class. Normal users should use the specific layouts,
++ * like Plasma::VBoxLayout, Plasma::HBoxLayout and Plasma::GridLayout.
++ */
++
++class PLASMA_EXPORT Layout : public LayoutItem
++{
++    public:
++        enum MarginEdge { TopMargin, BottomMargin, LeftMargin, RightMargin };
++
++        /**
++         * Constructor.
++         */
++        explicit Layout(LayoutItem *parent);
++
++        /**
++         * Virtual Destructor.
++         */
++        virtual ~Layout();
++
++        /**
++         * Returns the margin of this Layout.
++         */
++        qreal margin(MarginEdge edge) const;
++
++        /**
++         * Sets the margin of this Layout.
++         */
++        void setMargin(MarginEdge edge, qreal m);
++
++        /**
++         * Sets all the margins of this Layout.
++         */
++        void setMargin(qreal m);
++
++        /**
++         * Returns the spacing between Layout elements of this Layout.
++         */
++        qreal spacing() const;
++
++        /**
++         * Sets the spacing of this Layout.
++         */
++        void setSpacing(qreal s);
++
++        /**
++         * Returns the parent of this Layout.
++         */
++        LayoutItem *parent() const;
++
++        /**
++         * Sets the parent of this layout.
++         */
++        void setParent(LayoutItem *parent);
++
++        /**
++         * Returns the number of elements of this Layout.
++         */
++        virtual int count() const = 0;
++
++        /**
++         * Returns true if this Layout contains no elements, false otherwise.
++         */
++        bool isEmpty() const;
++
++        /**
++         * Adds a Item to this Layout.
++         * @param l Pointer to the Item to be added.
++         */
++        virtual void addItem(LayoutItem *l) = 0;
++
++         /**
++          * Removes a Item from this Layout.
++          * @param l Pointer to the Item to be removed.
++          */
++        virtual void removeItem(LayoutItem *l) = 0;
++
++        /**
++         * Returns the index of a Item in this Layout.
++         * @param l Pointer to an Item to be queryed.
++         */
++        virtual int indexOf(LayoutItem *l) const = 0;
++
++        /**
++         * Returns a Pointer to an Item in this Layout.
++         * @param i Index of the desired Item.
++         */
++        virtual LayoutItem *itemAt(int i) const = 0;
++
++        /**
++         * Takes the Pointer of an Item in this Layout.
++         * @param i Index of the desired Item.
++         */
++        virtual LayoutItem *takeAt(int i) = 0;
++
++        /**
++         * Returns the object controlling animation of changes
++         * in this layout or 0 if no animator has been set.
++         */
++        virtual LayoutAnimator* animator() const;
++
++        /** 
++         * Sets the object controlling animation of changes in this
++         * layout.
++         */
++        virtual void setAnimator( LayoutAnimator* animator );
++
++        /**
++         * Returns the current geometry for this layout
++         */
++        virtual QRectF geometry() const;
++
++        /**
++         * Changes the geometry of this layout
++         */
++        void setGeometry(const QRectF &geometry);
++
++        /** Triggers an update of the layout. */ 
++        void updateGeometry();
++
++        /** 
++         * Returns the minimum size of this layout.
++         * The default implementation allows unlimited resizing.
++         */
++        virtual QSizeF minimumSize() const;
++        /**
++         * Returns the maximum size of this layout.  The default
++         * implementation allows unlimited resizing.
++         */
++        virtual QSizeF maximumSize() const;      
++
++        /** TODO Document me */
++        void invalidate(); 
++
++    protected:
++        /**
++         * Triggers a layout, usually after a change in geometry
++         */
++        virtual void relayout() = 0;
++
++        /**
++         * Starts a layout animation.  Subclasses may call this 
++         * at the end of their relayout() implementation to
++         * start the timeline associated with the layout's animator()
++         * if there is one.  If an animation is already in progress then
++         * the timeline is reset to 0ms and the animation continues.
++         */
++        void startAnimation();
++
++    private:
++        class Private;
++        Private *const d;
++};
++
++}
++
++#endif /* __LAYOUT__ */
+--- /dev/null
++++ b/libs/plasma/layouts/nodelayout.cpp
+@@ -0,0 +1,237 @@
++/*
++ *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library/Lesser General Public License
++ *   version 2, or (at your option) any later version, as published by the
++ *   Free Software Foundation
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library/Lesser General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "nodelayout.h"
++
++#include <QPair>
++#include <QMap>
++
++namespace Plasma
++{
++NodeLayout::NodeCoordinate::NodeCoordinate(qreal xRelative, qreal yRelative, qreal xAbsolute, qreal yAbsolute)
++    : xr(xRelative), xa(xAbsolute), yr(yRelative), ya(yAbsolute) {}
++
++NodeLayout::NodeCoordinate NodeLayout::NodeCoordinate::simple(qreal x, qreal y,
++        CoordinateType xType, CoordinateType yType)
++{
++    NodeLayout::NodeCoordinate coo;
++    switch (xType) {
++    case Relative:
++        coo.xr = x;
++        coo.xa = 0;
++        break;
++    case Absolute:
++        coo.xr = 0;
++        coo.xa = x;
++        break;
++    case InnerRelative:
++        coo.xr = x;
++        coo.xa = INFINITY;
++        break;
++    }
++
++    switch (yType) {
++    case Relative:
++        coo.yr = y;
++        coo.ya = 0;
++        break;
++    case Absolute:
++        coo.yr = 0;
++        coo.ya = y;
++        break;
++    case InnerRelative:
++        coo.yr = y;
++        coo.ya = INFINITY;
++        break;
++    }
++    return coo;
++}
++
++class NodeLayout::Private {
++public:
++    QMap <LayoutItem * , QPair < NodeCoordinate, NodeCoordinate > > items;
++    QRectF geometry;
++    QSizeF sizeHint;
++
++    qreal calculateXPosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
++    {
++        return parentGeometry.left() + (coo.xr * parentGeometry.width())  + coo.xa;
++    }
++
++    qreal calculateYPosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
++    {
++        return parentGeometry.top() + (coo.yr * parentGeometry.height())  + coo.ya;
++    }
++
++    QPointF calculatePosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
++    {
++        return QPointF(
++            calculateXPosition(coo, geometry),
++            calculateYPosition(coo, geometry)
++        );
++    }
++
++
++    QRectF calculateRectangle(LayoutItem * item, QRectF geometry = QRectF()) const
++    {
++        if (geometry == QRectF()) geometry = this->geometry;
++
++        QRectF result;
++        if (!item || !items.contains(item)) return QRectF();
++
++        result.setTopLeft(calculatePosition(items[item].first, geometry));
++
++        if (items[item].second.xa != INFINITY) {
++            result.setRight(calculateXPosition(items[item].second, geometry));
++        } else {
++            result.setWidth(item->sizeHint().width());
++            result.moveLeft(result.left() - items[item].second.xr * result.width());
++        }
++
++        if (items[item].second.ya != INFINITY) {
++            result.setBottom(calculateYPosition(items[item].second, geometry));
++        } else {
++            result.setHeight(item->sizeHint().height());
++            result.moveTop(result.top() - items[item].second.yr * result.height());
++        }
++
++        return result;
++    }
++
++    void calculateSizeHint(LayoutItem * item = NULL) {
++        if (item == NULL) {
++            // Recalculate the sizeHint using all items
++            sizeHint = QSizeF();
++            foreach (LayoutItem * item, items.keys()) {
++                if (item) {
++                    calculateSizeHint(item);
++                }
++            }
++        } else {
++            // Calculate size hint for current item
++            QRectF scaled = calculateRectangle(item, QRectF(0, 0, 1, 1));
++
++            // qMin(..., 1.0) so that for autosized elements we don't get smaller
++            // size than the item's size itself. The sizeHint for NodeLayout can
++            // not do anything smarter concerning the sizeHint when there are
++            // autosized elements.
++
++            qreal width  = item->sizeHint().width()  / qMin(scaled.width(), 1.0);
++            qreal height = item->sizeHint().height() / qMin(scaled.height(), 1.0);
++
++            if (width > sizeHint.width())   sizeHint.setWidth(width);
++            if (height > sizeHint.height()) sizeHint.setHeight(height);
++        }
++    }
++
++};
++
++
++NodeLayout::NodeLayout(LayoutItem * parent) 
++  : Layout(parent), d(new Private())
++{
++}
++
++NodeLayout::~NodeLayout()
++{
++    delete d;
++}
++
++Qt::Orientations NodeLayout::expandingDirections() const
++{
++    return Qt::Horizontal | Qt::Vertical;
++}
++
++void NodeLayout::relayout()
++{
++    foreach (LayoutItem * item, d->items.keys()) {
++        if (item) {
++            item->setGeometry(d->calculateRectangle(item));
++        }
++    }
++}
++
++QSizeF NodeLayout::sizeHint() const
++{
++    return d->sizeHint;
++}
++
++void NodeLayout::addItem (LayoutItem * item)
++{
++    NodeLayout::addItem (item, NodeCoordinate());
++}
++
++void NodeLayout::addItem (LayoutItem * item, NodeCoordinate topLeft, NodeCoordinate bottomRight)
++{
++    if (!item) {
++        return;
++    }
++
++    d->items[item] = QPair<NodeCoordinate, NodeCoordinate>(topLeft, bottomRight);
++    item->setManagingLayout(this);
++    d->calculateSizeHint(item);
++}
++
++void NodeLayout::addItem (LayoutItem * item, NodeCoordinate node, qreal xr, qreal yr)
++{
++    if (!item) {
++        return;
++    }
++
++    d->items[item] = QPair<NodeCoordinate, NodeCoordinate>(node,
++        NodeCoordinate::simple(xr, yr, NodeCoordinate::InnerRelative, NodeCoordinate::InnerRelative));
++    item->setManagingLayout(this);
++    d->calculateSizeHint(item);
++}
++
++void NodeLayout::removeItem (LayoutItem * item)
++{
++    if (!item) {
++        return;
++    }
++
++    item->unsetManagingLayout(this);
++    d->items.remove(item);
++    d->calculateSizeHint();
++}
++
++int NodeLayout::count() const
++{
++    return d->items.count();
++}
++
++int NodeLayout::indexOf(LayoutItem * item) const
++{
++    if (!item) return -1;
++    return d->items.keys().indexOf(item);
++}
++
++LayoutItem * NodeLayout::itemAt(int i) const
++{
++    return d->items.keys()[i];
++}
++
++LayoutItem * NodeLayout::takeAt(int i)
++{
++    LayoutItem * item = itemAt(i);
++    removeItem(item);
++    return item;
++}
++
++}
+--- /dev/null
++++ b/libs/plasma/layouts/freelayout.h
+@@ -0,0 +1,71 @@
++/*
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_FREE_LAYOUT_H
++#define PLASMA_FREE_LAYOUT_H
++
++#include <QtCore/QList>
++
++#include <plasma/plasma_export.h>
++#include <plasma/layouts/layout.h>
++
++namespace Plasma
++{
++
++/**
++ * The FreeLayout class is a layout for use in desktop-like workspaces where
++ * items can be moved around freely and applets and widgets are allowed
++ * to determine their own size.
++ *
++ * Whenever this layout is updated, all child items are resized to
++ * their sizeHint() and left in their existing positions.
++ */
++class PLASMA_EXPORT FreeLayout : public Layout
++{
++    public:
++        /**
++         * Creates a new free layout
++         */
++        explicit FreeLayout(LayoutItem *parent = 0);
++        ~FreeLayout();
++
++        // reimplemented from Layout
++        virtual void addItem(LayoutItem *l);
++        virtual void removeItem(LayoutItem *l);
++        virtual int indexOf(LayoutItem *l) const;
++        virtual LayoutItem *itemAt(int i) const;
++        virtual LayoutItem *takeAt(int i);
++        virtual Qt::Orientations expandingDirections() const;
++        virtual QRectF geometry() const;
++        virtual int count() const;
++
++        virtual QSizeF sizeHint() const;
++
++    protected:
++        void relayout();
++
++    private:
++        class Private;
++        Private *const d;
++};
++
++}
++
++#endif /* PLASMA_FREE_LAYOUT_H */
+--- /dev/null
++++ b/libs/plasma/layouts/boxlayout.cpp
+@@ -0,0 +1,463 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "boxlayout.h"
++
++#include <QtCore/QList>
++#include <QtCore/QTimeLine>
++
++#include <KDebug>
++
++#include "layoutanimator.h"
++
++namespace Plasma
++{
++
++class BoxLayout::Private
++{
++public:
++    BoxLayout *const q;
++    Direction direction;
++    QList<LayoutItem*> children;
++
++    Private(BoxLayout *parent)
++        : q(parent)
++        , direction(LeftToRight)
++    {
++    }
++
++    // returns the component of 'size' in the expanding direction
++    // of this layout
++    qreal size(const QSizeF& size) const
++    {
++        switch (direction) {
++            case LeftToRight:
++            case RightToLeft:
++                return size.width();
++            case TopToBottom:
++            case BottomToTop:
++                return size.height();
++            default:
++                Q_ASSERT(false);
++                return 0;
++        }
++    }
++
++    // returns the direction in which this layout expands
++    // or shrinks
++    Qt::Orientation expandingDirection() const
++    {
++        switch ( direction ) {
++            case LeftToRight:
++            case RightToLeft:
++                return Qt::Horizontal;
++            case TopToBottom:
++            case BottomToTop:
++                return Qt::Vertical;
++            default:
++                Q_ASSERT(false);
++                return Qt::Horizontal;
++        }
++    }
++
++    // returns the position from which layouting should
++    // begin depending on the direction of this layout
++    qreal startPos(const QRectF& geometry) const
++    {
++        switch ( direction ) {
++            case LeftToRight:
++                return q->margin(LeftMargin);
++            case TopToBottom:
++                return q->margin(TopMargin);
++            case RightToLeft:
++                return geometry.width() - q->margin(RightMargin);
++            case BottomToTop:
++                return geometry.height() - q->margin(BottomMargin);
++            default:
++                Q_ASSERT(false);
++                return 0;
++        }
++    }
++
++    // lays out an item
++    //
++    // 'geometry' the geometry of the layout
++    // 'item' the item whoose geometry should be altered
++    // 'pos' the position of the item (in the expanding direction of the layout)
++    // 'size' the size of the item (in the expanding direction of the layout)
++    //
++    // returns the position for the next item in the layout
++    //
++    qreal layoutItem(const QRectF& geometry , LayoutItem *item , const qreal pos , qreal size)
++    {
++        //qDebug() << "layoutItem: " << direction << "item size" << size;
++
++        QRectF newGeometry;
++        qreal newPos = 0;
++
++        qreal top = 0;
++        qreal height = 0;
++
++        QSizeF minSize = item->minimumSize();
++        QSizeF maxSize = item->maximumSize();
++        switch ( direction ) {
++            case LeftToRight:
++            case RightToLeft:
++               height = qBound(minSize.height(),geometry.height(),maxSize.height());
++               top = geometry.top();
++               break;
++            case TopToBottom:
++            case BottomToTop:
++               height = qBound(minSize.width(),geometry.width(),maxSize.width());
++               top = geometry.left();
++               break;
++        }
++
++        switch ( direction ) {
++            case LeftToRight:
++                newGeometry = QRectF(pos,top,size,height);
++                newPos = pos+size+q->spacing();
++                break;
++            case RightToLeft:
++                newGeometry = QRectF(geometry.width()-pos-size,top,
++                                     size,height);
++                newPos = pos-size-q->spacing();
++                break;
++            case TopToBottom:
++                newGeometry = QRectF(top,pos,height,size);
++                newPos = pos+size+q->spacing();
++                break;
++            case BottomToTop:
++                newGeometry = QRectF(top,geometry.height()-pos-size,
++                                     height,size);
++                newPos = pos-size-q->spacing();
++                break;
++        }
++
++       // qDebug() << "Item geometry: " << newGeometry;
++
++        if (q->animator()) {
++            q->animator()->setGeometry(item, newGeometry);
++        } else {
++            item->setGeometry(newGeometry);
++        }
++
++        return newPos;
++    }
++
++    enum SizeType
++    {
++        MinSize,
++        MaxSize,
++        HintSize
++    };
++
++    // this provides a + function which can be passed as the 'op'
++    // argument to calculateSize
++    static qreal sum(const qreal a , const qreal b)
++    {
++        return a+b;
++    }
++
++    // calcualtes a size hint or value for this layout
++    // 'sizeType' - The item size ( minimum , maximum , hint ) to use
++    // 'dir' - The direction component of the item size to use
++    // 'op' - A function to apply to the size of each item in the layout
++    //        , usually qMax,qMin or sum
++    template <class T>
++    qreal calculateSize(SizeType sizeType , Qt::Orientation dir , T (*op)(T,T)) const
++    {
++        qreal value = 0;
++        for ( int i = 0 ; i < children.count() ; i++ ) {
++
++            QSizeF itemSize;
++            switch ( sizeType ) {
++                case MinSize:
++                    itemSize = children[i]->minimumSize();
++                    break;
++                case MaxSize:
++                    itemSize = children[i]->maximumSize();
++                    break;
++                case HintSize:
++                    itemSize = children[i]->sizeHint();
++                    break;
++            }
++
++            if ( dir == Qt::Horizontal ) {
++                value = op(value,itemSize.width());
++            } else {
++                value = op(value,itemSize.height());
++            }
++        }
++
++        return value;
++    }
++
++    // calculates a size hint or value for this layout
++    // 'calculateSizeType' specifies the value to be calculated
++    QSizeF calculateSize(SizeType calculateSizeType) const
++    {
++        QSizeF result;
++
++        const qreal totalSpacing = q->spacing() * (children.count()-1);
++
++        switch ( direction ) {
++            case LeftToRight:
++            case RightToLeft:
++                result = QSizeF(calculateSize(calculateSizeType,Qt::Horizontal,sum),
++                                calculateSize(calculateSizeType,Qt::Vertical,qMax<qreal>));
++
++                result.rwidth() += q->margin(LeftMargin) + q->margin(RightMargin) + totalSpacing;
++                result.rheight() += q->margin(TopMargin) + q->margin(BottomMargin);
++
++                break;
++            case TopToBottom:
++            case BottomToTop:
++                result = QSizeF(calculateSize(calculateSizeType,Qt::Horizontal,qMax<qreal>),
++                                calculateSize(calculateSizeType,Qt::Vertical,sum));
++
++                result.rheight() += q->margin(TopMargin) + q->margin(BottomMargin) + totalSpacing;
++                result.rwidth() += q->margin(LeftMargin) + q->margin(RightMargin);
++
++                break;
++        }
++
++        return result;
++    }
++};
++
++
++BoxLayout::BoxLayout(Direction direction , LayoutItem *parent)
++    : Layout(parent),
++      d(new Private(this))
++{
++    d->direction = direction;
++}
++
++void BoxLayout::setDirection(Direction direction)
++{
++    d->direction = direction;
++    updateGeometry();
++}
++BoxLayout::Direction BoxLayout::direction() const
++{
++    return d->direction;
++}
++
++BoxLayout::~BoxLayout()
++{
++    foreach (LayoutItem* item, d->children) {
++        item->unsetManagingLayout(this);
++    }
++    delete d;
++}
++
++Qt::Orientations BoxLayout::expandingDirections() const
++{
++    switch ( d->direction ) {
++        case LeftToRight:
++        case RightToLeft:
++            return Qt::Horizontal;
++        case TopToBottom:
++        case BottomToTop:
++            return Qt::Vertical;
++        default:
++            Q_ASSERT(false);
++            return 0;
++    }
++}
++
++int BoxLayout::count() const
++{
++    return d->children.count();
++}
++
++void BoxLayout::insertItem(int index, LayoutItem *item)
++{
++    if (!item || d->children.contains(item)) {
++        return;
++    }
++
++    item->setManagingLayout(this);
++
++    if (index == -1) {
++        index = d->children.size();
++    }
++
++    d->children.insert(index, item);
++
++    if (animator())  {
++        animator()->setCurrentState(item, LayoutAnimator::InsertedState);
++    }
++
++    updateGeometry();
++}
++
++void BoxLayout::addItem(LayoutItem *item)
++{
++    insertItem(-1, item);
++}
++
++void BoxLayout::removeItem(LayoutItem *item)
++{
++    if (!item) {
++        return;
++    }
++
++    item->unsetManagingLayout(this);
++    d->children.removeAll(item);
++
++    if ( animator() )
++        animator()->setCurrentState(item,LayoutAnimator::RemovedState);
++
++    updateGeometry();
++}
++
++int BoxLayout::indexOf(LayoutItem *l) const
++{
++    return d->children.indexOf(l);
++}
++
++LayoutItem *BoxLayout::itemAt(int i) const
++{
++    return d->children[i];
++}
++
++LayoutItem *BoxLayout::takeAt(int i)
++{
++    return d->children.takeAt(i);
++
++    updateGeometry();
++}
++
++void BoxLayout::relayout()
++{
++    QRectF margined = geometry().adjusted(margin(LeftMargin), margin(TopMargin), -margin(RightMargin), -margin(BottomMargin));
++
++    //qDebug() << "geo before " << geo << "and with margins" << margined << "margins" << margin(LeftMargin)
++    //         << margin(TopMargin) <<  -margin(RightMargin) << -margin(BottomMargin);
++    //qDebug() << "Box layout beginning with geo" << geometry;
++    //qDebug() << "This box max size" << maximumSize();
++
++    QVector<qreal> sizes(count());
++    QVector<qreal> expansionSpace(count());
++
++    qreal available = d->size(margined.size()) - spacing() * (d->children.count()-1);
++    qreal perItemSize = available / count();
++
++    // initial distribution of space to items
++    for ( int i = 0 ; i < sizes.count() ; i++ ) {
++        const LayoutItem *item = d->children[i];
++
++        const bool isExpanding = item->expandingDirections() & d->expandingDirection();
++
++        if ( isExpanding )
++            sizes[i] = perItemSize;
++        else
++            sizes[i] = d->size(item->sizeHint());
++
++        const qreal minItemSize = d->size(item->minimumSize());
++        const qreal maxItemSize = d->size(item->maximumSize());
++
++       // qDebug() << "Layout max item " << i << "size: " << maxItemSize;
++
++        sizes[i] = qMin( sizes[i] , maxItemSize );
++        sizes[i] = qMax( sizes[i] , minItemSize );
++
++       // qDebug() << "Available: " << available << "per item:" << perItemSize <<
++       //     "Initial size: " << sizes[i];
++
++        if ( isExpanding )
++            expansionSpace[i] = maxItemSize-sizes[i];
++        else
++            expansionSpace[i] = 0;
++
++        available -= sizes[i];
++        // adjust the per-item size if the space was over or under used
++        if ( sizes[i] != perItemSize && i != sizes.count()-1 ) {
++            perItemSize = available / (sizes.count()-i-1);
++        }
++    }
++
++    // distribute out any remaining space to items which can still expand
++    //
++    // space is distributed equally amongst remaining items until we run
++    // out of space or items to expand
++    int expandable = sizes.count();
++    const qreal threshold = 1.0;
++    while ( available > threshold && expandable > 0 ) {
++
++        qreal extraSpace = available / expandable;
++        for ( int i = 0 ; i < sizes.count() ; i++ ) {
++            if ( expansionSpace[i] > threshold ) {
++                qreal oldSize = sizes[i];
++
++                sizes[i] += qMin(extraSpace,expansionSpace[i]);
++
++                expansionSpace[i] -= sizes[i]-oldSize;
++                available -= sizes[i]-oldSize;
++            } else {
++                expandable--;
++            }
++        }
++    }
++
++    // set items' geometry according to new sizes
++    qreal pos = d->startPos(geometry());
++    for ( int i = 0 ; i < sizes.count() ; i++ ) {
++
++        //QObject *obj = dynamic_cast<QObject*>(d->children[i]);
++        //if ( obj )
++        //qDebug() << "Item " << i << obj->metaObject()->className() << "size:" << sizes[i];
++
++       pos = d->layoutItem(margined, d->children[i], pos , sizes[i]);
++    }
++
++    startAnimation();
++}
++
++
++QSizeF BoxLayout::maximumSize() const
++{
++    return Layout::maximumSize();
++}
++QSizeF BoxLayout::minimumSize() const
++{
++    return d->calculateSize(Private::MinSize);
++}
++QSizeF BoxLayout::sizeHint() const
++{
++    return d->calculateSize(Private::HintSize);
++}
++
++HBoxLayout::HBoxLayout(LayoutItem *parent)
++    : BoxLayout(LeftToRight,parent)
++{
++}
++
++VBoxLayout::VBoxLayout(LayoutItem *parent)
++    : BoxLayout(TopToBottom,parent)
++{
++}
++
++
++} // Plasma namespace
++
+--- /dev/null
++++ b/libs/plasma/layouts/nodelayout.h
+@@ -0,0 +1,119 @@
++/*
++ *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library/Lesser General Public License
++ *   version 2, or (at your option) any later version, as published by the
++ *   Free Software Foundation
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library/Lesser General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_NODE_LAYOUT
++#define PLASMA_NODE_LAYOUT
++
++#include <QtCore/QMap>
++#include <cmath>
++
++#include <plasma/plasma_export.h>
++#include <plasma/plasma.h>
++#include <plasma/layouts/layout.h>
++
++namespace Plasma {
++
++/**
++ * Node layout has an advanced layouting mechanism. Every item's position
++ * is defined by two nodes - one for top-left corner, and the other one for
++ * bottom-right corner.
++ * 
++ * Each node is defined by a pair of relative (xr, yr) and a pair of 
++ * absolute (xa, ya) coordinates. The calculated node coordinates depend
++ * on the size and position of the NodeLayout object in the following
++ * manner:
++ *   x = layoutLeft + (xr * layoutWidth)  + xa
++ *   y = layoutTop  + (yr * layoutHeight) + ya
++ *
++ * Alternatively, the item's position can be defined by using one node and
++ * one pair of relative coordinates (xr, yr). In that case, the item is sized
++ * following the sizeHint(). The relative coordinates (this time they are 
++ * relative to the item's geometry, not the layout's) specify what point of
++ * the item will be bound to the defined node.
++ */
++
++class PLASMA_EXPORT NodeLayout : public Layout {
++public:
++    class PLASMA_EXPORT NodeCoordinate {
++    public:
++        /**
++         * Position is calculated:
++         * x = parentLeft + (xRelative * parentWidth)  + xAbsolute
++         * y = parentTop  + (yRelative * parentHeight) + yAbsolute
++         */
++        NodeCoordinate(qreal xRelative = 0, qreal yRelative = 0, qreal xAbsolute = 0, qreal yAbsolute = 0);
++
++        enum CoordinateType {
++            Relative = 0,
++            Absolute = 1,
++            InnerRelative = 2 };
++
++        static NodeCoordinate simple(qreal x, qreal y, CoordinateType xType = Relative, CoordinateType yType = Relative);
++
++        float xr, xa;
++        float yr, ya;
++    };
++
++    // reimplemented
++    virtual Qt::Orientations expandingDirections() const;
++
++    explicit NodeLayout(LayoutItem * parent = 0);
++    virtual ~NodeLayout();
++
++    QSizeF sizeHint() const;
++
++    /**
++     * Adds item at top-left corner, with automatic sizing
++     * (using sizeHint of the item)
++     */
++    void addItem (LayoutItem * item);
++
++    /**
++     * Adds item with specified top-left and bottom right corners.
++     */
++    void addItem (LayoutItem * item,
++            NodeCoordinate topLeft, NodeCoordinate bottomRight);
++
++    /**
++     * Adds item with automatic sizing turned on. xr and yr specify
++     * which point of the item is bound to node coordinate. Those
++     * are relative coordinates so (0, 0) represent top left corner,
++     * (0.5, 0.5) represent the center of the item etc.
++     */
++    void addItem (LayoutItem * item,
++            NodeCoordinate node, qreal xr = 0, qreal yr = 0);
++
++    void removeItem (LayoutItem * item);
++
++    virtual int count() const;
++    virtual int indexOf(LayoutItem * item) const;
++    virtual LayoutItem * itemAt(int i) const;
++    virtual LayoutItem * takeAt(int i);
++
++protected:
++    void relayout();
++
++private:
++    class Private;
++    Private * const d;
++};
++
++}
++
++#endif /* PLASMA_NODE_LAYOUT */
+--- /dev/null
++++ b/libs/plasma/layouts/boxlayout.h
+@@ -0,0 +1,119 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef PLASMA_BOX_LAYOUT
++#define PLASMA_BOX_LAYOUT
++
++#include <QtCore/QList>
++
++#include <plasma/plasma_export.h>
++#include <plasma/layouts/layout.h>
++
++namespace Plasma
++{
++
++/**
++ * The BoxLayout class lays out items in a horizontal or vertical line.
++ */
++class PLASMA_EXPORT BoxLayout : public Layout
++{
++    public:
++        /** 
++         * This enum describes the directions in which items can be laid 
++         * out.
++         */
++        enum Direction
++        {
++            /** Lay items out horizontally, from left to right. */
++            LeftToRight,
++            /** Lay items out horizontally, from right to left. */
++            RightToLeft,
++            /** Lay items out vertically, from top to bottom. */
++            TopToBottom,
++            /** Lay items out vertically, from bottom to top. */
++            BottomToTop
++        };
++
++        /**
++         * Creates a new box layout which lays items out in the specified
++         * @p direction
++         */
++        explicit BoxLayout(Direction direction , LayoutItem *parent = 0);
++        ~BoxLayout();
++
++        /** Sets the direction in which items are laid out. */
++        void setDirection(Direction direction);
++        /** Returns the direction in which items are laid out. */
++        Direction direction() const;
++
++        /** Inserts a new item into the layout at the specified index. */
++        void insertItem(int index, LayoutItem *l);
++
++        // reimplemented from Layout
++        virtual void addItem(LayoutItem *l);
++        virtual void removeItem(LayoutItem *l);
++        virtual int indexOf(LayoutItem *l) const;
++        virtual LayoutItem *itemAt(int i) const;
++        virtual LayoutItem *takeAt(int i);
++        virtual Qt::Orientations expandingDirections() const;
++        virtual int count() const;
++
++        virtual QSizeF minimumSize() const;
++        virtual QSizeF maximumSize() const;
++        virtual QSizeF sizeHint() const;
++
++    protected:
++        void relayout();
++
++    private:
++        class Private;
++        Private *const d;
++};
++
++/** 
++ * A BoxLayout which defaults to laying items out 
++ * horizontally in a left-to-right order.
++ *
++ * Equivalent to creating a BoxLayout and passing LeftToRight
++ * in the constructor.
++ */
++class PLASMA_EXPORT HBoxLayout : public BoxLayout 
++{
++public:
++    explicit HBoxLayout(LayoutItem *parent = 0);
++};
++
++/**
++ * A BoxLayout which defaults to laying items out
++ * vertically in a top-to-bottom order.
++ *
++ * Equivalent to creating a BoxLayout and passing TopToBottom
++ * in the constructor.
++ */
++class PLASMA_EXPORT VBoxLayout : public BoxLayout 
++{
++public:
++    explicit VBoxLayout(LayoutItem *parent = 0);
++};
++
++}
++
++#endif /* PLASMA_BOX_LAYOUT */
+--- /dev/null
++++ b/libs/plasma/layouts/layoutitem.cpp
+@@ -0,0 +1,142 @@
++/*
++ *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "layoutitem.h"
++
++#include <KDebug>
++
++#include "layout.h"
++
++namespace Plasma
++{
++
++class LayoutItem::Private
++{
++    public:
++        Private()
++            : layout(0),
++              managingLayout(0)
++        {
++        }
++
++        ~Private() {}
++
++        Layout* layout;
++        Layout* managingLayout;
++};
++
++
++LayoutItem::LayoutItem()
++    : d(new Private())
++{
++}
++
++LayoutItem::~LayoutItem()
++{
++    if (d->managingLayout) {
++        d->managingLayout->removeItem(this);
++    }
++
++    delete d->layout;
++    delete d;
++}
++
++QGraphicsItem* LayoutItem::graphicsItem() 
++{
++    return 0;
++}
++
++bool LayoutItem::hasHeightForWidth() const
++{
++    return false;
++}
++
++qreal LayoutItem::heightForWidth(qreal w) const
++{
++    return 0.0;
++}
++
++bool LayoutItem::hasWidthForHeight() const
++{
++    return false;
++}
++
++qreal LayoutItem::widthForHeight(qreal h) const
++{
++    return 0.0;
++}
++
++void LayoutItem::setLayout(Layout* layout)
++{
++    if (d->layout && layout) {
++        kDebug() << "already have a layout.";
++        return;
++    }
++
++    if (layout) {
++        layout->setParent(this);
++    } else if (d->layout) {
++        // FIXME: we had a layout, but now it has been removed
++        // and we are without layout; we should tell our
++        // children about this, but LayoutItem doesn't know
++        // about children =/
++        kDebug() << "layout removed from under us. expect crashes";
++    }
++
++    d->layout = layout;
++}
++
++Layout* LayoutItem::layout() const
++{
++    return d->layout;
++}
++
++void LayoutItem::setManagingLayout(Layout* layout)
++{
++    if (layout == d->managingLayout) {
++        return;
++    }
++
++    if (d->managingLayout) {
++        d->managingLayout->removeItem(this);
++    }
++
++    d->managingLayout = layout;
++    managingLayoutChanged();
++}
++
++void LayoutItem::unsetManagingLayout(Layout* layout)
++{
++    if (d->managingLayout == layout) {
++        d->managingLayout = 0;
++    }
++    managingLayoutChanged();
++}
++
++void LayoutItem::managingLayoutChanged()
++{
++}
++
++Layout* LayoutItem::managingLayout() const
++{
++    return d->managingLayout;
++}
++
++}
+--- a/libs/plasma/corona.cpp
++++ b/libs/plasma/corona.cpp
+@@ -37,8 +37,7 @@
+ #include "containment.h"
+ #include "dataengine.h"
+ #include "phase.h"
+-#include "widgets/freelayout.h"
+-#include "widgets/boxlayout.h"
++#include "layouts/layout.h"
+ #include "widgets/icon.h"
+ 
+ using namespace Plasma;
+@@ -157,7 +156,7 @@
+             if (c) {
+                 addItem(c);
+                 containments.insert(c->id(), c);
+-                c->initConstraints(&appletConfig);
++                c->loadConstraints(&appletConfig);
+                 //kDebug() << "Containment" << c->id() << "geometry is" << c->geometry().toRect() << "config'd with" << appletConfig.name();
+             }
+         } else {
+@@ -182,8 +181,15 @@
+ 
+         //kDebug() << "creating applet " << cg.name() << "in containment" << cid << "at geometry" << cg.readEntry("geometry", QRectF());
+         int appId = cg.name().left(cg.name().indexOf('-')).toUInt();
+-        c->addApplet(cg.readEntry("plugin", QString()), QVariantList(),
+-                     appId, cg.readEntry("geometry", QRectF()), true);
++        Applet *applet = c->addApplet(cg.readEntry("plugin", QString()), QVariantList(),
++                                      appId, cg.readEntry("geometry", QRectF()), true);
++        QList<qreal> m = cg.readEntry("transform", QList<qreal>());
++        if (m.count() == 9) {
++            QTransform t(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8]);
++            // FIXME: the transform does not stick; it gets set then almost immediately reset.
++            //        find out why and then reenable this
++            //applet->setTransform(t);
++        }
+     }
+ 
+     foreach (Containment* c, containments) {
+@@ -274,7 +280,7 @@
+ {
+     foreach (Containment* containment, d->containments) {
+         if (containment->screen() == screen &&
+-            containment->type() == Containment::DesktopContainment) {
++            containment->containmentType() == Containment::DesktopContainment) {
+             return containment;
+         }
+     }
+@@ -322,6 +328,8 @@
+         containment->setFormFactor(Plasma::Planar);
+     }
+ 
++    containment->setIsContainment(true);
++
+     if (!delayedInit) {
+         addItem(containment);
+         containment->init();
+@@ -330,6 +338,8 @@
+     d->containments.append(containment);
+     connect(containment, SIGNAL(destroyed(QObject*)),
+             this, SLOT(containmentDestroyed(QObject*)));
++    connect(containment, SIGNAL(launchActivated()),
++            SIGNAL(launchActivated()));
+ 
+     return containment;
+ }
+--- a/libs/plasma/plasma.h
++++ b/libs/plasma/plasma.h
+@@ -21,6 +21,7 @@
+ #define PLASMA_DEFS_H
+ 
+ #include <QtGui/QGraphicsItem>
++#include <QtGui/QPainterPath>
+ 
+ #include <plasma/plasma_export.h>
+ 
+@@ -136,6 +137,11 @@
+  **/
+ PLASMA_EXPORT Direction locationToDirection(Location location);
+ 
++/**
++ * Returns a nicely rounded rectanglular path for painting.
++ */
++PLASMA_EXPORT QPainterPath roundedRectangle(const QRectF& rect, qreal radius);
++
+ } // Plasma namespace
+ 
+ Q_DECLARE_OPERATORS_FOR_FLAGS(Plasma::Constraints)
+--- /dev/null
++++ b/libs/plasma/includes/View
+@@ -0,0 +1 @@
++#include "../../plasma/view.h"
+--- a/libs/plasma/applet.h
++++ b/libs/plasma/applet.h
+@@ -270,8 +270,9 @@
+          *                  list containing only applets not specifically
+          *                  registered to an application.
+          * @return list of categories
++         * @param visibleOnly true if it should only return applets that are marked as visible
+          */
+-        static QStringList knownCategories(const QString &parentApp = QString());
++        static QStringList knownCategories(const QString &parentApp = QString(), bool visibleOnly = true);
+ 
+         /**
+          * @return true if this plasmoid provides a GUI configuration
+@@ -468,11 +469,21 @@
+         virtual QSizeF sizeHint() const;
+ 
+         /**
+-        * Sets the geometry of this Plasma::Applet
+-        * @param geometry the geometry to apply to this Plasma::Applet.
+-        */
++         * Sets the geometry of this Plasma::Applet
++         * @param geometry the geometry to apply to this Plasma::Applet.
++         */
+         void setGeometry(const QRectF &geometry);
+ 
++        /**
++         * Sets whether or not this Applet is acting as a Containment
++         */
++        void setIsContainment(bool isContainment);
++
++        /**
++         * @return true if this Applet is currently being used as a Containment, false otherwise
++         */
++        bool isContainment() const;
++
+     Q_SIGNALS:
+         /**
+          * Emitted when the applet needs to take (or lose) keyboard focus.
+--- a/libs/plasma/appletbrowser.h
++++ b/libs/plasma/appletbrowser.h
+@@ -30,16 +30,16 @@
+ class Corona;
+ class Containment;
+ 
+-class PLASMA_EXPORT AppletBrowser: public KDialog
++class PLASMA_EXPORT AppletBrowserWidget : public QWidget
+ {
+     Q_OBJECT
+ public:
+-    explicit AppletBrowser(Plasma::Corona *corona, QWidget *parent = 0, Qt::WindowFlags f = 0);
+-    explicit AppletBrowser(Plasma::Containment *containment, QWidget *parent = 0, Qt::WindowFlags f = 0);
+-    virtual ~AppletBrowser();
++    explicit AppletBrowserWidget( Plasma::Corona *corona, bool showButtons, QWidget *parent = 0, Qt::WindowFlags f = 0);
++    explicit AppletBrowserWidget(Plasma::Containment *containment, bool showButtons, QWidget *parent = 0, Qt::WindowFlags f = 0);
++    virtual ~AppletBrowserWidget();
+ 
+     void setApplication(const QString& application = QString());
+-    QString Application();
++    QString application();
+ 
+ protected Q_SLOTS:
+     /**
+@@ -56,6 +56,23 @@
+     void init();
+     class Private;
+     Private * const d;
++    bool m_showButtons;
++};
++
++class PLASMA_EXPORT AppletBrowser: public KDialog
++{
++    Q_OBJECT
++public:
++    explicit AppletBrowser(Plasma::Corona *corona, QWidget *parent = 0, Qt::WindowFlags f = 0);
++    explicit AppletBrowser(Plasma::Containment *containment, QWidget *parent = 0, Qt::WindowFlags f = 0);
++    virtual ~AppletBrowser();
++
++    void setApplication(const QString& application = QString());
++    QString application();
++
++private:
++    void init();
++    AppletBrowserWidget *m_widget;
+ };
+ 
+ } // namespace Plasma
+--- a/libs/plasma/svg.h
++++ b/libs/plasma/svg.h
+@@ -159,6 +159,12 @@
+         Q_INVOKABLE bool elementExists( const QString& elementId ) const;
+ 
+         /**
++         * Returns the element (by id) at the given point. An empty string is
++         * returned if no element is at that point.
++         */
++        Q_INVOKABLE QString elementAtPoint(const QPoint &point) const;
++
++        /**
+          * The transformation matrix of the element. That includes the 
+          * transformation on the element itself.
+          * @arg elementId the id of the element
+--- a/libs/plasma/plasma.cpp
++++ b/libs/plasma/plasma.cpp
+@@ -62,4 +62,19 @@
+     return Down;
+ }
+ 
++QPainterPath roundedRectangle(const QRectF& rect, qreal radius)
++{
++    QPainterPath path(QPointF(rect.left(), rect.top() + radius));
++    path.quadTo(rect.left(), rect.top(), rect.left() + radius, rect.top());         // Top left corner
++    path.lineTo(rect.right() - radius, rect.top());                                 // Top side
++    path.quadTo(rect.right(), rect.top(), rect.right(), rect.top() + radius);       // Top right corner
++    path.lineTo(rect.right(), rect.bottom() - radius);                              // Right side
++    path.quadTo(rect.right(), rect.bottom(), rect.right() - radius, rect.bottom()); // Bottom right corner
++    path.lineTo(rect.left() + radius, rect.bottom());                               // Bottom side
++    path.quadTo(rect.left(), rect.bottom(), rect.left(), rect.bottom() - radius);   // Bottom left corner
++    path.closeSubpath();
++
++    return path;
++}
++
+ } // Plasma namespace
+--- a/libs/plasma/applethandle_p.h
++++ b/libs/plasma/applethandle_p.h
+@@ -60,6 +60,10 @@
+         void fadeAnimation(qreal progress);
+ 
+     private:
++        static const int HANDLE_WIDTH = 5;
++        static const int ICON_SIZE = 16;
++        static const int ICON_MARGIN = 8;
++
+         void startFading(FadeType anim);
+         void forceDisappear();
+         ButtonType mapToButton(const QPointF &point) const;
+@@ -69,13 +73,13 @@
+         ButtonType m_pressedButton;
+         Containment *m_containment;
+         Applet *m_applet;
+-        Svg m_svg;
+         qreal m_opacity;
+         FadeType m_anim;
+         Phase::AnimId m_animId;
+         qreal m_angle;
+         qreal m_scale;
+         QTransform m_originalMatrix;
++        QColor m_gradientColor;
+ };
+ 
+ }
+--- a/libs/plasma/applet.cpp
++++ b/libs/plasma/applet.cpp
+@@ -55,11 +55,12 @@
+ #include "plasma/shadowitem_p.h"
+ #include "plasma/svg.h"
+ #include "plasma/theme.h"
++#include "plasma/view.h"
+ 
++#include "plasma/layouts/boxlayout.h"
+ #include "plasma/widgets/widget.h"
+ #include "plasma/widgets/lineedit.h"
+ #include "plasma/widgets/pushbutton.h"
+-#include "plasma/widgets/boxlayout.h"
+ 
+ //#define DYNAMIC_SHADOWS
+ namespace Plasma
+@@ -85,7 +86,8 @@
+           immutable(false),
+           hasConfigurationInterface(false),
+           failed(false),
+-          needsConfig(false)
++          needsConfig(false),
++          isContainment(false)
+     {
+         if (appletId == 0) {
+             appletId = nextId();
+@@ -176,7 +178,7 @@
+         }
+     }
+ 
+-    void paintBackground(QPainter* p2, Applet* q)
++    void paintBackground(QPainter* p2, Applet* q, QRectF paintRect)
+     {
+         if (q->formFactor() != Plasma::Planar) {
+             // we don't paint special backgrounds for other form factors
+@@ -185,31 +187,31 @@
+             return;
+         }
+ 
+-        QSize contents = contentSize(q).toSize();
+-        const int contentWidth = contents.width();
+-        const int contentHeight = contents.height();
+-
+-        background->resize();
+-
++        // TODO: caching these values might be an idea
+         const int topHeight = background->elementSize("top").height();
+-        const int topWidth = background->elementSize("top").width();
+         const int leftWidth = background->elementSize("left").width();
+-        const int leftHeight = background->elementSize("left").height();
+-        const int rightWidth = background->elementSize("right").width();
+-        const int bottomHeight = background->elementSize("bottom").height();
+-        //const int lrWidths = leftWidth + rightWidth;
+-        //const int tbHeights = topHeight + bottomHeight;
+-
+-        // contents top-left corner is (0,0).  We need to draw up and left of that
+         const int topOffset = 0 - topHeight;
+         const int leftOffset = 0 - leftWidth;
+-        const int rightOffset = contentWidth;
+-        const int bottomOffset = contentHeight;
+-        const int contentTop = 0;
+-        const int contentLeft = 0;
+-        QSize s = QSize(leftWidth + contentWidth + rightWidth,
+-                        topHeight + contentHeight + bottomHeight);
+-        if (!cachedBackground || cachedBackground->size() != s) {
++
++        if (!cachedBackground || cachedBackground->size() != q->boundingRect().toRect().size()) {
++            QSize contents = contentSize(q).toSize();
++
++            const int contentWidth = contents.width();
++            const int contentHeight = contents.height();
++
++            background->resize();
++
++            const int topWidth = background->elementSize("top").width();
++            const int leftHeight = background->elementSize("left").height();
++            const int rightWidth = background->elementSize("right").width();
++            const int bottomHeight = background->elementSize("bottom").height();
++
++            // contents top-left corner is (0,0).  We need to draw up and left of that
++            const int rightOffset = contentWidth;
++            const int bottomOffset = contentHeight;
++            const int contentTop = 0;
++            const int contentLeft = 0;
++
+             delete cachedBackground;
+             cachedBackground = new QPixmap(leftWidth + contentWidth + rightWidth, topHeight + contentHeight + bottomHeight);
+             cachedBackground->fill(Qt::transparent);
+@@ -220,7 +222,7 @@
+ 
+             //FIXME: This is a hack to fix a drawing problems with svg files where a thin transparent border is drawn around the svg image.
+             //       the transparent border around the svg seems to vary in size depending on the size of the svg and as a result increasing the
+-	    //	     svn image by 2 all around didn't resolve the issue. For now it resizes based on the border size.
++            //       svn image by 2 all around didn't resolve the issue. For now it resizes based on the border size.
+ 
+             background->resize(contentWidth, contentHeight);
+             background->paint(&p, QRect(contentLeft-leftWidth, contentTop-topHeight, contentWidth+leftWidth*2, contentHeight+topHeight*2), "center");
+@@ -231,7 +233,7 @@
+             background->paint(&p, QRect(leftOffset, bottomOffset, leftWidth, bottomHeight), "bottomleft");
+             background->paint(&p, QRect(rightOffset, bottomOffset, rightWidth, bottomHeight), "bottomright");
+ 
+-            if (stretchBackgroundBorders) {
++            if (background->elementExists("hint-stretch-borders")) {
+                 background->paint(&p, QRect(leftOffset, contentTop, leftWidth, contentHeight), "left");
+                 background->paint(&p, QRect(rightOffset, contentTop, rightWidth, contentHeight), "right");
+                 background->paint(&p, QRect(contentLeft, topOffset, contentWidth, topHeight), "top");
+@@ -279,12 +281,7 @@
+             //background->paint(&p, QRect(contentLeft, contentTop, contentWidth, contentHeight), "center");
+         }
+ 
+-        p2->drawPixmap(leftOffset, topOffset, *cachedBackground);
+-    }
+-
+-    void paintHover(QPainter* , Applet* )
+-    {
+-        //TODO draw hover interface for close, configure, info and move
++        p2->drawPixmap(paintRect, *cachedBackground, paintRect.translated(-leftOffset,-topOffset));
+     }
+ 
+     QSizeF contentSize(const Applet* q)
+@@ -328,13 +325,13 @@
+ 
+     void getBorderSize(int& left , int& top, int &right, int& bottom)
+     {
+-        if (!background) {
+-            top = left = right = bottom = 0;
+-        } else {
++        if (background) {
+             top = background->elementSize("top").height();
+             left = background->elementSize("left").width();
+             right = background->elementSize("right").width();
+             bottom = background->elementSize("bottom").height();
++        } else {
++            top = left = right = bottom = 0;
+         }
+     }
+ 
+@@ -357,7 +354,6 @@
+     QStringList loadedEngines;
+     static uint s_maxAppletId;
+     Plasma::Svg *background;
+-    bool stretchBackgroundBorders;
+     Plasma::LineEdit *failureText;
+     ScriptEngine* scriptEngine;
+     ConfigXml* configXml;
+@@ -369,6 +365,7 @@
+     bool hasConfigurationInterface : 1;
+     bool failed : 1;
+     bool needsConfig : 1;
++    bool isContainment : 1;
+ };
+ 
+ uint Applet::Private::s_maxAppletId = 0;
+@@ -429,6 +426,16 @@
+     //kDebug() << pluginName() << "geometry is" << geometry() << "pos is" << pos() << "bounding rect is" << boundingRect();
+     group->writeEntry("geometry", geometry());
+ 
++    if (transform() == QTransform()) {
++        group->deleteEntry("transform");
++    } else {
++        QList<qreal> m;
++        QTransform t = transform();
++        m << t.m11() << t.m12() << t.m13() << t.m21() << t.m22() << t.m23() << t.m31() << t.m32() << t.m33();
++        group->writeEntry("transform", m);
++        //group->writeEntry("transform", transformToString(transform()));
++    }
++
+     Containment* c = containment();
+     if (c) {
+         group->writeEntry("containment", c->id());
+@@ -586,14 +593,13 @@
+ {
+     if (drawBackground) {
+         if (!d->background) {
+-            prepareGeometryChange();
+             d->background = new Plasma::Svg("widgets/background");
+-            d->stretchBackgroundBorders = d->background->elementExists("hint-stretch-borders");
++            updateGeometry();
+         }
+     } else if (d->background) {
+-        prepareGeometryChange();
+         delete d->background;
+         d->background = 0;
++        updateGeometry();
+     }
+ }
+ 
+@@ -695,16 +701,21 @@
+     Plasma::Constraints c = d->pendingConstraints;
+     d->pendingConstraints = NoConstraint;
+ 
++    Containment* containment = qobject_cast<Plasma::Containment*>(this);
+     if (c & Plasma::FormFactorConstraint) {
+         FormFactor f = formFactor();
+         setShadowShown(f == Planar);
+-        setDrawStandardBackground(qobject_cast<Containment*>(this) == 0 && f != Vertical && f != Horizontal);
++        setDrawStandardBackground(!containment && f != Vertical && f != Horizontal);
++    }
++
++    if (isContainment() && containment) {
++        containment->containmentConstraintsUpdated(c);
+     }
+ 
+     constraintsUpdated(c);
+ 
+     if (layout()) {
+-        layout()->update();
++        layout()->updateGeometry();
+     }
+ }
+ 
+@@ -725,23 +736,23 @@
+     d->getBorderSize(left,top,right,bottom);
+ 
+ 
+-    //qDebug() << "Background , Border size" << d->background << left << top << right << bottom;
++    //kDebug() << "Background , Border size" << d->background << left << top << right << bottom;
+ 
+     return rect.adjusted(-left,-top,right,bottom);
+ }
+ 
+ QSizeF Applet::sizeHint() const
+ {
+-    int left;
+-    int right;
+-    int top;
+-    int bottom;
++    int left = 0;
++    int right = 0;
++    int top = 0;
++    int bottom = 0;
+ 
+-    d->getBorderSize(left,top,right,bottom);
++    d->getBorderSize(left, top, right, bottom);
+ 
+-    //qDebug() << "Applet content size hint: " << contentSizeHint();
++    //kDebug() << "Applet content size hint: " << contentSizeHint() << "plus our borders" << left << right << top << bottom;
+ 
+-    return contentSizeHint() + QSizeF(left+right,top+bottom);
++    return contentSizeHint() + QSizeF(left + right, top + bottom);
+ }
+ 
+ QList<QAction*> Applet::contextActions()
+@@ -790,30 +801,30 @@
+         d->shadow->generate();
+     }
+ 
+-    //qreal zoomLevel = painter->transform().m11() / transform().m11();
+-    //kDebug() << "qreal " << zoomLevel << " = " << painter->transform().m11() << " / " << transform().m11();
+-    //if (fabs(zoomLevel - scalingFactor(Plasma::DesktopZoom)) < std::numeric_limits<double>::epsilon()) { // Show Desktop
+-        if (d->background) {
+-            d->paintBackground(painter, this);
+-        }
+-
+-        if (!d->failed && !d->needsConfig) {
+-            paintInterface(painter, option, QRect(QPoint(0,0), d->contentSize(this).toSize()));
+-        }
+-
+-        d->paintHover(painter, this);
+-    /*} else if (fabs(zoomLevel - scalingFactor(Plasma::GroupZoom)) < std::numeric_limits<double>::epsilon()) {
+-        // Show Groups + Applet outline
+-        //TODO: make pretty.
+-        painter->setBrush(QBrush(color(), Qt::SolidPattern));
+-        painter->drawRoundRect(boundingRect());
+-        int iconDim = KIconLoader::global()->currentSize(KIconLoader::Desktop);
+-        qreal midX = (boundingRect().width() / 2) - (iconDim / 2);
+-        qreal midY = (boundingRect().height() / 2) - (iconDim / 2);
+-        KIcon ico(icon());
+-        ico.paint(painter, (int)midX, (int)midY, iconDim, iconDim);
+-    }  else if (zoomLevel == scalingFactor(Plasma::OverviewZoom)) { //Show Groups only
+-    } */
++    painter->save();
++    if (transform().isRotating()) {
++        painter->setRenderHint(QPainter::SmoothPixmapTransform);
++        painter->setRenderHint(QPainter::Antialiasing);
++    }
++
++    if (d->background) {
++        //kDebug() << "option rect is" << option->rect;
++        d->paintBackground(painter, this, option->rect);
++    }
++
++    if (!d->failed && !d->needsConfig) {
++        if (widget && isContainment()) {
++            // note that the widget we get is actually the viewport of the view, not the view itself
++            View* v = qobject_cast<Plasma::View*>(widget->parent());
++            if (v && !v->drawWallpaper()) {
++                return;
++            }
++        }
++
++        paintInterface(painter, option, QRect(QPoint(0,0), d->contentSize(this).toSize()));
++    }
++
++    painter->restore();
+ }
+ 
+ void Applet::paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option,
+@@ -841,7 +852,14 @@
+ 
+ Containment* Applet::containment() const
+ {
+-    return dynamic_cast<Containment*>(parentItem());
++    QGraphicsItem *parent = parentItem();
++    while (parent) {
++        if (dynamic_cast<Containment*>(parent)) {
++            break;
++        }
++        parent = parent->parentItem();
++    }
++    return dynamic_cast<Containment*>(parent);
+ }
+ 
+ Location Applet::location() const
+@@ -860,8 +878,8 @@
+     int top , left , right , bottom;
+     d->getBorderSize(left,top,right,bottom);
+ 
+-    // qDebug() << "Geometry size: " << geometry().size();
+-    // qDebug() << "Borders: " << left << top << right << bottom;
++    // kDebug() << "Geometry size: " << geometry().size();
++    // kDebug() << "Borders: " << left << top << right << bottom;
+ 
+     return geometry().size() - QSizeF(left+right,top+bottom);
+ }
+@@ -1004,7 +1022,7 @@
+     return KPluginInfo::fromServices(offers);
+ }
+ 
+-QStringList Applet::knownCategories(const QString &parentApp)
++QStringList Applet::knownCategories(const QString &parentApp, bool visibleOnly)
+ {
+     QString constraint = "exist [X-KDE-PluginInfo-Category]";
+ 
+@@ -1016,8 +1034,13 @@
+ 
+     KService::List offers = KServiceTypeTrader::self()->query("Plasma/Applet", constraint);
+     QStringList categories;
+-    foreach (KService::Ptr applet, offers) {
++    foreach (const KService::Ptr applet, offers) {
+         QString appletCategory = applet->property("X-KDE-PluginInfo-Category").toString();
++        if (visibleOnly && applet->noDisplay()) {
++            // we don't want to show the hidden category
++            continue;
++        }
++
+         //kDebug() << "   and we have " << appletCategory;
+         if (appletCategory.isEmpty()) {
+             if (!categories.contains(i18n("Miscellaneous"))) {
+@@ -1163,16 +1186,28 @@
+     update();
+ }
+ 
++void Applet::setIsContainment(bool isContainment)
++{
++    d->isContainment = isContainment;
++}
++
++bool Applet::isContainment() const
++{
++    return d->isContainment;
++}
++
+ void Applet::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
+ {
+     //kDebug() << "context menu event!";
+     if (!scene()) {
++        //kDebug() << "no scene?!";
+         return;
+     }
+ 
+     Applet* containment = dynamic_cast<Plasma::Applet*>(topLevelItem());
+ 
+     if (!containment) {
++        //kDebug() << "no containment. hm.";
+         Widget::contextMenuEvent(event);
+         return;
+     }
+@@ -1180,7 +1215,6 @@
+     // we want to pass up the context menu event to the Containment at
+     // this point
+     containment->contextMenuEvent(event);
+-    return;
+ }
+ 
+ } // Plasma namespace
+--- a/libs/plasma/widgets/hboxlayout.h
++++ /dev/null
+@@ -1,26 +0,0 @@
+-/*
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com> 
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_HBOXLAYOUT
+-#define PLASMA_HBOXLAYOUT
+-
+-#include <plasma/widgets/boxlayout.h>
+-
+-#endif /* PLASMA_HBOXLAYOUT */
+--- a/libs/plasma/widgets/flowlayout.h
++++ /dev/null
+@@ -1,66 +0,0 @@
+-/*
+-*   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+-*
+-*   This program is free software; you can redistribute it and/or modify
+-*   it under the terms of the GNU Library General Public License,
+-*   or (at your option) any later version.
+-*
+-*   This program is distributed in the hope that it will be useful,
+-*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-*   GNU General Public License for more details
+-*
+-*   You should have received a copy of the GNU Library General Public
+-*   License along with this program; if not, write to the
+-*   Free Software Foundation, Inc.,
+-*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-*/
+-
+-#ifndef __FLOWLAYOUT__
+-#define __FLOWLAYOUT__
+-
+-#include <plasma/plasma_export.h>
+-
+-#include "layout.h"
+-
+-namespace Plasma
+-{
+-
+-class LayoutItem;
+-
+-/**
+- * A layout which lays items out left-to-right , top-to-bottom.
+- *
+- * This is similar to the layout of items in a QListView. 
+- */
+-class PLASMA_EXPORT FlowLayout : public Layout
+-{
+-public:
+-    /** Construct a new flow layout with the specified parent. */
+-    explicit FlowLayout(LayoutItem* parent);
+-    virtual ~FlowLayout();
+-
+-    // reimplemented
+-    virtual int count() const;
+-    virtual void addItem(LayoutItem* item);
+-    virtual void removeItem(LayoutItem* item);
+-    virtual int indexOf(LayoutItem* item) const;
+-    virtual LayoutItem* itemAt(int i) const;
+-    virtual LayoutItem* takeAt(int i);
+-
+-    virtual QSizeF sizeHint() const;
+-    virtual QRectF geometry() const;
+-    virtual void setGeometry(const QRectF& geometry);
+-    virtual Qt::Orientations expandingDirections() const;
+-    virtual void setColumnWidth( const qreal width );
+-    virtual qreal columnWidth() const;
+-
+-private:
+-    class Private;
+-    Private *const d;
+-};
+-
+-}
+-
+-#endif // __FLOWLAYOUT__
+-
+--- a/libs/plasma/widgets/layoutanimator.h
++++ /dev/null
+@@ -1,213 +0,0 @@
+-/*
+-    Copyright 2007 by Robert Knight <robertknight at gmail.com>
+-
+-    This program is free software; you can redistribute it and/or modify
+-    it under the terms of the GNU General Public License as published by
+-    the Free Software Foundation; either version 2 of the License, or
+-    (at your option) any later version.
+-
+-    This program is distributed in the hope that it will be useful,
+-    but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-    GNU General Public License for more details.
+-
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-    02110-1301  USA.
+-*/
+-
+-#ifndef __LAYOUTANIMATOR__
+-#define __LAYOUTANIMATOR__ 
+-
+-#include <QtCore/QRectF>
+-#include <QtCore/QObject>
+-
+-#include <plasma/plasma_export.h>
+-
+-class QTimeLine;
+-
+-namespace Plasma
+-{
+-
+-class Layout;
+-class LayoutItem;
+-
+-/** 
+- * LayoutAnimator can be used to animate changes
+- * in Layouts.
+- *
+- * @code
+- *
+- * LayoutAnimator* animator = new LayoutAnimator;
+- * QTimeLine* timeLine = new QTimeLine;
+- *
+- * animator->setTimeLine(timeLine);
+- * animator->setEffect( LayoutAnimator::InsertedState , LayoutAnimator::FadeInMoveEffect );
+- * animator->setEffect( LayoutAnimator::StandardState , LayoutAnimator::MoveEffect );
+- * animator->setEffect( LayoutAnimator::RemovedState , LayoutAnimator::FadeOutMoveEffect );
+- * myLayout->setAnimator(animator);
+- *
+- * @endcode
+- */
+-class PLASMA_EXPORT LayoutAnimator : public QObject
+-{
+-Q_OBJECT
+-
+-public:
+-    /** Constructs a new layout animator with the specified parent. */
+-    explicit LayoutAnimator(QObject* parent = 0);
+-    ~LayoutAnimator();
+-
+-    /**
+-     * This enum describes the possible states which a layout item may be in.  
+-     * Different effects can be defined for items which are being inserted, 
+-     * moved or resized or removed from layouts.
+-     */
+-    enum State
+-    {
+-        /** 
+-         * State for an item which has recently been added to a layout. 
+-         * When the animation completes, the item's state will change to
+-         * StandardState 
+-         */
+-        InsertedState,
+-        /** 
+-         * Normal state for items in the layout. 
+-         * Items will remain in this state until it is explicitly changed
+-         * via setCurrentState()
+-         */
+-        StandardState,
+-        /** 
+-         * State for an item which is currently being removed from a layout. 
+-         * When the animation completes, the item will be removed from the 
+-         * animator and its state will be undefined. 
+-         */
+-        RemovedState,
+-        /**
+-         * State for an item whoose geometry is not managed by the animator.
+-         *
+-         * All LayoutItems are initially in this state and are moved into a 
+-         * different state ( usually InsertedState ) by calling
+-         * setCurrentState( item , state )
+-         *
+-         * An item transitions into this state when the animation completes
+-         * whilst the item is in RemovedState
+-         */
+-        DeadState
+-    };
+-
+-    /** 
+-     * This enum describes the available effects which can be used 
+-     * to animate changes in a layout.
+-     */
+-    enum Effect
+-    {
+-        /** 
+-         * No effect.  When the animation begins, the item immediately appears 
+-         * in its final position and size. 
+-         */
+-        NoEffect,
+-        /**
+-         * The item is smoothly moved and resized from its initial geometry to its final
+-         * geometry as the animation progresses. 
+-         */
+-        MoveEffect,
+-        /** 
+-         * The item fades out during the first half of the animation in its initial geometry
+-         * and then fades in at its final position and size during the second half of
+-         * the animation.
+-         */
+-        FadeEffect,
+-        /**
+-         * The item is initially invisible and fades in whilst moving and resizing to
+-         * its final position as the animation progresses.
+-         */
+-        FadeInMoveEffect,
+-        /**
+-         * The item is initially fully opqaue and fades out whilst moving and resizing
+-         * to its final position as the animation progresses.
+-         */
+-        FadeOutMoveEffect
+-    };
+-
+-    /**
+-     * Sets the @p effect for items in the layout which are under-going a change
+-     * specified by @p action.
+-     *
+-     * This allows different effects to be defined for items which are being added to,
+-     * removed from, or repositioned inside layouts.
+-     */
+-    void setEffect( State state , int effect );
+-    /** See setEffect() */
+-    int effect( State state ) const;
+-
+-    /** 
+-     * Sets the current action for a particular layout item.  The Layout class
+-     * should call this before changing an item so that the animator can apply the correct
+-     * animation.
+-     *
+-     * When the current animation completes, depending on the current @p state, the item
+-     * may advance into a new state.
+-     */
+-    void setCurrentState( LayoutItem* item , State state );
+-    /** See setCurrentState() */
+-    State state( LayoutItem* item ) const;
+-
+-    /** 
+-     * Sets the new geometry for a layout item.  
+-     * The item will animate from its current geometry to @p geometry, using
+-     * the effect specified in setEffect() for the state currently associated
+-     * with @p item 
+-     */
+-    virtual void setGeometry( LayoutItem* item , const QRectF& geometry );
+-
+-    /** 
+-     * Sets the time line used by this animator. 
+-     * 
+-     * The duration of the animation can be changed by altering @p timeLine 's duration
+-     */
+-    void setTimeLine( QTimeLine* timeLine );
+-    /** Returns the QTimeLine used by this animator. */
+-    QTimeLine* timeLine() const;
+-
+-    /** 
+-     * Convenience feature which causes LayoutItems and their associated
+-     * QGraphicsItems to be automatically deleted when their removal 
+-     * animation finishes.
+-     *
+-     * The default is false.
+-     */
+-    void setAutoDeleteOnRemoval(bool autoDelete);
+-    /** See setAutoDeleteOnRemoval() */
+-    bool autoDeleteOnRemoval() const;
+-
+-Q_SIGNALS:
+-    /** This signal is emitted when the state of an item in the animator changes. */
+-    void stateChanged( LayoutItem *item , State oldState , State newState );
+-
+-protected:
+-    virtual void updateItem( qreal value , LayoutItem* item );
+-
+-private Q_SLOTS:
+-    void valueChanged(qreal value);
+-    void animationCompleted();
+-    void itemAutoDeleter( LayoutItem *item , State oldState , State newState );
+-
+-private:
+-    void moveEffectUpdateItem(qreal value,LayoutItem* item,Effect effect);
+-    void noEffectUpdateItem(qreal value,LayoutItem* item);
+-    void fadeEffectUpdateItem(qreal value,LayoutItem* item);
+-
+-    void animationFinished(LayoutItem* item);
+-
+-private:
+-    class Private;
+-    Private* const d;
+-
+-};
+-
+-}
+-
+-#endif // __LAYOUTANIMATOR__ 
+-
+--- a/libs/plasma/widgets/layout.cpp
++++ /dev/null
+@@ -1,161 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "layout.h"
+-
+-#include <math.h>
+-
+-#include <QtCore/QList>
+-#include <QtCore/QTimeLine>
+-#include <QtDebug>
+-
+-#include "widget.h"
+-#include "layoutanimator.h"
+-
+-namespace Plasma
+-{
+-
+-class Layout::Private
+-{
+-    public:
+-        Private(LayoutItem* p)
+-            : margin(12.0),
+-              spacing(6.0),
+-              parent(p),
+-              animator(0)
+-        {
+-        }
+-
+-        ~Private() {}
+-
+-        qreal margin;
+-        qreal spacing;
+-
+-        LayoutItem *parent;
+-        LayoutAnimator *animator;
+-};
+-
+-
+-Layout::Layout(LayoutItem *parent)
+-    : LayoutItem(),
+-      d(new Private(parent))
+-{
+-    if (parent) {
+-        parent->setLayout(this);
+-    }
+-}
+-
+-void Layout::setParent(LayoutItem *parent) {
+-    d->parent = parent;
+-}
+-
+-Layout::~Layout()
+-{
+-    if (parent()) {
+-        parent()->setLayout(0);
+-    }
+-    delete d;
+-}
+-
+-bool Layout::isEmpty() const 
+-{
+-    return count() == 0;
+-}
+-
+-void Layout::update()
+-{
+-    setGeometry(geometry());
+-
+-    if( managingLayout() ) {
+-        managingLayout()->update();
+-    }
+-}
+-void Layout::invalidate()
+-{
+-    // find and update the top level layout
+-    Layout *layout = this;
+-    Layout *parentLayout = 0;
+-
+-    do {
+-        parentLayout = dynamic_cast<Layout*>(layout->parent());
+-        if (parentLayout) {
+-            layout = parentLayout;
+-        }
+-    } while (parentLayout);
+-
+-    layout->update();
+-}
+-
+-
+-LayoutAnimator* Layout::animator() const
+-{
+-    return d->animator;
+-}
+-
+-void Layout::setAnimator(LayoutAnimator *animator)
+-{
+-    d->animator = animator;
+-}
+-
+-qreal Layout::margin() const
+-{
+-    return d->margin;
+-}
+-
+-void Layout::setMargin(qreal m)
+-{
+-    d->margin = m;
+-}
+-
+-qreal Layout::spacing() const
+-{
+-    return d->spacing;
+-}
+-
+-void Layout::setSpacing(qreal s)
+-{
+-    d->spacing = s;
+-}
+-
+-LayoutItem *Layout::parent() const
+-{
+-    return d->parent;
+-}
+-
+-QSizeF Layout::minimumSize() const
+-{
+-    return QSizeF(0,0);
+-}
+-QSizeF Layout::maximumSize() const
+-{
+-    return QSizeF(INFINITY,INFINITY);
+-}
+-
+-void Layout::startAnimation() 
+-{
+-    if (animator() && animator()->timeLine()) {
+-        animator()->timeLine()->setCurrentTime(0);
+-        if (animator()->timeLine()->state() == QTimeLine::NotRunning) {
+-            animator()->timeLine()->start();
+-        }
+-    }
+-}
+-
+-}
+--- a/libs/plasma/widgets/freelayout.cpp
++++ /dev/null
+@@ -1,109 +0,0 @@
+-/*
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "freelayout.h"
+-
+-#include <KDebug>
+-
+-#include <plasma/widgets/layout.h>
+-
+-namespace Plasma
+-{
+-
+-class FreeLayout::Private
+-{
+-public:
+-    QList<LayoutItem*> children;
+-    QRectF geometry;
+-};
+-
+-FreeLayout::FreeLayout(LayoutItem *parent)
+-    : Layout(parent),
+-      d(new Private)
+-{
+-}
+-
+-FreeLayout::~FreeLayout()
+-{
+-    delete d;
+-}
+-
+-Qt::Orientations FreeLayout::expandingDirections() const
+-{
+-    return Qt::Horizontal | Qt::Vertical;
+-}
+-
+-void FreeLayout::addItem(LayoutItem *item)
+-{
+-    d->children << item;
+-    item->setManagingLayout(this);
+-}
+-
+-void FreeLayout::removeItem(LayoutItem *item)
+-{
+-    d->children.removeAll(item);
+-}
+-
+-int FreeLayout::indexOf(LayoutItem *item) const
+-{
+-    return d->children.indexOf(item);
+-}
+-
+-LayoutItem * FreeLayout::itemAt(int i) const
+-{
+-    return d->children[i];
+-}
+-
+-int FreeLayout::count() const
+-{
+-    return d->children.count();
+-}
+-
+-LayoutItem * FreeLayout::takeAt(int i)
+-{
+-    return d->children.takeAt(i);
+-}
+-
+-void FreeLayout::setGeometry(const QRectF &geometry)
+-{
+-    foreach (LayoutItem *child , d->children) {
+-        if (child->geometry().size() != child->sizeHint()) {
+-            child->setGeometry(QRectF(child->geometry().topLeft(),child->sizeHint()));
+-        }
+-    }
+-    d->geometry = geometry;
+-}
+-
+-QRectF FreeLayout::geometry() const
+-{
+-    return d->geometry;
+-}
+-
+-QSizeF FreeLayout::sizeHint() const
+-{
+-    if (parent()) {
+-        return parent()->geometry().size();
+-    }
+-
+-    return maximumSize();
+-}
+-
+-}
+-
+--- a/libs/plasma/widgets/borderlayout.h
++++ /dev/null
+@@ -1,98 +0,0 @@
+-/*
+- *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library/Lesser General Public License
+- *   version 2, or (at your option) any later version, as published by the
+- *   Free Software Foundation
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library/Lesser General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_BORDER_LAYOUT
+-#define PLASMA_BORDER_LAYOUT
+-
+-#include <QtCore/QMap>
+-
+-#include <plasma/plasma_export.h>
+-#include <plasma/plasma.h>
+-#include <plasma/widgets/layout.h>
+-
+-namespace Plasma {
+-
+-/**
+- * A layout which lays one item per border (left, top, bottom, right)
+- * and one item in center.
+- *
+- * Similar to java.awt.BorderLayout from the Java's standard library
+- */
+-class PLASMA_EXPORT BorderLayout : public Layout {
+-public:
+-
+-    explicit BorderLayout(LayoutItem * parent = 0);
+-    virtual ~BorderLayout();
+-
+-    virtual Qt::Orientations expandingDirections() const;
+-    virtual QRectF geometry() const;
+-    void setGeometry(const QRectF& geometry);
+-
+-    void invalidate();
+-
+-    QSizeF sizeHint() const;
+-
+-    /**
+-     * Adds item in the center. Equal to:
+-     * addItem(item, Plasma::CenterPositioned);
+-     */
+-    void addItem(Plasma::LayoutItem * item);
+-
+-    /**
+-     * Adds item at the specified position
+-     */
+-    void addItem(Plasma::LayoutItem * item, Position position);
+-
+-    void removeItem(Plasma::LayoutItem * item);
+-
+-    virtual int count() const;
+-    virtual int indexOf(LayoutItem * item) const;
+-    virtual LayoutItem * itemAt(int i) const;
+-    virtual LayoutItem * takeAt(int i);
+-
+-    /**
+-     * Deactivates the automatic sizing of a border widget,
+-     * and sets it to the specified size.
+-     *
+-     * For left and right widgets, it sets the width; while
+-     * for top and bottom ones, it sets the height.
+-     */
+-    void setSize(qreal size, Position border);
+-
+-    /**
+-     * Activates the automatic sizing of a border widget,
+-     * according to it's sizeHint()
+-     */
+-    void setAutoSize(Position border);
+-
+-    /**
+-     * Returns the size of the specified border widget. If
+-     * automatic sizing for that border widget is activated,
+-     * it will return a value less than zero.
+-     */
+-    qreal size(Position border);
+-
+-private:
+-    class Private;
+-    Private * const d;
+-};
+-
+-}
+-
+-#endif /* PLASMA_BORDER_LAYOUT */
+--- a/libs/plasma/widgets/vboxlayout.h
++++ /dev/null
+@@ -1,26 +0,0 @@
+-/*
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com> 
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_VBOXLAYOUT
+-#define PLASMA_VBOXLAYOUT
+-
+-#include <plasma/widgets/boxlayout.h>
+-
+-#endif /* PLASMA_VBOXLAYOUT */
+--- a/libs/plasma/widgets/nodelayout.h
++++ /dev/null
+@@ -1,119 +0,0 @@
+-/*
+- *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library/Lesser General Public License
+- *   version 2, or (at your option) any later version, as published by the
+- *   Free Software Foundation
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library/Lesser General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_NODE_LAYOUT
+-#define PLASMA_NODE_LAYOUT
+-
+-#include <QtCore/QMap>
+-#include <cmath>
+-
+-#include <plasma/plasma_export.h>
+-#include <plasma/plasma.h>
+-#include <plasma/widgets/layout.h>
+-
+-namespace Plasma {
+-
+-/**
+- * Node layout has an advanced layouting mechanism. Every item's position
+- * is defined by two nodes - one for top-left corner, and the other one for
+- * bottom-right corner.
+- * 
+- * Each node is defined by a pair of relative (xr, yr) and a pair of 
+- * absolute (xa, ya) coordinates. The calculated node coordinates depend
+- * on the size and position of the NodeLayout object in the following
+- * manner:
+- *   x = layoutLeft + (xr * layoutWidth)  + xa
+- *   y = layoutTop  + (yr * layoutHeight) + ya
+- *
+- * Alternatively, the item's position can be defined by using one node and
+- * one pair of relative coordinates (xr, yr). In that case, the item is sized
+- * following the sizeHint(). The relative coordinates (this time they are 
+- * relative to the item's geometry, not the layout's) specify what point of
+- * the item will be bound to the defined node.
+- */
+-
+-class PLASMA_EXPORT NodeLayout : public Layout {
+-public:
+-    class PLASMA_EXPORT NodeCoordinate {
+-    public:
+-        /**
+-         * Position is calculated:
+-         * x = parentLeft + (xRelative * parentWidth)  + xAbsolute
+-         * y = parentTop  + (yRelative * parentHeight) + yAbsolute
+-         */
+-        NodeCoordinate(qreal xRelative = 0, qreal yRelative = 0, qreal xAbsolute = 0, qreal yAbsolute = 0);
+-
+-        enum CoordinateType {
+-            Relative = 0,
+-            Absolute = 1,
+-            InnerRelative = 2 };
+-
+-        static NodeCoordinate simple(qreal x, qreal y, CoordinateType xType = Relative, CoordinateType yType = Relative);
+-
+-        float xr, xa;
+-        float yr, ya;
+-    };
+-
+-    // reimplemented
+-    virtual Qt::Orientations expandingDirections() const;
+-
+-    explicit NodeLayout(LayoutItem * parent = 0);
+-    virtual ~NodeLayout();
+-
+-    virtual QRectF geometry() const;
+-    void setGeometry(const QRectF& geometry);
+-
+-    QSizeF sizeHint() const;
+-
+-    /**
+-     * Adds item at top-left corner, with automatic sizing
+-     * (using sizeHint of the item)
+-     */
+-    void addItem (LayoutItem * item);
+-
+-    /**
+-     * Adds item with specified top-left and bottom right corners.
+-     */
+-    void addItem (LayoutItem * item,
+-            NodeCoordinate topLeft, NodeCoordinate bottomRight);
+-
+-    /**
+-     * Adds item with automatic sizing turned on. xr and yr specify
+-     * which point of the item is bound to node coordinate. Those
+-     * are relative coordinates so (0, 0) represent top left corner,
+-     * (0.5, 0.5) represent the center of the item etc.
+-     */
+-    void addItem (LayoutItem * item,
+-            NodeCoordinate node, qreal xr = 0, qreal yr = 0);
+-
+-    void removeItem (LayoutItem * item);
+-
+-    virtual int count() const;
+-    virtual int indexOf(LayoutItem * item) const;
+-    virtual LayoutItem * itemAt(int i) const;
+-    virtual LayoutItem * takeAt(int i);
+-
+-private:
+-    class Private;
+-    Private * const d;
+-};
+-
+-}
+-
+-#endif /* PLASMA_NODE_LAYOUT */
+--- a/libs/plasma/widgets/boxlayout.h
++++ /dev/null
+@@ -1,118 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_BOX_LAYOUT
+-#define PLASMA_BOX_LAYOUT
+-
+-#include <QtCore/QList>
+-
+-#include <plasma/plasma_export.h>
+-#include <plasma/widgets/layout.h>
+-
+-namespace Plasma
+-{
+-
+-/**
+- * The BoxLayout class lays out items in a horizontal or vertical line.
+- */
+-class PLASMA_EXPORT BoxLayout : public Layout
+-{
+-    public:
+-        /** 
+-         * This enum describes the directions in which items can be laid 
+-         * out.
+-         */
+-        enum Direction
+-        {
+-            /** Lay items out horizontally, from left to right. */
+-            LeftToRight,
+-            /** Lay items out horizontally, from right to left. */
+-            RightToLeft,
+-            /** Lay items out vertically, from top to bottom. */
+-            TopToBottom,
+-            /** Lay items out vertically, from bottom to top. */
+-            BottomToTop
+-        };
+-
+-        /**
+-         * Creates a new box layout which lays items out in the specified
+-         * @p direction
+-         */
+-        explicit BoxLayout(Direction direction , LayoutItem *parent = 0);
+-        ~BoxLayout();
+-
+-        /** Sets the direction in which items are laid out. */
+-        void setDirection(Direction direction);
+-        /** Returns the direction in which items are laid out. */
+-        Direction direction() const;
+-
+-        /** Inserts a new item into the layout at the specified index. */
+-        void insertItem(int index, LayoutItem *l);
+-
+-        // reimplemented from Layout
+-        virtual void addItem(LayoutItem *l);
+-        virtual void removeItem(LayoutItem *l);
+-        virtual int indexOf(LayoutItem *l) const;
+-        virtual LayoutItem *itemAt(int i) const;
+-        virtual LayoutItem *takeAt(int i);
+-        virtual Qt::Orientations expandingDirections() const;
+-        virtual QRectF geometry() const;
+-        virtual void setGeometry(const QRectF& geometry);
+-        virtual int count() const;
+-
+-        virtual QSizeF minimumSize() const;
+-        virtual QSizeF maximumSize() const;
+-        virtual QSizeF sizeHint() const;
+-
+-    private:
+-        class Private;
+-        Private *const d;
+-};
+-
+-/** 
+- * A BoxLayout which defaults to laying items out 
+- * horizontally in a left-to-right order.
+- *
+- * Equivalent to creating a BoxLayout and passing LeftToRight
+- * in the constructor.
+- */
+-class PLASMA_EXPORT HBoxLayout : public BoxLayout 
+-{
+-public:
+-    explicit HBoxLayout(LayoutItem *parent = 0);
+-};
+-
+-/**
+- * A BoxLayout which defaults to laying items out
+- * vertically in a top-to-bottom order.
+- *
+- * Equivalent to creating a BoxLayout and passing TopToBottom
+- * in the constructor.
+- */
+-class PLASMA_EXPORT VBoxLayout : public BoxLayout 
+-{
+-public:
+-    explicit VBoxLayout(LayoutItem *parent = 0);
+-};
+-
+-}
+-
+-#endif /* PLASMA_BOX_LAYOUT */
+--- a/libs/plasma/widgets/layoutitem.h
++++ /dev/null
+@@ -1,165 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef __LAYOUT_ITEM__
+-#define __LAYOUT_ITEM__
+-
+-#include <QtCore/QRectF>
+-#include <QtCore/QSizeF>
+-
+-#include <plasma/plasma_export.h>
+-
+-class QGraphicsItem;
+-
+-namespace Plasma
+-{
+-
+-class Layout;
+-
+-/**
+- * Base class for Plasma layout-managed items
+- *
+- * @author Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- * All layout-managed items should implement this class, but regular users just need to use
+- * Plasma::Widget and Plasma::Layout.
+- */
+-class PLASMA_EXPORT LayoutItem
+-{
+-    public:
+-
+-        /**
+-         * Constructor.
+-         */
+-        explicit LayoutItem();
+-
+-        /**
+-         * Virtual Destructor.
+-         */
+-        virtual ~LayoutItem();
+-
+-        /**
+-         * Returns a bitmask with the directions that this Item can be expanded.
+-         */
+-        virtual Qt::Orientations expandingDirections() const = 0;
+-
+-        /**
+-         * Returns the minimum size of this Item and it's contents.
+-         */
+-        virtual QSizeF minimumSize() const = 0;
+-
+-        /**
+-         * Returns the maximum size of this Item.
+-         */
+-        virtual QSizeF maximumSize() const = 0;
+-
+-        /**
+-         * Returns true whatever this Item can use height-for-width layout management,
+-         * false otherwise.
+-         */
+-        virtual bool hasHeightForWidth() const;
+-
+-        /**
+-         * Returns the corresponding height for a given width.
+-         * @param w Width
+-         */
+-        virtual qreal heightForWidth(qreal w) const;
+-
+-        /**
+-         * Returns true whatever this Item can use width-for-height layout management,
+-         * false otherwise.
+-         */
+-        virtual bool hasWidthForHeight() const;
+-
+-        /**
+-         * Returns the corresponding width for a given height.
+-         * @param h Height
+-         */
+-        virtual qreal widthForHeight(qreal h) const;
+-
+-        /**
+-         * Returns the geometry of this Item.
+-         */
+-        virtual QRectF geometry() const = 0;
+-
+-        /**
+-         * Sets the geometry of this Item.
+-         */
+-        virtual void setGeometry(const QRectF& geometry) = 0;
+-
+-        /**
+-         * Returns the most appropriate size of this Item to hold whatever contents it has.
+-         */
+-        virtual QSizeF sizeHint() const = 0;
+-
+-        /**
+-         * Sets the layout that will manage children items
+-         *
+-         * @param layout The Layout that this LayoutItem will be managed by.
+-         */
+-        void setLayout(Layout* layout);
+-
+-        /**
+-         * @return the layout this item is currently associated with.
+-         */
+-        Layout* layout() const;
+-
+-        /**
+-         * Sets the layout that manages this item's geometry
+-         *
+-         * @param layout the layout that manage this item's geometry
+-         **/
+-        void setManagingLayout(Layout* layout);
+-
+-        /**
+-         * Resets the layout that manges this item's geometry if it is the
+-         * currently associated layout
+-         *
+-         * @param layout to unset
+-         **/
+-        void unsetManagingLayout(Layout* layout);
+-
+-        /**
+-         * @return the layout that manages this item's geometry, or 0 if none
+-         **/
+-        Layout* managingLayout() const;
+-
+-        /**
+-         * Returns the graphics item associated with this layout item or 0
+-         * if there is no associated graphics item.
+-         *
+-         * The default implementation returns 0.
+-         */
+-        virtual QGraphicsItem* graphicsItem();
+-
+-    protected:
+-        /**
+-         * Reimplement to respond to a change in managing layout
+-         */
+-        virtual void managingLayoutChanged();
+-
+-    private:
+-        class Private;
+-        Private *const d;
+-};
+-
+-}
+-
+-#endif /* __LAYOUT_ITEM__ */
+--- a/libs/plasma/widgets/flowlayout.cpp
++++ /dev/null
+@@ -1,218 +0,0 @@
+-/*
+-*   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+-*
+-*   This program is free software; you can redistribute it and/or modify
+-*   it under the terms of the GNU Library General Public License,
+-*   or (at your option) any later version.
+-*
+-*   This program is distributed in the hope that it will be useful,
+-*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-*   GNU General Public License for more details
+-*
+-*   You should have received a copy of the GNU Library General Public
+-*   License along with this program; if not, write to the
+-*   Free Software Foundation, Inc.,
+-*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-*/
+-
+-#include "flowlayout.h"
+-
+-#include <limits.h>
+-#include <math.h>
+-
+-#include <QtCore/QList>
+-#include <QtCore/QRectF>
+-#include <QtCore/QTimeLine>
+-
+-#include <QtDebug>
+-
+-#include "layoutanimator.h"
+-
+-using namespace Plasma;
+-
+-class FlowLayout::Private
+-{
+-public:
+-    Private() : columnWidth( -1 ) {}
+-    QList<LayoutItem*> items; 
+-    QRectF geometry; 
+-    qreal columnWidth;
+-};
+-
+-FlowLayout::FlowLayout(LayoutItem* parent)
+-    : Layout(parent)
+-    , d(new Private)
+-{
+-}
+-FlowLayout::~FlowLayout()
+-{
+-    delete d;
+-}
+-
+-int FlowLayout::count() const
+-{
+-    return d->items.count();
+-}
+-void FlowLayout::addItem(LayoutItem* item)
+-{
+-    d->items << item;
+-
+-    if ( animator() )
+-        animator()->setCurrentState(item,LayoutAnimator::InsertedState);
+-
+-    item->setManagingLayout(this);
+-}
+-void FlowLayout::removeItem(LayoutItem* item)
+-{
+-    d->items.removeAll(item);
+-
+-    if ( animator() )
+-        animator()->setCurrentState(item,LayoutAnimator::RemovedState);
+-}
+-int FlowLayout::indexOf(LayoutItem* item) const
+-{
+-    return d->items.indexOf(item);
+-}
+-LayoutItem* FlowLayout::itemAt(int i) const
+-{
+-    return d->items[i];
+-}
+-QSizeF FlowLayout::sizeHint() const
+-{
+-    // TODO A proper algorithm here
+-    // 
+-    // Idea:  Return a size hint based on the golden ratio to
+-    //        make it aesthetically good
+-    //        eg. Longer side is 1.61x the length of the shorter side
+-    //
+-
+-    // testing
+-    return QSizeF(500,500);
+-}
+-LayoutItem* FlowLayout::takeAt(int i)
+-{
+-    return d->items.takeAt(i);
+-}
+-
+-QRectF FlowLayout::geometry() const
+-{
+-    return d->geometry;
+-}
+-
+-template <class T>
+-T qSum(const QList<T>& container) 
+-{
+-    T total = 0;
+-    foreach( const T& item , container ) {
+-        total += item; 
+-    }   
+-    return total;
+-}
+-
+-void FlowLayout::setGeometry(const QRectF& geo)
+-{
+-    QRectF geometry(geo);
+-    geometry.adjust(margin(),margin(),-margin(),-margin());
+- 
+-    qDebug() << "Flow layout geometry set to " << geo;
+-
+-    // calculate average size of items
+-    qreal totalWidth = 0;
+-    qreal totalHeight = 0;
+-
+-    foreach( LayoutItem *item , d->items ) {
+-        totalWidth += item->sizeHint().width();
+-        totalHeight += item->sizeHint().height();
+-    }
+-
+-    // use the average item width as the column width.
+-    // Also include the spacing either side of each item as part of the 
+-    // average width, this provides the spacing between the items and
+-    // also allows some tolerance for small differences in item widths 
+-    qreal averageWidth;
+-    if( d->columnWidth == -1 )
+-    	averageWidth = totalWidth / d->items.count() + 2*spacing();
+-    else
+-        averageWidth = d->columnWidth;
+-	
+-    const int columnCount = (int)(geometry.width() / averageWidth);
+-
+-    int insertColumn = 0;
+-    qreal rowPos = 0;
+-    qreal rowHeight = 0;
+-
+-    // lay the items out in left-to-right , top-to-bottom order
+-    foreach( LayoutItem *item , d->items ) {
+-    
+-        const QSizeF& itemSize = item->sizeHint();
+-
+-        int columnSpan = (int)ceil(itemSize.width() / averageWidth);
+-
+-        if ( insertColumn + columnSpan > columnCount ) {
+-            // start a new row
+-            insertColumn = 0;
+-            rowPos += rowHeight + spacing();
+-        }
+-
+-       // qDebug() << "Inserting item at column" << insertColumn 
+-       //          << "spanning" << columnSpan << "columns"
+-       //          << "with offset" << offset;
+-
+-
+-        // try to expand the item to fill its allocated number of columns
+-        qreal itemWidth = itemSize.width(); 
+-        const qreal idealWidth = columnSpan * averageWidth - spacing();
+-        if ( itemWidth < idealWidth && 
+-             idealWidth < item->maximumSize().width() ) {
+-             itemWidth = idealWidth; 
+-        }
+-       
+-        // calculate offset to horizontally center item 
+-        qreal offset = (columnSpan * averageWidth) - itemWidth;
+-        if ( insertColumn == 0 )
+-            offset -= spacing();  
+-        offset /= 2;
+-
+-        // try to restrict the item width to the available geometry's
+-        // width
+-        if ( itemWidth > geometry.width() ) {
+-            itemWidth = qMax(geometry.width(),item->minimumSize().width());
+-            offset = 0;
+-        }        
+-
+-        // position the item
+-        const QRectF newGeometry( geometry.left() + 
+-                                    insertColumn * averageWidth + offset, 
+-                                  geometry.top() + rowPos , 
+-                                  itemWidth , 
+-                                  itemSize.height() );
+-
+-        rowHeight = qMax(rowHeight,itemSize.height());
+-        insertColumn += columnSpan;
+-
+-        if ( animator() )
+-            animator()->setGeometry( item , newGeometry );
+-        else
+-            item->setGeometry( newGeometry );
+-    }
+-
+-    d->geometry = geo;
+-
+-    startAnimation();
+-}
+-
+-Qt::Orientations FlowLayout::expandingDirections() const
+-{
+-    return Qt::Vertical | Qt::Horizontal;
+-}
+-
+-qreal FlowLayout::columnWidth() const
+-{
+-    return d->columnWidth;
+-}
+-
+-void FlowLayout::setColumnWidth( const qreal width )
+-{
+-    d->columnWidth = width;
+-}
+--- a/libs/plasma/widgets/layoutanimator.cpp
++++ /dev/null
+@@ -1,311 +0,0 @@
+-/*
+-    Copyright 2007 by Robert Knight <robertknight at gmail.com>
+-
+-    This program is free software; you can redistribute it and/or modify
+-    it under the terms of the GNU General Public License as published by
+-    the Free Software Foundation; either version 2 of the License, or
+-    (at your option) any later version.
+-
+-    This program is distributed in the hope that it will be useful,
+-    but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-    GNU General Public License for more details.
+-
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-    02110-1301  USA.
+-*/
+-
+-#include "layoutanimator.h"
+-
+-#include <QtCore/QHash>
+-#include <QtCore/QList>
+-#include <QtCore/QPointer>
+-#include <QtCore/QTimeLine>
+-#include <QtGui/QGraphicsItem>
+-#include <QtGui/QGraphicsScene>
+-#include <QtDebug>
+-
+-#include "layout.h"
+-#include "widget.h"
+-
+-using namespace Plasma;
+-
+-class LayoutAnimator::Private
+-{
+-public:
+-    QHash<LayoutAnimator::State,int> effects;  
+-    
+-    class ItemGeometry
+-    {
+-    public:
+-        QRectF startGeometry;
+-        QRectF endGeometry;
+-    };  
+-    
+-    QHash<LayoutItem*,ItemGeometry> geometries;
+-    QHash<LayoutItem*,LayoutAnimator::State> states;
+-    QPointer<QTimeLine> timeLine;
+-    qreal lastValue;
+-    bool autoDeleteOnRemoval;
+-
+-    Private() 
+-        : lastValue(0)
+-        , autoDeleteOnRemoval(false)
+-    {
+-    }
+-
+-    qreal delta(qreal currentValue) const
+-    {
+-        if ( currentValue > lastValue ) 
+-            return currentValue - lastValue;
+-        else
+-            return (1.0-lastValue) + currentValue;
+-    }
+-
+-    QRectF interpolateGeometry(LayoutItem* item,qreal value) const
+-    {
+-        QRectF newGeometry;
+-
+-        const QRectF& current = geometries[item].startGeometry;
+-        const QRectF& next = geometries[item].endGeometry;
+-
+-        newGeometry.setLeft(current.left() + (next.left()-current.left()) * value);
+-        newGeometry.setRight(current.right() + (next.right()-current.right()) * value);
+-        newGeometry.setTop(current.top() + (next.top()-current.top()) * value);
+-        newGeometry.setBottom(current.bottom() + (next.bottom()-current.bottom()) * value);
+-
+-        return newGeometry;
+-    }
+-
+-    void prepareItemForState( LayoutItem *item , LayoutAnimator::State state ) {
+-        
+-        // opacity setting for widgets
+-        if ( state == InsertedState && effects[state] == LayoutAnimator::FadeInMoveEffect ) {
+-            Widget *widget = dynamic_cast<Widget*>(item->graphicsItem());
+-
+-            if ( widget ) {
+-                widget->setOpacity(0); // item is invisible immediately after insertion     
+-            }
+-        }
+-    }
+-};
+-
+-LayoutAnimator::LayoutAnimator(QObject* parent)
+-: QObject(parent),
+-  d(new Private)
+-{
+-    d->lastValue = 0;
+-}
+-
+-LayoutAnimator::~LayoutAnimator()
+-{
+-    delete d;
+-}
+-
+-void LayoutAnimator::setAutoDeleteOnRemoval(bool autoDelete) 
+-{
+-    if ( d->autoDeleteOnRemoval == autoDelete )
+-        return;
+-
+-    d->autoDeleteOnRemoval = autoDelete;
+-
+-    if ( autoDelete ) { 
+-        connect( this , SIGNAL(stateChanged(LayoutItem*,State,State)) , this , 
+-                 SLOT(itemAutoDeleter(LayoutItem*,State,State)) );
+-    } else { 
+-        disconnect( this , SIGNAL(stateChanged(LayoutItem*,State,State)) , this , 
+-                SLOT(itemAutoDeleter(LayoutItem*,State,State)) );
+-    } 
+-}
+-bool LayoutAnimator::autoDeleteOnRemoval() const
+-{
+-    return d->autoDeleteOnRemoval;
+-}
+-void LayoutAnimator::itemAutoDeleter(LayoutItem *item , State oldState , State newState)
+-{
+-    if ( oldState == RemovedState && newState == DeadState ) {
+-        
+-        if ( item->graphicsItem() ) {
+-            item->graphicsItem()->scene()->removeItem( item->graphicsItem() );
+-
+-            if ( dynamic_cast<QGraphicsItem*>(item) != dynamic_cast<QGraphicsItem*>(item->graphicsItem()) )
+-                delete item->graphicsItem();
+-        }
+-
+-        delete item;
+-    }
+-}
+-void LayoutAnimator::setEffect( State action , int effect )
+-{
+-    d->effects[action] = effect;
+-}
+-int LayoutAnimator::effect(State action) const
+-{
+-    return d->effects[action];
+-}
+-
+-void LayoutAnimator::setCurrentState( LayoutItem* item , State state )
+-{
+-    State oldState = d->states[item];
+-
+-    d->states[item] = state;
+-    d->prepareItemForState(item,state);
+-
+-    emit stateChanged(item,oldState,state);
+-}
+-LayoutAnimator::State LayoutAnimator::state( LayoutItem* item ) const
+-{
+-    if ( !d->states.contains(item) ) {
+-        return DeadState;
+-    } else {
+-        return d->states[item];
+-    }
+-}
+-
+-void LayoutAnimator::setTimeLine(QTimeLine* timeLine)
+-{
+-    if ( d->timeLine ) {
+-        disconnect( d->timeLine , SIGNAL(valueChanged(qreal)) , this , 
+-                SLOT(valueChanged(qreal)) );
+-        disconnect( d->timeLine , SIGNAL(finished()) , this , 
+-                SLOT(animationCompleted()) );
+-    }
+-
+-    d->timeLine = timeLine;
+-
+-    connect( d->timeLine , SIGNAL(valueChanged(qreal)) , this , 
+-             SLOT(valueChanged(qreal)) );
+-    connect( d->timeLine , SIGNAL(finished()) , this , 
+-             SLOT(animationCompleted()) );
+-}
+-void LayoutAnimator::animationCompleted()
+-{
+-    foreach( LayoutItem* item , d->states.keys() ) {
+-        animationFinished(item);
+-    }
+-}
+-QTimeLine* LayoutAnimator::timeLine() const
+-{
+-    return d->timeLine;
+-}
+-void LayoutAnimator::valueChanged(qreal value)
+-{
+-    foreach( LayoutItem* item , d->geometries.keys() ) {
+-        updateItem(value,item);
+-    }
+-
+-    d->lastValue = value;
+-}
+-
+-void LayoutAnimator::setGeometry( LayoutItem* item , const QRectF& destGeometry )
+-{
+-    Q_ASSERT( item );
+-
+-    Private::ItemGeometry& itemGeometry = d->geometries[item];
+-
+-    itemGeometry.startGeometry = item->geometry();
+-    itemGeometry.endGeometry = destGeometry;
+-}
+-
+-void LayoutAnimator::moveEffectUpdateItem( qreal value , LayoutItem* item , Effect effect )
+-{
+-    Widget* widget = dynamic_cast<Widget*>(item->graphicsItem());
+-
+-    if ( widget && effect == FadeInMoveEffect )
+-        widget->setOpacity( qMin(1.0,widget->opacity()+d->delta(value)) );
+-    else if ( widget && effect == FadeOutMoveEffect )
+-        widget->setOpacity( qMax(0.0,widget->opacity()-d->delta(value)) );
+-
+-    
+-    if ( effect == FadeInMoveEffect ) {
+-        const QRectF finalGeometry = d->geometries[item].endGeometry;
+-
+-        if ( item->geometry() != finalGeometry )
+-            item->setGeometry( finalGeometry ); 
+-    }
+-    else 
+-        item->setGeometry( d->interpolateGeometry(item,value) );
+-}
+-
+-void LayoutAnimator::noEffectUpdateItem( qreal , LayoutItem* item )
+-{
+-    const QRectF finalGeometry = d->geometries[item].endGeometry;
+-
+-    if ( item->geometry() != finalGeometry )
+-        item->setGeometry( finalGeometry );
+-}
+-
+-void LayoutAnimator::fadeEffectUpdateItem( qreal value , LayoutItem* item )
+-{
+-    Widget* widget = dynamic_cast<Widget*>(item->graphicsItem());
+-
+-    qreal threshold = 0;
+-    
+-    if ( widget != 0 && d->geometries[item].startGeometry != d->geometries[item].endGeometry ) { 
+-        widget->setOpacity( qAbs( (value*2)-1.0 ) );
+-        threshold = 0.5; 
+-    }
+-
+-    QRectF newGeometry;
+-    
+-    if ( value < threshold )
+-        newGeometry = d->geometries[item].startGeometry;
+-    else
+-        newGeometry = d->geometries[item].endGeometry;
+-
+-    item->setGeometry(newGeometry);
+-}
+-
+-void LayoutAnimator::animationFinished(LayoutItem* item)
+-{
+-    switch ( state(item) ) 
+-    {
+-        case InsertedState:
+-                setCurrentState(item,StandardState);
+-            break;
+-        case RemovedState:
+-                d->states.remove(item);
+-                d->geometries.remove(item);
+-
+-                emit stateChanged( item , RemovedState , DeadState );
+-            break;
+-        case StandardState:
+-                    d->geometries[item].startGeometry = d->geometries[item].endGeometry;
+-            break;
+-        default:
+-            Q_ASSERT(false);
+-    }
+-}
+-
+-void LayoutAnimator::updateItem( qreal value , LayoutItem* item )
+-{
+-    Q_ASSERT( value >= 0 && value <= 1.0 );
+-    Q_ASSERT( item );
+-    Q_ASSERT( d->geometries.contains(item) );
+-
+-    switch ( effect(d->states[item]) )
+-    {
+-        case NoEffect:
+-                noEffectUpdateItem(value,item);
+-            break;
+-        case MoveEffect:
+-                moveEffectUpdateItem(value,item,MoveEffect);
+-            break;
+-        case FadeInMoveEffect:
+-                moveEffectUpdateItem(value,item,FadeInMoveEffect);
+-            break;
+-        case FadeOutMoveEffect:
+-                moveEffectUpdateItem(value,item,FadeOutMoveEffect);
+-            break;
+-        case FadeEffect:
+-                fadeEffectUpdateItem(value,item);
+-            break;
+-        default:
+-            Q_ASSERT(false);
+-    }
+-}
+-
+-#include "layoutanimator.moc"
+-
+--- a/libs/plasma/widgets/borderlayout.cpp
++++ /dev/null
+@@ -1,254 +0,0 @@
+-/*
+- *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library/Lesser General Public License
+- *   version 2, or (at your option) any later version, as published by the
+- *   Free Software Foundation
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library/Lesser General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "borderlayout.h"
+-
+-namespace Plasma {
+-
+-class BorderLayout::Private {
+-public:
+-    BorderLayout * q;
+-
+-    explicit Private(BorderLayout * parent = 0)
+-        : q(parent)
+-    {
+-        sizes[LeftPositioned] = -1;
+-        sizes[RightPositioned] = -1;
+-        sizes[TopPositioned] = -1;
+-        sizes[BottomPositioned] = -1;
+-        sizes[CenterPositioned] = -1;
+-
+-    }
+-
+-    virtual ~Private()
+-    {
+-    }
+-
+-    QMap< Position, LayoutItem * > itemPositions;
+-    QRectF geometry;
+-    QMap< Position, qreal > sizes;
+-};
+-
+-
+-
+-BorderLayout::BorderLayout(LayoutItem * parent) :
+-    Layout(parent), d(new Private(this))
+-{
+-    if (parent) {
+-        parent->setLayout(this);
+-    }
+-}
+-
+-BorderLayout::~BorderLayout()
+-{
+-    delete d;
+-}
+-
+-Qt::Orientations BorderLayout::expandingDirections() const
+-{
+-    return Qt::Horizontal | Qt::Vertical;
+-}
+-
+-QRectF BorderLayout::geometry() const
+-{
+-    return d->geometry;
+-}
+-
+-void BorderLayout::setGeometry(const QRectF& geometry)
+-{
+-    if (!geometry.isValid() || geometry.isEmpty()) {
+-        return;
+-    }
+-
+-    d->geometry = geometry;
+-
+-    invalidate();
+-}
+-
+-void BorderLayout::invalidate()
+-{
+-    QRectF geometry = d->geometry;
+-    geometry.setTopLeft(geometry.topLeft() + QPointF(margin(), margin()));
+-    geometry.setBottomRight(geometry.bottomRight() - QPointF(margin(), margin()));
+-
+-    QPointF origin = geometry.topLeft();
+-    qreal top, bottom, left, right;
+-    top    = (d->sizes[TopPositioned] >= 0)    ? d->sizes[TopPositioned]    : 0;
+-    left   = (d->sizes[LeftPositioned] >= 0)   ? d->sizes[LeftPositioned]   : 0;
+-    bottom = geometry.height() - ((d->sizes[BottomPositioned] >= 0) ? d->sizes[BottomPositioned] : 0);
+-    right  = geometry.width()  - ((d->sizes[RightPositioned] >= 0)  ? d->sizes[RightPositioned]  : 0);
+-
+-    if (d->itemPositions[TopPositioned] /*&& d->itemPositions[TopPositioned]->isVisible()*/) {
+-        top = (d->sizes[TopPositioned] >= 0) ? d->sizes[TopPositioned] : d->itemPositions[TopPositioned]->sizeHint().height();
+-        d->itemPositions[TopPositioned]->setGeometry(QRectF(origin, QSizeF(
+-                geometry.width(), top)));
+-        top += spacing();
+-    }
+-
+-    if (d->itemPositions[BottomPositioned] /*&& d->itemPositions[BottomPositioned]->isVisible()*/) {
+-        bottom = (d->sizes[BottomPositioned] >= 0) ? d->sizes[BottomPositioned]
+-                : d->itemPositions[BottomPositioned]->sizeHint().height();
+-        d->itemPositions[BottomPositioned]->setGeometry(QRectF(origin + QPointF(0,
+-                geometry.height() - bottom), QSizeF(geometry.width(),
+-                bottom)));
+-        bottom = geometry.height() - bottom - spacing();
+-    }
+-
+-    if (d->itemPositions[LeftPositioned] /*&& d->itemPositions[LeftPositioned]->isVisible()*/) {
+-        left = (d->sizes[LeftPositioned] >= 0) ? d->sizes[LeftPositioned] : d->itemPositions[LeftPositioned]->sizeHint().width();
+-        d->itemPositions[LeftPositioned]->setGeometry(QRectF(origin + QPointF(0, top),
+-                QSizeF(left, bottom - top)));
+-        left += spacing();
+-    }
+-
+-    if (d->itemPositions[RightPositioned] /*&& d->itemPositions[RightPositioned]->isVisible()*/) {
+-        right = (d->sizes[RightPositioned] >= 0) ? d->sizes[RightPositioned] : d->itemPositions[RightPositioned]->sizeHint().width();
+-        d->itemPositions[RightPositioned]->setGeometry(QRectF(origin + QPointF(
+-                geometry.width() - right, top), QSizeF(right, bottom - top)));
+-        right = geometry.width() - right - spacing();
+-    }
+-
+-    if (d->itemPositions[CenterPositioned] /*&& d->itemPositions[CenterPositioned]->isVisible()*/) {
+-        d->itemPositions[CenterPositioned]->setGeometry(QRectF(
+-                origin + QPointF(left, top), QSizeF(right - left, bottom - top)));
+-    }
+-
+-}
+-
+-QSizeF BorderLayout::sizeHint() const
+-{
+-    qreal hintHeight = 0.0;
+-    qreal hintWidth = 0.0;
+-
+-    if (d->itemPositions[TopPositioned] /*&& d->itemPositions[TopPositioned]->isVisible()*/) {
+-        hintHeight += d->itemPositions[TopPositioned]->sizeHint().height();
+-    }
+-
+-    if (d->itemPositions[BottomPositioned] /*&& d->itemPositions[BottomPositioned]->isVisible()*/) {
+-        hintHeight += d->itemPositions[BottomPositioned]->sizeHint().height();
+-    }
+-
+-    if (d->itemPositions[LeftPositioned] /*&& d->itemPositions[LeftPositioned]->isVisible()*/) {
+-        hintWidth += d->itemPositions[LeftPositioned]->sizeHint().width();
+-    }
+-
+-    if (d->itemPositions[RightPositioned] /*&& d->itemPositions[RightPositioned]->isVisible()*/) {
+-        hintWidth += d->itemPositions[RightPositioned]->sizeHint().width();
+-    }
+-
+-    if (d->itemPositions[CenterPositioned] /*&& d->itemPositions[CenterPositioned]->isVisible()*/) {
+-        hintHeight += d->itemPositions[CenterPositioned]->sizeHint().height();
+-        hintWidth += d->itemPositions[CenterPositioned]->sizeHint().width();
+-    }
+-
+-    return QSizeF(hintWidth + 2 * margin(), hintHeight + 2 * margin());
+-}
+-
+-void BorderLayout::addItem(Plasma::LayoutItem * item)
+-{
+-    BorderLayout::addItem (item, CenterPositioned);
+-}
+-
+-void BorderLayout::addItem(Plasma::LayoutItem * item, Position position)
+-{
+-    d->itemPositions[position] = item;
+-    update();
+-}
+-
+-void BorderLayout::removeItem(LayoutItem * item)
+-{
+-    QMutableMapIterator< Position, Plasma::LayoutItem * > i(d->itemPositions);
+-    while (i.hasNext()) {
+-        i.next();
+-        if (i.value() == item) {
+-            i.remove();
+-        }
+-    }
+-    update();
+-}
+-
+-int BorderLayout::count() const
+-{
+-    int count = 0;
+-    foreach (Plasma::LayoutItem * i, d->itemPositions) {
+-        if (i) {
+-            ++count;
+-        }
+-    }
+-    return count;
+-}
+-
+-int BorderLayout::indexOf(LayoutItem * item) const
+-{
+-    int count = 0;
+-    foreach (Plasma::LayoutItem * i, d->itemPositions) {
+-        if (i) {
+-            if (item == i) {
+-                return count;
+-            }
+-            ++count;
+-        }
+-    }
+-    return -1;
+-}
+-
+-LayoutItem * BorderLayout::itemAt(int index) const
+-{
+-    int count = 0;
+-    foreach (Plasma::LayoutItem * i, d->itemPositions) {
+-        if (i) {
+-            if (index == count) {
+-                return i;
+-            }
+-            count++;
+-
+-        }
+-    }
+-
+-    return 0;
+-}
+-
+-Plasma::LayoutItem * BorderLayout::takeAt(int i)
+-{
+-    Plasma::LayoutItem * item = itemAt(i);
+-    removeItem(item);
+-    return item;
+-}
+-
+-void BorderLayout::setSize(qreal size, Position border)
+-{
+-    d->sizes[border] = size;
+-    update();
+-}
+-
+-void BorderLayout::setAutoSize(Position border)
+-{
+-    d->sizes[border] = -1;
+-    update();
+-}
+-
+-qreal BorderLayout::size(Position border)
+-{
+-    if (border == CenterPositioned) {
+-        return -1;
+-    }
+-    return d->sizes[border];
+-}
+-
+-}
+--- a/libs/plasma/widgets/layout.h
++++ /dev/null
+@@ -1,174 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef __LAYOUT__
+-#define __LAYOUT__
+-
+-#include <QtCore/QRectF>
+-#include <QtCore/QSizeF>
+-
+-#include <plasma/widgets/layoutitem.h>
+-#include <plasma/plasma_export.h>
+-
+-namespace Plasma
+-{
+-
+-class LayoutAnimator;
+-
+-/**
+- * Base class for Plasma Layout managers
+- *
+- * @author Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- * All layout managers must implement this class. Normal users should use the specific layouts,
+- * like Plasma::VBoxLayout, Plasma::HBoxLayout and Plasma::GridLayout.
+- */
+-
+-class PLASMA_EXPORT Layout : public LayoutItem
+-{
+-    public:
+-
+-        /**
+-         * Constructor.
+-         */
+-        explicit Layout(LayoutItem *parent);
+-
+-        /**
+-         * Virtual Destructor.
+-         */
+-        virtual ~Layout();
+-
+-        /**
+-         * Returns the margin of this Layout.
+-         */
+-        qreal margin() const;
+-
+-        /**
+-         * Sets the margin of this Layout.
+-         */
+-        void setMargin(qreal m);
+-
+-        /**
+-         * Returns the spacing between Layout elements of this Layout.
+-         */
+-        qreal spacing() const;
+-
+-        /**
+-         * Sets the spacing of this Layout.
+-         */
+-        void setSpacing(qreal s);
+-
+-        /**
+-         * Returns the parent of this Layout.
+-         */
+-        LayoutItem *parent() const;
+-
+-        /**
+-         * Sets the parent of this layout.
+-         */
+-        void setParent(LayoutItem *parent);
+-
+-        /**
+-         * Returns the number of elements of this Layout.
+-         */
+-        virtual int count() const = 0;
+-
+-        /**
+-         * Returns true if this Layout contains no elements, false otherwise.
+-         */
+-        bool isEmpty() const;
+-
+-        /**
+-         * Adds a Item to this Layout.
+-         * @param l Pointer to the Item to be added.
+-         */
+-            virtual void addItem(LayoutItem *l) = 0;
+-
+-         /**
+-          * Removes a Item from this Layout.
+-          * @param l Pointer to the Item to be removed.
+-          */
+-        virtual void removeItem(LayoutItem *l) = 0;
+-
+-        /**
+-         * Returns the index of a Item in this Layout.
+-         * @param l Pointer to an Item to be queryed.
+-         */
+-        virtual int indexOf(LayoutItem *l) const = 0;
+-
+-        /**
+-         * Returns a Pointer to an Item in this Layout.
+-         * @param i Index of the desired Item.
+-         */
+-        virtual LayoutItem *itemAt(int i) const = 0;
+-
+-        /**
+-         * Takes the Pointer of an Item in this Layout.
+-         * @param i Index of the desired Item.
+-         */
+-        virtual LayoutItem *takeAt(int i) = 0;
+-
+-        /**
+-         * Returns the object controlling animation of changes
+-         * in this layout or 0 if no animator has been set.
+-         */
+-        virtual LayoutAnimator* animator() const;
+-
+-        /** 
+-         * Sets the object controlling animation of changes in this
+-         * layout.
+-         */
+-        virtual void setAnimator( LayoutAnimator* animator );
+-
+-        /** Triggers an update of the layout. */ 
+-        void update();
+-
+-        /** 
+-         * Returns the minimum size of this layout.
+-         * The default implementation allows unlimited resizing.
+-         */
+-        virtual QSizeF minimumSize() const;
+-        /**
+-         * Returns the maximum size of this layout.  The default
+-         * implementation allows unlimited resizing.
+-         */
+-        virtual QSizeF maximumSize() const;      
+-
+-        /** TODO Document me */
+-        void invalidate(); 
+-
+-    protected:
+-        /**
+-         * Starts a layout animation.  Subclasses may call this 
+-         * at the end of their setGeometry() implementation to
+-         * start the timeline associated with the layout's animator()
+-         * if there is one.  If an animation is already in progress then
+-         * the timeline is reset to 0ms and the animation continues.
+-         */
+-        void startAnimation();
+-
+-    private:
+-        class Private;
+-        Private *const d;
+-};
+-
+-}
+-
+-#endif /* __LAYOUT__ */
+--- a/libs/plasma/widgets/nodelayout.cpp
++++ /dev/null
+@@ -1,240 +0,0 @@
+-/*
+- *   Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library/Lesser General Public License
+- *   version 2, or (at your option) any later version, as published by the
+- *   Free Software Foundation
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library/Lesser General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "nodelayout.h"
+-
+-#include <QPair>
+-#include <QMap>
+-
+-namespace Plasma
+-{
+-NodeLayout::NodeCoordinate::NodeCoordinate(qreal xRelative, qreal yRelative, qreal xAbsolute, qreal yAbsolute)
+-    : xr(xRelative), xa(xAbsolute), yr(yRelative), ya(yAbsolute) {}
+-
+-NodeLayout::NodeCoordinate NodeLayout::NodeCoordinate::simple(qreal x, qreal y,
+-        CoordinateType xType, CoordinateType yType)
+-{
+-    NodeLayout::NodeCoordinate coo;
+-    switch (xType) {
+-    case Relative:
+-        coo.xr = x;
+-        coo.xa = 0;
+-        break;
+-    case Absolute:
+-        coo.xr = 0;
+-        coo.xa = x;
+-        break;
+-    case InnerRelative:
+-        coo.xr = x;
+-        coo.xa = INFINITY;
+-        break;
+-    }
+-
+-    switch (yType) {
+-    case Relative:
+-        coo.yr = y;
+-        coo.ya = 0;
+-        break;
+-    case Absolute:
+-        coo.yr = 0;
+-        coo.ya = y;
+-        break;
+-    case InnerRelative:
+-        coo.yr = y;
+-        coo.ya = INFINITY;
+-        break;
+-    }
+-    return coo;
+-}
+-
+-class NodeLayout::Private {
+-public:
+-    QMap <LayoutItem * , QPair < NodeCoordinate, NodeCoordinate > > items;
+-    QRectF geometry;
+-    QSizeF sizeHint;
+-
+-    qreal calculateXPosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
+-    {
+-        return parentGeometry.left() + (coo.xr * parentGeometry.width())  + coo.xa;
+-    }
+-
+-    qreal calculateYPosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
+-    {
+-        return parentGeometry.top() + (coo.yr * parentGeometry.height())  + coo.ya;
+-    }
+-
+-    QPointF calculatePosition(const NodeCoordinate & coo, const QRectF & parentGeometry) const
+-    {
+-        return QPointF(
+-            calculateXPosition(coo, geometry),
+-            calculateYPosition(coo, geometry)
+-        );
+-    }
+-
+-
+-    QRectF calculateRectangle(LayoutItem * item, QRectF geometry = QRectF()) const
+-    {
+-        if (geometry == QRectF()) geometry = this->geometry;
+-
+-        QRectF result;
+-        if (!item || !items.contains(item)) return QRectF();
+-
+-        result.setTopLeft(calculatePosition(items[item].first, geometry));
+-
+-        if (items[item].second.xa != INFINITY) {
+-            result.setRight(calculateXPosition(items[item].second, geometry));
+-        } else {
+-            result.setWidth(item->sizeHint().width());
+-            result.moveLeft(result.left() - items[item].second.xr * result.width());
+-        }
+-
+-        if (items[item].second.ya != INFINITY) {
+-            result.setBottom(calculateYPosition(items[item].second, geometry));
+-        } else {
+-            result.setHeight(item->sizeHint().height());
+-            result.moveTop(result.top() - items[item].second.yr * result.height());
+-        }
+-
+-        return result;
+-    }
+-
+-    void invalidate()
+-    {
+-        foreach (LayoutItem * item, items.keys()) {
+-            if (item) {
+-                item->setGeometry(calculateRectangle(item));
+-            }
+-        }
+-    }
+-
+-    void calculateSizeHint(LayoutItem * item = NULL) {
+-        if (item == NULL) {
+-            // Recalculate the sizeHint using all items
+-            sizeHint = QSizeF();
+-            foreach (LayoutItem * item, items.keys()) {
+-                if (item) {
+-                    calculateSizeHint(item);
+-                }
+-            }
+-        } else {
+-            // Calculate size hint for current item
+-            QRectF scaled = calculateRectangle(item, QRectF(0, 0, 1, 1));
+-
+-            // qMin(..., 1.0) so that for autosized elements we don't get smaller
+-            // size than the item's size itself. The sizeHint for NodeLayout can
+-            // not do anything smarter concerning the sizeHint when there are
+-            // autosized elements.
+-
+-            qreal width  = item->sizeHint().width()  / qMin(scaled.width(), 1.0);
+-            qreal height = item->sizeHint().height() / qMin(scaled.height(), 1.0);
+-
+-            if (width > sizeHint.width())   sizeHint.setWidth(width);
+-            if (height > sizeHint.height()) sizeHint.setHeight(height);
+-        }
+-    }
+-
+-};
+-
+-
+-NodeLayout::NodeLayout(LayoutItem * parent) 
+-  : Layout(parent), d(new Private())
+-{
+-}
+-
+-NodeLayout::~NodeLayout()
+-{
+-    delete d;
+-}
+-
+-Qt::Orientations NodeLayout::expandingDirections() const
+-{
+-    return Qt::Horizontal | Qt::Vertical;
+-}
+-
+-QRectF NodeLayout::geometry() const
+-{
+-    return d->geometry;
+-}
+-
+-void NodeLayout::setGeometry(const QRectF& geometry)
+-{
+-    if (!geometry.isValid() || geometry.isEmpty()) {
+-        return;
+-    }
+-
+-    d->geometry = geometry;
+-    d->invalidate();
+-}
+-
+-QSizeF NodeLayout::sizeHint() const
+-{
+-    return d->sizeHint;
+-}
+-
+-void NodeLayout::addItem (LayoutItem * item)
+-{
+-    NodeLayout::addItem (item, NodeCoordinate());
+-}
+-
+-void NodeLayout::addItem (LayoutItem * item, NodeCoordinate topLeft, NodeCoordinate bottomRight)
+-{
+-    if (!item) return;
+-    d->items[item] = QPair<NodeCoordinate, NodeCoordinate>(topLeft, bottomRight);
+-    d->calculateSizeHint(item);
+-}
+-
+-void NodeLayout::addItem (LayoutItem * item, NodeCoordinate node, qreal xr, qreal yr)
+-{
+-    if (!item) return;
+-    d->items[item] = QPair<NodeCoordinate, NodeCoordinate>(node,
+-        NodeCoordinate::simple(xr, yr, NodeCoordinate::InnerRelative, NodeCoordinate::InnerRelative));
+-    d->calculateSizeHint(item);
+-}
+-
+-void NodeLayout::removeItem (LayoutItem * item)
+-{
+-    if (!item) return;
+-    d->items.remove(item);
+-    d->calculateSizeHint();
+-}
+-
+-int NodeLayout::count() const
+-{
+-    return d->items.count();
+-}
+-
+-int NodeLayout::indexOf(LayoutItem * item) const
+-{
+-    if (!item) return -1;
+-    return d->items.keys().indexOf(item);
+-}
+-
+-LayoutItem * NodeLayout::itemAt(int i) const
+-{
+-    return d->items.keys()[i];
+-}
+-
+-LayoutItem * NodeLayout::takeAt(int i)
+-{
+-    LayoutItem * item = itemAt(i);
+-    removeItem(item);
+-    return item;
+-}
+-
+-}
+--- a/libs/plasma/widgets/freelayout.h
++++ /dev/null
+@@ -1,69 +0,0 @@
+-/*
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef PLASMA_FREE_LAYOUT_H
+-#define PLASMA_FREE_LAYOUT_H
+-
+-#include <QtCore/QList>
+-
+-#include <plasma/plasma_export.h>
+-#include <plasma/widgets/layout.h>
+-
+-namespace Plasma
+-{
+-
+-/**
+- * The FreeLayout class is a layout for use in desktop-like workspaces where
+- * items can be moved around freely and applets and widgets are allowed
+- * to determine their own size.
+- *
+- * Whenever this layout is updated, all child items are resized to
+- * their sizeHint() and left in their existing positions.
+- */
+-class PLASMA_EXPORT FreeLayout : public Layout
+-{
+-    public:
+-        /**
+-         * Creates a new free layout
+-         */
+-        explicit FreeLayout(LayoutItem *parent = 0);
+-        ~FreeLayout();
+-
+-        // reimplemented from Layout
+-        virtual void addItem(LayoutItem *l);
+-        virtual void removeItem(LayoutItem *l);
+-        virtual int indexOf(LayoutItem *l) const;
+-        virtual LayoutItem *itemAt(int i) const;
+-        virtual LayoutItem *takeAt(int i);
+-        virtual Qt::Orientations expandingDirections() const;
+-        virtual QRectF geometry() const;
+-        virtual void setGeometry(const QRectF& geometry);
+-        virtual int count() const;
+-
+-        virtual QSizeF sizeHint() const;
+-
+-    private:
+-        class Private;
+-        Private *const d;
+-};
+-
+-}
+-
+-#endif /* PLASMA_FREE_LAYOUT_H */
+--- a/libs/plasma/widgets/boxlayout.cpp
++++ /dev/null
+@@ -1,467 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *   Copyright 2007 by Robert Knight <robertknight at gmail.com>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "boxlayout.h"
+-
+-#include <QtCore/QList>
+-#include <QtCore/QTimeLine>
+-
+-#include <KDebug>
+-
+-#include "layoutanimator.h"
+-
+-namespace Plasma
+-{
+-
+-class BoxLayout::Private
+-{
+-public:
+-    BoxLayout *const q;
+-    Direction direction;
+-    QRectF geometry;
+-    QList<LayoutItem*> children;
+-
+-    Private(BoxLayout *parent)
+-        : q(parent)
+-        , direction(LeftToRight)
+-    {
+-    }
+-
+-    // returns the component of 'size' in the expanding direction
+-    // of this layout
+-    qreal size(const QSizeF& size) const
+-    {
+-        switch (direction) {
+-            case LeftToRight:
+-            case RightToLeft:
+-                return size.width();
+-            case TopToBottom:
+-            case BottomToTop:
+-                return size.height();
+-            default:
+-                Q_ASSERT(false);
+-                return 0;
+-        }
+-    }
+-
+-    // returns the direction in which this layout expands
+-    // or shrinks
+-    Qt::Orientation expandingDirection() const
+-    {
+-        switch ( direction ) {
+-            case LeftToRight:
+-            case RightToLeft:
+-                return Qt::Horizontal;
+-            case TopToBottom:
+-            case BottomToTop:
+-                return Qt::Vertical;
+-            default:
+-                Q_ASSERT(false);
+-                return Qt::Horizontal;
+-        }
+-    }
+-
+-    // returns the position from which layouting should
+-    // begin depending on the direction of this layout
+-    qreal startPos(const QRectF& geometry) const
+-    {
+-        switch ( direction ) {
+-            case LeftToRight:
+-            case TopToBottom:
+-                return q->margin();
+-            case RightToLeft:
+-                return geometry.width() - q->margin();
+-            case BottomToTop:
+-                return geometry.height() - q->margin();
+-            default:
+-                Q_ASSERT(false);
+-                return 0;
+-        }
+-    }
+-
+-    // lays out an item
+-    //
+-    // 'geometry' the geometry of the layout
+-    // 'item' the item whoose geometry should be altered
+-    // 'pos' the position of the item (in the expanding direction of the layout)
+-    // 'size' the size of the item (in the expanding direction of the layout)
+-    //
+-    // returns the position for the next item in the layout
+-    //
+-    qreal layoutItem(const QRectF& geometry , LayoutItem *item , const qreal pos , qreal size)
+-    {
+-        //qDebug() << "layoutItem: " << direction << "item size" << size;
+-
+-        QRectF newGeometry;
+-        qreal newPos = 0;
+-
+-        qreal top = 0;
+-        qreal height = 0;
+-
+-        QSizeF minSize = item->minimumSize();
+-        QSizeF maxSize = item->maximumSize();
+-        switch ( direction ) {
+-            case LeftToRight:
+-            case RightToLeft:
+-               height = qBound(minSize.height(),geometry.height(),maxSize.height());
+-               top = geometry.top();
+-               break;
+-            case TopToBottom:
+-            case BottomToTop:
+-               height = qBound(minSize.width(),geometry.width(),maxSize.width());
+-               top = geometry.left();
+-               break;
+-        }
+-
+-        switch ( direction ) {
+-            case LeftToRight:
+-                newGeometry = QRectF(pos,top,size,height);
+-                newPos = pos+size+q->spacing();
+-                break;
+-            case RightToLeft:
+-                newGeometry = QRectF(geometry.width()-pos-size,top,
+-                                     size,height);
+-                newPos = pos-size-q->spacing();
+-                break;
+-            case TopToBottom:
+-                newGeometry = QRectF(top,pos,height,size);
+-                newPos = pos+size+q->spacing();
+-                break;
+-            case BottomToTop:
+-                newGeometry = QRectF(top,geometry.height()-pos-size,
+-                                     height,size);
+-                newPos = pos-size-q->spacing();
+-                break;
+-        }
+-
+-       // qDebug() << "Item geometry: " << newGeometry;
+-
+-        if ( q->animator() )
+-            q->animator()->setGeometry(item,newGeometry);
+-        else
+-            item->setGeometry(newGeometry);
+-
+-        return newPos;
+-    }
+-
+-    enum SizeType
+-    {
+-        MinSize,
+-        MaxSize,
+-        HintSize
+-    };
+-
+-    // this provides a + function which can be passed as the 'op'
+-    // argument to calculateSize
+-    static qreal sum(const qreal a , const qreal b)
+-    {
+-        return a+b;
+-    }
+-
+-    // calcualtes a size hint or value for this layout
+-    // 'sizeType' - The item size ( minimum , maximum , hint ) to use
+-    // 'dir' - The direction component of the item size to use
+-    // 'op' - A function to apply to the size of each item in the layout
+-    //        , usually qMax,qMin or sum
+-    template <class T>
+-    qreal calculateSize(SizeType sizeType , Qt::Orientation dir , T (*op)(T,T)) const
+-    {
+-        qreal value = 0;
+-        for ( int i = 0 ; i < children.count() ; i++ ) {
+-
+-            QSizeF itemSize;
+-            switch ( sizeType ) {
+-                case MinSize:
+-                    itemSize = children[i]->minimumSize();
+-                    break;
+-                case MaxSize:
+-                    itemSize = children[i]->maximumSize();
+-                    break;
+-                case HintSize:
+-                    itemSize = children[i]->sizeHint();
+-                    break;
+-            }
+-
+-            if ( dir == Qt::Horizontal ) {
+-                value = op(value,itemSize.width());
+-            } else {
+-                value = op(value,itemSize.height());
+-            }
+-        }
+-
+-        return value;
+-    }
+-
+-    // calculates a size hint or value for this layout
+-    // 'calculateSizeType' specifies the value to be calculated
+-    QSizeF calculateSize(SizeType calculateSizeType) const
+-    {
+-        QSizeF result;
+-
+-        const qreal totalMargin = q->margin() * 2;
+-        const qreal totalSpacing = q->spacing() * (children.count()-1);
+-
+-        switch ( direction ) {
+-            case LeftToRight:
+-            case RightToLeft:
+-                result = QSizeF(calculateSize(calculateSizeType,Qt::Horizontal,sum),
+-                                calculateSize(calculateSizeType,Qt::Vertical,qMax<qreal>));
+-
+-                result.rwidth() += totalMargin + totalSpacing;
+-                result.rheight() += totalMargin;
+-
+-                break;
+-            case TopToBottom:
+-            case BottomToTop:
+-                result = QSizeF(calculateSize(calculateSizeType,Qt::Horizontal,qMax<qreal>),
+-                                calculateSize(calculateSizeType,Qt::Vertical,sum));
+-
+-                result.rheight() += totalMargin + totalSpacing;
+-                result.rwidth() += totalMargin;
+-
+-                break;
+-        }
+-
+-        return result;
+-    }
+-};
+-
+-
+-BoxLayout::BoxLayout(Direction direction , LayoutItem *parent)
+-    : Layout(parent),
+-      d(new Private(this))
+-{
+-    d->direction = direction;
+-}
+-
+-void BoxLayout::setDirection(Direction direction)
+-{
+-    d->direction = direction;
+-    update();
+-}
+-BoxLayout::Direction BoxLayout::direction() const
+-{
+-    return d->direction;
+-}
+-
+-BoxLayout::~BoxLayout()
+-{
+-    foreach (LayoutItem* item, d->children) {
+-        item->unsetManagingLayout(this);
+-    }
+-    delete d;
+-}
+-
+-Qt::Orientations BoxLayout::expandingDirections() const
+-{
+-    switch ( d->direction ) {
+-        case LeftToRight:
+-        case RightToLeft:
+-            return Qt::Horizontal;
+-        case TopToBottom:
+-        case BottomToTop:
+-            return Qt::Vertical;
+-        default:
+-            Q_ASSERT(false);
+-            return 0;
+-    }
+-}
+-
+-QRectF BoxLayout::geometry() const
+-{
+-    return d->geometry;
+-}
+-
+-int BoxLayout::count() const
+-{
+-    return d->children.count();
+-}
+-
+-void BoxLayout::insertItem(int index, LayoutItem *item)
+-{
+-    if (!item) {
+-        return;
+-    }
+-
+-    item->setManagingLayout(this);
+-
+-    if ( index == -1 )
+-        index = d->children.size();
+-
+-    d->children.insert(index, item);
+-
+-    if ( animator() )
+-        animator()->setCurrentState(item,LayoutAnimator::InsertedState);
+-
+-    update();
+-}
+-
+-void BoxLayout::addItem(LayoutItem *item)
+-{
+-    insertItem(-1,item);
+-}
+-
+-void BoxLayout::removeItem(LayoutItem *item)
+-{
+-    if (!item) {
+-        return;
+-    }
+-
+-    item->unsetManagingLayout(this);
+-    d->children.removeAll(item);
+-
+-    if ( animator() )
+-        animator()->setCurrentState(item,LayoutAnimator::RemovedState);
+-
+-    update();
+-}
+-
+-int BoxLayout::indexOf(LayoutItem *l) const
+-{
+-    return d->children.indexOf(l);
+-}
+-
+-LayoutItem *BoxLayout::itemAt(int i) const
+-{
+-    return d->children[i];
+-}
+-
+-LayoutItem *BoxLayout::takeAt(int i)
+-{
+-    return d->children.takeAt(i);
+-
+-    update();
+-}
+-
+-void BoxLayout::setGeometry(const QRectF& geo)
+-{
+-    QRectF geometry = geo.adjusted(margin(),margin(),-margin(),-margin());
+-
+-    //qDebug() << "geo before " << geo << "after" << geometry << "margin" << margin();
+-    //qDebug() << "Box layout beginning with geo" << geometry;
+-    //qDebug() << "This box max size" << maximumSize();
+-
+-    QVector<qreal> sizes(count());
+-    QVector<qreal> expansionSpace(count());
+-
+-    qreal available = d->size(geometry.size()) - spacing()*(d->children.count()-1);
+-    qreal perItemSize = available / count();
+-
+-    // initial distribution of space to items
+-    for ( int i = 0 ; i < sizes.count() ; i++ ) {
+-        const LayoutItem *item = d->children[i];
+-
+-        const bool isExpanding = item->expandingDirections() & d->expandingDirection();
+-
+-        if ( isExpanding )
+-            sizes[i] = perItemSize;
+-        else
+-            sizes[i] = d->size(item->sizeHint());
+-
+-        const qreal minItemSize = d->size(item->minimumSize());
+-        const qreal maxItemSize = d->size(item->maximumSize());
+-
+-       // qDebug() << "Layout max item " << i << "size: " << maxItemSize;
+-
+-        sizes[i] = qMin( sizes[i] , maxItemSize );
+-        sizes[i] = qMax( sizes[i] , minItemSize );
+-
+-       // qDebug() << "Available: " << available << "per item:" << perItemSize <<
+-       //     "Initial size: " << sizes[i];
+-
+-        if ( isExpanding )
+-            expansionSpace[i] = maxItemSize-sizes[i];
+-        else
+-            expansionSpace[i] = 0;
+-
+-        available -= sizes[i];
+-        // adjust the per-item size if the space was over or under used
+-        if ( sizes[i] != perItemSize && i != sizes.count()-1 ) {
+-            perItemSize = available / (sizes.count()-i-1);
+-        }
+-    }
+-
+-    // distribute out any remaining space to items which can still expand
+-    //
+-    // space is distributed equally amongst remaining items until we run
+-    // out of space or items to expand
+-    int expandable = sizes.count();
+-    const qreal threshold = 1.0;
+-    while ( available > threshold && expandable > 0 ) {
+-
+-        qreal extraSpace = available / expandable;
+-        for ( int i = 0 ; i < sizes.count() ; i++ ) {
+-            if ( expansionSpace[i] > threshold ) {
+-                qreal oldSize = sizes[i];
+-
+-                sizes[i] += qMin(extraSpace,expansionSpace[i]);
+-
+-                expansionSpace[i] -= sizes[i]-oldSize;
+-                available -= sizes[i]-oldSize;
+-            } else {
+-                expandable--;
+-            }
+-        }
+-    }
+-
+-    // set items' geometry according to new sizes
+-    qreal pos = d->startPos(geometry);
+-    for ( int i = 0 ; i < sizes.count() ; i++ ) {
+-
+-        //QObject *obj = dynamic_cast<QObject*>(d->children[i]);
+-        //if ( obj )
+-        //qDebug() << "Item " << i << obj->metaObject()->className() << "size:" << sizes[i];
+-
+-       pos = d->layoutItem( geometry , d->children[i] , pos , sizes[i] );
+-    }
+-
+-    d->geometry = geometry;
+-
+-    startAnimation();
+-}
+-
+-
+-QSizeF BoxLayout::maximumSize() const
+-{
+-    return Layout::maximumSize();
+-}
+-QSizeF BoxLayout::minimumSize() const
+-{
+-    return d->calculateSize(Private::MinSize);
+-}
+-QSizeF BoxLayout::sizeHint() const
+-{
+-    return d->calculateSize(Private::HintSize);
+-}
+-
+-HBoxLayout::HBoxLayout(LayoutItem *parent)
+-    : BoxLayout(LeftToRight,parent)
+-{
+-}
+-
+-VBoxLayout::VBoxLayout(LayoutItem *parent)
+-    : BoxLayout(TopToBottom,parent)
+-{
+-}
+-
+-
+-} // Plasma namespace
+-
+--- a/libs/plasma/widgets/layoutitem.cpp
++++ /dev/null
+@@ -1,142 +0,0 @@
+-/*
+- *   Copyright 2007 by Matias Valdenegro T. <mvaldenegro at informatica.utem.cl>
+- *
+- *   This program is free software; you can redistribute it and/or modify
+- *   it under the terms of the GNU Library General Public License as
+- *   published by the Free Software Foundation; either version 2, or
+- *   (at your option) any later version.
+-
+- *
+- *   This program is distributed in the hope that it will be useful,
+- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *   GNU General Public License for more details
+- *
+- *   You should have received a copy of the GNU Library General Public
+- *   License along with this program; if not, write to the
+- *   Free Software Foundation, Inc.,
+- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "layoutitem.h"
+-
+-#include <KDebug>
+-
+-#include "layout.h"
+-
+-namespace Plasma
+-{
+-
+-class LayoutItem::Private
+-{
+-    public:
+-        Private()
+-            : layout(0),
+-              managingLayout(0)
+-        {
+-        }
+-
+-        ~Private() {}
+-
+-        Layout* layout;
+-        Layout* managingLayout;
+-};
+-
+-
+-LayoutItem::LayoutItem()
+-    : d(new Private())
+-{
+-}
+-
+-LayoutItem::~LayoutItem()
+-{
+-    if (d->managingLayout) {
+-        d->managingLayout->removeItem(this);
+-    }
+-
+-    delete d->layout;
+-    delete d;
+-}
+-
+-QGraphicsItem* LayoutItem::graphicsItem() 
+-{
+-    return 0;
+-}
+-
+-bool LayoutItem::hasHeightForWidth() const
+-{
+-    return false;
+-}
+-
+-qreal LayoutItem::heightForWidth(qreal w) const
+-{
+-    return 0.0;
+-}
+-
+-bool LayoutItem::hasWidthForHeight() const
+-{
+-    return false;
+-}
+-
+-qreal LayoutItem::widthForHeight(qreal h) const
+-{
+-    return 0.0;
+-}
+-
+-void LayoutItem::setLayout(Layout* layout)
+-{
+-    if (d->layout && layout) {
+-        kDebug() << "already have a layout.";
+-        return;
+-    }
+-
+-    if (layout) {
+-        layout->setParent(this);
+-    } else if (d->layout) {
+-        // FIXME: we had a layout, but now it has been removed
+-        // and we are without layout; we should tell our
+-        // children about this, but LayoutItem doesn't know
+-        // about children =/
+-        kDebug() << "layout removed from under us. expect crashes";
+-    }
+-
+-    d->layout = layout;
+-}
+-
+-Layout* LayoutItem::layout() const
+-{
+-    return d->layout;
+-}
+-
+-void LayoutItem::setManagingLayout(Layout* layout)
+-{
+-    if (layout == d->managingLayout) {
+-        return;
+-    }
+-
+-    if (d->managingLayout) {
+-        d->managingLayout->removeItem(this);
+-    }
+-
+-    d->managingLayout = layout;
+-    managingLayoutChanged();
+-}
+-
+-void LayoutItem::unsetManagingLayout(Layout* layout)
+-{
+-    if (d->managingLayout == layout) {
+-        d->managingLayout = 0;
+-    }
+-    managingLayoutChanged();
+-}
+-
+-void LayoutItem::managingLayoutChanged()
+-{
+-}
+-
+-Layout* LayoutItem::managingLayout() const
+-{
+-    return d->managingLayout;
+-}
+-
+-}
+--- a/libs/plasma/widgets/lineedit.h
++++ b/libs/plasma/widgets/lineedit.h
+@@ -28,7 +28,7 @@
+ 
+ #include <plasma/dataengine.h>
+ #include <plasma/plasma.h>
+-#include <plasma/widgets/layoutitem.h>
++#include <plasma/layouts/layoutitem.h>
+ 
+ namespace Plasma
+ {
+@@ -71,6 +71,7 @@
+ 
+         QRectF geometry() const;
+         void setGeometry(const QRectF& geometry);
++        void updateGeometry();
+         QSizeF sizeHint() const;
+ 
+         void setDefaultText(const QString &text);
+--- a/libs/plasma/widgets/flash.h
++++ b/libs/plasma/widgets/flash.h
+@@ -43,12 +43,6 @@
+ 
+         void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+         QRectF boundingRect() const;
+-        QSizeF minimumSize() const;
+-        QSizeF maximumSize() const;
+-        virtual QSizeF sizeHint() const;
+-        void setSize(const QSize &size);
+-        void setWidth(int width);
+-        void setHeight(int height);
+ 
+         void setFont( const QFont & );
+         void setColor( const QColor & );
+--- a/libs/plasma/widgets/pushbutton.cpp
++++ b/libs/plasma/widgets/pushbutton.cpp
+@@ -26,6 +26,7 @@
+ #include <QStyle>
+ #include <QWidget>
+ #include <QPainter>
++#include <QGraphicsScene>
+ #include <QGraphicsSceneMouseEvent>
+ #include <QFontMetricsF>
+ #include <QApplication>
+@@ -250,22 +251,35 @@
+     update();
+ }
+ 
++void PushButton::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
++{
++    event->accept();
++    if (sceneBoundingRect().contains(event->scenePos())) {
++        if (d->state == Private::Released && scene()->mouseGrabberItem() == this) {
++            d->state = Private::Pressed;
++            update();
++        }
++    } else {
++        if (d->state == Private::Pressed) {
++            d->state = Private::Released;
++            update();
++        }
++    }
++}
++
+ void PushButton::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+ {
+     event->accept();
+     if (d->state == Private::Pressed) {
+         d->state = Private::Released;
++        emit clicked();
+ 
+-        if (sceneBoundingRect().contains(event->scenePos())) {
+-            emit clicked();
+-
+-            if (d->checkable) {
+-                d->checked = ! d->checked;
+-                emit toggled(d->checked);
+-            }
++        if (d->checkable) {
++            d->checked = ! d->checked;
++            emit toggled(d->checked);
+         }
++        update();
+     }
+-    update();
+ }
+ 
+ QSizeF PushButton::minimumSize() const
+--- a/libs/plasma/widgets/pushbutton.h
++++ b/libs/plasma/widgets/pushbutton.h
+@@ -178,6 +178,7 @@
+ 
+ protected:
+     void mousePressEvent(QGraphicsSceneMouseEvent *event);
++    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+ 
+     void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+--- a/libs/plasma/widgets/tests/testLayouts.cpp
++++ b/libs/plasma/widgets/tests/testLayouts.cpp
+@@ -8,11 +8,11 @@
+ #include <KAboutData>
+ #include <KIcon>
+ 
+-#include "../pushbutton.h"
+-#include "../lineedit.h"
+-#include "../boxlayout.h"
+-#include "../widget.h"
+-#include "../label.h"
++#include "plasma/layouts/boxlayout.h"
++#include "plasma/widgets/pushbutton.h"
++#include "plasma/widgets/lineedit.h"
++#include "plasma/widgets/widget.h"
++#include "plasma/widgets/label.h"
+ 
+ int main(int argc, char **argv)
+ {
+@@ -62,7 +62,7 @@
+    h2->addItem(labelTwo);
+    scene.addItem(labelTwo);
+ 
+-    widgetLayout->update();
++    widgetLayout->updateGeometry();
+ 
+     view.show();
+     return app.exec();
+--- a/libs/plasma/widgets/tests/testProgressBar.cpp
++++ b/libs/plasma/widgets/tests/testProgressBar.cpp
+@@ -10,9 +10,8 @@
+ #include <KIcon>
+ 
+ 
+-#include "../boxlayout.h"
+-#include "../widget.h"
+-#include "../progressbar.h"
++#include "plasma/layouts/boxlayout.h"
++#include "plasma/widgets/progressbar.h"
+ 
+ class Counter : QObject
+ {
+@@ -89,7 +88,7 @@
+     h1->addItem(progressBar);
+     scene.addItem(progressBar);
+ 
+-    widgetLayout->update();
++    widgetLayout->updateGeometry();
+ 
+     view.show();
+ 
+--- a/libs/plasma/widgets/widget.cpp
++++ b/libs/plasma/widgets/widget.cpp
+@@ -30,11 +30,10 @@
+ #include <QPainter>
+ #include <QPixmapCache>
+ #include <QStyleOptionGraphicsItem>
+-#include <QGraphicsSceneContextMenuEvent>
+ 
+ #include <KDebug>
+ 
+-#include "freelayout.h"
++#include "layouts/freelayout.h"
+ #include "plasma/plasma.h"
+ 
+ namespace Plasma
+@@ -216,7 +215,7 @@
+         d->size = QSizeF(width, height);
+ 
+         if (layout()) {
+-            layout()->setGeometry(boundingRect());
++            layout()->setGeometry(QRectF(QPointF(0, 0), d->size));
+         }
+ 
+         if (managingLayout()) {
+@@ -228,6 +227,11 @@
+     update();
+ }
+ 
++void Widget::setSize(qreal width, qreal height)
++{
++    setSize(QSizeF(width, height));
++}
++
+ void Widget::setSize(const QSizeF& size)
+ {
+     d->size = size;
+@@ -247,13 +251,13 @@
+     if (layout()) {
+         return layout()->sizeHint();
+     } else {
+-        return boundingRect().size();
++        return d->size;
+     }
+ }
+ 
+ QSizeF Widget::size() const
+ {
+-    return geometry().size();
++    return d->size;
+ }
+ 
+ QFont Widget::font() const
+@@ -274,6 +278,7 @@
+ 
+ void Widget::resize(const QSizeF& size)
+ {
++    //FIXME: we need to respect minimum size here i think
+     setGeometry(QRectF(pos(), size));
+ }
+ 
+@@ -296,16 +301,14 @@
+     d->childList.append(w);
+     w->setParentItem(this);
+ 
+-    //kDebug() << "Added Child Widget" <<  w;
++    //kDebug() << "Added Child Widget" <<  (QObject*)w << "our geom is" << geometry();
+ 
+     if (layout()) {
+         layout()->addItem(w);
+     }
+ 
+     updateGeometry();
+-
+-    //TODO: is this necessary?
+-    w->update();
++    //kDebug() << "after the item is added our geom is now" << geometry();
+ }
+ 
+ void Widget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+@@ -447,7 +450,11 @@
+     if (change == QGraphicsItem::ItemChildRemovedChange) {
+         Widget *child = dynamic_cast<Plasma::Widget*>(value.value<QGraphicsItem*>());
+         if (child) {
++            kDebug() << "removing" << (QObject*)child;
+             d->childList.removeAll(child);
++            if (layout()) {
++                layout()->removeItem(child);
++            }
+             updateGeometry();
+         }
+     }
+--- a/libs/plasma/widgets/icon.cpp
++++ b/libs/plasma/widgets/icon.cpp
+@@ -35,6 +35,7 @@
+ 
+ #ifdef BACKINGSTORE_BLUR_HACK
+ #include <private/qwindowsurface_p.h>
++#include "effects/blur.cpp"
+ #endif
+ 
+ #include <KIconEffect>
+@@ -47,7 +48,6 @@
+ 
+ #include "phase.h"
+ #include "svg.h"
+-#include "effects/blur.cpp"
+ 
+ namespace Plasma
+ {
+@@ -366,6 +366,9 @@
+ 
+ QSizeF Icon::Private::displaySizeHint(const QStyleOptionGraphicsItem *option) const
+ {
++    if (text.isEmpty() && infoText.isEmpty()) {
++      return QSizeF( .0, .0 );
++    }
+     QString label = text;
+     // const qreal maxWidth = (orientation == Qt::Vertical) ? iconSize.width() + 10 : 32757;
+     // NOTE: find a way to use the other layoutText, it currently returns nominal width, when
+--- a/libs/plasma/widgets/widget.h
++++ b/libs/plasma/widgets/widget.h
+@@ -27,7 +27,7 @@
+ #include <QtCore/QRectF>
+ #include <QtCore/QSizeF>
+ 
+-#include <plasma/widgets/layoutitem.h>
++#include <plasma/layouts/layoutitem.h>
+ #include <plasma/plasma_export.h>
+ 
+ namespace Plasma
+@@ -251,6 +251,7 @@
+      */
+     virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+     QVariant itemChange(GraphicsItemChange change, const QVariant &value);
++    void setSize(qreal width, qreal height);
+     void setSize(const QSizeF& size);
+     void managingLayoutChanged();
+ 
+--- a/libs/plasma/widgets/lineedit.cpp
++++ b/libs/plasma/widgets/lineedit.cpp
+@@ -27,6 +27,8 @@
+ 
+ #include <KDebug>
+ 
++#include "plasma/layouts/layout.h"
++
+ namespace Plasma
+ {
+ 
+@@ -184,6 +186,15 @@
+     update();
+ }
+ 
++void LineEdit::updateGeometry()
++{
++    if (managingLayout()) {
++        managingLayout()->invalidate();
++    } else {
++        setGeometry(QRectF(pos(), sizeHint()));
++    }
++}
++
+ QSizeF LineEdit::sizeHint() const
+ {
+     return document()->size();
+--- a/libs/plasma/widgets/flash.cpp
++++ b/libs/plasma/widgets/flash.cpp
+@@ -42,8 +42,6 @@
+ 
+         Private() { }
+         ~Private() { }
+-        int height;
+-        int width;
+ 
+         QString text;
+         QColor color;
+@@ -70,10 +68,9 @@
+     d->defaultDuration = 3000;
+     d->type = Private::Text;
+     d->color = Qt::black;
+-    d->height = 40;
+-    d->width = 100 ;
+     d->animId = 0;
+     d->state = Private::Invisible;
++    setSize(QSizeF(40, 100));
+ 
+     setCachePaintMode( NoCacheMode );
+ }
+@@ -85,21 +82,7 @@
+ 
+ QRectF Flash::boundingRect() const
+ {
+-    return QRectF(0,0,d->width,d->height);
+-}
+-
+-void Flash::setHeight(int h)
+-{
+-    prepareGeometryChange ();
+-    d->height = h;
+-    update();
+-}
+-
+-void Flash::setWidth(int w)
+-{
+-    prepareGeometryChange ();
+-    d->width = w;
+-    update();
++    return QRectF(0, 0, size().width(), size().height());
+ }
+ 
+ void Flash::setDuration( int duration )
+@@ -107,29 +90,6 @@
+     d->defaultDuration = duration;
+ }
+ 
+-QSizeF Flash::minimumSize() const
+-{
+-    return QSize(d->width,d->height);
+-}
+-
+-QSizeF Flash::maximumSize() const
+-{
+-    return QSize(d->width,d->height);
+-}
+-
+-void Flash::setSize(const QSize &s)
+-{
+-    prepareGeometryChange ();
+-    d->width = s.width();
+-    d->height = s.height();
+-    update();
+-}
+-
+-QSizeF Flash::sizeHint() const
+-{
+-    return minimumSize();
+-}
+-
+ void Flash::setColor( const QColor &color )
+ {
+     d->color = color;
+@@ -142,7 +102,7 @@
+ 
+ void Flash::flash( const QString &text, int duration, const QTextOption &option)
+ {
+-    kDebug() << duration << endl;
++    kDebug() << duration;
+     d->type = Private::Text;
+     d->duration = (duration == 0) ? d->defaultDuration : duration;
+     d->text = text;
+--- /dev/null
++++ b/libs/plasma/toolbox.cpp
+@@ -0,0 +1,168 @@
++/*
++ *   Copyright 2007 by Aaron Seigo <aseigo at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "toolbox_p.h"
++
++#include <QGraphicsSceneHoverEvent>
++#include <QPainter>
++#include <QRadialGradient>
++
++#include "widgets/widget.h"
++
++namespace Plasma
++{
++
++DesktopToolbox::DesktopToolbox(QGraphicsItem *parent)
++    : QGraphicsItem(parent),
++      m_icon("configure"),
++      m_size(50),
++      m_showing(false),
++      m_animId(0),
++      m_animFrame(0)
++{
++    setAcceptsHoverEvents(true);
++    setZValue(10000);
++    setFlag(ItemClipsToShape, true);
++    setFlag(ItemClipsChildrenToShape, false);
++
++    connect(Plasma::Phase::self(), SIGNAL(movementComplete(QGraphicsItem*)), this, SLOT(toolMoved(QGraphicsItem*)));
++}
++
++/*QRectF DesktopToolbox::sizeHint() const
++{
++    return boundingRect();
++}*/
++
++QRectF DesktopToolbox::boundingRect() const
++{
++    return QRectF(0, 0, m_size*2, m_size*2);
++}
++
++void DesktopToolbox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
++{
++    Q_UNUSED(option)
++    Q_UNUSED(widget)
++
++    QPainterPath p = shape();
++    QRadialGradient gradient(QPoint(m_size*2, 0), m_size*3);
++    gradient.setFocalPoint(QPointF(m_size*2, 0));
++    gradient.setColorAt(0, QColor(255, 255, 255, 128));
++    gradient.setColorAt(.9, QColor(128, 128, 128, 128));
++    painter->save();
++    painter->setPen(Qt::NoPen);
++    painter->setRenderHint(QPainter::Antialiasing, true);
++    painter->setBrush(gradient);
++    painter->drawPath(p);
++    painter->restore();
++    m_icon.paint(painter, QRect(m_size*2 - 34, 2, 32, 32));
++}
++
++QPainterPath DesktopToolbox::shape() const
++{
++    QPainterPath path;
++    int size = m_size + m_animFrame;
++    path.moveTo(m_size*2, 0);
++    path.arcTo(QRectF(m_size*2 - size, -size, size*2, size*2), 180, 90);
++    return path;
++}
++
++void DesktopToolbox::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
++{
++//    Plasma::Phase::self()->moveItem(this, Phase::SlideIn, QPoint(-25, -25));
++    int x = -25; // pos().x();
++    int y = 0; // pos().y();
++    Plasma::Phase* phase = Plasma::Phase::self();
++    foreach (QGraphicsItem* tool, QGraphicsItem::children()) {
++//        kDebug() << "let's show and move" << (QObject*)tool << tool->geometry().toRect();
++        tool->show();
++        phase->moveItem(tool, Plasma::Phase::SlideIn, QPoint(x, y));
++        //x += 0;
++        y += static_cast<int>(tool->boundingRect().height()) + 5;
++    }
++
++    if (m_animId) {
++        phase->stopCustomAnimation(m_animId);
++    }
++
++    m_showing = true;
++    m_animId = phase->customAnimation(m_size, 150, Plasma::Phase::EaseInCurve, this, "animate");
++    QGraphicsItem::hoverEnterEvent(event);
++}
++
++void DesktopToolbox::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
++{
++//    Plasma::Phase::self->moveItem(this, Phase::SlideOut, boundingRect()QPoint(-50, -50));
++    int x = 0; // pos().x() + geometry().width();
++    int y = 0;
++    Plasma::Phase* phase = Plasma::Phase::self();
++    foreach (QGraphicsItem* tool, QGraphicsItem::children()) {
++        phase->moveItem(tool, Plasma::Phase::SlideOut, QPoint(x, y));
++    }
++
++    if (m_animId) {
++        phase->stopCustomAnimation(m_animId);
++    }
++
++    m_showing = false;
++    m_animId = phase->customAnimation(m_size, 150, Plasma::Phase::EaseOutCurve, this, "animate");
++    QGraphicsItem::hoverLeaveEvent(event);
++}
++
++void DesktopToolbox::animate(qreal progress)
++{
++    if (m_showing) {
++        m_animFrame = static_cast<int>(m_size * progress);
++    } else {
++        m_animFrame = static_cast<int>(m_size * (1.0 - progress));
++    }
++
++    //kDebug() << "animating at" << progress << "for" << m_animFrame;
++
++    if (progress >= 1) {
++        m_animId = 0;
++    }
++
++    update();
++}
++
++void DesktopToolbox::toolMoved(QGraphicsItem *item)
++{
++    //kDebug() << "geometry is now " << static_cast<Plasma::Widget*>(item)->geometry();
++    if (!m_showing &&
++        QGraphicsItem::children().indexOf(static_cast<Plasma::Widget*>(item)) != -1) {
++        item->hide();
++    }
++}
++
++void DesktopToolbox::addTool(QGraphicsItem *tool)
++{
++    if (!tool) {
++        return;
++    }
++
++    tool->hide();
++    tool->setPos(QPoint(0,0));
++    tool->setZValue(zValue() + 1);
++    tool->setParentItem(this);
++}
++
++} // plasma namespace
++
++#include "toolbox_p.moc"
++
+--- a/libs/plasma/appletbrowser.cpp
++++ b/libs/plasma/appletbrowser.cpp
+@@ -33,17 +33,17 @@
+ namespace Plasma
+ {
+ 
+-class AppletBrowser::Private
++class AppletBrowserWidget::Private
+ {
+ public:
+-    Private(Corona* co, Containment* cont, AppletBrowser* q)
++    Private(Corona* co, Containment* cont, AppletBrowserWidget* w)
+         : corona(co),
+           containment(cont),
+           appletList(0),
+           config("plasmarc"),
+           configGroup(&config, "Applet Browser"),
+-          itemModel(configGroup, q),
+-          filterModel(q)
++          itemModel(configGroup, w),
++          filterModel(w)
+     {
+     }
+ 
+@@ -61,7 +61,7 @@
+     KCategorizedItemsViewModels::DefaultFilterModel filterModel;
+ };
+ 
+-void AppletBrowser::Private::initFilters()
++void AppletBrowserWidget::Private::initFilters()
+ {
+     filterModel.clear();
+ 
+@@ -106,38 +106,51 @@
+ }
+ 
+ 
+-AppletBrowser::AppletBrowser(Plasma::Corona * corona, QWidget * parent, Qt::WindowFlags f)
+-    : KDialog(parent, f),
+-    d(new Private(corona, 0, this))
++AppletBrowserWidget::AppletBrowserWidget(Plasma::Corona * corona, bool showButtons, QWidget * parent, Qt::WindowFlags f)
++    : QWidget(parent, f),
++    d(new Private(corona, 0, this)),
++    m_showButtons( showButtons )
+ {
+     init();
+ }
+ 
+-AppletBrowser::AppletBrowser(Plasma::Containment * containment, QWidget * parent, Qt::WindowFlags f)
+-    : KDialog(parent, f),
+-    d(new Private(0, containment, this))
++AppletBrowserWidget::AppletBrowserWidget(Plasma::Containment * containment, bool showButtons, QWidget * parent, Qt::WindowFlags f)
++    : QWidget(parent, f),
++    d(new Private(0, containment, this)),
++    m_showButtons( showButtons )
+ {
+     init();
+ }
+ 
+-void AppletBrowser::init()
++AppletBrowserWidget::~AppletBrowserWidget()
+ {
+-    d->appletList = new KCategorizedItemsView(this); //TODO: focus the lineedit on startup
+-    connect(d->appletList, SIGNAL(activated(const QModelIndex &)), this, SLOT(addApplet()));
+-    setMainWidget(d->appletList);
++    delete d;
++}
+ 
+-    setWindowTitle(i18n("Widgets"));
++void AppletBrowserWidget::init()
++{
++    QVBoxLayout *layout = new QVBoxLayout(this);
+ 
+-    setButtons(KDialog::Apply | KDialog::Close | KDialog::User1);
+-    setButtonText(KDialog::Apply, i18n("Add Widget"));
+-    setButtonText(KDialog::User1, i18n("Get New Widgets")); //TODO: not overly happy with this text
+-    enableButton(KDialog::User1, false); //TODO: enable when GHNS integration is implemented
++    d->appletList = new KCategorizedItemsView(this);
++    connect(d->appletList, SIGNAL(activated(const QModelIndex &)), this, SLOT(addApplet()));
++    layout->addWidget( d->appletList );
+ 
+-    connect(this, SIGNAL(applyClicked()), this, SLOT(addApplet()));
+-    connect(this, SIGNAL(user1Clicked()), this, SLOT(downloadApplets()));
++    if( m_showButtons ) {
++        QHBoxLayout *buttonLayout = new QHBoxLayout();
++        buttonLayout->setSpacing( KDialog::spacingHint() );
++        buttonLayout->setMargin( KDialog::marginHint() );
++
++        QPushButton *addButton = new QPushButton(i18n("Add Widget"), this );
++        connect(addButton, SIGNAL(clicked()), this, SLOT(addApplet()));
++        buttonLayout->addWidget( addButton );
++
++        QPushButton *newButton = new QPushButton(i18n("Get New Widgets"), this ); //TODO: not overly happy with this text
++        newButton->setEnabled( false ); //TODO: enable when GHNS integration is implemented
++        connect(newButton, SIGNAL(clicked()), this, SLOT(downloadApplets()));
++        buttonLayout->addWidget( newButton );
+ 
+-    QAction* quit = KStandardAction::quit(qApp, SLOT(quit()), this);
+-    addAction(quit);
++        layout->addItem( buttonLayout );
++    }
+ 
+     // Other Emblems
+     d->appletList->addEmblem(i18n("Widgets I Have Used Before"), new KIcon("history"), 
+@@ -150,13 +163,9 @@
+     d->appletList->setItemModel(&d->itemModel);
+ }
+ 
+-AppletBrowser::~AppletBrowser()
++void AppletBrowserWidget::setApplication(const QString& app)
+ {
+-  delete d;
+-}
+ 
+-void AppletBrowser::setApplication(const QString& app)
+-{
+     d->application = app;
+     d->initFilters();
+     d->itemModel.setApplication(app);
+@@ -166,12 +175,11 @@
+     d->appletList->setItemModel(&d->itemModel);
+ }
+ 
+-QString AppletBrowser::Application()
++QString AppletBrowserWidget::application()
+ {
+     return d->application;
+ }
+-
+-void AppletBrowser::addApplet()
++void AppletBrowserWidget::addApplet()
+ {
+     kDebug() << "Button ADD clicked";
+ 
+@@ -191,12 +199,68 @@
+     }
+ }
+ 
+-void AppletBrowser::downloadApplets()
++void AppletBrowserWidget::downloadApplets()
+ {
+     //TODO: implement
+     kDebug() << "GHNS button clicked";
+ }
+ 
++
++
++
++
++
++
++
++
++
++
++AppletBrowser::AppletBrowser(Plasma::Corona * corona, QWidget * parent, Qt::WindowFlags f)
++    : KDialog(parent, f),
++    m_widget(new AppletBrowserWidget(corona, false, this))
++{
++    init();
++}
++
++AppletBrowser::AppletBrowser(Plasma::Containment * containment, QWidget * parent, Qt::WindowFlags f)
++    : KDialog(parent, f),
++    m_widget(new AppletBrowserWidget(containment, false, this))
++{
++    init();
++}
++
++void AppletBrowser::init()
++{
++    setMainWidget(m_widget);
++
++    setWindowTitle(i18n("Widgets"));
++
++    setButtons(KDialog::Apply | KDialog::Close | KDialog::User1);
++    setButtonText(KDialog::Apply, i18n("Add Widget"));
++    setButtonText(KDialog::User1, i18n("Get New Widgets")); //TODO: not overly happy with this text
++    enableButton(KDialog::User1, false); //TODO: enable when GHNS integration is implemented
++
++    connect(this, SIGNAL(applyClicked()), m_widget, SLOT(addApplet()));
++    connect(this, SIGNAL(user1Clicked()), m_widget, SLOT(downloadApplets()));
++
++    QAction* quit = KStandardAction::quit(qApp, SLOT(quit()), this);
++    addAction(quit);
++}
++
++AppletBrowser::~AppletBrowser()
++{
++}
++
++void AppletBrowser::setApplication(const QString& app)
++{
++    m_widget->setApplication( app );
++}
++
++QString AppletBrowser::application()
++{
++    return m_widget->application();
++}
++
+ } // namespace Plasma
+ 
+ #include "appletbrowser.moc"
+--- a/libs/plasma/svg.cpp
++++ b/libs/plasma/svg.cpp
+@@ -182,7 +182,7 @@
+             QSizeF naturalSize = renderer->defaultSize();
+             qreal dx = size.width() / naturalSize.width();
+             qreal dy = size.height() / naturalSize.height();
+-            
++
+             return QRect(elementRect.x() * dx, elementRect.y() * dy,
+                          elementRect.width() * dx, elementRect.height() * dy);
+         }
+@@ -273,6 +273,17 @@
+     return d->renderer->elementExists(elementId);
+ }
+ 
++QString Svg::elementAtPoint(const QPoint &point) const
++{
++    d->createRenderer();
++    QSizeF naturalSize = d->renderer->defaultSize();
++    qreal dx = d->size.width() / naturalSize.width();
++    qreal dy = d->size.height() / naturalSize.height();
++    //kDebug() << point << "is really" << QPoint(point.x() *dx, naturalSize.height() - point.y() * dy);
++
++    return QString(); // d->renderer->elementAtPoint(QPoint(point.x() *dx, naturalSize.height() - point.y() * dy));
++}
++
+ QMatrix Svg::matrixForElement(const QString& elementId) const
+ {
+     d->createRenderer();
+--- /dev/null
++++ b/libs/plasma/view.cpp
+@@ -0,0 +1,138 @@
++/*
++ *   Copyright 2007 Aaron Seigo <aseigo at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "view.h"
++#include "corona.h"
++#include "containment.h"
++
++using namespace Plasma;
++
++namespace Plasma
++{
++
++class View::Private
++{
++public:
++    Private()
++        : drawWallpaper(true),
++          screen(-1),
++          containment(0)
++    {
++    }
++
++    ~Private()
++    {
++    }
++
++    bool drawWallpaper;
++    int screen;
++    Plasma::Containment *containment;
++};
++
++View::View(int screen, Corona *corona, QWidget *parent)
++    : QGraphicsView(parent),
++      d(new Private)
++{
++    setFrameShape(QFrame::NoFrame);
++    setAutoFillBackground(true);
++    setDragMode(QGraphicsView::RubberBandDrag);
++    //setCacheMode(QGraphicsView::CacheBackground);
++    setInteractive(true);
++    setAcceptDrops(true);
++    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
++    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
++
++    setScene(corona);
++    setScreen(screen);
++}
++
++View::View(Containment *containment, QWidget *parent)
++    : QGraphicsView(parent),
++      d(new Private)
++{
++    setScene(containment->scene());
++    setContainment(containment);
++}
++
++View::~View()
++{
++    delete d;
++}
++
++void View::setScreen(int screen)
++{
++    if (screen > -1) {
++        Corona *corona = qobject_cast<Corona*>(scene());
++
++        if (!corona) {
++            return;
++        }
++
++        setContainment(corona->containmentForScreen(screen));
++    } else {
++        // reseting the screen who knows what.
++        d->screen = screen;
++    }
++}
++
++int View::screen() const
++{
++    return d->screen;
++}
++
++void View::setContainment(Containment *containment)
++{
++    if (!containment) {
++        return;
++    }
++
++    if (d->containment) {
++        disconnect(d->containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect()));
++    }
++
++    d->containment = containment;
++    d->screen = containment->screen();
++    updateSceneRect();
++    connect(containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect()));
++}
++
++Containment* View::containment() const
++{
++    return d->containment;
++}
++
++void View::setDrawWallpaper(bool draw)
++{
++    d->drawWallpaper = draw;
++}
++
++bool View::drawWallpaper() const
++{
++    return d->drawWallpaper;
++}
++
++void View::updateSceneRect()
++{
++    setSceneRect(d->containment->sceneBoundingRect());
++}
++
++} // namespace Plasma
++
++#include "view.moc"
++
+--- a/libs/plasma/tests/packagemetadatatest.desktop
++++ b/libs/plasma/tests/packagemetadatatest.desktop
+@@ -1,44 +1,54 @@
+ [Desktop Entry]
+ Name=Package metadata test file
++Name[ca]=Fitxer de proves de metadades de paquet
+ Name[de]=Paket-Metadaten Testdatei
+ Name[el]=Δοκιμαστικό αρχείο μεταδεδομένων του πακέτου
+ Name[et]=Paketi metaandmete testfail
+ Name[ko]=패키지 메타데이터 테스트 파일
++Name[nb]=Testfil for Package metadata
+ Name[nds]=Paketmetadaten-Testdatei
+ Name[nl]=Testbestand voor pakketmetadata
+ Name[nn]=Testfil for pakkemetadata
++Name[pa]=ਪੈਕੇਜ ਮੇਟਾਡਾਟਾ ਟੈਸਟ ਫਾਇਲ ਹੈ।
+ Name[pt]=Ficheiro de testes de meta-dados dos pacotes
+ Name[pt_BR]=Arquivo de teste de meta-dados de pacotes
+ Name[sr]=Пробни фајл метаподатака пакета
+ Name[sr at latin]=Probni fajl metapodataka paketa
+ Name[sv]=Testfil för paketmetadata
++Name[x-test]=xxPackage metadata test filexx
+ Name[zh_CN]=打包元数据测试文件
+ Name[zh_TW]=套件中繼資料測試檔
+ Comment=A test desktop file to test the PackageMetaData class.
++Comment[ca]=Un fitxer d'escriptori de proves per provar la classe PackageMetaData.
+ Comment[de]=Eine Test-Desktop-Datei zum Testen der Klasse PackageMetaData.
+ Comment[el]=Ένα δοκιμαστικό αρχείο desktop για τον έλεγχο τς κλάσης PackageMetaData.
+ Comment[et]=Test-töölauafail klassi PackageMetaData testimiseks.
+ Comment[ko]=PackageMetaData 클래스를 테스트하는 데스크톱 파일.
++Comment[nb]=En skrivebordsfil med testdata for klassen PackageMetaData.
+ Comment[nds]=Schriefdisch-Datei för't Utproberen vun de PackageMetaData-Klass
+ Comment[nl]=Een desktop-bestand voor het testen van de klasse PackageMetaData.
+ Comment[nn]=Ei .desktop-fil for testing av PackageMetaData-klassen.
++Comment[pa]=PackageMetaData ਕਲਾਸ ਟੈਸਟ ਕਰਨ ਲਈ ਇੱਕ ਟੈਸਟ ਡੈਸਕਟਾਪ ਫਾਇਲ
+ Comment[pt]=Um ficheiro 'desktop' de testes da classe PackageMetaData.
+ Comment[pt_BR]=Um arquivo desktop de testes para a classe PackageMetaData.
+ Comment[sr]=Пробни фајл радне површи за класу PackageMetaData.
+ Comment[sr at latin]=Probni fajl radne površi za klasu PackageMetaData.
+ Comment[sv]=En skrivbordsfil för att testa klassen PackageMetaData.
++Comment[x-test]=xxA test desktop file to test the PackageMetaData class.xx
+ Comment[zh_CN]=一个用来测试 PackageMetaData 类的测试桌面文件。
+ Comment[zh_TW]=測試 PackageMetaData 類別的桌面檔
+ 
+ Icon=test
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ Description=Some fancy test description
++Description[ca]=Alguna descripció de proves imaginativa
+ Description[de]=Eine lustige Test-Beschreibung
+ Description[el]=Μια δοκιμαστική περιγραφή
+ Description[et]=Vahva testikirjeldus
+ Description[ko]=좀 흥미있는 테스트 설명
++Description[nb]=En flott testbeskrivelse
+ Description[nds]=Jichtenseen smuck Testbeschrieven
+ Description[nl]=Een elegante testbeschrijving
+ Description[nn]=Ei flott testskildring
+@@ -47,6 +57,7 @@
+ Description[sr]=Некакав звучан опис пробе
+ Description[sr at latin]=Nekakav zvučan opis probe
+ Description[sv]=Någon utstuderad testbeskrivning
++Description[x-test]=xxSome fancy test descriptionxx
+ Description[zh_CN]=一些精美的测试描述
+ Description[zh_TW]=一些花俏的測試描述
+ 
+--- a/libs/plasma/containment.h
++++ b/libs/plasma/containment.h
+@@ -65,7 +65,9 @@
+         typedef QHash<QString, Applet*> Dict;
+ 
+         enum Type { DesktopContainment = 0 /**< A desktop containment */,
+-                    PanelContainment /**< A desktop panel */
++                    PanelContainment /**< A desktop panel */,
++                    CustomContainment /**< A containment that is neither a desktop nor a panel,
++                                           but something application specific */
+                   };
+ 
+         /**
+@@ -101,7 +103,7 @@
+         /**
+          * Returns the type of containment
+          */
+-        virtual Type type();
++        virtual Type containmentType() const;
+ 
+         /**
+          * Returns the current form factor the applets in this Containment
+@@ -193,7 +195,26 @@
+         /**
+          * @internal
+          */
+-        void initConstraints(KConfigGroup* group);
++        void loadConstraints(KConfigGroup* group);
++
++        /**
++         * Emits the launchActivated() signal
++         */ 
++        void emitLaunchActivated();
++
++        /**
++         * Adds an item to the toolbox. The toolbox takes over ownership of the item.
++         * TODO: add remove and accessor methods
++         */
++        void addToolBoxTool(QGraphicsItem *tool);
++
++        /**
++         * @internal
++         * Called when constraints have been updated on this containment to provide
++         * constraint services common to all containments. Containments should still
++         * implement their own constraintsUpdated method
++         */
++        void containmentConstraintsUpdated(Plasma::Constraints constraints);
+ 
+     Q_SIGNALS:
+         /**
+@@ -201,6 +222,29 @@
+          */
+         void appletAdded(Plasma::Applet* applet);
+ 
++        /**
++         * This signal indicates, that a application launch was triggered
++         */
++        void launchActivated();
++
++        /**
++         * Emitted when the containment requests zooming out one step.
++         * Usually only used for desktop containments.
++         */
++        void zoomIn();
++
++        /**
++         * Emitted when the containment requests zooming out one step.
++         * Usually only used for desktop containments.
++         */
++        void zoomOut();
++
++        /**
++         * Emitted when the containment requests an add widgets dialog is shown.
++         * Usually only used for desktop containments.
++         */
++        void showAddWidgets();
++
+     public Q_SLOTS:
+         /**
+          * Informs the Corona as to what position it is in. This is informational
+--- a/libs/plasma/CMakeLists.txt
++++ b/libs/plasma/CMakeLists.txt
+@@ -1,7 +1,7 @@
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${KDEBASE_WORKSPACE_SOURCE_DIR}/libs)
+-
+ find_package(OpenGL)
+ 
++include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${KDEBASE_WORKSPACE_SOURCE_DIR}/libs ${OPENGL_INCLUDE_DIR})
++
+ add_subdirectory(widgets)
+ add_subdirectory(tests)
+ 
+@@ -31,6 +31,14 @@
+     datacontainer.cpp
+     dataengine.cpp
+     dataenginemanager.cpp
++    layouts/boxlayout.cpp
++    layouts/borderlayout.cpp
++    layouts/freelayout.cpp
++    layouts/nodelayout.cpp
++    layouts/flowlayout.cpp
++    layouts/layout.cpp
++    layouts/layoutanimator.cpp
++    layouts/layoutitem.cpp
+     packages.cpp
+     phase.cpp
+     plasma.cpp
+@@ -41,19 +49,13 @@
+     shadowitem.cpp
+     svg.cpp
+     theme.cpp
++    toolbox.cpp
+     uiloader.cpp
+-    widgets/boxlayout.cpp
+-    widgets/borderlayout.cpp
++    view.cpp
+     widgets/checkbox.cpp
+-    widgets/freelayout.cpp
+-    widgets/nodelayout.cpp
+-    widgets/flowlayout.cpp
+     widgets/flash.cpp
+     widgets/icon.cpp
+     widgets/label.cpp
+-    widgets/layout.cpp
+-    widgets/layoutanimator.cpp
+-    widgets/layoutitem.cpp
+     widgets/lineedit.cpp
+     widgets/progressbar.cpp
+     widgets/pushbutton.cpp
+@@ -118,7 +120,8 @@
+     shadowitem_p.h
+     svg.h
+     theme.h
+-    uiloader.h)
++    uiloader.h
++    view.h)
+ 
+ if(QT_QTOPENGL_FOUND AND OPENGL_FOUND)
+ set(plasma_LIB_INCLUDES
+@@ -131,18 +134,9 @@
+         DESTINATION ${INCLUDE_INSTALL_DIR}/plasma)
+ 
+ install(FILES
+-    widgets/boxlayout.h
+-    widgets/borderlayout.h
+-    widgets/nodelayout.h
+-    widgets/hboxlayout.h
+-    widgets/vboxlayout.h
+-    widgets/freelayout.h
+     widgets/flash.h
+     widgets/icon.h
+     widgets/label.h
+-    widgets/layout.h
+-    widgets/layoutanimator.h
+-    widgets/layoutitem.h
+     widgets/lineedit.h
+     widgets/progressbar.h
+     widgets/pushbutton.h
+@@ -155,9 +149,24 @@
+     DESTINATION ${INCLUDE_INSTALL_DIR}/plasma/widgets)
+ 
+ install(FILES
++    layouts/boxlayout.h
++    layouts/vboxlayout.h
++    layouts/hboxlayout.h
++    layouts/borderlayout.h
++    layouts/freelayout.h
++    layouts/nodelayout.h
++    layouts/flowlayout.h
++    layouts/layout.h
++    layouts/layoutanimator.h
++    layouts/layoutitem.h
++    DESTINATION ${INCLUDE_INSTALL_DIR}/plasma/layouts)
++
++install(FILES
+     includes/AbstractRunner
+     includes/Applet
++    includes/AppletBrowser
+     includes/ConfigXml
++    includes/Containment
+     includes/Phase
+     includes/Plasma
+     includes/Package
+@@ -170,8 +179,7 @@
+     includes/Svg
+     includes/UiLoader
+     includes/PackageMetadata
+-    includes/Containment
+-    includes/AppletBrowser
++    includes/View
+     DESTINATION ${INCLUDE_INSTALL_DIR}/KDE/Plasma)
+ 
+ if(QT_QTOPENGL_FOUND AND OPENGL_FOUND)
+--- a/libs/plasma/applethandle.cpp
++++ b/libs/plasma/applethandle.cpp
+@@ -20,45 +20,60 @@
+ #include "applethandle_p.h"
+ 
+ #include <QtGui/QGraphicsSceneMouseEvent>
++#include <QtGui/QLinearGradient>
+ #include <QtGui/QPainter>
+ 
++#include <KColorScheme>
+ #include <KIcon>
+ 
+ #include <cmath>
+ 
+-#include "containment.h"
+ #include "applet.h"
++#include "containment.h"
++#include "theme.h"
+ 
+ namespace Plasma
+ {
+ 
+ AppletHandle::AppletHandle(Containment *parent, Applet *applet)
+-    : QObject(), QGraphicsItem(parent),
+-      m_buttonsOnRight(false), m_pressedButton(NoButton),
+-      m_containment(parent), m_applet(applet),
+-      m_svg("widgets/iconbutton"), m_opacity(0.0),
+-      m_anim(FadeIn), m_animId(0), m_angle(0.0), m_scale(1.0)
++    : QObject(),
++      QGraphicsItem(parent),
++      m_buttonsOnRight(false),
++      m_pressedButton(NoButton),
++      m_containment(parent),
++      m_applet(applet),
++      m_opacity(0.0),
++      m_anim(FadeIn),
++      m_animId(0),
++      m_angle(0.0),
++      m_scale(1.0)
+ {
++    KColorScheme colors(QPalette::Active, KColorScheme::View, Theme::self()->colors());
++    m_gradientColor = colors.background(KColorScheme::NormalBackground).color();
++
+     m_originalMatrix = m_applet->transform();
+     m_rect = m_applet->boundingRect();
+     m_rect = m_applet->mapToParent(m_rect).boundingRect();
+ 
+-    const int requiredHeight = m_applet->hasConfigurationInterface() ? 158 : 116;
+-    if (m_rect.height()<requiredHeight) {
+-        float delta = requiredHeight-m_rect.height();
++    const int requiredHeight = (HANDLE_WIDTH * 2) + m_applet->hasConfigurationInterface() 
++                                                    ? ((ICON_SIZE + ICON_MARGIN) * 4)
++                                                    : ((ICON_SIZE + ICON_MARGIN) * 3)
++                                                  + ICON_MARGIN; // that last margin is blank space before the close button
++    if (m_rect.height() < requiredHeight) {
++        float delta = requiredHeight - m_rect.height();
+         delta = delta/2.0;
+-        if (delta>0.0) {
++        if (delta > 0.0) {
+             m_rect.adjust(0.0, -delta, 0.0, delta);
+         }
+     }
+ 
+-    m_rect.adjust(-20.0, -20.0, 20.0, 20.0);
++    m_rect.adjust(-HANDLE_WIDTH, -HANDLE_WIDTH, HANDLE_WIDTH, HANDLE_WIDTH);
+ 
+-    if (m_applet->pos().x()<=60.0) {
+-        m_rect.adjust(0.0, 0.0, 40.0, 0.0);
++    if (m_applet->pos().x() <= ((HANDLE_WIDTH * 2) + ICON_SIZE)) {
++        m_rect.adjust(0.0, 0.0, ICON_SIZE, 0.0);
+         m_buttonsOnRight = true;
+     } else {
+-        m_rect.adjust(-40.0, 0.0, 0.0, 0.0);
++        m_rect.adjust(- ICON_SIZE, 0.0, 0.0, 0.0);
+     }
+ 
+     m_applet->setParentItem(this);
+@@ -68,15 +83,19 @@
+ 
+ AppletHandle::~AppletHandle()
+ {
+-    QPointF center = m_applet->boundingRect().center();
++    QRectF rect(m_applet->boundingRect());
++    QPointF center = rect.center();
++
++    if (m_scale > 0) {
++        const qreal newWidth = rect.width() * m_scale;
++        const qreal newHeight = rect.height() * m_scale;
++        m_applet->moveBy((rect.width() - newWidth) / 2, (rect.height() - newHeight) / 2);
++        m_applet->resize(newWidth, newHeight);
++    }
+ 
+-    // TODO: Keep the rotation only, to apply the scaling force
+-    // a new pixel size to applets (avoid upscaling aliasing, and
+-    // insane downscaling), probably requires support in the Applet class.
+     QTransform matrix = m_originalMatrix;
+     matrix.translate(center.x(), center.y());
+     matrix.rotateRadians(m_angle);
+-    matrix.scale(m_scale, m_scale);
+     matrix.translate(-center.x(), -center.y());
+ 
+     QPointF newPos = transform().inverted().map(m_applet->pos());
+@@ -104,27 +123,32 @@
+     painter->save();
+     painter->setOpacity(m_opacity);
+ 
+-    m_svg.paint(painter, boundingRect(), "background");
+-    m_svg.paint(painter, boundingRect(), "foreground-hover");
++    painter->save();
++    painter->setOpacity(m_opacity * 0.4);
++    painter->setPen(Qt::NoPen);
++    painter->setRenderHints(QPainter::Antialiasing);
++    QLinearGradient gr(boundingRect().topLeft(), boundingRect().bottomRight());
++    gr.setColorAt(0, m_gradientColor);
++    gr.setColorAt(0.1, KColorScheme::shade(m_gradientColor, KColorScheme::LightShade));
++    gr.setColorAt(1, KColorScheme::shade(m_gradientColor, KColorScheme::DarkShade));
++    painter->setBrush(gr);
++    painter->drawPath(Plasma::roundedRectangle(boundingRect(), 10));
++    painter->restore();
+ 
+     QPointF point = m_rect.topLeft();
+ 
+     if (m_buttonsOnRight) {
+-        point+= QPointF(m_rect.width()-52.0, 20.0);
++        point += QPointF(m_rect.width() - ICON_SIZE - HANDLE_WIDTH, HANDLE_WIDTH);
+     } else {
+-        point+= QPointF(20.0, 20.0);
++        point+= QPointF(HANDLE_WIDTH / 2, HANDLE_WIDTH);
+     }
+ 
+-    QPointF shiftM;
+     QPointF shiftC;
+     QPointF shiftD;
+     QPointF shiftR;
+ 
+     switch(m_pressedButton)
+     {
+-    case MoveButton:
+-        shiftM = QPointF(2, 2);
+-        break;
+     case ConfigureButton:
+         shiftC = QPointF(2, 2);
+         break;
+@@ -138,15 +162,15 @@
+         break;
+     }
+ 
+-    painter->drawPixmap(point+shiftM, KIcon("exec").pixmap(32,32)); // FIXME: I'd like a "transform-move" here
+     if (m_applet->hasConfigurationInterface()) {
+-        point+=QPointF(0.0, 42.0);
+-        painter->drawPixmap(point+shiftC, KIcon("configure").pixmap(32,32));
++        painter->drawPixmap(point + shiftC, KIcon("configure").pixmap(ICON_SIZE, ICON_SIZE));
++        point += QPointF(0.0, ICON_SIZE + ICON_MARGIN);
+     }
+-    point+=QPointF(0.0, 42.0);
+-    painter->drawPixmap(point+shiftD, KIcon("edit-delete").pixmap(32,32));
+-    point+=QPointF(0.0, 42.0);
+-    painter->drawPixmap(point+shiftR, KIcon("transform-rotate").pixmap(32,32));
++
++    painter->drawPixmap(point + shiftR, KIcon("transform-rotate").pixmap(ICON_SIZE, ICON_SIZE));
++
++    point += QPointF(0.0, ICON_SIZE + ICON_MARGIN * 2);
++    painter->drawPixmap(point + shiftD, KIcon("edit-delete").pixmap(ICON_SIZE, ICON_SIZE));
+ 
+     painter->restore();
+ }
+@@ -156,43 +180,43 @@
+     QPointF basePoint = m_rect.topLeft();
+ 
+     if (m_buttonsOnRight) {
+-        basePoint+= QPointF(m_rect.width()-52.0, 20.0);
++        basePoint+= QPointF(m_rect.width() - ICON_SIZE, HANDLE_WIDTH);
+     } else {
+-        basePoint+= QPointF(20.0, 20.0);
++        basePoint+= QPointF(HANDLE_WIDTH, HANDLE_WIDTH);
+     }
+ 
+-    QPolygonF activeArea = QPolygonF(QRectF(basePoint, QSizeF(32.0, 32.0)));
++    QPolygonF activeArea = QPolygonF(QRectF(basePoint, QSizeF(ICON_SIZE, ICON_SIZE)));
+ 
+-    if (activeArea.containsPoint(point, Qt::OddEvenFill)) {
+-        return MoveButton;
+-    }
+-
+-    if( m_applet->hasConfigurationInterface() ) {
+-        activeArea.translate(QPointF(0.0, 42.0));
++    if (m_applet->hasConfigurationInterface()) {
+         if (activeArea.containsPoint(point, Qt::OddEvenFill)) {
+             return ConfigureButton;
+         }
++        activeArea.translate(QPointF(0.0, ICON_SIZE + ICON_MARGIN));
+     }
+ 
+-    activeArea.translate(QPointF(0.0, 42.0));
+     if (activeArea.containsPoint(point, Qt::OddEvenFill)) {
+-        return RemoveButton;
++        return RotateButton;
+     }
+ 
+-    activeArea.translate(QPointF(0.0, 42.0));
++    activeArea.translate(QPointF(0.0, ICON_SIZE + ICON_MARGIN * 2));
+     if (activeArea.containsPoint(point, Qt::OddEvenFill)) {
+-        return RotateButton;
++        return RemoveButton;
+     }
+ 
+-    return NoButton;
++    return MoveButton;
++    //return m_applet->mapToParent(m_applet->shape()).contains(point) ? NoButton : MoveButton;
+ }
+ 
+ void AppletHandle::mousePressEvent(QGraphicsSceneMouseEvent *event)
+ {
+-    if (event->button()==Qt::LeftButton) {
++    if (event->button() == Qt::LeftButton) {
+         m_pressedButton = mapToButton(event->pos());
++        event->accept();
+         update();
++        return;
+     }
++
++    QGraphicsItem::mousePressEvent(event);
+ }
+ 
+ void AppletHandle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+@@ -201,6 +225,8 @@
+ 
+     if (event->button()==Qt::LeftButton && m_pressedButton==releasedAtButton) {
+         if (m_pressedButton==ConfigureButton) {
++            //FIXME: Remove this call once the configuration management change was done
++            m_containment->emitLaunchActivated();
+             m_applet->showConfigurationInterface();
+         } else if (m_pressedButton==RemoveButton) {
+             Phase::self()->animateItem(m_applet, Phase::Disappear);
+@@ -230,10 +256,12 @@
+ 
+ void AppletHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+ {
+-    if (m_pressedButton==MoveButton) {
++    static const qreal snapAngle = 3.14159 / 2.0;
++
++    if (m_pressedButton == MoveButton) {
+         QPointF delta = event->pos()-event->lastPos();
+         setPos(pos()+delta);
+-    } else if (m_pressedButton==RotateButton) {
++    } else if (m_pressedButton == RotateButton) {
+         if (_k_distanceForPoint(event->pos()-event->lastPos()) <= 1.0) {
+             return;
+         }
+@@ -244,6 +272,11 @@
+         QPointF center = rect.center();
+ 
+         m_angle = _k_angleForPoints(center, pressPos, event->pos());
++
++        if (fabs(remainder(m_angle, snapAngle)) < 0.15) {
++            m_angle = m_angle - remainder(m_angle, snapAngle);
++        }
++
+         m_scale = _k_distanceForPoint(event->pos()-center) / _k_distanceForPoint(pressPos-center);
+ 
+         QTransform matrix;
+@@ -291,7 +324,7 @@
+         Phase::self()->stopCustomAnimation(m_animId);
+     }
+ 
+-    qreal time = 500;
++    qreal time = 250;
+ 
+     if (anim==FadeIn) {
+         time *= 1.0-m_opacity;
+--- a/libs/plasma/uiloader.cpp
++++ b/libs/plasma/uiloader.cpp
+@@ -21,21 +21,17 @@
+ 
+ #include <QStringList>
+ 
+-#include "widgets/widget.h"
+-#include "widgets/layout.h"
+-
+-#include "widgets/checkbox.h"
+-#include "widgets/flash.h"
+-#include "widgets/icon.h"
+-#include "widgets/label.h"
+-#include "widgets/pushbutton.h"
+-#include "widgets/radiobutton.h"
+-#include "widgets/meter.h"
+-//#include "widgets/rectangle.h"
+-
+-#include "widgets/hboxlayout.h"
+-#include "widgets/vboxlayout.h"
+-#include "widgets/flowlayout.h"
++#include "plasma/widgets/checkbox.h"
++#include "plasma/widgets/flash.h"
++#include "plasma/widgets/icon.h"
++#include "plasma/widgets/label.h"
++#include "plasma/widgets/pushbutton.h"
++#include "plasma/widgets/radiobutton.h"
++#include "plasma/widgets/meter.h"
++
++#include "plasma/layouts/hboxlayout.h"
++#include "plasma/layouts/vboxlayout.h"
++#include "plasma/layouts/flowlayout.h"
+ 
+ namespace Plasma
+ {
+@@ -51,19 +47,18 @@
+     : d( new Private() )
+ {
+     d->widgets
+-	<< "CheckBox"
+-	<< "Flash"
+-	<< "Icon"
+-	<< "Label"
+-	<< "PushButton"
+-	<< "RadioButton"
+-	<< "Rectangle"
++        << "CheckBox"
++        << "Flash"
++        << "Icon"
++        << "Label"
++        << "PushButton"
++        << "RadioButton"
+         << "Meter";
+ 
+     d->layouts
+-	<< "VBoxLayout"
+-	<< "HBoxLayout"
+-	<< "FlowLayout";
++        << "VBoxLayout"
++        << "HBoxLayout"
++        << "FlowLayout";
+ }
+ 
+ UiLoader::~UiLoader()
+@@ -78,30 +73,27 @@
+ 
+ Widget *UiLoader::createWidget( const QString &className, Widget *parent )
+ {
+-    if ( className == QString("CheckBox") ) {
+-	return new CheckBox( parent );
++    if (className == QString("CheckBox")) {
++        return new CheckBox( parent );
+     }
+-    else if ( className == QString("Flash") ) {
+-	return new Flash( parent );
++    else if (className == QString("Flash")) {
++        return new Flash( parent );
+     }
+-    else if ( className == QString("Icon") ) {
+-	return new Icon( parent );
++    else if (className == QString("Icon")) {
++        return new Icon( parent );
+     }
+-    else if ( className == QString("Label") ) {
+-	return new Label( parent ); // Constructor here requires a Widget
++    else if (className == QString("Label")) {
++        return new Label( parent ); // Constructor here requires a Widget
+     }
+-    else if ( className == QString("PushButton") ) {
+-	return new PushButton( parent ); // Constructor here requires a Widget
++    else if (className == QString("PushButton")) {
++        return new PushButton( parent ); // Constructor here requires a Widget
+     }
+-    else if ( className == QString("RadioButton") ) {
+-	return new RadioButton( parent );
++    else if (className == QString("RadioButton")) {
++        return new RadioButton( parent );
+     }
+-    else if ( className == QString("Meter") ) {
++    else if (className == QString("Meter")) {
+         return new Meter( parent );
+     }
+-    //else if ( className == QString("Rectangle") ) {
+-	// return new Rectangle( parent ); // Constructor here requires a Widget
+-    //}
+ 
+     return 0;
+ }
+@@ -113,14 +105,14 @@
+ 
+ Layout *UiLoader::createLayout( const QString &className, LayoutItem *parent )
+ {
+-    if ( className == QString("HBoxLayout") ) {
+-	return new HBoxLayout( parent );
++    if (className == QString("HBoxLayout")) {
++        return new HBoxLayout( parent );
+     }
+-    else if ( className == QString("VBoxLayout") ) {
+-	return new VBoxLayout( parent );
++    else if (className == QString("VBoxLayout")) {
++        return new VBoxLayout( parent );
+     }
+-    else if ( className == QString("FlowLayout") ) {
+-	return new FlowLayout( parent );
++    else if (className == QString("FlowLayout")) {
++        return new FlowLayout( parent );
+     }
+ 
+     return 0;
+--- a/libs/plasma/dataengine.h
++++ b/libs/plasma/dataengine.h
+@@ -182,6 +182,12 @@
+         bool isValid() const;
+ 
+         /**
++         * Returns true if the data engine is empty, which is to say that it has no
++         * data sources currently.
++         */
++        bool isEmpty() const;
++
++        /**
+          * Sets the icon for this data engine
+          **/
+         void setIcon(const QString& icon);
+--- a/libs/plasma/datacontainer.cpp
++++ b/libs/plasma/datacontainer.cpp
+@@ -121,7 +121,7 @@
+         if (relay) {
+             // connected to a relay
+             disconnect(relay, SIGNAL(dataUpdated(QString,Plasma::DataEngine::Data)),
+-                    visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
++                       visualization, SLOT(dataUpdated(QString,Plasma::DataEngine::Data)));
+ 
+             if (relay->isUnused()) {
+                 d->relays.remove(relay->m_interval);
+--- a/libs/plasma/containment.cpp
++++ b/libs/plasma/containment.cpp
+@@ -39,10 +39,12 @@
+ #include "applethandle_p.h"
+ #include "corona.h"
+ #include "phase.h"
++#include "toolbox_p.h"
+ #include "svg.h"
+ 
+-#include "widgets/freelayout.h"
+-#include "widgets/boxlayout.h"
++#include "layouts/freelayout.h"
++#include "layouts/boxlayout.h"
++#include "widgets/pushbutton.h"
+ 
+ namespace Plasma
+ {
+@@ -56,7 +58,8 @@
+         : formFactor(Planar),
+           location(Floating),
+           screen(0),
+-          immutable(false)
++          immutable(false),
++          toolbox(0)
+     {
+     }
+ 
+@@ -72,6 +75,7 @@
+     QMap<Applet*, AppletHandle*> handles;
+     int screen;
+     bool immutable;
++    DesktopToolbox *toolbox;
+ };
+ 
+ Containment::Containment(QGraphicsItem* parent,
+@@ -86,6 +90,7 @@
+     : Applet(parent, args),
+       d(new Private)
+ {
++    setDrawStandardBackground(false);
+ }
+ 
+ Containment::~Containment()
+@@ -100,16 +105,32 @@
+     setFlag(QGraphicsItem::ItemClipsChildrenToShape, false);
+     setAcceptDrops(true);
+     setAcceptsHoverEvents(true);
+-    setDrawStandardBackground(false);
+ 
+     //TODO: would be nice to not do this on init, as it causes Phase to init
+     connect(Phase::self(), SIGNAL(animationComplete(QGraphicsItem*,Plasma::Phase::Animation)),
+             this, SLOT(appletAnimationComplete(QGraphicsItem*,Plasma::Phase::Animation)));
++
++    if (isContainment() && containmentType() == DesktopContainment) {
++        Plasma::PushButton *tool = new Plasma::PushButton(i18n("Add Widgets"));
++        tool->resize(tool->sizeHint());
++        addToolBoxTool(tool);
++        connect(tool, SIGNAL(clicked()), this, SIGNAL(showAddWidgets()));
++
++        tool = new Plasma::PushButton(i18n("Zoom In"));
++        connect(tool, SIGNAL(clicked()), this, SIGNAL(zoomIn()));
++        tool->resize(tool->sizeHint());
++        addToolBoxTool(tool);
++
++        tool = new Plasma::PushButton(i18n("Zoom Out"));
++        connect(tool, SIGNAL(clicked()), this, SIGNAL(zoomOut()));
++        tool->resize(tool->sizeHint());
++        addToolBoxTool(tool);
++    }
+ }
+ 
+-void Containment::initConstraints(KConfigGroup* group)
++void Containment::loadConstraints(KConfigGroup* group)
+ {
+-/*    kDebug() << "!!!!!!!!!!!!initConstraints" << group->name() << type();
++    /*kDebug() << "!!!!!!!!!!!!initConstraints" << group->name() << containmentType();
+     kDebug() << "    location:" << group->readEntry("location", (int)d->location);
+     kDebug() << "    geom:" << group->readEntry("geometry", geometry());
+     kDebug() << "    formfactor:" << group->readEntry("formfactor", (int)d->formFactor);
+@@ -127,7 +148,14 @@
+     group->writeEntry("location", (int)d->location);
+ }
+ 
+-Containment::Type Containment::type()
++void Containment::containmentConstraintsUpdated(Plasma::Constraints constraints)
++{
++    if (d->toolbox && constraints & Plasma::ScreenConstraint) {
++        d->toolbox->setPos(geometry().width() - d->toolbox->boundingRect().width(), 0);
++    }
++}
++
++Containment::Type Containment::containmentType() const
+ {
+     return DesktopContainment;
+ }
+@@ -163,10 +191,10 @@
+     }
+ 
+     KMenu desktopMenu;
+-    //kDebug() << "context menu event " << immutable;
++    //kDebug() << "context menu event " << (QObject*)applet;
+     if (!applet) {
+         if (!scene() || static_cast<Corona*>(scene())->isImmutable()) {
+-            kDebug() << "immutability";
++            //kDebug() << "immutability";
+             QGraphicsItem::contextMenuEvent(event);
+             return;
+         }
+@@ -176,7 +204,7 @@
+         QList<QAction*> actions = contextActions();
+ 
+         if (actions.count() < 1) {
+-            kDebug() << "no applet, but no actions";
++            //kDebug() << "no applet, but no actions";
+             QGraphicsItem::contextMenuEvent(event);
+             return;
+         }
+@@ -185,13 +213,44 @@
+             desktopMenu.addAction(action);
+         }
+     } else {
+-        kDebug() << "immutable applet";
+-        QGraphicsItem::contextMenuEvent(event);
+-        return;
++        bool hasEntries = false;   
++        if (applet->hasConfigurationInterface()) {   
++            QAction* configureApplet = new QAction(i18n("%1 Settings...", applet->name()), &desktopMenu);   
++            connect(configureApplet, SIGNAL(triggered(bool)),   
++                    applet, SLOT(showConfigurationInterface()));   
++            desktopMenu.addAction(configureApplet);   
++            hasEntries = true;   
++        }   
++    
++        if (scene() && !static_cast<Corona*>(scene())->isImmutable()) {   
++            QAction* closeApplet = new QAction(i18n("Remove this %1", applet->name()), &desktopMenu);   
++            QVariant appletV;   
++            appletV.setValue((QObject*)applet);   
++            closeApplet->setData(appletV);   
++            connect(closeApplet, SIGNAL(triggered(bool)),   
++                    this, SLOT(destroyApplet()));   
++            desktopMenu.addAction(closeApplet);   
++            hasEntries = true;   
++        }   
++    
++        QList<QAction*> actions = applet->contextActions();   
++        if (!actions.isEmpty()) {   
++            desktopMenu.addSeparator();   
++            foreach(QAction* action, actions) {   
++                desktopMenu.addAction(action);   
++            }   
++            hasEntries = true;   
++        }   
++    
++        if (!hasEntries) {   
++            QGraphicsItem::contextMenuEvent(event);   
++            kDebug() << "no entries";   
++            return;   
++        }
+     }
+ 
+     event->accept();
+-    kDebug() << "executing at" << event->screenPos();
++    //kDebug() << "executing at" << event->screenPos();
+     desktopMenu.exec(event->screenPos());
+ }
+ 
+@@ -201,7 +260,7 @@
+         return;
+     }
+ 
+-//kDebug() << "switching FF to " << formFactor;
++    //kDebug() << "switching FF to " << formFactor;
+     d->formFactor = formFactor;
+     Layout *lay = layout();
+     setLayout(0);
+@@ -215,12 +274,12 @@
+         case Horizontal:
+             lay = new BoxLayout(BoxLayout::LeftToRight, this);
+             lay->setMargin(0);
+-            lay->setSpacing(0);
++            lay->setSpacing(4);
+             break;
+         case Vertical:
+             lay = new BoxLayout(BoxLayout::TopToBottom, this);
+             lay->setMargin(0);
+-            lay->setSpacing(0);
++            lay->setSpacing(4);
+             break;
+         case MediaCenter:
+             //FIXME: need a layout type here!
+@@ -282,14 +341,14 @@
+ 
+     addChild(applet);
+     //panels don't want backgrounds, which is important when setting geometry
+-    if (type() == PanelContainment) {
++    if (containmentType() == PanelContainment) {
+         applet->setDrawStandardBackground(false);
+     }
+ 
+     //the applet needs to be given constraints before it can set its geometry
+     applet->updateConstraints(Plasma::AllConstraints);
+ 
+-    //kDebug() << "adding applet" << applet->name() << "with a default geometry of" << appletGeometry << appletGeometry.isValid();
++     //kDebug() << "adding applet" << applet->name() << "with a default geometry of" << appletGeometry << appletGeometry.isValid();
+     if (appletGeometry.isValid()) {
+         applet->setGeometry(appletGeometry);
+     } else if (appletGeometry.x() != -1 && appletGeometry.y() != -1) {
+@@ -308,10 +367,6 @@
+         applet->setGeometry(QRectF(QPointF((width / 2) - (appletWidth / 2), (height / 2) - (appletHeight / 2)), size));
+     }
+ 
+-    if (layout()) {
+-        layout()->addItem(applet);
+-    }
+-
+     kDebug() << applet->name() << "sizehint:" << applet->sizeHint()
+                                << "geometry:" << applet->geometry();
+ 
+@@ -353,7 +408,7 @@
+             }
+         }
+     } else if (anim == Phase::Appear) {
+-        if (type()==DesktopContainment) {
++        if (containmentType() == DesktopContainment) {
+             item->installSceneEventFilter(this);
+         }
+     }
+@@ -367,19 +422,27 @@
+ void Containment::setScreen(int screen)
+ {
+     // screen of -1 means no associated screen.
++    // sanity check to make sure someone else doesn't have this screen already!
++    if (containmentType() == DesktopContainment && corona()) {
++        Containment* currently = corona()->containmentForScreen(screen);
++        if (currently && currently != this) {
++            //kDebug() << "currently is on screen" << currently->screen() << "and is" << currently->name() << (QObject*)currently << (QObject*)this;
++            currently->setScreen(-1);
++        }
++    }
+ 
+-    //kDebug() << "setting screen to" << screen;
++    kDebug() << "setting screen to" << screen << "and we are a" << containmentType();
+     QDesktopWidget *desktop = QApplication::desktop();
+     int numScreens = desktop->numScreens();
+     if (screen < -1 || screen > numScreens - 1) {
+         screen = -1;
+     }
+ 
+-    //kDebug() << "setting screen to " << screen << "and type is" << type();
++    //kDebug() << "setting screen to " << screen << "and type is" << containmentType();
+     if (screen > -1) {
+         QRect r = desktop->screenGeometry(screen);
+ 
+-        if (type() == DesktopContainment) {
++        if (containmentType() == DesktopContainment) {
+             // we need to find how many screens are to our top and left
+             // to calculate the proper offsets for the margins.
+             int x = r.x();
+@@ -399,9 +462,12 @@
+ 
+             r.moveLeft(r.x() + INTER_CONTAINMENT_MARGIN * screensLeft);
+             r.moveTop(r.y() + INTER_CONTAINMENT_MARGIN * screensAbove);
++
++            // FIXME: positioning at this x,y will break if we switch between containments for a
++            //        given screen! we should change the pos() on new containment setup.
+             setGeometry(r);
+             //kDebug() << "setting geometry to" << desktop->screenGeometry(screen) << r << geometry();
+-        } else if (type() == PanelContainment) {
++        } else if (containmentType() == PanelContainment) {
+             QRect r = desktop->screenGeometry(screen);
+             //kDebug() << "we are a panel on" << r << ", let's move ourselves to a negative coordinate system" << -r.height() - INTER_CONTAINMENT_MARGIN;
+             int vertOffset = r.height() + INTER_CONTAINMENT_MARGIN;
+@@ -522,8 +588,7 @@
+ 
+     switch (event->type()) {
+     case QEvent::GraphicsSceneHoverEnter:
+-        if (!d->immutable && !applet->isImmutable()
+-         && !d->handles.contains(applet)) {
++        if (!d->immutable && !applet->isImmutable() && !d->handles.contains(applet)) {
+             AppletHandle *handle = new AppletHandle(this, applet);
+             d->handles[applet] = handle;
+             connect(handle, SIGNAL(disappearDone(AppletHandle*)),
+@@ -543,6 +608,23 @@
+     handle->deleteLater();
+ }
+ 
++void Containment::emitLaunchActivated()
++{
++    kDebug();
++    emit launchActivated();
+ }
+ 
++void Containment::addToolBoxTool(QGraphicsItem *tool)
++{
++    if (!d->toolbox) {
++        d->toolbox = new DesktopToolbox(this);
++        d->toolbox->setPos(geometry().width() - d->toolbox->boundingRect().width(), 0);
++    }
++
++    d->toolbox->addTool(tool);
++}
++
++} // Plasma namespace
++
+ #include "containment.moc"
++
+--- /dev/null
++++ b/libs/plasma/view.h
+@@ -0,0 +1,96 @@
++/*
++ *   Copyright 2007 Aaron Seigo <aseigo at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef VIEW_H
++#define VIEW_H
++
++#include <QtGui/QGraphicsView>
++
++#include <plasma/plasma_export.h>
++
++namespace Plasma
++{
++
++class Containment;
++class Corona;
++
++/**
++ * @short A QGraphicsScene for Plasma::Applets
++ */
++class PLASMA_EXPORT View : public QGraphicsView
++{
++    Q_OBJECT
++
++public:
++    View(int screen, Corona *corona, QWidget *parent = 0);
++    explicit View(Containment *containment, QWidget *parent = 0);
++    ~View();
++
++    /**
++     * Sets whether or not to draw the containment wallpaper when painting
++     * on this item
++     */
++    void setDrawWallpaper(bool draw);
++
++    /**
++     * @return whether or not containments should draw wallpaper
++     */
++    bool drawWallpaper() const;
++
++    /**
++     * Sets which screen this view is associated with, if any.
++     * This will also set the containment if a valid screen is specified
++     *
++     * @arg screen the xinerama screen number; -1 for no screen
++     */
++    void setScreen(int screen);
++
++    /**
++     * Returns the screen this view is associated with
++     *
++     * @return the xinerama screen number, or -1 for none
++     */
++    int screen() const;
++
++    /**
++     * Sets the containment for this view, which will also cause the view
++     * to track the geometry of the containment.
++     *
++     * @arg containment the containment to center the view on
++     */
++    void setContainment(Containment *containment);
++
++    /**
++     * @return the containment associated with this view, or 0 if none is
++     */
++    Containment* containment() const;
++
++protected Q_SLOTS:
++    void updateSceneRect();
++
++private:
++    class Private;
++    Private * const d;
++};
++
++} // namespace Plasma
++
++#endif
++
++
+--- a/libs/plasma/corona.h
++++ b/libs/plasma/corona.h
+@@ -154,6 +154,12 @@
+      */
+     void setImmutable(bool immutable_);
+ 
++Q_SIGNALS:
++    /**
++     * This signal indicates, that a application launch was triggered
++     */
++    void launchActivated();
++
+ protected:
+     void dragEnterEvent(QGraphicsSceneDragDropEvent* event);
+     void dragLeaveEvent(QGraphicsSceneDragDropEvent* event);
+--- a/kscreensaver/kblank_screensaver/kblank.desktop
++++ b/kscreensaver/kblank_screensaver/kblank.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kblankscrn.kss
+ Icon=kscreensaver
+ Type=Service
+-ServiceTypes=ScreenSaver
++X-KDE-ServiceTypes=ScreenSaver
+ Actions=Setup;InWindow;Root;
+ Name=Blank Screen
+ Name[af]=Leë Skerm
+@@ -183,7 +182,7 @@
+ Name[ne]=निर्दिष्ट गरिएको सञ्झ्यालमा प्रदर्शन गर्नुहोस्
+ Name[nl]=In een gedefinieerd venster weergeven
+ Name[nn]=Vis i vald vindauge
+-Name[pa]=ਨਿਰਧਾਰਿਤ ਝਰੋਖੇ ਵਿੱਚ ਵੇਖਾਓ
++Name[pa]=ਦਿੱਤੀ ਵਿੰਡੋ ਵਿੱਚ ਵੇਖੋ
+ Name[pl]=Wyświetl w podanym oknie
+ Name[pt]=Mostrar na Janela Indicada
+ Name[pt_BR]=Mostrar na Janela Especificada
+@@ -250,7 +249,7 @@
+ Name[ne]=मूल सञ्झ्यालमा प्रदर्शन गर्नुहोस्
+ Name[nl]=In hoofdvenster weergeven
+ Name[nn]=Vis i rotvindauget
+-Name[pa]=ਰੂਟ(Root) ਝਰੋਖੇ ਵਿੱਚ ਵੇਖਾਓ
++Name[pa]=ਰੂਟ (Root) ਵਿੰਡੋ ਵਿੱਚ ਵੇਖੋ
+ Name[pl]=Wyświetl w oknie głównym
+ Name[pt]=Mostrar na Janela de Fundo
+ Name[pt_BR]=Mostrar na Janela Raiz
+--- a/kscreensaver/libkscreensaver/main.cpp
++++ b/kscreensaver/libkscreensaver/main.cpp
+@@ -23,12 +23,14 @@
+ #include <config-workspace.h>
+ 
+ #include <stdlib.h>
++#include <unistd.h>
+ #include <stdio.h>
+ #include <signal.h>
+ 
+ #include <QDialog>
+ #include <QEvent>
+ #include <QKeyEvent>
++#include <QSocketNotifier>
+ 
+ #include <klocale.h>
+ #include <kglobal.h>
+@@ -48,6 +50,17 @@
+     abort();
+ }
+ 
++extern "C" {
++
++static int termPipe[2];
++
++static void termHandler( int )
++{
++    write( termPipe[1], "", 1 );
++}
++
++}
++
+ //----------------------------------------------------------------------------
+ 
+ class DemoWindow : public QWidget
+@@ -99,6 +112,17 @@
+ 
+     KApplication app;
+ 
++    if (!pipe(termPipe))
++    {
++        struct sigaction sa;
++        sa.sa_handler = termHandler;
++        sigemptyset(&sa.sa_mask);
++        sa.sa_flags = 0;
++        sigaction(SIGTERM, &sa, 0);
++        QSocketNotifier *sn = new QSocketNotifier(termPipe[0], QSocketNotifier::Read, &app);
++        QObject::connect(sn, SIGNAL(activated(int)), &app, SLOT(quit()));
++    }
++
+     KCrash::setCrashHandler( crashHandler );
+     KGlobal::locale()->insertCatalog("klock");
+     KGlobal::locale()->insertCatalog("kscreensaver");
+--- a/kscreensaver/libkscreensaver/screensaver.desktop
++++ b/kscreensaver/libkscreensaver/screensaver.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=ScreenSaver
+ Comment=ScreenSaver
+@@ -10,6 +9,7 @@
+ Comment[csb]=Wëgaszôcz ekranu
+ Comment[de]=Bildschirmschoner
+ Comment[el]=Προφύλαξη οθόνης
++Comment[eo]=Ekrankurteno
+ Comment[et]=Ekraanisäästja
+ Comment[fa]=محافظ صفحه نمایش
+ Comment[ga]=Spárálaí Scáileáin
+--- a/kscreensaver/krandom_screensaver/krandom.desktop
++++ b/kscreensaver/krandom_screensaver/krandom.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=krandom.kss
+ Icon=kscreensaver
+ Type=Service
+-ServiceTypes=ScreenSaver
++X-KDE-ServiceTypes=ScreenSaver
+ Actions=Setup;InWindow;Root;
+ Name=Random
+ Name[af]=Lukrake
+@@ -183,7 +182,7 @@
+ Name[ne]=निर्दिष्ट गरिएको सञ्झ्यालमा प्रदर्शन गर्नुहोस्
+ Name[nl]=In een gedefinieerd venster weergeven
+ Name[nn]=Vis i vald vindauge
+-Name[pa]=ਨਿਰਧਾਰਿਤ ਝਰੋਖੇ ਵਿੱਚ ਵੇਖਾਓ
++Name[pa]=ਦਿੱਤੀ ਵਿੰਡੋ ਵਿੱਚ ਵੇਖੋ
+ Name[pl]=Wyświetl w podanym oknie
+ Name[pt]=Mostrar na Janela Indicada
+ Name[pt_BR]=Mostrar na Janela Especificada
+@@ -250,7 +249,7 @@
+ Name[ne]=मूल सञ्झ्यालमा प्रदर्शन गर्नुहोस्
+ Name[nl]=In hoofdvenster weergeven
+ Name[nn]=Vis i rotvindauget
+-Name[pa]=ਰੂਟ(Root) ਝਰੋਖੇ ਵਿੱਚ ਵੇਖਾਓ
++Name[pa]=ਰੂਟ (Root) ਵਿੰਡੋ ਵਿੱਚ ਵੇਖੋ
+ Name[pl]=Wyświetl w oknie głównym
+ Name[pt]=Mostrar na Janela de Fundo
+ Name[pt_BR]=Mostrar na Janela Raiz
+--- a/khotkeys/app/khotkeys.desktop
++++ b/khotkeys/app/khotkeys.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=khotkeys
+ Name=KHotKeys
+ Name[af]=KDE Kortpad Sleutels
+@@ -35,6 +34,6 @@
+ Name[x-test]=xxKHotKeysxx
+ Name[zh_TW]=KDE 熱鍵
+ Type=Service
+-ServiceTypes=KDEDModule
++X-KDE-ServiceTypes=KDEDModule
+ X-KDE-Library=khotkeys
+ X-KDE-Kded-autoload=false
+--- a/khotkeys/data/konqueror_gestures_kde321.khotkeys
++++ b/khotkeys/data/konqueror_gestures_kde321.khotkeys
+@@ -10,6 +10,7 @@
+ Comment[csb]=Pòdspòdlowé gestë Konquerora
+ Comment[de]=Grundlegende Gesten für Konqueror
+ Comment[el]=Βασικές χειρονομίες Konqueror.
++Comment[eo]=Bazaj gestoj de Konkeranto
+ Comment[et]=Konquerori põhilised žestid.
+ Comment[fa]=وضعیتهای Konqueror پایه‌ای
+ Comment[fy]=Basis stjoerrings foar Konqueror.
+@@ -26,6 +27,7 @@
+ Comment[ne]=आधारभूत कन्क्वेरर गेस्चर ।
+ Comment[nl]=Basis Konqueror-gebaren
+ Comment[nn]=Grunnleggjande Konqueror-rørsler.
++Comment[pa]=ਬੇਸਿਕ ਕੋਨਕਿਊਰੋਰ ਜੈੱਸਚਰ ਹਨ।
+ Comment[pt]=Gestos básicos do Konqueror.
+ Comment[pt_BR]=Gestos básicos do Konqueror.
+ Comment[sr]=Основни гестови у К-освајачу
+@@ -45,6 +47,7 @@
+ Name[csb]=Gestë Konquerora
+ Name[de]=Konqueror-Gesten
+ Name[el]=Χειρονομίες Konqueror
++Name[eo]=Gestoj de Konkeranto
+ Name[et]=Konquerori žestid
+ Name[fa]=وضعیتهای Konqueror
+ Name[fy]=Konqueror stjoerrings
+@@ -61,6 +64,7 @@
+ Name[ne]=कन्क्वेरर गेस्चर
+ Name[nl]=Konqueror-gebaren
+ Name[nn]=Konqueror-rørsler
++Name[pa]=ਕੋਨਕਿਊਰੋਰ ਜੈੱਸਚਰ
+ Name[pt]=Gestos do Konqueror
+ Name[pt_BR]=Gestos do Konqueror
+ Name[sr]=Гестови у К-освајачу
+@@ -83,6 +87,7 @@
+ Comment[csb]=Òkno Konquerora
+ Comment[de]=Konqueror-Fenster
+ Comment[el]=Παράθυρο του Konqueror
++Comment[eo]=Konkeranto-fenestro
+ Comment[es]=Ventana de Konqueror
+ Comment[et]=Konquerori aken
+ Comment[fa]=پنجرۀ Konqueror
+@@ -100,7 +105,7 @@
+ Comment[ne]=कन्क्वेरर सञ्झ्याल
+ Comment[nl]=Konqueror-venster
+ Comment[nn]=Konqueror-vindauge
+-Comment[pa]=ਕੋਨਕਿਉਰਰ ਝਰੋਖਾ
++Comment[pa]=ਕੋਨਕਿਉਰਰ ਵਿੰਡੋ
+ Comment[pt]=Janela do Konqueror
+ Comment[pt_BR]=Janela do Konqueror
+ Comment[sr]=Прозор К-освајача
+@@ -120,6 +125,7 @@
+ [Data_1Conditions0Window]
+ Comment=Konqueror
+ Comment[ar]=كونكيورر
++Comment[eo]=Konkeranto
+ Comment[ne]=कन्क्वेरर
+ Comment[pa]=ਕੋਨਕਿਉਰਰ
+ Comment[sr]=К-освајач
+@@ -132,6 +138,7 @@
+ ClassType=3
+ Comment=Konqueror
+ Comment[ar]=كونكيورر
++Comment[eo]=Konkeranto
+ Comment[ne]=कन्क्वेरर
+ Comment[pa]=ਕੋਨਕਿਉਰਰ
+ Comment[sr]=К-освајач
+@@ -147,6 +154,7 @@
+ [Data_1_1]
+ Comment=Press, move left, release.
+ Comment[bg]=Натискане, движение наляво, пускане.
++Comment[ca]=Premeu, moveu a l'esquerra, deixeu anar.
+ Comment[de]=Drücken, nach links, loslassen.
+ Comment[el]=Πιέστε, μετακινηθείτε αριστερά, ελευθερώστε.
+ Comment[et]=Vajuta, liiguta vasakule, vabasta.
+@@ -183,6 +191,7 @@
+ Name[csb]=Nazôd
+ Name[de]=Zurück
+ Name[el]=Πίσω
++Name[eo]=Reen
+ Name[es]=Atrás
+ Name[et]=Tagasi
+ Name[fa]=عقب
+@@ -218,6 +227,7 @@
+ [Data_1_10]
+ Comment=Opera-style: Press, move up, release.\nNOTE: Conflicts with 'New Tab', and as such is disabled by default.
+ Comment[bg]=Стил Opera: натискане, движение нагоре, пускане.\nЗАБЕЛЕЖКА:Има конфликт с "Нов подпрозорец" и затова е изключено по подразбиране.
++Comment[ca]=Estil Opera: premeu, moveu amunt,deixeu anar.\nNota: els conflictes amb 'Pestanya nova', i similars s'han deshabilitat per omissió.
+ Comment[de]=Opera-Stil: Drücken, nach oben, loslassen.\nHinweis: Dies steht in Konflikt mit der Aktion "Neues Unterfenster" und ist daher in der Voreinstellung nicht aktiviert.
+ Comment[el]=Στυλ Opera: Πιέστε, μετακινήστε πάνω, ελευθερώστε.\nΣΗΜΕΙΩΣΗ: Αυτό συγκρούεται με την 'Νέα καρτέλα', και οπότε είναι προκαθορισμένα απενεργοποιημένο.
+ Comment[et]=Opera stiilis: vajuta, liiguta üles, vabasta.\nMärkus: konfliktis toiminguga 'Uus kaart' ja seetõttu vaikimisi välja lülitatud.
+@@ -228,7 +238,7 @@
+ Comment[ja]=Opera スタイル: マウスの中ボタンを押したまま、マウスを上に動かし、ボタンを放します。\n[注意] 「新規タブ」と競合するため、標準設定では無効になっています。
+ Comment[kk]=Opera-стилі: Бас, жоғарға жүгірт, босат.\nЕСКЕРТУ: 'Жаңа қойынды' дегенмен қайшылықта, сондықтан әдетте рұқсат етілмеген.
+ Comment[km]=រចនាប័ទ្ម Opera ៖ ចុច​ ផ្លាស់ទី​ឡើង​លើ លែង ។\nចំណាំ ៖ មាន​ការ​ប៉ទង្គិច​ជាមួយ 'ផ្ទាំង​ថ្មី' ហើយ​តាម​លំនាំ​ដើម​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឡើយ ។
+-Comment[nb]=Opera-stil: Trykk, flytt oppover, slipp.\nMerk: Slått av som standard pga. konflikt med «Nytt faneblad».
++Comment[nb]=Opera-stil: Trykk, flytt oppover, slipp.\nMerk: Slått av som standard pga. konflikt med «Ny fane».
+ Comment[nds]=Opera-Stil: Drücken, na baven, looslaten.\nBeacht: Verdreegt sik nich mit "Nieg Paneel" un is dorüm standardwies utmaakt.
+ Comment[ne]=ओपेरा-शैली: थिच्नुहोस्, माथि सार्नुहोस्, छोड्नुहोस् ।\nद्रष्टब्य: 'नयाव ट्याब' सँग द्वन्द गर्दछ, र पूर्वनिर्धारितद्वारा अक्षम गरिन्छ ।
+ Comment[nl]=Opera-stijl: indrukken, omhoog bewegen, loslaten.\nOpmerking: Botst met 'Nieuw tabblad', en is standaard uitgeschakeld.
+@@ -251,6 +261,7 @@
+ Name[csb]=Zatrzëmôj ladowanié
+ Name[de]=Ladevorgang abbrechen
+ Name[el]=Σταμάτημα φόρτωσης
++Name[eo]=Ĉesigi ŝargadon
+ Name[es]=Detener la carga
+ Name[et]=Laadimise peatamine
+ Name[fa]=ایست بارگذاری
+@@ -295,6 +306,7 @@
+ [Data_1_10Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -307,6 +319,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -324,6 +337,7 @@
+ [Data_1_11]
+ Comment=Going up in URL/directory structure.\nMozilla-style: Press, move up, move left, move up, release.
+ Comment[bg]=Едно ниво нагоре в директорията..\nСтил Мозила: натискане, движение нагоре, движение наляво, движение нагоре, пускане.
++Comment[ca]=Anar cap amunt per l'URL/estructura de directoris.\nEstil Mozilla: premeu, moveu amunt, moveu a l'esquerra, moveu amunt, deixeu anar.
+ Comment[de]=Geht in der Adress-/Ordnerstruktur eine Ebene höher.\nMozilla-Stil: Drücken, nach oben, nach links, nach oben, loslassen.
+ Comment[el]=Μετάβαση προς τα πάνω στη δομή URL/καταλόγου.\nΣτυλ Mozilla: Πιέστε, μετακίνηση πάνω, μετακίνηση αριστερά, μετακίνηση πάνω, ελευθέρωση.
+ Comment[et]=Liikumine URL-i/kataloogistruktuuris üles.\nMozilla stiilis: vajuta, liiguta üles, liiguta vasakule, liiguta üles, vabasta.
+@@ -356,6 +370,7 @@
+ Name[csb]=W górã
+ Name[de]=Aufwärts
+ Name[el]=Πάνω
++Name[eo]=Supren
+ Name[es]=Arriba
+ Name[et]=Üles
+ Name[fa]=بالا
+@@ -402,6 +417,7 @@
+ [Data_1_11Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -414,6 +430,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -431,6 +448,7 @@
+ [Data_1_12]
+ Comment=Going up in URL/directory structure.\nOpera-style: Press, move up, move left, move up, release.\nNOTE: Conflicts with  "Activate Previous Tab", and as such is disabled by default.
+ Comment[bg]=Едно ниво нагоре.\nСтил Opera: натискане, движение нагоре, движение наляво, движение нагоре, пускане.\nЗАБЕЛЕЖКА:Има конфликт с "Активиране на предишен подпрозорец" и затова е изключено по подразбиране.
++Comment[ca]=Anar cap amunt per l'URL/estructura de directoris.\nEstil Opera: premeu, moveu amunt, moveu a l'esquerra, moveu amunt, deixeu anar.\nNota: els conflictes amb 'Pestanya nova', i similars s'han deshabilitat per omissió.
+ Comment[de]=Geht in der Adress-/Ordnerstruktur eine Ebene höher.\nOpera-Stil: Drücken, nach oben, nach links, nach oben, loslassen.\nHinweis: Dies steht in Konflikt mit der Aktion "Vorheriges Unterfenster aktivieren und ist daher in der Voreinstellung nicht aktiviert.
+ Comment[el]=Μετάβαση προς τα πάνω στη δομή URL/καταλόγου.\nΣτυλ Opera: Πιέστε, μετακίνηση πάνω, μετακίνηση αριστερά, μετακίνηση πάνω, ελευθέρωση.\nΣΗΜΕΙΩΣΗ: Συγκρούεται με το "Ενεργοποίηση προηγούμενης καρτέλας", οπότε είναι προκαθορισμένα απενεργοποιημένο.
+ Comment[et]=Liikumine URL-i/kataloogistruktuuris üles.\nOpera stiilis: vajuta, liiguta üles, liiguta vasakule, liiguta üles, vabasta.\nMärkus: konfliktis toiminguga "Eelmise kaardi aktiveerimine" ja seetõttu vaikimisi välja lülitatud.
+@@ -457,6 +475,7 @@
+ Enabled=false
+ Name=Up #2
+ Name[bg]=Нагоре #2
++Name[ca]=Amunt 2
+ Name[de]=Nach oben (2)
+ Name[el]=Πάνω #2
+ Name[et]=Üles nr. 2
+@@ -496,6 +515,7 @@
+ [Data_1_12Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -508,6 +528,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -525,6 +546,7 @@
+ [Data_1_13]
+ Comment=Press, move up, move right, release.
+ Comment[bg]=Натискане, движение нагоре, движение надясно, пускане.
++Comment[ca]=Premeu, moveu amunt, moveu a la dreta, deixeu anar.
+ Comment[de]=Drücken, nach oben, nach rechts, loslassen.
+ Comment[el]=Πίεση, μετακίνηση πάνω, μετακίνηση δεξιά, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta üles, liiguta paremale, vabasta.
+@@ -602,6 +624,7 @@
+ [Data_1_13Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -614,6 +637,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -631,6 +655,7 @@
+ [Data_1_14]
+ Comment=Press, move up, move left, release.
+ Comment[bg]=Натискане, движение нагоре, движение наляво, пускане.
++Comment[ca]=Premeu, moveu amunt, moveu a l'esquerra, deixeu anar.
+ Comment[de]=Drücken, nach oben, nach links, loslassen.
+ Comment[el]=Πίεση, μετακίνηση πάνω, μετακίνηση αριστερά, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta üles, liiguta vasakule, vabasta.
+@@ -662,6 +687,7 @@
+ Name[ca]=Activa la pestanya anterior
+ Name[de]=Vorheriges Unterfenster aktivieren
+ Name[el]=Ενεργοποίηση προηγούμενης καρτέλας
++Name[eo]=Aktivigi antaŭan langeton
+ Name[es]=Activar la solapa anterior
+ Name[et]=Eelmise kaardi aktiveerimine
+ Name[fa]=فعال کردن تب قبلی
+@@ -708,6 +734,7 @@
+ [Data_1_14Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -720,6 +747,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -749,6 +777,7 @@
+ [Data_1_1Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -761,6 +790,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -778,6 +808,7 @@
+ [Data_1_2]
+ Comment=Press, move down, move up, move down, release.
+ Comment[bg]=Натискане, движение надолу, движение нагоре, движение надолу, пускане.
++Comment[ca]=Premeu, moveu avall, moveu amunt, moveu avall, deixeu anar.
+ Comment[de]=Drücken, nach unten, nach oben, nach unten, loslassen.
+ Comment[el]=Πίεση, μετακίνηση κάτω, μετακίνηση πάνω, μετακίνηση κάτω, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta alla, liiguta üles, liiguta alla, vabasta.
+@@ -806,6 +837,7 @@
+ Name=Duplicate Tab
+ Name[ar]=لسان مكرر
+ Name[bg]=Дублиране на подпрозорец
++Name[ca]=Duplica la pestanya
+ Name[de]=Unterfenster duplizieren
+ Name[el]=Αντίγραφο καρτέλας
+ Name[es]=Duplicar la solapa
+@@ -853,6 +885,7 @@
+ [Data_1_2Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -865,6 +898,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -882,6 +916,7 @@
+ [Data_1_3]
+ Comment=Press, move down, move up, release.
+ Comment[bg]=Натискане, движение надолу, движение нагоре, пускане.
++Comment[ca]=Premeu, moveu avall, moveu amunt, deixeu anar.
+ Comment[de]=Drücken, nach unten, nach oben, loslassen.
+ Comment[el]=Πίεση, μετακίνηση κάτω, μετακίνηση πάνω, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta alla, liiguta üles, vabasta.
+@@ -916,6 +951,7 @@
+ Name[csb]=Duplikùjë òkno
+ Name[de]=Fenster duplizieren
+ Name[el]=Αντίγραφο παραθύρου
++Name[eo]=Duobligi fenestron
+ Name[es]=Duplicar la ventana
+ Name[et]=Akna dubleerimine
+ Name[fa]=پنجرۀ تکراری
+@@ -932,7 +968,7 @@
+ Name[ne]=नक्कली सञ्झ्याल
+ Name[nl]=Venster dupliceren
+ Name[nn]=Lag kopi av vindauge
+-Name[pa]=ਡੁਪਲੀਕੇਟ ਝਰੋਖਾ
++Name[pa]=ਡੁਪਲੀਕੇਟ ਵਿੰਡੋ
+ Name[pt]=Duplicar a Janela
+ Name[pt_BR]=Duplicar Janela
+ Name[sl]=Podvoji okno
+@@ -962,6 +998,7 @@
+ [Data_1_3Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -974,6 +1011,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1025,6 +1063,7 @@
+ Name[csb]=W przódk
+ Name[de]=Nach vorne
+ Name[el]=Εμπρός
++Name[eo]=Pluen
+ Name[es]=Adelante
+ Name[et]=Edasi
+ Name[fa]=پیش‌سو
+@@ -1071,6 +1110,7 @@
+ [Data_1_4Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1083,6 +1123,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1100,6 +1141,7 @@
+ [Data_1_5]
+ Comment=Press, move down, move half up, move right, move down, release.\n(Drawing a lowercase 'h'.)
+ Comment[bg]=Натискане, движение надясно, полудвижение нагоре, движение надясно, движение надолу, пускане.\n(Пише се малка буква "h".)
++Comment[ca]=Premeu, moveu avall, moveu la meitat cap amunt, moveu a la dreta, deixeu anar.\n(Dibuixant una 'h' minúscula)
+ Comment[de]=Drücken, nach unten, halb nach oben, nach rechts, nach unten, loslassen. (ein kleines "h" zeichnen")
+ Comment[el]=Πίεση, μετακίνηση κάτω, μετακίνηση κατά το ήμισυ πάνω, μετακίνηση δεξιά, μετακίνηση κάτω,ελευθέρωση.\n(Σχεδίαση ενός μικρού 'h'.)
+ Comment[et]=Vajuta, liiguta alla, liiguta pool teed üles, liiguta paremale, liiguta alla, vabasta.\n(Väikese h-tähe joonistamine.)
+@@ -1205,6 +1247,7 @@
+ [Data_1_5Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1217,6 +1260,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1238,6 +1282,7 @@
+ [Data_1_6]
+ Comment=Press, move right, move down, move right, release.\nMozilla-style: Press, move down, move right, release.
+ Comment[bg]=Натискане, движение надолу, движение нагоре, движение надолу, пускане.
++Comment[ca]=Premeu, moveu a la dreta, moveu avall, moveu a la dreta, deixeu anar.\nEstil Mozilla: premeu, moveu avall, moveu a la dreta, deixeu anar.
+ Comment[de]=Drücken, nach rechts, nach unten, nach rechts, loslassen.\nMozilla-Stil: Drücken, nach unten, nach rechts, loslassen.
+ Comment[el]=Πίεση, μετακίνηση δεξιά, μετακίνηση κάτω, μετακίνηση δεξιά, ελευθέρωση.\nΣτυλ Mozilla: Πίεση, μετακίνηση κάτω, μετακίνηση δεξιά, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta paremale, liiguta alla, liiguta paremale, vabasta.\nMozilla stiilis: vajuta, liiguta alla, liiguta paremale, vabasta.
+@@ -1266,6 +1311,7 @@
+ Name[ar]=إغلق لسان
+ Name[be]=Закрыць картку
+ Name[bg]=Затваряне на подпрозореца
++Name[ca]=Tanca pestanya
+ Name[cs]=Zavřít záložku
+ Name[csb]=Zamkni kôrtã
+ Name[de]=Unterfenster schließen
+@@ -1317,6 +1363,7 @@
+ [Data_1_6Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1329,6 +1376,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1350,6 +1398,7 @@
+ [Data_1_7]
+ Comment=Press, move up, release.\nConflicts with Opera-style 'Up #2', which is disabled by default.
+ Comment[bg]=Натискане, движение нагоре, пускане.\nИма конфликт със стила на Opera "Нагоре 2", който е по подразбиране.
++Comment[ca]=Premeu, moveu amunt, deixeu anar.\nConflictes amb l'estil Opera 'Amunt 2', que està deshabilitat per omissió.
+ Comment[de]=Drücken, nach oben, loslassen.\nSteht in Konflikt mit dem Opera-Stil von "Nach oben (2)", der aber in der Voreinstellung nicht aktiviert ist.
+ Comment[el]=Πίεση, μετακίνηση πάνω, ελευθέρωση.\nΣύγκρουση με το στυλ Opera 'Πάνω #2', το οποίο είναι προκαθορισμένα απενεργοποιημένο.
+ Comment[et]=Vajuta, liiguta üles, vabasta.\nKonfliktis Opera stiilis 'Üles nr. 2', mis on vaikimisi välja lülitatud.
+@@ -1379,6 +1428,7 @@
+ Name[ar]=لسان جديد
+ Name[be]=Новая картка
+ Name[bg]=Нов подпрозорец
++Name[ca]=Pestanya nova
+ Name[cs]=Nová karta
+ Name[csb]=Nowô kôrta
+ Name[de]=Neues Unterfenster
+@@ -1429,6 +1479,7 @@
+ [Data_1_7Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1441,6 +1492,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1458,6 +1510,7 @@
+ [Data_1_8]
+ Comment=Press, move down, release.
+ Comment[bg]=Натискане, движение надолу, пускане.
++Comment[ca]=Premeu, moveu avall, deixeu anar.
+ Comment[de]=Drücken, nach unten, loslassen.
+ Comment[el]=Πίεση, μετακίνηση κάτω, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta alla, vabasta.
+@@ -1526,7 +1579,7 @@
+ Name[ne]=नयाँ सञ्झ्याल
+ Name[nl]=Nieuw venster
+ Name[nn]=Nytt vindauge
+-Name[pa]=ਨਵਾਂ ਝਰੋਖਾ
++Name[pa]=ਨਵੀਂ ਵਿੰਡੋ
+ Name[pl]=Nowe okno
+ Name[pt]=Nova Janela
+ Name[pt_BR]=Nova Janela
+@@ -1566,6 +1619,7 @@
+ [Data_1_8Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1578,6 +1632,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+@@ -1595,6 +1650,7 @@
+ [Data_1_9]
+ Comment=Press, move up, move down, release.
+ Comment[bg]=Натискане, движение нагоре, движение надолу, пускане.
++Comment[ca]=Premeu, moveu amunt, moveu avall, deixeu anar.
+ Comment[de]=Drücken, nach oben, nach unten, loslassen.
+ Comment[el]=Πίεση, μετακίνηση πάνω, μετακίνηση κάτω, ελευθέρωση.
+ Comment[et]=Vajuta, liiguta üles, liiguta alla, vabasta.
+@@ -1628,6 +1684,7 @@
+ Name[csb]=Zladëjë znowa
+ Name[de]=Dokument erneut laden
+ Name[el]=Επαναφόρτωση
++Name[eo]=Reŝargi
+ Name[es]=Recargar
+ Name[et]=Laadi uuesti
+ Name[fa]=بارگذاری مجدد
+@@ -1674,6 +1731,7 @@
+ [Data_1_9Triggers]
+ Comment=Gesture_triggers
+ Comment[bg]=Жестове
++Comment[ca]=Activadors de gestos
+ Comment[de]=Gesten_Aktivierung
+ Comment[el]=Ενεργοποιήσεις χειρονομίας
+ Comment[et]=Žesti käivitajad
+@@ -1686,6 +1744,7 @@
+ Comment[ne]=गेस्चर ट्रिगर
+ Comment[nl]=Gebaarstarters
+ Comment[nn]=Rørsle_startarar
++Comment[pa]=ਜੈੱਸਚਰ ਟਿੱਗਰ(_t)
+ Comment[pt]=Activações dos gestos
+ Comment[sr]=Окидачи_геста
+ Comment[sr at latin]=Okidači_gesta
+--- a/khotkeys/data/printscreen.khotkeys
++++ b/khotkeys/data/printscreen.khotkeys
+@@ -4,6 +4,7 @@
+ [Data_1]
+ Comment=This group contains actions that are set up by default.
+ Comment[bg]=Тази група съдържа действия, които са зададени по подразбирани.
++Comment[ca]=Aquest grup conté accions que estan configurades per omissió.
+ Comment[de]=Diese Gruppe enthält einige voreingestellte Aktionen.
+ Comment[el]=Η ομάδα αυτή περιέχει ενέργειες που είναι προκαθορισμένα καθορισμένες.
+ Comment[et]=See grupp sisaldab vaikimisi määratud toiminguid.
+@@ -19,7 +20,7 @@
+ Comment[ne]=यो समूहले कार्य समाविष्ट गर्दछ जुन पूर्वनिर्धारित रूपमा सेट गरिएका छन् ।
+ Comment[nl]=Deze groep bevat handelingen die standaard zijn ingesteld.
+ Comment[nn]=Denne gruppa inneheld handlingar som er sett opp som standard.
+-Comment[pa]=ਇਹ ਗਰੁੱਪ ਵਿੱਚ ਕਾਰਵਾਈਆਂ ਹਨ, ਜੋ ਕਿ ਮੂਲ ਰੂਪ ਵਿੱਚ ਸੈੱਟਅੱਪ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
++Comment[pa]=ਇਹ ਗਰੁੱਪ ਵਿੱਚ ਐਕਸ਼ਨ ਹਨ, ਜੋ ਕਿ ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ ਸੈੱਟਅੱਪ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
+ Comment[pt]=Este grupo contém as acções que estão configuradas por omissão.
+ Comment[pt_BR]=Este grupo contém ações que, por padrão, estão configuradas.
+ Comment[sr]=Ова група садржи подразумевано постављене радње.
+@@ -39,6 +40,7 @@
+ Name[csb]=Ùstawioné akcëje
+ Name[de]=Voreingestellte Aktionen
+ Name[el]=Προκαθορισμένες ενέργειες
++Name[eo]=Aprioraj agoj
+ Name[es]=Acciones predefinidas
+ Name[et]=Valmistoimingud
+ Name[fa]=پیش‌تنظیم کنشها
+@@ -55,7 +57,7 @@
+ Name[ne]=कार्य प्रिसेट गर्नुहोस्
+ Name[nl]=Voorgedefinieerde handelingen
+ Name[nn]=Førehandsdefinerte handlingar
+-Name[pa]=ਪ੍ਰੀ-ਸੈੱਟ ਕਾਰਵਾਈਆਂ
++Name[pa]=ਪ੍ਰੀ-ਸੈੱਟ ਐਕਸ਼ਨ
+ Name[pt]=Acções Predefinidas
+ Name[pt_BR]=Ações Predefinidas
+ Name[sr]=Предефинисане радње
+@@ -109,6 +111,7 @@
+ Name[bg]=Печат на екрана
+ Name[ca]=Impressió de pantalla
+ Name[de]=Bildschirm Drucken
++Name[eo]=EkranPreso
+ Name[fy]=print foarbyld
+ Name[he]=הדפס מסך
+ Name[it]=Stamp
+@@ -142,6 +145,7 @@
+ Comment=Simple_action
+ Comment[ar]=إجراء بسيط
+ Comment[bg]=Обикновено_действие
++Comment[ca]=Acció_simple
+ Comment[csb]=Prosté_dzejanié
+ Comment[de]=Einfache_Aktion
+ Comment[el]=Απλή_ενέργεια
+--- a/khotkeys/khotkeys.desktop
++++ b/khotkeys/khotkeys.desktop
+@@ -1,3 +1,2 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Hidden=true
+--- a/khotkeys/kcontrol/khotkeys.desktop
++++ b/khotkeys/kcontrol/khotkeys.desktop
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 khotkeys
+ Icon=preferences-desktop-keyboard-khotkeys
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ X-KDE-Library=kcm_khotkeys
+ X-KDE-Init-Symbol=khotkeys
+ X-KDE-ParentApp=kcontrol
+@@ -49,7 +48,7 @@
+ Name[ne]=आगत कार्य
+ Name[nl]=Invoeracties
+ Name[nn]=Innhandlingar
+-Name[pa]=ਇੰਪੁੱਟ ਕਾਰਵਾਈਆਂ
++Name[pa]=ਇੰਪੁੱਟ ਐਕਸ਼ਨ
+ Name[pl]=Akcje klawiszowe
+ Name[pt]=Acções de Entrada
+ Name[pt_BR]=Ações de Entrada
+--- a/ksplash/simple/Theme.rc
++++ /dev/null
+@@ -1,6 +0,0 @@
+-[KSplash Theme: Simple]
+-Name = Simple Splash Screen
+-Description = Very Simple Optimized Splash Screen
+-Version = 1.0
+-Author = Lubos Lunak <l.lunak at kde.org>
+-Engine = Simple
+--- /dev/null
++++ b/ksplash/simple/full/Theme.rc
+@@ -0,0 +1,6 @@
++[KSplash Theme: Simple]
++Name = Simple Splash Screen
++Description = Very Simple Optimized Splash Screen
++Version = 1.0
++Author = Lubos Lunak <l.lunak at kde.org>
++Engine = Simple
+--- /dev/null
++++ b/ksplash/simple/full/CMakeLists.txt
+@@ -0,0 +1 @@
++install( FILES Theme.rc Preview.png  DESTINATION  ${DATA_INSTALL_DIR}/ksplash/Themes/Simple )
+--- a/ksplash/simple/main.cpp
++++ b/ksplash/simple/main.cpp
+@@ -32,6 +32,7 @@
+ 
+ int main( int argc, char* argv[])
+     {
++    bool small = false;
+     bool test = false;
+     bool print_pid = false;
+     for( int i = 1;
+@@ -42,6 +43,8 @@
+             test = true;
+         if( strcmp( argv[ i ], "--pid" ) == 0 )
+             print_pid = true;
++        if( strcmp( argv[ i ], "SimpleSmall" ) == 0 )
++            small = true;
+         }
+     pid_t pid = fork();
+     if( pid < -1 )
+@@ -63,6 +66,8 @@
+     if( dpy == NULL )
+         return 1;
+     int sx, sy, sw, sh;
++    Window* wins = NULL;
++    int wins_count = 0;
+ #ifdef HAVE_XINERAMA
+     // Xinerama code from Qt
+     XineramaScreenInfo *xinerama_screeninfo = 0;
+@@ -77,6 +82,24 @@
+         sy = xinerama_screeninfo[ 0 ].y_org;
+         sw = xinerama_screeninfo[ 0 ].width;
+         sh = xinerama_screeninfo[ 0 ].height;
++        if( !small )
++            { // create windows covering other xinerama screens
++            wins_count = screenCount;
++            wins = new Window[ wins_count ];
++            for( int i = 1; // not 0
++                 i < wins_count;
++                 ++i )
++                {
++                XSetWindowAttributes attrs;
++                attrs.override_redirect = True;
++                attrs.background_pixel = BlackPixel( dpy, 0 ); // background
++                wins[ i ] = XCreateWindow( dpy, DefaultRootWindow( dpy ),
++                    xinerama_screeninfo[ i ].x_org, xinerama_screeninfo[ i ].y_org,
++                    xinerama_screeninfo[ i ].width, xinerama_screeninfo[ i ].height,
++                    0, CopyFromParent, CopyFromParent, CopyFromParent,
++                    CWOverrideRedirect | CWBackPixel, &attrs );
++                }
++            }
+         }
+     else
+ #endif
+@@ -90,29 +113,45 @@
+     const int states = 6;
+     const int frame = 3;
+     const int segment = sw / 2 / states;
+-    const int w = segment * states + 2 * frame;
+-    const int h = sh / 20 + frame;
+-    Window win = XCreateWindow( dpy, DefaultRootWindow( dpy ), sx + ( sw - w ) / 2, sy + ( sh - h ) /2, w, h,
++    const int pw = segment * states + 2 * frame; // size of progressbar
++    const int ph = sh / 20 + frame;
++    const int px = small ? 0 : sx + ( sw - pw ) / 2; // position in the pixmap
++    const int py = small ? 0 : sy + ( sh - ph ) / 2;
++    const int x = small ? sx + ( sw - pw ) / 2 : sx; // position of the window
++    const int y = small ? sy + ( sh - ph ) / 2 : sy;
++    const int w = small ? pw : sw;
++    const int h = small ? ph : sh;
++    if( wins == NULL )
++        {
++        wins = new Window[ 1 ];
++        wins_count = 1;
++        }
++    Window win = XCreateWindow( dpy, DefaultRootWindow( dpy ), x, y, w, h,
+         0, CopyFromParent, CopyFromParent, CopyFromParent, CWOverrideRedirect, &attrs );
++    wins[ 0 ] = win;
+     Pixmap pix = XCreatePixmap( dpy, DefaultRootWindow( dpy ), w, h, DefaultDepth( dpy, 0 ));
+     XGCValues values;
+-    values.foreground = WhitePixel( dpy, 0 );
++    values.foreground = BlackPixel( dpy, 0 ); // background
+     GC gc = XCreateGC( dpy, pix, GCForeground, &values );
+     XFillRectangle( dpy, pix, gc, 0, 0, w, h );
+-    values.foreground = BlackPixel( dpy, 0 );
++    values.foreground = WhitePixel( dpy, 0 ); // outline
++    XChangeGC( dpy, gc, GCForeground, &values );
++    XFillRectangle( dpy, pix, gc, px, py, pw, ph );
++    values.foreground = BlackPixel( dpy, 0 ); // progressbar
+     XChangeGC( dpy, gc, GCForeground, &values );
+-//    XFillRectangle( dpy, pix, gc, 0, 0, w, frame );
+-//    XFillRectangle( dpy, pix, gc, 0, h - frame, w, frame );
+-//    XFillRectangle( dpy, pix, gc, 0, 0, frame, h );
+-//    XFillRectangle( dpy, pix, gc, w - frame, 0, frame, h );
+     XSetWindowBackgroundPixmap( dpy, win, pix );
+-    XSelectInput( dpy, win, ButtonPressMask );
+     XSelectInput( dpy, DefaultRootWindow( dpy ), SubstructureNotifyMask );
+-    XClassHint class_hint;
+-    class_hint.res_name = const_cast< char* >( "ksplashsimple" );
+-    class_hint.res_class = const_cast< char* >( "ksplashsimple" );
+-    XSetWMProperties( dpy, win, NULL, NULL, NULL, NULL, NULL, NULL, &class_hint );
+-    XMapWindow( dpy, win );
++    for( int i = 0;
++         i < wins_count;
++         ++i )
++        {
++        XSelectInput( dpy, wins[ i ], ButtonPressMask );
++        XClassHint class_hint;
++        class_hint.res_name = const_cast< char* >( "ksplashsimple" );
++        class_hint.res_class = const_cast< char* >( "ksplashsimple" );
++        XSetWMProperties( dpy, wins[ i ], NULL, NULL, NULL, NULL, NULL, NULL, &class_hint );
++        XMapWindow( dpy, wins[ i ] );
++        }
+     int pos = 0;
+     int state = 1; // cannot check dcop connection - make this state initial
+     const int delay = 200; // ms
+@@ -125,35 +164,43 @@
+             {
+             XEvent ev;
+             XNextEvent( dpy, &ev );
+-            if( ev.type == ButtonPress && ev.xbutton.window == win && ev.xbutton.button == Button1 )
++            if( ev.type == ButtonPress && ev.xbutton.button == Button1 )
+                 {
+                 final_time = time( NULL );
+                 break;
+                 }
+             if( ev.type == ConfigureNotify && ev.xconfigure.event == DefaultRootWindow( dpy ))
+-                XRaiseWindow( dpy, win );
++                {
++                for( int i = 0;
++                     i < wins_count;
++                     ++i )
++                    XRaiseWindow( dpy, wins[ i ] );
++                }
+             if( ev.type == ClientMessage && ev.xclient.window == DefaultRootWindow( dpy )
+                 && ev.xclient.message_type == kde_splash_progress )
+                 {
+-                // based on ksplash
++                // these are also in ksplashx and in krunner
+                 const char* s = ev.xclient.data.b;
+ #ifdef DEBUG
+                 fprintf( stderr,"MESSAGE: %s\n", s );
+ #endif
+-                if( strcmp( s, "dcop" ) == 0 && state < 1 )
+-                    state = 1; // not actually used, state starts from 1, because dcop cannot be checked
+-                else if( strcmp( s, "kded" ) == 0 && state < 2 )
++                if( strcmp( s, "initial" ) == 0 && state < 0 )
++                    state = 0; // not actually used
++                else if( strcmp( s, "kded" ) == 0 && state < 1 )
++                    state = 1;
++                else if( strcmp( s, "confupdate" ) == 0 && state < 2 )
+                     state = 2;
+-                else if( strcmp( s, "kcminit" ) == 0 )
+-                    ; // unused
+-                else if( strcmp( s, "ksmserver" ) == 0 && state < 3 )
++                else if( strcmp( s, "kcminit" ) == 0 && state < 3 )
+                     state = 3;
+-                else if( strcmp( s, "wm started" ) == 0 && state < 4 )
++                else if( strcmp( s, "ksmserver" ) == 0 && state < 4 )
+                     state = 4;
+-                else if( strcmp( s, "kdesktop" ) == 0 && state < 5 )
++                else if( strcmp( s, "wm" ) == 0 && state < 5 )
+                     state = 5;
+-                else if(( strcmp( s, "kicker" ) == 0 || strcmp( s, "session ready" ) == 0 ) && state < 6 )
++                else if( strcmp( s, "desktop" ) == 0 && state < 6 )
+                     state = 6;
++// This last one isn't used, make splash go away as soon as desktop is ready.
++//                else if( strcmp( s, "ready" ) == 0 && state < 7 )
++//                    state = 7;
+                 }
+             }
+         if( test && time( NULL ) >= test_time )
+@@ -169,7 +216,7 @@
+                 fprintf( stderr, "POS: %d\n", pos );
+ #endif
+                 final_time = time( NULL ) + 60;
+-                XFillRectangle( dpy, pix, gc, frame + pos * segment, frame, segment, h - 2 * frame );
++                XFillRectangle( dpy, pix, gc, px + frame + pos * segment, py + frame, segment, ph - 2 * frame );
+                 XSetWindowBackgroundPixmap( dpy, win, pix );
+                 XClearWindow( dpy, win );
+                 ++pos;
+@@ -198,7 +245,11 @@
+             }
+         }
+     XFreePixmap( dpy, pix );
+-    XDestroyWindow( dpy, win );
++    for( int i = 0;
++         i < wins_count;
++         ++i )
++        XDestroyWindow( dpy, wins[ i ] );
++    delete[] wins;
+     XFreeGC( dpy, gc );
+     XCloseDisplay( dpy );
+     }
+--- /dev/null
++++ b/ksplash/simple/small/Theme.rc
+@@ -0,0 +1,6 @@
++[KSplash Theme: SimpleSmall]
++Name = Small Simple Splash Screen
++Description = Small Very Simple Optimized Splash Screen
++Version = 1.0
++Author = Lubos Lunak <l.lunak at kde.org>
++Engine = Simple
+--- /dev/null
++++ b/ksplash/simple/small/CMakeLists.txt
+@@ -0,0 +1 @@
++install( FILES Theme.rc Preview.png  DESTINATION  ${DATA_INSTALL_DIR}/ksplash/Themes/SimpleSmall )
+--- a/ksplash/simple/CMakeLists.txt
++++ b/ksplash/simple/CMakeLists.txt
+@@ -1,3 +1,6 @@
++add_subdirectory( full )
++add_subdirectory( small )
++
+ include_directories(  ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${KDE4_INCLUDES} )
+ 
+ ########### next target ###############
+@@ -14,5 +17,3 @@
+ 
+ 
+ install(TARGETS ksplashsimple DESTINATION ${BIN_INSTALL_DIR})
+-
+-install( FILES Theme.rc Preview.png  DESTINATION  ${DATA_INSTALL_DIR}/ksplash/Themes/Simple )
+--- a/ksplash/kcm/ksplashthememgr.desktop
++++ b/ksplash/kcm/ksplashthememgr.desktop
+@@ -1,11 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-system-splash
+ Exec=kcmshell4 ksplashthememgr
+-DocPath=ksplashml/themes.html
++X-DocPath=ksplashml/themes.html
+ 
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_ksplashthemes
+ X-KDE-ParentApp=kcontrol
+@@ -137,58 +136,58 @@
+ Comment[x-test]=xxManager for Splash Screen Themesxx
+ Comment[zh_CN]=飞溅屏幕主题管理器
+ Comment[zh_TW]=啟動畫面佈景管理程式
+-Keywords=splash screen,splash theme,startup
+-Keywords[ar]=شاشة البداية، سمِات شاشة البداية، بدء التشغيل
+-Keywords[be]=Застаўка,Загрузка,Запуск,Тэма загрузкі,splash screen,splash theme,startup
+-Keywords[bg]=Keywords=стартиране, начален, екран, splash screen, splash theme, startup
+-Keywords[ca]=pantalla d'inici,tema d'inici,iniciació
+-Keywords[cs]=úvodní obrazovka,splash
+-Keywords[csb]=ekran na przëwitanié,téma ekranu,rozpòczãce,sztart
+-Keywords[cy]=sgrîn croeso,thema croeso,ymgychwyn
+-Keywords[da]=opstartsskærm,opstartstema,opstart
+-Keywords[de]=startbildschirm
+-Keywords[el]=αρχική οθόνη,θέμα αρχικής οθόνης,ξεκίνημα
+-Keywords[eo]=Kcm_salutŝildo,Salutŝildo,Saluto
+-Keywords[es]=pantalla de inicio,tema de inicio,inicio
+-Keywords[et]=käivitusekraan,käivitusteema,käivitamine
+-Keywords[eu]=splash pantaila,splash gaia,abioa
+-Keywords[fa]=رنگ‌پاشی پرده، چهرۀ رنگ‌پاشی، راه‌اندازی
+-Keywords[fi]=aloitusruutu,aloitusruututeema,käynnistys
+-Keywords[fr]=écran de démarrage,thème de démarrage,démarrage,splash screen
+-Keywords[fy]=opstartscherm,begjinskerm,splash screen
+-Keywords[ga]=splancscáileán,splancthéama,tosú,tosach
+-Keywords[gl]=pantalla de benvida,tema de benvida,comezo
+-Keywords[he]=מצג פתיחה,ערכת נושא למצג פתיחה,הפעלה,splash screen,splash theme,startup
+-Keywords[hr]=splash screen,splash theme,startup,zaslon,pozdravna tema,pokretanje,početni zaslon
+-Keywords[hu]=nyitókép,indítási téma,indulás
+-Keywords[it]=schermata di avvio,splash screen,splash theme,tema schermata di avvio,avvio,startup
+-Keywords[ja]=スプラッシュスクリーン,スプラッシュテーマ,起動
+-Keywords[km]=អេក្រង់​ស្វាគមន៍ ស្បែក​ពេល​ស្វាគមន៍ ដំឡើង​
+-Keywords[ko]=시작 화면,시작,테마
+-Keywords[lt]=splash screen,splash theme,startup,pasveikinimo ekranas,pasveikinimo tema
+-Keywords[lv]=šļakstekrāns,šļakstekrāna tēma,palaišanās
+-Keywords[mk]=splash screen,splash theme,startup,поздравен екран,поздравна тема
+-Keywords[nb]=oppstart,oppstartsbilde,oppstartstema,velkomstbilde,velkomsttema
+-Keywords[nds]=splash,starten,Startschirm,Muster,theme
+-Keywords[ne]=स्प्लयास पर्दा, स्प्लयास विषयवस्तु, सुरुआत
+-Keywords[nl]=opstartscherm,splash screen
+-Keywords[nn]=oppstart,velkomstbilete,velkomsttema,oppstartstema
+-Keywords[pa]=ਸ਼ੁਰੂਆਤੀ ਸਕਰੀਨ,ਸ਼ੁਰੂਆਤੀ ਥੀਮ,ਸ਼ੁਰੂਆਤ
+-Keywords[pl]=ekran powitalny,motyw ekranu powitalnego,rozpoczęcie,start
+-Keywords[pt]=ecrã inicial,tema do ecrã inicial,arranque
+-Keywords[pt_BR]=tela de apresentação, tema da tela de apresentação,inicialização
+-Keywords[ro]=imagine,tematică,întîmpinare,pornire
+-Keywords[sl]=uvodni zaslon,uvodna tema,zagon
+-Keywords[sr]=splash screen,splash theme,startup,уводни,уводни екран,покретање
+-Keywords[sr at latin]=splash screen,splash theme,startup,uvodni,uvodni ekran,pokretanje
+-Keywords[sv]=startskärm,starttema,start
+-Keywords[ta]=தோன்றும் திரை,தோன்றும் தலைப்பு,துவக்கம்
+-Keywords[th]=หน้าจอเริ่มการทำงาน,ชุดตกแต่ง splash,เริ่มทำงาน
+-Keywords[tr]=açılış ekranı, açılış teması, başlangıç
+-Keywords[uk]=екран заставки,тема заставки,запуск,старт
+-Keywords[uz]=сплэш ойнаси,сплэш мавзуси,ишга тушиш
+-Keywords[vi]=màn hình chào mừng,sắc thái chào mừng,khởi động
+-Keywords[x-test]=xxsplash screen,splash theme,startupxx
+-Keywords[zh_CN]=splash screen,splash theme,startup,飞溅屏幕,飞溅主题,启动
+-Keywords[zh_TW]=splash screen,splash theme,startup,啟動
++X-KDE-Keywords=splash screen,splash theme,startup
++X-KDE-Keywords[ar]=شاشة البداية، سمِات شاشة البداية، بدء التشغيل
++X-KDE-Keywords[be]=Застаўка,Загрузка,Запуск,Тэма загрузкі,splash screen,splash theme,startup
++X-KDE-Keywords[bg]=Keywords=стартиране, начален, екран, splash screen, splash theme, startup
++X-KDE-Keywords[ca]=pantalla d'inici,tema d'inici,iniciació
++X-KDE-Keywords[cs]=úvodní obrazovka,splash
++X-KDE-Keywords[csb]=ekran na przëwitanié,téma ekranu,rozpòczãce,sztart
++X-KDE-Keywords[cy]=sgrîn croeso,thema croeso,ymgychwyn
++X-KDE-Keywords[da]=opstartsskærm,opstartstema,opstart
++X-KDE-Keywords[de]=startbildschirm
++X-KDE-Keywords[el]=αρχική οθόνη,θέμα αρχικής οθόνης,ξεκίνημα
++X-KDE-Keywords[eo]=Kcm_salutŝildo,Salutŝildo,Saluto
++X-KDE-Keywords[es]=pantalla de inicio,tema de inicio,inicio
++X-KDE-Keywords[et]=käivitusekraan,käivitusteema,käivitamine
++X-KDE-Keywords[eu]=splash pantaila,splash gaia,abioa
++X-KDE-Keywords[fa]=رنگ‌پاشی پرده، چهرۀ رنگ‌پاشی، راه‌اندازی
++X-KDE-Keywords[fi]=aloitusruutu,aloitusruututeema,käynnistys
++X-KDE-Keywords[fr]=écran de démarrage,thème de démarrage,démarrage,splash screen
++X-KDE-Keywords[fy]=opstartscherm,begjinskerm,splash screen
++X-KDE-Keywords[ga]=splancscáileán,splancthéama,tosú,tosach
++X-KDE-Keywords[gl]=pantalla de benvida,tema de benvida,comezo
++X-KDE-Keywords[he]=מצג פתיחה,ערכת נושא למצג פתיחה,הפעלה,splash screen,splash theme,startup
++X-KDE-Keywords[hr]=splash screen,splash theme,startup,zaslon,pozdravna tema,pokretanje,početni zaslon
++X-KDE-Keywords[hu]=nyitókép,indítási téma,indulás
++X-KDE-Keywords[it]=schermata di avvio,splash screen,splash theme,tema schermata di avvio,avvio,startup
++X-KDE-Keywords[ja]=スプラッシュスクリーン,スプラッシュテーマ,起動
++X-KDE-Keywords[km]=អេក្រង់​ស្វាគមន៍ ស្បែក​ពេល​ស្វាគមន៍ ដំឡើង​
++X-KDE-Keywords[ko]=시작 화면,시작,테마
++X-KDE-Keywords[lt]=splash screen,splash theme,startup,pasveikinimo ekranas,pasveikinimo tema
++X-KDE-Keywords[lv]=šļakstekrāns,šļakstekrāna tēma,palaišanās
++X-KDE-Keywords[mk]=splash screen,splash theme,startup,поздравен екран,поздравна тема
++X-KDE-Keywords[nb]=oppstart,oppstartsbilde,oppstartstema,velkomstbilde,velkomsttema
++X-KDE-Keywords[nds]=splash,starten,Startschirm,Muster,theme
++X-KDE-Keywords[ne]=स्प्लयास पर्दा, स्प्लयास विषयवस्तु, सुरुआत
++X-KDE-Keywords[nl]=opstartscherm,splash screen
++X-KDE-Keywords[nn]=oppstart,velkomstbilete,velkomsttema,oppstartstema
++X-KDE-Keywords[pa]=ਸ਼ੁਰੂਆਤੀ ਸਕਰੀਨ,ਸ਼ੁਰੂਆਤੀ ਥੀਮ,ਸ਼ੁਰੂਆਤ
++X-KDE-Keywords[pl]=ekran powitalny,motyw ekranu powitalnego,rozpoczęcie,start
++X-KDE-Keywords[pt]=ecrã inicial,tema do ecrã inicial,arranque
++X-KDE-Keywords[pt_BR]=tela de apresentação, tema da tela de apresentação,inicialização
++X-KDE-Keywords[ro]=imagine,tematică,întîmpinare,pornire
++X-KDE-Keywords[sl]=uvodni zaslon,uvodna tema,zagon
++X-KDE-Keywords[sr]=splash screen,splash theme,startup,уводни,уводни екран,покретање
++X-KDE-Keywords[sr at latin]=splash screen,splash theme,startup,uvodni,uvodni ekran,pokretanje
++X-KDE-Keywords[sv]=startskärm,starttema,start
++X-KDE-Keywords[ta]=தோன்றும் திரை,தோன்றும் தலைப்பு,துவக்கம்
++X-KDE-Keywords[th]=หน้าจอเริ่มการทำงาน,ชุดตกแต่ง splash,เริ่มทำงาน
++X-KDE-Keywords[tr]=açılış ekranı, açılış teması, başlangıç
++X-KDE-Keywords[uk]=екран заставки,тема заставки,запуск,старт
++X-KDE-Keywords[uz]=сплэш ойнаси,сплэш мавзуси,ишга тушиш
++X-KDE-Keywords[vi]=màn hình chào mừng,sắc thái chào mừng,khởi động
++X-KDE-Keywords[x-test]=xxsplash screen,splash theme,startupxx
++X-KDE-Keywords[zh_CN]=splash screen,splash theme,startup,飞溅屏幕,飞溅主题,启动
++X-KDE-Keywords[zh_TW]=splash screen,splash theme,startup,啟動
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+--- a/ksplash/kcm/installer.cpp
++++ b/ksplash/kcm/installer.cpp
+@@ -491,7 +491,7 @@
+   else if( mEngineOfSelected == "Simple" )
+   {
+     KProcess proc;
+-    proc << "ksplashsimple" << "--test";
++    proc << "ksplashsimple" << themeName << "--test";
+     if (proc.execute())
+       KMessageBox::error(this,i18n("Unable to start ksplashsimple."));
+     return;
+--- a/ksplash/ksplashx/CMakeLists.txt
++++ b/ksplash/ksplashx/CMakeLists.txt
+@@ -6,6 +6,8 @@
+ 
+ include( FindPNG )
+ 
++include_directories(${PNG_PNG_INCLUDE_DIR})
++
+ include (CheckCXXSourceCompiles)
+ CHECK_CXX_SOURCE_COMPILES(" int main() { __asm__(\"pxor %mm0, %mm0\") ; }" X86_MMX_FOUND)
+ 
+--- a/ksplash/ksplashx/splash.cpp
++++ b/ksplash/ksplashx/splash.cpp
+@@ -3,10 +3,12 @@
+ const int MAX_ITEMS = 100;
+ const int ANIM_IMAGES_ROW = 10;
+ 
+-// for convering from startup states to (internal) numbers
++// for converting from startup states to (internal) numbers
++// these are also in the simple splash and in krunner
+ const char states[][ 12 ] =
+-    { "initial", "kded", "confupdate", "kcminit", "ksmserver", "wm", "desktop", "ready" };
+-const int LAST_STATE = 7;
++    { "initial", "kded", "confupdate", "kcminit", "ksmserver", "wm", "desktop" };
++// State "ready" isn't used, make splash go away as soon as desktop is ready.
++const int LAST_STATE = 6;
+ 
+ #include <config-workspace.h>
+ 
+@@ -477,7 +479,7 @@
+         fprintf( stderr, "No window contents\n" );
+         exit( 3 );
+         }
+-    time_t test_time = time( NULL ) + 5;
++    time_t test_time = time( NULL ) + 2;
+ #ifdef DEBUG
+     fprintf( stderr,"AWATING STATE: %d (%s)\n", expected_state, states[ expected_state ] );
+ #endif
+@@ -540,7 +542,7 @@
+         if( test && time( NULL ) >= test_time )
+             {
+             ++state;
+-            test_time = time( NULL ) + 5;
++            test_time = time( NULL ) + 2;
+             }
+         if( expected_state <= state )
+             return false;
+--- a/ktip/ktip.desktop
++++ b/ktip/ktip.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KTip
+ Name[af]=K Leidraad
+ Name[cy]=KCynghoryn
+--- a/kwin/effects/thumbnailaside.h
++++ b/kwin/effects/thumbnailaside.h
+@@ -53,6 +53,7 @@
+         int maxwidth;
+         int spacing;
+         double opacity;
++        int screen;
+     };
+ 
+ } // namespace
+--- a/kwin/effects/invert.desktop
++++ b/kwin/effects/invert.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Invert
+ Name[be]=Інвертаваць
+ Name[bg]=Инвертиране
+ Name[ca]=Inverteix
+ Name[de]=Invertieren
+ Name[el]=Αντιστροφή
++Name[eo]=Renversi
+ Name[es]=Invertir
+ Name[et]=Teistpidi
+ Name[fa]=وارونه
+@@ -31,6 +31,7 @@
+ Name[zh_TW]=反轉
+ Comment=Inverts (negates) colors of the desktop
+ Comment[bg]=Инвертира цветовете на работния плот
++Comment[ca]=Inverteix (converteix en negatiu) els colors de l'escriptori
+ Comment[de]=Invertiert Farben der Arbeitsfläche
+ Comment[el]=Αντιστρέφει τα χρώματα της επιφάνειας εργασίας
+ Comment[es]=Invierte (niega) los colores del escritorio
+@@ -57,7 +58,7 @@
+ Icon=preferences-system-windows-effect-invert
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_invert
+--- a/kwin/effects/fade.cpp
++++ b/kwin/effects/fade.cpp
+@@ -173,6 +173,11 @@
+ 
+ bool FadeEffect::isFadeWindow( EffectWindow* w )
+     {
++    if( w->windowClass() == "ksplashx ksplashx"
++        || w->windowClass() == "ksplashsimple ksplashsimple" )
++        { // see login effect
++        return false;
++        }
+     return !w->isDesktop();
+     }
+ 
+--- a/kwin/effects/thumbnailaside_config.ui
++++ b/kwin/effects/thumbnailaside_config.ui
+@@ -9,9 +9,6 @@
+     <height>300</height>
+    </rect>
+   </property>
+-  <property name="windowTitle" >
+-   <string>Form</string>
+-  </property>
+   <layout class="QVBoxLayout" >
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+--- a/kwin/effects/logout.cpp
++++ b/kwin/effects/logout.cpp
+@@ -10,6 +10,8 @@
+ 
+ #include "logout.h"
+ 
++#include "kwinglutils.h"
++
+ #include <kdebug.h>
+ 
+ namespace KWin
+@@ -26,7 +28,9 @@
+ void LogoutEffect::prePaintScreen( ScreenPrePaintData& data, int time )
+     {
+     if( logout_window != NULL )
+-        progress = qBound( 0., progress + time / 1000., 1. );
++        progress = qBound( 0., progress + time / 2000., 1. );
++    else if( progress != 0 )
++        progress = qBound( 0., progress - time / 500., 1. );
+     effects->prePaintScreen( data, time );
+     }
+ 
+@@ -34,15 +38,25 @@
+     {
+     if( w != logout_window && progress != 0 )
+         {
+-        data.saturation *= ( 1 - progress * 0.6 );
+-        data.brightness *= ( 1 - progress * 0.6 ); // otherwise saturation doesn't work ???
++        // When saturation isn't supported then reduce brightness a bit more
++#ifdef HAVE_OPENGL
++        if( effects->compositingType() == OpenGLCompositing && GLTexture::saturationSupported() )
++            {
++            data.saturation *= ( 1 - progress * 0.8 );
++            data.brightness *= ( 1 - progress * 0.3 );
++            }
++        else
++#endif
++            {
++            data.brightness *= ( 1 - progress * 0.6 );
++            }
+         }
+     effects->paintWindow( w, mask, region, data );
+     }
+ 
+ void LogoutEffect::postPaintScreen()
+     {
+-    if( logout_window != NULL && progress != 1 )
++    if( progress != 0 && progress != 1 )
+         effects->addRepaintFull();
+     effects->postPaintScreen();
+     }
+@@ -62,15 +76,17 @@
+     if( w == logout_window )
+         {
+         logout_window = NULL;
+-        progress = 0;
+         effects->addRepaintFull();
+         }
+     }
+ 
+ bool LogoutEffect::isLogoutDialog( EffectWindow* w )
+     { // TODO there should be probably a better way (window type?)
+-    if( w->windowClass() == "ksmserver ksmserver" && w->windowRole() == "logoutdialog" )
++    if( w->windowClass() == "ksmserver ksmserver"
++        && ( w->windowRole() == "logoutdialog" || w->windowRole() == "logouteffect" ))
++        {
+         return true;
++        }
+     return false;
+     }
+ 
+--- a/kwin/effects/boxswitch.cpp
++++ b/kwin/effects/boxswitch.cpp
+@@ -50,11 +50,6 @@
+     {
+     }
+ 
+-void BoxSwitchEffect::prePaintScreen( ScreenPrePaintData& data, int time )
+-    {
+-    effects->prePaintScreen( data, time );
+-    }
+-
+ void BoxSwitchEffect::prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time )
+     {
+     if( mActivated )
+--- a/kwin/effects/magnifier_config.ui
++++ b/kwin/effects/magnifier_config.ui
+@@ -9,9 +9,6 @@
+     <height>300</height>
+    </rect>
+   </property>
+-  <property name="windowTitle" >
+-   <string>Form</string>
+-  </property>
+   <layout class="QVBoxLayout" >
+    <item>
+     <widget class="QGroupBox" name="groupSize" >
+--- a/kwin/effects/demo_taskbarthumbnail.desktop
++++ b/kwin/effects/demo_taskbarthumbnail.desktop
+@@ -1,11 +1,38 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Taskbar Thumbnails
++Name[ca]=Miniatures a la barra de tasques
++Name[de]=Vorschaubild in der Fensterleiste
++Name[el]=Εικόνες επισκόπησης της Γραμμής εργασιών
++Name[eo]=Taskbretaj bildetoj
++Name[et]=Tegumiriba pisipildid
++Name[ja]=タスクバーのサムネイル
++Name[nb]=Oppgavelinje-minibilder
++Name[nds]=Programmbalken-Vöransichten
++Name[pa]=ਟਾਸਕਬਾਰ ਥੰਮਨੇਲ
++Name[pt]=Miniaturas da Barra de Tarefas
++Name[pt_BR]=Miniaturas da Barra de Tarefas
++Name[sv]=Miniatyrbilder i aktivitetsfält
++Name[x-test]=xxTaskbar Thumbnailsxx
++Name[zh_CN]=任务栏缩略图
++Name[zh_TW]=工作列縮圖
+ Icon=preferences-system-windows-effect-taskbarthumbnail
+ Comment=Shows window thumbnails when cursor is on their taskbar entry
++Comment[ca]=Mostra una miniatura de la finestra quan el cursor està sobre la seva entrada de la barra de tasques
++Comment[de]=Zeigt Fenster-Vorschaubilder an, wenn sich der Mauszeiger über dem Fensterleisten-Eintrag befindet.
++Comment[el]=Εμφάνιση εικόνας επισκόπησης παραθύρου όταν το ποντίκι περνάει πάνω από την καταχώρησή του στη γραμμή εργασιών
++Comment[et]=Akende pisipiltide näitamine, kui kursor on nende tegumiriba kirje kohal
++Comment[ja]=タスクバーエントリの上にマウスが来たときに、そのウィンドウのサムネイルを表示します
++Comment[nb]=Viser minibilder av vinduene når pekeren er over oppgavelinja
++Comment[nds]=Wiest Vöransichten vun de Finstern, wenn Du mit de Muus op ehr Programmbalken-Indrääg wiest.
++Comment[pt]=Mostra as miniaturas das janelas quando o cursor está no seu item da barra de tarefas
++Comment[pt_BR]=Mostra miniaturas das janelas quando o cursor está nas suas entradas na barra de tarefas
++Comment[sv]=Visar miniatyrbilder av fönster när markören är över deras post i aktivitetsfältet
++Comment[x-test]=xxShows window thumbnails when cursor is on their taskbar entryxx
++Comment[zh_CN]=当鼠标指针指向任务栏时显示窗口缩略图
++Comment[zh_TW]=當游標停在工作列的按鈕上面時,顯示視窗的縮圖
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_taskbarthumbnail
+--- a/kwin/effects/maketransparent.desktop
++++ b/kwin/effects/maketransparent.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Translucency
+ Name[af]=Deursigtigheid
+ Name[be]=Празрыстасць
+@@ -28,6 +27,7 @@
+ Name[ne]=पारभासकता
+ Name[nl]=Transparatie
+ Name[nn]=Gjennomsikt
++Name[pa]=ਬਲੌਰੀ (ਟਰੈਨਜ਼ਲੂਸਨਟ)
+ Name[pl]=Przezroczystość
+ Name[pt]=Translucidez
+ Name[pt_BR]=Transparência
+@@ -46,9 +46,23 @@
+ Name[zh_TW]=半透明
+ Icon=preferences-system-windows-effect-maketransparent
+ Comment=Makes decorations or entire windows translucent
++Comment[ca]=Converteix en translúcides les decoracions o les finestres senceres
++Comment[de]=Macht Fenster oder deren Dekorationen transparent
++Comment[el]=Κάνει τη διακόσμηση των παραθύρων ή ολόκληρα τα παράθυρα ημιδιαφανή
++Comment[et]=Dekoratsioonid või terved aknad muudetakse läbipaistvaks
++Comment[ja]=装飾またはウィンドウ全体を半透明にします
++Comment[nb]=Gjør dekorasjoner eller hele vinduer gjennomskinnelig
++Comment[nds]=Maakt dörschienen Finstern oder Finsterdelen
++Comment[pa]=ਸਜਾਵਟ ਜਾਂ ਪੂਰੀ ਵਿੰਡੋ ਹੀ ਬਲੌਰੀ ਬਣਾਓ
++Comment[pt]=Torna as decorações ou as janelas internas translúcidas
++Comment[pt_BR]=Torna as decorações ou as janelas internas translúcidas
++Comment[sv]=Gör dekorationer eller hela fönster halvgenomskinliga
++Comment[x-test]=xxMakes decorations or entire windows translucentxx
++Comment[zh_CN]=让装饰或整个屏幕透明
++Comment[zh_TW]=讓裝飾或整個視窗變半透明
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_maketransparent
+--- a/kwin/effects/sharpen.desktop
++++ b/kwin/effects/sharpen.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Sharpen
+ Name[bg]=Отчетливост
+ Name[ca]=Aguditza
+ Name[de]=Schärfen
+ Name[el]=Όξυνση
++Name[eo]=Akrigi
+ Name[et]=Teravdus
+ Name[fa]=تیز کردن
+ Name[he]=חדד
+@@ -29,6 +29,7 @@
+ Name[zh_TW]=讓輪廓更分明
+ Comment=Makes your desktop look sharper
+ Comment[bg]=Прави работния плот по-отчетлив
++Comment[ca]=Fa que l'escriptori sembli més definit
+ Comment[de]=Lässt Ihre Arbeitsfläche schärfer erscheinen
+ Comment[el]=Κάνει την επιφάνεια εργασίας σας να δείχνει πιο οξεία
+ Comment[et]=Muudab töölaua välimuse teravamaks
+@@ -56,7 +57,7 @@
+ Icon=preferences-system-windows-effect-sharpen
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_sharpen
+--- a/kwin/effects/trackmouse_config.desktop
++++ b/kwin/effects/trackmouse_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_trackmouse
+@@ -10,13 +9,15 @@
+ Name=Track Mouse
+ Name[be]=Адследжваць мыш
+ Name[bg]=Мишка
++Name[ca]=Seguiment del ratolí
+ Name[de]=Mausspur
+ Name[el]=Ανίχνευση ποντικιού
++Name[eo]=Spuri muson
+ Name[es]=Seguir el ratón
+ Name[et]=Hiire jälgimine
+ Name[fa]=ردگیری موشی
+ Name[he]=עקבות עכבר
+-Name[ja]=トラックマウス
++Name[ja]=マウス追跡
+ Name[kk]=Тышқандың ізі
+ Name[km]=ដាន​កណ្តុរ​
+ Name[ko]=마우스 추적
+@@ -30,7 +31,7 @@
+ Name[pt_BR]=Seguir o Mouse
+ Name[sr]=Праћење миша
+ Name[sr at latin]=Praćenje miša
+-Name[sv]=Musspår
++Name[sv]=Följ musen
+ Name[vi]=Vết chuột
+ Name[x-test]=xxTrack Mousexx
+ Name[zh_CN]=跟踪鼠标
+--- a/kwin/effects/blur.desktop
++++ b/kwin/effects/blur.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Blur
+ Name[bg]=Замъгляване
+ Name[ca]=Desdibuixa
+@@ -49,7 +48,7 @@
+ Comment[ne]=अर्ध-पारदर्शी विन्डोजको अस्पष्ट पृष्ठभूमि
+ Comment[nl]=Vervaagt de achtergrond van halftransparante vensters
+ Comment[nn]=Gjer bakgrunnen til halvgjennomsiktige vindauge uklar
+-Comment[pa]=ਬਲੌਰੀ (ਅਰਧ-ਪਾਰਦਰਸ਼ੀ) ਝਰੋਖਿਆਂ ਲਈ ਧੁੰਦਲੀ ਬੈਕਗਰਾਊਂਡ
++Comment[pa]=ਬਲੌਰੀ (ਅਰਧ-ਪਾਰਦਰਸ਼ੀ) ਵਿੰਡੋਜ਼ ਲਈ ਧੁੰਦਲੀ ਬੈਕਗਰਾਊਂਡ
+ Comment[pt]=Borra o fundo das janelas semi-transparentes
+ Comment[pt_BR]=Borra o fundo das janelas semi-transparentes
+ Comment[sr]=Замућује позадину полупровидних прозора
+@@ -62,7 +61,7 @@
+ Comment[zh_TW]=將半透明視窗的背景弄模糊
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_blur
+--- a/kwin/effects/fallapart.desktop
++++ b/kwin/effects/fallapart.desktop
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Fall Apart
++Name[ca]=Trencament
+ Name[de]=Auseinanderfallen
+ Name[el]=Κατάρρευση
+ Name[es]=Desmenuzar
+@@ -10,7 +10,7 @@
+ Name[kk]=Қирау
+ Name[km]=ផ្នែក​ដែល​ធ្លាក់​
+ Name[nb]=Fall fra hverandre
+-Name[nds]=Uteneenfallen
++Name[nds]=Tobreken
+ Name[ne]=भाग झार्नुहोस्
+ Name[nl]=Uit elkaar vallen
+ Name[nn]=Fall frå kvarandre
+@@ -23,13 +23,26 @@
+ Name[th]=ร่วงออก
+ Name[vi]=Hủy dần
+ Name[x-test]=xxFall Apartxx
+-Name[zh_CN]=崩溃
++Name[zh_CN]=坠落
+ Name[zh_TW]=破裂
+ Icon=preferences-system-windows-effect-fallapart
+ Comment=Closed windows fall into pieces
++Comment[ca]=Les finestres tancades es trenquen en peces
++Comment[de]=Geschlossene Fenster fallen auseinander
++Comment[el]=Τα παράθυρα που κλείνουν διαλύονται
++Comment[et]=Suletud aknad lagunevad tükkideks
++Comment[ja]=閉じられたウィンドウがバラバラになります
++Comment[nb]=Vinduer som lukkes ramler i småbiter
++Comment[nds]=Tomaakt Finstern breekt uteneen
++Comment[pt]=As janelas fechadas caem em pedaços
++Comment[pt_BR]=Janelas fechadas caem em pedaços
++Comment[sv]=Stängda fönster faller i bitar
++Comment[x-test]=xxClosed windows fall into piecesxx
++Comment[zh_CN]=关闭的窗口以碎片掉落
++Comment[zh_TW]=已關閉的視窗會被切割
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_fallapart
+--- a/kwin/effects/boxswitch.desktop
++++ b/kwin/effects/boxswitch.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Box Switch
+ Name[bg]=Превключване между прозорци
++Name[ca]=Canvi de caixa
+ Name[de]=Würfel-Fensterwechsel
+ Name[el]=Εναλλαγή πλαισίου
+ Name[et]=Aknavahetaja
+@@ -26,6 +26,7 @@
+ Icon=preferences-system-windows-effect-boxswitch
+ Comment=Improved Alt-tab window switcher
+ Comment[bg]=Подобрено превключване между прозорците с Alt-табулация
++Comment[ca]=Commutador millorat de finestres amb Alt+Tab
+ Comment[de]=Verbesserter Fensterwechsel mittels Alt-Tabulator
+ Comment[el]=Βελτιωμένη εναλλαγή παραθύρου Alt-tab
+ Comment[et]=Täiustatud Alt+TAB akende vahetaja
+@@ -53,7 +54,7 @@
+ Comment[zh_TW]=Alt-tab 視窗切換加強版
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Philip Falkner
+ X-KDE-PluginInfo-Email=philip.falkner at gmail.com
+ X-KDE-PluginInfo-Name=kwin4_effect_boxswitch
+--- a/kwin/effects/explosion.desktop
++++ b/kwin/effects/explosion.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Explosion
+ Name[br]=Tarzhad
+ Name[ca]=Explosió
+@@ -34,6 +33,7 @@
+ Icon=preferences-system-windows-effect-explosion
+ Comment=Makes windows explode when they're closed
+ Comment[bg]=Създава ефект на експлозия при затваряне на прозорците
++Comment[ca]=Provoca l'explosió de les finestres quan es tanquen
+ Comment[de]=Lässt Fenster beim Schließen explodieren
+ Comment[el]=Έκρηξη των παραθύρων κατά το κλείσιμο
+ Comment[es]=Hace que las ventanas exploten al cerrarlas
+@@ -61,7 +61,7 @@
+ Comment[zh_TW]=視窗關閉時讓視窗「爆炸」
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_explosion
+--- a/kwin/effects/zoom.desktop
++++ b/kwin/effects/zoom.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Zoom
+ Name[ar]=تكبير
+ Name[be]=Маштабаванне
+@@ -32,9 +31,23 @@
+ Name[zh_TW]=縮放
+ Icon=preferences-system-windows-effect-zoom
+ Comment=Magnifies the entire desktop
++Comment[ca]=Amplia l'escriptori sencer
++Comment[de]=Vergrößert die gesamte Arbeitsfläche
++Comment[el]=Μεγεθύνει ολόκληρη την Επιφάνεια εργασίας
++Comment[et]=Terve töölaua suurendamine
++Comment[ja]=デスクトップ全体を拡大します
++Comment[nb]=Forstørrer hele skrivebordet
++Comment[nds]=Wiest den helen Schriefdisch grötter
++Comment[pa]=ਪੂਰਾ ਡੈਸਕਟਾਪ ਵੱਡਦਰਸ਼ੀ ਵੇਖੋ
++Comment[pt]=Amplia o ecrã inteiro
++Comment[pt_BR]=Amplia a área de trabalho inteira
++Comment[sv]=Förstorar hela skrivbordet
++Comment[x-test]=xxMagnifies the entire desktopxx
++Comment[zh_CN]=放大整个屏幕
++Comment[zh_TW]=放大整個桌面
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_zoom
+--- a/kwin/effects/lookingglass_config.ui
++++ b/kwin/effects/lookingglass_config.ui
+@@ -9,9 +9,6 @@
+     <height>300</height>
+    </rect>
+   </property>
+-  <property name="windowTitle" >
+-   <string>Form</string>
+-  </property>
+   <layout class="QGridLayout" >
+    <item row="0" column="0" >
+     <widget class="QLabel" name="label" >
+--- a/kwin/effects/boxswitch.h
++++ b/kwin/effects/boxswitch.h
+@@ -36,7 +36,6 @@
+         BoxSwitchEffect();
+         ~BoxSwitchEffect();
+ 
+-        virtual void prePaintScreen( ScreenPrePaintData& data, int time );
+         virtual void paintScreen( int mask, QRegion region, ScreenPaintData& data );
+         virtual void prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time );
+         virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
+--- a/kwin/effects/thumbnailaside.desktop
++++ b/kwin/effects/thumbnailaside.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Thumbnail Aside
+ Name[bg]=Манипулатор на мини изображения
+ Name[ca]=Miniatures de costat
+ Name[de]=Seitliche Vorschaubilder
+ Name[el]=Εικόνα επισκόπησης στο πλάι
++Name[eo]=Bildetojn flanke
+ Name[et]=Pisipildid kõrval
+ Name[he]=דוגמית בצד
+ Name[ja]=サムネイルをわきに表示
+@@ -26,9 +26,22 @@
+ Name[zh_CN]=旁边缩略图
+ Icon=preferences-system-windows-effect-thumbnailaside
+ Comment=Shows window's thumbnail at the edge of the screen
++Comment[ca]=Mostra les miniatures de les finestres a la vora de la pantalla
++Comment[de]=Zeigt Vorschaubilder von Fenstern in einer Bildschirmecke an
++Comment[el]=Εμφανίζει στην άκρη της οθόνης την εικόνα επισκόπησης του παραθύρου
++Comment[et]=Ekraani serval näidatakse akende pisipilte
++Comment[ja]=ウィンドウのサムネイルをスクリーンの端に表示します
++Comment[nb]=Viser vinduets minibilde ved kanten av skjermen
++Comment[nds]=Wiest Finster-Vöransichten an de Schirmkant
++Comment[pt]=Mostra a miniatura da janela do extremo do ecrã
++Comment[pt_BR]=Mostra miniatura da janela na margem da tela
++Comment[sv]=Visar miniatyrbilder för fönster vid skärmkanten
++Comment[x-test]=xxShows window's thumbnail at the edge of the screenxx
++Comment[zh_CN]=在屏幕边缘显示窗口的缩略图
++Comment[zh_TW]=在螢幕的邊緣顯示視窗縮圖
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_thumbnailaside
+--- a/kwin/effects/magnifier.desktop
++++ b/kwin/effects/magnifier.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Magnifier
+ Name[be]=Павелічальная лупа
+ Name[ca]=Lupa
+ Name[csb]=Zwikszanié
+ Name[de]=Lupe
+ Name[el]=Μεγεθυντικός φακός
++Name[eo]=Pligrandigilo
+ Name[es]=Lupa
+ Name[et]=Suurendaja
+ Name[fa]=ذره‌بین
+@@ -34,6 +34,7 @@
+ Icon=preferences-system-windows-effect-magnifier
+ Comment=Magnifies the part of the screen that is under the mouse
+ Comment[bg]=Увеличава частта от екрана под мишката
++Comment[ca]=Amplia la part de la pantalla que està sota el ratolí
+ Comment[de]=Vergrößert den Arbeitsflächenbereich unter der Maus
+ Comment[el]=Μεγέθυνση του τμήματος της οθόνη κάτω από το ποντίκι
+ Comment[es]=Amplía la parte de la pantalla que esté bajo el ratón
+@@ -60,7 +61,7 @@
+ Comment[zh_TW]=將滑鼠底下的部份視窗放大
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_magnifier
+--- a/kwin/effects/presentwindows.cpp
++++ b/kwin/effects/presentwindows.cpp
+@@ -413,7 +413,7 @@
+     int rows = windowlist.count() / 4 + 1;
+     int cols = windowlist.count() / rows + windowlist.count() % rows;
+     // Get rect which we can use on current desktop. This excludes e.g. panels
+-    QRect placementRect = effects->clientArea( PlacementArea, QPoint( 0, 0 ), 0 );
++    QRect placementRect = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+     // Size of one cell
+     int cellwidth = placementRect.width() / cols;
+     int cellheight = placementRect.height() / rows;
+@@ -459,7 +459,7 @@
+ void PresentWindowsEffect::calculateWindowTransformationsKompose(EffectWindowList windowlist)
+     {
+      // Get rect which we can use on current desktop. This excludes e.g. panels
+-    QRect availRect = effects->clientArea( PlacementArea, QPoint( 0, 0 ), effects->currentDesktop());
++    QRect availRect = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+ 
+     // Following code is taken from Kompose 0.5.4, src/komposelayout.cpp
+ 
+@@ -597,7 +597,7 @@
+ 
+ void PresentWindowsEffect::calculateWindowTransformationsClosest(EffectWindowList windowlist)
+     {
+-    QRect area = effects->clientArea( PlacementArea, QPoint( 0, 0 ), effects->currentDesktop());
++    QRect area = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+     int columns = int( ceil( sqrt( windowlist.count())));
+     int rows = int( ceil( windowlist.count() / double( columns )));
+     foreach( EffectWindow* w, windowlist )
+@@ -726,7 +726,7 @@
+ 
+ bool PresentWindowsEffect::canRearrangeClosest(EffectWindowList windowlist)
+     {
+-    QRect area = effects->clientArea( PlacementArea, QPoint( 0, 0 ), effects->currentDesktop());
++    QRect area = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+     int columns = int( ceil( sqrt( windowlist.count())));
+     int rows = int( ceil( windowlist.count() / double( columns )));
+     int old_columns = int( ceil( sqrt( mWindowData.count())));
+@@ -817,7 +817,7 @@
+     QRect rect;
+     QString translatedString = i18n( "Filter:\n%1", windowFilter );
+     rect.setSize( fm.size( 0, translatedString ));
+-    QRect area = effects->clientArea( PlacementArea, QPoint( 0, 0 ), effects->currentDesktop());
++    QRect area = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+     // Create image
+     QImage im( rect.width(), rect.height(), QImage::Format_ARGB32 );
+     im.fill( Qt::transparent );
+--- a/kwin/effects/shadow_config.desktop
++++ b/kwin/effects/shadow_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_shadow
+@@ -14,6 +13,7 @@
+ Name[csb]=Ceniô
+ Name[de]=Schatten
+ Name[el]=Σκιά
++Name[eo]=Ombro
+ Name[es]=Sombra
+ Name[et]=Vari
+ Name[fa]=سایه
+--- a/kwin/effects/thumbnailaside_config.desktop
++++ b/kwin/effects/thumbnailaside_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_thumbnailaside
+@@ -12,6 +11,7 @@
+ Name[ca]=Miniatures de costat
+ Name[de]=Seitliche Vorschaubilder
+ Name[el]=Εικόνα επισκόπησης στο πλάι
++Name[eo]=Bildetojn flanke
+ Name[et]=Pisipildid kõrval
+ Name[he]=דוגמית בצד
+ Name[ja]=サムネイルをわきに表示
+--- a/kwin/effects/lookingglass_config.desktop
++++ b/kwin/effects/lookingglass_config.desktop
+@@ -1,13 +1,13 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_lookingglass
+ X-KDE-PluginKeyword=lookingglass
+ 
+ Name=Looking Glass
++Name[ca]=Aparença de vidre
+ Name[es]=Espejo
+ Name[et]=Suurendusklaas
+ Name[he]=מראה
+--- a/kwin/effects/sharpen_config.desktop
++++ b/kwin/effects/sharpen_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_sharpen
+@@ -12,6 +11,7 @@
+ Name[ca]=Aguditza
+ Name[de]=Schärfen
+ Name[el]=Όξυνση
++Name[eo]=Akrigi
+ Name[et]=Teravdus
+ Name[fa]=تیز کردن
+ Name[he]=חדד
+--- a/kwin/effects/diminactive_config.ui
++++ b/kwin/effects/diminactive_config.ui
+@@ -9,9 +9,6 @@
+     <height>200</height>
+    </rect>
+   </property>
+-  <property name="windowTitle" >
+-   <string>Form</string>
+-  </property>
+   <layout class="QVBoxLayout" >
+    <item>
+     <layout class="QHBoxLayout" >
+--- a/kwin/effects/magnifier_config.desktop
++++ b/kwin/effects/magnifier_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_magnifier
+@@ -13,6 +12,7 @@
+ Name[csb]=Zwikszanié
+ Name[de]=Lupe
+ Name[el]=Μεγεθυντικός φακός
++Name[eo]=Pligrandigilo
+ Name[es]=Lupa
+ Name[et]=Suurendaja
+ Name[fa]=ذره‌بین
+--- a/kwin/effects/mousemark_config.desktop
++++ b/kwin/effects/mousemark_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_mousemark
+@@ -14,6 +13,7 @@
+ Name[csb]=Merk mëszë
+ Name[de]=Mausspur
+ Name[el]=Σήμανση ποντικιού
++Name[eo]=Musmarko
+ Name[es]=Marcación con el ratón
+ Name[et]=Hiirejälg
+ Name[fa]=نشان موشی
+--- a/kwin/effects/videorecord_config.desktop
++++ b/kwin/effects/videorecord_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_videorecord
+ X-KDE-ParentComponents=kwin4_effect_videorecord
+@@ -15,6 +14,7 @@
+ Name[csb]=Nagranié wideò
+ Name[de]=Video-Aufnahme
+ Name[el]=Εγγραφή βίντεο
++Name[eo]=Videofilmo
+ Name[es]=Grabación de vídeo
+ Name[et]=Videosalvestus
+ Name[fa]=ضبط ویدیو
+--- a/kwin/effects/invert_config.desktop
++++ b/kwin/effects/invert_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_invert
+@@ -13,6 +12,7 @@
+ Name[ca]=Inverteix
+ Name[de]=Invertieren
+ Name[el]=Αντιστροφή
++Name[eo]=Renversi
+ Name[es]=Invertir
+ Name[et]=Teistpidi
+ Name[fa]=وارونه
+--- a/kwin/effects/scalein.desktop
++++ b/kwin/effects/scalein.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Scale In
+ Name[bg]=Увеличаване
+ Name[ca]=Apropa
+ Name[de]=Hineinzoomen
+ Name[el]=Εστίαση
++Name[eo]=Enskali
+ Name[et]=Skaleerimine
+ Name[fa]=مقیاس در
+ Name[he]=התקרב
+@@ -16,7 +16,7 @@
+ Name[ne]=भित्री मापन गर्नुहोस्
+ Name[nl]=Inschalen
+ Name[nn]=Skaler inn
+-Name[pa]=ਸਕੇਲ ਕਰੋ
++Name[pa]=ਸਕੇਲ ਇਨ
+ Name[pt]=Escala
+ Name[pt_BR]=Dimensionar
+ Name[sr]=Увећана размера
+@@ -28,9 +28,22 @@
+ Name[zh_TW]=縮放
+ Icon=preferences-system-windows-effect-scale-in
+ Comment=Animates appearing of windows
++Comment[ca]=Anima l'aparició de finestres
++Comment[de]=Animiert das Erscheinen von Fenstern
++Comment[el]=Κίνηση στα παράθυρα που εμφανίζονται
++Comment[et]=Animeerib akende ilmumise
++Comment[ja]=ウィンドウの出現をアニメーション化します
++Comment[nb]=Animasjon av vinduer som dukker opp
++Comment[nds]=Animeert dat Opduken vun Finstern
++Comment[pt]=Anima a aparição das janelas
++Comment[pt_BR]=Anima a aparição das janelas
++Comment[sv]=Animerar visning av fönster
++Comment[x-test]=xxAnimates appearing of windowsxx
++Comment[zh_CN]=窗口的动画出现
++Comment[zh_TW]=動畫顯示視窗
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_scalein
+--- a/kwin/effects/minimizeanimation.desktop
++++ b/kwin/effects/minimizeanimation.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Minimize Animation
+ Name[be]=Анімацыя змяншэння
+ Name[bg]=Минимизиране на анимацията
+@@ -7,6 +6,7 @@
+ Name[csb]=Minimalizëjë animacëjã
+ Name[de]=Minimieren-Animation
+ Name[el]=Κίνηση ελαχιστοποίησης
++Name[eo]=Minimumigi animacion
+ Name[es]=Animación de minimización
+ Name[et]=Minimeerimise animatsioon
+ Name[fa]=پویانمایی کمینه‌سازی
+@@ -19,7 +19,7 @@
+ Name[ne]=एनिमेसन सानो पार्नुहोस्
+ Name[nl]=Minimaliseeranimatie
+ Name[nn]=Minimeringsanimasjon
+-Name[pa]=ਘੱਟੋ-ਘੱਟ ਸਜੀਵਤਾ
++Name[pa]=ਘੱਟੋ-ਘੱਟ ਐਨੀਮੇਸ਼ਨ
+ Name[pt]=Animação da Minimização
+ Name[pt_BR]=Animação de Minimização
+ Name[sr]=Анимација минимизовања
+@@ -33,6 +33,7 @@
+ Icon=preferences-system-windows-effect-minimize-animation
+ Comment=Animates minimizing of windows
+ Comment[bg]=Анимирана минимизация на прозорците
++Comment[ca]=Anima la minimització de les finestres
+ Comment[cs]=Animuje minimalizaci okne
+ Comment[de]=Animiert den Minimieren-Vorgang von Fenstern
+ Comment[el]=Κίνηση στα παράθυρα που ελαχιστοποιούνται
+@@ -59,7 +60,7 @@
+ Comment[zh_TW]=動畫最小化視窗
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_minimizeanimation
+--- a/kwin/effects/diminactive_config.desktop
++++ b/kwin/effects/diminactive_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_diminactive
+--- a/kwin/effects/maketransparent_config.desktop
++++ b/kwin/effects/maketransparent_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_maketransparent
+@@ -35,6 +34,7 @@
+ Name[ne]=पारभासकता
+ Name[nl]=Transparatie
+ Name[nn]=Gjennomsikt
++Name[pa]=ਬਲੌਰੀ (ਟਰੈਨਜ਼ਲੂਸਨਟ)
+ Name[pl]=Przezroczystość
+ Name[pt]=Translucidez
+ Name[pt_BR]=Transparência
+--- a/kwin/effects/mousemark.desktop
++++ b/kwin/effects/mousemark.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Mouse Mark
+ Name[be]=Адметка мышы
+ Name[bg]=Чертане с мишка
+@@ -7,6 +6,7 @@
+ Name[csb]=Merk mëszë
+ Name[de]=Mausspur
+ Name[el]=Σήμανση ποντικιού
++Name[eo]=Musmarko
+ Name[es]=Marcación con el ratón
+ Name[et]=Hiirejälg
+ Name[fa]=نشان موشی
+@@ -32,6 +32,7 @@
+ Icon=preferences-system-windows-effect-mouse-mark
+ Comment=Let's you draw lines onto your desktop
+ Comment[bg]=Можете да чертаете линии на работния плот
++Comment[ca]=Us permet dibuixar línies a l'escriptori
+ Comment[de]=Zeichnet Mausspuren auf der Arbeitsfläche
+ Comment[el]=Σας επιτρέπει τη σχεδίαση γραμμών στην επιφάνεια εργασίας σας
+ Comment[es]=Le deja dibujar líneas en el escritorio
+@@ -59,7 +60,7 @@
+ Comment[zh_TW]=讓您在您的桌面上畫線
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_mousemark
+--- a/kwin/effects/dialogparent.desktop
++++ b/kwin/effects/dialogparent.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Dialog Parent
+ Name[be]=Бацькоўскае акно
+ Name[bg]=Редактор на диалози
+ Name[ca]=Diàleg principal
+ Name[de]=Eltern-Dialog
+ Name[el]=Γονικός διάλογος
++Name[eo]=Dialoga parenco
+ Name[es]=Padre de la ventana
+ Name[et]=Dialoogi eellane
+ Name[fa]=پدر محاوره
+@@ -37,6 +37,7 @@
+ Comment[ca]=Enfosqueix les finestres mares dels diàlegs actius
+ Comment[de]=Dunkelt den Eltern-Dialog des aktiven Fensters ab
+ Comment[el]=Σκίαση γονικών παραθύρων των ενεργών διαλόγων
++Comment[eo]=Malheligas parencajn fenestrojn de dialogoj
+ Comment[et]=Tumendab aktiivsete dialoogide eellasaknad
+ Comment[fa]=پنجره‌های پدر محاوره‌های فعال را تیره می‌کند
+ Comment[he]=מחשיך חלונות־אב של תיבות דו־שיח פעילות
+@@ -62,7 +63,7 @@
+ Comment[zh_TW]=將目前對話框的父視窗變暗
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_dialogparent
+--- a/kwin/effects/trackmouse.desktop
++++ b/kwin/effects/trackmouse.desktop
+@@ -1,15 +1,16 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Track Mouse
+ Name[be]=Адследжваць мыш
+ Name[bg]=Мишка
++Name[ca]=Seguiment del ratolí
+ Name[de]=Mausspur
+ Name[el]=Ανίχνευση ποντικιού
++Name[eo]=Spuri muson
+ Name[es]=Seguir el ratón
+ Name[et]=Hiire jälgimine
+ Name[fa]=ردگیری موشی
+ Name[he]=עקבות עכבר
+-Name[ja]=トラックマウス
++Name[ja]=マウス追跡
+ Name[kk]=Тышқандың ізі
+ Name[km]=ដាន​កណ្តុរ​
+ Name[ko]=마우스 추적
+@@ -23,16 +24,29 @@
+ Name[pt_BR]=Seguir o Mouse
+ Name[sr]=Праћење миша
+ Name[sr at latin]=Praćenje miša
+-Name[sv]=Musspår
++Name[sv]=Följ musen
+ Name[vi]=Vết chuột
+ Name[x-test]=xxTrack Mousexx
+ Name[zh_CN]=跟踪鼠标
+ Name[zh_TW]=追蹤滑鼠
+ Icon=preferences-system-windows-effect-mouse-track
+ Comment=Shows mouse cursor's position when activated
++Comment[ca]=Mostra la posició del cursor del ratolí quan està activat
++Comment[de]=Zeigt bei der Aktivierung die Position des Mauszeigers an
++Comment[el]=Όταν ενεργοποιηθεί, εμφανίζει τη θέση του δρομέα
++Comment[et]=Aktiveerimisel näidatakse hiirekursori asukohta
++Comment[ja]=マウスカーソルの位置を表示します
++Comment[nb]=Viser musepekerens posisjon når dette er slått på
++Comment[nds]=Wiest de Steed vun den Muuswieser, wenn anmaakt
++Comment[pt]=Mostra a posição do cursor do rato quando activada
++Comment[pt_BR]=Mostra a posição do cursor do mouse quando ativada
++Comment[sv]=Visar muspekarens position om aktiverad
++Comment[x-test]=xxShows mouse cursor's position when activatedxx
++Comment[zh_CN]=激活时显示鼠标指针位置
++Comment[zh_TW]=啟動時顯示滑鼠游標的位置
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_trackmouse
+--- a/kwin/effects/desktopgrid.desktop
++++ b/kwin/effects/desktopgrid.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Desktop Grid
+ Name[ar]=شبكية سطح المكتب
+ Name[be]=Сетка на працоўны стол
+@@ -7,6 +6,7 @@
+ Name[ca]=Graella de l'escriptori
+ Name[de]=Arbeitsflächen-Raster
+ Name[el]=Πλέγμα επιφάνειας εργασίας
++Name[eo]=Labortabla krado
+ Name[es]=Rejilla del escritorio
+ Name[et]=Töölauavõrgustik
+ Name[fa]=توری رومیزی
+@@ -35,6 +35,7 @@
+ Icon=preferences-system-windows-effect-desktop-grid
+ Comment=Desktop switcher that lays the desktops out in a grid
+ Comment[bg]=Превключване между работните плотове в мрежа
++Comment[ca]=Commutador d'escriptori que disposa els escriptoris en una graella
+ Comment[de]=Arbeitsflächenumschaltung (Fensteranordnung in einem Raster)
+ Comment[el]=Εναλλαγή επιφάνειας εργασίας με τοποθέτηση των επιφανειών σε έναν κάνναβο
+ Comment[et]=Töölauavahetaja, mis näitab töölaudu võrgustikus
+@@ -61,7 +62,7 @@
+ Comment[zh_TW]=將桌面以格狀佈局呈現的桌面切換器
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_desktopgrid
+--- a/kwin/effects/login.cpp
++++ b/kwin/effects/login.cpp
+@@ -54,21 +54,8 @@
+ 
+ void LoginEffect::paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data )
+     {
+-    if( login_window != NULL )
+-        {
+-        if( progress == 1 )
+-            {
+-            if( w != login_window )
+-                data.brightness = 0; // not visible
+-            }
+-        else
+-            {
+-            if( w == login_window )
+-                data.opacity *= ( 1 - progress );
+-            else
+-                data.brightness *= progress;
+-            }
+-        }
++    if( w == login_window && progress != 1 )
++        data.opacity *= ( 1 - progress );
+     effects->paintWindow( w, mask, region, data );
+     }
+ 
+@@ -101,6 +88,7 @@
+ 
+ bool LoginEffect::isLoginSplash( EffectWindow* w )
+     { // TODO there should be probably a better way (window type?)
++    // see also fade effect
+     if( w->windowClass() == "ksplashx ksplashx"
+         || w->windowClass() == "ksplashsimple ksplashsimple" )
+         {
+--- a/kwin/effects/lookingglass.desktop
++++ b/kwin/effects/lookingglass.desktop
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Looking Glass
++Name[ca]=Aparença de vidre
+ Name[es]=Espejo
+ Name[et]=Suurendusklaas
+ Name[he]=מראה
+@@ -20,6 +20,7 @@
+ Name[zh_TW]=鏡射
+ Comment=Looking Glass enhanced magnifier
+ Comment[bg]=Лупа
++Comment[ca]=Ampliació millorada amb aparença de vidre
+ Comment[de]=Looking Glass erweiterte Lupe
+ Comment[el]=Βελτιωμένος μεγεθυντικός φακός Looking Glass
+ Comment[es]=Lupa de espejo mejorada
+@@ -43,7 +44,7 @@
+ Icon=preferences-system-windows-effect-lookingglass
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_lookingglass
+--- a/kwin/effects/fade.desktop
++++ b/kwin/effects/fade.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Fade
+ Name[be]=Павольнае знікненне
+ Name[ca]=Apagat gradual
+@@ -30,6 +29,7 @@
+ Icon=preferences-system-windows-effect-fade
+ Comment=Makes windows smoothly fade in/out when they're shown or hidden
+ Comment[bg]=Постепенно избледняване при показване/скриване на прозорците
++Comment[ca]=Fa que les finestres s'encenguin/apaguin de manera gradual quan es mostren o s'oculten
+ Comment[de]=Blendet Fenster beim Öffnen/Schließen langsam ein bzw. aus.
+ Comment[el]=Κάνει τα παράθυρα να εμφανίζονται/αποκρύπτονται ομαλά
+ Comment[es]=Hace que las ventanas aparezcan suavemente o se desvanezcan al mostrarlas u ocultarlas
+@@ -57,7 +57,7 @@
+ Comment[zh_TW]=顯示或隱藏視窗時以淡入/淡出方式呈現
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Philip Falkner
+ X-KDE-PluginInfo-Email=philip.falkner at gmail.com
+ X-KDE-PluginInfo-Name=kwin4_effect_fade
+--- a/kwin/effects/thumbnailaside.cpp
++++ b/kwin/effects/thumbnailaside.cpp
+@@ -34,6 +34,7 @@
+     maxwidth = conf.readEntry("MaxWidth", 200);
+     spacing = conf.readEntry("Spacing", 10);
+     opacity = conf.readEntry("Opacity", 50) / 100.0;
++    screen = conf.readEntry("Screen",-1); // Xinerama screen TODO add gui option
+     }
+ 
+ void ThumbnailAsideEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data )
+@@ -131,7 +132,7 @@
+         mwidth = qMax( mwidth, d.window->width());
+         pos[ d.index ] = d.window->height();
+         }
+-    QRect area = effects->clientArea( WorkArea, QPoint(), effects->currentDesktop());
++    QRect area = effects->clientArea( WorkArea, screen, effects->currentDesktop());
+     double scale = area.height() / double( height );
+     scale = qMin( scale, maxwidth / double( mwidth )); // don't be wider than maxwidth pixels
+     int add = 0;
+--- a/kwin/effects/login.desktop
++++ b/kwin/effects/login.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Login
+ Name[be]=Уваход
+ Name[ca]=Entrada
+ Name[de]=Anmeldung
+ Name[el]=Σύνδεση
++Name[eo]=Ensaluto
+ Name[et]=Sisselogimine
+ Name[ga]=Logáil Isteach
+ Name[hu]=Bejelentkezés
+@@ -16,6 +16,7 @@
+ Name[ne]=लगइन गर्नुहोस्
+ Name[nl]=Aanmelden
+ Name[nn]=Innlogging
++Name[pa]=ਲਾਗਇਨ
+ Name[pt]=Arranque
+ Name[sl]=Prijava
+ Name[sr]=Пријава
+@@ -27,9 +28,23 @@
+ Name[zh_TW]=登入
+ Icon=preferences-system-windows-effect-login
+ Comment=Login visual effect
++Comment[ca]=Efecte visual en iniciar la sessió
++Comment[de]=Visueller Anmeldeeffekt
++Comment[el]=Οπτικό εφέ σύνδεσης
++Comment[et]=Sisselogimise visuaalne efekt
++Comment[ja]=ログイン時の視覚効果
++Comment[nb]=Visuell effekt for innlogging
++Comment[nds]=Effekt bi't Anmellen
++Comment[pa]=ਲਾਗਇਨ ਦਿੱਖ ਪਰਭਾਵ
++Comment[pt]=Efeito visual do início de sessão
++Comment[pt_BR]=Efeito visual do início de sessão
++Comment[sv]=Visuell effekt vid inloggning
++Comment[x-test]=xxLogin visual effectxx
++Comment[zh_CN]=登录视觉效果
++Comment[zh_TW]=登入視覺效果
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Lubos Lunak
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_login
+--- a/kwin/effects/logout.desktop
++++ b/kwin/effects/logout.desktop
+@@ -1,10 +1,10 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Logout
+ Name[be]=Выйсці
+ Name[ca]=Sortida
+ Name[de]=Abmeldung
+ Name[el]=Αποσύνδεση
++Name[eo]=Elsaluto
+ Name[et]=Väljalogimine
+ Name[ga]=Logáil Amach
+ Name[hu]=Elrendezés
+@@ -16,6 +16,7 @@
+ Name[ne]=लगआउट
+ Name[nl]=Afmelden
+ Name[nn]=Utlogging
++Name[pa]=ਲਾਗਆਉਟ
+ Name[pt]=Encerramento
+ Name[sl]=Odjava
+ Name[sr]=Одјава
+@@ -23,13 +24,27 @@
+ Name[sv]=Utloggning
+ Name[th]=ล็อกเอาท์
+ Name[x-test]=xxLogoutxx
+-Name[zh_CN]=布局
++Name[zh_CN]=注销
+ Name[zh_TW]=登出
+ Icon=preferences-system-windows-effect-logout
+ Comment=Logout visual effect
++Comment[ca]=Efecte visual en finalitzar la sessió
++Comment[de]=Visueller Abmeldeeffekt
++Comment[el]=Οπτικό εφέ αποσύνδεσης
++Comment[et]=Väljalogimise visuaalne efekt
++Comment[ja]=ログアウト時の視覚効果
++Comment[nb]=Visuell effekt for utlogging
++Comment[nds]=Effekt bi't Afmellen
++Comment[pa]=ਲਾਗਆਉਟ ਦਿੱਖ ਪਰਭਾਵ
++Comment[pt]=Efeito visual do fim de sessão
++Comment[pt_BR]=Efeito visual do fim de sessão
++Comment[sv]=Visuell effekt vid utloggning
++Comment[x-test]=xxLogout visual effectxx
++Comment[zh_CN]=注销视觉效果
++Comment[zh_TW]=登出視覺效果
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Lubos Lunak
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_logout
+--- a/kwin/effects/presentwindows_config.desktop
++++ b/kwin/effects/presentwindows_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_presentwindows
+@@ -15,6 +14,7 @@
+ Name[csb]=Prezentëjë òkna
+ Name[de]=Fenster zeigen
+ Name[el]=Παρουσίαση παραθύρων
++Name[eo]=Prezenti fenestrojn
+ Name[et]=Olemasolevad aknad
+ Name[fa]=پنجره‌های موجود
+ Name[he]=הצג חלונות
+@@ -26,7 +26,7 @@
+ Name[ne]=हालको सञ्झ्याल
+ Name[nl]=Vensters presenteren
+ Name[nn]=Presenter vindauge
+-Name[pa]=ਮੌਜੂਦਾ ਝਰੋਖੇ
++Name[pa]=ਮੌਜੂਦਾ ਵਿੰਡੋਜ਼
+ Name[pt]=Apresentar as Janelas
+ Name[pt_BR]=Apresentar Janelas
+ Name[sl]=Predstavi okna
+--- a/kwin/effects/shadow.desktop
++++ b/kwin/effects/shadow.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Shadow
+ Name[be]=Цень
+ Name[bg]=Сянка
+@@ -7,6 +6,7 @@
+ Name[csb]=Ceniô
+ Name[de]=Schatten
+ Name[el]=Σκιά
++Name[eo]=Ombro
+ Name[es]=Sombra
+ Name[et]=Vari
+ Name[fa]=سایه
+@@ -36,6 +36,7 @@
+ Comment=Adds shadow under the windows
+ Comment[ar]=يضيف الظل تحت النوافذ
+ Comment[bg]=Добавяне на сянка под прозорците
++Comment[ca]=Afegeix ombra a sota les finestres
+ Comment[cs]=Přidává stíny pod okna
+ Comment[csb]=Dodôwô ceniô pòd òknama
+ Comment[de]=Lässt Fenster einen Schatten werfen
+@@ -53,7 +54,7 @@
+ Comment[ne]=सञ्झ्याल मुनि छायाँ थप्दछ
+ Comment[nl]=Voegt een schaduw toe onder de vensters
+ Comment[nn]=Legg skugge under vindauge
+-Comment[pa]=ਝਰੋਖਾ ਹੇਠ ਛਾਂ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।
++Comment[pa]=ਵਿੰਡੋ ਹੇਠ ਛਾਂ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।
+ Comment[pt]=Adiciona uma sombra sob as janelas
+ Comment[pt_BR]=Adiciona sombra sob as janelas
+ Comment[sl]=Doda senco pod okna
+@@ -66,7 +67,7 @@
+ Comment[zh_TW]=在視窗底下加上陰影
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_shadow
+--- a/kwin/effects/diminactive.desktop
++++ b/kwin/effects/diminactive.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Dim Inactive
+ Name[bg]=Замъгляване на неактивния
+ Name[ca]=Apaga les inactives
+@@ -58,7 +57,7 @@
+ Comment[zh_TW]=將不使用的視窗變暗
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_diminactive
+--- a/kwin/effects/videorecord.desktop
++++ b/kwin/effects/videorecord.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Video Record
+ Name[ar]=تسجيل المرئيات
+ Name[be]=Відэазапіс
+@@ -8,6 +7,7 @@
+ Name[csb]=Nagranié wideò
+ Name[de]=Video-Aufnahme
+ Name[el]=Εγγραφή βίντεο
++Name[eo]=Videofilmo
+ Name[es]=Grabación de vídeo
+ Name[et]=Videosalvestus
+ Name[fa]=ضبط ویدیو
+@@ -36,6 +36,7 @@
+ Comment=Lets you record videos of your desktop
+ Comment[be]=Дазваляе вам запісваць відэа з вашага экрана
+ Comment[bg]=Запис на видео върху работния плот
++Comment[ca]=Us permet gravar vídeos de l'escriptori
+ Comment[de]=Zeichnet Videos von der Arbeitsfläche auf
+ Comment[el]=Επιτρέπει την εγγραφή βίντεο της επιφάνειας εργασίας σας
+ Comment[es]=Le permite grabar vídeos de su escritorio
+@@ -64,7 +65,7 @@
+ Comment[zh_TW]=讓您錄下您桌面的影像
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_videorecord
+--- a/kwin/effects/minimizeanimation.cpp
++++ b/kwin/effects/minimizeanimation.cpp
+@@ -24,6 +24,7 @@
+ 
+ void MinimizeAnimationEffect::prePaintScreen( ScreenPrePaintData& data, int time )
+     {
++    mActiveAnimations = mAnimationProgress.count();
+     if( mActiveAnimations > 0 )
+         // We need to mark the screen windows as transformed. Otherwise the
+         //  whole screen won't be repainted, resulting in artefacts
+@@ -58,9 +59,6 @@
+             data.setTransformed();
+             w->enablePainting( EffectWindow::PAINT_DISABLED_BY_MINIMIZE );
+             }
+-        else
+-            // Animation just finished
+-            mActiveAnimations--;
+         }
+ 
+     effects->prePaintWindow( w, data, time );
+@@ -94,6 +92,7 @@
+     if( mActiveAnimations > 0 )
+         // Repaint the workspace so that everything would be repainted next time
+         effects->addRepaintFull();
++    mActiveAnimations = mAnimationProgress.count();
+ 
+     // Call the next effect.
+     effects->postPaintScreen();
+@@ -104,7 +103,6 @@
+     if( !mAnimationProgress.contains(w) )
+         {
+         mAnimationProgress[w] = 0.0f;
+-        mActiveAnimations++;
+         }
+     }
+ 
+@@ -113,7 +111,6 @@
+     if( !mAnimationProgress.contains(w) )
+         {
+         mAnimationProgress[w] = 1.0f;
+-        mActiveAnimations++;
+         }
+     }
+ 
+--- a/kwin/effects/presentwindows.desktop
++++ b/kwin/effects/presentwindows.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Present Windows
+ Name[ar]=نوافذ حديثة
+ Name[be]=Існуючыя вокны
+@@ -8,6 +7,7 @@
+ Name[csb]=Prezentëjë òkna
+ Name[de]=Fenster zeigen
+ Name[el]=Παρουσίαση παραθύρων
++Name[eo]=Prezenti fenestrojn
+ Name[et]=Olemasolevad aknad
+ Name[fa]=پنجره‌های موجود
+ Name[he]=הצג חלונות
+@@ -19,7 +19,7 @@
+ Name[ne]=हालको सञ्झ्याल
+ Name[nl]=Vensters presenteren
+ Name[nn]=Presenter vindauge
+-Name[pa]=ਮੌਜੂਦਾ ਝਰੋਖੇ
++Name[pa]=ਮੌਜੂਦਾ ਵਿੰਡੋਜ਼
+ Name[pt]=Apresentar as Janelas
+ Name[pt_BR]=Apresentar Janelas
+ Name[sl]=Predstavi okna
+@@ -33,6 +33,7 @@
+ Icon=preferences-system-windows-effect-presentwindows
+ Comment=Shows all windows side-by-side
+ Comment[bg]=Показване на прозорците един до друг
++Comment[ca]=Mostra totes les finestres juntes lateralment
+ Comment[csb]=Wëskrzëni wszëtczé òkna, starna pò stranie
+ Comment[de]=Zeigt alle Fenster nebeneinander an
+ Comment[el]=Εμφάνιση όλων των παραθύρων σε παράθεση
+@@ -48,7 +49,7 @@
+ Comment[ne]=साइड-बाइ-साइड सबै सञ्झ्याल देखाउँदछ
+ Comment[nl]=Toont alle venters naast elkaar
+ Comment[nn]=Viser alle vindauge ved sidan av kvarandre
+-Comment[pa]=ਸਭ ਝਰੋਖੇ ਨਾਲ ਨਾਲ ਵੇਖਾਓ
++Comment[pa]=ਸਭ ਵਿੰਡੋ ਨਾਲ ਨਾਲ ਵੇਖਾਓ
+ Comment[pt]=Mostra todas as janelas lado-a-lado
+ Comment[pt_BR]=Mostra todas as janelas lado a lado
+ Comment[sl]=Prikaže okna drug ob drugem
+@@ -61,7 +62,7 @@
+ Comment[zh_TW]=讓所有視窗排排站
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_presentwindows
+--- a/kwin/effects/mousemark_config.ui
++++ b/kwin/effects/mousemark_config.ui
+@@ -9,9 +9,6 @@
+     <height>300</height>
+    </rect>
+   </property>
+-  <property name="windowTitle" >
+-   <string>Form</string>
+-  </property>
+   <layout class="QVBoxLayout" >
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+--- a/kwin/effects/desktopgrid.h
++++ b/kwin/effects/desktopgrid.h
+@@ -45,10 +45,11 @@
+         void paintSlide( int mask, QRegion region, const ScreenPaintData& data );
+         void paintScreenDesktop( int desktop, int mask, QRegion region, ScreenPaintData data );
+         void slideDesktopChanged( int old );
++        void setHighlightedDesktop( int desktop );
+         double progress;
+         bool activated;
+         int painting_desktop;
+-        int hover_desktop;
++        int highlighted_desktop;
+         Window input;
+         bool keyboard_grab;
+         bool was_window_move;
+--- a/kwin/effects/desktopgrid_config.desktop
++++ b/kwin/effects/desktopgrid_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_desktopgrid
+@@ -14,6 +13,7 @@
+ Name[ca]=Graella de l'escriptori
+ Name[de]=Arbeitsflächen-Raster
+ Name[el]=Πλέγμα επιφάνειας εργασίας
++Name[eo]=Labortabla krado
+ Name[es]=Rejilla del escritorio
+ Name[et]=Töölauavõrgustik
+ Name[fa]=توری رومیزی
+--- a/kwin/effects/test/demo_showpicture.desktop
++++ b/kwin/effects/test/demo_showpicture.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Demo ShowPicture
+ Name[bg]=Демо на ShowPicture
+ Name[ca]=Demostració ShowPicture
+@@ -22,7 +21,7 @@
+ Name[zh_TW]=示範_顯示圖片
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_showpicture
+--- a/kwin/effects/test/demo_liquid.desktop
++++ b/kwin/effects/test/demo_liquid.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Demo Liquid
+ Name[bg]=Демо на Liquid
+ Name[ca]=Demostració del Liquid
+@@ -25,7 +24,7 @@
+ Name[zh_TW]=示範ˍ液體
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_liquid
+--- a/kwin/effects/test/howto.desktop
++++ b/kwin/effects/test/howto.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ # Name of the effect
+ Name=Howto
+ Name[csb]=Jak to zrobic
+ Name[el]=Οδηγίες
++Name[eo]=Kielfari
+ Name[es]=Cómo
+ Name[he]=כיצד לבצע
+ Name[ja]=ハウツー
+@@ -24,7 +24,7 @@
+ 
+ # This is KWin effect
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ # Author and email of the author
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+--- a/kwin/effects/test/test_fbo.desktop
++++ b/kwin/effects/test/test_fbo.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Test_FBO
+ Name[be]=Праверка_FBO
++Name[ca]=Prova FBO
+ Name[de]=Test: FBO
+ Name[el]=Δοκιμή_FBO
+ Name[he]=בדיקת FBO
+@@ -15,7 +15,7 @@
+ Name[zh_TW]=測試_FBO
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_test_fbo
+--- a/kwin/effects/test/demo_wavywindows.desktop
++++ b/kwin/effects/test/demo_wavywindows.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Demo Wavy Windows
+ Name[be]=Хвалістыя вокны
+ Name[bg]=Демо на Wavy Windows
+@@ -29,7 +28,7 @@
+ Icon=preferences-system-windows-effect-wavywindows
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_wavywindows
+--- a/kwin/effects/test/demo_shiftworkspaceup.desktop
++++ b/kwin/effects/test/demo_shiftworkspaceup.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Demo ShiftWorkspaceUp
+ Name[bg]=Демо на ShiftWorkspaceUp
+ Name[ca]=Demostració ShiftWorkspaceUp
+@@ -22,7 +21,7 @@
+ Name[zh_TW]=示範_將工作空間上移
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_shiftworkspaceup
+--- a/kwin/effects/test/drunken.desktop
++++ b/kwin/effects/test/drunken.desktop
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Drunken
++Name[ca]=Begut
+ Name[de]=Betrunken
+ Name[el]=Κούνημα
+ Name[es]=Borracho
+@@ -26,7 +26,7 @@
+ Icon=preferences-system-windows-effect-drunken
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_drunken
+--- a/kwin/effects/test/demo_shakymove.desktop
++++ b/kwin/effects/test/demo_shakymove.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Demo Shaky Move
+ Name[bg]=Демо на Shaky Move
+ Name[ca]=Demostració de sacsejada
+@@ -25,7 +24,7 @@
+ Icon=preferences-system-windows-effect-shakymove
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_demo_shakymove
+--- a/kwin/effects/test/test_thumbnail.desktop
++++ b/kwin/effects/test/test_thumbnail.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Test_Thumbnail
+ Name[be]=Праверка_мініяцюр
++Name[ca]=Prova de miniatura
+ Name[csb]=Test_Miniaturczi
+ Name[de]=Test: Vorschaubilder
+ Name[el]=Δοκιμή εικόνας επισκόπησης
+@@ -11,6 +11,7 @@
+ Name[nds]=Test: Vöransicht
+ Name[ne]=थम्बनेल परीक्षण गर्नुहोस्
+ Name[nn]=Test_miniatyrbilete
++Name[pa]=ਥੰਮਨੇਲ ਟੈਸਟ(_T)
+ Name[sv]=Testa miniatyrbild
+ Name[vi]=Thử_hình nhỏ
+ Name[x-test]=xxTest_Thumbnailxx
+@@ -18,7 +19,7 @@
+ Name[zh_TW]=測試_縮圖
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Rivo Laks
+ X-KDE-PluginInfo-Email=rivolaks at hot.ee
+ X-KDE-PluginInfo-Name=kwin4_effect_test_thumbnail
+--- a/kwin/effects/test/flame.desktop
++++ b/kwin/effects/test/flame.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Flame
+ Name[be]=Полымя
+ Name[br]=Flamm
+ Name[ca]=Flama
+ Name[de]=Flamme
+ Name[el]=Φλόγα
++Name[eo]=Flamo
+ Name[es]=Llama
+ Name[et]=Leek
+ Name[fa]=شعله
+@@ -35,7 +35,7 @@
+ Icon=preferences-system-windows-effect-flame
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_flame
+--- a/kwin/effects/test/demo_showpicture.cpp
++++ b/kwin/effects/test/demo_showpicture.cpp
+@@ -55,7 +55,7 @@
+     if( file.isEmpty())
+         return;
+     QImage im( file );
+-    QRect area = effects->clientArea( PlacementArea, QPoint( 0, 0 ), effects->currentDesktop());
++    QRect area = effects->clientArea( PlacementArea, effects->activeScreen(), effects->currentDesktop());
+     picture = new GLTexture( im );
+     pictureRect = QRect( area.x() + ( area.width() - im.width()) / 2,
+         area.y() + ( area.height() - im.height()) / 2, im.width(), im.height());
+--- a/kwin/effects/test/test_input.desktop
++++ b/kwin/effects/test/test_input.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Test_Input
+ Name[be]=Праверка_уводу
++Name[ca]=Prova d'entrada
+ Name[csb]=Test_Wpisania
+ Name[de]=Test: Eingabe
+ Name[el]=Δοκιμή εισόδου
+@@ -10,6 +10,7 @@
+ Name[nds]=Test: Ingaav
+ Name[ne]=आगत परीक्षण गर्नुहोस्
+ Name[nn]=Test_inndata
++Name[pa]=ਇੰਪੁੱਟ ਟੈਸਟ(_I)
+ Name[sv]=Testa inmatning
+ Name[vi]=Thử_vào
+ Name[x-test]=xxTest_Inputxx
+@@ -17,7 +18,7 @@
+ Name[zh_TW]=測試_輸入
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_test_input
+--- a/kwin/effects/zoom_config.desktop
++++ b/kwin/effects/zoom_config.desktop
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kwin4_effect_builtins
+ X-KDE-ParentComponents=kwin4_effect_zoom
+--- a/kwin/effects/showpaint.desktop
++++ b/kwin/effects/showpaint.desktop
+@@ -1,14 +1,15 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Show Paint
+-Name[ca]=Mostra una imatge
++Name[ca]=Mostra la pintura
+ Name[el]=Εμφάνιση σχεδίασης
++Name[eo]=Montri farbon
+ Name[et]=Joonistatud alade näitamine
+ Name[ga]=Taispeáin Péint
+ Name[nb]=Vis opptegning
+ Name[nds]=Klöör wiesen
+ Name[ne]=रङ देखाउनुहोस्
+ Name[nn]=Vis oppteikning
++Name[pa]=ਪੇਂਟ ਵੇਖੋ
+ Name[pt]=Mostrar a Pintura
+ Name[pt_BR]=Mostrar Pintura
+ Name[sr]=Прикажи исцртавање
+@@ -18,7 +19,7 @@
+ Name[zh_CN]=显示绘图
+ Name[zh_TW]=顯示繪製
+ Comment=Shows areas painted by KWin
+-Comment[de]=Bereiche anzeigen, die von KWin gezeichnet werden
++Comment[ca]=Mostra les àrees pintades pel KWin
+ Comment[el]=Εμφάνιση σχεδιασμένων περιοχών από το KWin
+ Comment[et]=KWini joonistatud alade näitamine
+ Comment[nb]=Viser områder som KWIn tegner opp
+@@ -35,7 +36,7 @@
+ Comment[zh_TW]=顯示 KWin 繪製的區域
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_showpaint
+--- a/kwin/effects/kwineffect.desktop
++++ b/kwin/effects/kwineffect.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=KWin/Effect
+ 
+@@ -11,6 +10,7 @@
+ Comment[csb]=Efektë òknów
+ Comment[de]=KWin-Effekt
+ Comment[el]=Εφέ KWin
++Comment[eo]=KWin-efekto
+ Comment[es]=Efecto de KWin
+ Comment[et]=KWin'i efektid
+ Comment[fa]=جلوه‌های KWin
+--- a/kwin/effects/desktopgrid.cpp
++++ b/kwin/effects/desktopgrid.cpp
+@@ -70,13 +70,6 @@
+             data.mask |= PAINT_SCREEN_TRANSFORMED | PAINT_SCREEN_BACKGROUND_FIRST;
+         if( !activated && progress == 0 )
+             finish();
+-        int d = posToDesktop( cursorPos());
+-        if( d != hover_desktop )
+-            {
+-            data.paint |= desktopRect( hover_desktop, true );
+-            hover_desktop = d;
+-            data.paint |= desktopRect( hover_desktop, true );
+-            }
+         }
+     effects->prePaintScreen( data, time );
+     }
+@@ -249,7 +242,7 @@
+             data.xTranslate += window_move_pos.x() * x - ( desktop.x() + w->x());
+             data.yTranslate += window_move_pos.y() * y - ( desktop.y() + w->y());
+             }
+-        else if( painting_desktop != hover_desktop )
++        else if( painting_desktop != highlighted_desktop )
+             data.brightness *= 0.7;
+         }
+     effects->paintWindow( w, mask, region, data );    
+@@ -448,7 +441,7 @@
+     input = effects->createInputWindow( this, 0, 0, displayWidth(), displayHeight(),
+         Qt::PointingHandCursor );
+     effects->setActiveFullScreenEffect( this );
+-    hover_desktop = effects->currentDesktop();
++    setHighlightedDesktop( effects->currentDesktop());
+     }
+ 
+ void DesktopGridEffect::finish()
+@@ -461,7 +454,7 @@
+     window_move = NULL;
+     effects->destroyInputWindow( input );
+     effects->setActiveFullScreenEffect( 0 );
+-    effects->addRepaintFull(); // to get rid of hover
++    effects->addRepaintFull(); // to get rid of highlight
+     }
+ 
+ void DesktopGridEffect::windowInputMouseEvent( Window, QEvent* e )
+@@ -475,12 +468,8 @@
+         {
+         // highlight desktop under mouse
+         int d = posToDesktop( me->pos());
+-        if( d != hover_desktop )
+-            {
+-            effects->addRepaint( desktopRect( hover_desktop, true ));
+-            hover_desktop = d;
+-            effects->addRepaint( desktopRect( hover_desktop, true ));
+-            }
++        if( d != highlighted_desktop )
++            setHighlightedDesktop( d );
+         if( window_move != NULL ) // handle window moving
+             {
+             was_window_move = true;
+@@ -556,9 +545,73 @@
+ 
+ void DesktopGridEffect::grabbedKeyboardEvent( QKeyEvent* e )
+     {
+-    // TODO
++    if( e->type() == QEvent::KeyPress )
++        {
++        switch( e->key())
++            { // wrap only on autorepeat
++            case Qt::Key_Left:
++                setHighlightedDesktop( effects->desktopToLeft( highlighted_desktop,
++                    !e->isAutoRepeat()));
++                break;
++            case Qt::Key_Right:
++                setHighlightedDesktop( effects->desktopToRight( highlighted_desktop,
++                    !e->isAutoRepeat()));
++                break;
++            case Qt::Key_Up:
++                setHighlightedDesktop( effects->desktopUp( highlighted_desktop,
++                    !e->isAutoRepeat()));
++                break;
++            case Qt::Key_Down:
++                setHighlightedDesktop( effects->desktopDown( highlighted_desktop,
++                    !e->isAutoRepeat()));
++                break;
++            default:
++                break;
++            }
++        }
++    else if( e->type() == QEvent::KeyRelease )
++        {
++        int desktop = -1;
++        // switch by F<number> or just <number>
++        if( e->key() >= Qt::Key_F1 && e->key() <= Qt::Key_F35 )
++            desktop = e->key() - Qt::Key_F1 + 1;
++        else if( e->key() >= Qt::Key_0 && e->key() <= Qt::Key_9 )
++            desktop = e->key() == Qt::Key_0 ? 10 : e->key() - Qt::Key_0;
++        if( desktop != -1 )
++            {
++            if( desktop <= effects->numberOfDesktops())
++                {
++                setHighlightedDesktop( desktop );
++                effects->setCurrentDesktop( desktop );
++                setActive( false );
++                }
++            return;
++            }
++        switch( e->key())
++            {
++            case Qt::Key_Escape:
++                setActive( false );
++                return;
++            case Qt::Key_Enter:
++            case Qt::Key_Return:
++            case Qt::Key_Space:
++                effects->setCurrentDesktop( highlighted_desktop );
++                setActive( false );
++                return;
++            default:
++                break;
++            }
++        }
+     }
+ 
++void DesktopGridEffect::setHighlightedDesktop( int d )
++    {
++    if( d == highlighted_desktop || d <= 0 || d > effects->numberOfDesktops())
++        return;
++    effects->addRepaint( desktopRect( highlighted_desktop, true ));
++    highlighted_desktop = d;
++    effects->addRepaint( desktopRect( highlighted_desktop, true ));
++    }
+ 
+ } // namespace
+ 
+--- a/kwin/effects/showfps.desktop
++++ b/kwin/effects/showfps.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Show FPS
+ Name[ar]=أظهر FPS
+ Name[bg]=Показване на к/с
+@@ -40,6 +39,7 @@
+ Comment[csb]=Wëskrzënianié spòroscë òknów KDE
+ Comment[de]=Zeigt die Leistung von KWin
+ Comment[el]=Εμφάνιση επίδοσης του KWin
++Comment[eo]=KWin-rendimentvidigo
+ Comment[es]=Muestra el rendimiento de KWin
+ Comment[et]=KWin'i jõudluse näitamine
+ Comment[fa]=کارایی KWin را نشان می‌دهد
+@@ -66,7 +66,7 @@
+ Comment[zh_TW]=顯示 KWin 的效能
+ 
+ Type=Service
+-ServiceTypes=KWin/Effect
++X-KDE-ServiceTypes=KWin/Effect
+ X-KDE-PluginInfo-Author=Luboš Luňák
+ X-KDE-PluginInfo-Email=l.lunak at kde.org
+ X-KDE-PluginInfo-Name=kwin4_effect_showfps
+--- a/kwin/useractions.cpp
++++ b/kwin/useractions.cpp
+@@ -755,7 +755,7 @@
+ 
+ void Workspace::slotSwitchDesktopRight()
+     {
+-    int desktop = desktopToRight( currentDesktop());
++    int desktop = desktopToRight( currentDesktop(), options->rollOverDesktops);
+     if( desktop == currentDesktop())
+         return;
+     setCurrentDesktop( desktop );
+@@ -763,7 +763,7 @@
+ 
+ void Workspace::slotSwitchDesktopLeft()
+     {
+-    int desktop = desktopToLeft( currentDesktop());
++    int desktop = desktopToLeft( currentDesktop(), options->rollOverDesktops);
+     if( desktop == currentDesktop())
+         return;
+     setCurrentDesktop( desktop );
+@@ -771,7 +771,7 @@
+ 
+ void Workspace::slotSwitchDesktopUp()
+     {
+-    int desktop = desktopUp( currentDesktop());
++    int desktop = desktopUp( currentDesktop(), options->rollOverDesktops);
+     if( desktop == currentDesktop())
+         return;
+     setCurrentDesktop( desktop );
+@@ -779,7 +779,7 @@
+ 
+ void Workspace::slotSwitchDesktopDown()
+     {
+-    int desktop = desktopDown( currentDesktop());
++    int desktop = desktopDown( currentDesktop(), options->rollOverDesktops);
+     if( desktop == currentDesktop())
+         return;
+     setCurrentDesktop( desktop );
+@@ -1001,7 +1001,7 @@
+ 
+ void Workspace::slotWindowToDesktopRight()
+     {
+-    int d = desktopToRight( currentDesktop());
++    int d = desktopToRight( currentDesktop(), options->rollOverDesktops);
+     if( d == currentDesktop())
+         return;
+     Client* c = active_popup_client ? active_popup_client : active_client;
+@@ -1016,7 +1016,7 @@
+ 
+ void Workspace::slotWindowToDesktopLeft()
+     {
+-    int d = desktopToLeft( currentDesktop());
++    int d = desktopToLeft( currentDesktop(), options->rollOverDesktops);
+     if( d == currentDesktop())
+         return;
+     Client* c = active_popup_client ? active_popup_client : active_client;
+@@ -1031,7 +1031,7 @@
+ 
+ void Workspace::slotWindowToDesktopUp()
+     {
+-    int d = desktopUp( currentDesktop());
++    int d = desktopUp( currentDesktop(), options->rollOverDesktops);
+     if( d == currentDesktop())
+         return;
+     Client* c = active_popup_client ? active_popup_client : active_client;
+@@ -1046,7 +1046,7 @@
+ 
+ void Workspace::slotWindowToDesktopDown()
+     {
+-    int d = desktopDown( currentDesktop());
++    int d = desktopDown( currentDesktop(), options->rollOverDesktops);
+     if( d == currentDesktop())
+         return;
+     Client* c = active_popup_client ? active_popup_client : active_client;
+--- a/kwin/options.h
++++ b/kwin/options.h
+@@ -162,11 +162,6 @@
+             }
+ 
+         /**
+-         * whether we animate the shading of windows to titlebar or not
+-         */
+-        bool animateShade;
+-
+-        /**
+          * the size of the zone that triggers snapping on desktop borders
+          */
+         int borderSnapZone;
+@@ -182,16 +177,6 @@
+          */
+         bool snapOnlyWhenOverlapping;
+ 
+-        /**
+-         * whether we animate the minimization of windows or not
+-         */
+-        bool  animateMinimize;
+-
+-        /**
+-         * Animation speed (0 .. 10 )
+-        */
+-        int animateMinimizeSpeed;
+-        
+         bool showDesktopIsMinimizeAll;
+ 
+         /**
+--- a/kwin/bridge.h
++++ b/kwin/bridge.h
+@@ -49,7 +49,6 @@
+         virtual QRect geometry() const;
+         virtual QRect iconGeometry() const;
+         virtual QRegion unobscuredRegion( const QRegion& r ) const;
+-        virtual QWidget* workspaceWidget() const;
+         virtual WId windowId() const;
+         virtual void closeWindow();
+         virtual void maximize( MaximizeMode mode );
+@@ -64,7 +63,6 @@
+         virtual int currentDesktop() const;
+         virtual QWidget* initialParentWidget() const;
+         virtual Qt::WFlags initialWFlags() const;
+-        virtual void helperShowHide( bool show );
+         virtual void grabXServer( bool grab );
+     private:
+         Client* c;
+--- a/kwin/workspace.h
++++ b/kwin/workspace.h
+@@ -149,6 +149,10 @@
+         int numberOfDesktops() const;
+         void setNumberOfDesktops( int n );
+         void calcDesktopLayout(int* x, int* y, Qt::Orientation* orientation) const;
++        int desktopToRight( int desktop, bool wrap ) const;
++        int desktopToLeft( int desktop, bool wrap ) const;
++        int desktopUp( int desktop, bool wrap ) const;
++        int desktopDown( int desktop, bool wrap ) const;
+ 
+         int activeScreen() const;
+         int numScreens() const;
+@@ -156,7 +160,6 @@
+         void setActiveScreenMouse( const QPoint &mousepos );
+         QRect screenGeometry( int screen ) const;
+         int screenNumber( const QPoint &pos ) const;
+-        QWidget* desktopWidget();
+ 
+     // for TabBox
+         Client* currentTabBoxClient() const;
+@@ -492,10 +495,6 @@
+         void oneStepThroughDesktopList( bool forward );
+         bool establishTabBoxGrab();
+         void removeTabBoxGrab();
+-        int desktopToRight( int desktop ) const;
+-        int desktopToLeft( int desktop ) const;
+-        int desktopUp( int desktop ) const;
+-        int desktopDown( int desktop ) const;
+ 
+         void updateStackingOrder( bool propagate_new_clients = false );
+         void propagateClients( bool propagate_new_clients ); // called only from updateStackingOrder
+@@ -559,8 +558,6 @@
+         QWidget* active_popup;
+         Client* active_popup_client;
+ 
+-        QWidget* desktop_widget;
+-
+         void loadSessionInfo();
+         void loadWindowRules();
+         void editWindowRules( Client* c, bool whole_app );
+--- a/kwin/tools/decobenchmark/preview.cpp
++++ b/kwin/tools/decobenchmark/preview.cpp
+@@ -328,11 +328,6 @@
+     return preview->unobscuredRegion( active, r );
+     }
+ 
+-QWidget* KDecorationPreviewBridge::workspaceWidget() const
+-    {
+-    return preview;
+-    }
+-
+ WId KDecorationPreviewBridge::windowId() const
+     {
+     return 0; // no decorated window
+@@ -383,10 +378,6 @@
+     return 1;
+     }
+ 
+-void KDecorationPreviewBridge::helperShowHide( bool )
+-    {
+-    }
+-
+ void KDecorationPreviewBridge::grabXServer( bool )
+     {
+     }
+--- a/kwin/tools/decobenchmark/preview.h
++++ b/kwin/tools/decobenchmark/preview.h
+@@ -87,7 +87,6 @@
+         virtual QRect geometry() const;
+         virtual QRect iconGeometry() const;
+         virtual QRegion unobscuredRegion( const QRegion& r ) const;
+-        virtual QWidget* workspaceWidget() const;
+         virtual WId windowId() const;
+ 	virtual void closeWindow();
+ 	virtual void maximize( MaximizeMode mode );
+@@ -102,7 +101,6 @@
+         virtual int currentDesktop() const;
+         virtual QWidget* initialParentWidget() const;
+         virtual Qt::WFlags initialWFlags() const;
+-        virtual void helperShowHide( bool show );
+         virtual void grabXServer( bool grab );
+     private:
+         KDecorationPreview* preview;
+--- a/kwin/clients/PORTING
++++ /dev/null
+@@ -1,159 +0,0 @@
+-It's suggested you check sources of some KDE CVS decoration if in doubts or in need of an example.
+-Also, the API is documented in the .h header files.
+-
+-Makefile.am:
+-- Change kwin_ to kwin3_ (in LDFLAGS, LIBADD, kde_module_LTLIBRARIES, SOURCES).
+-- Make sure LDFLAGS contains $(KDE_PLUGIN) and -module .
+-- Add -lkdecorations to LIBADD.
+-- Do NOT rename the directory where the .desktop file is installed ( $(kde_datadir)/kwin/ ).
+-
+-.desktop file:
+-- Change kwin_ to kwin3_ in X-KDE-Library.
+-
+-Sources:
+-- There are no kwin/something.h includes, and don't use the KWinInternal namespace.
+-- Use QToolTip instead of KWinToolTip.
+-- Use QButton instead of KWinButton, QToolButton instead of KWinToolButton and QWidget
+-  instead of KWinWidgetButton.
+-- For tooltips, use simply QToolTip::add().
+-- Change Client* to MyClient* (or whatever is your main client class) in your MyButton.
+-- Pass parent->widget() to QButton constructor in your MyButton constructor.
+-- Make your MyClient class inherit from KDecoration instead of Client.
+-- Make MyClient constructor take KDecorationBridge* and KDecorationFactory* as arguments,
+-  and pass these arguments to KDecoration constructor.
+-- Except for data members initialization, make the constructor empty, move everything
+-  to void MyClient::init().
+-- As the first thing in init(), call createMainWidget(); if your client class took some
+-  flags such as WResizeNoErase, pass them to this function.
+-- Then, do 'widget()->installEventFilter( this );'.
+-- Implement MyClient::eventFilter() - as MyClient is now no longer QWidget, you need the event
+-  filter to call all the functions that used to be called directly. Usually, it's something
+-  like:
+-=====
+-bool MyClient::eventFilter( QObject* o, QEvent* e )
+-{
+-	if ( o != widget() )
+-		return false;
+-
+-	switch ( e->type() )
+-	{
+-		case QEvent::Resize:
+-			resizeEvent( static_cast< QResizeEvent* >( e ) );
+-			return true;
+-
+-		case QEvent::Paint:
+-			paintEvent( static_cast< QPaintEvent* >( e ) );
+-			return true;
+-
+-		case QEvent::MouseButtonDblClick:
+-			mouseDoubleClickEvent( static_cast< QMouseEvent* >( e ) );
+-			return true;
+-
+-                case QEvent::Wheel:
+-                        wheelEvent( static_cast< QWheelEvent* >( e ));
+-                        return true;
+-
+-		case QEvent::MouseButtonPress:
+-			processMousePressEvent( static_cast< QMouseEvent* >( e ) );
+-			return true;
+-
+-		case QEvent::Show:
+-			showEvent( static_cast< QShowEvent* >( e ) );
+-			return true;
+-
+-		default:
+-	    		return false;
+-	}
+-}
+-=====
+-- In MyClient, 'this' will have to be often replaced with 'widget()', pay special attention
+-  to cases where this won't cause compile error (e.g. in connect() calls, which take QObject* ).
+-- Also, many calls may need 'widget()->' prepended.
+-- Layout is created in init(), so call createLayout() directly there (if it's implemented).
+-- Remove calls to Client methods (Client::resizeEvent() and so on).
+-- Replace Options:: with KDecorationOptions:: .
+-- Replace 'options' with 'options()' in MyClient (which is KDecoration::options()), if often used
+-  outside of MyClient, you may want to create (this assumes your code is in its namespace):
+-=====
+-inline const KDecorationOptions* options() { return KDecoration::options(); }
+-=====
+-- Options for colors need 'Color' prepended (e.g. 'ColorButtonBg').
+-- Replace miniIcon() with getting the right pixmap from icon() (usually
+-    'icon().pixmap( QIcon::Small, QIcon::Normal )' ).
+-- Replace stickyChange() with desktopChange(), and test isOnAllDesktops().
+-- Replace Sticky with OnAllDestops.
+-- Replace iconify with minimize.
+-- Change activeChange(bool) to activeChange(), and use isActive() to check the state.
+-  Similar for desktopChange, captionChange(), iconChange(), maximizeChange().
+-- Replace 'contextHelp()' with 'showContextHelp()'.
+-- WindowWrapperShowEvent() is gone, simply use showEvent() filtered by the event filter if needed.
+-- Change 'animateIconifyOrDeiconify()' to 'animateMinize()', if it's empty, simply remove it.
+-  Make sure it doesn't reenter the event loop (no kapp->processEvents()).
+-- Buttons should use explicit setCursor() if they don't want cursor set by mousePosition().
+-  I.e. usually call setCursor( ArrowCursor ) in your MyButton.
+-- In the part where you insert windowWrapper() into the layout, i.e. something like
+-=====
+-    layout->addWidget( windowWrapper());
+-=====
+-  replace it with something like
+-=====
+-    if( isPreview())
+-        layout->addWidget( new QLabel( i18n( "<center><b>MyDecoration</b></center>" ), widget()));
+-    else
+-        layout->addItem( new QSpacerItem( 0, 0 ));
+-=====
+-- Implement MyClient::minimumSize().
+-- Handling maximization - to change vertical or horizontal maximalization, use e.g.
+-  'maximize( maximizeMode() ^ MaximizeVertical', to change normal maximalization, i.e. after
+-  left-clicking on the button, use
+-  'maximize( maximizeMode() == MaximizeFull ? MaximizeRestore : MaximizeFull );' (which also
+-  means that there's also no maximize() slot).
+-  Also, if your decoration button has only two visual states representing the maximalization state,
+-  it's recommended that it shows the maximized state only for MaximizeFull state.
+-- Make sure the decoration matches the window state after init() is finished, that is, that
+-  the buttons represent correctly the maximalization, on-all-desktops etc. states. As the
+-  simplest solution, you can call maximizeChange(), desktopChange(), etc. at the end
+-  of init().
+-- Use 'titlebarDblClickOperation()' for performing the application after doubleclicking
+-  the titlebar.
+-- Implement borders() returning the width of the top,left,right and bottom border. You may
+-  check values like 'maximizeMode() == MaximizeFull && !options()->moveResizeMaximizedWindows()'
+-  to check whether you can disable some borders completely.
+-  Note that your painting code must of course match these sizes.
+-- If your code uses XGrabServer() or XUnGrabServer(), replace them with (un)grabXServer().
+-- In cases where you call some function from the KDecoration API that can possibly destroy
+-  the decoration (e.g. showWindowMenu() or closeWindow()), make sure to use exists() if some more
+-  code will follow this call. Refer to showWindowMenu() documentation for an example.
+-- Create class MyFactory inheriting from KDecorationFactory, and move the code that was
+-  in 'extern "C"' to it: From init() to constructor, from deinit() to destructor, from allocate()
+-  or create() to createDecoration(). Pass the KDecorationBridge* argument and 'this' to created
+-  MyClient objects. If createDecoration() needs to know the window type (e.g. it used the tool
+-  argument), use windowType() similarly like in KDecoration, and pass it the KDecorationBridge*
+-  argument.
+-- Add something like this:
+-=====
+-extern "C"
+-{
+-	KDecorationFactory *create_factory()
+-	{
+-                return new MyNamespace::MyFactory();
+-	}
+-}
+-=====
+-- The reset handling has changed: There's no signal resetClients(), and no
+-  slotResetAllClientsDelayed(). If your MyClient has some slotReset(), make it
+-  reset( unsigned long ), where the argument is mask of things that have changed ( SettingXYZ ).
+-  If you have some global function that handles resetting, make it
+-  MyFactory::reset( unsigned long ). Try to minimize the effects of the changed things,
+-  e.g. if only the color setting has changed, doing a repaint is often enough, and there's no need
+-  to recreate the decorations. If you need to recreate the decorations, return true
+-  from MyFactory::reset(), otherwise, you may call resetDecorations() to call reset() in all
+-  MyClient instances.
+-- Implement resize() to resize the decoration to the given size
+-  (usually 'widget()->resize( s );' is enough).
+-- Review mousePosition() if it's implemented. Position constants need 'Position' prepended,
+-  e.g. Top -> PositionTop.
+-- Note that you cannot use "appdata" with KStandardDirs, as the decoration will be used
+-  also in other applications than kwin.
+-- Implement all missing pure virtual functions. For mousePosition(), you may call
+-  KDecoration::mousePosition() if it's sufficient.
+--- a/kwin/clients/laptop/laptopclient.cpp
++++ b/kwin/clients/laptop/laptopclient.cpp
+@@ -117,7 +117,7 @@
+         return;
+     pixmaps_created = true;
+ 
+-    titleHeight = QFontMetrics(options()->font(true)).height() + 2;
++    titleHeight = QFontMetrics(options()->font(true)).height();
+     if (titleHeight < handleSize) titleHeight = handleSize;
+     titleHeight &= ~1; // Make title height even
+     if (titleHeight < 14) titleHeight = 14;
+@@ -562,7 +562,7 @@
+         p.drawLine(r.right(), r.y(), r.right(), r.bottom());
+         p.drawLine(r.x(), r.bottom(), r.right(), r.bottom());
+         p.setPen(options()->color(KDecoration::ColorFont, false));
+-        p.drawText(r.x(), r.y(), r.width(), r.height()-1,
++        p.drawText(r.x(), r.y()+1, r.width(), r.height()-1,
+                    Qt::AlignCenter, caption() );
+         g = options()->palette(KDecoration::ColorFrame, true);
+         g.setCurrentColorGroup( QPalette::Active );
+@@ -646,7 +646,7 @@
+     p.drawLine(r.right(), r.y(), r.right(), r.bottom());
+     p.drawLine(r.x(), r.bottom(), r.right(), r.bottom());
+     p.setPen(options()->color(KDecoration::ColorFont, true));
+-    p.drawText(r.x(), r.y(), r.width(), r.height()-1,
++    p.drawText(r.x(), r.y()+1, r.width(), r.height()-1,
+                Qt::AlignCenter, caption() );
+     g = options()->palette(KDecoration::ColorFrame, true);
+     g.setCurrentColorGroup( QPalette::Active );
+--- a/kwin/clients/laptop/laptop.desktop
++++ b/kwin/clients/laptop/laptop.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Laptop
+ Name[af]=Draagbare rekenaar
+ Name[ar]=حاسوب محمول
+--- a/kwin/clients/test/test.desktop
++++ b/kwin/clients/test/test.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KWin test
+ Name[af]=KWin toets
+ Name[ar]=KWin اختبار
+--- a/kwin/clients/kwmtheme/kwmtheme.desktop
++++ b/kwin/clients/kwmtheme/kwmtheme.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KWM Theme
+ Name[af]=KWM Tema
+ Name[ar]=KWM سمِة
+--- a/kwin/clients/b2/b2client.cpp
++++ b/kwin/clients/b2/b2client.cpp
+@@ -1240,6 +1240,7 @@
+     } else {
+ 	*visible_bound = geom;
+     }
++#if 0
+     if (!workspaceWidget()) {
+ 	kDebug() << "workspaceWidget is null";
+     } else {
+@@ -1256,7 +1257,7 @@
+ 	    p.end();
+ 	}
+     }
+-
++#endif
+     return true;
+ }
+ 
+--- a/kwin/clients/b2/b2.desktop
++++ b/kwin/clients/b2/b2.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=B II
+ Name[sr]=Б II
+ Name[th]=ชุดตกแต่ง B II
+--- a/kwin/clients/keramik/keramik.cpp
++++ b/kwin/clients/keramik/keramik.cpp
+@@ -61,10 +61,6 @@
+ 	const int buttonSpacing    =  4;  // Spacing between the titlebar buttons
+ 	const int iconSpacing      =  5;  // Spacing between the icon and the text label
+ 
+-	// Default button layout
+-	const char default_left[]  = "M";
+-	const char default_right[] = "HIAX";
+-
+ 	// Titlebar button bitmaps
+ 	const unsigned char menu_bits[] = {
+ 	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+@@ -929,7 +925,7 @@
+ 
+ 	titleLayout->addSpacing( buttonMargin );      // Left button margin
+ 	addButtons( titleLayout, options()->customButtonPositions() ?
+-			options()->titleButtonsLeft() : QString(default_left) );
++			options()->titleButtonsLeft() : KDecorationOptions::defaultTitleButtonsLeft() );
+ 
+ 	titlebar = new QSpacerItem( 10, clientHandler->titleBarHeight(largeTitlebar)
+ 			- topSpacing, QSizePolicy::Expanding, QSizePolicy::Minimum );
+@@ -937,7 +933,7 @@
+ 
+ 	titleLayout->addSpacing( buttonSpacing );
+ 	addButtons( titleLayout, options()->customButtonPositions() ?
+-				options()->titleButtonsRight() : QString(default_right) );
++				options()->titleButtonsRight() : KDecorationOptions::defaultTitleButtonsRight() );
+ 	titleLayout->addSpacing( buttonMargin - 1 );  // Right button margin
+ 
+ 	windowLayout->addSpacing( leftBorderWidth );                // Left border
+--- a/kwin/clients/keramik/keramik.desktop
++++ b/kwin/clients/keramik/keramik.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Keramik
+ Name[cs]=Keramika
+ Name[eo]=Ceramiko
+--- a/kwin/clients/kde2/kde2.desktop
++++ b/kwin/clients/kde2/kde2.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KDE 2
+ Name[ar]=كدي 2
+ Name[fa]=KDE ۲
+--- a/kwin/clients/quartz/quartz.desktop
++++ b/kwin/clients/quartz/quartz.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Quartz
+ Name[csb]=Kwarc
+ Name[cy]=Cwarts
+--- a/kwin/clients/plastik/plastik.desktop
++++ b/kwin/clients/plastik/plastik.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=
+ Name=Plastik
+ Name[af]=Plastiek
+--- a/kwin/clients/plastik/plastikclient.cpp
++++ b/kwin/clients/plastik/plastikclient.cpp
+@@ -56,16 +56,6 @@
+     return i18n("Plastik");
+ }
+ 
+-QString PlastikClient::defaultButtonsLeft() const
+-{
+-    return "M";
+-}
+-
+-QString PlastikClient::defaultButtonsRight() const
+-{
+-    return "HIAX";
+-}
+-
+ bool PlastikClient::decorationBehaviour(DecorationBehaviour behaviour) const
+ {
+     switch (behaviour) {
+--- a/kwin/clients/plastik/plastikclient.h
++++ b/kwin/clients/plastik/plastikclient.h
+@@ -37,8 +37,6 @@
+     ~PlastikClient();
+ 
+     virtual QString visibleName() const;
+-    virtual QString defaultButtonsLeft() const;
+-    virtual QString defaultButtonsRight() const;
+     virtual bool decorationBehaviour(DecorationBehaviour behaviour) const;
+     virtual int layoutMetric(LayoutMetric lm, bool respectWindowState = true, const KCommonDecorationButton * = 0) const;
+     virtual QRegion cornerShape(WindowCorner corner);
+--- a/kwin/clients/redmond/redmond.desktop
++++ b/kwin/clients/redmond/redmond.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Redmond
+ Name[eo]=Redmondo
+ Name[fa]=ردموند
+--- a/kwin/clients/modernsystem/modernsystem.desktop
++++ b/kwin/clients/modernsystem/modernsystem.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Modern System
+ Name[af]=Moderne Stelsel
+ Name[ar]=نظام عصري
+--- a/kwin/clients/oxygen/oxygenclient.desktop
++++ b/kwin/clients/oxygen/oxygenclient.desktop
+@@ -1,8 +1,8 @@
+ # KDE Desktop Entry
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Oxygen
+ Name[csb]=Krziseń
++Name[eo]=Oksigen
+ Name[kk]=Оттегі
+ Name[km]=អុកស៊ីហ្សែន
+ Name[ne]=अक्सिजन
+--- a/kwin/clients/oxygen/oxygenclient.cpp
++++ b/kwin/clients/oxygen/oxygenclient.cpp
+@@ -68,16 +68,6 @@
+     return i18n("Oxygen");
+ }
+ 
+-QString OxygenClient::defaultButtonsLeft() const
+-{
+-    return "M";
+-}
+-
+-QString OxygenClient::defaultButtonsRight() const
+-{
+-    return "HIAX";
+-}
+-
+ void OxygenClient::init()
+ {
+     KCommonDecoration::init();
+--- a/kwin/clients/oxygen/oxygenclient.h
++++ b/kwin/clients/oxygen/oxygenclient.h
+@@ -45,8 +45,6 @@
+     virtual ~OxygenClient();
+ 
+     virtual QString visibleName() const;
+-    virtual QString defaultButtonsLeft() const;
+-    virtual QString defaultButtonsRight() const;
+     virtual KCommonDecorationButton *createButton(::ButtonType type);
+     virtual bool decorationBehaviour(DecorationBehaviour behaviour) const;
+     virtual int layoutMetric(LayoutMetric lm, bool respectWindowState = true, const KCommonDecorationButton * = 0) const;
+--- a/kwin/clients/web/web.desktop
++++ b/kwin/clients/web/web.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Web
+ Name[ar]=الشبكة
+ Name[be]=Сеціва
+--- a/kwin/kcmkwin/kwindecoration/kwindecoration.cpp
++++ b/kwin/kcmkwin/kwindecoration/kwindecoration.cpp
+@@ -472,9 +472,9 @@
+ 	cbUseCustomButtonPositions->setChecked( customPositions );
+ 	buttonPositionWidget->setEnabled( customPositions );
+ 	// Menu and onAllDesktops buttons are default on LHS
+-	buttonPositionWidget->setButtonsLeft( conf.readEntry("ButtonsOnLeft", "MS") );
++	buttonPositionWidget->setButtonsLeft( conf.readEntry("ButtonsOnLeft", KDecorationOptions::defaultTitleButtonsLeft()) );
+ 	// Help, Minimize, Maximize and Close are default on RHS
+-	buttonPositionWidget->setButtonsRight( conf.readEntry("ButtonsOnRight", "HIAX") );
++	buttonPositionWidget->setButtonsRight( conf.readEntry("ButtonsOnRight", KDecorationOptions::defaultTitleButtonsRight()) );
+ 
+         int bsize = conf.readEntry( "BorderSize", (int)BorderNormal );
+         if( bsize >= BorderTiny && bsize < BordersCount )
+@@ -555,8 +555,8 @@
+ //	decorationList->setSelected(
+ //		decorationList->findItem( i18n("KDE 2") ), true );  // KDE classic client
+ 
+-	buttonPositionWidget->setButtonsLeft("MS");
+-	buttonPositionWidget->setButtonsRight("HIAX");
++	buttonPositionWidget->setButtonsLeft(KDecorationOptions::defaultTitleButtonsLeft());
++	buttonPositionWidget->setButtonsRight(KDecorationOptions::defaultTitleButtonsRight());
+ 
+         border_size = BorderNormal;
+         checkSupportedBorderSizes();
+--- a/kwin/kcmkwin/kwindecoration/preview.cpp
++++ b/kwin/kcmkwin/kwindecoration/preview.cpp
+@@ -375,11 +375,6 @@
+     return preview->unobscuredRegion( active, r );
+     }
+ 
+-QWidget* KDecorationPreviewBridge::workspaceWidget() const
+-    {
+-    return preview;
+-    }
+-
+ WId KDecorationPreviewBridge::windowId() const
+     {
+     return 0; // no decorated window
+@@ -430,10 +425,6 @@
+     return 1;
+     }
+ 
+-void KDecorationPreviewBridge::helperShowHide( bool )
+-    {
+-    }
+-
+ void KDecorationPreviewBridge::grabXServer( bool )
+     {
+     }
+@@ -473,8 +464,8 @@
+         if (!customTitleButtonsRight.isNull() )
+             d->title_buttons_right = customTitleButtonsRight;
+     } else {
+-        d->title_buttons_left = "MS";
+-        d->title_buttons_right = "HIAX";
++        d->title_buttons_left = KDecorationOptions::defaultTitleButtonsLeft();
++        d->title_buttons_right = KDecorationOptions::defaultTitleButtonsRight();
+     }
+ 
+     return changed;
+--- a/kwin/kcmkwin/kwindecoration/preview.h
++++ b/kwin/kcmkwin/kwindecoration/preview.h
+@@ -96,7 +96,6 @@
+         virtual QRect geometry() const;
+         virtual QRect iconGeometry() const;
+         virtual QRegion unobscuredRegion( const QRegion& r ) const;
+-        virtual QWidget* workspaceWidget() const;
+         virtual WId windowId() const;
+ 	virtual void closeWindow();
+ 	virtual void maximize( MaximizeMode mode );
+@@ -111,7 +110,6 @@
+         virtual int currentDesktop() const;
+         virtual QWidget* initialParentWidget() const;
+         virtual Qt::WFlags initialWFlags() const;
+-        virtual void helperShowHide( bool show );
+         virtual void grabXServer( bool grab );
+     private:
+         KDecorationPreview* preview;
+--- a/kwin/kcmkwin/kwindecoration/kwindecoration.desktop
++++ b/kwin/kcmkwin/kwindecoration/kwindecoration.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kwindecoration
+ Icon=preferences-system-windows-action
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kwindecoration/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kwindecoration/index.html
+ 
+ X-KDE-Library=kcm_kwindecoration
+ X-KDE-ParentApp=kcontrol
+@@ -16,6 +15,7 @@
+ Name[ca]=Finestres
+ Name[de]=Fenster
+ Name[el]=Παράθυρα
++Name[eo]=Fenestroj
+ Name[et]=Aknad
+ Name[ga]=Fuinneoga
+ Name[ja]=ウィンドウ
+@@ -24,6 +24,7 @@
+ Name[ne]=सञ्झ्याल
+ Name[nl]=Vensters
+ Name[nn]=Vindauge
++Name[pa]=ਵਿੰਡੋਜ਼
+ Name[pt]=Janelas
+ Name[pt_BR]=Janelas
+ Name[sr]=Прозори
+@@ -72,7 +73,7 @@
+ Comment[ne]=सञ्झ्याल शीर्षकहरूको हेराइ र बुझाइ कन्फिगर गर्नुहोस्
+ Comment[nl]=Hier kunt u het uiterlijk en gedrag van venstertitels instellen
+ Comment[nn]=Set opp utsjånaden på vindaugstitlar
+-Comment[pa]=ਝਰੋਖਾ ਸਿਰਲੇਖਾਂ ਦੇ ਰੰਗ-ਰੂਪ ਦੀ ਸੰਰਚਨਾ
++Comment[pa]=ਵਿੰਡੋ ਟਾਇਟਲਾਂ ਦੇ ਰੰਗ-ਰੂਪ ਦੀ ਸੰਰਚਨਾ
+ Comment[pl]=Konfiguracja wyglądu i zachowania belek tytułowych okien
+ Comment[pt]=Configuração da aparência e comportamento dos títulos das janelas
+ Comment[pt_BR]=Configurar a aparência dos títulos de janelas
+@@ -95,61 +96,61 @@
+ Comment[zh_CN]=配置窗口标题的观感
+ Comment[zh_TW]=設定視窗標題列的外觀與感覺
+ 
+-Keywords=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
+-Keywords[be]=Акно,Кіраўнік,Мяжа,Стыль,Тэма,Вонкавы выгляд,Кнопкі,Апрацоўшчык,Край,Дэкарацыя,kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
+-Keywords[bg]=Keywords=прозорец, декорация, заглавие, бутони, меню, kwin, window, manager, border, style, theme, look, feel, layout, button, handle, edge, kwm, decoration
+-Keywords[ca]=kwin,finestra,gestor,vora,estil,tema,aspecte,comportament,disposició,botó,nansa,marges,kwm,decoració
+-Keywords[cs]=kwin,okno,správce,okraj,styl,motiv,vzhled,rozvržení,tlačítko,úchytka,hrana,kwm,dekorace
+-Keywords[csb]=kwin,òkno,menedżer,zberk,sztél,téma,wëzdrzatk,ùchòwanié,ùstôw,knąpa,ùchwët,rańt,kwm,dekòracëjô
+-Keywords[cy]=kwin,ffenestr,trefnydd,ymyl,arddull,thema,golwg,teimlad,haenlun,botwm,carn,kwm,addurniad
+-Keywords[da]=kwin,vindue,håndtering,kant,stil,tema,udseende,fornemmelse,layout,knap,håndtag,kant,kwm,dekoration
+-Keywords[de]=KWin,Kwm,Fenster,Manager,Rahmen,Design,Stile,Themes,Optik,Erscheinungsbild,Layout,Knöpfe,Ränder,Dekorationen
+-Keywords[el]=kwin,παράθυρο,διαχειριστής,περίγραμμα,στυλ,θέμα,εμφάνιση,αίσθηση,διάταξη,κουμπί,χειρισμός,άκρο,kwm,διακόσμηση
+-Keywords[eo]=kwin,fenestro,administrilo,rando,stilo,etoso,aspekto,konduto,aranĝo,butono,eĝo,kwm,ornamo
+-Keywords[es]=kwin,ventana,gestor,borde,estilo,tema,aspecto,comportamiento,disposición,botón,asa,esquina,kwm,decoración
+-Keywords[et]=kwin,aken,haldur,piire,stiil,teema,välimus,kasutamine,nupud,serv,kwm,dekoratsioon
+-Keywords[eu]=kwin,leihoa,kudeatzailea,ertza,estiloa,gaia,itxura,antolaketa,botoia, maneiatzailea,ertzea,kwm,dekorazioa
+-Keywords[fa]=kwin، پنجره، مدیر، لبه، سبک، چهره، ظاهر، احساس، طرح‌بندی، دکمه، گرداندن، لبه، kwm، تزئین
+-Keywords[fi]=kwin,ikkuna,ikkunaohjelma,ikkunoinnin hallintaohjelma,tausta,tyyli,teema,ulkonäkö,tuntuma,ulkoasu,painike,kahva,kulma,kwm,kehys
+-Keywords[fr]=kwin,fenêtre,gestionnaire,bordure,style,thème,apparence,ergonomie,disposition,bouton,poignée,bord,kwm,décoration
+-Keywords[fy]=kwin,window,manager,rand,stijl,theme,tema,look,uiterlijk,gedrag,feel,layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer,finster,râne,kader,styltema,uterlik,gedrach,finsterbehear
+-Keywords[ga]=kwin,fuinneog,bainisteoir,imlíne,stíl,téama,leagan amach,cnaipe,hanla,ciumhais,kwm,maisiúchán
+-Keywords[gl]=kwin,fiestra,xestor,beira,estilo,tema,apariencia,formato,botón,xestión,esquina,kwm,decoración
+-Keywords[he]=מנהל חלונות,חלונות,מנהל,גבול,מסגרת,סגנון,ערכה,ערכת נושא,מראה,תחושה,פריסה,תצוגה,כפתור,ידית,קצה,קישוט, kwin,window,manager,border,style,theme,look,feel,layout,button,handle, edge,kwm,decoration
+-Keywords[hr]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,upravljanje,obrub,stil,tema,izgled,raspored,gumb,rukovanje,rub,ukras
+-Keywords[hu]=KWin,ablak,kezelő,szegély,stílus,téma,kinézet,megjelenés,elrendezés,nyomógomb,fogantyú,perem,kwm,ablakstílus
+-Keywords[is]=kwin,gluggi,gluggastjóri,gluggar,kantar,rammi,skreyting,þema,stíll,útlit,takki,kwm,skraut
+-Keywords[it]=kwin,finestra,window manager,bordo,stile,tema,aspetto,pulsante,maniglia,bordo,kwm,decorazione
+-Keywords[ja]=kwin,ウィンドウ,マネージャ,枠,スタイル,テーマ,ルック,外観,レイアウト,ボタン,ハンドル,エッジ,kwm,装飾
+-Keywords[km]=kwin បង្អួច កម្មវិធី​គ្រប់គ្រង ស៊ុម រចនាប័ទ្ម ស្បែក មើល ស្គាល់ ប្លង់ ប៊ូតុង ការ​គ្រប់គ្រង គែម kwm ការ​តុបតែង
+-Keywords[ko]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration ,창,윈도,관리자,매니저,테두리,꼴,스타일,테마,모양새,보이기,쓰임새,느끼기 ,배치,단추
+-Keywords[lt]=kwin,window,manager,border,style,theme,look,feel,layout,buttons,handle,edge,kwm,decoration,langas,tvarkyklė,rėmelis,stilius,tema,žiūrėti,jausti,išdėstymas,mygtukai,kraštas,dekoracija
+-Keywords[lv]=kwin, logs, menedžeris, rāmis, stils, tēma, skats, gars, izkārtojums, poga, rokturis, stūris, kwm, dekorācija
+-Keywords[mk]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозорец,менаџер,граница,стил,тема,изглед,чувство,распоред,копче,рачка,раб,декорација
+-Keywords[nb]=kwin,vindu,vindusstyring,styrer,ramme,stil,tema,utseende,layout,knapp,kant,kwm,pynt,dekorasjon
+-Keywords[nds]=kwin,Finster,Finsterpleger,manager,Rahmen,Stil,Muster,look,feel,layout,Knoop,Greep,Rand,kwm,Dekoratschoon
+-Keywords[ne]=केडीई विन,सञ्झ्याल, प्रबन्धक, किनारा, शैली, विषयवस्तु, हेराइ, बुझाइ, सजावट, बटन, ह्यान्डल, छेउ,kwm, सजावट
+-Keywords[nl]=kwin,window,manager,rand,stijl,theme,thema,look,uiterlijk,gedrag,feel, layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer
+-Keywords[nn]=kwin,vindauge,kant,bord,stil,tema,utsjånad,bunad,knapp,handtak,kwm,dekorasjon
+-Keywords[pa]=kwin,handle,edge,kwm,decoration,ਝਰੋਖਾ,ਮੈਨੇਜਰ,ਹਾਸ਼ੀਆ,ਸ਼ੈਲੀ,ਸਰੂਪ,ਦਿੱਖ,ਖਾਕਾ,ਬਟਨ,ਹੈਂਡਲ,ਸਜਾਵਟ
+-Keywords[pl]=kwin,okno,menedżer,brzeg,styl,motyw,wygląd,zachowanie,układ,przycisk,uchwyt,krawędź,kwm,dekoracja
+-Keywords[pt]=kwin,janela,gestor,contorno,estilo,tema,aparência,comportamento,visual,botão,pega,extremo,kwm,decoração
+-Keywords[pt_BR]=kwin,janela,gerenciador,borda,estilo,tema,aparência,aparência,layout,botão,manipular,borda,kwm,decoração
+-Keywords[ro]=kwin,fereastră,manager,margine,stil,tematică,aspect,comportament,format,buton,kwm,decorare
+-Keywords[se]=kwin,láse,gieđahalli,ravda,stiila,fáddá,fárda,dovdu,hápmi,boallu,geavja,ravda,kwm,hearva
+-Keywords[sl]=kwin,okno,upravitelj,rob,meja,slog,stil,tema,pogled,občutek,gumb,ročaj,rob,kwm,okrasek
+-Keywords[sr]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозор,менаџер,оквир,стил,тема,изглед,дугме,ручка,декорација,ивица,оквир,К-вин,граница
+-Keywords[sr at latin]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,menadžer,okvir,stil,tema,izgled,dugme,ručka,dekoracija,ivica,okvir,KWin,granica
+-Keywords[sv]=kwin,fönster,hanterare,kant,stil,tema,utseende,känsla,layout,knapp,hantera,kant,kwm,dekoration
+-Keywords[ta]=kwin,சாளரம்,மேலாளர்,விளிம்பு,பாணி,தலைப்பு,பார்வை,உணர்தல்,உருவரை,விசை,கையாள்,முனை,kwm,அலங்கரிப்பு
+-Keywords[tr]=kwin,pencere,yönetici,kenar,stil,tema,görünüş,doku,yerleşim,düğme,tutamaç,kenar,kwm,dekorasyon
+-Keywords[uk]=kwin,вікно,менеджер,границя,стиль,тема,вигляд,поведінка,розклад,кнопка,handle,край,kwm,обрамлення
+-Keywords[uz]=kwin,kwm,безак,ойна,бошқарувчи,усул,ташқи кўриниш
+-Keywords[vi]=kwin,cửa sổ,quản lý,bờ,kiểu,sắc thái,ngoại hình,cảm nhận,sắp xếp,nút,điều khiển,cạnh,kwm,trang trí
+-Keywords[x-test]=xxkwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decorationxx
+-Keywords[xh]=kwin,window,umphathi,umda,uhlobo,umxholo wokuxoxwa,jonga,yiva,beka,iqhosha,umqheba,umda,kwm,uhombiso
+-Keywords[zh_CN]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,窗口,管理器,边框,样式,主题,观感,布局,按钮,处理,边缘,装饰
+-Keywords[zh_TW]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,視窗,管理員,邊框,風格,佈景主題,外觀,感覺,佈局,按鈕,邊緣,裝飾
++X-KDE-Keywords=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
++X-KDE-Keywords[be]=Акно,Кіраўнік,Мяжа,Стыль,Тэма,Вонкавы выгляд,Кнопкі,Апрацоўшчык,Край,Дэкарацыя,kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration
++X-KDE-Keywords[bg]=Keywords=прозорец, декорация, заглавие, бутони, меню, kwin, window, manager, border, style, theme, look, feel, layout, button, handle, edge, kwm, decoration
++X-KDE-Keywords[ca]=kwin,finestra,gestor,vora,estil,tema,aspecte,comportament,disposició,botó,nansa,marges,kwm,decoració
++X-KDE-Keywords[cs]=kwin,okno,správce,okraj,styl,motiv,vzhled,rozvržení,tlačítko,úchytka,hrana,kwm,dekorace
++X-KDE-Keywords[csb]=kwin,òkno,menedżer,zberk,sztél,téma,wëzdrzatk,ùchòwanié,ùstôw,knąpa,ùchwët,rańt,kwm,dekòracëjô
++X-KDE-Keywords[cy]=kwin,ffenestr,trefnydd,ymyl,arddull,thema,golwg,teimlad,haenlun,botwm,carn,kwm,addurniad
++X-KDE-Keywords[da]=kwin,vindue,håndtering,kant,stil,tema,udseende,fornemmelse,layout,knap,håndtag,kant,kwm,dekoration
++X-KDE-Keywords[de]=KWin,Kwm,Fenster,Manager,Rahmen,Design,Stile,Themes,Optik,Erscheinungsbild,Layout,Knöpfe,Ränder,Dekorationen
++X-KDE-Keywords[el]=kwin,παράθυρο,διαχειριστής,περίγραμμα,στυλ,θέμα,εμφάνιση,αίσθηση,διάταξη,κουμπί,χειρισμός,άκρο,kwm,διακόσμηση
++X-KDE-Keywords[eo]=kwin,fenestro,administrilo,rando,stilo,etoso,aspekto,konduto,aranĝo,butono,eĝo,kwm,ornamo
++X-KDE-Keywords[es]=kwin,ventana,gestor,borde,estilo,tema,aspecto,comportamiento,disposición,botón,asa,esquina,kwm,decoración
++X-KDE-Keywords[et]=kwin,aken,haldur,piire,stiil,teema,välimus,kasutamine,nupud,serv,kwm,dekoratsioon
++X-KDE-Keywords[eu]=kwin,leihoa,kudeatzailea,ertza,estiloa,gaia,itxura,antolaketa,botoia, maneiatzailea,ertzea,kwm,dekorazioa
++X-KDE-Keywords[fa]=kwin، پنجره، مدیر، لبه، سبک، چهره، ظاهر، احساس، طرح‌بندی، دکمه، گرداندن، لبه، kwm، تزئین
++X-KDE-Keywords[fi]=kwin,ikkuna,ikkunaohjelma,ikkunoinnin hallintaohjelma,tausta,tyyli,teema,ulkonäkö,tuntuma,ulkoasu,painike,kahva,kulma,kwm,kehys
++X-KDE-Keywords[fr]=kwin,fenêtre,gestionnaire,bordure,style,thème,apparence,ergonomie,disposition,bouton,poignée,bord,kwm,décoration
++X-KDE-Keywords[fy]=kwin,window,manager,rand,stijl,theme,tema,look,uiterlijk,gedrag,feel,layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer,finster,râne,kader,styltema,uterlik,gedrach,finsterbehear
++X-KDE-Keywords[ga]=kwin,fuinneog,bainisteoir,imlíne,stíl,téama,leagan amach,cnaipe,hanla,ciumhais,kwm,maisiúchán
++X-KDE-Keywords[gl]=kwin,fiestra,xestor,beira,estilo,tema,apariencia,formato,botón,xestión,esquina,kwm,decoración
++X-KDE-Keywords[he]=מנהל חלונות,חלונות,מנהל,גבול,מסגרת,סגנון,ערכה,ערכת נושא,מראה,תחושה,פריסה,תצוגה,כפתור,ידית,קצה,קישוט, kwin,window,manager,border,style,theme,look,feel,layout,button,handle, edge,kwm,decoration
++X-KDE-Keywords[hr]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,upravljanje,obrub,stil,tema,izgled,raspored,gumb,rukovanje,rub,ukras
++X-KDE-Keywords[hu]=KWin,ablak,kezelő,szegély,stílus,téma,kinézet,megjelenés,elrendezés,nyomógomb,fogantyú,perem,kwm,ablakstílus
++X-KDE-Keywords[is]=kwin,gluggi,gluggastjóri,gluggar,kantar,rammi,skreyting,þema,stíll,útlit,takki,kwm,skraut
++X-KDE-Keywords[it]=kwin,finestra,window manager,bordo,stile,tema,aspetto,pulsante,maniglia,bordo,kwm,decorazione
++X-KDE-Keywords[ja]=kwin,ウィンドウ,マネージャ,枠,スタイル,テーマ,ルック,外観,レイアウト,ボタン,ハンドル,エッジ,kwm,装飾
++X-KDE-Keywords[km]=kwin បង្អួច កម្មវិធី​គ្រប់គ្រង ស៊ុម រចនាប័ទ្ម ស្បែក មើល ស្គាល់ ប្លង់ ប៊ូតុង ការ​គ្រប់គ្រង គែម kwm ការ​តុបតែង
++X-KDE-Keywords[ko]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration ,창,윈도,관리자,매니저,테두리,꼴,스타일,테마,모양새,보이기,쓰임새,느끼기 ,배치,단추
++X-KDE-Keywords[lt]=kwin,window,manager,border,style,theme,look,feel,layout,buttons,handle,edge,kwm,decoration,langas,tvarkyklė,rėmelis,stilius,tema,žiūrėti,jausti,išdėstymas,mygtukai,kraštas,dekoracija
++X-KDE-Keywords[lv]=kwin, logs, menedžeris, rāmis, stils, tēma, skats, gars, izkārtojums, poga, rokturis, stūris, kwm, dekorācija
++X-KDE-Keywords[mk]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозорец,менаџер,граница,стил,тема,изглед,чувство,распоред,копче,рачка,раб,декорација
++X-KDE-Keywords[nb]=kwin,vindu,vindusstyring,styrer,ramme,stil,tema,utseende,layout,knapp,kant,kwm,pynt,dekorasjon
++X-KDE-Keywords[nds]=kwin,Finster,Finsterpleger,manager,Rahmen,Stil,Muster,look,feel,layout,Knoop,Greep,Rand,kwm,Dekoratschoon
++X-KDE-Keywords[ne]=केडीई विन,सञ्झ्याल, प्रबन्धक, किनारा, शैली, विषयवस्तु, हेराइ, बुझाइ, सजावट, बटन, ह्यान्डल, छेउ,kwm, सजावट
++X-KDE-Keywords[nl]=kwin,window,manager,rand,stijl,theme,thema,look,uiterlijk,gedrag,feel, layout,opmaak,button,knoppen,handle,rand,kwm,decoratie,windowmanager,venster,vensterbeheer
++X-KDE-Keywords[nn]=kwin,vindauge,kant,bord,stil,tema,utsjånad,bunad,knapp,handtak,kwm,dekorasjon
++X-KDE-Keywords[pa]=kwin,handle,edge,kwm,decoration,ਵਿੰਡੋ,ਮੈਨੇਜਰ,ਹਾਸ਼ੀਆ,ਸ਼ੈਲੀ,ਸਰੂਪ,ਦਿੱਖ,ਖਾਕਾ,ਬਟਨ,ਹੈਂਡਲ,ਸਜਾਵਟ
++X-KDE-Keywords[pl]=kwin,okno,menedżer,brzeg,styl,motyw,wygląd,zachowanie,układ,przycisk,uchwyt,krawędź,kwm,dekoracja
++X-KDE-Keywords[pt]=kwin,janela,gestor,contorno,estilo,tema,aparência,comportamento,visual,botão,pega,extremo,kwm,decoração
++X-KDE-Keywords[pt_BR]=kwin,janela,gerenciador,borda,estilo,tema,aparência,aparência,layout,botão,manipular,borda,kwm,decoração
++X-KDE-Keywords[ro]=kwin,fereastră,manager,margine,stil,tematică,aspect,comportament,format,buton,kwm,decorare
++X-KDE-Keywords[se]=kwin,láse,gieđahalli,ravda,stiila,fáddá,fárda,dovdu,hápmi,boallu,geavja,ravda,kwm,hearva
++X-KDE-Keywords[sl]=kwin,okno,upravitelj,rob,meja,slog,stil,tema,pogled,občutek,gumb,ročaj,rob,kwm,okrasek
++X-KDE-Keywords[sr]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,прозор,менаџер,оквир,стил,тема,изглед,дугме,ручка,декорација,ивица,оквир,К-вин,граница
++X-KDE-Keywords[sr at latin]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,prozor,menadžer,okvir,stil,tema,izgled,dugme,ručka,dekoracija,ivica,okvir,KWin,granica
++X-KDE-Keywords[sv]=kwin,fönster,hanterare,kant,stil,tema,utseende,känsla,layout,knapp,hantera,kant,kwm,dekoration
++X-KDE-Keywords[ta]=kwin,சாளரம்,மேலாளர்,விளிம்பு,பாணி,தலைப்பு,பார்வை,உணர்தல்,உருவரை,விசை,கையாள்,முனை,kwm,அலங்கரிப்பு
++X-KDE-Keywords[tr]=kwin,pencere,yönetici,kenar,stil,tema,görünüş,doku,yerleşim,düğme,tutamaç,kenar,kwm,dekorasyon
++X-KDE-Keywords[uk]=kwin,вікно,менеджер,границя,стиль,тема,вигляд,поведінка,розклад,кнопка,handle,край,kwm,обрамлення
++X-KDE-Keywords[uz]=kwin,kwm,безак,ойна,бошқарувчи,усул,ташқи кўриниш
++X-KDE-Keywords[vi]=kwin,cửa sổ,quản lý,bờ,kiểu,sắc thái,ngoại hình,cảm nhận,sắp xếp,nút,điều khiển,cạnh,kwm,trang trí
++X-KDE-Keywords[x-test]=xxkwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decorationxx
++X-KDE-Keywords[xh]=kwin,window,umphathi,umda,uhlobo,umxholo wokuxoxwa,jonga,yiva,beka,iqhosha,umqheba,umda,kwm,uhombiso
++X-KDE-Keywords[zh_CN]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,窗口,管理器,边框,样式,主题,观感,布局,按钮,处理,边缘,装饰
++X-KDE-Keywords[zh_TW]=kwin,window,manager,border,style,theme,look,feel,layout,button,handle,edge,kwm,decoration,視窗,管理員,邊框,風格,佈景主題,外觀,感覺,佈局,按鈕,邊緣,裝飾
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+ 
+--- a/kwin/kcmkwin/kwindesktop/desktop.desktop
++++ b/kwin/kcmkwin/kwindesktop/desktop.desktop
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/desktop/index.html#desktop-number
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/desktop/index.html#desktop-number
+ Icon=preferences-desktop-multiple
+ Exec=kcmshell4 desktop
+ 
+@@ -22,7 +21,7 @@
+ Name[da]=Flere desktoppe
+ Name[de]=Virtuelle Arbeitsflächen
+ Name[el]=Πολλαπλές επιφάνειες εργασίας
+-Name[eo]=Pluraj tabuloj
++Name[eo]=Pluraj labortabloj
+ Name[es]=Varios escritorios
+ Name[et]=Virtuaalsed töölauad
+ Name[eu]=Mahaigain anitz
+@@ -87,7 +86,7 @@
+ Comment[da]=Her kan du indstille hvor mange virtuelle desktoppe der er.
+ Comment[de]=Hier können Sie die Zahl der virtuellen Arbeitsflächen festlegen
+ Comment[el]=Μπορείτε να ρυθμίσετε πόσες εικονικές επιφάνειες εργασίας θα υπάρχουν.
+-Comment[eo]=Ĉi tie vi povas agordi kiom da virtualaj tabuloj jen estas.
++Comment[eo]=Ĉi tie vi povas agordi kiom da virtualaj labortabloj jen estas.
+ Comment[es]=Configuración del número de escritorios virtuales.
+ Comment[et]=Virtuaalsete töölaudade arvu seadistamine
+ Comment[eu]=Mahaigain birtualen kopurua konfigura dezakezu.
+@@ -139,62 +138,62 @@
+ Comment[xh]=Ungaqwalasela ukuba zizakubangakanani ii desktops ezingabonakaliyo.
+ Comment[zh_CN]=您可以在这里配置虚拟桌面的数量。
+ Comment[zh_TW]=您可以在這裡設定要有多少個虛擬桌面。
+-Keywords=desktop,desktops,number,virtual desktop
+-Keywords[be]=Працоўны стол,Працоўныя сталы,Колькасць,Віртуальны працоўны стол,Віртуальныя працоўныя сталы,desktop,desktops,number,virtual desktop
+-Keywords[bg]=Keywords=работен, плот, брой, виртуален, desktop, number, virtual desktop
+-Keywords[br]=burev,burevioù,niver,burev galloudel
+-Keywords[ca]=escriptori,escriptoris,número,escriptori virtual
+-Keywords[cs]=Pracovní plocha,Počet,Virtuální plocha,Plocha
+-Keywords[csb]=desktop,biurkò,biurka,pùlt,pùltë,wielëna,wirtualné biurkò,wirtualny pùlt
+-Keywords[cy]=penbwrdd, penbyrddau,rhif,penbwrdd rhith
+-Keywords[da]=desktop,desktoppe,antal,virtuelt desktop
+-Keywords[de]=Arbeitsfläche,Desktop,Anzahl,Virtuelle Arbeitsfläche
+-Keywords[el]=επιφάνεια εργασίας,επιφάνειες εργασίας,αριθμός,εικονική επιφάνεια εργασίας
+-Keywords[eo]=tabulo,tabuloj,nombro,virtuala tabulo
+-Keywords[es]=escritorio,escritorios,número,escritorio virtual
+-Keywords[et]=töölaud,töölauad,arv,virtuaalne töölaud
+-Keywords[eu]=mahaigaina, mahaigainak,zenbakia,mahaigain birtuala
+-Keywords[fa]=رومیزی، رومیزیها، تعداد، رومیزی مجازی
+-Keywords[fi]=työpöytä,työpöydät,lukumäärä,virtuaalityöpöytä
+-Keywords[fr]=bureau,bureaux,numéro,bureaux virtuels
+-Keywords[fy]=desktop,buroblêd,buroblêden,namme fan buroblêd,nûmmer,buroblêdtelling,firtuele buroblêden
+-Keywords[ga]=deasc,deasca,uimhir,deasc fhíorúil
+-Keywords[gl]=escritório,escritórios,número,escritório virtual
+-Keywords[he]=שולחן עבודה,שולחנות עבודה,מספר,שולחן עבודה וירטואלי, desktop,desktops,number,virtual desktop
+-Keywords[hr]=desktop,desktops,number,virtual desktop,radna površina,broj,virtualna radna površina
+-Keywords[hu]=munkaasztal,munkaasztalok,szám,virtuális munkaasztal
+-Keywords[is]=skjáborð,nafn,heiti,númer,fjöldi
+-Keywords[it]=desktop,nome desktop,numero di desktop,desktop virtuali
+-Keywords[ja]=デスクトップ,数,仮想デスクトップ
+-Keywords[ka]=სამუშაო მაგიდა,სამუშაო მაგიდები,რიცხვი,ვირტუალური სამუშაო მაგიდა
+-Keywords[km]=ផ្ទៃតុ ផ្ទៃតុ លេខ ផ្ទៃតុ​និម្មិត
+-Keywords[ko]=Desktops,Name,Number of Desktops,Desktopcount,데스크톱,이름,데스크톱 번호,데스크탑 개수
+-Keywords[lt]=desktop,desktops,darbastaliai,number,skaičius,menamas darbastalis
+-Keywords[lv]=Darbvirsma,Darbavirsmas,Skaits,virtuālā darbvirsma
+-Keywords[mk]=desktop,desktops,number,virtual desktop,работна површина,површина,работни површини,површини,број,виртуелна површина
+-Keywords[ms]=desktop,desktop,bilangan,desktop maya
+-Keywords[nb]=Skrivebord,antall,virtuelt skrivebord
+-Keywords[nds]=Schriefdisch,Schriefdischen,Tall,virtuelle Schriefdischen
+-Keywords[ne]=डेस्कटप, डेस्कटपहरू, सङ्ख्या, अवास्तविक डेस्कटप
+-Keywords[nl]=desktop,bureaublad,bureaubladen,naam van bureaublad,nummer,bureaubladtelling,virtuele bureaubladen
+-Keywords[nn]=skrivebord,nummer,virtuelt skrivebord
+-Keywords[pa]=desktop,desktops,number,virtual desktop,ਵੇਹੜੇ,ਗਿਣਤੀ
+-Keywords[pl]=desktop,biurko,biurka,pulpit,pulpity,numer,wirtualne biurko,wirtualny pulpit
+-Keywords[pt]=ecrã,ambiente de trabalho,número,ecrã virtual
+-Keywords[pt_BR]=área de trabalho,áreas de trabalho,número,área de trabalho virtual
+-Keywords[ro]=ecran,număr,ecran virtual,afişare,monitor
+-Keywords[se]=čállinbeavdi,čállinbeavddit,nummir,virtuella čállinbeavdi
+-Keywords[sl]=namizje,ime,številka,število namizij,navidezno
+-Keywords[sr]=desktop,desktops,number,virtual desktop,радна површ,број,виртуелна радна површ
+-Keywords[sr at latin]=desktop,desktops,number,virtual desktop,radna površ,broj,virtuelna radna površ
+-Keywords[sv]=skrivbord,antal skrivbord,antal,virtuellt skrivbord
+-Keywords[ta]=மேல்மேசை, மேல்மேசைகள்,எண்ணிக்கை,மெய்நிகர் மேல்மேசை
+-Keywords[th]=พื้นที่ทำงาน,พื้นที่ทำงานหลายพื้นที่,จำนวน,พื้นที่ทำงานเสมือน
+-Keywords[tr]=masaüstü,isim,masaüstü sayısı,sanal masaüstü
+-Keywords[uk]=стільниця,стільниці,номер,віртуальна стільниця
+-Keywords[uz]=иш столи,иш столлари,сон,виртуал иш столи
+-Keywords[vi]=màn hình nền,các màn hình nền,số,màn hình nền ảo
+-Keywords[wa]=sicribanne,scribanne,sicribannes,scribannes,forveyou scribanne
+-Keywords[x-test]=xxdesktop,desktops,number,virtual desktopxx
+-Keywords[zh_CN]=desktop,desktops,number,virtual desktop,桌面,数量,虚拟桌面
+-Keywords[zh_TW]=desktop,number,virtual desktop,桌面,編號,虛擬桌面
++X-KDE-Keywords=desktop,desktops,number,virtual desktop
++X-KDE-Keywords[be]=Працоўны стол,Працоўныя сталы,Колькасць,Віртуальны працоўны стол,Віртуальныя працоўныя сталы,desktop,desktops,number,virtual desktop
++X-KDE-Keywords[bg]=Keywords=работен, плот, брой, виртуален, desktop, number, virtual desktop
++X-KDE-Keywords[br]=burev,burevioù,niver,burev galloudel
++X-KDE-Keywords[ca]=escriptori,escriptoris,número,escriptori virtual
++X-KDE-Keywords[cs]=Pracovní plocha,Počet,Virtuální plocha,Plocha
++X-KDE-Keywords[csb]=desktop,biurkò,biurka,pùlt,pùltë,wielëna,wirtualné biurkò,wirtualny pùlt
++X-KDE-Keywords[cy]=penbwrdd, penbyrddau,rhif,penbwrdd rhith
++X-KDE-Keywords[da]=desktop,desktoppe,antal,virtuelt desktop
++X-KDE-Keywords[de]=Arbeitsfläche,Desktop,Anzahl,Virtuelle Arbeitsfläche
++X-KDE-Keywords[el]=επιφάνεια εργασίας,επιφάνειες εργασίας,αριθμός,εικονική επιφάνεια εργασίας
++X-KDE-Keywords[eo]=tabulo,tabuloj,nombro,virtuala tabulo
++X-KDE-Keywords[es]=escritorio,escritorios,número,escritorio virtual
++X-KDE-Keywords[et]=töölaud,töölauad,arv,virtuaalne töölaud
++X-KDE-Keywords[eu]=mahaigaina, mahaigainak,zenbakia,mahaigain birtuala
++X-KDE-Keywords[fa]=رومیزی، رومیزیها، تعداد، رومیزی مجازی
++X-KDE-Keywords[fi]=työpöytä,työpöydät,lukumäärä,virtuaalityöpöytä
++X-KDE-Keywords[fr]=bureau,bureaux,numéro,bureaux virtuels
++X-KDE-Keywords[fy]=desktop,buroblêd,buroblêden,namme fan buroblêd,nûmmer,buroblêdtelling,firtuele buroblêden
++X-KDE-Keywords[ga]=deasc,deasca,uimhir,deasc fhíorúil
++X-KDE-Keywords[gl]=escritório,escritórios,número,escritório virtual
++X-KDE-Keywords[he]=שולחן עבודה,שולחנות עבודה,מספר,שולחן עבודה וירטואלי, desktop,desktops,number,virtual desktop
++X-KDE-Keywords[hr]=desktop,desktops,number,virtual desktop,radna površina,broj,virtualna radna površina
++X-KDE-Keywords[hu]=munkaasztal,munkaasztalok,szám,virtuális munkaasztal
++X-KDE-Keywords[is]=skjáborð,nafn,heiti,númer,fjöldi
++X-KDE-Keywords[it]=desktop,nome desktop,numero di desktop,desktop virtuali
++X-KDE-Keywords[ja]=デスクトップ,数,仮想デスクトップ
++X-KDE-Keywords[ka]=სამუშაო მაგიდა,სამუშაო მაგიდები,რიცხვი,ვირტუალური სამუშაო მაგიდა
++X-KDE-Keywords[km]=ផ្ទៃតុ ផ្ទៃតុ លេខ ផ្ទៃតុ​និម្មិត
++X-KDE-Keywords[ko]=Desktops,Name,Number of Desktops,Desktopcount,데스크톱,이름,데스크톱 번호,데스크탑 개수
++X-KDE-Keywords[lt]=desktop,desktops,darbastaliai,number,skaičius,menamas darbastalis
++X-KDE-Keywords[lv]=Darbvirsma,Darbavirsmas,Skaits,virtuālā darbvirsma
++X-KDE-Keywords[mk]=desktop,desktops,number,virtual desktop,работна површина,површина,работни површини,површини,број,виртуелна површина
++X-KDE-Keywords[ms]=desktop,desktop,bilangan,desktop maya
++X-KDE-Keywords[nb]=Skrivebord,antall,virtuelt skrivebord
++X-KDE-Keywords[nds]=Schriefdisch,Schriefdischen,Tall,virtuelle Schriefdischen
++X-KDE-Keywords[ne]=डेस्कटप, डेस्कटपहरू, सङ्ख्या, अवास्तविक डेस्कटप
++X-KDE-Keywords[nl]=desktop,bureaublad,bureaubladen,naam van bureaublad,nummer,bureaubladtelling,virtuele bureaubladen
++X-KDE-Keywords[nn]=skrivebord,nummer,virtuelt skrivebord
++X-KDE-Keywords[pa]=desktop,desktops,number,virtual desktop,ਵੇਹੜੇ,ਗਿਣਤੀ
++X-KDE-Keywords[pl]=desktop,biurko,biurka,pulpit,pulpity,numer,wirtualne biurko,wirtualny pulpit
++X-KDE-Keywords[pt]=ecrã,ambiente de trabalho,número,ecrã virtual
++X-KDE-Keywords[pt_BR]=área de trabalho,áreas de trabalho,número,área de trabalho virtual
++X-KDE-Keywords[ro]=ecran,număr,ecran virtual,afişare,monitor
++X-KDE-Keywords[se]=čállinbeavdi,čállinbeavddit,nummir,virtuella čállinbeavdi
++X-KDE-Keywords[sl]=namizje,ime,številka,število namizij,navidezno
++X-KDE-Keywords[sr]=desktop,desktops,number,virtual desktop,радна површ,број,виртуелна радна површ
++X-KDE-Keywords[sr at latin]=desktop,desktops,number,virtual desktop,radna površ,broj,virtuelna radna površ
++X-KDE-Keywords[sv]=skrivbord,antal skrivbord,antal,virtuellt skrivbord
++X-KDE-Keywords[ta]=மேல்மேசை, மேல்மேசைகள்,எண்ணிக்கை,மெய்நிகர் மேல்மேசை
++X-KDE-Keywords[th]=พื้นที่ทำงาน,พื้นที่ทำงานหลายพื้นที่,จำนวน,พื้นที่ทำงานเสมือน
++X-KDE-Keywords[tr]=masaüstü,isim,masaüstü sayısı,sanal masaüstü
++X-KDE-Keywords[uk]=стільниця,стільниці,номер,віртуальна стільниця
++X-KDE-Keywords[uz]=иш столи,иш столлари,сон,виртуал иш столи
++X-KDE-Keywords[vi]=màn hình nền,các màn hình nền,số,màn hình nền ảo
++X-KDE-Keywords[wa]=sicribanne,scribanne,sicribannes,scribannes,forveyou scribanne
++X-KDE-Keywords[x-test]=xxdesktop,desktops,number,virtual desktopxx
++X-KDE-Keywords[zh_CN]=desktop,desktops,number,virtual desktop,桌面,数量,虚拟桌面
++X-KDE-Keywords[zh_TW]=desktop,number,virtual desktop,桌面,編號,虛擬桌面
+--- a/kwin/kcmkwin/kwinrules/kwinrules.desktop
++++ b/kwin/kcmkwin/kwinrules/kwinrules.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kwinrules
+ Icon=preferences-system-windows-specific
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/windowmanagement/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/windowmanagement/index.html
+ 
+ X-KDE-Library=kcm_kwinrules
+ X-KDE-ParentApp=kcontrol
+@@ -15,6 +14,7 @@
+ Name[ca]=Específic de finestra
+ Name[de]=Fensterspezifische Einstellungen
+ Name[el]=Σχετικές με παράθυρα
++Name[eo]=Nurfenestra
+ Name[et]=Akende seadistused
+ Name[ja]=ウィンドウ固有
+ Name[nb]=Vindus-spesifikke innstillinger
+@@ -22,6 +22,7 @@
+ Name[ne]=सञ्झ्याल-नषर्दिष्टसेटिङ
+ Name[nl]=Vensterspecifiek
+ Name[nn]=Vindaugsspesifikke
++Name[pa]=ਵਿੰਡੋ-ਖਾਸ
+ Name[pt]=Específicas da Janela
+ Name[pt_BR]=Específica da Janela
+ Name[sr]=Посебно по прозору
+@@ -71,7 +72,7 @@
+ Comment[ne]=सञ्झ्यालका लागि निर्दिष्ट तरीकाले सेटिङ कन्फिगर गर्नुहोस्
+ Comment[nl]=Hier kunt u instellingen kiezen specifiek voor één venster
+ Comment[nn]=Innstillingar som er knytte til eitt særskilt vindauge
+-Comment[pa]=ਇੱਕ ਝਰੋਖੇ ਲਈ ਖਾਸ ਸਥਾਪਨ ਸੰਰਚਨਾ
++Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਲਈ ਖਾਸ ਸੈਟਿੰਗ ਸੰਰਚਨਾ
+ Comment[pl]=Konfiguracja ustawień wybranego okna
+ Comment[pt]=Configura as opções especificamente para uma janela
+ Comment[pt_BR]=Configurar opções específicas para uma janela
+@@ -92,56 +93,56 @@
+ Comment[zh_CN]=配置一个窗口的设置
+ Comment[zh_TW]=設定特定視窗設定值
+ 
+-Keywords=size,position,state,window behavior,windows,specific,workarounds,remember,rules
+-Keywords[be]=Keywords=Памер,Пазіцыя,Стан,Паводзіны акна,Вокны,Акно,Спецыфічныя,Запомніць,Правілы,size,position,state,window behavior,windows,specific,workarounds,remember,rules
+-Keywords[bg]=Keywords=размер, позиция, състояние, прозорец, поведение,правила, запомняне,size,position,state,window behavior,windows,specific,workarounds,remember,rules
+-Keywords[ca]=mida,posició,estat,comportament de finestra,finestres,específic,reparacions,recorda,regles
+-Keywords[cs]=velikost,pozice,umístění,stav,chování oken,pravidla
+-Keywords[csb]=miara,pòłożenié,stón,ùchòwanié òknół,òkna,spamiãtanié nastôwów,zapamiãtanié nastôwów,regle
+-Keywords[cy]=maint,lleoliad,cyflwr,ffenestr,ymddygiad,ffenestri,penodol,ffyrdd osgoi,cofio,rheolau
+-Keywords[da]=størrelse,position,tilstand,vinduesopførsel,vinduer,specifik, omgåelse,husk,regler
+-Keywords[de]=Größe,Position,Status,Fensterverhalten,Fenster,Regeln
+-Keywords[el]=μέγεθος,θέση,κατάσταση,συμπεριφορά παραθύρου,παράθυρα,ειδικές,λύσεις,αποθήκευση,κανόνων
+-Keywords[en_GB]=size,position,state,window behaviour,windows,specific,workarounds,remember,rules
+-Keywords[eo]=grandeco,pozicio,stato,fenestra konduto,fenestroj,reguloj
+-Keywords[es]=tamaño,posición,estado,comportamiento de la ventana,ventanas,específico,soluciones,recordar,reglas
+-Keywords[et]=suurus,asend,olek,akna käitumine,aknad,spetsiaalne,kohandamine,reeglid
+-Keywords[eu]=neurria,kokapena,egoera,leihoaren portaera,leihoak,espezifikoa,konponbideak,gogoratu,arauak
+-Keywords[fa]=اندازه، موقعیت، وضعیت، رفتار پنجره، پنجره‌ها، مشخص، workarounds، یادآوری، قواعد
+-Keywords[fi]=koko,sijainti,tila,ikkunan käyttäytyminen,ikkunat,ikkunakohtainen,säännöt
+-Keywords[fr]=taille,position,état,comportement de fenêtre,fenêtres,spécifique,astuces,souvenir,règles
+-Keywords[fy]=grootte,grutte,positie,posysje,venstergedrag,finstergedrach,vensters,finsters,specifiek,spesifyk,alternatieven,alternativen,onthouden,ûnthâlde,regels
+-Keywords[ga]=méid,ionad,staid,oibriú na bhfuinneog,fuinneoga,sainiúil,réitigh seiftithe,meabhraigh,rialacha
+-Keywords[gl]=tamaño,posición,estado,comportamento da fiestra,fiestras,específico,lembrar,reglas
+-Keywords[he]=גודל, מיקום, מצב, חלון, התנהגות, חלונות, אישית, זכור, חוקים, size,position,state,window behavior,windows,specific,workarounds,remember,rules
+-Keywords[hr]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,veličina,položaj,smještaj,stanje,ponašanje prozora,prozori,rješenja,zapamti,upamti,pravila
+-Keywords[hu]=méret,pozíció,állapot,ablakműködés,ablakok,specifikus,megjegyzés,szabályok
+-Keywords[it]=dimensione,posizione,stato,comportamento finestra,finestre,specifico,ricorda,regole
+-Keywords[ja]=サイズ,位置,状態,ウィンドウの挙動,windows,特定,ワークアラウンド,記憶,ルール
+-Keywords[km]=ទំហំ ទីតាំង សភាព ឥរិយាបថ​បង្អួច បង្អួច ជាក់លាក់ workarounds ចងចាំ ច្បាប់
+-Keywords[lt]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,dydis,pozicija,būsena,lango eelgesys,langai,atsiminti,taisyklės
+-Keywords[lv]=izmērs,novietojums,statuss,loga izturēšanās,logi,specifisks,apjājiens,atcerēties,noteikumi
+-Keywords[mk]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,големина,позиција,состојба,однесување на прозорец,специфично,заобиколни
+-Keywords[nb]=størrelse,posisjon,status,vindusoppførsel,vinduer,spesifikk,jukseløsninger,husk,regler
+-Keywords[nds]=Grött,Positschoon,Status,Finsterbedregen,Finstern,enkel,enkelte,Regeln,behollen,workaround
+-Keywords[ne]=साइज, स्थिति, अवस्था, सञ्झ्याल व्यवहार, सञ्झ्यालहरू, निर्दिष्ट, कार्यक्षेत्र, याद गर्नुहोस्, नियम
+-Keywords[nl]=grootte,positie,venstergedrag,vensters,specifiek,alternatieven,onthouden,regels
+-Keywords[nn]=storleik,plassering,tilstand,vindaugsåtferd,vindauge,spesifikk,jukseløysingar,hugs,reglar
+-Keywords[pa]=ਅਕਾਰ,ਸਥਿਤੀ,ਝਰੋਖਾ ਵਿਵਹਾਰ,ਝਰੋਖੇ,ਖਾਸ,ਯਾਦ ਰੱਖੋ,ਨਿਯਮ
+-Keywords[pl]=rozmiar,położenie,stan,zachowanie okien,okna,zapamiętywanie ustawień,reguły
+-Keywords[pt]=tamanho,posição,estado,comportamento da janela,janelas,específico,recordar,regras
+-Keywords[pt_BR]=tamanho,posição,estado,comportamento da janela,janelas,específica,elementos,lembrar,regras
+-Keywords[ro]=mărime,poziţie,stare,comportament fereastră,ferestre,specific,reguli
+-Keywords[se]=sturrodat,sajádat,dilli,láseláhtten,láset,erenoamáš,fillenčovdosat,muitte,njuolggadusat
+-Keywords[sl]=velikost,položaj,stanje,obnašanje okna,okna,posebno,obvoz,zapomni,pravila
+-Keywords[sr]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,величина,позиција,стање,понашање прозора,прозори,запамти,правила,статус
+-Keywords[sr at latin]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,veličina,pozicija,stanje,ponašanje prozora,prozori,zapamti,pravila,status
+-Keywords[sv]=storlek,position,tillstånd,fönsterbeteende,fönster,specifik,komma runt,komma ihåg,regler
+-Keywords[ta]=அளவு,நிலை,மாநிலம்,சாளர நடத்தை,சாளரங்கள்,குறிப்பிட்ட,பணிவட்டாரங்கள்,விதிகள்
+-Keywords[tr]=boyut,yer,pozisyon,durum,pencere davranışı,pencereler,özel,çalışma alanı,hatırla,kurallar
+-Keywords[uk]=розмір,позиція,стан,поведінка вікна,вікна,окремі,підігнати,запам'ятати,правила
+-Keywords[uz]=ўлчам,жой,ҳолат,ойнанинг хусусиятлари,ойналар,махсус,эслаб қолиш,қоидалар
+-Keywords[vi]=kích cỡ,vị trí,trạng thái,ứng xử cửa sổ,cửa sổ,dành riêng,cách chữa chạy,nhớ,quy tắc
+-Keywords[x-test]=xxsize,position,state,window behavior,windows,specific,workarounds,remember,rulesxx
+-Keywords[zh_CN]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,大小,位置,状态,窗口行为,窗口,特定,工作区,记住,规则
+-Keywords[zh_TW]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,大小,位置,狀態,視窗行為,視窗,指定,記憶,規則
++X-KDE-Keywords=size,position,state,window behavior,windows,specific,workarounds,remember,rules
++X-KDE-Keywords[be]=Keywords=Памер,Пазіцыя,Стан,Паводзіны акна,Вокны,Акно,Спецыфічныя,Запомніць,Правілы,size,position,state,window behavior,windows,specific,workarounds,remember,rules
++X-KDE-Keywords[bg]=Keywords=размер, позиция, състояние, прозорец, поведение,правила, запомняне,size,position,state,window behavior,windows,specific,workarounds,remember,rules
++X-KDE-Keywords[ca]=mida,posició,estat,comportament de finestra,finestres,específic,reparacions,recorda,regles
++X-KDE-Keywords[cs]=velikost,pozice,umístění,stav,chování oken,pravidla
++X-KDE-Keywords[csb]=miara,pòłożenié,stón,ùchòwanié òknół,òkna,spamiãtanié nastôwów,zapamiãtanié nastôwów,regle
++X-KDE-Keywords[cy]=maint,lleoliad,cyflwr,ffenestr,ymddygiad,ffenestri,penodol,ffyrdd osgoi,cofio,rheolau
++X-KDE-Keywords[da]=størrelse,position,tilstand,vinduesopførsel,vinduer,specifik, omgåelse,husk,regler
++X-KDE-Keywords[de]=Größe,Position,Status,Fensterverhalten,Fenster,Regeln
++X-KDE-Keywords[el]=μέγεθος,θέση,κατάσταση,συμπεριφορά παραθύρου,παράθυρα,ειδικές,λύσεις,αποθήκευση,κανόνων
++X-KDE-Keywords[en_GB]=size,position,state,window behaviour,windows,specific,workarounds,remember,rules
++X-KDE-Keywords[eo]=grandeco,pozicio,stato,fenestra konduto,fenestroj,reguloj
++X-KDE-Keywords[es]=tamaño,posición,estado,comportamiento de la ventana,ventanas,específico,soluciones,recordar,reglas
++X-KDE-Keywords[et]=suurus,asend,olek,akna käitumine,aknad,spetsiaalne,kohandamine,reeglid
++X-KDE-Keywords[eu]=neurria,kokapena,egoera,leihoaren portaera,leihoak,espezifikoa,konponbideak,gogoratu,arauak
++X-KDE-Keywords[fa]=اندازه، موقعیت، وضعیت، رفتار پنجره، پنجره‌ها، مشخص، workarounds، یادآوری، قواعد
++X-KDE-Keywords[fi]=koko,sijainti,tila,ikkunan käyttäytyminen,ikkunat,ikkunakohtainen,säännöt
++X-KDE-Keywords[fr]=taille,position,état,comportement de fenêtre,fenêtres,spécifique,astuces,souvenir,règles
++X-KDE-Keywords[fy]=grootte,grutte,positie,posysje,venstergedrag,finstergedrach,vensters,finsters,specifiek,spesifyk,alternatieven,alternativen,onthouden,ûnthâlde,regels
++X-KDE-Keywords[ga]=méid,ionad,staid,oibriú na bhfuinneog,fuinneoga,sainiúil,réitigh seiftithe,meabhraigh,rialacha
++X-KDE-Keywords[gl]=tamaño,posición,estado,comportamento da fiestra,fiestras,específico,lembrar,reglas
++X-KDE-Keywords[he]=גודל, מיקום, מצב, חלון, התנהגות, חלונות, אישית, זכור, חוקים, size,position,state,window behavior,windows,specific,workarounds,remember,rules
++X-KDE-Keywords[hr]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,veličina,položaj,smještaj,stanje,ponašanje prozora,prozori,rješenja,zapamti,upamti,pravila
++X-KDE-Keywords[hu]=méret,pozíció,állapot,ablakműködés,ablakok,specifikus,megjegyzés,szabályok
++X-KDE-Keywords[it]=dimensione,posizione,stato,comportamento finestra,finestre,specifico,ricorda,regole
++X-KDE-Keywords[ja]=サイズ,位置,状態,ウィンドウの挙動,windows,特定,ワークアラウンド,記憶,ルール
++X-KDE-Keywords[km]=ទំហំ ទីតាំង សភាព ឥរិយាបថ​បង្អួច បង្អួច ជាក់លាក់ workarounds ចងចាំ ច្បាប់
++X-KDE-Keywords[lt]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,dydis,pozicija,būsena,lango eelgesys,langai,atsiminti,taisyklės
++X-KDE-Keywords[lv]=izmērs,novietojums,statuss,loga izturēšanās,logi,specifisks,apjājiens,atcerēties,noteikumi
++X-KDE-Keywords[mk]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,големина,позиција,состојба,однесување на прозорец,специфично,заобиколни
++X-KDE-Keywords[nb]=størrelse,posisjon,status,vindusoppførsel,vinduer,spesifikk,jukseløsninger,husk,regler
++X-KDE-Keywords[nds]=Grött,Positschoon,Status,Finsterbedregen,Finstern,enkel,enkelte,Regeln,behollen,workaround
++X-KDE-Keywords[ne]=साइज, स्थिति, अवस्था, सञ्झ्याल व्यवहार, सञ्झ्यालहरू, निर्दिष्ट, कार्यक्षेत्र, याद गर्नुहोस्, नियम
++X-KDE-Keywords[nl]=grootte,positie,venstergedrag,vensters,specifiek,alternatieven,onthouden,regels
++X-KDE-Keywords[nn]=storleik,plassering,tilstand,vindaugsåtferd,vindauge,spesifikk,jukseløysingar,hugs,reglar
++X-KDE-Keywords[pa]=ਅਕਾਰ,ਸਥਿਤੀ,ਵਿੰਡੋ ਵਿਵਹਾਰ,ਝਰੋਖੇ,ਖਾਸ,ਯਾਦ ਰੱਖੋ,ਨਿਯਮ
++X-KDE-Keywords[pl]=rozmiar,położenie,stan,zachowanie okien,okna,zapamiętywanie ustawień,reguły
++X-KDE-Keywords[pt]=tamanho,posição,estado,comportamento da janela,janelas,específico,recordar,regras
++X-KDE-Keywords[pt_BR]=tamanho,posição,estado,comportamento da janela,janelas,específica,elementos,lembrar,regras
++X-KDE-Keywords[ro]=mărime,poziţie,stare,comportament fereastră,ferestre,specific,reguli
++X-KDE-Keywords[se]=sturrodat,sajádat,dilli,láseláhtten,láset,erenoamáš,fillenčovdosat,muitte,njuolggadusat
++X-KDE-Keywords[sl]=velikost,položaj,stanje,obnašanje okna,okna,posebno,obvoz,zapomni,pravila
++X-KDE-Keywords[sr]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,величина,позиција,стање,понашање прозора,прозори,запамти,правила,статус
++X-KDE-Keywords[sr at latin]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,veličina,pozicija,stanje,ponašanje prozora,prozori,zapamti,pravila,status
++X-KDE-Keywords[sv]=storlek,position,tillstånd,fönsterbeteende,fönster,specifik,komma runt,komma ihåg,regler
++X-KDE-Keywords[ta]=அளவு,நிலை,மாநிலம்,சாளர நடத்தை,சாளரங்கள்,குறிப்பிட்ட,பணிவட்டாரங்கள்,விதிகள்
++X-KDE-Keywords[tr]=boyut,yer,pozisyon,durum,pencere davranışı,pencereler,özel,çalışma alanı,hatırla,kurallar
++X-KDE-Keywords[uk]=розмір,позиція,стан,поведінка вікна,вікна,окремі,підігнати,запам'ятати,правила
++X-KDE-Keywords[uz]=ўлчам,жой,ҳолат,ойнанинг хусусиятлари,ойналар,махсус,эслаб қолиш,қоидалар
++X-KDE-Keywords[vi]=kích cỡ,vị trí,trạng thái,ứng xử cửa sổ,cửa sổ,dành riêng,cách chữa chạy,nhớ,quy tắc
++X-KDE-Keywords[x-test]=xxsize,position,state,window behavior,windows,specific,workarounds,remember,rulesxx
++X-KDE-Keywords[zh_CN]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,大小,位置,状态,窗口行为,窗口,特定,工作区,记住,规则
++X-KDE-Keywords[zh_TW]=size,position,state,window behavior,windows,specific,workarounds,remember,rules,大小,位置,狀態,視窗行為,視窗,指定,記憶,規則
+--- a/kwin/kcmkwin/kwincompositing/kwincompositing.desktop
++++ b/kwin/kcmkwin/kwincompositing/kwincompositing.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kwincompositing
+ Icon=preferences-desktop-effect
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/kwincompositing/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/kwincompositing/index.html
+ 
+ X-KDE-Library=kcm_kwincompositing
+ X-KDE-ParentApp=kcontrol
+@@ -16,6 +15,7 @@
+ Name[ca]=Efectes d'escriptori
+ Name[de]=Arbeitsflächen-Effekte
+ Name[el]=Εφέ επιφάνειας εργασίας
++Name[eo]=Labortablaj efektoj
+ Name[es]=Efectos del escritorio
+ Name[et]=Töölauaefektid
+ Name[fa]=جلوه‌های رومیزی
+@@ -49,6 +49,7 @@
+ Comment[ca]=Configuració del efectes d'escriptori
+ Comment[de]=Arbeitsflächen-Effekte einrichten
+ Comment[el]=Ρύθμιση εφέ επιφάνειας εργασίας
++Comment[eo]=Agordi labortablajn efektojn
+ Comment[et]=Töölauaefektide seadistamine
+ Comment[fa]=پیکربندی جلوه‌های رومیزی
+ Comment[ga]=Cumraigh maisíochtaí deisce
+@@ -74,27 +75,27 @@
+ Comment[zh_CN]=配置桌面效果
+ Comment[zh_TW]=設定桌面效果
+ 
+-Keywords=kwin,window,manager,compositing,effect
+-Keywords[bg]=kwin,window,manager,compositing,effect,прозорец,мениджър,ефект
+-Keywords[ca]=kwin,finsetra,gestor,compositing,efecte
+-Keywords[de]=kwin,fenster,manager,effekt,verwaltung,composit
+-Keywords[el]=παράθυρο,διαχειριστής,εφέ,kwin,παράθυρο,διαχειριστής,εφέ
+-Keywords[et]=kwin,aken,haldur,komposiit,efekt
+-Keywords[fa]=kwin، پنجره، مدیر، ترکیب، جلوه
+-Keywords[ga]=kwin,fuinneog,bainisteoir,comhshuíomh,maisíocht
+-Keywords[he]=kwin,window,manager,compositing,effect,מנהל,חלונות,שזירה,אפקט
+-Keywords[it]=kwin,window,manager,compositing,effect,finestra,composizione,effetto,gestione
+-Keywords[ja]=kwin,ウィンドウ,マネージャ,コンポジティング,効果,エフェクト
+-Keywords[km]=kwin បង្អួច កម្មវិធី​គ្រប់គ្រង សមាសភាគ បែបផែន
+-Keywords[nb]=kwin,vindu,vindusstyring,sammensetting,effekt
+-Keywords[nds]=kwin,Finster,Pleger,Effekt,Tosamensetten
+-Keywords[ne]=केडीई विन, सञ्झ्याल, प्रबन्धक, मिश्रित प्रभाव
+-Keywords[nl]=kwin,window,venster,window manager,effect,3D,compositing
+-Keywords[nn]=kwin,vindauge,styring,samansetjing,effekt
+-Keywords[pt]=kwin,janela,gestor,efeito,composição
+-Keywords[pt_BR]=kwin,janela,gerenciador,composição,efeito
+-Keywords[sr]=kwin,window,manager,compositing,effect,прозор,ефекти,ефекат,менаџер,композиција
+-Keywords[sr at latin]=kwin,window,manager,compositing,effect,prozor,efekti,efekat,menadžer,kompozicija
+-Keywords[sv]=kwin,fönster,hantera,sammansättning,effekt
+-Keywords[x-test]=xxkwin,window,manager,compositing,effectxx
+-Keywords[zh_CN]=kwin,window,manager,compositing,effect,窗口,管理器,复合,效果
++X-KDE-Keywords=kwin,window,manager,compositing,effect
++X-KDE-Keywords[bg]=kwin,window,manager,compositing,effect,прозорец,мениджър,ефект
++X-KDE-Keywords[ca]=kwin,finsetra,gestor,compositing,efecte
++X-KDE-Keywords[de]=kwin,fenster,manager,effekt,verwaltung,composit
++X-KDE-Keywords[el]=παράθυρο,διαχειριστής,εφέ,kwin,παράθυρο,διαχειριστής,εφέ
++X-KDE-Keywords[et]=kwin,aken,haldur,komposiit,efekt
++X-KDE-Keywords[fa]=kwin، پنجره، مدیر، ترکیب، جلوه
++X-KDE-Keywords[ga]=kwin,fuinneog,bainisteoir,comhshuíomh,maisíocht
++X-KDE-Keywords[he]=kwin,window,manager,compositing,effect,מנהל,חלונות,שזירה,אפקט
++X-KDE-Keywords[it]=kwin,window,manager,compositing,effect,finestra,composizione,effetto,gestione
++X-KDE-Keywords[ja]=kwin,ウィンドウ,マネージャ,コンポジティング,効果,エフェクト
++X-KDE-Keywords[km]=kwin បង្អួច កម្មវិធី​គ្រប់គ្រង សមាសភាគ បែបផែន
++X-KDE-Keywords[nb]=kwin,vindu,vindusstyring,sammensetting,effekt
++X-KDE-Keywords[nds]=kwin,Finster,Pleger,Effekt,Tosamensetten
++X-KDE-Keywords[ne]=केडीई विन, सञ्झ्याल, प्रबन्धक, मिश्रित प्रभाव
++X-KDE-Keywords[nl]=kwin,window,venster,window manager,effect,3D,compositing
++X-KDE-Keywords[nn]=kwin,vindauge,styring,samansetjing,effekt
++X-KDE-Keywords[pt]=kwin,janela,gestor,efeito,composição
++X-KDE-Keywords[pt_BR]=kwin,janela,gerenciador,composição,efeito
++X-KDE-Keywords[sr]=kwin,window,manager,compositing,effect,прозор,ефекти,ефекат,менаџер,композиција
++X-KDE-Keywords[sr at latin]=kwin,window,manager,compositing,effect,prozor,efekti,efekat,menadžer,kompozicija
++X-KDE-Keywords[sv]=kwin,fönster,hantera,sammansättning,effekt
++X-KDE-Keywords[x-test]=xxkwin,window,manager,compositing,effectxx
++X-KDE-Keywords[zh_CN]=kwin,window,manager,compositing,effect,窗口,管理器,复合,效果
+--- a/kwin/kcmkwin/kwinoptions/kwinfocus.desktop
++++ b/kwin/kcmkwin/kwinoptions/kwinfocus.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-system-windows-focus
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Exec=kcmshell4 kwinfocus
+-DocPath=kcontrol/windowmanagement/index.html#action-focus
++X-DocPath=kcontrol/windowmanagement/index.html#action-focus
+ 
+ X-KDE-Library=kcm_kwinoptions
+ X-KDE-PluginKeyword=kwinfocus
+@@ -45,7 +44,7 @@
+ Name[nds]=Fokus
+ Name[ne]=फोकस
+ Name[nn]=Fokus
+-Name[pa]=ਕੇਂਦਰ
++Name[pa]=ਫੋਕਸ
+ Name[pl]=Ognisko
+ Name[pt]=Foco
+ Name[pt_BR]=Foco
+@@ -104,7 +103,7 @@
+ Comment[ne]=सञ्झ्याल फोकस नीति कन्फिगर गर्नुहोस्
+ Comment[nl]=Hier kunt u het vensterfocusbeleid instellen
+ Comment[nn]=Set opp praksisen for vindaugsfokus
+-Comment[pa]=ਝਰੋਖਾ ਕੇਂਦਰ ਨੀਤੀ ਸੰਰਚਨਾ
++Comment[pa]=ਵਿੰਡੋ ਫੋਕਸ ਪਾਲਸੀ ਸੰਰਚਨਾ
+ Comment[pl]=Konfiguracja przenoszenia ogniska
+ Comment[pt]=Configuração da política de foco (primeiro plano) das janelas
+ Comment[pt_BR]=Configurar a política de foco de janela
+@@ -126,57 +125,57 @@
+ Comment[zh_CN]=配置窗口焦点策略
+ Comment[zh_TW]=設定視窗焦點政策
+ 
+-Keywords=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop
+-Keywords[af]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all werkskerm
+-Keywords[be]=Фокус,Рамяшчэнне,Клавіятура,Усе працоўныя сталы,focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop
+-Keywords[bg]=Keywords=фокус, активиране, автоматично, щракане, focus, placement, auto raise, raise, click raise, keyboard, CDE, alt-tab, all desktop
+-Keywords[ca]=focus,emplaçament,elevar automàticament,elevar,elevar en clicar,teclat,CDE,alt-tab,tot l'escriptori
+-Keywords[cs]=zaměření,umísťování,automatické zdvižení,klávesnice,CDE,Alt-Tab,plochy
+-Keywords[csb]=focus, ùmieszczanié, aùtomatné przenoszenié,pòdnoszenié,pòdnoszenié przë klëkniãcô,klawiatura,CDE,alt-tab,wszëtczé biurka,wszëtczé pùltë
+-Keywords[cy]=canolbwynt,lleoliad,hunan-godi,codi,codi ar ?l clic,allweddell,CDE,alt-tab,penbwrdd cyfan
+-Keywords[da]=fokus,placering,autohæv,hæv,klikhæv,tastatur,CDE,alt-tab,alle desktoppe
+-Keywords[de]=Fokus,Aktivierung,Platzierung,Autom. Aktivierung,Nach oben/unten, Klick,Tastatur,CDE
+-Keywords[el]=εστίαση,τοποθέτηση,αυτόματη ανύψωση,ανύψωση,ανύψωση με πάτημα,πληκτρολόγιο,CDE,alt-tab,all desktop
+-Keywords[eo]=fokuso,lokado,aŭto-altigo,altigo,kliki,kilk altigo,klavaro,CDE,alt-tab,ĉiuj tabuloj
+-Keywords[es]=foco,ubicación,pasar automáticamente al frente,pasar al frente,pulsar,teclado,CDE,alt-tab,todo el escritorio
+-Keywords[et]=fookus,asetus,klikk,klõps,klaviatuur,CDE,alt-tab
+-Keywords[eu]=fokua,kokapena,auto aurrera ekarri,aurrera ekarri,klik eta aurrera eraman,teklatua,CDE,alt-tab,mahaigain guztiak
+-Keywords[fa]=کانون، جای‌دهی، بالا بردن خودکار، بالا بردن، بالا بردن فشار، صفحه کلید، CDE، دگرساز-جهش، همۀ رومیزیها
+-Keywords[fi]=fokus,sijoitus,automaattinosto,napsautusnosto,näppäimistö,CDE
+-Keywords[fr]=focus,placement,auto élévation,élévation,clic clavier,CDE,alt-tab,tous les bureaux
+-Keywords[fy]=focus,fokus,finster,aandacht,oandacht,plaatsing,pleatsing,voorgrond,foargrûn,achtergrond,eftergrûn,klikken,toetsenbord,toetseboerd,CDE,alt-tab,alle bureaubladen,alle buroblêden
+-Keywords[ga]=fócas,láithriú,uathardaigh,ardaigh,gliogardaigh,méarchlár,CDE,alt-tab,gach deasc
+-Keywords[gl]=foco,emprazamento,auto subir,subir,premer para subir,teclado,CDE,alt-tab,todo o escritório
+-Keywords[he]=התמקדות,מיקום,הבאה אוטומטית לחזית,הבאה לחזית,לחיצה להבאה לחזית,מקלדת,כל שולחנות העבודה, focus,placement,auto raise,raise, click raise,keyboard,CDE,alt-tab,all desktop
+-Keywords[hr]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,fokus,smještaj,automatska pojava,pojava,pojava klikanjem,tipkovnica,sve radne površine
+-Keywords[hu]=fókusz,elhelyezés,automatikus előrehozás,előrehozás,előrehozás kattintásra,billentyűzet,CDE,Alt+Tab,minden munkaasztal
+-Keywords[is]=fókus,staðsetning,fleyta upp sjálfkrafa, fleyta upp,smellur fleytir upp,lyklaborð,CDE,alt-tab,öll skjáborð
+-Keywords[it]=focus,piazzamento,alza automaticamente,alza,clic per alzare,tastiera, CDE,alt-tab,tutti i desktop
+-Keywords[ja]=フォーカス,配置,自動的に前面に,前面に,クリックして前面に,キーボード,CDE,alt-tab,すべてのデスクトップ
+-Keywords[km]=ផ្តោត​អារម្មណ៍ ការ​ដាក់ លើក​ឡើង​ស្វ័យប្រវត្តិ លើក​ឡើង ចុច លើក​ឡើង ក្ដារ​ចុច CDE ជំនួស(alt)-ថេប (tab) ផ្ទៃតុ​ទាំងអស់
+-Keywords[lt]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop, fokusas,perkėlimas į pirmą planą, pirmas planas, klaviatūra, CDE,visi darbastaliai
+-Keywords[lv]=fokuss,novietojums,automātiska pacelšanās,pacelšanās,klikšķaraise,tastatūra,CDE,alt-tab,visas darbavirsmas
+-Keywords[mk]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,фокус,позиција,авто подигање,подигање,клик подигање,сите десктопи
+-Keywords[nb]=fokus,plassering,autohev,hev,klikk og hev,tastatur,CDE,bytt vindu,alle skrivebord
+-Keywords[nds]=aktiveren,Fokus,Platzeren,automaatsch fokusseren,aktiveren,klick fokusseren,Tastatuur,CDE,ALT-TAB,all Schriefdischen
+-Keywords[ne]=फोकस, स्थापना, स्वत: बृद्धि, बृद्धि, बृद्धि क्लिक गर्नुहोस्, कुञ्जीपाटी,CDE,अल्ट-ट्याब, सबै डेस्कटप
+-Keywords[nl]=focus,aandacht,plaatsing,voorgrond,achtergrond,klikken,toetsenbord,CDE,alt-tab,alle bureaubladen
+-Keywords[nn]=fokus,plassering,autohev,hev,klikk og hev,tastatur,CDE,byt vindauge,alle skrivebord
+-Keywords[pl]=ognisko,umiejscawianie,automatyczne podnoszenie,podnoszenie, podniesienie przy kliknięciu,klawiatura,CDE,alt-tab,wszystkie biurka,wszystkie pulpity
+-Keywords[pt]=foco,colocação,auto-elevar,elevar,elevar com 'click',teclado,CDE,alt-tab,todos os ecrãs
+-Keywords[pt_BR]=foco,posição,auto elevar,elevar,teclado,CDE,alt-tab,todas as áreas de trabalho
+-Keywords[ro]=focus,plasare,ridicare automată,clic,tastatură,CDE,alt-tab,toate ecranele
+-Keywords[se]=fohkus,auto lokten,lokten,coahkkal ja lokte,boallobeavdi,CDE,molssu lássii,buot čállinbeavddi
+-Keywords[sl]=fokus,postavitev,dvigni,tipkovnica,CDE,alt-tab,vsa namizja
+-Keywords[sr]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,фокус,смештање,аутоматско подизање,подизање,тастатура,алт-$tab-n;,све радне површи,све површи,клик,дизање
+-Keywords[sr at latin]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,fokus,smeštanje,automatsko podizanje,podizanje,tastatura,Alt-$tab-n;,sve radne površi,sve površi,klik,dizanje
+-Keywords[sv]=fokus,placering,autohöjning,höjning,höjning med klick,tangentbord,CDE,alt-tab,alla skrivbord
+-Keywords[ta]=ஒருமுகப்படுத்துதல்,இடம், தானாக மேலெழும்பு, மேலேழும்புதல், மேல் க்ளிக்செய்,விசைப்பலகை,CDE,alt-tab,எல்லா மேல்மேசை
+-Keywords[tr]=odaklama,yerleşim,masaüstü,yükselt,tıkla,klavye,CDE,yerleşim
+-Keywords[uk]=фокус,розташування,автопіднімання,підняти,клавіатура,CDE,alt-tab,вся стільниця
+-Keywords[uz]=авто-олдинга,олдинга,босиб олдинга,CDE,alt-tab,ҳамма иш столлари,фокуслаш,тугматаг,жойлашиш
+-Keywords[vi]=chọn,di chuyển,tự nâng lên,nâng lên,nhấn nâng lên,bàn phím,CDE,alt-tab,tất cả màn hình nền
+-Keywords[x-test]=xxfocus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktopxx
+-Keywords[xh]=ucaco,ubuyiselo,phakamisa ngokuzenzekelayo,phakamisa,nqakraza phakamisa, ibhodi yezitshixho,CDE,alt-tab,zonke ii desktop
+-Keywords[zh_CN]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,焦点,放置,自动升起,升起,单击升起,键盘,全部桌面
+-Keywords[zh_TW]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,焦點,佈置,自動抬升,抬升,單擊抬升,鍵盤,全部桌面
++X-KDE-Keywords=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop
++X-KDE-Keywords[af]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all werkskerm
++X-KDE-Keywords[be]=Фокус,Рамяшчэнне,Клавіятура,Усе працоўныя сталы,focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop
++X-KDE-Keywords[bg]=Keywords=фокус, активиране, автоматично, щракане, focus, placement, auto raise, raise, click raise, keyboard, CDE, alt-tab, all desktop
++X-KDE-Keywords[ca]=focus,emplaçament,elevar automàticament,elevar,elevar en clicar,teclat,CDE,alt-tab,tot l'escriptori
++X-KDE-Keywords[cs]=zaměření,umísťování,automatické zdvižení,klávesnice,CDE,Alt-Tab,plochy
++X-KDE-Keywords[csb]=focus, ùmieszczanié, aùtomatné przenoszenié,pòdnoszenié,pòdnoszenié przë klëkniãcô,klawiatura,CDE,alt-tab,wszëtczé biurka,wszëtczé pùltë
++X-KDE-Keywords[cy]=canolbwynt,lleoliad,hunan-godi,codi,codi ar ?l clic,allweddell,CDE,alt-tab,penbwrdd cyfan
++X-KDE-Keywords[da]=fokus,placering,autohæv,hæv,klikhæv,tastatur,CDE,alt-tab,alle desktoppe
++X-KDE-Keywords[de]=Fokus,Aktivierung,Platzierung,Autom. Aktivierung,Nach oben/unten, Klick,Tastatur,CDE
++X-KDE-Keywords[el]=εστίαση,τοποθέτηση,αυτόματη ανύψωση,ανύψωση,ανύψωση με πάτημα,πληκτρολόγιο,CDE,alt-tab,all desktop
++X-KDE-Keywords[eo]=fokuso,lokado,aŭto-altigo,altigo,kliki,kilk altigo,klavaro,CDE,alt-tab,ĉiuj tabuloj
++X-KDE-Keywords[es]=foco,ubicación,pasar automáticamente al frente,pasar al frente,pulsar,teclado,CDE,alt-tab,todo el escritorio
++X-KDE-Keywords[et]=fookus,asetus,klikk,klõps,klaviatuur,CDE,alt-tab
++X-KDE-Keywords[eu]=fokua,kokapena,auto aurrera ekarri,aurrera ekarri,klik eta aurrera eraman,teklatua,CDE,alt-tab,mahaigain guztiak
++X-KDE-Keywords[fa]=کانون، جای‌دهی، بالا بردن خودکار، بالا بردن، بالا بردن فشار، صفحه کلید، CDE، دگرساز-جهش، همۀ رومیزیها
++X-KDE-Keywords[fi]=fokus,sijoitus,automaattinosto,napsautusnosto,näppäimistö,CDE
++X-KDE-Keywords[fr]=focus,placement,auto élévation,élévation,clic clavier,CDE,alt-tab,tous les bureaux
++X-KDE-Keywords[fy]=focus,fokus,finster,aandacht,oandacht,plaatsing,pleatsing,voorgrond,foargrûn,achtergrond,eftergrûn,klikken,toetsenbord,toetseboerd,CDE,alt-tab,alle bureaubladen,alle buroblêden
++X-KDE-Keywords[ga]=fócas,láithriú,uathardaigh,ardaigh,gliogardaigh,méarchlár,CDE,alt-tab,gach deasc
++X-KDE-Keywords[gl]=foco,emprazamento,auto subir,subir,premer para subir,teclado,CDE,alt-tab,todo o escritório
++X-KDE-Keywords[he]=התמקדות,מיקום,הבאה אוטומטית לחזית,הבאה לחזית,לחיצה להבאה לחזית,מקלדת,כל שולחנות העבודה, focus,placement,auto raise,raise, click raise,keyboard,CDE,alt-tab,all desktop
++X-KDE-Keywords[hr]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,fokus,smještaj,automatska pojava,pojava,pojava klikanjem,tipkovnica,sve radne površine
++X-KDE-Keywords[hu]=fókusz,elhelyezés,automatikus előrehozás,előrehozás,előrehozás kattintásra,billentyűzet,CDE,Alt+Tab,minden munkaasztal
++X-KDE-Keywords[is]=fókus,staðsetning,fleyta upp sjálfkrafa, fleyta upp,smellur fleytir upp,lyklaborð,CDE,alt-tab,öll skjáborð
++X-KDE-Keywords[it]=focus,piazzamento,alza automaticamente,alza,clic per alzare,tastiera, CDE,alt-tab,tutti i desktop
++X-KDE-Keywords[ja]=フォーカス,配置,自動的に前面に,前面に,クリックして前面に,キーボード,CDE,alt-tab,すべてのデスクトップ
++X-KDE-Keywords[km]=ផ្តោត​អារម្មណ៍ ការ​ដាក់ លើក​ឡើង​ស្វ័យប្រវត្តិ លើក​ឡើង ចុច លើក​ឡើង ក្ដារ​ចុច CDE ជំនួស(alt)-ថេប (tab) ផ្ទៃតុ​ទាំងអស់
++X-KDE-Keywords[lt]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop, fokusas,perkėlimas į pirmą planą, pirmas planas, klaviatūra, CDE,visi darbastaliai
++X-KDE-Keywords[lv]=fokuss,novietojums,automātiska pacelšanās,pacelšanās,klikšķaraise,tastatūra,CDE,alt-tab,visas darbavirsmas
++X-KDE-Keywords[mk]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,фокус,позиција,авто подигање,подигање,клик подигање,сите десктопи
++X-KDE-Keywords[nb]=fokus,plassering,autohev,hev,klikk og hev,tastatur,CDE,bytt vindu,alle skrivebord
++X-KDE-Keywords[nds]=aktiveren,Fokus,Platzeren,automaatsch fokusseren,aktiveren,klick fokusseren,Tastatuur,CDE,ALT-TAB,all Schriefdischen
++X-KDE-Keywords[ne]=फोकस, स्थापना, स्वत: बृद्धि, बृद्धि, बृद्धि क्लिक गर्नुहोस्, कुञ्जीपाटी,CDE,अल्ट-ट्याब, सबै डेस्कटप
++X-KDE-Keywords[nl]=focus,aandacht,plaatsing,voorgrond,achtergrond,klikken,toetsenbord,CDE,alt-tab,alle bureaubladen
++X-KDE-Keywords[nn]=fokus,plassering,autohev,hev,klikk og hev,tastatur,CDE,byt vindauge,alle skrivebord
++X-KDE-Keywords[pl]=ognisko,umiejscawianie,automatyczne podnoszenie,podnoszenie, podniesienie przy kliknięciu,klawiatura,CDE,alt-tab,wszystkie biurka,wszystkie pulpity
++X-KDE-Keywords[pt]=foco,colocação,auto-elevar,elevar,elevar com 'click',teclado,CDE,alt-tab,todos os ecrãs
++X-KDE-Keywords[pt_BR]=foco,posição,auto elevar,elevar,teclado,CDE,alt-tab,todas as áreas de trabalho
++X-KDE-Keywords[ro]=focus,plasare,ridicare automată,clic,tastatură,CDE,alt-tab,toate ecranele
++X-KDE-Keywords[se]=fohkus,auto lokten,lokten,coahkkal ja lokte,boallobeavdi,CDE,molssu lássii,buot čállinbeavddi
++X-KDE-Keywords[sl]=fokus,postavitev,dvigni,tipkovnica,CDE,alt-tab,vsa namizja
++X-KDE-Keywords[sr]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,фокус,смештање,аутоматско подизање,подизање,тастатура,алт-$tab-n;,све радне површи,све површи,клик,дизање
++X-KDE-Keywords[sr at latin]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,fokus,smeštanje,automatsko podizanje,podizanje,tastatura,Alt-$tab-n;,sve radne površi,sve površi,klik,dizanje
++X-KDE-Keywords[sv]=fokus,placering,autohöjning,höjning,höjning med klick,tangentbord,CDE,alt-tab,alla skrivbord
++X-KDE-Keywords[ta]=ஒருமுகப்படுத்துதல்,இடம், தானாக மேலெழும்பு, மேலேழும்புதல், மேல் க்ளிக்செய்,விசைப்பலகை,CDE,alt-tab,எல்லா மேல்மேசை
++X-KDE-Keywords[tr]=odaklama,yerleşim,masaüstü,yükselt,tıkla,klavye,CDE,yerleşim
++X-KDE-Keywords[uk]=фокус,розташування,автопіднімання,підняти,клавіатура,CDE,alt-tab,вся стільниця
++X-KDE-Keywords[uz]=авто-олдинга,олдинга,босиб олдинга,CDE,alt-tab,ҳамма иш столлари,фокуслаш,тугматаг,жойлашиш
++X-KDE-Keywords[vi]=chọn,di chuyển,tự nâng lên,nâng lên,nhấn nâng lên,bàn phím,CDE,alt-tab,tất cả màn hình nền
++X-KDE-Keywords[x-test]=xxfocus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktopxx
++X-KDE-Keywords[xh]=ucaco,ubuyiselo,phakamisa ngokuzenzekelayo,phakamisa,nqakraza phakamisa, ibhodi yezitshixho,CDE,alt-tab,zonke ii desktop
++X-KDE-Keywords[zh_CN]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,焦点,放置,自动升起,升起,单击升起,键盘,全部桌面
++X-KDE-Keywords[zh_TW]=focus,placement,auto raise,raise,click raise,keyboard,CDE,alt-tab,all desktop,焦點,佈置,自動抬升,抬升,單擊抬升,鍵盤,全部桌面
+--- a/kwin/kcmkwin/kwinoptions/windows.h
++++ b/kwin/kcmkwin/kwinoptions/windows.h
+@@ -141,16 +141,12 @@
+   void defaults();
+ 
+ private slots:
+-  void setMinimizeAnim( bool );
+-  void setMinimizeAnimSpeed( int );
+-	void changed() { emit KCModule::changed(true); }
++  void changed() { emit KCModule::changed(true); }
+   void slotBrdrSnapChanged( int );
+   void slotWndwSnapChanged( int );
+ 
+ private:
+   int getMove( void );
+-  bool getMinimizeAnim( void );
+-  int getMinimizeAnimSpeed( void );
+   int getResizeOpaque ( void );
+   bool getGeometryTip( void ); //KS
+   int getPlacement( void ); //CT
+@@ -165,9 +161,6 @@
+   QCheckBox *opaque;
+   QCheckBox *resizeOpaqueOn;
+   QCheckBox *geometryTipOn;
+-  QCheckBox* minimizeAnimOn;
+-  QSlider *minimizeAnimSlider;
+-  QLabel *minimizeAnimSlowLabel, *minimizeAnimFastLabel;
+   QCheckBox *moveResizeMaximized;
+ 
+   QComboBox *placementCombo;
+@@ -208,11 +201,9 @@
+ private:
+ 
+   int getShadeHoverInterval (void );
+-  void setAnimateShade(bool);
+   void setShadeHover(bool);
+   void setShadeHoverInterval(int);
+ 
+-  QCheckBox *animateShade;
+   Q3ButtonGroup *shBox;
+   QCheckBox *shadeHoverOn;
+   KIntNumInput *shadeHover;
+--- a/kwin/kcmkwin/kwinoptions/kwinoptions.desktop
++++ b/kwin/kcmkwin/kwinoptions/kwinoptions.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kwinoptions
+ Icon=preferences-system-windows-behaviour
+ Type=Service
+-ServiceTypes=KCModule
+-DocPath=kcontrol/windowmanagement/index.html
++X-KDE-ServiceTypes=KCModule
++X-DocPath=kcontrol/windowmanagement/index.html
+ 
+ X-KDE-Library=kcm_kwinoptions
+ X-KDE-PluginKeyword=kwinoptions
+@@ -54,7 +53,7 @@
+ Name[ne]=सञ्झ्याल व्यवहार
+ Name[nl]=Venstergedrag
+ Name[nn]=Vindaugsåtferd
+-Name[pa]=ਝਰੋਖਾ ਵਿਵਹਾਰ
++Name[pa]=ਵਿੰਡੋ ਰਵੱਈਆ
+ Name[pl]=Okna
+ Name[pt]=Comportamento das Janelas
+ Name[pt_BR]=Comportamento da Janela
+@@ -119,7 +118,7 @@
+ Comment[ne]=सञ्झ्याल व्यवहार कन्फिगर गर्नुहोस्
+ Comment[nl]=Stel het venstergedrag in
+ Comment[nn]=Oppsett av nettlesaråtferda
+-Comment[pa]=ਝਰੋਖਾ ਵਿਵਹਾਰ ਸੰਰਚਨਾ
++Comment[pa]=ਵਿੰਡੋ ਰਵੱਈਆ  ਸੰਰਚਨਾ
+ Comment[pl]=Konfiguracja zachowania okna
+ Comment[pt]=Configurar o comportamento das janelas
+ Comment[pt_BR]=Configurar o comportamento das janelas
+@@ -140,60 +139,60 @@
+ Comment[zh_CN]=配置窗口行为
+ Comment[zh_TW]=設定視窗行為
+ 
+-Keywords=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
+-Keywords[be]=Фокус,Размяшчэнне,Паводзіны акна,Анімацыя,Вокны,Акно,Фрэйм,Загаловак,Двайны націск мышы,focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
+-Keywords[bg]=Keywords=фокус, поведение, прозорец, активиране, заглавие, focus, placement, window behaviour, animation, raise, auto raise, windows, frame, titlebar, doubleclick
+-Keywords[ca]=focus,emplaçament,comportament de la finestra,animació,eleva,eleva automàticament,finestres,marc,barra del títol,doble clic
+-Keywords[cs]=Zaměření,Umístění oken,Chování oken,Animace,Okna,Rámeček,Titulek,Dvojklik
+-Keywords[csb]=zrëszanié,aktiwòwanié,ùkłôdanié òknów,ùchòwanié òknów,animacëjô,aùtomatné aktiwòwanié,òkna,òkno,rama,tilowô lëstew,dëbeltné klëkniãce
+-Keywords[cy]=canolbwynt,lleoliad,ymddygiad ffenestr,bywluniad,codi,hunan-godi,ffenestri,ffrâm,bar-teitl,clic dwbl,dwbl-glic
+-Keywords[da]=fokus,placering,vinduesopførsel,animering,Hæv,autohæv,vinduer,ramme,titellinje,dobbeltklik
+-Keywords[de]=Aktivierung,Platzierung,Fensterverhalten,Animation,Nach vorn/hinten, Fenster,Rahmen,Umrandung,Titelleiste,Doppelklick
+-Keywords[el]=εστίαση,τοποθέτηση,συμπεριφορά παραθύρου,εφέ κίνησης,ανύψωση,αυτόματη ανύψωση,παράθυρα,πλαίσιο,μπάρα τίτλου,διπλό κλικ
+-Keywords[en_GB]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick
+-Keywords[eo]=fokuso,lokigo,fenestrokonduto,spektaklo,malfonigo,aŭtomalfonigo,fenestro,kadro,titollistelo,duklako
+-Keywords[es]=foco,ubicación,posición,ventana,comportamiento,animación,frente,pasar al frente,ventanas,marco,barra de título,doble pulsación
+-Keywords[et]=fookus,asetus,akende käitumine,animatsioon,tõstmine,automaatne tõstmine,aknad,raam,tiitliriba,topeltklikk,topeltklõps
+-Keywords[eu]=fokua,kokalekua,leihoaren portaera,animazioa,aurrera ekarri,auto aurrera ekarri,leihoak,markoa,titulu-barra,klik bikoitza
+-Keywords[fa]=کانون، جای‌دهی، رفتار پنجره، پویانمایی، بالا بردن، بالا بردن خودکار، پنجره‌ها، قاب، میله عنوان، دو بار فشار
+-Keywords[fi]=fokus,sijoittaminen,ikkunan toiminta,animaatio,nosto,automaattinosto,ikkunat,kehys,otsikkorivi,tuplanapsautus,kaksoisnapsautus
+-Keywords[fr]=focus,gestion du focus,fenêtre,placement des fenêtres,comportement des fenêtres,animation,fenêtres,barre de titre,double clic,souris,boutons de la souris,dessus,dessous,raise,auto raise
+-Keywords[fy]=focusbeleid,vensterplaatsing,finsterferpleatsing,venstergedrag,finstergedrach,focus,window,finster,plaatsing,pleatsing,plaatsingbeleid,pleatsingbelied,animatie,animaasje,voorgrond,foargrûn,vensters,finsters,frame,kader,dubbelklikken,dûbelklikke,fokusbeliid
+-Keywords[ga]=fócas,láithriú,oibriú na bhfuinneog,beochan,ardaigh,uathardaigh,fuinneoga,fráma,ceannteideal,déchliceáil
+-Keywords[gl]=foco,emprazamento,comportamento da fiestra,animación,subir,auto subir,fiestras,marco,barra de título,dobre presión
+-Keywords[he]=התמקדות,מיקום,פעולת חלונות,אנימציה,הנפשה,הבאה לחזית,הבאה אוטומטית לחזית,חלונות,גבול,מסגרת,שורת כותרת,לחיצה כפולה, focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
+-Keywords[hr]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,fokus,smještaj,ponašanje prozora,animacija,pojava,podizanje,automatska pojava,prozori,okvir,naslovna traka,dvostruko klikanje
+-Keywords[hu]=fókusz,elhelyezés,ablakelhelyezés,animáció,felemelés,automatikus felemelés,ablakok,keret,címsor,dupla kattintás
+-Keywords[is]=virkni glugga,staðsetning,hegðun,högun glugga,hækka,hækka sjálfkrafa,gluggar,titilslá,titilrönd,tvísmella
+-Keywords[it]=focus,piazzamento,comportamento finestre,animazione,alza,alza automaticamente,finestre,cornice,barra del titolo,doppio clic
+-Keywords[ja]=フォーカス,配置,ウィンドウの挙動,アニメーション,前面へ,自動的に前面へ,ウィンドウ,フレーム,タイトルバー,ダブルクリック
+-Keywords[km]=ផ្ដោត​អារម្មណ៍ ការ​ដាក់ ឥរិយាបថ​បង្អួច ចលនា លើកឡើង​លើ លើក​ឡើង​ស្វ័យប្រវត្ត បង្អួច ស៊ុម របារ​ចំណងជើង ចុច​ទ្វេ​ដង
+-Keywords[lt]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick,lango išdėstymas,elgesys,langai,rėmelis,lango antraštė
+-Keywords[lv]=fokuss,novietojums,loga izturēšanās,animācija,celt,auto celt,logi,kadrs,virsraksta josla,dubultklikšķis
+-Keywords[mk]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,фокус,позиционирање,однесување на прозорците, анимација,подигање,авто подигање,прозорци,рамка,насловна лента,двоен клик
+-Keywords[nb]=fokus,plassering,vindusoppførsel,animasjon,hev,autohev,vinduer,ramme,tittelliste,dobbeltklikk
+-Keywords[nds]=Fokus,Platzeren,Finsterbedregen,Animatschoon,fokusseren,aktiveren,automaatsch fokusseren,Finster,Rahmen,Titelbalken,Dubbelklick
+-Keywords[ne]=फोकस, स्थापना, सञ्झ्याल व्यवहार, एनिमेसन, बृद्धि, स्वत: बृद्धि, सञ्झ्याल, फ्रेम, शीर्षकपट्टी, डबल क्लिक
+-Keywords[nl]=focusbeleid,vensterplaatsing,venstergedrag,focus,window,plaatsing,plaatsingbeleid,animatie,voorgrond,vensters,frame,kader,dubbelklikken
+-Keywords[nn]=fokus,plassering,vindaugsplassering,vindaugsåtferd,animasjon,hev,automatisk heving,vindauge,ramme,tittellinje,dobbeltklikk
+-Keywords[pa]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,ਝਰੋਖਾ ਵਿਹਾਰ,ਸਜੀਵਤਾ,ਝਰੋਖੇ
+-Keywords[pl]=uaktywnianie,układanie okien,zachowanie okien,animacja,automatyczne uaktywnienie,okno,okna,ramka,pasek tytułowy,podwójne kliknięcie
+-Keywords[pt]=foco,posicionamento,comportamento das janelas,animação,elevar,auto-elevar,janelas,contorno,barra de título,duplo-carregar
+-Keywords[pt_BR]=foco,posicionamento,comportamento das janelas,animação,elevar,auto-elevar,janelas,moldura,barra de título,clique duplo
+-Keywords[ro]=focus,plasare,comportament fereastră,animaţie,ridicare,automat,ferestre,cadru,bară de titlu,dublu clic
+-Keywords[se]=fohkus,sajádat,láseláhtten,animašuvdna,lokte,autolokte,láset,rámma,namahusholga,duppalcoahkkal
+-Keywords[sl]=fokus,postavitev,obnašanje okna,animacija,dvigni,okna,okvir,naslovna vrstica,dvojni klik
+-Keywords[sr]=focus,placement,window behaviour,animation,raise,ауто raise,windows,frame,titlebar,doubleclick,фокус,понашање прозора,анимација,прозори,оквир,насловна линија,двоклик,подизање,аутоматско подизање,прозори
+-Keywords[sr at latin]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick,fokus,ponašanje prozora,animacija,prozori,okvir,naslovna linija,dvoklik,podizanje,automatsko podizanje,prozori
+-Keywords[sv]=fokus,placering,fönsterbeteende,animering,höj, autohöj,fönster,kant,namnlist,dubbelklick
+-Keywords[ta]=பார்வை,இடம்,சாளரபண்பு,உயிர்சித்திரம்,மேலெழுப்பு, தானாக மேலெழுப்பு,சாளரங்கள்,சட்டம்,தலைப்புப்பட்டி,இரண்டு சொடுக்கு
+-Keywords[tr]=odak,odak davranış biçimi,pencere yerleşimi,pencere davranışı,Yerleşim davranış biçimi,animasyon,kaldır,otomatik kaldır,çerçeve,çift tıkla
+-Keywords[uk]=фокус,розташовування,поведінка вікна,анімація,підняти,піднімати автоматично,вікна,рамка,заголовок,подвійне клацання
+-Keywords[uz]=фокуслаш,жойлашиш,ойнанинг хусусиятлари,анимация,олдинга,авто-олдинга,ойналар,фрейм,сарлавҳа,икки марта босиш
+-Keywords[vi]=chọn,dịch chuyển,ứng xử cửa sổ,hoạt hình,nâng lên,tự nâng lên,cửa sổ,khung,thanh tiêu đề,nhấn đúp
+-Keywords[x-test]=xxfocus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclickxx
+-Keywords[zh_CN]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,焦点,放置,窗口行为,动画,升起,自动升起,窗口,框架,标题栏,双击
+-Keywords[zh_TW]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,焦點,放置,視窗行為,動畫,抬升,自動抬升,視窗,框架,標題列,雙擊
++X-KDE-Keywords=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
++X-KDE-Keywords[be]=Фокус,Размяшчэнне,Паводзіны акна,Анімацыя,Вокны,Акно,Фрэйм,Загаловак,Двайны націск мышы,focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
++X-KDE-Keywords[bg]=Keywords=фокус, поведение, прозорец, активиране, заглавие, focus, placement, window behaviour, animation, raise, auto raise, windows, frame, titlebar, doubleclick
++X-KDE-Keywords[ca]=focus,emplaçament,comportament de la finestra,animació,eleva,eleva automàticament,finestres,marc,barra del títol,doble clic
++X-KDE-Keywords[cs]=Zaměření,Umístění oken,Chování oken,Animace,Okna,Rámeček,Titulek,Dvojklik
++X-KDE-Keywords[csb]=zrëszanié,aktiwòwanié,ùkłôdanié òknów,ùchòwanié òknów,animacëjô,aùtomatné aktiwòwanié,òkna,òkno,rama,tilowô lëstew,dëbeltné klëkniãce
++X-KDE-Keywords[cy]=canolbwynt,lleoliad,ymddygiad ffenestr,bywluniad,codi,hunan-godi,ffenestri,ffrâm,bar-teitl,clic dwbl,dwbl-glic
++X-KDE-Keywords[da]=fokus,placering,vinduesopførsel,animering,Hæv,autohæv,vinduer,ramme,titellinje,dobbeltklik
++X-KDE-Keywords[de]=Aktivierung,Platzierung,Fensterverhalten,Animation,Nach vorn/hinten, Fenster,Rahmen,Umrandung,Titelleiste,Doppelklick
++X-KDE-Keywords[el]=εστίαση,τοποθέτηση,συμπεριφορά παραθύρου,εφέ κίνησης,ανύψωση,αυτόματη ανύψωση,παράθυρα,πλαίσιο,μπάρα τίτλου,διπλό κλικ
++X-KDE-Keywords[en_GB]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick
++X-KDE-Keywords[eo]=fokuso,lokigo,fenestrokonduto,spektaklo,malfonigo,aŭtomalfonigo,fenestro,kadro,titollistelo,duklako
++X-KDE-Keywords[es]=foco,ubicación,posición,ventana,comportamiento,animación,frente,pasar al frente,ventanas,marco,barra de título,doble pulsación
++X-KDE-Keywords[et]=fookus,asetus,akende käitumine,animatsioon,tõstmine,automaatne tõstmine,aknad,raam,tiitliriba,topeltklikk,topeltklõps
++X-KDE-Keywords[eu]=fokua,kokalekua,leihoaren portaera,animazioa,aurrera ekarri,auto aurrera ekarri,leihoak,markoa,titulu-barra,klik bikoitza
++X-KDE-Keywords[fa]=کانون، جای‌دهی، رفتار پنجره، پویانمایی، بالا بردن، بالا بردن خودکار، پنجره‌ها، قاب، میله عنوان، دو بار فشار
++X-KDE-Keywords[fi]=fokus,sijoittaminen,ikkunan toiminta,animaatio,nosto,automaattinosto,ikkunat,kehys,otsikkorivi,tuplanapsautus,kaksoisnapsautus
++X-KDE-Keywords[fr]=focus,gestion du focus,fenêtre,placement des fenêtres,comportement des fenêtres,animation,fenêtres,barre de titre,double clic,souris,boutons de la souris,dessus,dessous,raise,auto raise
++X-KDE-Keywords[fy]=focusbeleid,vensterplaatsing,finsterferpleatsing,venstergedrag,finstergedrach,focus,window,finster,plaatsing,pleatsing,plaatsingbeleid,pleatsingbelied,animatie,animaasje,voorgrond,foargrûn,vensters,finsters,frame,kader,dubbelklikken,dûbelklikke,fokusbeliid
++X-KDE-Keywords[ga]=fócas,láithriú,oibriú na bhfuinneog,beochan,ardaigh,uathardaigh,fuinneoga,fráma,ceannteideal,déchliceáil
++X-KDE-Keywords[gl]=foco,emprazamento,comportamento da fiestra,animación,subir,auto subir,fiestras,marco,barra de título,dobre presión
++X-KDE-Keywords[he]=התמקדות,מיקום,פעולת חלונות,אנימציה,הנפשה,הבאה לחזית,הבאה אוטומטית לחזית,חלונות,גבול,מסגרת,שורת כותרת,לחיצה כפולה, focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick
++X-KDE-Keywords[hr]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,fokus,smještaj,ponašanje prozora,animacija,pojava,podizanje,automatska pojava,prozori,okvir,naslovna traka,dvostruko klikanje
++X-KDE-Keywords[hu]=fókusz,elhelyezés,ablakelhelyezés,animáció,felemelés,automatikus felemelés,ablakok,keret,címsor,dupla kattintás
++X-KDE-Keywords[is]=virkni glugga,staðsetning,hegðun,högun glugga,hækka,hækka sjálfkrafa,gluggar,titilslá,titilrönd,tvísmella
++X-KDE-Keywords[it]=focus,piazzamento,comportamento finestre,animazione,alza,alza automaticamente,finestre,cornice,barra del titolo,doppio clic
++X-KDE-Keywords[ja]=フォーカス,配置,ウィンドウの挙動,アニメーション,前面へ,自動的に前面へ,ウィンドウ,フレーム,タイトルバー,ダブルクリック
++X-KDE-Keywords[km]=ផ្ដោត​អារម្មណ៍ ការ​ដាក់ ឥរិយាបថ​បង្អួច ចលនា លើកឡើង​លើ លើក​ឡើង​ស្វ័យប្រវត្ត បង្អួច ស៊ុម របារ​ចំណងជើង ចុច​ទ្វេ​ដង
++X-KDE-Keywords[lt]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick,lango išdėstymas,elgesys,langai,rėmelis,lango antraštė
++X-KDE-Keywords[lv]=fokuss,novietojums,loga izturēšanās,animācija,celt,auto celt,logi,kadrs,virsraksta josla,dubultklikšķis
++X-KDE-Keywords[mk]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,фокус,позиционирање,однесување на прозорците, анимација,подигање,авто подигање,прозорци,рамка,насловна лента,двоен клик
++X-KDE-Keywords[nb]=fokus,plassering,vindusoppførsel,animasjon,hev,autohev,vinduer,ramme,tittelliste,dobbeltklikk
++X-KDE-Keywords[nds]=Fokus,Platzeren,Finsterbedregen,Animatschoon,fokusseren,aktiveren,automaatsch fokusseren,Finster,Rahmen,Titelbalken,Dubbelklick
++X-KDE-Keywords[ne]=फोकस, स्थापना, सञ्झ्याल व्यवहार, एनिमेसन, बृद्धि, स्वत: बृद्धि, सञ्झ्याल, फ्रेम, शीर्षकपट्टी, डबल क्लिक
++X-KDE-Keywords[nl]=focusbeleid,vensterplaatsing,venstergedrag,focus,window,plaatsing,plaatsingbeleid,animatie,voorgrond,vensters,frame,kader,dubbelklikken
++X-KDE-Keywords[nn]=fokus,plassering,vindaugsplassering,vindaugsåtferd,animasjon,hev,automatisk heving,vindauge,ramme,tittellinje,dobbeltklikk
++X-KDE-Keywords[pa]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,ਵਿੰਡੋ ਵਿਹਾਰ,ਸਜੀਵਤਾ,ਝਰੋਖੇ
++X-KDE-Keywords[pl]=uaktywnianie,układanie okien,zachowanie okien,animacja,automatyczne uaktywnienie,okno,okna,ramka,pasek tytułowy,podwójne kliknięcie
++X-KDE-Keywords[pt]=foco,posicionamento,comportamento das janelas,animação,elevar,auto-elevar,janelas,contorno,barra de título,duplo-carregar
++X-KDE-Keywords[pt_BR]=foco,posicionamento,comportamento das janelas,animação,elevar,auto-elevar,janelas,moldura,barra de título,clique duplo
++X-KDE-Keywords[ro]=focus,plasare,comportament fereastră,animaţie,ridicare,automat,ferestre,cadru,bară de titlu,dublu clic
++X-KDE-Keywords[se]=fohkus,sajádat,láseláhtten,animašuvdna,lokte,autolokte,láset,rámma,namahusholga,duppalcoahkkal
++X-KDE-Keywords[sl]=fokus,postavitev,obnašanje okna,animacija,dvigni,okna,okvir,naslovna vrstica,dvojni klik
++X-KDE-Keywords[sr]=focus,placement,window behaviour,animation,raise,ауто raise,windows,frame,titlebar,doubleclick,фокус,понашање прозора,анимација,прозори,оквир,насловна линија,двоклик,подизање,аутоматско подизање,прозори
++X-KDE-Keywords[sr at latin]=focus,placement,window behaviour,animation,raise,auto raise,windows,frame,titlebar,doubleclick,fokus,ponašanje prozora,animacija,prozori,okvir,naslovna linija,dvoklik,podizanje,automatsko podizanje,prozori
++X-KDE-Keywords[sv]=fokus,placering,fönsterbeteende,animering,höj, autohöj,fönster,kant,namnlist,dubbelklick
++X-KDE-Keywords[ta]=பார்வை,இடம்,சாளரபண்பு,உயிர்சித்திரம்,மேலெழுப்பு, தானாக மேலெழுப்பு,சாளரங்கள்,சட்டம்,தலைப்புப்பட்டி,இரண்டு சொடுக்கு
++X-KDE-Keywords[tr]=odak,odak davranış biçimi,pencere yerleşimi,pencere davranışı,Yerleşim davranış biçimi,animasyon,kaldır,otomatik kaldır,çerçeve,çift tıkla
++X-KDE-Keywords[uk]=фокус,розташовування,поведінка вікна,анімація,підняти,піднімати автоматично,вікна,рамка,заголовок,подвійне клацання
++X-KDE-Keywords[uz]=фокуслаш,жойлашиш,ойнанинг хусусиятлари,анимация,олдинга,авто-олдинга,ойналар,фрейм,сарлавҳа,икки марта босиш
++X-KDE-Keywords[vi]=chọn,dịch chuyển,ứng xử cửa sổ,hoạt hình,nâng lên,tự nâng lên,cửa sổ,khung,thanh tiêu đề,nhấn đúp
++X-KDE-Keywords[x-test]=xxfocus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclickxx
++X-KDE-Keywords[zh_CN]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,焦点,放置,窗口行为,动画,升起,自动升起,窗口,框架,标题栏,双击
++X-KDE-Keywords[zh_TW]=focus,placement,window behavior,animation,raise,auto raise,windows,frame,titlebar,doubleclick,焦點,放置,視窗行為,動畫,抬升,自動抬升,視窗,框架,標題列,雙擊
+ 
+ Categories=Qt;KDE;X-KDE-settings-looknfeel;
+ 
+--- a/kwin/kcmkwin/kwinoptions/kwinmoving.desktop
++++ b/kwin/kcmkwin/kwinoptions/kwinmoving.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-system-windows-movement
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Exec=kcmshell4 kwinmoving
+-DocPath=kcontrol/windowmanagement/index.html#action-moving
++X-DocPath=kcontrol/windowmanagement/index.html#action-moving
+ 
+ X-KDE-Library=kcm_kwinoptions
+ X-KDE-PluginKeyword=kwinmoving
+@@ -134,55 +133,55 @@
+ Comment[zh_CN]=配置窗口移动的方式
+ Comment[zh_TW]=設定視窗移動的方式
+ 
+-Keywords=moving,smart,cascade,maximize,maximise,snap zone,snap,border
+-Keywords[be]=Перамяшчэнне,Каскадам,Найбольшыць,Найменшыць,Мяжа,moving,smart,cascade,maximize,maximise,snap zone,snap,border
+-Keywords[bg]=Keywords=преместване, прозорци, прозорец, промяна, размер, размера, moving, smart, cascade, maximize, maximise, snap zone, snap, border
+-Keywords[ca]=moviment,astut,cascada,maximitza,zona d'atracció,atracció,vora
+-Keywords[cs]=přesun,chytré,kaskáda,maximalizace,zóna,okraje
+-Keywords[csb]=przesëwanié,kaskadowò,masymilizacëjô,òbéńda chwëtaniô,chwëtanié,grańca
+-Keywords[cy]=symud,clyfar,rhaedru,maint llawn,cylchfa gosod,snap,ymyl
+-Keywords[da]=flytter,smart,stabl,maksimér,snapzone,snap,kant
+-Keywords[de]=Verschieben,Gestaffelt,Maximieren,Minimieren,Einrastzone,Ränder
+-Keywords[el]=μετακίνηση,έξυπνη,διαδοχικός,μεγιστοποίηση,μεγιστοποίηση,ζώνη αρπαγής,αρπαγή,περίγραμμα
+-Keywords[eo]=mavanta,maksimigi,bordo
+-Keywords[es]=moviendo,inteligente,cascada,maximizar,zona de adhesión,adhesión,adherir,borde 
+-Keywords[et]=liigutamine,tark,kaskaad,maksimeerimine,haaramise tsoon,haaramine,piire
+-Keywords[eu]=mugitzen,fina,kaskadan,maximizatu,itsasketa eremua, itsasketa,ertza
+-Keywords[fa]=حرکت، هوشمند، آبشاری، بیشینه‌ساز‌ی، بیشینه‌ساز‌ی، منطقۀ پرش، پرش، لبه
+-Keywords[fi]=liikkuva,älykäs,sarjoita,suurenna,kehys
+-Keywords[fr]=déplacement,cascade,maximiser,minimiser,coller,zone d'attraction,bordure
+-Keywords[fy]=verplaatsing,ferpleatse,intelligen,yntelligint,tûk,plaatsing,pleatsing,trapsgewijs,trepfoarm,maximaliseren,maksimalisearje,randen magnetisch,magnetisch veld,rand,râne,magnetische randen
+-Keywords[gl]=movemento,pequeno,fervenza,maximizar,maximizar,zona de suxección,suexección,beira
+-Keywords[he]=הזזה,חכם,מדורג,הגדלה,אזור הצמדה,הצמדה,גבול, moving,smart,cascade,maximize,maximise,snap zone,snap,border
+-Keywords[hr]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,pomicanje,pametno,kaskadno,maksimiziranje,snap zona,snap,obrub
+-Keywords[hu]=mozgatás,intelligens,lépcsőzetes,maximalizálás,illeszkedési zóna,illeszkedés,szegély
+-Keywords[is]=færi,snjallt,stafla,hámarka,gripsvæði,grip,rammi,jaðar
+-Keywords[it]=spostamento,intelligente,cascata,massimizza,zona magnetica,bordi,bordi magnetici
+-Keywords[ja]=移動,スマート,カスケード,最大化,スナップゾーン,スナップ境界
+-Keywords[km]=ការ​ផ្លាស់ទី ឆ្លាត ល្បាក់ ពង្រីក​អប្បបរមា តំបន់​ខ្ទាស់ ខ្ទាស់ ស៊ុម
+-Keywords[lt]=moving,smart,cascade,maximize,maximise,snap zone,snap,border, perkėlimas,išmoningas,kaskada,išdidinti,rėmelis,riba
+-Keywords[lv]=pārvietošana,gudra,kaskāde,maksimizē,maksimizēšana,pielipsanas zona,pielipt,mala
+-Keywords[mk]=moving,smart,cascade,maximize,maximise,snap zone,snap,border, движење,паметно,каскадно,рашири,спушти,граница
+-Keywords[nb]=flytting,smart,overlapping,maksimer,kantlås,vindu
+-Keywords[nds]=bewegen,verschuven,plietsch,maximeren,minimeren,Andockrebeet,andocken,Rahmen
+-Keywords[ne]=सार्दा, छरितो, क्यासकेड, बढाउनु, बढाउनु, स्न्याप जोन, स्न्याप, किनारा
+-Keywords[nl]=verplaatsing,intelligent,plaatsing,trapsgewijs,maximaliseren,randen magnetisch,magnetisch veld,rand,magnetische randen
+-Keywords[nn]=flytting,smart,overlapping,maksimer,kantlås,vindauge
+-Keywords[pa]=moving,smart,cascade,maximize,maximise,snap zone,snap,ਹਾਸ਼ੀਆ
+-Keywords[pl]=przesuwanie,sprytne,kaskadowo,maksymalizacja,obszar chwytania,chwytanie, granica
+-Keywords[pt]=mover,inteligente,cascata,maximizar,zona de atracção,atracção,contorno
+-Keywords[pt_BR]=movendo,pequeno,cascata,maximizar,zona rápida,zona de encaixe,borda
+-Keywords[ro]=mutare,isteţ,cascadă,maximizare,margine
+-Keywords[sl]=premikanje,pametno,kaskadno,povečaj,raztegni,meja,mreža,pripni
+-Keywords[sr]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,померање,паметно,каскадно,наслагано,максимизуј,зона хватања,хватање,ивица
+-Keywords[sr at latin]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,pomeranje,pametno,kaskadno,naslagano,maksimizuj,zona hvatanja,hvatanje,ivica
+-Keywords[sv]=förflyttning,smart,kaskad,maximera,bindningszon,bind,kant
+-Keywords[ta]=நகரும்,புத்திசாலி,மேலுக்குமேல், பெரிதாக்கு,பெரிதாக்கு,நிழற் படமெடுப்பு பகுதி,நிழற்படம்,விளிம்பு
+-Keywords[tr]=taşıma,taşınma,akıllı,kenar
+-Keywords[uk]=пересування,кмітливий,каскад,максимізувати,зона захоплення,захоплення,рамка
+-Keywords[uz]=snap zone,snap,border,кўчириш,ихчам,ойналарни тартиблаш,ёйиш
+-Keywords[vi]=di chuyển,thông minh,tầng,phóng to,phóng to,vùng thả,thả,bờ
+-Keywords[x-test]=xxmoving,smart,cascade,maximize,maximise,snap zone,snap,borderxx
+-Keywords[xh]=iyashukuma,iyabukeka,cascade,yenza nkulu,yenza nkulu,yandisa,snap zone,snap,umda
+-Keywords[zh_CN]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,移动,智能,层叠,最大化,最小化,吸附区域,边框
+-Keywords[zh_TW]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,移動,聰明,最大化,邊框
++X-KDE-Keywords=moving,smart,cascade,maximize,maximise,snap zone,snap,border
++X-KDE-Keywords[be]=Перамяшчэнне,Каскадам,Найбольшыць,Найменшыць,Мяжа,moving,smart,cascade,maximize,maximise,snap zone,snap,border
++X-KDE-Keywords[bg]=Keywords=преместване, прозорци, прозорец, промяна, размер, размера, moving, smart, cascade, maximize, maximise, snap zone, snap, border
++X-KDE-Keywords[ca]=moviment,astut,cascada,maximitza,zona d'atracció,atracció,vora
++X-KDE-Keywords[cs]=přesun,chytré,kaskáda,maximalizace,zóna,okraje
++X-KDE-Keywords[csb]=przesëwanié,kaskadowò,masymilizacëjô,òbéńda chwëtaniô,chwëtanié,grańca
++X-KDE-Keywords[cy]=symud,clyfar,rhaedru,maint llawn,cylchfa gosod,snap,ymyl
++X-KDE-Keywords[da]=flytter,smart,stabl,maksimér,snapzone,snap,kant
++X-KDE-Keywords[de]=Verschieben,Gestaffelt,Maximieren,Minimieren,Einrastzone,Ränder
++X-KDE-Keywords[el]=μετακίνηση,έξυπνη,διαδοχικός,μεγιστοποίηση,μεγιστοποίηση,ζώνη αρπαγής,αρπαγή,περίγραμμα
++X-KDE-Keywords[eo]=mavanta,maksimigi,bordo
++X-KDE-Keywords[es]=moviendo,inteligente,cascada,maximizar,zona de adhesión,adhesión,adherir,borde
++X-KDE-Keywords[et]=liigutamine,tark,kaskaad,maksimeerimine,haaramise tsoon,haaramine,piire
++X-KDE-Keywords[eu]=mugitzen,fina,kaskadan,maximizatu,itsasketa eremua, itsasketa,ertza
++X-KDE-Keywords[fa]=حرکت، هوشمند، آبشاری، بیشینه‌ساز‌ی، بیشینه‌ساز‌ی، منطقۀ پرش، پرش، لبه
++X-KDE-Keywords[fi]=liikkuva,älykäs,sarjoita,suurenna,kehys
++X-KDE-Keywords[fr]=déplacement,cascade,maximiser,minimiser,coller,zone d'attraction,bordure
++X-KDE-Keywords[fy]=verplaatsing,ferpleatse,intelligen,yntelligint,tûk,plaatsing,pleatsing,trapsgewijs,trepfoarm,maximaliseren,maksimalisearje,randen magnetisch,magnetisch veld,rand,râne,magnetische randen
++X-KDE-Keywords[gl]=movemento,pequeno,fervenza,maximizar,maximizar,zona de suxección,suexección,beira
++X-KDE-Keywords[he]=הזזה,חכם,מדורג,הגדלה,אזור הצמדה,הצמדה,גבול, moving,smart,cascade,maximize,maximise,snap zone,snap,border
++X-KDE-Keywords[hr]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,pomicanje,pametno,kaskadno,maksimiziranje,snap zona,snap,obrub
++X-KDE-Keywords[hu]=mozgatás,intelligens,lépcsőzetes,maximalizálás,illeszkedési zóna,illeszkedés,szegély
++X-KDE-Keywords[is]=færi,snjallt,stafla,hámarka,gripsvæði,grip,rammi,jaðar
++X-KDE-Keywords[it]=spostamento,intelligente,cascata,massimizza,zona magnetica,bordi,bordi magnetici
++X-KDE-Keywords[ja]=移動,スマート,カスケード,最大化,スナップゾーン,スナップ境界
++X-KDE-Keywords[km]=ការ​ផ្លាស់ទី ឆ្លាត ល្បាក់ ពង្រីក​អប្បបរមា តំបន់​ខ្ទាស់ ខ្ទាស់ ស៊ុម
++X-KDE-Keywords[lt]=moving,smart,cascade,maximize,maximise,snap zone,snap,border, perkėlimas,išmoningas,kaskada,išdidinti,rėmelis,riba
++X-KDE-Keywords[lv]=pārvietošana,gudra,kaskāde,maksimizē,maksimizēšana,pielipsanas zona,pielipt,mala
++X-KDE-Keywords[mk]=moving,smart,cascade,maximize,maximise,snap zone,snap,border, движење,паметно,каскадно,рашири,спушти,граница
++X-KDE-Keywords[nb]=flytting,smart,overlapping,maksimer,kantlås,vindu
++X-KDE-Keywords[nds]=bewegen,verschuven,plietsch,maximeren,minimeren,Andockrebeet,andocken,Rahmen
++X-KDE-Keywords[ne]=सार्दा, छरितो, क्यासकेड, बढाउनु, बढाउनु, स्न्याप जोन, स्न्याप, किनारा
++X-KDE-Keywords[nl]=verplaatsing,intelligent,plaatsing,trapsgewijs,maximaliseren,randen magnetisch,magnetisch veld,rand,magnetische randen
++X-KDE-Keywords[nn]=flytting,smart,overlapping,maksimer,kantlås,vindauge
++X-KDE-Keywords[pa]=moving,smart,cascade,maximize,maximise,snap zone,snap,ਹਾਸ਼ੀਆ
++X-KDE-Keywords[pl]=przesuwanie,sprytne,kaskadowo,maksymalizacja,obszar chwytania,chwytanie, granica
++X-KDE-Keywords[pt]=mover,inteligente,cascata,maximizar,zona de atracção,atracção,contorno
++X-KDE-Keywords[pt_BR]=movendo,pequeno,cascata,maximizar,zona rápida,zona de encaixe,borda
++X-KDE-Keywords[ro]=mutare,isteţ,cascadă,maximizare,margine
++X-KDE-Keywords[sl]=premikanje,pametno,kaskadno,povečaj,raztegni,meja,mreža,pripni
++X-KDE-Keywords[sr]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,померање,паметно,каскадно,наслагано,максимизуј,зона хватања,хватање,ивица
++X-KDE-Keywords[sr at latin]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,pomeranje,pametno,kaskadno,naslagano,maksimizuj,zona hvatanja,hvatanje,ivica
++X-KDE-Keywords[sv]=förflyttning,smart,kaskad,maximera,bindningszon,bind,kant
++X-KDE-Keywords[ta]=நகரும்,புத்திசாலி,மேலுக்குமேல், பெரிதாக்கு,பெரிதாக்கு,நிழற் படமெடுப்பு பகுதி,நிழற்படம்,விளிம்பு
++X-KDE-Keywords[tr]=taşıma,taşınma,akıllı,kenar
++X-KDE-Keywords[uk]=пересування,кмітливий,каскад,максимізувати,зона захоплення,захоплення,рамка
++X-KDE-Keywords[uz]=snap zone,snap,border,кўчириш,ихчам,ойналарни тартиблаш,ёйиш
++X-KDE-Keywords[vi]=di chuyển,thông minh,tầng,phóng to,phóng to,vùng thả,thả,bờ
++X-KDE-Keywords[x-test]=xxmoving,smart,cascade,maximize,maximise,snap zone,snap,borderxx
++X-KDE-Keywords[xh]=iyashukuma,iyabukeka,cascade,yenza nkulu,yenza nkulu,yandisa,snap zone,snap,umda
++X-KDE-Keywords[zh_CN]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,移动,智能,层叠,最大化,最小化,吸附区域,边框
++X-KDE-Keywords[zh_TW]=moving,smart,cascade,maximize,maximise,snap zone,snap,border,移動,聰明,最大化,邊框
+--- a/kwin/kcmkwin/kwinoptions/kwinactions.desktop
++++ b/kwin/kcmkwin/kwinoptions/kwinactions.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-system-windows-action
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Exec=kcmshell4 kwinactions
+-DocPath=kcontrol/windowmanagement/index.html#action-actions
++X-DocPath=kcontrol/windowmanagement/index.html#action-actions
+ 
+ X-KDE-Library=kcm_kwinoptions
+ X-KDE-PluginKeyword=kwinactions
+@@ -135,57 +134,57 @@
+ Comment[zh_CN]=配置键盘和鼠标设置
+ Comment[zh_TW]=設定鍵盤與滑鼠的設定值
+ 
+-Keywords=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
+-Keywords[be]=Згарнуць,Найбольшыць,Найменшыць,Змяніць памер,Меню аперацыяў,Меню дзеянняў,Загаловак,shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
+-Keywords[bg]=Keywords=сгъване, максимизиране, минимизиране, заглавие, промяна, размер, shade, maximise, maximize, minimize, minimise, lower, operations menu, titlebar, resize
+-Keywords[ca]=plegar,maximitzar,minimitzar,passar al davant,operacions del menú, barra del títol,redimensionar
+-Keywords[cs]=zarolování,maximalizace,minimalizace,nabídka činností,titulek,změna velikosti
+-Keywords[csb]=ceniô,maksymalizacëjô,minimalizacëjô,niżi,menu dzejaniów,titlowô lëstew,zmiana miarë
+-Keywords[cy]=arliwio,ehangu,lleihau,iselhau,dewislen gweithrediadau, bar y teitl, ail-feintio
+-Keywords[da]=skyg,maksimér,minimér,sænk,operationsmenu,titellinje,ændr størrelse
+-Keywords[de]=Fensterheber,Maximieren,Minimieren,Nach oben/unten,Titelleiste,Größe ändern
+-Keywords[el]=σκίαση,τύλιγμα,μεγιστοποίηση,μεγιστοποίηση,ελαχιστοποίηση,ελαχιστοποίηση,κατέβασμα,μενού χειρισμών,μπάρα τίτλου,αλλαγή μεγέθους
+-Keywords[eo]=maksimigi,minimumigi,menuo,titolo,grandecŝanĝi,grandigi
+-Keywords[es]=recoger,maximizar,minimizar,pasar al frente,pasar atrás,operaciones,menñu barra de título,redimensionarmenu,titlebar,resize
+-Keywords[et]=varjamine,maksimeerimine,minimeerimine,toimingute menüü,langetamine,tõstmine,tiitliriba,suuruse muutmine
+-Keywords[eu]=bildu,maximizatu,minimizatu,atzera eraman,eragiketak, menua,titulu-barra,tamaina aldatu
+-Keywords[fa]=سایه، بیشینه‌ساز‌ی، بیشینه‌ساز‌ی، کمینه‌ساز‌ی، کمینه‌ساز‌ی، پایین‌تر، گزینگان عملیات، میله عنوان، تغییر اندازه
+-Keywords[fi]=varjosta,suurenna,pienennä,laske,toimintovalikko,otsikkopalkki,vaihda kokoa
+-Keywords[fr]=fondu,maximiser,enrouler,réduire,abaisser, menu des opérations,barre de titre,redimensionner
+-Keywords[fy]=shade,oprollen,maximaliseren,minimaliseren,naar achtergrond,lower,menu,titelbalk,grootte wijzigen,oprôlje,maksimalisearje,minimalisearje,nei eftergrûn,grutte
+-Keywords[ga]=scáthaigh,uasmhéadaigh,íosmhéadaigh,íoslaghdaigh,laghdaigh,roghchlár oibríochta,barra teidil,athraigh méid
+-Keywords[gl]=sombra,maximizar,maximizar,minimizar,baixar,menú de operacións,barra de título,redimensionar
+-Keywords[he]=גלילה,הגדלה,מזעור,שליחה לרקע,תפריט פעולות,שורת כותרת,שינוי גודל,shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
+-Keywords[hr]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,sjena,maksimiziranje,minimiziranje,postupci izbornika,naslov,naslovna traka,promjena veličine
+-Keywords[hu]=felgördítés,maximalizálás,maximalizált,minimalizálás,minimalizált,hátraengedés,műveletek menü,címsor,átméretezés
+-Keywords[is]=rúlla upp,skyggja,hámarka,lágmarka,sökkva,aðgerðavalmynd, titilrönd,breyta stærð
+-Keywords[it]=arrotola,massimizza,ingrandisci,minimizza,alza,abbassa,menu operazioni, barra del titolo,titolo,ridimensiona,sposta
+-Keywords[ja]=シェード,最大化,最小化,後面へ,操作メニュー,タイトルバー,サイズ変更,リサイズ
+-Keywords[km]=ស្រមោល,ពង្រីក​អតិបរមា,បង្រួម​អប្បបរមា,ទាបជាង,ចុះ​ក្រោម,ម៉ឺនុយ​ប្រតបត្តិការ,របារ​ចំណងជើង,ប្ដូរ​ទំហំ
+-Keywords[lt]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize, išdidinti,sumažinti,paslėpti, operacijų meniu,antraštės juosta,pakeisti dydį
+-Keywords[lv]=ēnot,maksimizēt,maksimizē,minimizet,minimizē,zemāks,darbības izvēlne,virsraksta josla,mainīt izmēru
+-Keywords[mk]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,засени,рашири,спушти,мени со операции,насловна лента,промени големина
+-Keywords[nb]=rulle opp,maksimere,minimere,endre størrelse,operasjoner,meny,tittel,skalere,vindu, tittellinje
+-Keywords[nds]=inrullen,maximeren,minimeren,utrullen,Akschonenmenü,Titelbalken,Grött ännern
+-Keywords[ne]=छायाँ, बढाउनु, बढाउनु, घटाउनु, घटाउनु,भन्दा तल, सञ्चालन मेनु, शीर्षकपट्टी, रिसाइज
+-Keywords[nl]= shade,oprollen,maximaliseren,minimaliseren,naar achtergrond,lower,menu,tibelbalk,grootte wijzigen
+-Keywords[nn]=rull opp,maksimer,minimer,senk,hev,operasjonsmeny,tittellinje,endra storleik,vindauge
+-Keywords[pa]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,ਨਿਊਨਤਮ,ਅਧਿਕਤਮ,ਕਾਰਵਾਈ ਮੇਨੂ,ਮੁੜ-ਅਕਾਰ
+-Keywords[pl]=cień,maksymalizacja,minimalizacja,niżej,menu działań,belka tutułowa, zmiana rozmiaru
+-Keywords[pt]=enrolar,maximizar,minimizar,baixar,menu de operações,barra de título,dimensionar
+-Keywords[pt_BR]=enrolar,maximizar,,maximizar,minimizar,minimizar,menor,menu de operações,barra de título,redimensionar
+-Keywords[ro]=derulare,maximizare,minimizare,meniul de operaţii,bara de titlu,redimensionare
+-Keywords[se]=rulle bajáš,maksimere,minimere,vuolit,dáhpáhusat,fállu,fálut,namahusholga,namahus,skálere
+-Keywords[sl]=zvij,raztegni,povečaj,pomanjšaj,razpni,menu operacij,naslovna vrstica,velikost
+-Keywords[sr]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,намотавање,максимизуј,минимизуј,ниже,мени операција,насловна трака,промена величине,спусти,подигни
+-Keywords[sr at latin]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,namotavanje,maksimizuj,minimizuj,niže,meni operacija,naslovna traka,promena veličine,spusti,podigni
+-Keywords[sv]=rulla upp,maximera,minimera,sänk,åtgärdsmeny,namnlist,ändra storlek
+-Keywords[ta]=நிழல், பெரிதாக்கு,பெரிதாக்கு,சிறிதாக்கு, சிறிதாக்கு, குறைந்த,செயல்கள் பட்டி,தலைப்பு பட்டி, அளவை மாற்று
+-Keywords[tr]=topla,küçült,büyüt,indir,işlemler,araç çubuğu
+-Keywords[uk]=згорнути,мінімізувати,максимізувати,опустити, меню операцій,смужка титулу,зміна розміру
+-Keywords[uz]=соялаш,ёйиш,йиғиш,орқага,амаллар менюси,сарлавҳа,resize
+-Keywords[vi]=bóng,phóng to,phóng to,thu nhỏ,thu nhỏ,hạ thấp,các thao tác trên trình đơn,tên thanh,thay đổi cỡ
+-Keywords[x-test]=xxshade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resizexx
+-Keywords[xh]=umthunzi,yandisa,yandisa,ncipisa nciphisa,yehlisa,menu zemisebenzi,iba yewonga,yenza ubungakanani kwakhona
+-Keywords[zh_CN]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,卷起,最大化,最小化,降低,操作菜单,标题栏,缩放
+-Keywords[zh_TW]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,收起,最大化,最小化,降下,操作選單,標題列,重設大小
++X-KDE-Keywords=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
++X-KDE-Keywords[be]=Згарнуць,Найбольшыць,Найменшыць,Змяніць памер,Меню аперацыяў,Меню дзеянняў,Загаловак,shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
++X-KDE-Keywords[bg]=Keywords=сгъване, максимизиране, минимизиране, заглавие, промяна, размер, shade, maximise, maximize, minimize, minimise, lower, operations menu, titlebar, resize
++X-KDE-Keywords[ca]=plegar,maximitzar,minimitzar,passar al davant,operacions del menú, barra del títol,redimensionar
++X-KDE-Keywords[cs]=zarolování,maximalizace,minimalizace,nabídka činností,titulek,změna velikosti
++X-KDE-Keywords[csb]=ceniô,maksymalizacëjô,minimalizacëjô,niżi,menu dzejaniów,titlowô lëstew,zmiana miarë
++X-KDE-Keywords[cy]=arliwio,ehangu,lleihau,iselhau,dewislen gweithrediadau, bar y teitl, ail-feintio
++X-KDE-Keywords[da]=skyg,maksimér,minimér,sænk,operationsmenu,titellinje,ændr størrelse
++X-KDE-Keywords[de]=Fensterheber,Maximieren,Minimieren,Nach oben/unten,Titelleiste,Größe ändern
++X-KDE-Keywords[el]=σκίαση,τύλιγμα,μεγιστοποίηση,μεγιστοποίηση,ελαχιστοποίηση,ελαχιστοποίηση,κατέβασμα,μενού χειρισμών,μπάρα τίτλου,αλλαγή μεγέθους
++X-KDE-Keywords[eo]=maksimigi,minimumigi,menuo,titolo,grandecŝanĝi,grandigi
++X-KDE-Keywords[es]=recoger,maximizar,minimizar,pasar al frente,pasar atrás,operaciones,menñu barra de título,redimensionarmenu,titlebar,resize
++X-KDE-Keywords[et]=varjamine,maksimeerimine,minimeerimine,toimingute menüü,langetamine,tõstmine,tiitliriba,suuruse muutmine
++X-KDE-Keywords[eu]=bildu,maximizatu,minimizatu,atzera eraman,eragiketak, menua,titulu-barra,tamaina aldatu
++X-KDE-Keywords[fa]=سایه، بیشینه‌ساز‌ی، بیشینه‌ساز‌ی، کمینه‌ساز‌ی، کمینه‌ساز‌ی، پایین‌تر، گزینگان عملیات، میله عنوان، تغییر اندازه
++X-KDE-Keywords[fi]=varjosta,suurenna,pienennä,laske,toimintovalikko,otsikkopalkki,vaihda kokoa
++X-KDE-Keywords[fr]=fondu,maximiser,enrouler,réduire,abaisser, menu des opérations,barre de titre,redimensionner
++X-KDE-Keywords[fy]=shade,oprollen,maximaliseren,minimaliseren,naar achtergrond,lower,menu,titelbalk,grootte wijzigen,oprôlje,maksimalisearje,minimalisearje,nei eftergrûn,grutte
++X-KDE-Keywords[ga]=scáthaigh,uasmhéadaigh,íosmhéadaigh,íoslaghdaigh,laghdaigh,roghchlár oibríochta,barra teidil,athraigh méid
++X-KDE-Keywords[gl]=sombra,maximizar,maximizar,minimizar,baixar,menú de operacións,barra de título,redimensionar
++X-KDE-Keywords[he]=גלילה,הגדלה,מזעור,שליחה לרקע,תפריט פעולות,שורת כותרת,שינוי גודל,shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize
++X-KDE-Keywords[hr]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,sjena,maksimiziranje,minimiziranje,postupci izbornika,naslov,naslovna traka,promjena veličine
++X-KDE-Keywords[hu]=felgördítés,maximalizálás,maximalizált,minimalizálás,minimalizált,hátraengedés,műveletek menü,címsor,átméretezés
++X-KDE-Keywords[is]=rúlla upp,skyggja,hámarka,lágmarka,sökkva,aðgerðavalmynd, titilrönd,breyta stærð
++X-KDE-Keywords[it]=arrotola,massimizza,ingrandisci,minimizza,alza,abbassa,menu operazioni, barra del titolo,titolo,ridimensiona,sposta
++X-KDE-Keywords[ja]=シェード,最大化,最小化,後面へ,操作メニュー,タイトルバー,サイズ変更,リサイズ
++X-KDE-Keywords[km]=ស្រមោល,ពង្រីក​អតិបរមា,បង្រួម​អប្បបរមា,ទាបជាង,ចុះ​ក្រោម,ម៉ឺនុយ​ប្រតបត្តិការ,របារ​ចំណងជើង,ប្ដូរ​ទំហំ
++X-KDE-Keywords[lt]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize, išdidinti,sumažinti,paslėpti, operacijų meniu,antraštės juosta,pakeisti dydį
++X-KDE-Keywords[lv]=ēnot,maksimizēt,maksimizē,minimizet,minimizē,zemāks,darbības izvēlne,virsraksta josla,mainīt izmēru
++X-KDE-Keywords[mk]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,засени,рашири,спушти,мени со операции,насловна лента,промени големина
++X-KDE-Keywords[nb]=rulle opp,maksimere,minimere,endre størrelse,operasjoner,meny,tittel,skalere,vindu, tittellinje
++X-KDE-Keywords[nds]=inrullen,maximeren,minimeren,utrullen,Akschonenmenü,Titelbalken,Grött ännern
++X-KDE-Keywords[ne]=छायाँ, बढाउनु, बढाउनु, घटाउनु, घटाउनु,भन्दा तल, सञ्चालन मेनु, शीर्षकपट्टी, रिसाइज
++X-KDE-Keywords[nl]= shade,oprollen,maximaliseren,minimaliseren,naar achtergrond,lower,menu,tibelbalk,grootte wijzigen
++X-KDE-Keywords[nn]=rull opp,maksimer,minimer,senk,hev,operasjonsmeny,tittellinje,endra storleik,vindauge
++X-KDE-Keywords[pa]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,ਨਿਊਨਤਮ,ਅਧਿਕਤਮ,ਕਾਰਵਾਈ ਮੇਨੂ,ਮੁੜ-ਅਕਾਰ
++X-KDE-Keywords[pl]=cień,maksymalizacja,minimalizacja,niżej,menu działań,belka tutułowa, zmiana rozmiaru
++X-KDE-Keywords[pt]=enrolar,maximizar,minimizar,baixar,menu de operações,barra de título,dimensionar
++X-KDE-Keywords[pt_BR]=enrolar,maximizar,,maximizar,minimizar,minimizar,menor,menu de operações,barra de título,redimensionar
++X-KDE-Keywords[ro]=derulare,maximizare,minimizare,meniul de operaţii,bara de titlu,redimensionare
++X-KDE-Keywords[se]=rulle bajáš,maksimere,minimere,vuolit,dáhpáhusat,fállu,fálut,namahusholga,namahus,skálere
++X-KDE-Keywords[sl]=zvij,raztegni,povečaj,pomanjšaj,razpni,menu operacij,naslovna vrstica,velikost
++X-KDE-Keywords[sr]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,намотавање,максимизуј,минимизуј,ниже,мени операција,насловна трака,промена величине,спусти,подигни
++X-KDE-Keywords[sr at latin]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,namotavanje,maksimizuj,minimizuj,niže,meni operacija,naslovna traka,promena veličine,spusti,podigni
++X-KDE-Keywords[sv]=rulla upp,maximera,minimera,sänk,åtgärdsmeny,namnlist,ändra storlek
++X-KDE-Keywords[ta]=நிழல், பெரிதாக்கு,பெரிதாக்கு,சிறிதாக்கு, சிறிதாக்கு, குறைந்த,செயல்கள் பட்டி,தலைப்பு பட்டி, அளவை மாற்று
++X-KDE-Keywords[tr]=topla,küçült,büyüt,indir,işlemler,araç çubuğu
++X-KDE-Keywords[uk]=згорнути,мінімізувати,максимізувати,опустити, меню операцій,смужка титулу,зміна розміру
++X-KDE-Keywords[uz]=соялаш,ёйиш,йиғиш,орқага,амаллар менюси,сарлавҳа,resize
++X-KDE-Keywords[vi]=bóng,phóng to,phóng to,thu nhỏ,thu nhỏ,hạ thấp,các thao tác trên trình đơn,tên thanh,thay đổi cỡ
++X-KDE-Keywords[x-test]=xxshade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resizexx
++X-KDE-Keywords[xh]=umthunzi,yandisa,yandisa,ncipisa nciphisa,yehlisa,menu zemisebenzi,iba yewonga,yenza ubungakanani kwakhona
++X-KDE-Keywords[zh_CN]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,卷起,最大化,最小化,降低,操作菜单,标题栏,缩放
++X-KDE-Keywords[zh_TW]=shade,maximise,maximize,minimize,minimise,lower,operations menu,titlebar,resize,收起,最大化,最小化,降下,操作選單,標題列,重設大小
+--- a/kwin/kcmkwin/kwinoptions/kwinadvanced.desktop
++++ b/kwin/kcmkwin/kwinoptions/kwinadvanced.desktop
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-system-windows-advanced
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Exec=kcmshell4 kwinadvanced
+-DocPath=kcontrol/windowmanagement/index.html#action-advanced
++X-DocPath=kcontrol/windowmanagement/index.html#action-advanced
+ 
+ X-KDE-Library=kcm_kwinoptions
+ X-KDE-PluginKeyword=kwinadvanced
+@@ -21,7 +20,7 @@
+ Name[cy]=Uwch
+ Name[da]=Avanceret
+ Name[de]=Erweitert
+-Name[el]=Προχωρημένα
++Name[el]=Για προχωρημένους
+ Name[eo]=Pliaj
+ Name[es]=Avanzado
+ Name[et]=Muu
+@@ -85,7 +84,7 @@
+ Comment[cy]=Ffurfweddu Nodweddion Uwch Trefnu Ffenestri
+ Comment[da]=Indstil avancerede vindueshåndteringsegenskaber
+ Comment[de]=Erweiterte Fensterverwaltung einrichten
+-Comment[el]=Ρυθμίστε προχωρημένα χαρακτηριστικά της διαχείρισης παραθύρων
++Comment[el]=Ρύθμιση προχωρημένων χαρακτηριστικών της διαχείρισης παραθύρων
+ Comment[eo]=Agordu la pli bonajn fenestroadministrilecojn
+ Comment[es]=Configuración de las propiedades avanzadas del gestor de ventanas
+ Comment[et]=Aknahalduri seadistamine
+@@ -113,7 +112,7 @@
+ Comment[ne]=उन्नत सञ्झ्याल व्यवस्थापन आकृति कन्फिगर गर्नुहोस्
+ Comment[nl]=Hier kunt u de geavanceerde vensterbeheermogelijkheden instellen
+ Comment[nn]=Set opp avanserte vindaugshandsamarfunksjonar
+-Comment[pa]=ਤਕਨੀਕੀ ਝਰੋਖਾ ਪਰਬੰਧਨ ਫੀਚਰ ਸੰਰਚਨਾ
++Comment[pa]=ਤਕਨੀਕੀ ਵਿੰਡੋ ਮੈਨਿਜਮੈਂਟ ਫੀਚਰ ਸੰਰਚਨਾ
+ Comment[pl]=Konfiguracja zaawansowanych opcji zarządzania oknami
+ Comment[pt]=Configuração das funcionalidades de gestão de janelas avançadas
+ Comment[pt_BR]=Configurar os recursos avançados de gerenciamento de janela
+@@ -136,57 +135,57 @@
+ Comment[zh_CN]=配置高级窗口管理特性
+ Comment[zh_TW]=設定進階視窗管理功能
+ 
+-Keywords=shading,border,hover,active borders
+-Keywords[af]=shading,border,hover,active grense
+-Keywords[be]=Згортванне,Мяжа,Актыўныя межы,Актыўныя краі,shading,border,hover,active borders
+-Keywords[bg]=Keywords=рамка, сянка, фокус, активиране, shading, border, hover, active borders
+-Keywords[ca]=plegat,vora,desplegat automàtic,vores actives
+-Keywords[cs]=zarolování,vyrolování,okraj,přejezd myší,aktivní okraje
+-Keywords[csb]=cenienié,grańce,przesëwanié nad,aktiwné grańce
+-Keywords[cy]=arliwio,ymyl,hofran,ymylon weithgar
+-Keywords[da]=skygning,kant,svæv,aktive kanter
+-Keywords[de]=Umrandung,Aktive Ränder,Schweben,Fensterheber
+-Keywords[el]=τύλιγμα,περίγραμμα,hover,ενεργά όρια
+-Keywords[eo]=bordo
+-Keywords[es]=recogiendo,borde,ratón sobre,bordes activos
+-Keywords[et]=varjamine,piire,hover,aktiivsed piirded
+-Keywords[eu]=biltzen,ertza,gainean,ertz aktiboak
+-Keywords[fa]=سایه‌زنی، لبه، پلکیدن، لبه‌های فعال
+-Keywords[fi]=varjostus,kehys,kellunta,aktiiviset kehykset
+-Keywords[fr]=bordures,cacher,couvrir,bordures actives
+-Keywords[fy]=oprollen,oprôlje,afrollen,ôfrôlje,hoover,actieve randen,aktive rânen,randen magnetisch,magnetische randen
+-Keywords[ga]=scáthú,imlíne,foluain,imlínte beo
+-Keywords[gl]=sombra,beira,beiras activas,flotar
+-Keywords[he]=גלילה,מסגרת,גבול,ריחוף,גבולות פעילים,shading,border,hover,active borders
+-Keywords[hr]=shading,border,hover,active borders,osjenčavanje,obrubi,lebdjeće,aktivni obrubi
+-Keywords[hu]=árnyékolás,szegély,lebegés,aktív szegélyek
+-Keywords[is]=rúlla upp,skyggja,rammi,svif,hover,virkir rammar
+-Keywords[it]=arrotola,bordi,passaggio del mouse,bordi attivi
+-Keywords[ja]=畳む,境界,復元,アクティブ境界
+-Keywords[km]=ស្រមោល ស៊ុម សំកាំង ស៊ុម​សកម្ម
+-Keywords[lt]=shading,border,hover,active borders, tik antraštės juosta, rėmelis, aktyvūs rėmeliai
+-Keywords[lv]=ēnošana,mala,hover,aktīvās malas
+-Keywords[mk]=shading,border,hover,active borders,засенчување,граница,лебди,активни граници
+-Keywords[nb]=rull opp,sveve over,ramme,aktive rammer,kant
+-Keywords[nds]=Inrullen,Utrullen,Rahmen,hover,aktiven Rahmen
+-Keywords[ne]=छायाँ, किनारा, होभर, सक्रिय किनारा
+-Keywords[nl]=oprollen,afrollen,rand,hoover,actieve randen,randen magnetisch,magnetische randen
+-Keywords[nn]=rull opp,ramme,vindaugsramme,vindauge,mus over,aktive kantar
+-Keywords[pl]=cieniowanie,granice,przesuwanie ponad,aktywne granice
+-Keywords[pt]=enrolamento,contorno,passar por cima,contornos activos
+-Keywords[pt_BR]=enrolamento,borda,pairar,bordas ativas
+-Keywords[ro]=strîngere,margine,margini active
+-Keywords[se]=shading,border,hover,active borders,aktiivalaš láse,láse,aktiivalaš ravddat
+-Keywords[sl]=senčenje,rob,meja,lebdenje,aktivni robovi
+-Keywords[sr]=shading,border,hover,active borders,намотавање,ивица,лебдење,активне ивице
+-Keywords[sr at latin]=shading,border,hover,active borders,namotavanje,ivica,lebdenje,aktivne ivice
+-Keywords[sv]=skuggning,kant,sväva,aktiva kanter
+-Keywords[ta]=நிழலிடுதல்,விளிம்பு,ஹோவர், செயலில் உள்ள விளிம்புகள்
+-Keywords[tr]=toplama,sınır,etkin kenarlıklar
+-Keywords[uk]=згортання,рамка,проходження,активні рамки
+-Keywords[uz]=соялаш,чегара,актив чегаралар,hover
+-Keywords[vi]=che phủ,bờ,lượn,bờ hoạt động
+-Keywords[x-test]=xxshading,border,hover,active bordersxx
+-Keywords[xh]=ulwenziwo lwesithuba,umda,ixhonyiwe,imida esebenzayo
+-Keywords[zh_CN]=shading,border,hover,active borders,卷起,边框,悬停,激活边框
+-Keywords[zh_TW]=shading,border,hover,active borders,收起,邊框,停留,作用中邊框
++X-KDE-Keywords=shading,border,hover,active borders
++X-KDE-Keywords[af]=shading,border,hover,active grense
++X-KDE-Keywords[be]=Згортванне,Мяжа,Актыўныя межы,Актыўныя краі,shading,border,hover,active borders
++X-KDE-Keywords[bg]=Keywords=рамка, сянка, фокус, активиране, shading, border, hover, active borders
++X-KDE-Keywords[ca]=plegat,vora,desplegat automàtic,vores actives
++X-KDE-Keywords[cs]=zarolování,vyrolování,okraj,přejezd myší,aktivní okraje
++X-KDE-Keywords[csb]=cenienié,grańce,przesëwanié nad,aktiwné grańce
++X-KDE-Keywords[cy]=arliwio,ymyl,hofran,ymylon weithgar
++X-KDE-Keywords[da]=skygning,kant,svæv,aktive kanter
++X-KDE-Keywords[de]=Umrandung,Aktive Ränder,Schweben,Fensterheber
++X-KDE-Keywords[el]=τύλιγμα,περίγραμμα,hover,ενεργά όρια
++X-KDE-Keywords[eo]=bordo
++X-KDE-Keywords[es]=recogiendo,borde,ratón sobre,bordes activos
++X-KDE-Keywords[et]=varjamine,piire,hover,aktiivsed piirded
++X-KDE-Keywords[eu]=biltzen,ertza,gainean,ertz aktiboak
++X-KDE-Keywords[fa]=سایه‌زنی، لبه، پلکیدن، لبه‌های فعال
++X-KDE-Keywords[fi]=varjostus,kehys,kellunta,aktiiviset kehykset
++X-KDE-Keywords[fr]=bordures,cacher,couvrir,bordures actives
++X-KDE-Keywords[fy]=oprollen,oprôlje,afrollen,ôfrôlje,hoover,actieve randen,aktive rânen,randen magnetisch,magnetische randen
++X-KDE-Keywords[ga]=scáthú,imlíne,foluain,imlínte beo
++X-KDE-Keywords[gl]=sombra,beira,beiras activas,flotar
++X-KDE-Keywords[he]=גלילה,מסגרת,גבול,ריחוף,גבולות פעילים,shading,border,hover,active borders
++X-KDE-Keywords[hr]=shading,border,hover,active borders,osjenčavanje,obrubi,lebdjeće,aktivni obrubi
++X-KDE-Keywords[hu]=árnyékolás,szegély,lebegés,aktív szegélyek
++X-KDE-Keywords[is]=rúlla upp,skyggja,rammi,svif,hover,virkir rammar
++X-KDE-Keywords[it]=arrotola,bordi,passaggio del mouse,bordi attivi
++X-KDE-Keywords[ja]=畳む,境界,復元,アクティブ境界
++X-KDE-Keywords[km]=ស្រមោល ស៊ុម សំកាំង ស៊ុម​សកម្ម
++X-KDE-Keywords[lt]=shading,border,hover,active borders, tik antraštės juosta, rėmelis, aktyvūs rėmeliai
++X-KDE-Keywords[lv]=ēnošana,mala,hover,aktīvās malas
++X-KDE-Keywords[mk]=shading,border,hover,active borders,засенчување,граница,лебди,активни граници
++X-KDE-Keywords[nb]=rull opp,sveve over,ramme,aktive rammer,kant
++X-KDE-Keywords[nds]=Inrullen,Utrullen,Rahmen,hover,aktiven Rahmen
++X-KDE-Keywords[ne]=छायाँ, किनारा, होभर, सक्रिय किनारा
++X-KDE-Keywords[nl]=oprollen,afrollen,rand,hoover,actieve randen,randen magnetisch,magnetische randen
++X-KDE-Keywords[nn]=rull opp,ramme,vindaugsramme,vindauge,mus over,aktive kantar
++X-KDE-Keywords[pl]=cieniowanie,granice,przesuwanie ponad,aktywne granice
++X-KDE-Keywords[pt]=enrolamento,contorno,passar por cima,contornos activos
++X-KDE-Keywords[pt_BR]=enrolamento,borda,pairar,bordas ativas
++X-KDE-Keywords[ro]=strîngere,margine,margini active
++X-KDE-Keywords[se]=shading,border,hover,active borders,aktiivalaš láse,láse,aktiivalaš ravddat
++X-KDE-Keywords[sl]=senčenje,rob,meja,lebdenje,aktivni robovi
++X-KDE-Keywords[sr]=shading,border,hover,active borders,намотавање,ивица,лебдење,активне ивице
++X-KDE-Keywords[sr at latin]=shading,border,hover,active borders,namotavanje,ivica,lebdenje,aktivne ivice
++X-KDE-Keywords[sv]=skuggning,kant,sväva,aktiva kanter
++X-KDE-Keywords[ta]=நிழலிடுதல்,விளிம்பு,ஹோவர், செயலில் உள்ள விளிம்புகள்
++X-KDE-Keywords[tr]=toplama,sınır,etkin kenarlıklar
++X-KDE-Keywords[uk]=згортання,рамка,проходження,активні рамки
++X-KDE-Keywords[uz]=соялаш,чегара,актив чегаралар,hover
++X-KDE-Keywords[vi]=che phủ,bờ,lượn,bờ hoạt động
++X-KDE-Keywords[x-test]=xxshading,border,hover,active bordersxx
++X-KDE-Keywords[xh]=ulwenziwo lwesithuba,umda,ixhonyiwe,imida esebenzayo
++X-KDE-Keywords[zh_CN]=shading,border,hover,active borders,卷起,边框,悬停,激活边框
++X-KDE-Keywords[zh_TW]=shading,border,hover,active borders,收起,邊框,停留,作用中邊框
+--- a/kwin/kcmkwin/kwinoptions/windows.cpp
++++ b/kwin/kcmkwin/kwinoptions/windows.cpp
+@@ -61,8 +61,6 @@
+ #define KWIN_FOCUS                 "FocusPolicy"
+ #define KWIN_PLACEMENT             "Placement"
+ #define KWIN_MOVE                  "MoveMode"
+-#define KWIN_MINIMIZE_ANIM         "AnimateMinimize"
+-#define KWIN_MINIMIZE_ANIM_SPEED   "AnimateMinimizeSpeed"
+ #define KWIN_RESIZE_OPAQUE         "ResizeMode"
+ #define KWIN_GEOMETRY              "GeometryTip"
+ #define KWIN_AUTORAISE_INTERVAL    "AutoRaiseInterval"
+@@ -70,7 +68,6 @@
+ #define KWIN_DELAYFOCUS_INTERVAL   "DelayFocusInterval"
+ #define KWIN_DELAYFOCUS            "DelayFocus"
+ #define KWIN_CLICKRAISE            "ClickRaise"
+-#define KWIN_ANIMSHADE             "AnimateShade"
+ #define KWIN_MOVE_RESIZE_MAXIMIZED "MoveResizeMaximizedWindows"
+ #define KWIN_ALTTABMODE            "AltTabStyle"
+ #define KWIN_TRAVERSE_ALL          "TraverseAll"
+@@ -581,10 +578,6 @@
+ 
+     shBox = new Q3VButtonGroup(i18n("Shading"), this);
+ 
+-    animateShade = new QCheckBox(i18n("Anima&te"), shBox);
+-    animateShade->setWhatsThis( i18n("Animate the action of reducing the window to its titlebar (shading)"
+-                                       " as well as the expansion of a shaded window") );
+-
+     shadeHoverOn = new QCheckBox(i18n("&Enable hover"), shBox);
+ 
+     connect(shadeHoverOn, SIGNAL(toggled(bool)), this, SLOT(shadeHoverChanged(bool)));
+@@ -605,7 +598,6 @@
+     lay->addWidget(shBox);
+ 
+     // Any changes goes to slotChanged()
+-    connect(animateShade, SIGNAL(toggled(bool)), SLOT(changed()));
+     connect(shadeHoverOn, SIGNAL(toggled(bool)), SLOT(changed()));
+     connect(shadeHover, SIGNAL(valueChanged(int)), SLOT(changed()));
+ 
+@@ -702,10 +694,6 @@
+     shadeHover->setEnabled(a);
+ }
+ 
+-void KAdvancedConfig::setAnimateShade(bool a) {
+-    animateShade->setChecked(a);
+-}
+-
+ void KAdvancedConfig::setFocusStealing(int l) {
+     l = qMax( 0, qMin( 4, l ));
+     focusStealing->setCurrentIndex(l);
+@@ -719,7 +707,6 @@
+ {
+     KConfigGroup cg(config, "Windows");
+ 
+-    setAnimateShade(cg.readEntry(KWIN_ANIMSHADE, true));
+     setShadeHover(cg.readEntry(KWIN_SHADEHOVER, false));
+     setShadeHoverInterval(cg.readEntry(KWIN_SHADEHOVER_INTERVAL, 250));
+ 
+@@ -739,7 +726,6 @@
+     int v;
+ 
+     KConfigGroup cg(config, "Windows");
+-    cg.writeEntry(KWIN_ANIMSHADE, animateShade->isChecked());
+     cg.writeEntry(KWIN_SHADEHOVER, shadeHoverOn->isChecked());
+ 
+     v = getShadeHoverInterval();
+@@ -766,7 +752,6 @@
+ 
+ void KAdvancedConfig::defaults()
+ {
+-    setAnimateShade(true);
+     setShadeHover(false);
+     setShadeHoverInterval(250);
+     setElectricBorders(0);
+@@ -861,38 +846,6 @@
+     rLay->setColumnStretch(0,0);
+     rLay->setColumnStretch(1,1);
+ 
+-    minimizeAnimOn = new QCheckBox(i18n("Animate minimi&ze and restore"),
+-                                   windowsBox);
+-    minimizeAnimOn->setWhatsThis( i18n("Enable this option if you want an animation shown when"
+-                                          " windows are minimized or restored." ) );
+-    rLay->addWidget(minimizeAnimOn,0,0);
+-
+-    minimizeAnimSlider = new QSlider(windowsBox);
+-    minimizeAnimSlider->setRange( 0, 10 );
+-    minimizeAnimSlider->setSingleStep( 1 );
+-    minimizeAnimSlider->setPageStep( 1 );
+-    minimizeAnimSlider->setValue( 0 );
+-    minimizeAnimSlider->setOrientation( Qt::Horizontal );
+-    minimizeAnimSlider->setTickPosition(QSlider::TicksBelow);
+-    rLay->addWidget(minimizeAnimSlider,0,1,1,2);
+-
+-    connect(minimizeAnimOn, SIGNAL(toggled(bool)), this, SLOT(setMinimizeAnim(bool)));
+-    connect(minimizeAnimSlider, SIGNAL(valueChanged(int)), this, SLOT(setMinimizeAnimSpeed(int)));
+-
+-    minimizeAnimSlowLabel= new QLabel(i18n("Slow"),windowsBox);
+-    minimizeAnimSlowLabel->setAlignment(Qt::AlignTop|Qt::AlignLeft);
+-    rLay->addWidget(minimizeAnimSlowLabel,1,1);
+-
+-    minimizeAnimFastLabel= new QLabel(i18n("Fast"),windowsBox);
+-    minimizeAnimFastLabel->setAlignment(Qt::AlignTop|Qt::AlignRight);
+-    rLay->addWidget(minimizeAnimFastLabel,1,2);
+-
+-    wtstr = i18n("Here you can set the speed of the animation shown when windows are"
+-                 " minimized and restored. ");
+-    minimizeAnimSlider->setWhatsThis( wtstr );
+-    minimizeAnimSlowLabel->setWhatsThis( wtstr );
+-    minimizeAnimFastLabel->setWhatsThis( wtstr );
+-
+     moveResizeMaximized = new QCheckBox( i18n("Allow moving and resizing o&f maximized windows"), windowsBox);
+     bLay->addWidget(moveResizeMaximized);
+     moveResizeMaximized->setWhatsThis( i18n("When enabled, this feature activates the border of maximized windows"
+@@ -992,8 +945,6 @@
+     connect( opaque, SIGNAL(clicked()), SLOT(changed()));
+     connect( resizeOpaqueOn, SIGNAL(clicked()), SLOT(changed()));
+     connect( geometryTipOn, SIGNAL(clicked()), SLOT(changed()));
+-    connect( minimizeAnimOn, SIGNAL(clicked() ), SLOT(changed()));
+-    connect( minimizeAnimSlider, SIGNAL(valueChanged(int)), SLOT(changed()));
+     connect( moveResizeMaximized, SIGNAL(toggled(bool)), SLOT(changed()));
+     connect( placementCombo, SIGNAL(activated(int)), SLOT(changed()));
+     connect( BrdrSnap, SIGNAL(valueChanged(int)), SLOT(changed()));
+@@ -1038,29 +989,6 @@
+     placementCombo->setCurrentIndex(plac);
+ }
+ 
+-bool KMovingConfig::getMinimizeAnim()
+-{
+-    return minimizeAnimOn->isChecked();
+-}
+-
+-int KMovingConfig::getMinimizeAnimSpeed()
+-{
+-    return minimizeAnimSlider->value();
+-}
+-
+-void KMovingConfig::setMinimizeAnim(bool anim)
+-{
+-    minimizeAnimOn->setChecked( anim );
+-    minimizeAnimSlider->setEnabled( anim );
+-    minimizeAnimSlowLabel->setEnabled( anim );
+-    minimizeAnimFastLabel->setEnabled( anim );
+-}
+-
+-void KMovingConfig::setMinimizeAnimSpeed(int speed)
+-{
+-    minimizeAnimSlider->setValue(speed);
+-}
+-
+ int KMovingConfig::getResizeOpaque()
+ {
+     return (resizeOpaqueOn->isChecked())? RESIZE_OPAQUE : RESIZE_TRANSPARENT;
+@@ -1095,14 +1023,6 @@
+     else if( key == "Opaque")
+         setMove(OPAQUE);
+ 
+-    //CT 17Jun1998 - variable animation speed from 0 (none!!) to 10 (max)
+-    bool anim = cg.readEntry(KWIN_MINIMIZE_ANIM, true);
+-    int animSpeed = cg.readEntry(KWIN_MINIMIZE_ANIM_SPEED, 5);
+-    if( animSpeed < 1 ) animSpeed = 0;
+-    if( animSpeed > 10 ) animSpeed = 10;
+-    setMinimizeAnim( anim );
+-    setMinimizeAnimSpeed( animSpeed );
+-
+     // DF: please keep the default consistent with kwin (options.cpp line 145)
+     key = cg.readEntry(KWIN_RESIZE_OPAQUE, "Opaque");
+     if( key == "Opaque")
+@@ -1203,9 +1123,6 @@
+     else
+         cg.writeEntry(KWIN_PLACEMENT, "Smart");
+ 
+-    cg.writeEntry(KWIN_MINIMIZE_ANIM, getMinimizeAnim());
+-    cg.writeEntry(KWIN_MINIMIZE_ANIM_SPEED, getMinimizeAnimSpeed());
+-
+     v = getResizeOpaque();
+     if (v == RESIZE_OPAQUE)
+         cg.writeEntry(KWIN_RESIZE_OPAQUE, "Opaque");
+@@ -1243,8 +1160,6 @@
+     setBorderSnapZone(KWM_BRDR_SNAP_ZONE_DEFAULT);
+     OverlapSnap->setChecked(false);
+ 
+-    setMinimizeAnim( true );
+-    setMinimizeAnimSpeed( 5 );
+     emit KCModule::changed(true);
+ }
+ 
+--- a/kwin/options.cpp
++++ b/kwin/options.cpp
+@@ -107,10 +107,6 @@
+     xineramaPlacementScreen = qBound( -1, config.readEntry( "XineramaPlacementScreen", -1 ),
+         qApp->desktop()->numScreens() - 1 );
+ 
+-    animateShade = config.readEntry("AnimateShade", true);
+-    animateMinimize = config.readEntry("AnimateMinimize", true);
+-    animateMinimizeSpeed = config.readEntry("AnimateMinimizeSpeed", 5 );
+-
+     if( focusPolicy == ClickToFocus )
+         {
+         autoRaise = false;
+--- a/kwin/scene_opengl.cpp
++++ b/kwin/scene_opengl.cpp
+@@ -550,6 +550,11 @@
+         kDebug( 1212 ) << "Couldn't find framebuffer configuration for default depth!";
+         return false;
+         }
++    if( fbcdrawableinfo[ 32 ].fbconfig == NULL )
++        {
++        kDebug( 1212 ) << "Couldn't find framebuffer configuration for depth 32!";
++        return false;
++        }
+     return true;
+     }
+ 
+--- a/kwin/COMPOSITE_TODO
++++ b/kwin/COMPOSITE_TODO
+@@ -23,9 +23,6 @@
+ KDE 4.0 TODO
+ =================================
+ 
+-/ shortcut configuration
+-    / configurable per effect (in the options dialog)
+-
+ / different handling of differeng gfx cards
+     / check that nvidia/ati/intel work and add specific hacks if needed
+     / the same about driver versions
+@@ -35,59 +32,37 @@
+ - effects (to do)
+     / add configuration options (dialogs)
+     - add generic support to use effect only for certain window types [Seli]
+-    / split effects to groups (eyecandy, accessibility, whatever)
+-    - login effect, e.g. fade to desktop
+-    - logout effect [Seli]
+     - explosion
+ ?       - use for forcible killing (add support to windowClosed())
+     - diminactive
+ *       - needs grouping for unmanaged windows [Seli]
+-        - trailfocus (windows keep getting darker over time)
+-*   - inactive window notification (when it stops responding) [Seli]
+     - shadow
+         - xrender mode
+         - needs to follow the window shape
+-    - make transparent
+-        - make windows that are moved/resized by the user slightly transparent
+-    - hide all testing, demo etc. effects in final builds
+-    - boxswitch
+-        - should share some features (next/previous, etc.) with presentwindows
+-?           - duplicate code or try to share it?
+     - desktopgrid
+         - should preserve aspect ratio (as an option?)
+     - taskbar thumbnail [Seli]
+-        - define protocol (with _KDE prefix for now?)
+-        - add support to taskbar
+-    - rollup animation when shading/unshading window  [Seli]
+-        - also use it for comboboxes
+-    - select a region to zoom
+-        - needs mouse to be warped
++        - we'll go with the hacky one, fix performance problems
+ 
+ - fix inclusion of config-X11.h in installed headers [Seli]
+ 
+-/ IHV database - set config settings according to card/driver
+-?   - some sort of performance slider
+-
+-? - unredirect fullscreen windows
+-
+ - fix shading
+ - window-specific rules need to apply to unmanaged windows as well (where applicable)
+ - some window-specific rules also related to compositing
+     - opacity
+ 
+-? generic dbus scripting support
+-
+-/ check effects' dependencies when loading [rivo]
+-
+ / handling of window pixmaps for unmapped windows [Seli]
+   - config option?
+ 
+ - shm mode needs support for more data formats than GL_BGRA
+ 
+ ? __GL_YIELD=NOTHING
++? LIBGL_ALWAYS_INDIRECT
+ 
+ - check what works with XRender
+ 
++- should OpenGL fall back to XRender if OpenGL initialization fails?
++
+ - more notification functions for effects
+ 
+ - documentation
+@@ -96,6 +71,11 @@
+ 
+ - since API won't be stable, a version check for modules is needed
+ 
++- Plasma taskbar doesn't set icon geometry
++
++- Plasma pager doesn't set desktop layout
++
++
+ 
+ General TODO
+ =================================
+--- a/kwin/kwin.notifyrc
++++ b/kwin/kwin.notifyrc
+@@ -33,6 +33,7 @@
+ Comment[ne]=केडीई सञ्झ्याल प्रयाल प्रबन्धक
+ Comment[nl]=De KDE Window Manager
+ Comment[nn]=Vindaugshandsamaren i KDE
++Comment[pa]=KDE ਵਿੰਡੋ ਮੈਨੇਜਰ
+ Comment[pl]=Menedżer okien KDE
+ Comment[pt]=O Gestor de Janelas do KDE
+ Comment[pt_BR]=O Gerenciador de Janelas KDE
+@@ -60,7 +61,7 @@
+ Name[da]=Skift til desktop 1
+ Name[de]=Auf Arbeitsfläche 1 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 1
+-Name[eo]=Al tabulo 1
++Name[eo]=Al labortablo 1
+ Name[et]=Liikumine 1. töölauale
+ Name[eu]=Aldatu 1. mahaigainera
+ Name[fi]=Vaihda työpöytään 1
+@@ -83,6 +84,7 @@
+ Name[ne]=डेस्कटप १ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 1
+ Name[nn]=Byt til skrivebord 1
++Name[pa]=ਡੈਸਕਟਾਪ 1 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 1
+ Name[pt]=Mudar para o Ecrã 1
+ Name[pt_BR]=Alternar para Área de Trabalho 1
+@@ -105,7 +107,7 @@
+ Comment[da]=Virtuel desktop én er valgt
+ Comment[de]=Arbeitsfläche 1 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η πρώτη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo unua estas elektita
++Comment[eo]=Labortablo unua estas elektita
+ Comment[et]=Esimene virtuaalne töölaud on valitud
+ Comment[eu]=Lehen mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä yksi on valittu
+@@ -129,6 +131,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप एक चयन गरियो
+ Comment[nl]=Virtueel bureaublad een is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer éin er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਇੱਕ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano pierwszy pulpit
+ Comment[pt]=Está seleccionado o ecrã um
+ Comment[pt_BR]=Área de trabalho virtual um está selecionada
+@@ -157,7 +160,7 @@
+ Name[da]=Skift til desktop 2
+ Name[de]=Auf Arbeitsfläche 2 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 2
+-Name[eo]=Al tabulo 2
++Name[eo]=Al labortablo 2
+ Name[et]=Liikumine 2. töölauale
+ Name[eu]=Aldatu 2. mahaigainera
+ Name[fi]=Vaihda työpöytään 2
+@@ -180,6 +183,7 @@
+ Name[ne]=डेस्कटप २ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 2
+ Name[nn]=Byt til skrivebord 2
++Name[pa]=ਡੈਸਕਟਾਪ 2 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 2
+ Name[pt]=Mudar para o Ecrã 2
+ Name[pt_BR]=Alternar para Área de Trabalho 2
+@@ -202,7 +206,7 @@
+ Comment[da]=Virtuel desktop to er valgt
+ Comment[de]=Arbeitsfläche 2 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η δεύτερη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dua estas elektita
++Comment[eo]=Labortablo dua estas elektita
+ Comment[et]=Teine virtuaalne töölaud on valitud
+ Comment[eu]=Bigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kaksi on valittu
+@@ -226,6 +230,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप दुई चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad twee is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer to er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਦੋ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano drugi pulpit
+ Comment[pt]=Está seleccionado o ecrã dois
+ Comment[pt_BR]=Área de trabalho virtual dois está selecionada
+@@ -254,7 +259,7 @@
+ Name[da]=Skift til desktop 3
+ Name[de]=Auf Arbeitsfläche 3 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 3
+-Name[eo]=Al tabulo 3
++Name[eo]=Al labortablo 3
+ Name[et]=Liikumine 3. töölauale
+ Name[eu]=Aldatu 3. mahaigainera
+ Name[fi]=Vaihda työpöytään 3
+@@ -277,6 +282,7 @@
+ Name[ne]=डेस्कटप ३ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 3
+ Name[nn]=Byt til skrivebord 3
++Name[pa]=ਡੈਸਕਟਾਪ 3 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 3
+ Name[pt]=Mudar para o Ecrã 3
+ Name[pt_BR]=Alternar para Área de Trabalho 3
+@@ -299,7 +305,7 @@
+ Comment[da]=Virtuel desktop tre er valgt
+ Comment[de]=Arbeitsfläche 3 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η τρίτη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo tria estas elektita
++Comment[eo]=Labortablo tria estas elektita
+ Comment[et]=Kolmas virtuaalne töölaud on valitud
+ Comment[eu]=Hirugarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kolme on valittu
+@@ -323,6 +329,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप तीन चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad drie is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer tre er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਤਿੰਨ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano trzeci pulpit
+ Comment[pt]=Está seleccionado o ecrã três
+ Comment[pt_BR]=Área de trabalho virtual três está selecionada
+@@ -351,7 +358,7 @@
+ Name[da]=Skift til desktop 4
+ Name[de]=Auf Arbeitsfläche 4 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 4
+-Name[eo]=Al tabulo 4
++Name[eo]=Al labortablo 4
+ Name[et]=Liikumine 4. töölauale
+ Name[eu]=Aldatu 4. mahaigainera
+ Name[fi]=Vaihda työpöytään 4
+@@ -374,6 +381,7 @@
+ Name[ne]=डेस्कटप ४ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 4
+ Name[nn]=Byt til skrivebord 4
++Name[pa]=ਡੈਸਕਟਾਪ 4 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 4
+ Name[pt]=Mudar para o Ecrã 4
+ Name[pt_BR]=Alternar para Área de Trabalho 4
+@@ -396,7 +404,7 @@
+ Comment[da]=Virtuel desktop fire er valgt
+ Comment[de]=Arbeitsfläche 4 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η τέταρτη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo kvara estas elektita
++Comment[eo]=Labortablo kvara estas elektita
+ Comment[et]=Neljas virtuaalne töölaud on valitud
+ Comment[eu]=Laugarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä neljä on valittu
+@@ -420,6 +428,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप चार चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad vier is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer fire er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਚਾਰ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano czwarty pulpit
+ Comment[pt]=Está seleccionado o ecrã quatro
+ Comment[pt_BR]=Área de trabalho virtual quatro está selecionada
+@@ -448,7 +457,7 @@
+ Name[da]=Skift til desktop 5
+ Name[de]=Auf Arbeitsfläche 5 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 5
+-Name[eo]=Al tabulo 5
++Name[eo]=Al labortablo 5
+ Name[et]=Liikumine 5. töölauale
+ Name[eu]=Aldatu 5. mahaigainera
+ Name[fi]=Vaihda työpöytään 5
+@@ -471,6 +480,7 @@
+ Name[ne]=डेस्कटप ५ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 5
+ Name[nn]=Byt til skrivebord 5
++Name[pa]=ਡੈਸਕਟਾਪ 5 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 5
+ Name[pt]=Mudar para o Ecrã 5
+ Name[pt_BR]=Alternar para Área de Trabalho 5
+@@ -493,7 +503,7 @@
+ Comment[da]=Virtuel desktop fem er valgt
+ Comment[de]=Arbeitsfläche 5 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η πέμπτη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo kvina estas elektita
++Comment[eo]=Labortablo kvina estas elektita
+ Comment[et]=Viies virtuaalne töölaud on valitud
+ Comment[eu]=Bostgarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä viisi on valittu
+@@ -517,6 +527,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप पाँच चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad vijf is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer fem er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਪੰਜ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano piąty pulpit
+ Comment[pt]=Está seleccionado o ecrã cinco
+ Comment[pt_BR]=Área de trabalho virtual cinco está selecionada
+@@ -545,7 +556,7 @@
+ Name[da]=Skift til desktop 6
+ Name[de]=Auf Arbeitsfläche 6 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 6
+-Name[eo]=Al tabulo 6
++Name[eo]=Al labortablo 6
+ Name[et]=Liikumine 6. töölauale
+ Name[eu]=Aldatu 6. mahaigainera
+ Name[fi]=Vaihda työpöytään 6
+@@ -568,6 +579,7 @@
+ Name[ne]=डेस्कटप ६ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 6
+ Name[nn]=Byt til skrivebord 6
++Name[pa]=ਡੈਸਕਟਾਪ 6 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 6
+ Name[pt]=Mudar para o Ecrã 6
+ Name[pt_BR]=Alternar para Área de Trabalho 6
+@@ -588,6 +600,7 @@
+ Comment[ca]=Se selecciona l'escriptori virtual sis
+ Comment[de]=Arbeitsfläche 6 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η έκτη εικονική επιφάνεια εργασίας
++Comment[eo]=Labortablo sesa estas elektita
+ Comment[et]=Kuues virtuaalne töölaud on valitud
+ Comment[ga]=Roghnaíodh deasc fhíorúil a sé
+ Comment[it]=Il desktop virtuale sei è selezionato
+@@ -600,6 +613,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप छ चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad zes is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer seks er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਛੇ ਚੁਣਿਆ ਗਿਆ
+ Comment[pt]=Está seleccionado o ecrã seis
+ Comment[pt_BR]=Área de trabalho virtual seis está selecionada
+ Comment[ro]=Ecranul virtual 6 este selectat
+@@ -624,7 +638,7 @@
+ Name[da]=Skift til desktop 7
+ Name[de]=Auf Arbeitsfläche 7 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 7
+-Name[eo]=Al tabulo 7
++Name[eo]=Al labortablo 7
+ Name[et]=Liikumine 7. töölauale
+ Name[eu]=Aldatu 7. mahaigainera
+ Name[fi]=Vaihda työpöytään 7
+@@ -647,6 +661,7 @@
+ Name[ne]=डेस्कटप ७ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 7
+ Name[nn]=Byt til skrivebord 7
++Name[pa]=ਡੈਸਕਟਾਪ 7 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 7
+ Name[pt]=Mudar para o Ecrã 7
+ Name[pt_BR]=Alternar para Área de Trabalho 7
+@@ -669,7 +684,7 @@
+ Comment[da]=Virtuel desktop syv er valgt
+ Comment[de]=Arbeitsfläche 7 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η έβδομη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo sepa estas elektita
++Comment[eo]=Labortablo sepa estas elektita
+ Comment[et]=Seitsmes virtuaalne töölaud on valitud
+ Comment[eu]=Zazpigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä seitsemän on valittu
+@@ -693,6 +708,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप सात चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad zeven is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer sju er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਸੱਤ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano siódmy pulpit
+ Comment[pt]=Está seleccionado o ecrã sete
+ Comment[pt_BR]=Área de trabalho virtual sete está selecionada
+@@ -721,7 +737,7 @@
+ Name[da]=Skift til desktop 8
+ Name[de]=Auf Arbeitsfläche 8 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 8
+-Name[eo]=Al tabulo 8
++Name[eo]=Al labortablo 8
+ Name[et]=Liikumine 8. töölauale
+ Name[eu]=Aldatu 8. mahaigainera
+ Name[fi]=Vaihda työpöytään 8
+@@ -744,6 +760,7 @@
+ Name[ne]=डेस्कटप ८ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 8
+ Name[nn]=Byt til skrivebord 8
++Name[pa]=ਡੈਸਕਟਾਪ 8 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 8
+ Name[pt]=Mudar para o Ecrã 8
+ Name[pt_BR]=Alternar para Área de Trabalho 8
+@@ -766,7 +783,7 @@
+ Comment[da]=Virtuel desktop otte er valgt
+ Comment[de]=Arbeitsfläche 8 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η όγδοη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo oka estas elektita
++Comment[eo]=Labortablo oka estas elektita
+ Comment[et]=Kaheksas virtuaalne töölaud on valitud
+ Comment[eu]=Zortzigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kahdeksan on valittu
+@@ -790,6 +807,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप आठ चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad acht is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer åtte er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਅੱਠ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano ósmy pulpit
+ Comment[pt]=Está seleccionado o ecrã oito
+ Comment[pt_BR]=Área de trabalho virtual oito está selecionada
+@@ -817,7 +835,7 @@
+ Name[da]=Skift til desktop 9
+ Name[de]=Auf Arbeitsfläche 9 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 9
+-Name[eo]=Al tabulo 9
++Name[eo]=Al labortablo 9
+ Name[et]=Liikumine 9. töölauale
+ Name[eu]=Aldatu 9. mahaigainera
+ Name[fi]=Vaihda työpöytään 9
+@@ -839,6 +857,7 @@
+ Name[ne]=डेस्कटप ९ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 9
+ Name[nn]=Byt til skrivebord 9
++Name[pa]=ਡੈਸਕਟਾਪ 9 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 9
+ Name[pt]=Mudar para o Ecrã 9
+ Name[pt_BR]=Alternar para Área de Trabalho 9
+@@ -860,7 +879,7 @@
+ Comment[da]=Virtuel desktop ni er valgt
+ Comment[de]=Arbeitsfläche 9 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η ένατη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo naŭa estas elektita
++Comment[eo]=Labortablo naŭa estas elektita
+ Comment[et]=Üheksas virtuaalne töölaud on valitud
+ Comment[eu]=Bederatzigarren mahaigain birtuala hautatua dago. 
+ Comment[fi]=Virtuaalityöpöytä yhdeksän on valittu
+@@ -883,6 +902,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप नौ चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad negen is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer ni er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਨੌਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano dziewiąty pulpit
+ Comment[pt]=Está seleccionado o ecrã nove
+ Comment[pt_BR]=Área de trabalho virtual nove está selecionada
+@@ -907,7 +927,7 @@
+ Name[da]=Skift til desktop 10
+ Name[de]=Auf Arbeitsfläche 10 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 10
+-Name[eo]=Al tabulo 10
++Name[eo]=Al labortablo 10
+ Name[et]=Liikumine 10. töölauale
+ Name[eu]=Aldatu 10. mahaigainera
+ Name[fi]=Vaihda työpöytään 10
+@@ -929,6 +949,7 @@
+ Name[ne]=डेस्कटप १० मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 10
+ Name[nn]=Byt til skrivebord 10
++Name[pa]=ਡੈਸਕਟਾਪ 10 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 10
+ Name[pt]=Mudar para o Ecrã 10
+ Name[pt_BR]=Alternar para Área de Trabalho 10
+@@ -950,7 +971,7 @@
+ Comment[da]=Virtuel desktop ti er valgt
+ Comment[de]=Arbeitsfläche 10 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η δέκατη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo deka estas elektita
++Comment[eo]=Labortablo deka estas elektita
+ Comment[et]=Kümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamargarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kymmenen on valittu
+@@ -973,6 +994,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप दश चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad tien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer ti er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਦਸ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano dziesiąty pulpit
+ Comment[pt]=Está seleccionado o ecrã dez
+ Comment[pt_BR]=Área de trabalho virtual dez está selecionada
+@@ -998,7 +1020,7 @@
+ Name[da]=Skift til desktop 11
+ Name[de]=Auf Arbeitsfläche 11 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 11
+-Name[eo]=Al tabulo 11
++Name[eo]=Al labortablo 11
+ Name[et]=Liikumine 11. töölauale
+ Name[eu]=Aldatu 11. mahaigainera
+ Name[fi]=Vaihda työpöytään 11
+@@ -1020,6 +1042,7 @@
+ Name[ne]=डेस्कटप ११ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 11
+ Name[nn]=Byt til skrivebord 11
++Name[pa]=ਡੈਸਕਟਾਪ 11 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 11
+ Name[pt]=Mudar para o Ecrã 11
+ Name[pt_BR]=Alternar para Área de Trabalho 11
+@@ -1041,7 +1064,7 @@
+ Comment[da]=Virtuel desktop elleve er valgt
+ Comment[de]=Arbeitsfläche 11 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η ενδέκατη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek unua estas elektita
++Comment[eo]=Labortablo dek unua estas elektita
+ Comment[et]=Üheteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamaikagarren. mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä yksitoista on valittu
+@@ -1064,6 +1087,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप एघार चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad elf is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer elleve er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਗਿਆਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano jedenasty pulpit
+ Comment[pt]=Está seleccionado o ecrã onze
+ Comment[pt_BR]=Área de trabalho virtual onze está selecionada
+@@ -1089,7 +1113,7 @@
+ Name[da]=Skift til desktop 12
+ Name[de]=Auf Arbeitsfläche 12 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 12
+-Name[eo]=Al tabulo 12
++Name[eo]=Al labortablo 12
+ Name[et]=Liikumine 12. töölauale
+ Name[eu]=Aldatu 12. mahaigainera
+ Name[fi]=Vaihda työpöytään 12
+@@ -1111,6 +1135,7 @@
+ Name[ne]=डेस्डेकटप १२ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 12
+ Name[nn]=Byt til skrivebord 12
++Name[pa]=ਡੈਸਕਟਾਪ 12 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 12
+ Name[pt]=Mudar para o Ecrã 12
+ Name[pt_BR]=Alternar para Área de Trabalho 12
+@@ -1132,7 +1157,7 @@
+ Comment[da]=Virtuel desktop tolv er valgt
+ Comment[de]=Arbeitsfläche 12 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η δωδέκατη εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek dua estas elektita
++Comment[eo]=Labortablo dek dua estas elektita
+ Comment[et]=Kaheteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamabigarren mahaigain birtuala hautatua dago.
+ Comment[fi]=Virtuaalityöpöytä kaksitoista on valittu
+@@ -1155,6 +1180,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप बाह्र चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad twaalf is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer tolv er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਬਾਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano dwunasty pulpit
+ Comment[pt]=Está seleccionado o ecrã doze
+ Comment[pt_BR]=Área de trabalho virtual doze está selecionada
+@@ -1180,7 +1206,7 @@
+ Name[da]=Skift til desktop 13
+ Name[de]=Auf Arbeitsfläche 13 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 13
+-Name[eo]=Al tabulo 13
++Name[eo]=Al labortablo 13
+ Name[et]=Liikumine 13. töölauale
+ Name[eu]=Aldatu 13. mahaigainera
+ Name[fi]=Vaihda työpöytään 13
+@@ -1202,6 +1228,7 @@
+ Name[ne]=डेस्कटप १३ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 13
+ Name[nn]=Byt til skrivebord 13
++Name[pa]=ਡੈਸਕਟਾਪ 13 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 13
+ Name[pt]=Mudar para o Ecrã 13
+ Name[pt_BR]=Alternar para Área de Trabalho 13
+@@ -1223,7 +1250,7 @@
+ Comment[da]=Virtuel desktop tretten er valgt
+ Comment[de]=Arbeitsfläche 13 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 13η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek tria estas elektita
++Comment[eo]=Labortablo dek tria estas elektita
+ Comment[et]=Kolmeteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamahirugarren mahaigain birtuala hautatua dago.
+ Comment[fi]=Virtuaalityöpöytä kolmetoista on valittu
+@@ -1246,6 +1273,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप तेह्र चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad dertien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer tretten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਤੇਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano trzynasty pulpit
+ Comment[pt]=Está seleccionado o ecrã treze
+ Comment[pt_BR]=Área de trabalho virtual treze está selecionada
+@@ -1271,7 +1299,7 @@
+ Name[da]=Skift til desktop 14
+ Name[de]=Auf Arbeitsfläche 14 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 14
+-Name[eo]=Al tabulo 14
++Name[eo]=Al labortablo 14
+ Name[et]=Liikumine 14. töölauale
+ Name[eu]=Aldatu 14. mahaigainera
+ Name[fi]=Vaihda työpöytään 14
+@@ -1293,6 +1321,7 @@
+ Name[ne]=डेस्कटप १४ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 14
+ Name[nn]=Byt til skrivebord 14
++Name[pa]=ਡੈਸਕਟਾਪ 14 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 14
+ Name[pt]=Mudar para o Ecrã 14
+ Name[pt_BR]=Alternar para Área de Trabalho 14
+@@ -1314,7 +1343,7 @@
+ Comment[da]=Virtuel desktop fjorten er valgt
+ Comment[de]=Arbeitsfläche 14 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 14η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek kvara estas elektita
++Comment[eo]=Labortablo dek kvara estas elektita
+ Comment[et]=Neljateistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamalaugarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä neljätoista on valittu
+@@ -1337,6 +1366,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप चौध चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad veertien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer fjorten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਚੌਦਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano czternasty pulpit
+ Comment[pt]=Está seleccionado o ecrã catorze
+ Comment[pt_BR]=Área de trabalho virtual quatorze está selecionada
+@@ -1362,7 +1392,7 @@
+ Name[da]=Skift til desktop 15
+ Name[de]=Auf Arbeitsfläche 15 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 15
+-Name[eo]=Al tabulo 15
++Name[eo]=Al labortablo 15
+ Name[et]=Liikumine 15. töölauale
+ Name[eu]=Aldatu 15. mahaigainera
+ Name[fi]=Vaihda työpöytään 15
+@@ -1384,6 +1414,7 @@
+ Name[ne]=डेस्कटप १५ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 15
+ Name[nn]=Byt til skrivebord 15
++Name[pa]=ਡੈਸਕਟਾਪ 15 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 15
+ Name[pt]=Mudar para o Ecrã 15
+ Name[pt_BR]=Alternar para Área de Trabalho 15
+@@ -1405,7 +1436,7 @@
+ Comment[da]=Virtuel desktop femten er valgt
+ Comment[de]=Arbeitsfläche 15 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 15η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek kvina estas elektita
++Comment[eo]=Labortablo dek kvina estas elektita
+ Comment[et]=Viieteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamabostgarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä viisitoista on valittu
+@@ -1428,6 +1459,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप पन्ध्र चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad vijftien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer femten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਪੰਦਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano piętnasty pulpit
+ Comment[pt]=Está seleccionado o ecrã quinze
+ Comment[pt_BR]=Área de trabalho virtual quinze está selecionada
+@@ -1453,7 +1485,7 @@
+ Name[da]=Skift til desktop 16
+ Name[de]=Auf Arbeitsfläche 16 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 16
+-Name[eo]=Al tabulo 16
++Name[eo]=Al labortablo 16
+ Name[et]=Liikumine 16. töölauale
+ Name[eu]=Aldatu 16. mahaigainera
+ Name[fi]=Vaihda työpöytään 16
+@@ -1475,6 +1507,7 @@
+ Name[ne]=डेस्कटप १६ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 16
+ Name[nn]=Byt til skrivebord 16
++Name[pa]=ਡੈਸਕਟਾਪ 16 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 16
+ Name[pt]=Mudar para o Ecrã 16
+ Name[pt_BR]=Alternar para Área de Trabalho 16
+@@ -1496,7 +1529,7 @@
+ Comment[da]=Virtuel desktop seksten er valgt
+ Comment[de]=Arbeitsfläche 16 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 16η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek sesa estas elektita
++Comment[eo]=Labortablo dek sesa estas elektita
+ Comment[et]=Kuueteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamaseigarrenmahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kuusitoista on valittu
+@@ -1519,6 +1552,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप सोह्र चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad zestien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer seksten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਸੋਲਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano szesnasty pulpit
+ Comment[pt]=Está seleccionado o ecrã dezasseis
+ Comment[pt_BR]=Área de trabalho virtual dezesseis está selecionada
+@@ -1544,7 +1578,7 @@
+ Name[da]=Skift til desktop 17
+ Name[de]=Auf Arbeitsfläche 17 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 17
+-Name[eo]=Al tabulo 17
++Name[eo]=Al labortablo 17
+ Name[et]=Liikumine 17. töölauale
+ Name[eu]=Aldatu 17. mahaigainera
+ Name[fi]=Vaihda työpöytään 17
+@@ -1566,6 +1600,7 @@
+ Name[ne]=डेस्कटप १७ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 17
+ Name[nn]=Byt til skrivebord 17
++Name[pa]=ਡੈਸਕਟਾਪ 17 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 17
+ Name[pt]=Mudar para o Ecrã 17
+ Name[pt_BR]=Alternar para Área de Trabalho 17
+@@ -1587,7 +1622,7 @@
+ Comment[da]=Virtuel desktop sytten er valgt
+ Comment[de]=Arbeitsfläche 17 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 17η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek sepa estas elektita
++Comment[eo]=Labortablo dek sepa estas elektita
+ Comment[et]=Seitsmeteistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamazazpigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä seitsemäntoista on valittu
+@@ -1610,6 +1645,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप सत्र चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad zeventien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer sytten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਸਤਾਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano siedemnasty pulpit
+ Comment[pt]=Está seleccionado o ecrã dezassete
+ Comment[pt_BR]=Área de trabalho virtual dezessete está selecionada
+@@ -1635,7 +1671,7 @@
+ Name[da]=Skift til desktop 18
+ Name[de]=Auf Arbeitsfläche 18 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 18
+-Name[eo]=Al tabulo 18
++Name[eo]=Al labortablo 18
+ Name[et]=Liikumine 18. töölauale
+ Name[eu]=Aldatu 18. mahaigainera
+ Name[fi]=Vaihda työpöytään 18
+@@ -1657,6 +1693,7 @@
+ Name[ne]=डेस्कटप १८ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 18
+ Name[nn]=Byt til skrivebord 18
++Name[pa]=ਡੈਸਕਟਾਪ 18 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 18
+ Name[pt]=Mudar para o Ecrã 18
+ Name[pt_BR]=Alternar para Área de Trabalho 18
+@@ -1678,7 +1715,7 @@
+ Comment[da]=Virtuel desktop atten er valgt
+ Comment[de]=Arbeitsfläche 18 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 18η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek oka estas elektita
++Comment[eo]=Labortablo dek oka estas elektita
+ Comment[et]=Kaheksateistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hamazortzigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kahdeksantoista on valittu
+@@ -1701,6 +1738,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप अठार चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad achttien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer atten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਅਠਾਰਾਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano osiemnasty pulpit
+ Comment[pt]=Está seleccionado o ecrã dezoito
+ Comment[pt_BR]=Área de trabalho virtual dezoito está selecionada
+@@ -1726,7 +1764,7 @@
+ Name[da]=Skift til desktop 19
+ Name[de]=Auf Arbeitsfläche 19 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 19
+-Name[eo]=Al tabulo 19
++Name[eo]=Al labortablo 19
+ Name[et]=Liikumine 19. töölauale
+ Name[eu]=Aldatu 19. mahaigainera
+ Name[fi]=Vaihda työpöytään 19
+@@ -1748,6 +1786,7 @@
+ Name[ne]=डेस्कटप १९ मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 19
+ Name[nn]=Byt til skrivebord 19
++Name[pa]=ਡੈਸਕਟਾਪ 19 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 19
+ Name[pt]=Mudar para o Ecrã 19
+ Name[pt_BR]=Alternar para Área de Trabalho 19
+@@ -1769,7 +1808,7 @@
+ Comment[da]=Virtuel desktop nitten er valgt
+ Comment[de]=Arbeitsfläche 19 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 19η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo dek naŭa estas elektita
++Comment[eo]=Labortablo dek naŭa estas elektita
+ Comment[et]=Üheksateistkümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hemeretzigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä yhdeksäntoista on valittu
+@@ -1792,6 +1831,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप उन्नाइस चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad negentien is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer nitten er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਉਨ੍ਹੀਂ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano dziewiętnasty pulpit
+ Comment[pt]=Está seleccionado o ecrã dezanove
+ Comment[pt_BR]=Área de trabalho virtual dezenove está selecionada
+@@ -1817,7 +1857,7 @@
+ Name[da]=Skift til desktop 20
+ Name[de]=Auf Arbeitsfläche 20 wechseln
+ Name[el]=Μετάβαση στην επιφάνεια εργασίας 20
+-Name[eo]=Al tabulo 20
++Name[eo]=Al labortablo 20
+ Name[et]=Liikumine 20. töölauale
+ Name[eu]=Aldatu 20. mahaigainera
+ Name[fi]=Vaihda työpöytään 20
+@@ -1839,6 +1879,7 @@
+ Name[ne]=डेस्कटप २० मा परिवर्तन गर्नुहोस्
+ Name[nl]=Naar bureaublad 20
+ Name[nn]=Byt til skrivebord 20
++Name[pa]=ਡੈਸਕਟਾਪ 20 ਲਈ ਬਦਲੋ
+ Name[pl]=Zmień na pulpit 20
+ Name[pt]=Mudar para o Ecrã 20
+ Name[pt_BR]=Alternar para Área de Trabalho 20
+@@ -1860,7 +1901,7 @@
+ Comment[da]=Virtuel desktop tyve er valgt
+ Comment[de]=Arbeitsfläche 20 ist ausgewählt
+ Comment[el]=Επιλέχθηκε η 20η εικονική επιφάνεια εργασίας
+-Comment[eo]=Tabulo du deka estas elektita
++Comment[eo]=Labortablo du deka estas elektita
+ Comment[et]=Kahekümnes virtuaalne töölaud on valitud
+ Comment[eu]=Hogeigarren mahaigain birtuala hautatua dago
+ Comment[fi]=Virtuaalityöpöytä kaksikymmentä on valittu
+@@ -1883,6 +1924,7 @@
+ Comment[ne]=अवास्तविक डेस्कटप बिस चयन गरिएको छ
+ Comment[nl]=Virtueel bureaublad twintig is geselecteerd
+ Comment[nn]=Virtuelt skrivebord nummer tjue er valt
++Comment[pa]=ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਵੀਹ ਚੁਣਿਆ ਗਿਆ
+ Comment[pl]=Wybrano dwudziesty pulpit
+ Comment[pt]=Está seleccionado o ecrã vinte
+ Comment[pt_BR]=Área de trabalho virtual vinte está selecionada
+@@ -1905,6 +1947,7 @@
+ Name[ca]=Activa finestra
+ Name[de]=Fenster aktivieren
+ Name[el]=Ενεργοποίηση παραθύρου
++Name[eo]=Aktiviĝo de fenestro
+ Name[et]=Akna aktiveerimine
+ Name[fy]=Finster aktivearje
+ Name[ga]=Gníomhachtaigh Fuinneog
+@@ -1918,6 +1961,7 @@
+ Name[ne]=सञ्झ्याल सक्रिय बनाउनुहोस्
+ Name[nl]=Venster activeren
+ Name[nn]=Aktiver vindauge
++Name[pa]=ਐਕਟਿਵੇਟ ਵਿੰਡੋ
+ Name[pt]=Activar a Janela
+ Name[pt_BR]=Ativar Janela
+ Name[sl]=Aktiviraj okno
+@@ -1958,6 +2002,7 @@
+ Comment[ne]=अर्को सञ्झ्याल सक्रिय बनाएको छ
+ Comment[nl]=Een ander venster is geactiveerd
+ Comment[nn]=Eit anna vindauge er aktivert
++Comment[pa]=ਹੋਰ ਵਿੰਡੋ ਐਕਟਿਵ ਹੈ
+ Comment[pl]=Uaktywnienie innego okna
+ Comment[pt]=Foi activada outra janela
+ Comment[pt_BR]=Outra janela está ativada
+@@ -2017,7 +2062,7 @@
+ Name[ne]=नयाँ सञ्झ्याल
+ Name[nl]=Nieuw venster
+ Name[nn]=Nytt vindauge
+-Name[pa]=ਨਵਾਂ ਝਰੋਖਾ
++Name[pa]=ਨਵੀਂ ਵਿੰਡੋ
+ Name[pl]=Nowe okno
+ Name[pt]=Nova Janela
+ Name[pt_BR]=Nova Janela
+@@ -2045,6 +2090,7 @@
+ Comment[ca]=Finestra nova
+ Comment[de]=Neues Fenster
+ Comment[el]=Νέο παράθυρο
++Comment[eo]=Nova fenestro
+ Comment[et]=Uus aken
+ Comment[fy]=Nij finster
+ Comment[ga]=Fuinneog nua
+@@ -2058,6 +2104,7 @@
+ Comment[ne]=नयाँ सञ्झ्याल
+ Comment[nl]=Nieuw venster
+ Comment[nn]=Nytt vindauge
++Comment[pa]=ਨਵੀਂ ਵਿੰਡੋ
+ Comment[pt]=Nova janela
+ Comment[pt_BR]=Nova janela
+ Comment[sl]=Novo okno
+@@ -2077,6 +2124,7 @@
+ Name[ca]=Elimina finestra
+ Name[de]=Fenster entfernen
+ Name[el]=Διαγραφή παραθύρου
++Name[eo]=Forigi fenestron
+ Name[et]=Akna kustutamine
+ Name[ga]=Scrios Fuinneog
+ Name[ja]=ウィンドウを削除
+@@ -2088,6 +2136,7 @@
+ Name[ne]=सञ्झ्याल मेट्नुहोस्
+ Name[nl]=Venster verwijderen
+ Name[nn]=Fjern vindauge
++Name[pa]=ਵਿੰਡੋ ਹਟਾਓ
+ Name[pt]=Apagar a Janela
+ Name[pt_BR]=Apagar Janela
+ Name[sl]=Izbriši okno
+@@ -2128,6 +2177,7 @@
+ Comment[ne]=सञ्झ्याल मेट्नुहोस्
+ Comment[nl]=Venster verwijderen
+ Comment[nn]=Fjern vindauge
++Comment[pa]=ਵਿੰਡੋ ਹਟਾਓ
+ Comment[pl]=Usuń okno
+ Comment[pt]=Apagar a janela
+ Comment[pt_BR]=Apagar janela
+@@ -2151,6 +2201,7 @@
+ Name[ca]=Tanca finestra
+ Name[de]=Fenster schließen
+ Name[el]=Κλείσιμο παραθύρου
++Name[eo]=Fermiĝo de fenestro
+ Name[et]=Aken sulgub
+ Name[fy]=Finster slute
+ Name[ga]=Dún fuinneog
+@@ -2164,6 +2215,7 @@
+ Name[ne]=सञ्झ्याल बन्द गर्नुहोस्
+ Name[nl]=Venster sluiten
+ Name[nn]=Vindaugslukking
++Name[pa]=ਵਿੰਡੋ ਬੰਦ ਕਰੋ
+ Name[pt]=Fechar a Janela
+ Name[pt_BR]=Fechar Janela
+ Name[sl]=Zapri okno
+@@ -2207,6 +2259,7 @@
+ Comment[ne]=एउटा सञ्झ्याल बन्द गर्दछ
+ Comment[nl]=Een venster sluit
+ Comment[nn]=Eit vindauge vert lukka
++Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਬੰਦ ਕਰਦਾ ਹੈ
+ Comment[pl]=Okno się zamyka
+ Comment[pt]=Fechou-se uma janela
+ Comment[pt_BR]=Uma janela fecha
+@@ -2257,6 +2310,7 @@
+ Name[ne]=सञ्झ्यालमाथि छाँया लगाउनुहोस्
+ Name[nl]=Venster oprollen
+ Name[nn]=Vindauge rullast opp
++Name[pa]=ਵਿੰਡੋ ਸ਼ੇਡ ਅੱਪ
+ Name[pl]=Odsłonięcie okna
+ Name[pt]=Janela Enrolada
+ Name[pt_BR]=Enrolar Janela
+@@ -2346,6 +2400,7 @@
+ Name[ne]=सञ्झ्यालतल छाँया लगाउनुहोस्
+ Name[nl]=Venster afrollen
+ Name[nn]=Vindauge rullast ned
++Name[pa]=ਵਿੰਡੋ ਸ਼ੇਡ ਡਾਊਨ
+ Name[pl]=Zasłonięcie okna
+ Name[pt]=Janela Desenrolada
+ Name[pt_BR]=Desenrolar Janela
+@@ -2436,6 +2491,7 @@
+ Name[ne]=सञ्झ्याललाई सानो बनाउनुहोस्
+ Name[nl]=Venster minimaliseren
+ Name[nn]=Vindaugsminimering
++Name[pa]=ਵਿੰਡੋ ਘੱਟੋ-ਘੱਟ
+ Name[pl]=Minimalizacja okna
+ Name[pt]=Minimização da Janela
+ Name[pt_BR]=Minimizar Janela
+@@ -2529,6 +2585,7 @@
+ Name[ne]=सञ्झ्याललाई सानो नबनाउनुहोस्
+ Name[nl]=Venster herstellen
+ Name[nn]=Vindaugsgjenoppretting
++Name[pa]=ਵਿੰਡੋ ਅਣ-ਘੱਟੋ-ਘੱਟ
+ Name[pl]=Powrót ze stanu minimalizacji okna
+ Name[pt]=Ex-Minimização da Janela
+ Name[pt_BR]=Restaurar Janela
+@@ -2570,6 +2627,7 @@
+ Comment[ne]=सञ्झ्याल भण्डारण गरिएको छ
+ Comment[nl]=Een venster herstelt
+ Comment[nn]=Eit vindauge vert gjenoppretta
++Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਰੀ-ਸਟੋਰ ਕੀਤੀ
+ Comment[pl]=Okno jest przywrócone
+ Comment[pt]=Foi reposta uma janela do seu estado minimizado
+ Comment[pt_BR]=Uma janela é restaurada
+@@ -2622,6 +2680,7 @@
+ Name[ne]=सञ्झ्याललाई ठूलो बनाउनुहोस्
+ Name[nl]=Venster maximaliseren
+ Name[nn]=Vindaugsmaksimering
++Name[pa]=ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ
+ Name[pl]=Maksymalizacja okna
+ Name[pt]=Maximização da Janela
+ Name[pt_BR]=Maximizar Janela
+@@ -2720,6 +2779,7 @@
+ Name[ne]=सञ्झ्याल ठूलो नबनाउनुहोस्
+ Name[nl]=Venster terugzetten
+ Name[nn]=Vindaugs-umaksimering
++Name[pa]=ਵਿੰਡੋ ਅਣ-ਵੱਧੋ-ਵੱਧ
+ Name[pl]=Powrót ze stanu maksymalizacji okna
+ Name[pt]=Ex-Maximização da Janela
+ Name[pt_BR]=Restaurar Janela
+@@ -2788,6 +2848,7 @@
+ Name[ca]=Finestra a tots els escriptoris
+ Name[de]=Fenster auf allen Arbeitsflächen
+ Name[el]=Παράθυρο σε όλες τις επιφάνειες
++Name[eo]=Fenestro sur ĉiuj labortabloj
+ Name[et]=Aken kõigil töölaudadel
+ Name[ga]=Fuinneog ar Gach Deasc
+ Name[it]=Finestra su tutti i desktop
+@@ -2799,6 +2860,7 @@
+ Name[ne]=सबै डेस्कटपहरूमा सञ्झ्याल
+ Name[nl]=Venster op alle bureaubladen
+ Name[nn]=Vindauge på alle skrivebord
++Name[pa]=ਵਿੰਡੋ ਸਭ ਡੈਸਕਟਾਪਾਂ ਉੱਤੇ
+ Name[pt]=Janela em Todos os Ecrãs
+ Name[pt_BR]=Janela em Todas as Áreas de Trabalho
+ Name[sl]=Okno na vseh namizjih
+@@ -2810,6 +2872,7 @@
+ Name[zh_TW]=將視窗放在所有桌面上
+ Comment=A window is made visible on all desktops
+ Comment[af]='n Venster is sigbaar op al die werkskerms
++Comment[ca]=Una finestra serà visible en tots els escriptoris
+ Comment[da]=Et vindue gøres synligt på alle desktoppe
+ Comment[de]=Ein Fenster soll auf allen Arbeitsflächen erscheinen
+ Comment[el]=Ένα παράθυρο έγινε ορατό σε όλες τις επιφάνειες εργασίας
+@@ -2835,6 +2898,7 @@
+ Comment[ne]=सबै डेस्कटपहरूमा सञ्झ्याललाई दृश्यात्मक बनाइएको छ
+ Comment[nl]=Een venster wordt op alle bureaubladen zichtbaar gemaakt
+ Comment[nn]=Eit vindauge vert gjort synleg på alle skriveborda
++Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਸਭ ਡੈਸਕਟਾਪਾਂ ਉੱਤੇ ਉਪਲੱਬਦ ਕਰਵਾਈ ਗਈ ਹੈ
+ Comment[pl]=Okno bedzie widoczne na wszystkich pulpitach
+ Comment[pt]=Uma janela ficou visível em todos os ecrãs
+ Comment[pt_BR]=Uma janela se torna visível em todas as áreas de trabalho
+@@ -2855,8 +2919,10 @@
+ 
+ [Event/not_on_all_desktops]
+ Name=Window Not on All Desktops
++Name[ca]=Finestra no a tots els escriptoris
+ Name[de]=Fenster nicht auf allen Arbeitsflächen
+ Name[el]=Παράθυρο εκτός όλων των επιφανειών
++Name[eo]=Fenestro ne sur ĉiuj labortabloj
+ Name[et]=Aken ei ole kõigil töölaudadel
+ Name[it]=Finestra non su tutti i desktop
+ Name[ja]=ウィンドウが一部のデスクトップのみに
+@@ -2866,6 +2932,7 @@
+ Name[ne]=सबै डेस्कटपमा सञ्झ्याल होइन
+ Name[nl]=Venster niet op alle bureaubladen
+ Name[nn]=Vindauge ikkje på alle skriveborda
++Name[pa]=ਵਿੰਡੋ ਸਭ ਡੈਸਕਟਾਪਾਂ ਉੱਤੇ ਨਹੀਂ
+ Name[pt]=Janela Fora de Todos os Ecrãs
+ Name[pt_BR]=Janela Não em Todas as Áreas de Trabalho
+ Name[sr]=Прозор не на све радне површи
+@@ -2876,6 +2943,7 @@
+ Name[zh_TW]=讓視窗不在所有桌面上顯示
+ Comment=A Window is no longer visible on all desktops
+ Comment[af]='n Venster is nie meer op al die werkskerms sigbaar nie
++Comment[ca]=Una finestra no serà visible en tots els escriptoris
+ Comment[da]=Et vindue er ikke længere synligt på alle desktoppe
+ Comment[de]=Ein Fenster soll nicht auf allen Arbeitsflächen erscheinen
+ Comment[el]=Ένα παράθυρο δεν είναι πάντα ορατό σε όλες τις επιφάνειες εργασίας
+@@ -2901,6 +2969,7 @@
+ Comment[ne]=सबै डेस्कटपमा सञ्झ्याल लामो दृश्यात्मक छैन
+ Comment[nl]=Een venster is niet langer zichtbaar op alle bureaubladen
+ Comment[nn]=Eit vindauge er ikkje lenger synleg på alle skriveborda
++Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਸਭ ਡੈਸਕਟਾਪਾਂ ਉੱਤੇ ਹੁਣ ਵੇਖਾਈ ਨਹੀਂ ਦਿੰਦੀ ਹੈ
+ Comment[pl]=Okno nie jest już widoczne na wszystkich pulpitach
+ Comment[pt]=Uma janela já não está mais em todos os ecrãs
+ Comment[pt_BR]=Uma janela não é mais visível em todas as áreas de trabalho
+@@ -2953,6 +3022,7 @@
+ Name[ne]=नयाँ संवाद
+ Name[nl]=Nieuw dialoog
+ Name[nn]=Nytt dialogvindauge
++Name[pa]=ਨਵਾਂ ਡਾਈਲਾਗ
+ Name[pl]=Nowe okno dialogowe
+ Name[pt]=Nova Janela
+ Name[pt_BR]=Novo Diálogo
+@@ -2973,6 +3043,7 @@
+ Comment[ca]=Apareix una finestra transitòria (un diàleg)
+ Comment[de]=Transientes Fenster (Dialog) wird angezeigt
+ Comment[el]=Ένα προσωρινό παράθυρο (διάλογος) εμφανίζεται
++Comment[eo]=Provizora fenestro (dialogo) aperas
+ Comment[et]=Avaneb ajutine aken (dialoog)
+ Comment[it]=Appare una finestra di dialogo
+ Comment[ja]=ダイアログウィンドウが表示されました
+@@ -2984,6 +3055,7 @@
+ Comment[ne]=अस्थायी सञ्झ्याल (संवाद) देखा पर्दछ
+ Comment[nl]=Een dialoogvenster verschijnt
+ Comment[nn]=Ein mellombels vindauge (eit dialogvindauge) vert opna
++Comment[pa]=ਟਰਾਂਸੇਂਟ ਵਿੰਡੋ (ਇੱਕ ਡਾਈਲਾਗ) ਆਈ
+ Comment[pt]=Apareceu uma janela transitória
+ Comment[pt_BR]=Janela temporária (um diálogo) aparece
+ Comment[sr]=Пролазни прозор (дијалог) јавља се
+@@ -3001,6 +3073,7 @@
+ Name[af]=Vee Dialoog Uit
+ Name[be]=Выдаліць дыялог
+ Name[br]=Lemel ar gendiviz
++Name[ca]=Elimina un diàleg
+ Name[cy]=Dileu Ymgom
+ Name[da]=Slet dialog
+ Name[de]=Dialog schließen
+@@ -3029,6 +3102,7 @@
+ Name[ne]=संवाद मेट्नुहोस्
+ Name[nl]=Dialoog sluiten
+ Name[nn]=Fjern dialog
++Name[pa]=ਡਾਈਲਾਗ ਹਟਾਓ
+ Name[pl]=Usunięcie okna dialogowego
+ Name[pt]=Apagar a Janela
+ Name[pt_BR]=Apagar Diálogo
+@@ -3046,6 +3120,7 @@
+ Name[zh_TW]=刪除對話框
+ Comment=Transient window (a dialog) is removed
+ Comment[af]=Oorgang Venster ('n dialoog) is verwyder
++Comment[ca]=S'esborra una finestra transitòria (un diàleg)
+ Comment[da]=Midlertidigt vindue (en dialog) fjernes
+ Comment[de]=Transientes Fenster (Dialog) wird entfernt
+ Comment[el]=Ένα προσωρινό παράθυρο (διάλογος) αφαιρείται
+@@ -3072,6 +3147,7 @@
+ Comment[ne]=अस्थायी सञ्झ्याल (संवाद) हटाइएको छ
+ Comment[nl]=Een dialoogvenster wordt gesloten
+ Comment[nn]=Ein mellombels vindauge (eit dialogvindauge) vert lukka
++Comment[pa]=ਟਰਾਂਸੇਂਟ ਵਿੰਡੋ (ਇੱਕ ਡਾਈਲਾਗ) ਹਟਾਇਆ ਗਿਆ
+ Comment[pl]=Znika tymczasowe okno dialogowe
+ Comment[pt]=Uma janela transitória foi removida
+ Comment[pt_BR]=Janela temporária (um diálogo) é removida
+@@ -3122,6 +3198,7 @@
+ Name[ne]=सञ्झ्याल चल सुरुआत
+ Name[nl]=Start van venster verplaatsen
+ Name[nn]=Start vindaugsflytting
++Name[pa]=ਵਿੰਡੋ ਮੂਵ ਸਟਾਰਟ
+ Name[pl]=Start przesuwania okna
+ Name[pt]=Início do Movimento da Janela
+ Name[pt_BR]=Início do Movimento da Janela
+@@ -3139,6 +3216,7 @@
+ Name[zh_TW]=視窗移動開始
+ Comment=A window has begun moving
+ Comment[af]='n Venster het begin beweeg
++Comment[ca]=Una finestra ha iniciat el moviment
+ Comment[da]=Et vindue er begyndt at flyttes
+ Comment[de]=Ein Fenster wird verschoben (Start)
+ Comment[el]=Ένα παράθυρο άρχισε να μετακινείται
+@@ -3165,6 +3243,7 @@
+ Comment[ne]=सञ्झ्याल चल्न सुरु भएको छ
+ Comment[nl]=Een venster begint met verplaatsen
+ Comment[nn]=Eit vindauge vert starta å flytta
++Comment[pa]=ਵਿੰਡੋ ਨੂੰ ਹਿਲਾਉਣਾ ਸ਼ੁਰੂ ਹੋਇਆ
+ Comment[pl]=Okno zaczyna być przesuwane
+ Comment[pt]=Uma janela começou a mudar de posição
+ Comment[pt_BR]=Uma janela começou a se mover
+@@ -3213,6 +3292,7 @@
+ Name[ne]=सञ्झ्याल चल समाप्ति
+ Name[nl]=Einde van venster verplaatsen
+ Name[nn]=Slutt vindaugsflytting
++Name[pa]=ਵਿੰਡੋ ਮੂਵ ਅੰਤ
+ Name[pl]=Koniec przesuwania okna
+ Name[pt]=Fim do Movimento da Janela
+ Name[pt_BR]=Fim do Movimento da Janela
+@@ -3230,6 +3310,7 @@
+ Name[zh_TW]=視窗移動結束
+ Comment=A window has completed its moving
+ Comment[af]='n Venster het  sy beweging voltooi
++Comment[ca]=Una finestra ha finalitzat el seu moviment
+ Comment[da]=Et vindue er færdigt med at flytte
+ Comment[de]=Ein Fenster wird verschoben (abgeschlossen)
+ Comment[el]=Ένα παράθυρο ολοκλήρωσε τη μετακίνησή του
+@@ -3256,6 +3337,7 @@
+ Comment[ne]=सञ्झ्यालले यसको चललाई पूरा गरेको छ
+ Comment[nl]=Een venster is klaar met verplaatsen
+ Comment[nn]=Eit vindauge er ferdigflytta
++Comment[pa]=ਵਿੰਡੋ ਨੂੰ ਹਿਲਾਉਣਾ ਪੂਰਾ ਹੋਇਆ
+ Comment[pl]=Okno zakończyło przesuwanie
+ Comment[pt]=Uma janela deixou de mudar de posição
+ Comment[pt_BR]=Uma janela completou seu movimento
+@@ -3303,6 +3385,7 @@
+ Name[ne]=सञ्झ्याल रिसाइज सुरुआत
+ Name[nl]=Start van venstergrootte wijzigen
+ Name[nn]=Start vindaugsskalering
++Name[pa]=ਵਿੰਡੋ ਮੁੜ-ਸਾਈਜ਼ ਸਟਾਰਟ
+ Name[pl]=Początek zmiany rozmiaru okna
+ Name[pt]=Início do Dimensionamento da Janela
+ Name[pt_BR]=Início do Redimensionamento da Janela
+@@ -3320,6 +3403,7 @@
+ Name[zh_TW]=視窗調整大小開始
+ Comment=A window has begun resizing
+ Comment[af]='n Venster het begin hervergroot
++Comment[ca]=Una finestra ha iniciat el redimensionament
+ Comment[da]=Et vindue er begyndt at ændre størrelse
+ Comment[de]=Größenveränderung des Fensters wird begonnen
+ Comment[el]=Εκκίνηση αλλαγής μεγέθους παραθύρου
+@@ -3345,6 +3429,7 @@
+ Comment[ne]=सञ्झ्यालले रिसाइज गर्न सुरु गरेको छ
+ Comment[nl]=Een venster is begonnen met het wijzigen van diens grootte
+ Comment[nn]=Eit vindauge får starta å endra storleik
++Comment[pa]=ਵਿੰਡੋ ਰੀ-ਸਾਇਜ਼ ਸ਼ੁਰੂ ਹੋਇਆ
+ Comment[pl]=Okno zaczęło zmianiać rozmiar
+ Comment[pt]=Uma janela começou a mudar de tamanho
+ Comment[pt_BR]=Uma janela começou a ser redimensionada
+@@ -3392,6 +3477,7 @@
+ Name[ne]=सञ्झ्याल रिसाइज समाप्ति
+ Name[nl]=Einde van venstergrootte wijzigen
+ Name[nn]=Slutt vindaugsskalering
++Name[pa]=ਵਿੰਡੋ ਮੁੜ-ਸਾਈਜ਼ ਅੰਤ
+ Name[pl]=Koniec zmiany rozmiaru okna
+ Name[pt]=Fim do Dimensionamento da Janela
+ Name[pt_BR]=Fim do Redimensionamento da Janela
+@@ -3409,6 +3495,7 @@
+ Name[zh_TW]=視窗調整大小結束
+ Comment=A window has finished resizing
+ Comment[af]='n Venster se hervergrooting is voltooi
++Comment[ca]=Una finestra ha finalitzat el redimensionament
+ Comment[da]=Et vindue er færdigt med at ændre størrelse
+ Comment[de]=Größenveränderung des Fensters abgeschlossen
+ Comment[el]=Τερματισμός αλλαγής μεγέθους παραθύρου
+@@ -3434,6 +3521,7 @@
+ Comment[ne]=सञ्झ्यालले रिसाइज गराइलाई समाप्त गरेको छ
+ Comment[nl]=Een venster is klaar met het wijzigen van diens grootte
+ Comment[nn]=Eit vindauge er ferdig å endra storleik
++Comment[pa]=ਵਿੰਡੋ ਲਈ ਰੀ-ਸਾਇਜ਼ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ
+ Comment[pl]=Okno skończyło zmieniać rozmiar
+ Comment[pt]=Uma janela acabou de mudar de tamanho
+ Comment[pt_BR]=Uma janela terminou de ser redimensionada
+@@ -3452,8 +3540,10 @@
+ 
+ [Event/demandsattentioncurrent]
+ Name=Window on Current Desktop Demands Attention
++Name[ca]=Una finestra de l'escriptori actual demana atenció
+ Name[de]=Fenster auf aktueller Arbeitsfläche erfordert Aufmerksamkeit
+ Name[el]=Παράθυρο της τρέχουσας επιφάνειας απαιτεί προσοχή
++Name[eo]=Fenestro sur Aktuala Labortablo Petas Atenton
+ Name[et]=Aken aktiivsel töölaual nõuab tähelepanu
+ Name[ja]=現在のデスクトップのウィンドウが注意を要求
+ Name[km]=បង្អួច​នៅ​លើ​ផ្ទៃតុ​បច្ចុប្បន្ន​ទាមទារ​ការ​ចាប់អារម្មណ៍
+@@ -3463,6 +3553,7 @@
+ Name[ne]=हालको डेस्कटपमा सञ्झ्यालले ध्यानाकर्षणको माग गर्दछ
+ Name[nl]=Venster op huidig bureaublad vraagt om aandacht
+ Name[nn]=Vindauge på gjeldande skrivebord ber om merksemd
++Name[pa]=ਮੌਜੂਦਾ ਡੈਸਕਟਾਪ ਤੋਂ ਵਿੰਡੋ ਨੇ ਧਿਆਨ ਮੰਗਿਆ
+ Name[pt]=A Janela do Ecrã Actual Requer Atenção
+ Name[pt_BR]=Janela na Área de Trabalho Atual Exige Atenção
+ Name[sr]=Прозор на текућој радној површи захтева пажњу
+@@ -3473,6 +3564,7 @@
+ Name[zh_TW]=目前桌面上的視窗要求注意
+ Comment=A window on the current virtual desktop demands attention
+ Comment[af]='n Venseter op die huidige virtuele werkskerm het aandag nodig
++Comment[ca]=Una finestra de l'escriptori actual demana atenció
+ Comment[da]=Et vindue på den nuværende  desktop kræver opmærksomhed
+ Comment[de]=Ein Fenster auf der aktuellen virtuellen Arbeitsfläche erfordert Ihre Aufmerksamkeit
+ Comment[el]=Ένα παράθυρο της τρέχουσας επιφάνειας εργασίας απαιτεί την προσοχή σας
+@@ -3497,6 +3589,7 @@
+ Comment[ne]=हालको अवास्तविक डेस्कटपमा सञ्झ्यालले ध्यानाकर्षण माग गर्दछ
+ Comment[nl]=Een venster op het huidige virtuele bureaublad vraagt om aandacht
+ Comment[nn]=Eit vindauge på det gjeldande virtuelle skrivebordet ber om merksemd
++Comment[pa]=ਮੌਜੂਦਾ ਵੁਰਚੁਅਲ ਡੈਸਕਟਾਪ ਤੋਂ ਇੱਕ ਵਿੰਡੋ ਨੇ ਧਿਆਨ ਮੰਗਿਆ
+ Comment[pl]=Okno na bieżącym pulpicie domaga się zwrócenia na nie uwagi
+ Comment[pt]=Existe uma janela no ecrã virtual actual que necessita de atenção
+ Comment[pt_BR]=Uma janela na área de trabalho virtual atual exige atenção
+@@ -3512,8 +3605,10 @@
+ 
+ [Event/demandsattentionother]
+ Name=Window on Other Desktop Demands Attention
++Name[ca]=Una finestra d'un altre escriptori demana atenció
+ Name[de]=Fenster auf anderer Arbeitsfläche erfordert Aufmerksamkeit
+ Name[el]=Παράθυρο σε άλλη επιφάνεια εργασίας απαιτεί προσοχή
++Name[eo]=Fenestro sur alia labortablo petas atenton
+ Name[et]=Aken teisel töölaual nõuab tähelepanu
+ Name[ja]=他のデスクトップのウィンドウが注意を要求
+ Name[km]=បង្អួច​នៅ​លើ​ផ្ទៃតុ​និម្មិត​ផ្សេង​ទៀត​ទាមទារ​ការ​ចាប់​អារម្មណ៍
+@@ -3523,6 +3618,7 @@
+ Name[ne]=अन्य डेस्कटपमा सञ्झ्यालले ध्यानाकर्षण माग गर्दछ
+ Name[nl]=Venster op ander bureaublad vraagt om aandacht
+ Name[nn]=Vindauge på anna skrivebord ber om merksemd
++Name[pa]=ਹੋਰ ਡੈਸਕਟਾਪ ਤੋਂ ਵਿੰਡੋ ਨੇ ਧਿਆਨ ਮੰਗਿਆ
+ Name[pt]=Uma Janela noutro Ecrã Requer Atenção
+ Name[pt_BR]=Janela em Outra Área de Trabalho Exige Atenção
+ Name[sr]=Прозор на другој радној површи захтева пажњу
+@@ -3533,10 +3629,11 @@
+ Name[zh_TW]=其他桌面上的視窗要求注意
+ Comment=A window on an inactive virtual desktop demands attention
+ Comment[af]='n Venster op 'n onaktiewe virtuele werkskerm het aandag nodig
++Comment[ca]=Una finestra en un escriptori virtual inactiu demana atenció
+ Comment[da]=Vindue på anden desktop kræver opmærksomhed
+ Comment[de]=Ein Fenster auf einer virtuellen Arbeitsfläche erfordert Ihre Aufmerksamkeit
+ Comment[el]=Ένα παράθυρο σε μια μη ενεργή επιφάνεια εργασίας απαιτεί την προσοχή σας
+-Comment[eo]=Fenestro sur neaktiva virtual labortabulo petas atenton
++Comment[eo]=Fenestro sur neaktiva virtual labortablo petas atenton
+ Comment[et]=Aken mitteaktiivsel virtuaalsel töölaual nõuab tähelepanu
+ Comment[eu]=Mahaigain birtual inaktiboko leihoa jaramon egitea eskatzen du
+ Comment[fi]=Ikkuna ei-aktiivisella virtuaalisella työpöydällä kaipaa huomiota
+--- a/kwin/geometry.cpp
++++ b/kwin/geometry.cpp
+@@ -2218,9 +2218,13 @@
+     {
+     if( decoration != NULL && decoration->drawbound( geom, clear ))
+         return; // done by decoration
+-    QPainter p ( workspace()->desktopWidget() );
+-    p.setPen( QPen( Qt::white, 5 ) );
+-    p.setCompositionMode( QPainter::CompositionMode_Xor );
++    XGCValues xgc;
++    xgc.function = GXxor;
++    xgc.foreground = WhitePixel( display(), DefaultScreen( display()));
++    xgc.line_width = 5;
++    xgc.subwindow_mode = IncludeInferiors;
++    GC gc = XCreateGC( display(), DefaultRootWindow( display()),
++        GCFunction | GCForeground | GCLineWidth | GCSubwindowMode, &xgc );
+     // the line is 5 pixel thick, so compensate for the extra two pixels
+     // on outside (#88657)
+     QRect g = geom;
+@@ -2234,7 +2238,8 @@
+         g.setTop( g.top() + 2 );
+         g.setBottom( g.bottom() - 2 );
+         }
+-    p.drawRect( g );
++    XDrawRectangle( display(), DefaultRootWindow( display()), gc, g.x(), g.y(), g.width(), g.height());
++    XFreeGC( display(), gc );
+     }
+ 
+ void Client::positionGeometryTip()
+--- a/kwin/kwin.kcfg
++++ b/kwin/kwin.kcfg
+@@ -36,15 +36,12 @@
+   <entry key="MoveMode" type="String" />
+   <entry key="ResizeMode" type="String" />
+   <entry key="TitlebarDoubleClickCommand" type="String" />
+-  <entry key="AnimateMinimize" type="Bool" />
+-  <entry key="AnimateShade" type="Bool" />
+   <entry key="IgnoreFocusStealingClasses" type="StringList" />
+   <entry key="MoveResizeMaximizedWindows" type="Bool" />
+   <entry key="ShadeHover" type="Bool" />
+   <entry key="GeometryTip" type="Bool" />
+   <entry key="RollOverDesktops" type="Bool" />
+   <entry key="FocusStealingPreventionLevel" type="Int" />
+-  <entry key="AnimateMinimizeSpeed" type="Int" />
+   <entry key="Placement" type="String" />
+   <entry key="AutoRaise" type="Bool" />
+   <entry key="AutoRaiseInterval" type="Int" />
+--- a/kwin/effects.h
++++ b/kwin/effects.h
+@@ -75,11 +75,19 @@
+         virtual void addRepaintFull();
+         virtual void addRepaint( const QRect& r );
+         virtual void addRepaint( int x, int y, int w, int h );
+-        virtual QRect clientArea( clientAreaOption opt, const QPoint& p, int desktop ) const;
++        virtual int activeScreen() const;
++        virtual QRect clientArea( clientAreaOption, int screen, int desktop ) const;
++        virtual QRect clientArea( clientAreaOption, const EffectWindow* c ) const;
++        virtual QRect clientArea( clientAreaOption, const QPoint& p, int desktop ) const;
+         virtual void calcDesktopLayout(int* x, int* y, Qt::Orientation* orientation) const;
+         virtual bool optionRollOverDesktops() const;
++        virtual int desktopToLeft( int desktop, bool wrap ) const;
++        virtual int desktopToRight( int desktop, bool wrap ) const;
++        virtual int desktopUp( int desktop, bool wrap ) const;
++        virtual int desktopDown( int desktop, bool wrap ) const;
+ 
+         virtual Window createInputWindow( Effect* e, int x, int y, int w, int h, const QCursor& cursor );
++        using EffectsHandler::createInputWindow;
+         virtual void destroyInputWindow( Window w );
+         virtual bool checkInputWindowEvent( XEvent* e );
+         virtual void checkInputWindowStacking();
+--- a/kwin/lib/kdecoration.cpp
++++ b/kwin/lib/kdecoration.cpp
+@@ -31,6 +31,7 @@
+ #if defined Q_WS_X11 && ! defined K_WS_QTONLY
+ #include <X11/Xlib.h>
+ #include <fixx11h.h>
++#include <QX11Info>
+ #endif
+ 
+ #include "kdecoration_p.h"
+@@ -224,11 +225,6 @@
+     return bridge_->unobscuredRegion( r );
+     }
+ 
+-QWidget* KDecoration::workspaceWidget() const
+-    {
+-    return bridge_->workspaceWidget();
+-    }
+-        
+ WId KDecoration::windowId() const
+     {
+     return bridge_->windowId();
+@@ -312,21 +308,11 @@
+     return false;
+     }
+ 
+-bool KDecoration::animateMinimize( bool )
+-    {
+-    return false;
+-    }
+-
+ bool KDecoration::windowDocked( Position )
+     {
+     return false;
+     }
+ 
+-void KDecoration::helperShowHide( bool show )
+-    {
+-    bridge_->helperShowHide( show );
+-    }
+-
+ void KDecoration::reset( unsigned long )
+     {
+     }
+@@ -340,7 +326,7 @@
+     {
+     bridge_->grabXServer( false );
+     }
+-    
++
+ KDecoration::Position KDecoration::mousePosition( const QPoint& p ) const
+ {
+     const int range = 16;
+@@ -428,11 +414,21 @@
+     return d->title_buttons_left;
+ }
+ 
++QString KDecorationOptions::defaultTitleButtonsLeft()
++{
++    return "MS"; //aseigo: proposed new default "AIS__HM";
++}
++
+ QString KDecorationOptions::titleButtonsRight() const
+ {
+     return d->title_buttons_right;
+ }
+ 
++QString KDecorationOptions::defaultTitleButtonsRight()
++{
++    return "HIAX"; //aseigo: proposed new default "X"
++}
++
+ bool KDecorationOptions::showTooltips() const
+ {
+     return d->show_tooltips;
+--- a/kwin/lib/kdecoration.h
++++ b/kwin/lib/kdecoration.h
+@@ -244,6 +244,10 @@
+     */
+     QString titleButtonsLeft() const;
+     /**
++     * Returns the default left button sequence
++     */
++    static QString defaultTitleButtonsLeft();
++    /**
+     * If customButtonPositions() returns true, titleButtonsRight
+     * returns which buttons should be on the right side of the titlebar from left
+     * to right. Characters in the return string have the same meaning like
+@@ -255,7 +259,10 @@
+     * The changed flags for this setting is SettingButtons.
+     */
+     QString titleButtonsRight() const;
+-
++    /**
++     * Returns the default right button sequence.
++     */
++    static QString defaultTitleButtonsRight();
+     /**
+     * @returns true if the style should use tooltips for window buttons
+     * The changed flags for this setting is SettingTooltips.
+@@ -515,11 +522,6 @@
+          * @param r The region you want to check for holes
+          */
+         QRegion unobscuredRegion( const QRegion& r ) const;
+-	/**
+-	 * Returns the main workspace widget. The main purpose of this function is to
+-	 * allow painting the minimize animation or the transparent move bound on it.
+-	 */
+-        QWidget* workspaceWidget() const;
+         /**
+          * Returns the handle of the window that is being decorated. It is possible
+          * the returned value will be 0.
+@@ -638,24 +640,28 @@
+          * Note that if you e.g. paint the outline using a 5 pixels wide line,
+          * you should compensate for the 2 pixels that would make the window
+          * look larger.
++         * It is the decoration's responsibility to do the painting, using
++         * e.g. code like:
++         * @code
++         *     Display* dpy = QX11Info::display();
++         *     XGCValues xgc;
++         *     xgc.function = GXxor;
++         *     xgc.foreground = WhitePixel( dpy, DefaultScreen( dpy ));
++         *     xgc.line_width = width;
++         *     xgc.subwindow_mode = IncludeInferiors;
++         *     GC gc = XCreateGC( dpy, DefaultRootWindow( dpy ),
++         *         GCFunction | GCForeground | GCLineWidth | GCSubwindowMode, &xgc );
++         *     XDrawRectangle( dpy, DefaultRootWindow( dpy ), gc, r.x(), r.y(), r.width(), r.height());
++         *     XFreeGC( dpy, gc );
++         * @endcode
+ 	 *
+ 	 * @param geom  The geometry at this the bound should be drawn
+-	 * @param clear @a true if the bound should be cleared
++	 * @param clear @a true if the bound should be cleared (when doing the usual XOR
++         *              painting this argument can be simply ignored)
+ 	 *
+-	 * @see workspaceWidget() and geometry().
++	 * @see geometry()
+ 	 */
+         virtual bool drawbound( const QRect& geom, bool clear );
+-	/**
+-	 * This function may be reimplemented to provide custom minimize/restore animations
+-	 * The reimplementation is allowed to perform X server grabs if necessary
+-         * (only using the functions provided by this API, no direct Xlib calls), but no
+-	 * futher event processing is allowed (i.e. no kapp->processEvents()).
+-	 * @a False should be returned if the default implementation should be used.
+-	 * Note that you should not use this function to force disabling of the animation.
+-	 *
+-	 * @see workspaceWidget(), geometry() and helperShowHide().
+-	 */
+-        virtual bool animateMinimize( bool minimize );
+         /**
+          * @internal Reserved.
+          */
+@@ -698,14 +704,7 @@
+ 	 * that affect widget drawing are allowed. Window type flags like WX11BypassWM
+ 	 * or WStyle_NoBorder are forbidden.
+ 	 */
+-		Qt::WFlags initialWFlags() const;
+-	/**
+-	 * This function is only allowed to be called once from animateMinimize().
+-	 * It can be used if the window should be shown or hidden at a specific
+-	 * time during the animation. It is forbidden to use this function
+-	 * for other purposes.
+-	 */
+-        void helperShowHide( bool show );
++	Qt::WFlags initialWFlags() const;
+ 	/**
+ 	 * Returns the main widget for the decoration.
+ 	 */
+--- a/kwin/lib/kcommondecoration.cpp
++++ b/kwin/lib/kcommondecoration.cpp
+@@ -58,6 +58,16 @@
+     delete m_previewWidget;
+ }
+ 
++QString KCommonDecoration::defaultButtonsLeft()
++{
++    return KDecorationOptions::defaultTitleButtonsLeft();
++}
++
++QString KCommonDecoration::defaultButtonsRight()
++{
++    return KDecorationOptions::defaultTitleButtonsRight();
++}
++
+ bool KCommonDecoration::decorationBehaviour(DecorationBehaviour behaviour) const
+ {
+     switch (behaviour) {
+--- a/kwin/lib/kwineffects.h
++++ b/kwin/lib/kwineffects.h
+@@ -55,51 +55,168 @@
+ typedef QList< EffectWindow* > EffectWindowList;
+ 
+ 
++/**
++ * @short Base class for all KWin effects
++ *
++ * This is the base class for all effects. By reimplementing virtual methods
++ *  of this class, you can customize how the windows are painted.
++ *
++ * The virtual methods of this class can broadly be divided into two
++ *  categories: the methods used for painting and those you can use to be
++ *  notified and react to certain events, e.g. that a window was closed.
++ *
++ * @section Chaining
++ * Most methods of this class are called in chain style. This means that when
++ *  effects A and B area active then first e.g. A::paintWindow() is called and
++ *  then from within that method B::paintWindow() is called (although
++ *  indirectly). To achieve this, you need to make sure to call corresponding
++ *  method in EffectsHandler class from each such method (using @ref effects
++ *  pointer):
++ * @code
++ *  void MyEffect::postPaintScreen()
++ *  {
++ *      // Do your own processing here
++ *      ...
++ *      // Call corresponding EffectsHandler method
++ *      effects->postPaintScreen();
++ *  }
++ * @endcode
++ *
++ * @section Effectsptr Effects pointer
++ * @ref effects pointer points to the global EffectsHandler object that you can
++ *  use to interact with the windows.
++ *
++ * @section painting Painting stages
++ * Painting of windows is done in three stages:
++ * @li First, the prepaint pass.<br>
++ *  Here you can specify how the windows will be painted, e.g. that they will
++ *  be translucent and transformed.
++ * @li Second, the paint pass.<br>
++ *  Here the actual painting takes place. You can change attributes such as
++ *  opacity of windows as well as apply transformations to them. You can also
++ *  paint something onto the screen yourself.
++ * @li Finally, the postpaint pass.<br>
++ *  Here you can mark windows, part of windows or even the entire screen for
++ *  repainting to create animations.
++ *
++ * For each stage there are *Screen() and *Window() methods. The window method
++ *  is called for every window which the screen method is usually called just
++ *  once.
++ **/
+ class KWIN_EXPORT Effect
+     {
+     public:
+-        // Flags controlling how painting is done.
++        /** Flags controlling how painting is done. */
+         // TODO: is that ok here?
+         enum
+         {
+-            // Window (or at least part of it) will be painted opaque.
++            /**
++             * Window (or at least part of it) will be painted opaque.
++             **/
+             PAINT_WINDOW_OPAQUE         = 1 << 0,
+-            // Window (or at least part of it) will be painted translucent.
++            /**
++             * Window (or at least part of it) will be painted translucent.
++             **/
+             PAINT_WINDOW_TRANSLUCENT    = 1 << 1,
+-            // Window will be painted with transformed geometry.
++            /**
++             * Window will be painted with transformed geometry.
++             **/
+             PAINT_WINDOW_TRANSFORMED    = 1 << 2,
+-            // Paint only a region of the screen (can be optimized, cannot
+-            // be used together with TRANSFORMED flags).
++            /**
++             * Paint only a region of the screen (can be optimized, cannot
++             * be used together with TRANSFORMED flags).
++             **/
+             PAINT_SCREEN_REGION         = 1 << 3,
+-            // Whole screen will be painted with transformed geometry.
++            /**
++             * The whole screen will be painted with transformed geometry.
++             * Forces the entire screen to be painted.
++             **/
+             PAINT_SCREEN_TRANSFORMED    = 1 << 4,
+-            // At least one window will be painted with transformed geometry.
++            /**
++             * At least one window will be painted with transformed geometry.
++             * Forces the entire screen to be painted.
++             **/
+             PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS = 1 << 5,
+-            // Clear whole background as the very first step, without optimizing it
++            /**
++             * Clear whole background as the very first step, without optimizing it
++             **/
+             PAINT_SCREEN_BACKGROUND_FIRST = 1 << 6
+         };
+ 
++        /**
++         * Constructs new Effect object.
++         **/
+         Effect();
++        /**
++         * Destructs the Effect object.
++         **/
+         virtual ~Effect();
+ 
++        /**
++         * Called before starting to paint the screen.
++         * In this method you can:
++         * @li set whether the windows or the entire screen will be transformed
++         * @li change the region of the screen that will be painted
++         * @li do various housekeeping tasks such as initing your effect's variables
++                for the upcoming paint pass or updating animation's progress
++        **/
+         virtual void prePaintScreen( ScreenPrePaintData& data, int time );
++        /**
++         * In this method you can:
++         * @li paint something on top of the windows (by painting after calling
++         *      effects->paintScreen())
++         * @li paint multiple desktops and/or multiple copies of the same desktop
++         *      by calling effects->paintScreen() multiple times
++         **/
+         virtual void paintScreen( int mask, QRegion region, ScreenPaintData& data );
++        /**
++         * Called after all the painting has been finished.
++         * In this method you can:
++         * @li schedule next repaint in case of animations
++         * You shouldn't paint anything here.
++         **/
+         virtual void postPaintScreen();
++
++        /**
++         * Called for every window before the actual paint pass
++         * In this method you can:
++         * @li enable or disable painting of the window (e.g. enable paiting of minimized window)
++         * @li set window to be painted with translucency
++         * @li set window to be transformed
++         * @li request the window to be divided into multiple parts
++         **/
+         virtual void prePaintWindow( EffectWindow* w, WindowPrePaintData& data, int time );
+-        // paintWindow() can do various transformations
++        /**
++         * This is the main method for painting windows.
++         * In this method you can:
++         * @li do various transformations
++         * @li change opacity of the window
++         * @li change brightness and/or saturation, if it's supported
++         **/
+         virtual void paintWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
++        /**
++         * Called for every window after all painting has been finished.
++         * In this method you can:
++         * @li schedule next repaint for individual window(s) in case of animations
++         * You shouldn't paint anything here.
++         **/
+         virtual void postPaintWindow( EffectWindow* w );
+ 
+-        // drawWindow() is used even for thumbnails etc. - it can alter the window itself where it
+-        // makes sense (e.g.darkening out unresponsive windows), but it cannot do transformations
++        /**
++         * Can be called to draw multiple copies (e.g. thumbnails) of a window.
++         * You can change window's opacity/brightness/etc here, but you can't
++         *  do any transformations
++         **/
+         virtual void drawWindow( EffectWindow* w, int mask, QRegion region, WindowPaintData& data );
+-        // This function is used e.g. by the shadow effect which adds area around windows
+-        // that needs to be painted as well - e.g. when a window is hidden and the workspace needs
+-        // to be repainted at that area, shadow's transformWindowDamage() adds the shadow area
+-        // to it, so that it is repainted as well.
++        /**
++         * This function is used e.g. by the shadow effect which adds area around windows
++         * that needs to be painted as well - e.g. when a window is hidden and the workspace needs
++         * to be repainted at that area, shadow's transformWindowDamage() adds the shadow area
++         * to it, so that it is repainted as well.
++         **/
+         virtual QRect transformWindowDamage( EffectWindow* w, const QRect& r );
+ 
+-        // called when moved/resized or once after it's finished
++        /** called when moved/resized or once after it's finished */
+         virtual void windowUserMovedResized( EffectWindow* c, bool first, bool last );
+         virtual void windowOpacityChanged( EffectWindow* c, double old_opacity );
+         virtual void windowAdded( EffectWindow* c );
+@@ -125,13 +242,18 @@
+         static int displayHeight();
+         static QPoint cursorPos();
+ 
+-        // Interpolates between x and y
++        /**
++         * Linearly interpolates between @p x and @p y.
++         *
++         * Returns @p x when @p a = 0; returns @p y when @p a = 1.
++         **/
+         static double interpolate(double x, double y, double a)
+             {
+             return x * (1 - a) + y * a;
+             }
+-        // helper to set WindowPaintData and QRegion to necessary transformations so that
+-        // a following drawWindow() would put the window at the requested geometry (useful for thumbnails)
++        /** Helper to set WindowPaintData and QRegion to necessary transformations so that
++         * a following drawWindow() would put the window at the requested geometry (useful for thumbnails)
++         **/
+         static void setPositionTransformations( WindowPaintData& data, QRect& region, EffectWindow* w,
+             const QRect& r, Qt::AspectRatioMode aspect );
+     };
+@@ -172,6 +294,16 @@
+ #define KWIN_EFFECT_CONFIG_FACTORY K_PLUGIN_FACTORY_DECLARATION(EffectFactory)
+ 
+ 
++/**
++ * @short Manager class that handles all the effects.
++ *
++ * This class creates Effect objects and calls it's appropriate methods.
++ *
++ * Effect objects can call methods of this class to interact with the
++ *  workspace, e.g. to activate or move a specific window, change current
++ *  desktop or create a special input window to receive mouse and keyboard
++ *  events.
++ **/
+ class KWIN_EXPORT EffectsHandler
+     {
+     friend class Effect;
+@@ -191,7 +323,7 @@
+         // covering the whole screen is created and all mouse events will be intercepted by it.
+         // The effect's windowInputMouseEvent() will get called with such events.
+         virtual Window createInputWindow( Effect* e, int x, int y, int w, int h, const QCursor& cursor ) = 0;
+-        virtual Window createInputWindow( Effect* e, const QRect& r, const QCursor& cursor );
++        Window createInputWindow( Effect* e, const QRect& r, const QCursor& cursor );
+         virtual Window createFullScreenInputWindow( Effect* e, const QCursor& cursor );
+         virtual void destroyInputWindow( Window w ) = 0;
+         virtual QPoint cursorPos() const = 0;
+@@ -213,9 +345,16 @@
+         virtual int numberOfDesktops() const = 0;
+         virtual void setCurrentDesktop( int desktop ) = 0;
+         virtual QString desktopName( int desktop ) const = 0;
++        virtual int activeScreen() const = 0; // Xinerama
++        virtual QRect clientArea( clientAreaOption, int screen, int desktop ) const = 0;
++        virtual QRect clientArea( clientAreaOption, const EffectWindow* c ) const = 0;
+         virtual QRect clientArea( clientAreaOption, const QPoint& p, int desktop ) const = 0;
+         virtual void calcDesktopLayout(int* x, int* y, Qt::Orientation* orientation) const = 0;
+         virtual bool optionRollOverDesktops() const = 0;
++        virtual int desktopToLeft( int desktop, bool wrap ) const = 0;
++        virtual int desktopToRight( int desktop, bool wrap ) const = 0;
++        virtual int desktopUp( int desktop, bool wrap ) const = 0;
++        virtual int desktopDown( int desktop, bool wrap ) const = 0;
+ 
+         virtual EffectWindowList stackingOrder() const = 0;
+         // window will be temporarily painted as if being at the top of the stack
+@@ -237,7 +376,11 @@
+         virtual void pushRenderTarget(GLRenderTarget* target) = 0;
+         virtual GLRenderTarget* popRenderTarget() = 0;
+ 
+-        // Repaints the entire workspace
++        /**
++         * Schedules the entire workspace to be repainted next time.
++         * If you call it during painting (including prepaint) then it does not
++         *  affect the current painting.
++         **/
+         virtual void addRepaintFull() = 0;
+         virtual void addRepaint( const QRect& r ) = 0;
+         virtual void addRepaint( int x, int y, int w, int h ) = 0;
+@@ -286,22 +429,25 @@
+     };
+ 
+ 
+-// This class is a representation of a window used by/for Effect classes.
+-// The purpose is to hide internal data and also to serve as a single
+-// representation for the case when Client/Unmanaged becomes Deleted.
++/**
++ * @short Representation of a window used by/for Effect classes.
++ *
++ * The purpose is to hide internal data and also to serve as a single
++ *  representation for the case when Client/Unmanaged becomes Deleted.
++ **/
+ class KWIN_EXPORT EffectWindow
+     {
+     public:
+-        // Flags explaining why painting should be disabled
++        /**  Flags explaining why painting should be disabled  */
+         enum
+         {
+-            // Window will not be painted
++            /**  Window will not be painted  */
+             PAINT_DISABLED              = 1 << 0,
+-            // Window will not be painted because it is deleted
++            /**  Window will not be painted because it is deleted  */
+             PAINT_DISABLED_BY_DELETE    = 1 << 1,
+-            // Window will not be painted because of which desktop it's on
++            /**  Window will not be painted because of which desktop it's on  */
+             PAINT_DISABLED_BY_DESKTOP   = 1 << 2,
+-            // Window will not be painted because it is minimized
++            /**  Window will not be painted because it is minimized  */
+             PAINT_DISABLED_BY_MINIMIZE  = 1 << 3
+         };
+ 
+@@ -385,6 +531,7 @@
+ 
+ /**
+  * @short Vertex class
++ *
+  * A vertex is one position in a window. WindowQuad consists of four WindowVertex objects
+  * and represents one part of a window.
+  **/
+@@ -417,6 +564,7 @@
+ 
+ /**
+  * @short Class representing one area of a window.
++ *
+  * WindowQuads consists of four WindowVertex objects and represents one part of a window.
+  */
+ // NOTE: This class expects the (original) vertices to be in the clockwise order starting from topleft.
+@@ -528,6 +676,9 @@
+         QRegion paint;
+     };
+ 
++/**
++ * Pointer to the global EffectsHandler object.
++ **/
+ extern KWIN_EXPORT EffectsHandler* effects;
+ 
+ /***************************************************************
+--- a/kwin/lib/kcommondecoration.h
++++ b/kwin/lib/kcommondecoration.h
+@@ -138,13 +138,13 @@
+          * @see KDecoration::titleButtonsLeft()
+          * @see KDecoration::titleButtonsRight()
+          */
+-        virtual QString defaultButtonsLeft() const = 0;
++        virtual QString defaultButtonsLeft();
+         /**
+          * The default title button order on the left.
+          * @see KDecoration::titleButtonsLeft()
+          * @see KDecoration::titleButtonsRight()
+          */
+-        virtual QString defaultButtonsRight() const = 0;
++        virtual QString defaultButtonsRight();
+ 
+         /**
+          * This controls whether some specific behaviour should be enabled or not.
+--- a/kwin/lib/kdecoration_p.cpp
++++ b/kwin/lib/kdecoration_p.cpp
+@@ -52,8 +52,8 @@
+ 
+ void KDecorationOptionsPrivate::defaultKWinSettings()
+     {
+-    title_buttons_left = "MS";
+-    title_buttons_right = "HIAX";
++    title_buttons_left = KDecorationOptions::defaultTitleButtonsLeft();
++    title_buttons_right = KDecorationOptions::defaultTitleButtonsRight();
+     custom_button_positions = false;
+     show_tooltips = true;
+     border_size = BorderNormal;
+@@ -172,13 +172,13 @@
+     custom_button_positions = styleConfig.readEntry("CustomButtonPositions", false);
+     if (custom_button_positions)
+         {
+-        title_buttons_left  = styleConfig.readEntry("ButtonsOnLeft", "MS");
+-        title_buttons_right = styleConfig.readEntry("ButtonsOnRight", "HIAX");
++        title_buttons_left  = styleConfig.readEntry("ButtonsOnLeft", KDecorationOptions::defaultTitleButtonsLeft());
++        title_buttons_right = styleConfig.readEntry("ButtonsOnRight", KDecorationOptions::defaultTitleButtonsRight());
+         }
+     else
+         {
+-        title_buttons_left  = "MS";
+-        title_buttons_right = "HIAX";
++        title_buttons_left  = KDecorationOptions::defaultTitleButtonsLeft();
++        title_buttons_right = KDecorationOptions::defaultTitleButtonsRight();
+         }
+     if( old_custom_button_positions != custom_button_positions
+         || ( custom_button_positions &&
+--- a/kwin/lib/kdecoration_p.h
++++ b/kwin/lib/kdecoration_p.h
+@@ -88,7 +88,6 @@
+         virtual QRect geometry() const = 0;
+         virtual QRect iconGeometry() const = 0;
+         virtual QRegion unobscuredRegion( const QRegion& r ) const = 0;
+-        virtual QWidget* workspaceWidget() const = 0;
+         virtual WId windowId() const = 0;
+ 	virtual void closeWindow() = 0;
+ 	virtual void maximize( MaximizeMode mode ) = 0;
+@@ -104,7 +103,6 @@
+         virtual int currentDesktop() const = 0;
+         virtual QWidget* initialParentWidget() const = 0;
+         virtual Qt::WFlags initialWFlags() const = 0;
+-        virtual void helperShowHide( bool ) = 0;
+         virtual void grabXServer( bool grab ) = 0;
+     };
+ 
+--- a/kwin/data/fsp_workarounds_1.kwinrules
++++ b/kwin/data/fsp_workarounds_1.kwinrules
+@@ -1,6 +1,7 @@
+ [1]
+ Description=(Default) Disable focus stealing prevention for XV
+ Description[bg]=(По подразбиране) Изключване открадването на фокуса за XV
++Description[ca]=(Per omissió) Desactiva la prevenció de robatori del focus a l'XV
+ Description[de]=(Standard) Aktivierungsübernahme verhindern für XV
+ Description[el]=(Προκαθορισμένο) Αποτροπή κλεψίματος εστίασης για το XV
+ Description[et]=(Vaikimisi) Fookuse röövimise vältimise keelamine XV puhul
+--- a/kwin/bridge.cpp
++++ b/kwin/bridge.cpp
+@@ -110,11 +110,6 @@
+     return QRect( r.pos.x, r.pos.y, r.size.width, r.size.height );
+     }
+ 
+-QWidget* Bridge::workspaceWidget() const
+-    {
+-    return c->workspace()->desktopWidget();
+-    }
+-
+ WId Bridge::windowId() const
+     {
+     return c->window();
+@@ -150,14 +145,6 @@
+     return 0;
+     }
+ 
+-void Bridge::helperShowHide( bool show )
+-    {
+-    if( show )
+-        c->rawShow();
+-    else
+-        c->rawHide();
+-    }
+-
+ QRegion Bridge::unobscuredRegion( const QRegion& r ) const
+     {
+     QRegion reg( r );
+--- a/kwin/workspace.cpp
++++ b/kwin/workspace.cpp
+@@ -78,7 +78,6 @@
+     number_of_desktops(0),
+     active_popup( NULL ),
+     active_popup_client( NULL ),
+-    desktop_widget    (0),
+     temporaryRulesMessages( "_KDE_NET_WM_TEMPORARY_RULES", NULL, false ),
+     rules_updates_disabled( false ),
+     active_client     (0),
+@@ -166,10 +165,6 @@
+ 
+     (void) QApplication::desktop(); // trigger creation of desktop widget
+ 
+-    desktop_widget = new QWidget( 0, Qt::Desktop );
+-    desktop_widget->setObjectName( "desktop_widget" );
+-    desktop_widget->setAttribute( Qt::WA_PaintUnclipped );
+-
+     // call this before XSelectInput() on the root window
+     startup = new KStartupInfo(
+         KStartupInfo::DisableKWinModule | KStartupInfo::AnnounceSilenceChanges, this );
+@@ -450,7 +445,6 @@
+          it != unmanaged.end();
+          ++it )
+         (*it)->release();
+-    delete desktop_widget;
+     delete tab_box;
+     delete popupinfo;
+     delete popup;
+@@ -1393,7 +1387,7 @@
+     setCurrentDesktop(desktop > 0 ? desktop : numberOfDesktops());
+     }
+ 
+-int Workspace::desktopToRight( int desktop ) const
++int Workspace::desktopToRight( int desktop, bool wrap ) const
+     {
+     int x,y;
+     Qt::Orientation orientation;
+@@ -1404,7 +1398,7 @@
+         dt += y;
+         if ( dt >= numberOfDesktops() )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               dt -= numberOfDesktops();
+             else
+               return desktop;
+@@ -1415,7 +1409,7 @@
+         int d = (dt % x) + 1;
+         if ( d >= x )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               d -= x;
+             else
+               return desktop;
+@@ -1425,7 +1419,7 @@
+     return dt+1;
+     }
+ 
+-int Workspace::desktopToLeft( int desktop ) const
++int Workspace::desktopToLeft( int desktop, bool wrap ) const
+     {
+     int x,y;
+     Qt::Orientation orientation;
+@@ -1436,7 +1430,7 @@
+         dt -= y;
+         if ( dt < 0 )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               dt += numberOfDesktops();
+             else
+               return desktop;
+@@ -1447,7 +1441,7 @@
+         int d = (dt % x) - 1;
+         if ( d < 0 )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               d += x;
+             else
+               return desktop;
+@@ -1457,7 +1451,7 @@
+     return dt+1;
+     }
+ 
+-int Workspace::desktopUp( int desktop ) const
++int Workspace::desktopUp( int desktop, bool wrap ) const
+     {
+     int x,y;
+     Qt::Orientation orientation;
+@@ -1468,7 +1462,7 @@
+         dt -= x;
+         if ( dt < 0 )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               dt += numberOfDesktops();
+             else
+               return desktop;
+@@ -1479,7 +1473,7 @@
+         int d = (dt % y) - 1;
+         if ( d < 0 )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               d += y;
+             else
+               return desktop;
+@@ -1489,7 +1483,7 @@
+     return dt+1;
+     }
+ 
+-int Workspace::desktopDown( int desktop ) const
++int Workspace::desktopDown( int desktop, bool wrap ) const
+     {
+     int x,y;
+     Qt::Orientation orientation;
+@@ -1500,7 +1494,7 @@
+         dt += x;
+         if ( dt >= numberOfDesktops() )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               dt -= numberOfDesktops();
+             else
+               return desktop;
+@@ -1511,7 +1505,7 @@
+         int d = (dt % y) + 1;
+         if ( d >= y )
+             {
+-            if ( options->rollOverDesktops )
++            if ( wrap )
+               d -= y;
+             else
+               return desktop;
+@@ -2042,16 +2036,6 @@
+ 
+     }
+ 
+-/*!
+-  Returns the workspace's desktop widget. The desktop widget is
+-  sometimes required by clients to draw on it, for example outlines on
+-  moving or resizing.
+- */
+-QWidget* Workspace::desktopWidget()
+-    {
+-    return desktop_widget;
+-    }
+-
+ //Delayed focus functions
+ void Workspace::delayFocus()
+     {
+@@ -2253,22 +2237,22 @@
+     const int OFFSET = 2;
+     if( border == ElectricLeft || border == ElectricTopLeft || border == ElectricBottomLeft )
+         {
+-        desk = desktopToLeft( desk );
++        desk = desktopToLeft( desk, options->rollOverDesktops );
+         pos.setX( displayWidth() - 1 - OFFSET );
+         }
+     if( border == ElectricRight || border == ElectricTopRight || border == ElectricBottomRight )
+         {
+-        desk = desktopToRight( desk );
++        desk = desktopToRight( desk, options->rollOverDesktops );
+         pos.setX( OFFSET );
+         }
+     if( border == ElectricTop || border == ElectricTopLeft || border == ElectricTopRight )
+         {
+-        desk = desktopUp( desk );
++        desk = desktopUp( desk, options->rollOverDesktops );
+         pos.setY( displayHeight() - 1 - OFFSET );
+         }
+     if( border == ElectricBottom || border == ElectricBottomLeft || border == ElectricBottomRight )
+         {
+-        desk = desktopDown( desk );
++        desk = desktopDown( desk, options->rollOverDesktops );
+         pos.setY( OFFSET );
+         }
+     int desk_before = currentDesktop();
+--- a/kwin/effects.cpp
++++ b/kwin/effects.cpp
+@@ -369,6 +369,26 @@
+     return options->rollOverDesktops;
+     }
+ 
++int EffectsHandlerImpl::desktopToLeft( int desktop, bool wrap ) const
++    {
++    return Workspace::self()->desktopToLeft( desktop, wrap );
++    }
++
++int EffectsHandlerImpl::desktopToRight( int desktop, bool wrap ) const
++    {
++    return Workspace::self()->desktopToRight( desktop, wrap );
++    }
++
++int EffectsHandlerImpl::desktopUp( int desktop, bool wrap ) const
++    {
++    return Workspace::self()->desktopUp( desktop, wrap );
++    }
++
++int EffectsHandlerImpl::desktopDown( int desktop, bool wrap ) const
++    {
++    return Workspace::self()->desktopDown( desktop, wrap );
++    }
++
+ int EffectsHandlerImpl::displayWidth() const
+     {
+     return KWin::displayWidth();
+@@ -484,6 +504,25 @@
+     Workspace::self()->addRepaint( x, y, w, h );
+     }
+ 
++int EffectsHandlerImpl::activeScreen() const
++    {
++    return Workspace::self()->activeScreen();
++    }
++
++QRect EffectsHandlerImpl::clientArea( clientAreaOption opt, int screen, int desktop ) const
++    {
++    return Workspace::self()->clientArea( opt, screen, desktop );
++    }
++
++QRect EffectsHandlerImpl::clientArea( clientAreaOption opt, const EffectWindow* c ) const
++    {
++    const Toplevel* t = static_cast< const EffectWindowImpl* >(c)->window();
++    if( const Client* cl = dynamic_cast< const Client* >( t ))
++        return Workspace::self()->clientArea( opt, cl );
++    else
++        return Workspace::self()->clientArea( opt, t->geometry().center(), Workspace::self()->currentDesktop());
++    }
++
+ QRect EffectsHandlerImpl::clientArea( clientAreaOption opt, const QPoint& p, int desktop ) const
+     {
+     return Workspace::self()->clientArea( opt, p, desktop );
+--- a/ksysguard/ksysguardd/Linux/lmsensors.c
++++ b/ksysguard/ksysguardd/Linux/lmsensors.c
+@@ -124,7 +124,7 @@
+ 
+         snprintf( buffer, BUFFER_SIZE_LMSEN, "lmsensors/%s/%s", chipName(scn), sfd->name );
+ 
+-	p->fullName = strndup(buffer, BUFFER_SIZE_LMSEN);	
++        p->fullName = strndup(buffer, BUFFER_SIZE_LMSEN);
+ 
+         p->scn = scn;
+         p->sfd = sfd;
+--- a/ksysguard/ksysguardd/Linux/netdev.c
++++ b/ksysguard/ksysguardd/Linux/netdev.c
+@@ -35,65 +35,84 @@
+ 
+ #define MON_SIZE	128
+ 
+-#define CALC( a, b, c, d, e ) \
++#define CALC( a, b, c, d, e, f ) \
+ { \
+-  NetDevs[ i ].a = a - NetDevs[ i ].Old##a; \
+-  NetDevs[ i ].Old##a = a; \
++  if (f){ \
++    NetDevs[ i ].a = a - NetDevs[ i ].Old##a; \
++    NetDevs[ i ].Old##a = a; \
++  } \
++  else{ \
++    NetDevs[ i ].a = a; \
++  } \
+ }
+ 
+-#define REGISTERSENSOR( a, b, c, d, e ) \
++#define REGISTERSENSOR( a, b, c, d, e, f ) \
+ { \
+   snprintf( mon, MON_SIZE, "network/interfaces/%s/%s", tag, b ); \
+   registerMonitor( mon, "float", printNetDev##a, printNetDev##a##Info, NetDevSM ); \
+ }
+ 
+-#define UNREGISTERSENSOR( a, b, c, d, e ) \
++#define UNREGISTERSENSOR( a, b, c, d, e, f ) \
+ { \
+   snprintf( mon, MON_SIZE, "network/interfaces/%s/%s", NetDevs[ i ].name, b ); \
+   removeMonitor( mon ); \
+ }
+ 
+-#define DEFMEMBERS( a, b, c, d, e ) \
+-unsigned long long Old##a; \
+-unsigned long long a; \
+-unsigned long a##Scale;
++#define DEFMEMBERS( a, b, c, d, e, f ) \
++signed long long Old##a; \
++signed long long a; \
++signed long a##Scale;
+ 
+-#define DEFVARS( a, b, c, d, e ) \
+-unsigned long long a;
++#define DEFVARS( a, b, c, d, e, f ) \
++signed long long a;
+ 
++/* The sixth variable is 1 if the quantity variation must be provided, 0 if the absolute value must be provided */
+ #define FORALL( a ) \
+-  a( recBytes, "receiver/data", "Received Data", "kBytes/s", 1024 ) \
+-  a( recPacks, "receiver/packets", "Received Packets", "1/s", 1 ) \
+-  a( recErrs, "receiver/errors", "Receiver Errors", "1/s", 1 ) \
+-  a( recDrop, "receiver/drops", "Receiver Drops", "1/s", 1 ) \
+-  a( recFifo, "receiver/fifo", "Receiver FIFO Overruns", "1/s", 1 ) \
+-  a( recFrame, "receiver/frame", "Receiver Frame Errors", "1/s", 1 ) \
+-  a( recCompressed, "receiver/compressed", "Received Compressed Packets", "1/s", 1 ) \
+-  a( recMulticast, "receiver/multicast", "Received Multicast Packets", "1/s", 1 ) \
+-  a( sentBytes, "transmitter/data", "Sent Data", "kBytes/s", 1024 ) \
+-  a( sentPacks, "transmitter/packets", "Sent Packets", "1/s", 1 ) \
+-  a( sentErrs, "transmitter/errors", "Transmitter Errors", "1/s", 1 ) \
+-  a( sentDrop, "transmitter/drops", "Transmitter Drops", "1/s", 1 ) \
+-  a( sentFifo, "transmitter/fifo", "Transmitter FIFO overruns", "1/s", 1 ) \
+-  a( sentColls, "transmitter/collisions", "Transmitter Collisions", "1/s", 1 ) \
+-  a( sentCarrier, "transmitter/carrier", "Transmitter Carrier losses", "1/s", 1 ) \
+-  a( sentCompressed, "transmitter/compressed", "Transmitter Compressed Packets", "1/s", 1 )
++  a( recBytes, "receiver/data", "Received Data", "kBytes/s", 1024, 1) \
++  a( recPacks, "receiver/packets", "Received Packets", "1/s", 1, 1 ) \
++  a( recErrs, "receiver/errors", "Receiver Errors", "1/s", 1, 1 ) \
++  a( recDrop, "receiver/drops", "Receiver Drops", "1/s", 1, 1 ) \
++  a( recFifo, "receiver/fifo", "Receiver FIFO Overruns", "1/s", 1, 1 ) \
++  a( recFrame, "receiver/frame", "Receiver Frame Errors", "1/s", 1, 1 ) \
++  a( recCompressed, "receiver/compressed", "Received Compressed Packets", "1/s", 1, 1 ) \
++  a( recMulticast, "receiver/multicast", "Received Multicast Packets", "1/s", 1, 1 ) \
++  a( sentBytes, "transmitter/data", "Sent Data", "kBytes/s", 1024, 1 ) \
++  a( sentPacks, "transmitter/packets", "Sent Packets", "1/s", 1, 1 ) \
++  a( sentErrs, "transmitter/errors", "Transmitter Errors", "1/s", 1, 1 ) \
++  a( sentDrop, "transmitter/drops", "Transmitter Drops", "1/s", 1, 1 ) \
++  a( sentFifo, "transmitter/fifo", "Transmitter FIFO overruns", "1/s", 1, 1 ) \
++  a( sentColls, "transmitter/collisions", "Transmitter Collisions", "1/s", 1, 1 ) \
++  a( sentCarrier, "transmitter/carrier", "Transmitter Carrier losses", "1/s", 1, 1 ) \
++  a( sentCompressed, "transmitter/compressed", "Transmitter Compressed Packets", "1/s", 1, 1 )
++
++#define FORALLWIFI( a ) \
++  a( linkQuality, "wifi/quality", "Link Quality", "", 1, 0) \
++  a( signalLevel, "wifi/signal", "Signal Level", "dBm", 1, 0) \
++  a( noiseLevel, "wifi/noise", "Noise Level", "dBm", 1, 0) \
++  a( nwid, "wifi/nwid", "Rx Invalid Nwid Packets", "1/s", 1, 1) \
++  a( RxCrypt, "wifi/crypt", "Rx Invalid Crypt Packets", "1/s", 1, 1) \
++  a( frag, "wifi/frag", "Rx Invalid Frag Packets", "1/s", 1, 1) \
++  a( retry, "wifi/retry", "Tx Excessive Retries Packets", "1/s", 1, 1) \
++  a( misc, "wifi/misc", "Invalid Misc Packets", "1/s", 1, 1) \
++  a( beacon, "wifi/beacon", "Missed Beacon", "1/s", 1, 1)
+ 
+-#define SETZERO( a, b, c, d, e ) \
++#define SETZERO( a, b, c, d, e, f ) \
+ a = 0;
+ 
+-#define SETMEMBERZERO( a, b, c, d, e ) \
++#define SETMEMBERZERO( a, b, c, d, e, f ) \
+ NetDevs[ i ].a = 0; \
+ NetDevs[ i ].a##Scale = e;
+ 
+-#define DECLAREFUNC( a, b, c, d, e ) \
++#define DECLAREFUNC( a, b, c, d, e, f ) \
+ void printNetDev##a( const char* cmd ); \
+ void printNetDev##a##Info( const char* cmd );
+ 
+ typedef struct
+ {
+   FORALL( DEFMEMBERS )
++  FORALLWIFI( DEFMEMBERS )
+   char name[ 32 ];
++  int isWifi;
+ } NetDevInfo;
+ 
+ /* We have observed deviations of up to 5% in the accuracy of the timer
+@@ -106,6 +125,7 @@
+ 
+ #define NETDEVBUFSIZE 4096
+ static char NetDevBuf[ NETDEVBUFSIZE ];
++static char NetDevWifiBuf[ NETDEVBUFSIZE ];
+ static int NetDevCnt = 0;
+ static int Dirty = 0;
+ static int NetDevOk = 0;
+@@ -117,15 +137,17 @@
+ void processNetDev( void );
+ 
+ FORALL( DECLAREFUNC )
++FORALLWIFI( DECLAREFUNC )
+ 
+ static int processNetDev_( void )
+ {
+-  int i;
++  int i, j;
+   char format[ 32 ];
+   char devFormat[ 16 ];
+   char buf[ 1024 ];
+   char tag[ 64 ];
+   char* netDevBufP = NetDevBuf;
++  char* netDevWifiBufP = NetDevWifiBuf;
+ 
+   sprintf( format, "%%%d[^\n]\n", (int)sizeof( buf ) - 1 );
+   sprintf( devFormat, "%%%ds", (int)sizeof( tag ) - 1 );
+@@ -147,8 +169,8 @@
+         FORALL( DEFVARS );
+         *pos = '\0';
+         FORALL( SETZERO );
+-        sscanf( buf + 7, "%llu %llu %llu %llu %llu %llu %llu %llu " 
+-                "%llu %llu %llu %llu %llu %llu %llu %llu",
++        sscanf( buf + 7, "%lli %lli %lli %lli %lli %lli %lli %lli "
++                "%lli %lli %lli %lli %lli %lli %lli %lli",
+                 &recBytes, &recPacks, &recErrs, &recDrop, &recFifo,
+                 &recFrame, &recCompressed, &recMulticast,
+                 &sentBytes, &sentPacks, &sentErrs, &sentDrop,
+@@ -168,6 +190,42 @@
+   if ( i != NetDevCnt )
+     return -1;
+ 
++  /*Update the values for the wifi interfaces*/
++  if ( *netDevWifiBufP=='\0')  /*there is no /proc/net/wireless file*/
++    return 0;
++
++  /* skip 2 first lines */
++  for ( i = 0; i < 2; i++ ) {
++    sscanf( netDevWifiBufP, format, buf );
++    buf[ sizeof( buf ) - 1 ] = '\0';
++    netDevWifiBufP += strlen( buf ) + 1;  /* move netDevWifiBufP to next line */
++  }
++
++  for ( j = 0; sscanf( netDevWifiBufP, format, buf ) == 1; ++j ) {
++    buf[ sizeof( buf ) - 1 ] = '\0';
++    netDevWifiBufP += strlen( buf ) + 1;  /* move netDevWifiBufP to next line */
++
++    if ( sscanf( buf, devFormat, tag ) ) {
++      char* pos = strchr( tag, ':' );
++      if ( pos ) {
++        FORALLWIFI( DEFVARS );
++        *pos = '\0';
++
++       for (i = 0 ; i < NetDevCnt ; ++i){ /*find the corresponding interface*/
++           if ( strcmp(tag,NetDevs[ i ].name)==0){
++               break;
++           }
++        }
++        sscanf( buf + 12, " %lli. %lli. %lli. %lli %lli %lli %lli %lli %lli",
++                &linkQuality, &signalLevel, &noiseLevel, &nwid,
++                &RxCrypt, &frag,  &retry, &misc, &beacon );
++        signalLevel -= 256; /*the units are dBm*/
++        noiseLevel -= 256;
++        FORALLWIFI( CALC );
++      }
++    }
++  }
++
+   /* save exact time inverval between this and the last read of
+    * /proc/net/dev */
+   timeInterval = currSampling.tv_sec - lastSampling.tv_sec +
+@@ -200,12 +258,13 @@
+ 
+ void initNetDev( struct SensorModul* sm )
+ {
+-  int i;
++  int i, j;
+   char format[ 32 ];
+   char devFormat[ 16 ];
+   char buf[ 1024 ];
+   char tag[ 64 ];
+   char* netDevBufP = NetDevBuf;
++  char* netDevWifiBufP = NetDevWifiBuf;
+ 
+   NetDevSM = sm;
+ 
+@@ -232,10 +291,10 @@
+         char mon[ MON_SIZE ];
+         *pos = '\0';
+         strncpy( NetDevs[ i ].name, tag, sizeof( NetDevs[ i ].name ) );
+-	NetDevs[ i ].name[ sizeof( NetDevs[ i ].name )-1] = 0;
++	    NetDevs[ i ].name[ sizeof( NetDevs[ i ].name )-1] = 0;
+         FORALL( REGISTERSENSOR );
+-        sscanf( pos + 1, "%llu %llu %llu %llu %llu %llu %llu %llu" 
+-                "%llu %llu %llu %llu %llu %llu %llu %llu",
++        sscanf( pos + 1, "%lli %lli %lli %lli %lli %lli %lli %lli"
++                "%lli %lli %lli %lli %lli %lli %lli %lli",
+                 &NetDevs[ i ].recBytes, &NetDevs[ i ].recPacks,
+                 &NetDevs[ i ].recErrs, &NetDevs[ i ].recDrop,
+                 &NetDevs[ i ].recFifo, &NetDevs[ i ].recFrame,
+@@ -250,6 +309,38 @@
+     }
+   }
+ 
++  /* detect the wifi interfaces*/
++  /* skip 2 first lines */
++  for ( i = 0; i < 2; i++ ) {
++    sscanf( netDevWifiBufP, format, buf );
++    buf[ sizeof( buf ) - 1 ] = '\0';
++    netDevWifiBufP += strlen( buf ) + 1;  /* move netDevWifiBufP to next line */
++  }
++
++  for ( j = 0; sscanf( netDevWifiBufP, format, buf ) == 1; ++j ) {
++    buf[ sizeof( buf ) - 1 ] = '\0';
++    netDevWifiBufP += strlen( buf ) + 1;  /* move netDevWifiBufP to next line */
++
++    if ( sscanf( buf, devFormat, tag ) ) {
++      char * pos = strchr( tag, ':' );
++      if ( pos ) {
++        char mon[ MON_SIZE ];
++        *pos = '\0';
++       /*find and tag the corresponding NetDev as wifi enabled.
++        At the end of the loop,  i is the index of the device.
++        This variable i is used in some macro */
++       for (i = 0 ; i < NetDevCnt ; ++i){
++           if ( strcmp(tag,NetDevs[ i ].name)==0){
++               NetDevs[ i ].isWifi = 1;
++               break;
++           }
++        }
++        FORALLWIFI( REGISTERSENSOR );
++      }
++      FORALLWIFI( SETMEMBERZERO );  /* the variable i must point to the corrrect NetDevs[i]*/
++    }
++  }
++
+   /* Call processNetDev to elimitate initial peek values. */
+   processNetDev();
+ }
+@@ -261,6 +352,8 @@
+   for ( i = 0; i < NetDevCnt; ++i ) {
+     char mon[ MON_SIZE ];
+     FORALL( UNREGISTERSENSOR );
++    if (NetDevs[ i ].isWifi)
++       FORALLWIFI( UNREGISTERSENSOR );
+   }
+   NetDevCnt = 0;
+ }
+@@ -321,6 +414,20 @@
+   }
+   OldHash = hash;
+ 
++  /* We read the informations about the wifi from /proc/net/wireless and store it into NetDevWifiBuf */
++  if ( ( fd = open( "/proc/net/wireless", O_RDONLY ) ) < 0 ) {
++    /* /proc/net/wireless may not exist on some machines. */
++    NetDevWifiBuf[0]='\0';
++  }
++
++  if ( ( n = read( fd, NetDevWifiBuf, NETDEVBUFSIZE - 1 ) ) == NETDEVBUFSIZE - 1 ) {
++    log_error( "Internal buffer too small to read \'/proc/net/wireless\'" );
++    close( fd );
++    return -1;
++  }
++  close( fd );
++  NetDevWifiBuf[ n ] = '\0';
++
+   Dirty = 1;
+ 
+   return 0;
+@@ -334,7 +441,7 @@
+   initNetDev( NetDevSM );
+ }
+ 
+-#define PRINTFUNC( a, b, c, d, e ) \
++#define PRINTFUNC( a, b, c, d, e, f ) \
+ void printNetDev##a( const char* cmd ) \
+ { \
+   int i; \
+@@ -353,8 +460,11 @@
+  \
+   for ( i = 0; i < MAXNETDEVS; ++i ) \
+     if ( strcmp( NetDevs[ i ].name, dev ) == 0) { \
+-      fprintf( CurrentClient, "%f\n", (float) \
+-               ( NetDevs[ i ].a / ( NetDevs[ i ].a##Scale * timeInterval ) ) ); \
++      if (f) \
++         fprintf( CurrentClient, "%li\n", (long) \
++                ( NetDevs[ i ].a / ( NetDevs[ i ].a##Scale * timeInterval ) ) ); \
++      else \
++         fprintf( CurrentClient, "%li\n", (long) NetDevs[ i ].a ); \
+       return; \
+     } \
+  \
+@@ -368,3 +478,4 @@
+ }
+ 
+ FORALL( PRINTFUNC )
++FORALLWIFI( PRINTFUNC )
+--- a/ksysguard/gui/ksysguard.desktop
++++ b/ksysguard/gui/ksysguard.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=System Monitor
+ Name[ar]=مراقب النظام
+ Name[be]=Сістэмны назіральнік
+@@ -8,6 +7,7 @@
+ Name[csb]=Mònitor systemë
+ Name[de]=Systemmonitor
+ Name[el]=Επόπτης συστήματος
++Name[eo]=Sistemstato-programo
+ Name[et]=Süsteemi jälgija
+ Name[fa]=نمایشگر سیستم
+ Name[ga]=Monatóir an Chórais
+@@ -22,7 +22,7 @@
+ Name[ne]=प्रणाली मनिटर
+ Name[nl]=Systeemmonitor
+ Name[nn]=Systemovervaking
+-Name[pa]=ਸਿਸਟਮ ਨਿਗਰਾਨ
++Name[pa]=ਸਿਸਟਮ ਮਾਨੀਟਰ
+ Name[pt]=Monitor do Sistema
+ Name[pt_BR]=Monitor do Sistema
+ Name[sl]=Sistemski nadzornik
+@@ -41,7 +41,6 @@
+ MimeType=application/x-ksysguard;
+ X-DocPath=ksysguard/index.html
+ Terminal=false
+-Path=
+ X-KDE-StartupNotify=true
+ X-DBUS-StartupType=Multi
+ Categories=Qt;KDE;System;
+--- a/ksysguard/gui/SensorDisplayLib/ProcessWidgetUI.ui
++++ /dev/null
+@@ -1,42 +0,0 @@
+-<ui version="4.0" >
+- <class>ProcessWidget</class>
+- <widget class="QWidget" name="ProcessWidget" >
+-  <property name="geometry" >
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>515</width>
+-    <height>492</height>
+-   </rect>
+-  </property>
+-  <layout class="QVBoxLayout" >
+-   <property name="spacing" >
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin" >
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin" >
+-    <number>0</number>
+-   </property>
+-   <property name="rightMargin" >
+-    <number>0</number>
+-   </property>
+-   <property name="bottomMargin" >
+-    <number>0</number>
+-   </property>
+-   <item>
+-    <widget class="KSysGuardProcessList" name="ksysguardprocesslist" />
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>KSysGuardProcessList</class>
+-   <extends>QWidget</extends>
+-   <header>processui/ksysguardprocesslist.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+--- a/ksysguard/gui/SensorDisplayLib/FancyPlotter.cc
++++ b/ksysguard/gui/SensorDisplayLib/FancyPlotter.cc
+@@ -21,6 +21,8 @@
+ #include <QtXml/qdom.h>
+ #include <QtGui/QImage>
+ #include <QtGui/QToolTip>
++#include <QtGui/QHBoxLayout>
++
+ 
+ #include <kdebug.h>
+ #include <klocale.h>
+@@ -43,7 +45,9 @@
+   mSettingsDialog = 0;
+   mSensorReportedMax = 0;
+   mSensorReportedMin = 0;
++  QLayout *layout = new QHBoxLayout(this);
+   mPlotter = new KSignalPlotter( this );
++  layout->addWidget(mPlotter);
+   mPlotter->setVerticalLinesColor(KSGRD::Style->firstForegroundColor());
+   mPlotter->setHorizontalLinesColor(KSGRD::Style->secondForegroundColor());
+   mPlotter->setBackgroundColor(KSGRD::Style->backgroundColor());
+@@ -63,8 +67,6 @@
+ 
+   setPlotterWidget( mPlotter );
+ 
+-  //Force a resize so that mPlotter's size gets set
+-  FancyPlotter::resizeEvent( 0 );
+ }
+ 
+ FancyPlotter::~FancyPlotter()
+@@ -125,7 +127,7 @@
+     entry.setSensorName( sensors().at( i )->name() );
+     entry.setUnit( KSGRD::SensorMgr->translateUnit( sensors().at( i )->unit() ) );
+     entry.setStatus( sensors().at( i )->isOk() ? i18n( "OK" ) : i18n( "Error" ) );
+-    entry.setColor( mPlotter->beamColors()[ i ] );
++    entry.setColor( mPlotter->beamColor( i ) );
+ 
+     list.append( entry );
+   }
+@@ -157,9 +159,6 @@
+ 
+     if ( mPlotter->horizontalScale() != mSettingsDialog->horizontalScale() ) {
+       mPlotter->setHorizontalScale( mSettingsDialog->horizontalScale() );
+-      // Can someone think of a useful QResizeEvent to pass?
+-      // It doesn't really matter anyway because it's not used.
+-      emit resizeEvent( 0 );
+     }
+ 
+     mPlotter->setStackBeams( mSettingsDialog->stackBeams());
+@@ -197,7 +196,7 @@
+     SensorModelEntry::List list = mSettingsDialog->sensors();
+ 
+     for ( int i = 0; i < sensors().count(); ++i ) {
+-          mPlotter->beamColors()[ i ] = list[ i ].color();
++          mPlotter->setBeamColor( i, list[ i ].color() );
+     }
+ 
+     mPlotter->update();
+@@ -211,9 +210,9 @@
+   QFont font = mPlotter->font();
+   font.setPointSize(KSGRD::Style->fontSize() );
+   mPlotter->setFont( font );
+-  for ( int i = 0; i < mPlotter->beamColors().count() &&
++  for ( int i = 0; i < mPlotter->numBeams() &&
+         (unsigned int)i < KSGRD::Style->numSensorColors(); ++i )
+-    mPlotter->beamColors()[ i ] = KSGRD::Style->sensorColor( i );
++    mPlotter->setBeamColor( i, KSGRD::Style->sensorColor( i ) );
+ 
+   mPlotter->update();
+ }
+@@ -290,13 +289,13 @@
+ 
+     if(sensors().at( i)->isLocalhost()) {
+       tooltip += QString( "%1%2 %3 (%4)" ).arg( i != 0 ? "<br>" : "<qt>")
+-            .arg("<font color=\"" + mPlotter->beamColors()[ i ].name() + "\">"+indicatorSymbol+"</font>")
++            .arg("<font color=\"" + mPlotter->beamColor( i ).name() + "\">"+indicatorSymbol+"</font>")
+             .arg( description )
+ 	    .arg( lastValue );
+ 
+     } else {
+       tooltip += QString( "%1%2 %3:%4 (%5)" ).arg( i != 0 ? "<br>" : "<qt>" )
+-                 .arg("<font color=\"" + mPlotter->beamColors()[ i ].name() + "\">"+indicatorSymbol+"</font>")
++                 .arg("<font color=\"" + mPlotter->beamColor( i ).name() + "\">"+indicatorSymbol+"</font>")
+                  .arg( sensors().at( i )->hostName() )
+                  .arg( description )
+ 	         .arg( lastValue );
+@@ -306,16 +305,6 @@
+   mPlotter->setToolTip( tooltip );
+ }
+ 
+-void FancyPlotter::resizeEvent( QResizeEvent* )
+-{
+-  mPlotter->setGeometry( 0, 0, width(), height() );
+-}
+-
+-QSize FancyPlotter::sizeHint() const
+-{
+-  return mPlotter->sizeHint();
+-}
+-
+ void FancyPlotter::timerTick( ) //virtual
+ {
+   if(!mSampleBuf.isEmpty() && mBeams != 0) {
+@@ -467,7 +456,7 @@
+     beam.setAttribute( "hostName", sensors().at( i )->hostName() );
+     beam.setAttribute( "sensorName", sensors().at( i )->name() );
+     beam.setAttribute( "sensorType", sensors().at( i )->type() );
+-    saveColor( beam, "color", mPlotter->beamColors()[ i ] );
++    saveColor( beam, "color", mPlotter->beamColor( i ) );
+   }
+ 
+   SensorDisplay::saveSettings( doc, element );
+--- a/ksysguard/gui/SensorDisplayLib/DancingBars.cc
++++ b/ksysguard/gui/SensorDisplayLib/DancingBars.cc
+@@ -21,9 +21,9 @@
+ #include <QCheckBox>
+ #include <QtXml/qdom.h>
+ #include <QLineEdit>
+-#include <QListView>
+ #include <QPushButton>
+ #include <QSpinBox>
++#include <QHBoxLayout>
+ 
+ #include <kdebug.h>
+ #include <klocale.h>
+@@ -43,7 +43,9 @@
+   mFlags = QBitArray( 100 );
+   mFlags.fill( false );
+ 
++  QLayout *layout = new QHBoxLayout(this);
+   mPlotter = new BarGraph( this );
++  layout->addWidget(mPlotter);
+ 
+   setMinimumSize( sizeHint() );
+ 
+@@ -210,16 +212,6 @@
+   mPlotter->updateSamples( samples );
+ }
+ 
+-void DancingBars::resizeEvent( QResizeEvent* )
+-{
+-  mPlotter->setGeometry( 0, 0, width(), height() );
+-}
+-
+-QSize DancingBars::sizeHint() const
+-{
+-  return mPlotter->sizeHint();
+-}
+-
+ void DancingBars::answerReceived( int id, const QList<QByteArray> &answerlist )
+ {
+   /* We received something, so the sensor is probably ok. */
+--- a/ksysguard/gui/SensorDisplayLib/DancingBars.h
++++ b/ksysguard/gui/SensorDisplayLib/DancingBars.h
+@@ -24,7 +24,6 @@
+ #include <SensorDisplay.h>
+ 
+ #include <QBitArray>
+-#include <QResizeEvent>
+ #include <QVector>
+ 
+ 
+@@ -47,8 +46,6 @@
+ 
+     void updateSamples( const QVector<double> &samples );
+ 
+-    virtual QSize sizeHint() const;
+-
+     virtual void answerReceived( int id, const QList<QByteArray> &answerlist );
+ 
+     bool restoreSettings( QDomElement& );
+@@ -59,9 +56,6 @@
+   public Q_SLOTS:
+     virtual void applyStyle();
+ 
+-  protected:
+-    virtual void resizeEvent( QResizeEvent* );
+-
+   private:
+     uint mBars;
+ 
+@@ -78,3 +72,4 @@
+ };
+ 
+ #endif
++
+--- a/ksysguard/gui/SensorDisplayLib/LogFile.cc
++++ b/ksysguard/gui/SensorDisplayLib/LogFile.cc
+@@ -25,8 +25,8 @@
+ #include <QRegExp>
+ 
+ #include <QFile>
+-#include <QResizeEvent>
+ #include <QListWidget>
++#include <QHBoxLayout>
+ #include <kfontdialog.h>
+ #include <kdebug.h>
+ #include <klocale.h>
+@@ -41,11 +41,15 @@
+ LogFile::LogFile(QWidget *parent, const QString& title, SharedSettings *workSheetSettings)
+ 	: KSGRD::SensorDisplay(parent, title, workSheetSettings)
+ {
++	kDebug() << "Making sensor logger";
++	QLayout *layout = new QHBoxLayout(this);
+ 	monitor = new QListWidget(this);
+-	Q_CHECK_PTR(monitor);
++	layout->addWidget(monitor);
++	setLayout(layout);
+ 
+ 	setMinimumSize(50, 25);
+-
++	monitor->setContextMenuPolicy( Qt::CustomContextMenu );
++	connect(monitor, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
+ 	setPlotterWidget(monitor);
+ }
+ 
+@@ -266,8 +270,3 @@
+ 	}
+ }
+ 
+-void
+-LogFile::resizeEvent(QResizeEvent*)
+-{
+-	monitor->setGeometry(10, 20, this->width() - 20, this->height() - 30);
+-}
+--- a/ksysguard/gui/SensorDisplayLib/LogFile.h
++++ b/ksysguard/gui/SensorDisplayLib/LogFile.h
+@@ -28,7 +28,6 @@
+ #include <QtXml/qdom.h>
+ 
+ #include <QTimerEvent>
+-#include <QResizeEvent>
+ 
+ #include <SensorDisplay.h>
+ 
+@@ -44,7 +43,6 @@
+ 	bool addSensor(const QString& hostName, const QString& sensorName,
+ 				   const QString& sensorType, const QString& sensorDescr);
+ 	void answerReceived(int id, const QList<QByteArray>& answer);
+-	void resizeEvent(QResizeEvent*);
+ 
+ 	bool restoreSettings(QDomElement& element);
+ 	bool saveSettings(QDomDocument& doc, QDomElement& element);
+@@ -60,7 +58,7 @@
+ 
+ 	virtual bool hasSettingsDialog() const
+ 	{
+-		return (true);
++		return true;
+ 	}
+ 
+ public Q_SLOTS:
+@@ -73,7 +71,7 @@
+ 	void settingsRuleListSelected(int index);
+ 
+ private:
+-  Ui_LogFileSettings* lfs;
++	Ui_LogFileSettings* lfs;
+ 	QListWidget* monitor;
+ 	QStringList filterRules;
+ 
+--- a/ksysguard/gui/SensorDisplayLib/ProcessController.h
++++ b/ksysguard/gui/SensorDisplayLib/ProcessController.h
+@@ -2,7 +2,7 @@
+     KSysGuard, the KDE System Guard
+ 
+ 	Copyright (c) 1999, 2000 Chris Schlaeger <cs at kde.org>
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
++	Copyright (c) 2006 John Tapsell <john.tapsell at kde.org>
+ 
+     This program is free software; you can redistribute it and/or
+     modify it under the terms of version 2 of the GNU General Public
+@@ -27,7 +27,6 @@
+ 
+ #include <QVBoxLayout>
+ #include <QHBoxLayout>
+-#include <QResizeEvent>
+ #include <QList>
+ #include <QProcess>
+ 
+@@ -36,10 +35,10 @@
+ 
+ #include <SensorDisplay.h>
+ 
+-#include "ui_ProcessWidgetUI.h"
+-
+-extern KApplication* Kapp;
+-
++class KSysGuardProcessList;
++namespace KSysGuard {
++class Processes;
++}
+ /**
+  * This widget implements a process list page. Besides the process
+  * list which is implemented as a ProcessList, it contains two
+@@ -57,8 +56,6 @@
+ 
+ 	/* Functions for SensorDisplay*/
+ 	
+-	void resizeEvent(QResizeEvent*);
+-
+ 	bool restoreSettings(QDomElement& element);
+ 
+ 	bool saveSettings(QDomDocument& doc, QDomElement& element);
+@@ -77,9 +74,15 @@
+ 	{
+ 		return false;
+ 	}
++
++	virtual void answerReceived(int id, const QList<QByteArray>& answer );
++
++private Q_SLOTS:
++	void runCommand(const QString &command, int id);
++
+ private:
+-       /** The graphical user interface for this process list widget, auto-generated by Qt Designer */
+-       Ui::ProcessWidget mUi;
++	KSysGuardProcessList *mProcessList;
++	KSysGuard::Processes *mProcesses;
+ };
+ 
+ #endif
+--- a/ksysguard/gui/SensorDisplayLib/MultiMeter.cc
++++ b/ksysguard/gui/SensorDisplayLib/MultiMeter.cc
+@@ -23,7 +23,7 @@
+ 
+ #include <QtXml/qdom.h>
+ #include <QtGui/QLCDNumber>
+-#include <QtGui/QResizeEvent>
++#include <QtGui/QHBoxLayout>
+ 
+ #include <kdebug.h>
+ 
+@@ -44,8 +44,10 @@
+ 
+   mNormalDigitColor = KSGRD::Style->firstForegroundColor();
+   mAlarmDigitColor = KSGRD::Style->alarmColor();
+-
++  QLayout *layout = new QHBoxLayout(this);
+   mLcd = new QLCDNumber( this );
++  layout->addWidget(mLcd);
++
+   mLcd->setFrameStyle( QFrame::NoFrame );
+   mLcd->setSegmentStyle( QLCDNumber::Filled );
+   setDigitColor( KSGRD::Style->firstForegroundColor() );
+@@ -130,13 +132,6 @@
+   }
+ }
+ 
+-void MultiMeter::resizeEvent( QResizeEvent *event )
+-{
+-  mLcd->setGeometry(0, 0, width(), height());
+-
+-  QWidget::resizeEvent( event );
+-}
+-
+ bool MultiMeter::restoreSettings(QDomElement& element)
+ {
+   mLowerLimitActive = element.attribute("lowerLimitActive").toInt();
+--- a/ksysguard/gui/SensorDisplayLib/SignalPlotter.cc
++++ b/ksysguard/gui/SensorDisplayLib/SignalPlotter.cc
+@@ -56,6 +56,7 @@
+   QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+   sizePolicy.setHeightForWidth(false);
+   setSizePolicy( sizePolicy );
++  setAttribute( Qt::WA_OpaquePaintEvent );
+ 
+   mShowVerticalLines = true;
+   mVerticalLinesColor = QColor("black");
+@@ -102,6 +103,19 @@
+   mBeamColorsDark.append(color.darker(150));
+ }
+ 
++QColor KSignalPlotter::beamColor( int index ) {
++  return mBeamColors[ index ];
++}
++
++void KSignalPlotter::setBeamColor( int index, QColor color ) {
++  mBeamColors[ index ] = color;
++  mBeamColorsDark[ index ] = color.darker(150);
++}
++
++int KSignalPlotter::numBeams() {
++  return mBeamColors.count();
++}
++
+ void KSignalPlotter::addSample( const QList<double>& sampleBuf )
+ {
+   if(mSamples < 4) {
+@@ -173,11 +187,6 @@
+   calculateNiceRange();
+ }
+ 
+-QList<QColor> &KSignalPlotter::beamColors()
+-{
+-  return mBeamColors;
+-}
+-
+ void KSignalPlotter::removeBeam( uint pos )
+ {
+   if(pos >= (uint)mBeamColors.size()) return;
+@@ -426,11 +435,12 @@
+   mShowThinFrame = set;
+   mBackgroundImage = QImage(); //we changed a paint setting, so reset the cache
+ }
++
+ void KSignalPlotter::resizeEvent( QResizeEvent* )
+ {
+   Q_ASSERT( width() > 2 );
+ //  mBackgroundImage = mBackgroundImage.scaled(width(), height()); //set to null.  If it's invalid, it will be rerendered.
+-  if (testAttribute(Qt::WA_PendingResizeEvent)) {
++  if (testAttribute(Qt::WA_PendingResizeEvent)) {	
+       return; // we'll be back here again in no time
+   }
+ 
+--- a/ksysguard/gui/SensorDisplayLib/MultiMeter.h
++++ b/ksysguard/gui/SensorDisplayLib/MultiMeter.h
+@@ -24,7 +24,6 @@
+ #include <SensorDisplay.h>
+ 
+ class QLCDNumber;
+-class QResizeEvent;
+ 
+ class MultiMeter : public KSGRD::SensorDisplay
+ {
+@@ -39,8 +38,6 @@
+     bool addSensor(const QString& hostName, const QString& sensorName,
+                    const QString& sensorType, const QString& sensorDescr);
+     void answerReceived(int id, const QList<QByteArray>& answerlist);
+-    void resizeEvent(QResizeEvent*);
+-
+     bool restoreSettings(QDomElement& element);
+     bool saveSettings(QDomDocument& doc, QDomElement& element);
+ 
+--- a/ksysguard/gui/SensorDisplayLib/SignalPlotter.h
++++ b/ksysguard/gui/SensorDisplayLib/SignalPlotter.h
+@@ -88,11 +88,14 @@
+      */
+     void removeBeam( uint pos );
+ 
+-    /** Return the list of beam (the graph lines) colors, in the order
+-     *  that the beams 
+-     *  were added (or later reordered)
++    /** Get/set the beam (the graph lines) colors, in the order
++     *  that the beams were added (or later reordered)
+      */
+-    QList<QColor> &beamColors();
++    QColor beamColor( int index );
++    void setBeamColor( int index, QColor color );
++
++    /** returns the # of beams */
++    int numBeams();
+ 
+     /** Set the title of the graph.  Drawn in the top left. */
+     void setTitle( const QString &title );
+--- a/ksysguard/gui/SensorDisplayLib/SensorDisplay.cc
++++ b/ksysguard/gui/SensorDisplayLib/SensorDisplay.cc
+@@ -26,7 +26,6 @@
+ #include <QBitmap>
+ #include <QPixmap>
+ #include <QEvent>
+-#include <QResizeEvent>
+ #include <QMouseEvent>
+ #include <QCustomEvent>
+ 
+@@ -107,11 +106,8 @@
+  }
+ }
+ 
+-bool SensorDisplay::eventFilter( QObject *object, QEvent *event )
++void SensorDisplay::showContextMenu(const QPoint &pos)
+ {
+-  if ( event->type() == QEvent::MouseButtonPress &&
+-     ( (QMouseEvent*)event)->button() == Qt::RightButton ) {
+-
+     QMenu pm;
+     QAction *action = 0;
+     bool menuEmpty = true;
+@@ -133,8 +129,8 @@
+       menuEmpty = false;
+     }
+ 
+-    if(menuEmpty) return true;
+-    action = pm.exec( QCursor::pos() );
++    if(menuEmpty) return;
++    action = pm.exec( mapToGlobal(pos) );
+     if ( action ) {
+       switch ( action->data().toInt() ) {
+         case 1:
+@@ -152,8 +148,16 @@
+           break;
+       }
+     }
++}
+ 
+-    return true;
++bool SensorDisplay::eventFilter( QObject *object, QEvent *event )
++{
++  if ( event->type() == QEvent::MouseButtonPress) {
++    QMouseEvent *e = static_cast<QMouseEvent *> (event);
++    if( e->button() == Qt::RightButton ) {
++      showContextMenu( e->pos() );
++      return true;
++    }
+   } 
+ 
+   return QWidget::eventFilter( object, event );
+--- a/ksysguard/gui/SensorDisplayLib/SensorDisplay.h
++++ b/ksysguard/gui/SensorDisplayLib/SensorDisplay.h
+@@ -207,6 +207,8 @@
+      */
+     virtual void timerTick();
+ 
++    void showContextMenu(const QPoint &);
++
+   Q_SIGNALS:
+     void showPopupMenu( KSGRD::SensorDisplay *display );
+     void changeTitle(const QString&);
+--- a/ksysguard/gui/SensorDisplayLib/ListView.cc
++++ b/ksysguard/gui/SensorDisplayLib/ListView.cc
+@@ -44,6 +44,9 @@
+ 	mView->setModel(&mModel);
+ 	layout->addWidget(mView);
+ 	this->setLayout(layout);
++	
++	mView->setContextMenuPolicy( Qt::CustomContextMenu );
++	connect(mView, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
+ 
+ 	mView->setAlternatingRowColors(true);
+ 	mView->header()->setMovable(false);
+--- a/ksysguard/gui/SensorDisplayLib/SensorLogger.cc
++++ b/ksysguard/gui/SensorDisplayLib/SensorLogger.cc
+@@ -26,6 +26,7 @@
+ #include <QtGui/QHeaderView>
+ #include <QtGui/QMenu>
+ #include <QtGui/QTreeView>
++#include <QtGui/QHBoxLayout>
+ #include <QtXml/QDomNodeList>
+ #include <QtXml/QDomDocument>
+ #include <QtXml/QDomElement>
+@@ -35,6 +36,7 @@
+ #include <klocale.h>
+ #include <knotification.h>
+ #include <ksgrd/SensorManager.h>
++#include <kdebug.h>
+ #include "StyleEngine.h"
+ 
+ #include "SensorLoggerDlg.h"
+@@ -402,8 +404,15 @@
+   mModel->setForegroundColor( KSGRD::Style->firstForegroundColor() );
+   mModel->setBackgroundColor( KSGRD::Style->backgroundColor() );
+   mModel->setAlarmColor( KSGRD::Style->alarmColor() );
+-
++  
++  QLayout *layout = new QHBoxLayout(this);
+   mView = new LogSensorView( this );
++  layout->addWidget(mView);
++  setLayout(layout);
++
++  mView->setContextMenuPolicy( Qt::CustomContextMenu );
++  connect(mView, SIGNAL(customContextMenuRequested(const QPoint&)), SLOT(showContextMenu(const QPoint &)));
++
+   mView->header()->setStretchLastSection( true );
+   mView->setRootIsDecorated( false );
+   mView->setItemsExpandable( false );
+@@ -576,11 +585,6 @@
+  // we do not use this, since all answers are received by the LogSensors
+ }
+ 
+-void SensorLogger::resizeEvent(QResizeEvent*)
+-{
+-  mView->setGeometry( 10, 20, this->width() - 20, this->height() - 30 );
+-}
+-
+ void SensorLogger::contextMenuRequest( const QModelIndex &index, const QPoint &point )
+ {
+   LogSensor *sensor = mModel->sensor( index );
+@@ -592,20 +596,23 @@
+     action = pm.addAction(i18n("&Properties"));
+     action->setData( 1 );
+   }
+-  action = pm.addAction(i18n("&Remove Display"));
+-  action->setData( 2 );
++  if(!mSharedSettings->locked) {  
+ 
+-  pm.addSeparator();
++    action = pm.addAction(i18n("&Remove Display"));
++    action->setData( 2 );
+ 
+-  action = pm.addAction(i18n("&Remove Sensor"));
+-  action->setData( 3 );
+-  if ( !sensor )
+-    action->setEnabled( false );
+-
+-  action = pm.addAction(i18n("&Edit Sensor..."));
+-  action->setData( 4 );
+-  if ( !sensor )
+-    action->setEnabled( false );
++    pm.addSeparator();
++
++    action = pm.addAction(i18n("&Remove Sensor"));
++    action->setData( 3 );
++    if ( !sensor )
++      action->setEnabled( false );
++
++    action = pm.addAction(i18n("&Edit Sensor..."));
++    action->setData( 4 );
++    if ( !sensor )
++      action->setEnabled( false );
++  }
+ 
+   if ( sensor ) {
+     if ( sensor->isLogging() ) {
+--- a/ksysguard/gui/SensorDisplayLib/SensorLogger.h
++++ b/ksysguard/gui/SensorDisplayLib/SensorLogger.h
+@@ -27,7 +27,6 @@
+ 
+ class LogSensorModel;
+ class QDomElement;
+-class QResizeEvent;
+ 
+ class LogSensor : public QObject, public KSGRD::SensorClient
+ {
+@@ -125,7 +124,6 @@
+     bool editSensor( LogSensor* );
+ 
+     virtual void answerReceived( int, const QList<QByteArray>& );
+-    void resizeEvent( QResizeEvent* );
+ 
+     bool restoreSettings( QDomElement& );
+     bool saveSettings( QDomDocument&, QDomElement& );
+--- a/ksysguard/gui/SensorDisplayLib/FancyPlotter.h
++++ b/ksysguard/gui/SensorDisplayLib/FancyPlotter.h
+@@ -23,7 +23,6 @@
+ 
+ #include <SensorDisplay.h>
+ #include <QList>
+-#include <QResizeEvent>
+ 
+ #include "SignalPlotter.h"
+ #include "SharedSettings.h"
+@@ -64,8 +63,6 @@
+ 
+     bool removeSensor( uint pos );
+ 
+-    virtual QSize sizeHint(void) const;
+-
+     virtual void setTitle( const QString &title );
+ 
+     virtual void answerReceived( int id, const QList<QByteArray> &answerlist );
+@@ -85,7 +82,6 @@
+     /** When we receive a timer tick, draw the beams and request new information to update the beams*/
+     virtual void timerTick( );
+     virtual bool eventFilter( QObject*, QEvent* );
+-    virtual void resizeEvent( QResizeEvent* );
+     void setTooltip();
+ 
+   private:
+--- a/ksysguard/gui/SensorDisplayLib/ProcessController.cc
++++ b/ksysguard/gui/SensorDisplayLib/ProcessController.cc
+@@ -2,7 +2,7 @@
+     KSysGuard, the KDE System Guard
+ 
+ 	Copyright (c) 1999 - 2001 Chris Schlaeger <cs at kde.org>
+-	Copyright (c) 2006 John Tapsell <john.tapsell at kdemail.net>
++	Copyright (c) 2006 John Tapsell <john.tapsell at kde.org>
+ 
+     This program is free software; you can redistribute it and/or
+     modify it under the terms version 2 of of the GNU General Public
+@@ -24,11 +24,15 @@
+ #include <QTreeView>
+ #include <QCheckBox>
+ #include <QHeaderView>
++#include <QStackedLayout>
+ 
+ #include <kdebug.h>
+ 
+ #include "ProcessController.moc"
+ #include "ProcessController.h"
++#include "processui/ksysguardprocesslist.h"
++#include "processes.h"
++
+ //#define DO_MODELCHECK
+ #ifdef DO_MODELCHECK
+ #include "modeltest.h"
+@@ -36,14 +40,8 @@
+ ProcessController::ProcessController(QWidget* parent, const QString &title, SharedSettings *workSheetSettings)
+ 	: KSGRD::SensorDisplay(parent, title, workSheetSettings)
+ {
+-	mUi.setupUi(this);
+-        QTimer::singleShot(0, mUi.ksysguardprocesslist->filterLineEdit(), SLOT(setFocus()));
+-	setPlotterWidget(this);
+-	setMinimumSize(sizeHint());
+-}
+-void ProcessController::resizeEvent(QResizeEvent* ev)
+-{
+-	QWidget::resizeEvent(ev);
++	mProcessList = NULL;
++	mProcesses = NULL;
+ }
+ 
+ void
+@@ -69,58 +67,90 @@
+ 				element.attribute("sensorName"),
+ 				(element.attribute("sensorType").isEmpty() ? "table" : element.attribute("sensorType")),
+ 				QString());
++	if(!result) return false;
++
+ 	int version = element.attribute("version", "0").toUInt();
+ 	if(version == PROCESSHEADERVERSION) {  //If the header has changed, the old settings are no longer valid.  Only restore if version is the same
+-		mUi.ksysguardprocesslist->treeView()->header()->restoreState(QByteArray::fromBase64(element.attribute("treeViewHeader").toLatin1()));
++		mProcessList->treeView()->header()->restoreState(QByteArray::fromBase64(element.attribute("treeViewHeader").toLatin1()));
+ 	}
+ 
+-
+-
+ 	bool showTotals = element.attribute("showTotals", "1").toUInt();
+-	mUi.ksysguardprocesslist->setShowTotals(showTotals);
++	mProcessList->setShowTotals(showTotals);
++
+ 
+ 	int units = element.attribute("units", QString::number((int)ProcessModel::UnitsKB)).toUInt();
+-	mUi.ksysguardprocesslist->setUnits((ProcessModel::Units)units);
++	mProcessList->setUnits((ProcessModel::Units)units);
+ 
+ 	int filterState = element.attribute("filterState", QString::number((int)ProcessFilter::AllProcesses)).toUInt();
+-	mUi.ksysguardprocesslist->setState((ProcessFilter::State)filterState);
++	mProcessList->setState((ProcessFilter::State)filterState);
+ 
+ 	SensorDisplay::restoreSettings(element);
+ 	return result;
+ }
+ 
+-bool
+-ProcessController::saveSettings(QDomDocument& doc, QDomElement& element)
++bool ProcessController::saveSettings(QDomDocument& doc, QDomElement& element)
+ {
++	if(!mProcessList)
++		return false;
+ 	element.setAttribute("hostName", sensors().at(0)->hostName());
+ 	element.setAttribute("sensorName", sensors().at(0)->name());
+ 	element.setAttribute("sensorType", sensors().at(0)->type());
+ 
+ 	element.setAttribute("version", QString::number(PROCESSHEADERVERSION));
+-	element.setAttribute("treeViewHeader", QString::fromLatin1(mUi.ksysguardprocesslist->treeView()->header()->saveState().toBase64()));
+-	element.setAttribute("showTotals", mUi.ksysguardprocesslist->showTotals()?1:0);
++	element.setAttribute("treeViewHeader", QString::fromLatin1(mProcessList->treeView()->header()->saveState().toBase64()));
++	element.setAttribute("showTotals", mProcessList->showTotals()?1:0);
+ 	
+-	element.setAttribute("units", (int)(mUi.ksysguardprocesslist->units()));
+-	element.setAttribute("filterState", (int)(mUi.ksysguardprocesslist->state()));
++	element.setAttribute("units", (int)(mProcessList->units()));
++	element.setAttribute("filterState", (int)(mProcessList->state()));
+ 
+ 	SensorDisplay::saveSettings(doc, element);
+ 
+ 	return true;
+ }
++
++void ProcessController::answerReceived( int id, const QList<QByteArray>& answer ) {
++	if(mProcesses)
++		mProcesses->answerReceived(id, answer);
++}
++
+ bool ProcessController::addSensor(const QString& hostName,
+                                  const QString& sensorName,
+                                  const QString& sensorType,
+                                  const QString& title)
+ {
+-       if (sensorType != "table")
+-               return false;
++	if (sensorType != "table")
++		return false;
+ 
+-       registerSensor(new KSGRD::SensorProperties(hostName, sensorName, sensorType, title));
+-       /* This just triggers the first communication. The full set of
+-        * requests are send whenever the sensor reconnects (detected in
+-        * sensorError(). */
+-
+-       sensors().at(0)->setIsOk(true); //Assume it is okay from the start
+-       setSensorOk(sensors().at(0)->isOk());
+-       return true;
++
++	QStackedLayout *layout = new QStackedLayout(this);
++	mProcessList = new KSysGuardProcessList(this, hostName);
++	layout->addWidget(mProcessList);
++
++	/** To use a remote sensor, we need to drill down through the layers, to connect to the remote processes.  Then connect to its signals and slots.
++	 *  It's horrible I know :( */
++	if(!hostName.isEmpty() && hostName != "localhost") {
++		KSysGuard::Processes *processes = mProcessList->processModel()->processController();
++		mProcesses = processes;
++		if(processes) {
++			connect( processes, SIGNAL(runCommand(const QString &, int)), SLOT(runCommand(const QString &, int)));
++		}
++	}
++
++		
++	setPlotterWidget(mProcessList);
++
++        QTimer::singleShot(0, mProcessList->filterLineEdit(), SLOT(setFocus()));
++
++	registerSensor(new KSGRD::SensorProperties(hostName, sensorName, sensorType, title));
++	/* This just triggers the first communication. The full set of
++	* requests are send whenever the sensor reconnects (detected in
++	* sensorError(). */
++	sensors().at(0)->setIsOk(true); //Assume it is okay from the start
++	setSensorOk(sensors().at(0)->isOk());
++	return true;
+ }
++
++void ProcessController::runCommand(const QString &command, int id) {
++	sendRequest(sensors().at(0)->hostName(), command, id);
++}
++
+--- a/ksysguard/gui/ksysguardapplet.desktop
++++ b/ksysguard/gui/ksysguardapplet.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=System Monitor
+ Name[ar]=مراقب النظام
+ Name[be]=Сістэмны назіральнік
+@@ -8,6 +7,7 @@
+ Name[csb]=Mònitor systemë
+ Name[de]=Systemmonitor
+ Name[el]=Επόπτης συστήματος
++Name[eo]=Sistemstato-programo
+ Name[et]=Süsteemi jälgija
+ Name[fa]=نمایشگر سیستم
+ Name[ga]=Monatóir an Chórais
+@@ -22,7 +22,7 @@
+ Name[ne]=प्रणाली मनिटर
+ Name[nl]=Systeemmonitor
+ Name[nn]=Systemovervaking
+-Name[pa]=ਸਿਸਟਮ ਨਿਗਰਾਨ
++Name[pa]=ਸਿਸਟਮ ਮਾਨੀਟਰ
+ Name[pt]=Monitor do Sistema
+ Name[pt_BR]=Monitor do Sistema
+ Name[sl]=Sistemski nadzornik
+@@ -39,6 +39,7 @@
+ Comment[ar]=بريمج يراقب معلومات النظام
+ Comment[be]=Аплет, які адлюстроўвае звесткі пра сістэму
+ Comment[bg]=Аплет за наблюдение на системата
++Comment[ca]=Una miniaplicació que controla la informació del sistema
+ Comment[csb]=Aplet jaczi mònitorëje systemòwą wedowiédzã
+ Comment[de]=Anwendung zur Systemüberwachung
+ Comment[el]=Μια μικροεφαρμογή παρακολούθησης πληροφοριών του συστήματος
+--- a/ksysguard/gui/CMakeLists.txt
++++ b/ksysguard/gui/CMakeLists.txt
+@@ -36,7 +36,6 @@
+    ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/ListViewSettingsWidget.ui
+    ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/LogFileSettings.ui
+    ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/MultiMeterSettingsWidget.ui
+-   ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/ProcessWidgetUI.ui
+    ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/SensorLoggerDlgWidget.ui
+    ${CMAKE_CURRENT_SOURCE_DIR}/SensorDisplayLib/SensorLoggerSettingsWidget.ui
+ )
+--- a/ksysguard/example/ksysguard.notifyrc
++++ b/ksysguard/example/ksysguard.notifyrc
+@@ -33,6 +33,7 @@
+ Comment[ne]=केडीई प्रणाली गार्ड
+ Comment[nl]=Systeemmonitor (KDE)
+ Comment[nn]=KDE systemvakt
++Comment[pa]=KDE ਸਿਸਟਮ ਗਾਰਡ
+ Comment[pl]=KDE Strażnik Systemu
+ Comment[pt]=Vigilante do Sistema KDE
+ Comment[pt_BR]=System Guard do KDE
+@@ -54,6 +55,7 @@
+ Name[ca]=S'ha trobat el patró
+ Name[de]=Muster gefunden
+ Name[el]=Ταίριασμα μοτίβου
++Name[eo]=Ŝablono kongruis
+ Name[et]=Sobiv muster
+ Name[hu]=Illeszkedő minta
+ Name[ja]=パターンにマッチ
+@@ -63,6 +65,7 @@
+ Name[ne]=बान्की मिल्यो
+ Name[nl]=Patroon komt overeen
+ Name[nn]=Mønstertreff
++Name[pa]=ਪੈਟਰਨ ਮੇਲ
+ Name[pt]=Padrão Correspondente
+ Name[pt_BR]=Padrão Igualado
+ Name[sr]=Образац поклопљен
+@@ -115,8 +118,10 @@
+ 
+ [Event/sensor_alarm]
+ Name=Sensor Alarm
++Name[ca]=Alarma dels sensors
+ Name[de]=Sensor-Alarm
+ Name[el]=Ειδοποίηση αισθητήρα
++Name[eo]=Sentil-alarmo
+ Name[et]=Sensori häire
+ Name[hu]=Érzékelő: riasztás
+ Name[ja]=センサーアラーム
+@@ -126,6 +131,7 @@
+ Name[ne]=संवेदक सचेतक
+ Name[nl]=Sensoralarm
+ Name[nn]=Følervarsel
++Name[pa]=ਸੈਂਸਰ ਅਲਾਰਮ
+ Name[pt]=Alarme dos Sensores
+ Name[pt_BR]=Alarme do Sensor
+ Name[sr]=Сензорски аларм
+@@ -136,6 +142,7 @@
+ Name[zh_TW]=感應器警報
+ Comment=Sensor exceeded critical limit
+ Comment[af]=Sensor oorskry krities beperk
++Comment[ca]=El sensor ha excedit el límit crític
+ Comment[cy]=Aethpwyd dros gyfyngder critigol y synhwyrydd
+ Comment[da]=Sensor gik ud over kritisk grænse
+ Comment[de]=Sensor hat kritische Schwelle überschritten
+@@ -162,6 +169,7 @@
+ Comment[ne]=संवेदकले असामान्य सिमा नाघ्यो
+ Comment[nl]=Sensor overschreed kritiek limiet
+ Comment[nn]=Følaren gjekk utanfor kritisk grense
++Comment[pa]=ਸੈਂਸਰ ਘਾਤਕ ਹੱਦ ਲੰਘ ਗਏ
+ Comment[pl]=Czujnik przekroczył granicę krytyczną
+ Comment[pt]=O sensor atingiu um limite crítico
+ Comment[pt_BR]=O sensor excedeu o limite crítico
+--- a/plasma/containments/panel/plasma-containment-panel.desktop
++++ b/plasma/containments/panel/plasma-containment-panel.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Panel
+ Name[af]=Paneel
+ Name[ar]=اللوحة
+@@ -52,6 +51,7 @@
+ Name[zh_CN]=面板
+ Name[zh_TW]=面板
+ Comment=A containment for a panel
++Comment[ca]=Un contenidor per un plafó
+ Comment[el]=Ένας υποδοχέας για έναν πίνακα
+ Comment[et]=Paneeli konteiner
+ Comment[ja]=Plasmoid (Plasma パネル) の入れ物
+@@ -61,6 +61,7 @@
+ Comment[ne]=प्यानलका लागि एउटा रोकथाम
+ Comment[nl]=Een insluiting voor een paneel
+ Comment[nn]=Ein bahaldar for panel
++Comment[pa]=ਇੱਕ ਪੈਨਲ ਲਈ ਕੰਨਟੇਨਮੈਂਟ
+ Comment[pt]=Um contentor para um painel
+ Comment[pt_BR]=Um contentor para um painel
+ Comment[sr]=Садржалац за панел
+@@ -71,7 +72,7 @@
+ Comment[zh_TW]=面板容器
+ Icon=
+ Type=Service
+-ServiceTypes=Plasma/Applet,Plasma/Containment
++X-KDE-ServiceTypes=Plasma/Applet,Plasma/Containment
+ NoDisplay=true
+ 
+ X-KDE-Library=plasma_containment_panel
+--- a/plasma/containments/panel/panel.cpp
++++ b/plasma/containments/panel/panel.cpp
+@@ -25,12 +25,14 @@
+ #include <KDebug>
+ 
+ #include <plasma/corona.h>
++#include <plasma/layouts/layout.h>
+ #include <plasma/svg.h>
+ 
+ using namespace Plasma;
+ 
+ Panel::Panel(QObject *parent, const QVariantList &args)
+-    : Containment(parent, args)
++    : Containment(parent, args),
++      m_cachedBackground(0)
+ {
+     //FIXME: we need a proper background painting implementation here
+     m_background = new Plasma::Svg("widgets/panel-background", this);
+@@ -42,17 +44,46 @@
+     delete m_background;
+ }
+ 
+-Containment::Type Panel::type()
++Plasma::Containment::Type Panel::containmentType() const
+ {
+     return PanelContainment;
+ }
+ 
+ void Panel::constraintsUpdated(Plasma::Constraints constraints)
+ {
+-    //kDebug() << "constraints updated with" << constraints << "!!!!!!!!!!!!!!!!!";
+-    if (constraints & Plasma::LocationConstraint ||
+-        constraints & Plasma::ScreenConstraint) {
++    if (constraints & Plasma::LocationConstraint || constraints & Plasma::ScreenConstraint) {
+         Plasma::Location loc = location();
++        bool drawTop = true;
++        bool drawLeft = true;
++        bool drawRight = true;
++        bool drawBottom = true;
++
++        //FIXME: panels with less than 100% width need to paint edges, but full width panels
++        //       shouldn't
++        switch (loc) {
++            case TopEdge:
++                drawTop = false;
++                break;
++            case LeftEdge:
++                drawLeft = false;
++                break;
++            case RightEdge:
++                drawRight = false;
++                break;
++            case BottomEdge:
++                drawBottom = false;
++                break;
++            default:
++                break;
++        }
++
++        const int topHeight = drawTop ? m_background->elementSize("top").height() : 0;
++        const int leftWidth = drawLeft ? m_background->elementSize("left").width() : 0;
++        const int rightWidth = drawRight ? m_background->elementSize("right").width() : 0;
++        const int bottomHeight = drawBottom ? m_background->elementSize("bottom").height() : 0;
++
++
++    //kDebug() << "constraints updated with" << constraints << "!!!!!!!!!!!!!!!!!";
+         int s = screen();
+         if (s < 0) {
+             s = 0;
+@@ -71,8 +102,12 @@
+ 
+             width = r.width();
+             height = 48;
++
+             if (loc == BottomEdge) {
++                height += topHeight;
+                 y = r.height() - height;
++            } else {
++                height += bottomHeight;
+             }
+             //kDebug() << "top/bottom: Width:" << width << ", height:" << height;
+         } else if (loc == LeftEdge || loc == RightEdge) {
+@@ -81,14 +116,25 @@
+             width = 48;
+             height = r.height();
+             if (loc == RightEdge) {
++                width += leftWidth;
+                 x = r.width() - width;
++            } else {
++                width += rightWidth;
+             }
+             //kDebug() << "left/right: Width:" << width << ", height:" << height;
+         }
+-        //kDebug() << "Setting geometry to" << QRectF(x, y, width, height);
++        //kDebug() << "Setting geometry to" << QRectF(x, y, width, height) << "with margins" << leftWidth << topHeight << rightWidth << bottomHeight;
+         QRectF geo = QRectF(x, y, width, height);
+         setGeometry(geo);
+ 
++        if (layout()) {
++            //FIXME: we need a layout hint here for the magin number 4 in the svg
++            layout()->setMargin(Plasma::Layout::TopMargin, topHeight - 4);
++            layout()->setMargin(Plasma::Layout::LeftMargin, leftWidth - 4);
++            layout()->setMargin(Plasma::Layout::RightMargin, rightWidth - 4);
++            layout()->setMargin(Plasma::Layout::BottomMargin, bottomHeight - 4);
++        }
++
+         if (corona()) {
+             foreach (Containment *c, corona()->containments()) {
+                 if (c->type() != PanelContainment || c == this) {
+@@ -129,18 +175,170 @@
+ 
+     // blit the background (saves all the per-pixel-products that blending does)
+     painter->setCompositionMode(QPainter::CompositionMode_Source);
++    painter->setRenderHint(QPainter::Antialiasing);
+ 
+-    if (m_background) {
+-        m_background->resize(contentsRect.size());
+-        // Plasma::Svg doesn't support drawing only part of the image (it only
+-        // supports drawing the whole image to a rect), so we blit to 0,0-w,h
+-        m_background->paint(painter, 0, 0);
+-    }
++    paintBackground(painter, contentsRect);
+ 
+     // restore transformation and composition mode
+     painter->restore();
+ }
+ 
++void Panel::paintBackground(QPainter* painter, const QRect& contentsRect)
++{
++    QSize s = geometry().toRect().size();
++    m_background->resize();
++
++    if (!m_cachedBackground || m_cachedBackground->size() != s) {
++        bool drawTop = true;
++        bool drawLeft = true;
++        bool drawRight = true;
++        bool drawBottom = true;
++
++        //FIXME: panels with less than 100% width need to paint edges, but full width panels
++        //       shouldn't
++        switch (location()) {
++            case TopEdge:
++                drawTop = false;
++                break;
++            case LeftEdge:
++                drawLeft = false;
++                break;
++            case RightEdge:
++                drawRight = false;
++                break;
++            case BottomEdge:
++                drawBottom = false;
++                break;
++            default:
++                break;
++        }
++
++        const int topHeight = drawTop ? m_background->elementSize("top").height() : 0;
++        const int topWidth = drawTop ? m_background->elementSize("top").width() : 0;
++        const int leftWidth = drawLeft ? m_background->elementSize("left").width() : 0;
++        const int leftHeight = drawLeft ? m_background->elementSize("left").height(): 0;
++        const int rightWidth = drawRight ? m_background->elementSize("right").width() : 0;
++        const int rightHeight = drawRight ? m_background->elementSize("right").height() : 0;
++        const int bottomHeight = drawBottom ? m_background->elementSize("bottom").height() : 0;
++        const int bottomWidth = drawBottom ? m_background->elementSize("bottom").height() : 0;
++
++        const int topOffset = 0;
++        const int leftOffset = 0;
++        const int contentWidth = s.width() - leftWidth - rightWidth;
++        const int contentHeight = s.height() - topHeight - bottomHeight;
++        const int rightOffset = s.width() - rightWidth;
++        const int bottomOffset = s.height() - bottomHeight;
++        const int contentTop = topHeight;
++        const int contentLeft = leftWidth;
++
++        delete m_cachedBackground;
++        m_cachedBackground = new QPixmap(s);
++
++        m_cachedBackground->fill(Qt::transparent);
++        QPainter p(m_cachedBackground);
++        p.setCompositionMode(QPainter::CompositionMode_Source);
++        p.setRenderHint(QPainter::SmoothPixmapTransform);
++
++        //FIXME: This is a hack to fix a drawing problems with svg files where a thin transparent border is drawn around the svg image.
++        //       the transparent border around the svg seems to vary in size depending on the size of the svg and as a result increasing the
++        //       svn image by 2 all around didn't resolve the issue. For now it resizes based on the border size.
++
++        if (contentWidth > 0 && contentHeight > 0) {
++            m_background->resize(contentWidth, contentHeight);
++            m_background->paint(&p, QRect(leftWidth, topHeight, contentWidth, contentHeight), "center");
++            m_background->resize();
++        }
++
++        if (drawTop) {
++            if (drawLeft) {
++                m_background->paint(&p, QRect(leftOffset, topOffset, leftWidth, topHeight), "topleft");
++            }
++
++            if (drawRight) {
++                m_background->paint(&p, QRect(rightOffset, topOffset, rightWidth, topHeight), "topright");
++            }
++        }
++
++        if (drawBottom) {
++            if (drawLeft) {
++                m_background->paint(&p, QRect(leftOffset, bottomOffset, leftWidth, bottomHeight), "bottomleft");
++            }
++
++            if (drawRight) {
++                m_background->paint(&p, QRect(rightOffset, bottomOffset, rightWidth, bottomHeight), "bottomright");
++            }
++        }
++
++        if (m_background->elementExists("hint-stretch-borders")) {
++            if (drawLeft) {
++                m_background->paint(&p, QRect(leftOffset, contentTop, leftWidth, contentHeight), "left");
++            }
++
++            if (drawRight) {
++                m_background->paint(&p, QRect(rightOffset, contentTop, rightWidth, contentHeight), "right");
++            }
++
++            if (drawTop) {
++                m_background->paint(&p, QRect(contentLeft, topOffset, contentWidth, topHeight), "top");
++            }
++
++            if (drawBottom) {
++                m_background->paint(&p, QRect(contentLeft, bottomOffset, contentWidth, bottomHeight), "bottom");
++            }
++        } else {
++            if (drawLeft) {
++                QPixmap left(leftWidth, leftHeight);
++                left.fill(Qt::transparent);
++                {
++                    QPainter sidePainter(&left);
++                    sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                    m_background->paint(&sidePainter, QPoint(0, 0), "left");
++                }
++                p.drawTiledPixmap(QRect(leftOffset, contentTop, leftWidth, contentHeight), left);
++            }
++
++            if (drawRight) {
++                QPixmap right(rightWidth, rightHeight);
++                right.fill(Qt::transparent);
++                {
++                    QPainter sidePainter(&right);
++                    sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                    m_background->paint(&sidePainter, QPoint(0, 0), "right");
++                }
++                p.drawTiledPixmap(QRect(rightOffset, contentTop, rightWidth, contentHeight), right);
++            }
++
++            if (drawTop) {
++                QPixmap top(topWidth, topHeight);
++                top.fill(Qt::transparent);
++                {
++                    QPainter sidePainter(&top);
++                    sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                    m_background->paint(&sidePainter, QPoint(0, 0), "top");
++                }
++                p.drawTiledPixmap(QRect(contentLeft, topOffset, contentWidth, topHeight), top);
++            }
++
++            if (drawBottom) {
++                QPixmap bottom(bottomWidth, bottomHeight);
++                bottom.fill(Qt::transparent);
++                {
++                    QPainter sidePainter(&bottom);
++                    sidePainter.setCompositionMode(QPainter::CompositionMode_Source);
++                    m_background->paint(&sidePainter, QPoint(0, 0), "bottom");
++                }
++                p.drawTiledPixmap(QRect(contentLeft, bottomOffset, contentWidth, bottomHeight), bottom);
++            }
++        }
++
++        // re-enable this once Qt's svg rendering is un-buggered
++        //background->resize(contentWidth, contentHeight);
++        //background->paint(&p, QRect(contentLeft, contentTop, contentWidth, contentHeight), "center");
++    }
++
++    painter->drawPixmap(contentsRect, *m_cachedBackground, contentsRect);
++}
++
+ K_EXPORT_PLASMA_APPLET(panel, Panel)
+ 
+ #include "panel.moc"
+--- a/plasma/containments/panel/panel.h
++++ b/plasma/containments/panel/panel.h
+@@ -33,16 +33,17 @@
+     Panel(QObject *parent, const QVariantList &args);
+     ~Panel();
+ 
+-    Containment::Type type();
++    Plasma::Containment::Type containmentType() const;
+     void constraintsUpdated(Plasma::Constraints constraints);
+     Qt::Orientations expandingDirections() const;
+ 
+     void paintInterface(QPainter *painter,
+                         const QStyleOptionGraphicsItem *option,
+-                        const QRect& contentsRect);
+-
++                        const QRect &contentsRect);
++    void paintBackground(QPainter *painter, const QRect &contentsRect);
+ private:
+     Plasma::Svg *m_background;
++    QPixmap* m_cachedBackground;
+ };
+ 
+ 
+--- a/plasma/containments/desktop/desktop.h
++++ b/plasma/containments/desktop/desktop.h
+@@ -24,6 +24,7 @@
+ #include <QObject>
+ #include <QStyleOptionGraphicsItem>
+ 
++#include <KDialog>
+ #include <KIcon>
+ 
+ #include <plasma/containment.h>
+@@ -31,6 +32,7 @@
+ #include <plasma/widgets/widget.h>
+ 
+ class QAction;
++class QTimer;
+ class QTimeLine;
+ 
+ namespace Plasma
+@@ -39,6 +41,11 @@
+     class Svg;
+ }
+ 
++namespace Ui
++{
++    class config;
++}
++
+ /*class Tool : public QObject, public QGraphicsItem
+ {
+     Q_OBJECT
+@@ -50,35 +57,6 @@
+ 
+ };*/
+ 
+-class ToolBox : public QObject, public QGraphicsItem
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ToolBox(QGraphicsItem *parent = 0);
+-    QRectF boundingRect() const;
+-    QPainterPath shape() const;
+-
+-    void addTool(Plasma::Widget* tool);
+-
+-protected:
+-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+-    void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+-    void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+-
+-protected slots:
+-    void animate(qreal progress);
+-    void toolMoved(QGraphicsItem*);
+-
+-private:
+-    KIcon m_icon;
+-    int m_size;
+-    bool m_hidden;
+-    bool m_showing;
+-    Plasma::Phase::AnimId m_animId;
+-    int m_animFrame;
+-};
+-
+ class DefaultDesktop : public Plasma::Containment
+ {
+     Q_OBJECT
+@@ -99,24 +77,44 @@
+                         const QStyleOptionGraphicsItem *option,
+                         const QRect& contentsRect);
+ 
+-signals:
+-    void zoomIn();
+-    void zoomOut();
+-
+ protected Q_SLOTS:
+-    void launchAppletBrowser();
+     void runCommand();
++    void configure();
++    void applyConfig();
++    void updateSlideList();
++    void nextSlide();
+     void lockScreen();
+     void logout();
+-    void appletBrowserDestroyed();
+ 
+ private:
++    /** populate m_bitmapBackground with the pixmap to show */
++    void getBitmapBackground();
++
+     QAction *m_appletBrowserAction;
+     QAction *m_runCommandAction;
++    QAction *m_setupDesktopAction;
+     QAction *m_lockAction;
+     QAction *m_logoutAction;
+-    ToolBox *m_toolbox;
+-    Plasma::AppletBrowser *m_appletBrowser;
++
++    KDialog *m_configDialog;
++    Ui::config *m_ui;
++
++    // IMPORTANT: this needs to be in the same order as the items
++    // in the m_ui->pictureComboBox
++    enum BackgroundMode {
++        kStaticBackground,
++        kSlideshowBackground
++    };
++
++    int m_backgroundMode;
++    // slideshow settings
++
++    // the index of which m_slidePath is currently visible
++    int m_currentSlide;
++    QTimer *m_slideShowTimer;
++    QString m_slidePath;
++    QStringList m_slideFiles;
++
+     Plasma::Svg *m_background;
+     QPixmap* m_bitmapBackground;
+     QString m_wallpaperPath;
+--- /dev/null
++++ b/plasma/containments/desktop/config.ui
+@@ -0,0 +1,227 @@
++<ui version="4.0" >
++ <class>config</class>
++ <widget class="QWidget" name="config" >
++  <property name="geometry" >
++   <rect>
++    <x>0</x>
++    <y>0</y>
++    <width>425</width>
++    <height>239</height>
++   </rect>
++  </property>
++  <property name="windowTitle" >
++   <string>Desktop Settings</string>
++  </property>
++  <property name="styleSheet" >
++   <string/>
++  </property>
++  <layout class="QVBoxLayout" >
++   <item>
++    <widget class="QFrame" name="colorFrame" >
++     <property name="frameShape" >
++      <enum>QFrame::StyledPanel</enum>
++     </property>
++     <property name="frameShadow" >
++      <enum>QFrame::Raised</enum>
++     </property>
++     <layout class="QGridLayout" >
++      <item row="0" column="0" >
++       <widget class="QLabel" name="label" >
++        <property name="text" >
++         <string>&amp;Background Color</string>
++        </property>
++        <property name="buddy" >
++         <cstring>backgroundColor</cstring>
++        </property>
++       </widget>
++      </item>
++      <item row="1" column="0" >
++       <widget class="KColorButton" name="backgroundColor" >
++        <property name="color" >
++         <color>
++          <red>70</red>
++          <green>90</green>
++          <blue>130</blue>
++         </color>
++        </property>
++        <property name="defaultColor" >
++         <color>
++          <red>70</red>
++          <green>90</green>
++          <blue>130</blue>
++         </color>
++        </property>
++       </widget>
++      </item>
++     </layout>
++    </widget>
++   </item>
++   <item>
++    <widget class="QFrame" name="frame_2" >
++     <property name="frameShape" >
++      <enum>QFrame::StyledPanel</enum>
++     </property>
++     <property name="frameShadow" >
++      <enum>QFrame::Raised</enum>
++     </property>
++     <layout class="QGridLayout" >
++      <item row="0" column="0" >
++       <widget class="QComboBox" name="pictureComboBox" >
++        <item>
++         <property name="text" >
++          <string>Static Picture</string>
++         </property>
++        </item>
++        <item>
++         <property name="text" >
++          <string>SlideShow</string>
++         </property>
++        </item>
++       </widget>
++      </item>
++      <item row="1" column="0" >
++       <widget class="QStackedWidget" name="stackedWidget" >
++        <property name="minimumSize" >
++         <size>
++          <width>350</width>
++          <height>51</height>
++         </size>
++        </property>
++        <property name="currentIndex" >
++         <number>0</number>
++        </property>
++        <widget class="QWidget" name="page" >
++         <layout class="QHBoxLayout" >
++          <item>
++           <widget class="KUrlComboRequester" name="picRequester" >
++            <property name="acceptDrops" >
++             <bool>true</bool>
++            </property>
++            <property name="filter" >
++             <string>*.png *.jpeg *.jpg *.svg *.svgz</string>
++            </property>
++           </widget>
++          </item>
++         </layout>
++        </widget>
++        <widget class="QWidget" name="page_3" >
++         <layout class="QGridLayout" >
++          <item row="0" column="0" >
++           <layout class="QVBoxLayout" >
++            <item>
++             <widget class="KUrlRequester" name="slideShowRequester" >
++              <property name="sizePolicy" >
++               <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
++                <horstretch>0</horstretch>
++                <verstretch>0</verstretch>
++               </sizepolicy>
++              </property>
++              <property name="minimumSize" >
++               <size>
++                <width>16</width>
++                <height>16</height>
++               </size>
++              </property>
++              <property name="filter" >
++               <string>*.png *.jpeg *.jpg *.svg *.svgz</string>
++              </property>
++             </widget>
++            </item>
++            <item>
++             <layout class="QHBoxLayout" >
++              <item>
++               <widget class="QLabel" name="label_2" >
++                <property name="text" >
++                 <string>Change images every:</string>
++                </property>
++               </widget>
++              </item>
++              <item>
++               <spacer>
++                <property name="orientation" >
++                 <enum>Qt::Horizontal</enum>
++                </property>
++                <property name="sizeHint" >
++                 <size>
++                  <width>271</width>
++                  <height>20</height>
++                 </size>
++                </property>
++               </spacer>
++              </item>
++              <item>
++               <widget class="QTimeEdit" name="slideShowTime" >
++                <property name="minimumTime" >
++                 <time>
++                  <hour>0</hour>
++                  <minute>0</minute>
++                  <second>0</second>
++                 </time>
++                </property>
++                <property name="currentSection" >
++                 <enum>QDateTimeEdit::HourSection</enum>
++                </property>
++                <property name="displayFormat" >
++                 <string>h:mm:ss</string>
++                </property>
++                <property name="time" >
++                 <time>
++                  <hour>0</hour>
++                  <minute>0</minute>
++                  <second>0</second>
++                 </time>
++                </property>
++               </widget>
++              </item>
++             </layout>
++            </item>
++           </layout>
++          </item>
++         </layout>
++        </widget>
++       </widget>
++      </item>
++     </layout>
++    </widget>
++   </item>
++  </layout>
++ </widget>
++ <customwidgets>
++  <customwidget>
++   <class>KColorButton</class>
++   <extends>QPushButton</extends>
++   <header>kcolorbutton.h</header>
++  </customwidget>
++  <customwidget>
++   <class>KUrlComboRequester</class>
++   <extends>KUrlRequester</extends>
++   <header>kurlrequester.h</header>
++   <container>1</container>
++  </customwidget>
++  <customwidget>
++   <class>KUrlRequester</class>
++   <extends>QFrame</extends>
++   <header>kurlrequester.h</header>
++   <container>1</container>
++  </customwidget>
++ </customwidgets>
++ <resources/>
++ <connections>
++  <connection>
++   <sender>pictureComboBox</sender>
++   <signal>currentIndexChanged(int)</signal>
++   <receiver>stackedWidget</receiver>
++   <slot>setCurrentIndex(int)</slot>
++   <hints>
++    <hint type="sourcelabel" >
++     <x>184</x>
++     <y>220</y>
++    </hint>
++    <hint type="destinationlabel" >
++     <x>184</x>
++     <y>264</y>
++    </hint>
++   </hints>
++  </connection>
++ </connections>
++</ui>
+--- a/plasma/containments/desktop/plasma-containment-desktop.desktop
++++ b/plasma/containments/desktop/plasma-containment-desktop.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Desktop
+ Name[af]=Werkskerm
+ Name[ar]=سطح المكتب
+@@ -12,7 +11,7 @@
+ Name[cy]=Penbwrdd
+ Name[de]=Arbeitsfläche
+ Name[el]=Επιφάνεια εργασίας
+-Name[eo]=Tabulo
++Name[eo]=Labortablo
+ Name[es]=Escritorio
+ Name[et]=Töölaud
+ Name[eu]=Mahaigaina
+@@ -64,7 +63,7 @@
+ Name[zh_TW]=桌面
+ Icon=Plasma
+ Type=Service
+-ServiceTypes=Plasma/Applet,Plasma/Containment
++X-KDE-ServiceTypes=Plasma/Applet,Plasma/Containment
+ NoDisplay=true
+ 
+ X-KDE-Library=plasma_containment_desktop
+--- a/plasma/containments/desktop/desktop.cpp
++++ b/plasma/containments/desktop/desktop.cpp
+@@ -22,265 +22,211 @@
+ #include <QApplication>
+ #include <QDesktopWidget>
+ #include <QFile>
++#include <QFileInfo>
+ #include <QGraphicsScene>
+ #include <QGraphicsView>
+ #include <QPainter>
+ #include <QTimeLine>
+ 
+ #include <KAuthorized>
++#include <KComboBox>
+ #include <KDebug>
+ #include <KRun>
+ #include <KStandardDirs>
++#include <KSvgRenderer>
+ #include <KWindowSystem>
+ 
+ #include "plasma/appletbrowser.h"
+ #include "plasma/phase.h"
+ #include "plasma/svg.h"
+-#include "plasma/widgets/pushbutton.h"
+ #include "kworkspace/kworkspace.h"
+ 
+ #include "krunner_interface.h"
+ #include "ksmserver_interface.h"
+ #include "screensaver_interface.h"
+ 
+-using namespace Plasma;
+-/*
+-Tool::Tool(QGraphicsItem *parent)
+-    : QGraphicsItem(parent)
+-{
+-}
+-*/
+-
+-
+-ToolBox::ToolBox(QGraphicsItem *parent)
+-    : QGraphicsItem(parent),
+-      m_icon("configure"),
+-      m_size(50),
+-      m_showing(false),
+-      m_animId(0),
+-      m_animFrame(0)
+-{
+-    setAcceptsHoverEvents(true);
+-    setZValue(10000);
+-    setFlag(ItemClipsToShape, true);
+-    setFlag(ItemClipsChildrenToShape, false);
+-
+-    connect(Plasma::Phase::self(), SIGNAL(movementComplete(QGraphicsItem*)), this, SLOT(toolMoved(QGraphicsItem*)));
+-}
+-
+-/*QRectF ToolBox::sizeHint() const
+-{
+-    return boundingRect();
+-}*/
++#include "ui_config.h"
+ 
+-QRectF ToolBox::boundingRect() const
+-{
+-    return QRectF(0, 0, m_size*2, m_size*2);
+-}
++using namespace Plasma;
+ 
+-void ToolBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
++DefaultDesktop::DefaultDesktop(QObject *parent, const QVariantList &args)
++    : Containment(parent, args),
++      m_appletBrowserAction(0),
++      m_runCommandAction(0),
++      m_lockAction(0),
++      m_logoutAction(0),
++      m_configDialog(0),
++      m_background(0),
++      m_bitmapBackground(0),
++      m_wallpaperPath(0)
+ {
+-    Q_UNUSED(option)
+-    Q_UNUSED(widget)
+-
+-    QPainterPath p = shape();
+-    QRadialGradient gradient(QPoint(m_size*2, 0), m_size*3);
+-    gradient.setFocalPoint(QPointF(m_size*2, 0));
+-    gradient.setColorAt(0, QColor(255, 255, 255, 128));
+-    gradient.setColorAt(.9, QColor(128, 128, 128, 128));
+-    painter->save();
+-    painter->setPen(Qt::NoPen);
+-    painter->setRenderHint(QPainter::Antialiasing, true);
+-    painter->setBrush(gradient);
+-    painter->drawPath(p);
+-    painter->restore();
+-    m_icon.paint(painter, QRect(m_size*2 - 34, 2, 32, 32));
++    //kDebug() << "!!! loading desktop";
+ }
+ 
+-QPainterPath ToolBox::shape() const
++DefaultDesktop::~DefaultDesktop()
+ {
+-    QPainterPath path;
+-    int size = m_size + m_animFrame;
+-    path.moveTo(m_size*2, 0);
+-    path.arcTo(QRectF(m_size*2 - size, -size, size*2, size*2), 180, 90);
+-    return path;
+ }
+ 
+-void ToolBox::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
++void DefaultDesktop::init()
+ {
+-    Q_UNUSED(event)
+-
+-//    Plasma::Phase::self()->moveItem(this, Phase::SlideIn, QPoint(-25, -25));
+-    int x = -25; // pos().x();
+-    int y = 0; // pos().y();
+-    Plasma::Phase* phase = Plasma::Phase::self();
+-    foreach (QGraphicsItem* tool, QGraphicsItem::children()) {
+-//        kDebug() << "let's show and move" << (QObject*)tool << tool->geometry().toRect();
+-        tool->show();
+-        phase->moveItem(tool, Plasma::Phase::SlideIn, QPoint(x, y));
+-        //x += 0;
+-        y += static_cast<int>(tool->boundingRect().height()) + 5;
+-    }
++    KConfigGroup cg = config();
++    m_backgroundMode = cg.readEntry("backgroundmode", int(kStaticBackground));
+ 
+-    if (m_animId) {
+-        phase->stopCustomAnimation(m_animId);
+-    }
+-
+-    m_showing = true;
+-    m_animId = phase->customAnimation(m_size, 150, Plasma::Phase::EaseInCurve, this, "animate");
+-    QGraphicsItem::hoverEnterEvent(event);
+-}
+-
+-void ToolBox::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+-{
+-    Q_UNUSED(event)
+-//    Plasma::Phase::self->moveItem(this, Phase::SlideOut, boundingRect()QPoint(-50, -50));
+-    int x = 0; // pos().x() + geometry().width();
+-    int y = 0;
+-    Plasma::Phase* phase = Plasma::Phase::self();
+-    foreach (QGraphicsItem* tool, QGraphicsItem::children()) {
+-        phase->moveItem(tool, Plasma::Phase::SlideOut, QPoint(x, y));
++    m_slideShowTimer = new QTimer(this);
++    connect(m_slideShowTimer, SIGNAL(timeout()), this, SLOT(nextSlide()));
++    m_slideShowTimer->setInterval(cg.readEntry("slideTimer", 60) * 1000);
++
++    m_slidePath = cg.readEntry("slidepath", KStandardDirs::kde_default("wallpaper"));
++
++    if (m_backgroundMode == kStaticBackground) {
++        m_wallpaperPath = cg.readEntry("wallpaper", KStandardDirs::locate("wallpaper", "plasma-default.png"));
++
++        //kDebug() << "wallpaperPath is" << m_wallpaperPath << QFile::exists(m_wallpaperPath);
++        if (m_wallpaperPath.isEmpty() ||
++            !QFile::exists(m_wallpaperPath)) {
++            //kDebug() << "SVG wallpaper!";
++            m_background = new Plasma::Svg("widgets/wallpaper", this);
++        }
+     }
+-
+-    if (m_animId) {
+-        phase->stopCustomAnimation(m_animId);
++    else if (m_backgroundMode == kSlideshowBackground) {
++        updateSlideList();
++        m_currentSlide = 0;
++        nextSlide(); // to show the first image
++        m_slideShowTimer->start();
+     }
+ 
+-    m_showing = false;
+-    m_animId = phase->customAnimation(m_size, 150, Plasma::Phase::EaseOutCurve, this, "animate");
+-    QGraphicsItem::hoverLeaveEvent(event);
++    Containment::init();
+ }
+ 
+-void ToolBox::animate(qreal progress)
++void DefaultDesktop::updateSlideList()
+ {
+-    if (m_showing) {
+-        m_animFrame = static_cast<int>(m_size * progress);
+-    } else {
+-        m_animFrame = static_cast<int>(m_size * (1.0 - progress));
+-    }
++    QDir dir(m_slidePath);
++    QStringList filters;
++    filters << "*.png" << "*.jpeg" << "*.jpg" << "*.svg" << "*.svgz";
++    dir.setNameFilters(filters);
++    dir.setFilter(QDir::Files | QDir::Hidden);
++    QFileInfoList files = dir.entryInfoList();
++    m_slideFiles.clear();
+ 
+-    //kDebug() << "animating at" << progress << "for" << m_animFrame;
+-
+-    if (progress >= 1) {
+-        m_animId = 0;
++    for (int i = 0; i < files.size(); ++i) {
++        m_slideFiles << files[i].absoluteFilePath();
+     }
+ 
+-    update();
+-}
+-
+-void ToolBox::toolMoved(QGraphicsItem *item)
+-{
+-    //kDebug() << "geometry is now " << static_cast<Plasma::Widget*>(item)->geometry();
+-    if (!m_showing &&
+-        QGraphicsItem::children().indexOf(static_cast<Plasma::Widget*>(item)) != -1) {
+-        item->hide();
++    kDebug() << "updated slide list from contents of folder: " << m_slidePath;
++    kDebug() << m_slideFiles.size() << " files found.";
++    if (m_currentSlide > m_slideFiles.size()) {
++        m_currentSlide = 0;
+     }
+ }
+ 
+-void ToolBox::addTool(Plasma::Widget *tool)
++void DefaultDesktop::nextSlide()
+ {
+-    if (!tool) {
+-        return;
++    if (++m_currentSlide >= m_slideFiles.size()) {
++        m_currentSlide = 0;
+     }
+ 
+-    tool->hide();
+-    tool->setPos(pos());
+-    tool->setZValue(zValue() + 1);
+-    tool->setParentItem(this);
+-}
+-
+-DefaultDesktop::DefaultDesktop(QObject *parent, const QVariantList &args)
+-    : Containment(parent, args),
+-      m_appletBrowserAction(0),
+-      m_runCommandAction(0),
+-      m_lockAction(0),
+-      m_logoutAction(0),
+-      m_toolbox(0),
+-      m_appletBrowser(0),
+-      m_background(0),
+-      m_bitmapBackground(0),
+-      m_wallpaperPath(0)
+-{
+-    //kDebug() << "!!! loading desktop";
+-}
++    if (m_slideFiles.size() > 0)
++    {
++        m_wallpaperPath = m_slideFiles[m_currentSlide];
++        kDebug() << "switching slides to: " << m_wallpaperPath;
+ 
+-DefaultDesktop::~DefaultDesktop()
+-{
++        getBitmapBackground();
++        update();
++    }
+ }
+ 
+-void DefaultDesktop::init()
++void DefaultDesktop::getBitmapBackground()
+ {
+-    KConfigGroup config(KGlobal::config(), "General");
+-    m_wallpaperPath = config.readEntry("wallpaper", KStandardDirs::locate("wallpaper", "plasma-default.png"));
+-
+-    //kDebug() << "wallpaperPath is" << m_wallpaperPath << QFile::exists(m_wallpaperPath);
+-    if (m_wallpaperPath.isEmpty() ||
+-        !QFile::exists(m_wallpaperPath)) {
+-        //kDebug() << "SVG wallpaper!";
+-        m_background = new Plasma::Svg("widgets/wallpaper", this);
++    if (!m_wallpaperPath.isEmpty()) {
++        const QRect geom = QApplication::desktop()->screenGeometry(screen());
++        delete m_bitmapBackground;
++        if (m_wallpaperPath.endsWith("svg") || m_wallpaperPath.endsWith("svgz"))
++        {
++            KSvgRenderer renderer(m_wallpaperPath);
++            m_bitmapBackground = new QPixmap(geom.size());
++            QPainter p(m_bitmapBackground);
++            renderer.render(&p);
++        }
++        else
++        {
++            m_bitmapBackground = new QPixmap(m_wallpaperPath);
++            // NOTE: this could change to allow Full & clipped modes, etc.
++            (*m_bitmapBackground) = m_bitmapBackground->scaled(geom.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
++        }
+     }
+-
+-    Containment::init();
+-    m_toolbox = new ToolBox(this);
+-    //m_toolbox->updateGeometry();
+-    m_toolbox->setPos(geometry().width() - m_toolbox->boundingRect().width(), 0);
+-
+-    Plasma::PushButton *tool = new Plasma::PushButton(i18n("Add Widgets"), this);
+-    tool->resize(tool->sizeHint());
+-    m_toolbox->addTool(tool);
+-    connect(tool, SIGNAL(clicked()), this, SLOT(launchAppletBrowser()));
+-
+-    tool = new Plasma::PushButton(i18n("Zoom In"), this);
+-    connect(tool, SIGNAL(clicked()), this, SIGNAL(zoomIn()));
+-    tool->resize(tool->sizeHint());
+-    m_toolbox->addTool(tool);
+-
+-    tool = new Plasma::PushButton(i18n("Zoom Out"), this);
+-    connect(tool, SIGNAL(clicked()), this, SIGNAL(zoomOut()));
+-    tool->resize(tool->sizeHint());
+-    m_toolbox->addTool(tool);
+ }
+ 
+ void DefaultDesktop::constraintsUpdated(Plasma::Constraints constraints)
+ {
++    Q_UNUSED(constraints);
+     //kDebug() << "DefaultDesktop constraints have changed";
+-    if (constraints & Plasma::ScreenConstraint && m_toolbox) {
+-        m_toolbox->setPos(geometry().width() - m_toolbox->boundingRect().width(), 0);
+-    }
+-
+     const QRect geom = QApplication::desktop()->screenGeometry(screen());
+     if (m_background) {
+-        kDebug() << "Rescaling SVG wallpaper to" << geom.size();
++        //kDebug() << "Rescaling SVG wallpaper to" << geom.size();
+         m_background->resize(geom.size());
+     } else if (!m_wallpaperPath.isEmpty()) {
+         if (!m_bitmapBackground || !(m_bitmapBackground->size() == geom.size())) {
+-            kDebug() << "Loading and scaling bitmap wallpaper to" << geom.size();
+-            delete m_bitmapBackground;
+-            m_bitmapBackground = new QPixmap(m_wallpaperPath);
+-            (*m_bitmapBackground) = m_bitmapBackground->scaled(geom.size());
++            getBitmapBackground();
+         }
+     }
+ }
+ 
+-void DefaultDesktop::launchAppletBrowser()
++void DefaultDesktop::configure()
+ {
+-    if (!m_appletBrowser) {
+-        m_appletBrowser = new Plasma::AppletBrowser(this, scene()->views().isEmpty() ? 0 :
+-                                                                     scene()->views()[0]);
+-        m_appletBrowser->setApplication();
+-        m_appletBrowser->setAttribute(Qt::WA_DeleteOnClose);
+-        m_appletBrowser->setWindowTitle(i18n("Add Widgets"));
+-        connect(m_appletBrowser, SIGNAL(destroyed()), this, SLOT(appletBrowserDestroyed()));
++    if (m_configDialog == 0) {
++        m_configDialog = new KDialog;
++        m_configDialog->setCaption( i18n("Configure Desktop") );
++        m_ui = new Ui::config;
++        m_ui->setupUi(m_configDialog->mainWidget());
++        m_configDialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );
++        connect( m_configDialog, SIGNAL(applyClicked()), this, SLOT(applyConfig()) );
++        connect( m_configDialog, SIGNAL(okClicked()), this, SLOT(applyConfig()) );
++        m_ui->picRequester->comboBox()->insertItem(0, "http://tools.wikimedia.de/~daniel/potd/potd.php/commons/400x300");
++        m_ui->slideShowRequester->setMode(KFile::Directory);
++        m_ui->slideShowRequester->setGeometry(m_ui->picRequester->frameGeometry());
++        m_ui->slideShowTime->setMinimumTime(QTime(0,0,1)); // minimum to 1 seconds
++        
++        // hide these since we don't use them yet
++        m_ui->colorFrame->hide();
++    }
++
++    m_ui->pictureComboBox->setCurrentIndex(m_backgroundMode);
++    m_ui->picRequester->setUrl(m_wallpaperPath);
++    m_ui->slideShowRequester->setUrl(KUrl(m_slidePath));
++    int mseconds = m_slideShowTimer->interval() / 1000;
++    m_ui->slideShowTime->setTime(QTime(mseconds / 3600, (mseconds / 60) % 60, mseconds % 60));
++    m_configDialog->show();
++}
++
++void DefaultDesktop::applyConfig()
++{
++    KConfigGroup cg = config();
++    m_wallpaperPath = m_ui->picRequester->url().path();
++    cg.writeEntry("wallpaper", m_wallpaperPath);
++
++    m_backgroundMode = m_ui->pictureComboBox->currentIndex();
++    cg.writeEntry("backgroundmode", m_backgroundMode);
++
++    m_slidePath = m_ui->slideShowRequester->url().path();
++    cg.writeEntry("slidepath", m_slidePath);
++
++    QTime timerTime = m_ui->slideShowTime->time();
++    unsigned int mseconds = timerTime.second() + timerTime.minute() * 60 + timerTime.hour() * 3600;
++    m_slideShowTimer->setInterval(mseconds * 1000);
++    cg.writeEntry("slideTimer", mseconds);
++
++    if (m_backgroundMode == kStaticBackground) {
++        m_slideShowTimer->stop();
++    }
++    else if (m_backgroundMode == kSlideshowBackground) {
++        updateSlideList();
++        nextSlide();
++        m_slideShowTimer->start();
+     }
+ 
+-    KWindowSystem::setOnDesktop(m_appletBrowser->winId(), KWindowSystem::currentDesktop());
+-    m_appletBrowser->show();
+-    KWindowSystem::activateWindow(m_appletBrowser->winId());
+-}
+-
+-void DefaultDesktop::appletBrowserDestroyed()
+-{
+-    m_appletBrowser = 0;
++    getBitmapBackground();
++    update();
++    cg.config()->sync();
+ }
+ 
+ void DefaultDesktop::runCommand()
+@@ -319,11 +265,15 @@
+ 
+     if (!m_appletBrowserAction) {
+         m_appletBrowserAction = new QAction(i18n("Add Widgets..."), this);
+-        connect(m_appletBrowserAction, SIGNAL(triggered(bool)), this, SLOT(launchAppletBrowser()));
++        connect(m_appletBrowserAction, SIGNAL(triggered(bool)), this, SIGNAL(showAddWidgets()));
+ 
+         m_runCommandAction = new QAction(i18n("Run Command..."), this);
+         connect(m_runCommandAction, SIGNAL(triggered(bool)), this, SLOT(runCommand()));
+ 
++        m_setupDesktopAction = new QAction(i18n("Configure Desktop..."), this);
++        m_setupDesktopAction->setIcon(KIcon("configure"));
++        connect(m_setupDesktopAction, SIGNAL(triggered()), this, SLOT(configure()));
++
+         m_lockAction = new QAction(i18n("Lock Screen"), this);
+         m_lockAction->setIcon(KIcon("system-lock-screen"));
+         connect(m_lockAction, SIGNAL(triggered(bool)), this, SLOT(lockScreen()));
+@@ -337,6 +287,8 @@
+ 
+     actions.append(m_appletBrowserAction);
+ 
++    actions.append(m_setupDesktopAction);
++
+     if (KAuthorized::authorizeKAction("run_command")) {
+         actions.append(m_runCommandAction);
+     }
+--- a/plasma/containments/desktop/CMakeLists.txt
++++ b/plasma/containments/desktop/CMakeLists.txt
+@@ -1,6 +1,8 @@
+ set(desktop_SRCS
+     desktop.cpp)
+ 
++kde4_add_ui_files( desktop_SRCS config.ui )
++
+ set(krunner_xml ${KDEBASE_WORKSPACE_SOURCE_DIR}/krunner/org.kde.krunner.Interface.xml)
+ QT4_ADD_DBUS_INTERFACE(desktop_SRCS ${krunner_xml} krunner_interface)
+ 
+--- a/plasma/dataengines/weather/plasma-engine-weather.desktop
++++ b/plasma/dataengines/weather/plasma-engine-weather.desktop
+@@ -1,6 +1,7 @@
+ [Desktop Entry]
+ Name=Weather Data Engine
+ Name[ca]=Motor de dades meteorològiques
++Name[de]=Wetterdienst-Treiber
+ Name[el]=Μηχανή δεδομένων καιρού
+ Name[et]=Ilmaandmete mootor
+ Name[ga]=Inneall Sonraí Aimsire
+@@ -13,6 +14,7 @@
+ Name[ne]=मौसम डेटा इन्जिन
+ Name[nl]=Weer (gegevensengine)
+ Name[nn]=Vêrdatamotor
++Name[pa]=ਮੌਸਮ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados Meteorológicos
+ Name[pt_BR]=Mecanismo de Dados Meteorológicos
+ Name[sr]=Мотор за метеоролошке услове
+@@ -23,6 +25,7 @@
+ Name[zh_TW]=天氣資料引擎
+ Comment=Weather data for Plasmoids
+ Comment[ca]=Dades meteorològiques pels plasmoides
++Comment[de]=Wetterdienst-Daten für Plasmoide
+ Comment[el]=Δεδομένα καιρού για πλασμοειδή
+ Comment[et]=Ilmaandmed plasmoididele
+ Comment[ga]=Sonraí aimsire le haghaidh Plasmoids
+@@ -35,6 +38,7 @@
+ Comment[ne]=प्लासमोइड्सका लागि मौसम डेटा
+ Comment[nl]=Weergegevens voor Plasmoids
+ Comment[nn]=Vêrdata for plasmoidar
++Comment[pa]=ਪਲਾਜਮੋਡੀਸ ਲਈ ਮੌਸਮ ਡਾਟਾ
+ Comment[pt]=Dados meteorológicos para os Plasmóides
+ Comment[pt_BR]=Dados meteorológicos para os Plasmóides
+ Comment[sr]=Метеоролошки подаци за плазмоиде
+@@ -43,7 +47,7 @@
+ Comment[x-test]=xxWeather data for Plasmoidsxx
+ Comment[zh_CN]=Plasmoids 的天气数据
+ Comment[zh_TW]=Plasmoid 的天氣資料
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=
+ X-KDE-Library=plasma_engine_weather
+--- a/plasma/dataengines/weather/weatherengine.cpp
++++ b/plasma/dataengines/weather/weatherengine.cpp
+@@ -36,18 +36,30 @@
+         int offset = name.indexOf(':');
+ 
+         if (offset < 1) {
+-            return 0;
++            return NULL;
+         }
+ 
+         QString ionName = name.left(offset);
+ 
+-        if (!this->m_ions.contains(ionName)) {
+-            return 0;
++
++        if (this->m_ions.contains(ionName)) {
++            return this->m_ions[ionName];
+         }
+ 
+-        return this->m_ions[ionName];
++        return NULL;
++    }
++
++    QString ionNameForSource(const QString& source) 
++    {
++        int offset = source.indexOf(':'); 
++        if (offset < 1) {
++            return QString();
++        }
++  
++        return QString(source.left(offset));
+     }
+ 
++    KService::List m_ionServices;
+     IonInterface::IonDict m_ions;
+     KDateTime m_localTime;
+ };
+@@ -64,34 +76,41 @@
+ }
+ 
+ // Loads an Ion plugin given a plugin name found via KService.
+-IonInterface* WeatherEngine::loadIon(const KService::Ptr& service)
++IonInterface* WeatherEngine::loadIon(const QString& plugName)
+ {
+     IonInterface *ion = 0;
+-    QString plugName = service->property("X-IonName").toString();
++    KService::Ptr foundPlugin;
++      
++    foreach(KService::Ptr service, d->m_ionServices) {
++      if (service->property("X-IonName").toString() == plugName) {
++          foundPlugin = service;
++          break;
++      } 
++    }
++  
++    // Check if the plugin is already loaded if so, return the plugin thats already loaded. 
+     IonInterface::IonDict::const_iterator it = d->m_ions.find(plugName);
+ 
+     if (it != d->m_ions.end()) {
+-         ion = *it;
+-         ion->ref();
+-         return ion;
++        ion = *it;
++        ion->ref();
++        return ion;
+     }
+ 
+     QString error;
+ 
+     // Load the Ion plugin, store it into a QMap to handle multiple ions.
+-    ion = service->createInstance<IonInterface>(0, QVariantList(), &error);
++    ion = foundPlugin->createInstance<IonInterface>(0, QVariantList(), &error);
++    ion->setObjectName(plugName);
+     if (!ion) {
+         kDebug() << "weatherengine: Couldn't load ion \"" << plugName << "\"!" << error;
+-        return 0;
++        return NULL;
+     }
+ 
+-    // Increment counter of ions.
++    // Increment counter of ion.
+     ion->ref();
+ 
+-    // Set the Ion's long name
+-    //ion->setObjectName(offers.first()->name());
+     connect(ion, SIGNAL(newSource(QString)), this, SLOT(newIonSource(QString)));
+-    connect(ion, SIGNAL(sourceRemoved(QString)), this, SLOT(removeIonSource(QString)));
+ 
+     /* Set properties for the ion
+      *
+@@ -105,7 +124,9 @@
+     ion->option(IonInterface::WINDFORMAT, QVariant(false)); // FIXME: Should be configurable by applet
+ 
+     // Assign the instantiated ion the key of the name of the ion.
+-    d->m_ions[plugName] = ion;
++    if (!d->m_ions.contains(plugName)) {
++        d->m_ions[plugName] = ion;
++    }
+ 
+     return ion;
+ }
+@@ -114,14 +135,16 @@
+ void WeatherEngine::unloadIon(const QString &name)
+ {
+     IonInterface *ion = Ion(name);
++
+     if (ion) {
+         ion->deref();
+-
++        kDebug() << "Unloading Plugin: " << name;
+         if (!ion->isUsed()) {
++            kDebug() << "It's not used anymore, delete it!";
+             d->m_ions.remove(name);
+             delete ion;
+         }
+-    }
++    } 
+ }
+ 
+ // Return a list of Ion plugins found.
+@@ -145,6 +168,7 @@
+ {
+     IonInterface *ion = qobject_cast<IonInterface*>(sender());
+ 
++    kDebug() << "New Ion Source" << source;
+     if (!ion) {
+         return;
+     }
+@@ -153,11 +177,15 @@
+ 
+ void WeatherEngine::removeIonSource(const QString& source)
+ {
+-    IonInterface *ion = qobject_cast<IonInterface*>(sender());
+-    if (!ion) {
+-        return;
+-    }
+-    ion->disconnectSource(source, this);
++    IonInterface *ion = d->ionForSource(source);
++    if (ion) {
++        ion->removeSource(source);
++        // If plugin has no more sources let's unload the plugin
++        if (ion->isEmpty()) {
++            kDebug() << "No more Sources found for this plugin let's unload it!";
++            unloadIon(d->ionNameForSource(source)); 
++        }
++    } 
+ }
+ 
+ void WeatherEngine::dataUpdated(const QString& source, Plasma::DataEngine::Data data)
+@@ -174,13 +202,12 @@
+ 
+     // Set any local properties for Ion to use
+     d->m_localTime = KDateTime::currentDateTime(KDateTime::LocalZone);
+-
+-    /* FIXME: For now we just load them all as we find them, we'll need to make this configurable
+-              somehow. No point in loading all plugins if your not interested in certain cities.
+-    */
+-    foreach(KService::Ptr service, knownIons()) {
+-        loadIon(service); 
+-    }
++    
++    // Get the list of available plugins but don't load them
++    d->m_ionServices = knownIons();
++  
++    // Globally notify all plugins to remove their sources (and unload plugin)
++    connect(this, SIGNAL(sourceRemoved(QString)), this, SLOT(removeIonSource(QString)));
+ }
+ 
+ // dtor
+@@ -193,14 +220,18 @@
+ // Setup each Ion for the first time
+ bool WeatherEngine::sourceRequested(const QString &source)
+ {
++    kDebug() << "sourceRequested()" << source;
+     IonInterface *ion = d->ionForSource(source);
+ 
+     if (!ion) {
+-        return false;
++        kDebug() << "sourceRequested(): No Ion Found, load it up!";
++        ion = loadIon(d->ionNameForSource(source));
++        if (!ion) {
++            return false;
++        }
+     }
+ 
+     ion->connectSource(source, this);
+-    kDebug() << "sourceRequested()" << source;
+     if (!containerForSource(source)) {
+         // it is an async reply, we need to set up the data anyways
+         kDebug() << "no item?";
+--- a/plasma/dataengines/weather/ions/ion_envcan.cpp
++++ b/plasma/dataengines/weather/ions/ion_envcan.cpp
+@@ -94,30 +94,55 @@
+     getXMLSetup();
+ }
+ 
+-QString EnvCanadaIon::validate(const QString& source)
++QStringList EnvCanadaIon::validate(const QString& source) const
+ {
+-    QHash<QString, QString>::const_iterator it = d->m_locations.find(source);
+-    if (it != d->m_locations.end()) {
+-        return source;
++    QStringList placeList;
++    QHash<QString, QString>::const_iterator it = d->m_locations.constBegin();
++    while (it != d->m_locations.constEnd()) {
++        if (it.value().toLower().contains(source.toLower())) {
++            placeList.append(it.value().split(":")[1]);
++        }
++        ++it;
++    }
++   
++    // Check if placeList is empty if so, return nothing.
++    if (placeList.isEmpty()) {
++        return QStringList();
+     }
+-    return QString();
++    placeList.sort();
++    return placeList;
+ }
+ 
+ // Get a specific Ion's data
+ bool EnvCanadaIon::updateIonSource(const QString& source)
+ {
+     kDebug() << "updateIonSource() SOURCE: " << source;
+-    QString result = this->validate(source);
++    // We expect the applet to send the source in the following tokenization:
++    // ionname:validate:place_name - Triggers validation of place
++    // ionname:weather:place_name - Triggers receiving weather of place
++   
++    QStringList sourceAction = source.split(':');
++    if (sourceAction[1] == QString("validate")) {
++        kDebug() << "Initiate Validating of place: " << sourceAction[2];
++    
++        QStringList result = this->validate(QString("%1:%2").arg(sourceAction[0]).arg(sourceAction[2]));
++
++        if (result.size() == 1) {
++            setData(source, "validate", QString("envcan:valid:single:%1").arg(result.join(":")));
++            return true;
++        } else if (result.size() > 1) {
++            setData(source, "validate", QString("envcan:valid:multiple:%1").arg(result.join(":")));
++            return true;
++        } else if (result.size() == 0) {
++            setData(source, "validate", QString("envcan:invalid:single:%1").arg(sourceAction[2]));
++            return true;
++        }
+ 
+-    if (!result.isEmpty()) {
+-        QStringList tokens = result.split(':');
+-        setData(source, "validate", QString("valid:single:%1").arg(tokens[1]));
+-        //getXMLData(source);
++     } else if (sourceAction[1] == QString("weather")) {
++        getXMLData(QString("%1:%2").arg(sourceAction[0]).arg(sourceAction[2]));
+         return true;
+-    }
+-    QStringList tokens = source.split(":");
+-    setData(source, "validate", QString("invalid:single:%1").arg(tokens[1]));
+-    return true;
++     }
++     return false;
+ }
+ 
+ // Parses city list and gets the correct city based on ID number
+@@ -629,7 +654,6 @@
+ 
+ void EnvCanadaIon::parseUVIndex(WeatherData& data, QXmlStreamReader& xml)
+ {
+-    Q_UNUSED(data);
+     Q_ASSERT(xml.isStartElement() && xml.name() == "uv");
+ 
+     while (!xml.atEnd()) {
+@@ -863,88 +887,96 @@
+     QStringList fieldList;
+     QVector<QString> forecastList;
+     int i = 0;
++  
++    QString weatherSource = source;
++    weatherSource.replace("envcan:", "envcan:weather:");
+ 
+-    setData(source, "Country", this->country(source));
+-    setData(source, "Place", QString("%1, %2").arg(this->city(source)).arg(this->territory(source)));
+-    setData(source, "Region", this->region(source));
+-    setData(source, "Airport Code", this->station(source));
++    setData(weatherSource, "Country", this->country(source));
++    setData(weatherSource, "Place", QString("%1, %2").arg(this->city(source)).arg(this->territory(source)));
++    setData(weatherSource, "Region", this->region(source));
++    setData(weatherSource, "Airport Code", this->station(source));
+ 
+     // Real weather - Current conditions
+-    setData(source, "Observations At", this->observationTime(source));
+-    setData(source, "Current Conditions", this->condition(source));
++    setData(weatherSource, "Observations At", this->observationTime(source));
++    setData(weatherSource, "Current Conditions", this->condition(source));
+     dataFields = this->temperature(source);
+-    setData(source, "Temperature", dataFields["temperature"]);
++    setData(weatherSource, "Temperature", dataFields["temperature"]);
+ 
+     // Do we have a comfort temperature? if so display it
+     if (dataFields["comfortTemperature"] != "N/A" && !dataFields["comfortTemperature"].isEmpty()) {
+         if (dataFields["comfortTemperature"].toFloat() <= 0 || (dataFields["comfortTemperature"].toFloat() <= 32 && !d->m_useMetric)) {
+-            setData(source, "Windchill", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Windchill", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Humidex", "N/A");
+         } else {
+-            setData(source, "Humidex", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
+-        }
++            setData(weatherSource, "Humidex", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Windchill", "N/A");
++        }   
++     } else {
++       setData(weatherSource, "Windchill", "N/A");
++       setData(weatherSource, "Humidex", "N/A");
+      }
+ 
+-     setData(source, "Dewpoint", this->dewpoint(source));
++     setData(weatherSource, "Temperature Unit", dataFields["temperatureUnit"]);
++
++     setData(weatherSource, "Dewpoint", this->dewpoint(source));
+      if (this->dewpoint(source) != "N/A") {
+-         setData(source, "Dewpoint Unit", dataFields["temperatureUnit"]);
++         setData(weatherSource, "Dewpoint Unit", dataFields["temperatureUnit"]);
+      }
+ 
+      dataFields = this->pressure(source);
+-     setData(source, "Pressure", dataFields["pressure"]);
++     setData(weatherSource, "Pressure", dataFields["pressure"]);
+   
+      if (dataFields["pressure"] != "N/A") {
+-         setData(source, "Pressure Tendency", dataFields["pressureTendency"]);
+-         setData(source, "Pressure Unit", dataFields["pressureUnit"]);
++         setData(weatherSource, "Pressure Tendency", dataFields["pressureTendency"]);
++         setData(weatherSource, "Pressure Unit", dataFields["pressureUnit"]);
+      }
+ 
+      dataFields = this->visibility(source);
+-     setData(source, "Visibility", dataFields["visibility"]);
++     setData(weatherSource, "Visibility", dataFields["visibility"]);
+      if (dataFields["visibility"] != "N/A") {
+-         setData(source, "Visibility Unit", dataFields["visibilityUnit"]);
++         setData(weatherSource, "Visibility Unit", dataFields["visibilityUnit"]);
+      }
+ 
+-     setData(source, "Humidity", this->humidity(source));
++     setData(weatherSource, "Humidity", this->humidity(source));
+ 
+      dataFields = this->wind(source);
+-     setData(source, "Wind Speed", dataFields["windSpeed"]);
++     setData(weatherSource, "Wind Speed", dataFields["windSpeed"]);
+      if (dataFields["windSpeed"] != "N/A") {
+-         setData(source, "Wind Speed Unit", dataFields["windUnit"]);
+-     }
+-     setData(source, "Wind Gust", dataFields["windGust"]);
+-     if (dataFields["windGust"] != "N/A") {
+-         setData(source, "Wind Gust Unit", dataFields["windGustUnit"]);
++         setData(weatherSource, "Wind Speed Unit", dataFields["windUnit"]);
+      }
+-     setData(source, "Wind Direction", dataFields["windDirection"]);
++     setData(weatherSource, "Wind Gust", dataFields["windGust"]);
++     setData(weatherSource, "Wind Direction", dataFields["windDirection"]);
++     setData(weatherSource, "Wind Gust Unit", dataFields["windGustUnit"]);
+ 
+      dataFields = this->regionalTemperatures(source);
+-     setData(source, "Normal High", dataFields["normalHigh"]);
+-     setData(source, "Normal Low", dataFields["normalLow"]);
++     setData(weatherSource, "Normal High", dataFields["normalHigh"]);
++     setData(weatherSource, "Normal Low", dataFields["normalLow"]);
+      if (dataFields["normalHigh"] != "N/A" && dataFields["normalLow"] != "N/A") {
+-         setData(source, "Regional Temperature Unit", dataFields["regionalTempUnit"]);
++         setData(weatherSource, "Regional Temperature Unit", dataFields["regionalTempUnit"]);
+      }
+ 
+      // Check if UV index is available for the location
+      dataFields = this->uvIndex(source);
+-     setData(source, "UV Index", dataFields["uvIndex"]);
++     setData(weatherSource, "UV Index", dataFields["uvIndex"]);
+      if (dataFields["uvIndex"] != "N/A") {
+-         setData(source, "UV Rating", dataFields["uvRating"]);
++         setData(weatherSource, "UV Rating", dataFields["uvRating"]);
+      }
+ 
+      dataFields = this->warnings(source);
+      // Check if we have warnings or watches
+      if (!dataFields["watch"].isEmpty()) {
+          fieldList = dataFields["watch"].split('|');
+-         setData(source, "Watch Priority", fieldList[0]);
+-         setData(source, "Watch Description", fieldList[1]);
+-         setData(source, "Watch Info", fieldList[2]);
+-         setData(source, "Watch Timestamp", fieldList[3]);
++         setData(weatherSource, "Watch Priority", fieldList[0]);
++         setData(weatherSource, "Watch Description", fieldList[1]);
++         setData(weatherSource, "Watch Info", fieldList[2]);
++         setData(weatherSource, "Watch Timestamp", fieldList[3]);
+      }
+      if (!dataFields["warning"].isEmpty()) {
+          fieldList = dataFields["warning"].split('|');
+-         setData(source, "Warning Priority", fieldList[0]);
+-         setData(source, "Warning Description", fieldList[1]);
+-         setData(source, "Warning Info", fieldList[2]);
+-         setData(source, "Warning Timestamp", fieldList[3]);
++         setData(weatherSource, "Warning Priority", fieldList[0]);
++         setData(weatherSource, "Warning Description", fieldList[1]);
++         setData(weatherSource, "Warning Info", fieldList[2]);
++         setData(weatherSource, "Warning Timestamp", fieldList[3]);
+      }
+ 
+      forecastList = this->forecasts(source);
+@@ -952,19 +984,19 @@
+          fieldList = forecastItem.split('|');
+ 
+          if (d->m_useMetric) {
+-             setData(source, QString("Short Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5") \
++             setData(weatherSource, QString("Short Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5") \
+                      .arg(fieldList[0]).arg(fieldList[1]).arg(fieldList[3]).arg(fieldList[4]).arg(fieldList[5]));
+ 
+-             setData(source, QString("Long Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5|%6|%7|%8") \
++             setData(weatherSource, QString("Long Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5|%6|%7|%8") \
+                      .arg(fieldList[0]).arg(fieldList[2]).arg(fieldList[3]).arg(fieldList[4]).arg(fieldList[6]) \
+                      .arg(fieldList[7]).arg(fieldList[8]).arg(fieldList[9]));
+           } else {
+-              setData(source, QString("Short Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5") \
++              setData(weatherSource, QString("Short Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5") \
+                       .arg(fieldList[0]).arg(fieldList[1]).arg(fieldList[3] == "N/A" ? "N/A" : \
+                       QString::number(d->m_formula.celsiusToF(fieldList[3].toFloat()), 'd', 0)) \
+                       .arg(fieldList[4] == "N/A" ? "N/A" : QString::number(d->m_formula.celsiusToF(fieldList[4].toFloat()),'d',0)).arg(fieldList[5]));
+ 
+-               setData(source, QString("Long Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5|%6|%7|%8") \
++               setData(weatherSource, QString("Long Forecast Day %1").arg(i), QString("%1|%2|%3|%4|%5|%6|%7|%8") \
+                        .arg(fieldList[0]).arg(fieldList[2]).arg(fieldList[3] == "N/A" ? "N/A" : \
+                        QString::number(d->m_formula.celsiusToF(fieldList[3].toFloat()),'d', 0)) \
+                        .arg(fieldList[4] == "N/A" ? "N/A" : QString::number(d->m_formula.celsiusToF(fieldList[4].toFloat()),'d',0)).arg(fieldList[6]).arg(fieldList[7]) \
+@@ -975,37 +1007,37 @@
+         }
+ 
+      dataFields = this->yesterdayWeather(source);
+-     setData(source, "Yesterday High", dataFields["prevHigh"]);
+-     setData(source, "Yesterday Low", dataFields["prevLow"]);
++     setData(weatherSource, "Yesterday High", dataFields["prevHigh"]);
++     setData(weatherSource, "Yesterday Low", dataFields["prevLow"]);
+    
+      if (dataFields["prevHigh"] != "N/A" && dataFields["prevLow"] != "N/A") {
+-         setData(source ,"Yesterday Temperature Unit", dataFields["yesterdayTempUnit"]);
++         setData(weatherSource ,"Yesterday Temperature Unit", dataFields["yesterdayTempUnit"]);
+      }
+ 
+-     setData(source, "Yesterday Precip Total", dataFields["prevPrecip"]);
+-     setData(source, "Yesterday Precip Unit", dataFields["prevPrecipUnit"]);
++     setData(weatherSource, "Yesterday Precip Total", dataFields["prevPrecip"]);
++     setData(weatherSource, "Yesterday Precip Unit", dataFields["prevPrecipUnit"]);
+ 
+      dataFields = this->sunriseSet(source);
+-     setData(source, "Sunrise At", dataFields["sunrise"]);
+-     setData(source, "Sunset At", dataFields["sunset"]);
++     setData(weatherSource, "Sunrise At", dataFields["sunrise"]);
++     setData(weatherSource, "Sunset At", dataFields["sunset"]);
+ 
+      dataFields = this->moonriseSet(source);
+-     setData(source, "Moonrise At", dataFields["moonrise"]);
+-     setData(source, "Moonset At", dataFields["moonset"]);
++     setData(weatherSource, "Moonrise At", dataFields["moonrise"]);
++     setData(weatherSource, "Moonset At", dataFields["moonset"]);
+ 
+      dataFields = this->weatherRecords(source);
+-     setData(source, "Record High Temperature", dataFields["recordHigh"]);
+-     setData(source, "Record Low Temperature", dataFields["recordLow"]);
++     setData(weatherSource, "Record High Temperature", dataFields["recordHigh"]);
++     setData(weatherSource, "Record Low Temperature", dataFields["recordLow"]);
+      if (dataFields["recordHigh"] != "N/A" && dataFields["recordLow"] != "N/A") {
+-         setData(source, "Record Temperature Unit", dataFields["recordTempUnit"]);
++         setData(weatherSource, "Record Temperature Unit", dataFields["recordTempUnit"]);
+      }
+ 
+-     setData(source, "Record Rainfall", dataFields["recordRain"]);
+-     setData(source, "Record Rainfall Unit", dataFields["recordRainUnit"]);
+-     setData(source, "Record Snowfall", dataFields["recordSnow"]);
+-     setData(source, "Record Snowfall Unit", dataFields["recordSnowUnit"]);
++     setData(weatherSource, "Record Rainfall", dataFields["recordRain"]);
++     setData(weatherSource, "Record Rainfall Unit", dataFields["recordRainUnit"]);
++     setData(weatherSource, "Record Snowfall", dataFields["recordSnow"]);
++     setData(weatherSource, "Record Snowfall Unit", dataFields["recordSnowUnit"]);
+ 
+-     setData(source, "Credit", "Environment Canada");
++     setData(weatherSource, "Credit", "Environment Canada");
+ }
+ 
+ QString EnvCanadaIon::country(const QString& source)
+@@ -1093,6 +1125,7 @@
+         if (!d->m_weatherData[source].temperature.isEmpty()) {
+             temperatureInfo.insert("temperature", QString("%1").arg(QString::number(d->m_weatherData[source].temperature.toFloat(), 'f', 1)));
+         }
++        temperatureInfo.insert("temperatureUnit", QString("%1C").arg(QChar(176)));
+     }
+     else {
+         if (!d->m_weatherData[source].temperature.isEmpty()) {
+@@ -1100,6 +1133,7 @@
+         } else {
+             temperatureInfo.insert("temperature", "N/A");
+         }
++	temperatureInfo.insert("temperatureUnit", QString("%1F").arg(QChar(176)));
+     }  
+     temperatureInfo.insert("comfortTemperature", "N/A");
+ 
+--- a/plasma/dataengines/weather/ions/ion_bbcukmet.cpp
++++ b/plasma/dataengines/weather/ions/ion_bbcukmet.cpp
+@@ -38,6 +38,8 @@
+     // Key dicts
+     QHash<QString, UKMETIon::Private::XMLMapInfo> m_place;
+     QVector<QString> m_locations;
++    QStringList m_matchLocations;
++    bool isValid;
+ public:
+     // Weather information
+     QHash<QString, WeatherData> m_weatherData;
+@@ -49,6 +51,7 @@
+     QMap<KJob *, QXmlStreamReader*> m_forecastJobXml;
+     QMap<KJob *, QString> m_forecastJobList;
+ 
++    
+     KUrl *m_url;
+     KIO::TransferJob *m_job;
+ 
+@@ -63,6 +66,7 @@
+ // ctor, dtor
+ UKMETIon::UKMETIon(QObject *parent, const QVariantList &args)
+         : IonInterface(parent), d(new Private())
++
+ {
+     Q_UNUSED(args)
+ }
+@@ -76,32 +80,48 @@
+ // Get the master list of locations to be parsed
+ void UKMETIon::init()
+ {
++this->setInitialized(true);
+ return;
+ }
+ 
+ // Get a specific Ion's data
+ bool UKMETIon::updateIonSource(const QString& source)
+ {
+-       Q_UNUSED(source)
+-       //if (!d->m_locations.contains(source)) {
+-       //    searchPlace(source);
+-       //} else {
+-       //    cachedLocation(source);
+-      // }
+-return true;
++    // We expect the applet to send the source in the following tokenization:
++    // ionname:validate:place_name - Triggers validation of place
++    // ionname:weather:place_name - Triggers receiving weather of place
++
++    kDebug() << "updateIonSource() SOURCE: " << source;
++    QStringList sourceAction = source.split(':');
++    if (sourceAction[1] == QString("validate")) {
++        kDebug() << "Initiate Find Matching places: " << sourceAction[2];
++        // Look for places the match
++        this->validate(sourceAction[2], source);
++        return true;
++
++    } else if (sourceAction[1] == QString("weather")) {
++       //getXMLData(QString("%1:%2").arg(sourceAction[0]).arg(sourceAction[2]));
++       return true;
++    }
++    return false;
+ }
+ 
+ // Parses city list and gets the correct city based on ID number
+-void UKMETIon::searchPlace(const QString& key)
++void UKMETIon::validate(const QString& place, const QString& source)
+ {
++    d->m_jobList.clear();
++    d->m_jobXml.clear();
++
+     KUrl url;
+-    url = "http://www.bbc.co.uk/cgi-perl/weather/search/new_search.pl?x=0&y=0&=Submit&search_query=" + key + "&tmpl=wap";
++    url = "http://www.bbc.co.uk/cgi-perl/weather/search/new_search.pl?x=0&y=0&=Submit&search_query=" + place + "&tmpl=wap";
+     kDebug() << "URL: " << url;
+ 
+     d->m_job = KIO::get(url.url(), KIO::Reload, KIO::HideProgressInfo);
++    d->m_job->addMetaData("cookies", "none"); // Disable displaying cookies
++
+     d->m_jobXml.insert(d->m_job, new QXmlStreamReader);
+-    d->m_jobList.insert(d->m_job, key);
+- 
++    d->m_jobList.insert(d->m_job, source);
++
+     if (d->m_job) {
+         connect(d->m_job, SIGNAL(data(KIO::Job *, const QByteArray &)), this,
+                 SLOT(slotDataArrived(KIO::Job *, const QByteArray &)));
+@@ -111,6 +131,8 @@
+ 
+ bool UKMETIon::readSearchXMLData(const QString& key, QXmlStreamReader& xml)
+ {
++    kDebug() << "readSearchXMLData()";
++
+     while (!xml.atEnd()) {
+         xml.readNext();
+  
+@@ -131,34 +153,15 @@
+ return !xml.error();
+ }
+ 
+-void UKMETIon::cachedLocation(const QString& key)
+-{
+-    d->m_job = 0;
+-    kDebug() << "cachedLocation: d->m_place[key].place = " << d->m_place[key].place;
+-    if (d->m_place.contains(key)) {
+-        d->m_job = KIO::get(d->m_place[key].XMLurl, KIO::Reload, KIO::HideProgressInfo);
+-        kDebug() << "URL: " << d->m_place[key].XMLurl;
+-
+-        if (d->m_job) {
+-             d->m_forecastJobXml.insert(d->m_job, new QXmlStreamReader);
+-             d->m_forecastJobList.insert(d->m_job, key);
+-             kDebug() << "CACHE FORECAST FOR " << d->m_forecastJobList[d->m_job];
+-             connect(d->m_job, SIGNAL(data(KIO::Job *, const QByteArray &)), this,
+-                     SLOT(forecast_slotDataArrived(KIO::Job *, const QByteArray &)));
+-             connect(d->m_job, SIGNAL(result(KJob *)), this, SLOT(forecast_slotJobFinished(KJob *)));
+-        }
+-    }
+-}
+- 
+ void UKMETIon::parseSearchLocations(const QString& source, QXmlStreamReader& xml)
+ { 
+-    Q_UNUSED(source) 
+     int flag = 0;
+     QString url;
+     QString place;
+     QStringList tokens;
+     Q_ASSERT(xml.isStartElement() && xml.name() == "wml");
+-   
++    d->m_locations.clear();
++    kDebug() << "!!!!!!!!!!!!!! SOURCE: "<< source; 
+     while (!xml.atEnd()) {
+         xml.readNext();
+   
+@@ -172,6 +175,7 @@
+ 
+                     // Split URL to determine station ID number
+                     tokens = xml.attributes().value("href").toString().split("=");
++                    kDebug() << "TOKENS URL: " << tokens;
+                     if (xml.attributes().value("href").toString().contains("world")) {
+                         url = "http://feeds.bbc.co.uk/weather/feeds/obs/world/" + tokens[1] + ".xml";
+                         flag = 0;
+@@ -180,7 +184,10 @@
+                         flag = 1;
+                     }
+                     place = xml.readElementText();
+-  
++ 
++                    kDebug() << "PLACES FOUND: " << place; 
++                    kDebug() << "URL FOR PLACE: " << url;
++
+                     if (!d->m_locations.contains(place)) {
+                         if (flag) {  // This is a UK specific location
+                             d->m_place[place].XMLurl = url;
+@@ -197,18 +204,8 @@
+             }
+         } 
+     }
+-    // All Locations
+-    if (d->m_place[source].ukPlace) {
+-        //kDebug() << "UKMET: LIST OF UK PLACE: " << source;
+-        setData("FoundPlaces", source, QString("%1|%2").arg(source).arg("Local"));
+-        //kDebug() << "UKMET: URL OF UK PLACE: " << d->m_place[source].XMLurl;
+-    }
+ 
+-    if (!d->m_place[source].ukPlace) {
+-        //kDebug() << "UKMET: LIST OF WORLD PLACE: " << source;
+-        setData("FoundPlaces", source, QString("%1|%2").arg(source).arg("World"));
+-        //kDebug() << "UKMET: URL OF WORLD PLACE: " << d->m_place[source].XMLurl;
+-    }
++    updateWeather(source);
+ }
+ 
+ // handle when no XML tag is found
+@@ -229,6 +226,8 @@
+     
+ void UKMETIon::slotDataArrived(KIO::Job *job, const QByteArray &data)
+ {
++    kDebug() << "JOB ERROR(): " << job->errorString();
++
+     if (data.isEmpty() || !d->m_jobXml.contains(job)) {
+         return;
+     }
+@@ -239,6 +238,15 @@
+ 
+ void UKMETIon::slotJobFinished(KJob *job)
+ {
++    if (job->error() == 149) {
++        kDebug() << "JOB ERROR: " << job->errorString(); 
++        setData(d->m_jobList[job], "validate", QString("bbcukmet:timeout"));
++        disconnectSource(d->m_jobList[job], this);
++        d->m_jobList.remove(job);
++        delete d->m_jobXml[job];
++        d->m_jobXml.remove(job);
++        return;
++    }   
+     readSearchXMLData(d->m_jobList[job], *d->m_jobXml[job]);
+     d->m_jobList.remove(job);
+     delete d->m_jobXml[job];
+@@ -382,17 +390,20 @@
+     }
+ }
+ 
+-bool UKMETIon::validLocation(QString keyName)
+-{
+-    if (d->m_locations.contains(keyName)) {
+-        return true;
+-    }
+-    return false;
+-}
+-
+ void UKMETIon::updateWeather(const QString& source)
+ {
+-    Q_UNUSED(source)
++    if (!d->m_locations.count()) {
++        QStringList invalidPlace = source.split(':');
++        setData(source, "validate", QString("bbcukmet:invalid:multiple:%1").arg(invalidPlace[2]));
++        return;
++    } else {
++        QString placeList;
++        foreach (QString place, d->m_locations) {
++                 placeList.append(QString("%1:").arg(place));
++        }
++        kDebug() << "****** PLACES FOUND: " << placeList;
++        setData(source, "validate", QString("bbcukmet:valid:multiple:%1").arg(placeList));
++    }
+     return;
+ }
+ 
+--- a/plasma/dataengines/weather/ions/ion_noaa.cpp
++++ b/plasma/dataengines/weather/ions/ion_noaa.cpp
+@@ -80,19 +80,54 @@
+     getXMLSetup();
+ }
+ 
+-bool NOAAIon::validate(const QString& source) const
++QStringList NOAAIon::validate(const QString& source) const
+ {
+-    QHash<QString, QString>::const_iterator it = d->m_locations.find(source);
+-    if (it != d->m_locations.end()) {
+-        return true;
++    QStringList placeList;
++    QHash<QString, QString>::const_iterator it = d->m_locations.constBegin();
++    while (it != d->m_locations.constEnd()) { 
++        if (it.value().toLower().contains(source.toLower())) {
++            placeList.append(it.value().split(":")[1]);
++        }
++        ++it;
++    }
++     
++    // Check if placeList is empty if so, return nothing.
++    if (placeList.isEmpty()) {
++        return QStringList();
+     }
+-    return false;
++
++    placeList.sort();
++    return placeList;
+ }
+ 
+ bool NOAAIon::updateIonSource(const QString& source)
+ {
+-    getXMLData(source);
+-    return true;
++    // We expect the applet to send the source in the following tokenization:
++    // ionname:validate:place_name - Triggers validation of place
++    // ionname:weather:place_name - Triggers receiving weather of place
++
++    kDebug() << "updateIonSource() SOURCE: " << source;
++    QStringList sourceAction = source.split(':');
++    if (sourceAction[1] == QString("validate")) {
++        kDebug() << "Initiate Validating of place: " << sourceAction[2];
++        QStringList result = this->validate(QString("%1:%2").arg(sourceAction[0]).arg(sourceAction[2]));
++   
++        if (result.size() == 1) {
++            setData(source, "validate", QString("noaa:valid:single:%1").arg(result.join(":")));
++            return true;
++        } else if (result.size() > 1) {
++            setData(source, "validate", QString("noaa:valid:multiple:%1").arg(result.join(":")));
++            return true;
++        } else if (result.size() == 0) {
++            setData(source, "validate", QString("noaa:invalid:single:%1").arg(sourceAction[2]));
++            return true;
++        }
++
++     } else if (sourceAction[1] == QString("weather")) {
++        getXMLData(QString("%1:%2").arg(sourceAction[0]).arg(sourceAction[2]));
++        return true;
++     }
++     return false;
+ }
+ 
+ // Parses city list and gets the correct city based on ID number
+@@ -188,7 +223,7 @@
+                 tmp = "noaa:" + d->m_station_name + ", " + d->m_state; // Build the key name.
+                 d->m_place[tmp].stateName = d->m_state;
+                 d->m_place[tmp].stationName = d->m_station_name;
+-	        d->m_place[tmp].XMLurl = d->m_xmlurl;
++	        d->m_place[tmp].XMLurl = d->m_xmlurl.replace("http://", "http://www.");
+ 
+                 d->m_locations[tmp] = tmp;
+             } else {
+@@ -286,7 +321,7 @@
+                 data.heatindex_C = xml.readElementText();
+             } else if (xml.name() == "windchill_f") {
+                 data.windchill_F = xml.readElementText();
+-            } else if (xml.name() == "windchill_c") {
++           } else if (xml.name() == "windchill_c") {
+                 data.windchill_C = xml.readElementText();
+             } else if (xml.name() == "visibility_mi") {
+                 data.visibility = xml.readElementText();
+@@ -320,6 +355,7 @@
+     }
+ 
+     d->m_weatherData[source] = data;
++   
+     updateWeather(source);
+     return !xml.error();
+ }
+@@ -369,71 +405,75 @@
+     }
+ }
+ 
+-void NOAAIon::updateWeather(const QString& source)
++void NOAAIon::updateWeather(const QString& source) 
+ {
++    QString weatherSource = source;
++    weatherSource.replace("noaa:", "noaa:weather:");
++
+     QMap<QString, QString> dataFields;
+     QStringList fieldList;
+ 
+-    setData(source, "Country", this->country(source));
+-    setData(source, "Place", this->place(source));
+-    setData(source, "Airport Code", this->station(source));
++    setData(weatherSource, "Country", this->country(source));
++    setData(weatherSource, "Place", this->place(source));
++    setData(weatherSource, "Airport Code", this->station(source));
+ 
+     // Real weather - Current conditions
+-    setData(source, "Observations At", this->observationTime(source));
+-    setData(source, "Current Conditions", this->condition(source));
++    setData(weatherSource, "Observations At", this->observationTime(source));
++    setData(weatherSource, "Current Conditions", this->condition(source));
+     dataFields = this->temperature(source);
+-    setData(source, "Temperature", dataFields["temperature"]);
++    setData(weatherSource, "Temperature", dataFields["temperature"]);
+ 
+     if (dataFields["temperature"] != "N/A") {
+-        setData(source, "Temperature Unit", dataFields["temperatureUnit"]);
++        setData(weatherSource, "Temperature Unit", dataFields["temperatureUnit"]);
+     }
+ 
+     // Do we have a comfort temperature? if so display it
+     if (dataFields["comfortTemperature"] != "N/A") {
+         if (d->m_weatherData[source].windchill_F != "NA") {
+-            setData(source, "Windchill", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Windchill", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Humidex", "N/A");
+         }
+         if (d->m_weatherData[source].heatindex_F != "NA" && d->m_weatherData[source].temperature_F.toInt() != d->m_weatherData[source].heatindex_F.toInt()) {
+-            setData(source, "Humidex", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Humidex", QString("%1%2").arg(dataFields["comfortTemperature"]).arg(QChar(176)));
++            setData(weatherSource, "Windchill", "N/A");
+         }
++     } else {
++       setData(weatherSource, "Windchill", "N/A");
++       setData(weatherSource, "Humidex", "N/A");
+      }
+ 
+-     setData(source, "Dewpoint", this->dewpoint(source));
++     setData(weatherSource, "Dewpoint", this->dewpoint(source));
+      if (this->dewpoint(source) != "N/A") {
+-         setData(source, "Dewpoint Unit", dataFields["temperatureUnit"]);
++         setData(weatherSource, "Dewpoint Unit", dataFields["temperatureUnit"]);
+      }
+  
+      dataFields = this->pressure(source);
+-     setData(source, "Pressure", dataFields["pressure"]);
++     setData(weatherSource, "Pressure", dataFields["pressure"]);
+ 
+      if (dataFields["pressure"] != "N/A") {
+-         setData(source, "Pressure Unit", dataFields["pressureUnit"]);
++         setData(weatherSource, "Pressure Unit", dataFields["pressureUnit"]);
+      }
+ 
+      dataFields = this->visibility(source);
+-     setData(source, "Visibility", dataFields["visibility"]);
++     setData(weatherSource, "Visibility", dataFields["visibility"]);
+ 
+      if (dataFields["visibility"] != "N/A") {
+-         setData(source, "Visibility Unit", dataFields["visibilityUnit"]);
++         setData(weatherSource, "Visibility Unit", dataFields["visibilityUnit"]);
+      }
+ 
+-     setData(source, "Humidity", this->humidity(source));
++     setData(weatherSource, "Humidity", this->humidity(source));
+ 
+      dataFields = this->wind(source);
+-     setData(source, "Wind Speed", dataFields["windSpeed"]);
++     setData(weatherSource, "Wind Speed", dataFields["windSpeed"]);
+ 
+      if (dataFields["windSpeed"] != "Calm") {
+-         setData(source, "Wind Speed Unit", dataFields["windUnit"]);
++         setData(weatherSource, "Wind Speed Unit", dataFields["windUnit"]);
+      }
+ 
+-     setData(source, "Wind Gust", dataFields["windGust"]);
+-     if (dataFields["windGust"] != "N/A") {
+-         setData(source, "Wind Gust Unit", dataFields["windGustUnit"]);
+-     }
+-
+-     setData(source, "Wind Direction", dataFields["windDirection"]);
+-
+-     setData(source, "Credit", "NOAA National Weather Service");
++     setData(weatherSource, "Wind Gust", dataFields["windGust"]);
++     setData(weatherSource, "Wind Gust Unit", dataFields["windGustUnit"]);
++     setData(weatherSource, "Wind Direction", dataFields["windDirection"]);
++     setData(weatherSource, "Credit", "NOAA National Weather Service");
+ }
+ 
+ QString NOAAIon::country(const QString& source)
+@@ -550,6 +590,7 @@
+     // May not have any winds
+     if (d->m_weatherData[source].windSpeed == "NA") {
+         windInfo.insert("windSpeed", "Calm");
++        windInfo.insert("windUnit", "N/A");
+     } else {
+         if (d->m_useMetric) {
+             if (d->m_windInMeters) {
+@@ -568,6 +609,7 @@
+     // May not always have gusty winds
+     if (d->m_weatherData[source].windGust == "NA") {
+         windInfo.insert("windGust", "N/A");
++        windInfo.insert("windGustUnit", "N/A");
+     } else {
+         if (d->m_useMetric) {
+             if (d->m_windInMeters) {
+--- a/plasma/dataengines/weather/ions/ion-envcan.desktop
++++ b/plasma/dataengines/weather/ions/ion-envcan.desktop
+@@ -1,15 +1,18 @@
+ [Desktop Entry]
+ Name=Environment Canada
++Name[ca]=Medi ambient del Canadà
+ Name[el]=Περιβάλλον Καναδά
+ Name[km]=បរិស្ថាន​ប្រទេស​កាណាដា
+ Name[ko]=캐나다 환경부
+ Name[nds]=Ümwelt Kanada
+ Name[ne]=वातावरण क्यानाडा
++Name[pa]=ਇੰਨਵਾਇਰਮੈਂਟ ਕੇਨੈਡਾ
+ Name[sr]=Природна средина Канада
+ Name[sr at latin]=Prirodna sredina Kanada
+ Name[x-test]=xxEnvironment Canadaxx
+ Name[zh_CN]=加拿大环境
+ Comment=XML Data from Environment Canada
++Comment[ca]=Dades XML des de Medi ambient del Canadà
+ Comment[el]=Δεδομένα XML για το περιβάλλον του Καναδά
+ Comment[et]=Environment Canada XML-andmed
+ Comment[ga]=Sonraí XML ó Environment Canada
+@@ -22,6 +25,7 @@
+ Comment[ne]=वातावरण क्यानाडाबाट एक्सएमएल डेटा
+ Comment[nl]=XML-gegevens van Environment Canada
+ Comment[nn]=XML-data frå Environment Canada
++Comment[pa]=ਇੰਨਵਾਇਰਨਮੈਂਟ ਕੇਨੈਡਾ ਤੋਂ XML ਡਾਟਾ
+ Comment[pt]=Dados em XML do Environment Canada
+ Comment[pt_BR]=Dados em XML do Environment Canada
+ Comment[sr]=ИксМЛ подаци Природне средине Канада
+@@ -30,7 +34,7 @@
+ Comment[x-test]=xxXML Data from Environment Canadaxx
+ Comment[zh_CN]=来自加拿大环境的 XML 数据
+ Comment[zh_TW]=從 Environment Canada 來的 XML 資料
+-ServiceTypes=WeatherEngine/Ion
++X-KDE-ServiceTypes=WeatherEngine/Ion
+ Type=Service
+ Icon=noneyet
+ X-KDE-Library=ion_envcan
+--- a/plasma/dataengines/weather/ions/ion_envcan.h
++++ b/plasma/dataengines/weather/ions/ion_envcan.h
+@@ -177,7 +177,7 @@
+     bool readXMLData(const QString& source, QXmlStreamReader& xml);
+ 
+     // Check if place specified is valid or not
+-    QString validate(const QString& source);
++    QStringList validate(const QString& source) const;
+ 
+     // Catchall for unknown XML tags
+     void parseUnknownElement(QXmlStreamReader& xml);
+--- a/plasma/dataengines/weather/ions/ion.cpp
++++ b/plasma/dataengines/weather/ions/ion.cpp
+@@ -38,6 +38,7 @@
+         : Plasma::DataEngine(parent),
+         d(new Private(this))
+ {
++d->ref = 0;
+ }
+ 
+ // Increment reference counter
+@@ -66,11 +67,13 @@
+ 
+ bool IonInterface::sourceRequested(const QString &source)
+ {
+-    kDebug() << "sourceRequested()";
++    kDebug() << "sourceRequested()" << source;
+ 
+     if (d->initialized) {
+-        this->updateSource(source);
++        kDebug() << "Calling Ion's updateIonSource()";
++        return updateIonSource(source);
+     } else {
++        kDebug() << "Setting Source: " << source << "Not INITIALIZED YET!";
+         setData(source, Plasma::DataEngine::Data());
+     }
+ 
+@@ -81,13 +84,19 @@
+ {
+      kDebug() << "updateSource()";
+      if (d->initialized) {
+-         return this->updateIonSource(source);
++         return updateIonSource(source);
+      }
+ 
+      return false;
+ }
+ 
+-void IonInterface::setInitialized(const bool initialized)
++//void IonInterface::deleteIonSource(const QString& source)
++//{  
++//   kDebug() << "Ion: Removing my Source: " << source;
++//   removeSource(source);
++//}
++
++void IonInterface::setInitialized(bool initialized)
+ {
+     d->initialized = initialized;
+ 
+--- a/plasma/dataengines/weather/ions/ion-bbcukmet.desktop
++++ b/plasma/dataengines/weather/ions/ion-bbcukmet.desktop
+@@ -1,5 +1,7 @@
+ [Desktop Entry]
+ Name=BBC Weather from UK MET Office
++Name[ca]=Meteorologia de la BBC des de UK MET Office
++Name[de]=BBC-Wetter aus dem UK-MET-Büro
+ Name[el]=Καιρός του BBC από το γραφείο UK MET
+ Name[et]=BBC ilmateade Briti ilmateenistusest
+ Name[ga]=Aimsir BBC ó Oifig UK MET
+@@ -12,6 +14,7 @@
+ Name[ne]=यूके एमइटी कार्यालयबाट बीबीसी मौसम
+ Name[nl]=BBC Weather van UK MET Office
+ Name[nn]=BBC-vêr frå UK MET Office
++Name[pa]=UK MET ਆਫਿਸ ਤੋਂ BBC ਮੌਸਮ
+ Name[pt]=Meteorologia da BBC do Escritório MET na GB
+ Name[pt_BR]=BBC Weather do Escritório MET no Reino Unido
+ Name[sr]=Метеоуслови по Би-би-сима
+@@ -21,6 +24,8 @@
+ Name[zh_CN]=来自英国 MET 办公室来的 BBC 天气报告
+ Name[zh_TW]=BBC 天氣報告,從 UK MET 辦公室來
+ Comment=XML Data from the UK MET Office
++Comment[ca]=Dades XML des de UK MET Office
++Comment[de]=XML-Daten aus dem UK-MET-Büro
+ Comment[el]=Δεδομένα XML από το γραφείο UK MET
+ Comment[et]=Briti ilmateenistuse XML-andmed
+ Comment[ga]=Sonraí XML ó Oifig UK MET
+@@ -33,6 +38,7 @@
+ Comment[ne]=यूके एमईटी कार्यालयबाट एक्सएमएल डेटा
+ Comment[nl]=XML-gegevens van UK MET Office
+ Comment[nn]=XML-data frå UK MET Office
++Comment[pa]=UK MET ਆਫਿਸ ਤੋਂ XML ਡਾਟਾ
+ Comment[pt]=Dados em XML do Escritório MET na GB
+ Comment[pt_BR]=Dados em XML do Escritório MET no Reino Unido
+ Comment[sr]=ИксМЛ подаци Британског метеоролошког офиса
+@@ -41,7 +47,7 @@
+ Comment[x-test]=xxXML Data from the UK MET Officexx
+ Comment[zh_CN]=来自英国 MET 办公室来的 XML 数据
+ Comment[zh_TW]=從 UK MET 辦公室來的 XML 資料
+-ServiceTypes=WeatherEngine/Ion
++X-KDE-ServiceTypes=WeatherEngine/Ion
+ Type=Service
+ Icon=noneyet
+ X-KDE-Library=ion_bbcukmet
+--- a/plasma/dataengines/weather/ions/ion_bbcukmet.h
++++ b/plasma/dataengines/weather/ions/ion_bbcukmet.h
+@@ -53,9 +53,9 @@
+     UKMETIon(QObject *parent, const QVariantList &args);
+     ~UKMETIon();
+     void init();  // Setup the city location, fetching the correct URL name.
++    void option(int option, QVariant value);
+     bool updateIonSource(const QString& source);
+     void updateWeather(const QString& source); // Sync data source with Applet
+-    void option(int option, QVariant value);
+ 
+ protected slots:
+     void slotDataArrived(KIO::Job *, const QByteArray &);
+@@ -67,14 +67,12 @@
+     /* UKMET Methods - Internal for Ion */
+ 
+     // Load and Parse the place search XML listings
+-    void searchPlace(const QString& key);
+-    void cachedLocation(const QString& key);
+-    bool readSearchXMLData(const QString& key, QXmlStreamReader& xml);
+-    void parseSearchLocations(const QString& key, QXmlStreamReader& xml);
+-    bool validLocation(QString key);
++    void validate(const QString& place, const QString& source);
++    bool readSearchXMLData(const QString& source, QXmlStreamReader& xml);
++    void parseSearchLocations(const QString& source, QXmlStreamReader& xml);
+ 
+     // Observation parsing methods
+-    bool readObservationXMLData(QString &key, QXmlStreamReader& xml);
++    bool readObservationXMLData(QString& source, QXmlStreamReader& xml);
+     void parsePlaceObservation(WeatherData& data, QXmlStreamReader& xml);
+     void parseWeatherChannel(WeatherData& data, QXmlStreamReader& xml);
+     void parseWeatherObservation(WeatherData& data, QXmlStreamReader& xml);
+--- a/plasma/dataengines/weather/ions/ion-noaa.desktop
++++ b/plasma/dataengines/weather/ions/ion-noaa.desktop
+@@ -1,5 +1,6 @@
+ [Desktop Entry]
+ Name=NOAA's National Weather Service
++Name[ca]=Servei meteorològic nacional de NOAA
+ Name[el]=Υπηρεσία καιρού NOAA
+ Name[et]=NOAA riiklik ilmateenistus
+ Name[ja]=NOAA (アメリカ海洋大気圏局) National Weather Service
+@@ -11,6 +12,7 @@
+ Name[ne]=NOAA को राष्ट्रिय मौसम सेवा
+ Name[nl]=NOAA's nationale weerdienst
+ Name[nn]=NOAAs amerikanske vêrteneste
++Name[pa]=NOAA ਦੀ ਕੌਮੀ ਮੌਸਮ ਸਰਵਿਸ
+ Name[pt]=Serviço Meteorológico Nacional da NOAA
+ Name[pt_BR]=Serviço Meteorológico Nacional da NOAA
+ Name[sr]=НОАА-ова национална метеоролошка служба
+@@ -20,6 +22,7 @@
+ Name[zh_CN]=NOAA 的 国家天气服务
+ Name[zh_TW]=NOAA 的國家天氣服務
+ Comment=XML Data from NOAA's National Weather Service
++Comment[ca]=Dades XML del servei meteorològic nacional de NOAA
+ Comment[el]=Δεδομένα XML από την υπηρεσία καιρού NOAA
+ Comment[et]=NOAA riikliku ilmateenistuse XML-andmed
+ Comment[it]=Dati XML dal NOAA (National Weather Service)
+@@ -32,6 +35,7 @@
+ Comment[ne]=NOAA को राष्ट्रिय मौसम सेवाबाट एक्षएमएल डेटा
+ Comment[nl]=XML-gegevens van NOAA's nationale weerdienst
+ Comment[nn]=XML-data frå NOAAs amerikanske vêrteneste
++Comment[pa]=NOAA ਦੀ ਕੌਮੀ ਮੌਸਮ ਸਰਵਿਸ ਤੋਂ XML ਡਾਟਾ
+ Comment[pt]=Dados em XML do Serviço Meteorológico Nacional da NOAA
+ Comment[pt_BR]=Dados em XML do Serviço Meteorológico Nacional da NOAA
+ Comment[sr]=ИксМЛ подаци НОАА-ове националне метеоролошке службе
+@@ -40,7 +44,7 @@
+ Comment[x-test]=xxXML Data from NOAA's National Weather Servicexx
+ Comment[zh_CN]=来自 NOAA 的 国家天气服务的 XML 数据
+ Comment[zh_TW]=從 NOAA 的國家天氣服務來的 XML 資料
+-ServiceTypes=WeatherEngine/Ion
++X-KDE-ServiceTypes=WeatherEngine/Ion
+ Type=Service
+ Icon=noneyet
+ X-KDE-Library=ion_noaa
+--- a/plasma/dataengines/weather/ions/ion_noaa.h
++++ b/plasma/dataengines/weather/ions/ion_noaa.h
+@@ -108,7 +108,7 @@
+     bool readXMLData(const QString& source, QXmlStreamReader& xml);
+ 
+     // Check if place specified is valid or not
+-    bool validate(const QString& source) const;
++    QStringList validate(const QString& source) const;
+ 
+     // Catchall for unknown XML tags
+     void parseUnknownElement(QXmlStreamReader& xml);
+--- a/plasma/dataengines/weather/ions/ion.h
++++ b/plasma/dataengines/weather/ions/ion.h
+@@ -90,7 +90,7 @@
+      *
+      * @arg initialized whether or not the ion is currently ready to fetch data
+      */
+-    void setInitialized(const bool initialized);
++    void setInitialized(bool initialized);
+ 
+     /**
+      * reimplemented from DataEngine
+@@ -102,6 +102,10 @@
+      * 
+      */
+     virtual bool updateIonSource(const QString &name) = 0;
++
++    //void deleteIonSource(const QString& source);
++ 
++    friend class WeatherEngine;
+    
+ private:
+     class Private;
+--- a/plasma/dataengines/weather/ions/weather_ion.desktop
++++ b/plasma/dataengines/weather/ions/weather_ion.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=WeatherEngine/Ion
+ 
+@@ -15,6 +14,7 @@
+ Comment[ne]=मौसम इन्जिन Ion
+ Comment[nl]=Weer-engine Ion
+ Comment[nn]=Vêrmotor Ion
++Comment[pa]=ਮੌਸਮ-ਇੰਜਣ ਆਈਨ
+ Comment[pt]=Motor Meteorológico Ion
+ Comment[pt_BR]=Motor Meteorológico Ion
+ Comment[sr]=Метеомотор Јон
+--- a/plasma/dataengines/weather/weatherengine.h
++++ b/plasma/dataengines/weather/weatherengine.h
+@@ -42,7 +42,7 @@
+ 
+     // Ion plugin methods
+     IonInterface* Ion(const QString& name) const;  // Returns an Ion instance.
+-    IonInterface* loadIon(const KService::Ptr& service);    // Loads an Ion plugin.
++    IonInterface* loadIon(const QString& pluginName);    // Loads an Ion plugin.
+     void unloadIon(const QString& name);           // Unloads an Ion plugin.
+     KService::List knownIons();                // Returns a list of Ion plugin names.
+ 
+--- a/plasma/dataengines/hotplug/plasma-engine-hotplug.desktop
++++ b/plasma/dataengines/hotplug/plasma-engine-hotplug.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Hotplug Event Data Engine
+ Name[ca]=Motor de dades d'esdeveniments de connexió en calent
++Name[de]=Treiber für Hotplug-Ereignisse
+ Name[el]=Μηχανή δεδομένων γεγονότων άμεσης σύνδεσης
+ Name[et]=Hotplug-sündmuste andmete mootor
+ Name[ja]=Hotplug イベントデータエンジン
+@@ -12,6 +12,7 @@
+ Name[ne]=हटप्लग घटना डेटा इन्जिन
+ Name[nl]=Hotplug-gebeurtenis (gegevensengine)
+ Name[nn]=Datamotor for Hotplug-hendingar
++Name[pa]=ਹਾਟਪਲੱਗ ਈਵੈਂਟ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados de Eventos do Hotplug
+ Name[pt_BR]=Mecanismo de Dados de Eventos do Hotplug
+ Name[sr]=Мотор врућег укључивања
+@@ -20,7 +21,7 @@
+ Name[x-test]=xxHotplug Event Data Enginexx
+ Name[zh_CN]=热插拔事件数据引擎
+ Name[zh_TW]=熱插拔事件資料引擎
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=notifier
+ X-KDE-Library=plasma_engine_hotplug
+--- a/plasma/dataengines/dict/plasma-engine-dict.desktop
++++ b/plasma/dataengines/dict/plasma-engine-dict.desktop
+@@ -1,8 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Dictionary Data Engine
+ Name[ca]=Motor de dades de diccionari
++Name[de]=Wörterbuch-Treiber
+ Name[el]=Μηχανή δεδομένων λεξικού
++Name[eo]=Vortardatuma Maŝino
+ Name[et]=Sõnaraamatu andmete mootor
+ Name[ga]=Inneall Sonraí Foclóra
+ Name[ja]=辞書データエンジン
+@@ -14,6 +15,7 @@
+ Name[ne]=शब्दकोश डेटा इन्जिन
+ Name[nl]=Woordenboek (gegevensengine)
+ Name[nn]=Ordboksdatamotor
++Name[pa]=ਡਿਕਸ਼ਨਰੀ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados do Dicionário
+ Name[pt_BR]=Mecanismo de Dados do Dicionário
+ Name[sr]=Мотор речника
+@@ -23,6 +25,8 @@
+ Name[zh_CN]=字典数据引擎
+ Name[zh_TW]=字典資料引擎
+ Comment=Look up word meanings
++Comment[ca]=Cerca els significats de paraules
++Comment[de]=Nachschlagen von Wortbedeutungen
+ Comment[el]=Αναζήτηση σημασίας λέξεων
+ Comment[et]=Sõna tähenduse otsimine
+ Comment[ja]=単語の意味を調べる
+@@ -34,6 +38,7 @@
+ Comment[ne]=शब्दको अर्थ हेर्नुहोस्
+ Comment[nl]=Zoek de betekenis van woorden op
+ Comment[nn]=Slå opp tydinga til ord
++Comment[pa]=ਸ਼ਬਦ ਅਰਥ ਖੋਜ
+ Comment[pt]=Procurar os significados das palavras
+ Comment[pt_BR]=Procurar os significados das palavras
+ Comment[sr]=Потражите значења речи
+@@ -42,7 +47,7 @@
+ Comment[x-test]=xxLook up word meaningsxx
+ Comment[zh_CN]=查阅单词含义
+ Comment[zh_TW]=尋找單字的意義
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=accessories-dictionary
+ X-KDE-Library=plasma_engine_dict
+--- a/plasma/dataengines/filebrowser/plasma-engine-filebrowser.desktop
++++ b/plasma/dataengines/filebrowser/plasma-engine-filebrowser.desktop
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=File and Directory Browser Engine
++Name[ca]=Motor fullejador de fitxers i directoris
+ Name[el]=Μηχανή περιήγησης αρχείων και φακέλων
+ Name[et]=Faili- ja kataloogisirvija mootor
+ Name[ja]=ファイルとディレクトリのブラウザエンジン
+@@ -11,6 +11,7 @@
+ Name[ne]=फाइल र डाइरेकटरी ब्राउजर इन्जिन
+ Name[nl]=Engine voor het bladeren door mappen en bestanden
+ Name[nn]=Motor for fil- og mappelesing
++Name[pa]=ਫਾਇਲ ਅਤੇ ਡਾਇਰੈਕਟਰੀ ਬਰਾਊਜ਼ਰ ਇੰਜਣ
+ Name[pt]=Motor de Navegação em Ficheiros e Pastas
+ Name[pt_BR]=Mecanismo de Navegação em Arquivos e Pastas
+ Name[sr]=Мотор за прегледање фајлова и фасцикли
+@@ -20,6 +21,8 @@
+ Name[zh_CN]=文件和目录浏览器引擎
+ Name[zh_TW]=檔案與目錄瀏覽器引擎
+ Comment=Info about files and directories for Plasmoids
++Comment[ca]=Informació quant a fitxers i directoris pels plasmoides
++Comment[de]=Informationen über Dateien und Ordner für Plasmoide
+ Comment[el]=Πληροφορίες για αρχεία και καταλόγους για πλασμοειδή
+ Comment[et]=Failide ja kataloogide info plasmoididele
+ Comment[ja]=Plasmoid のためのファイルとディレクトリに関する情報
+@@ -30,6 +33,7 @@
+ Comment[ne]=प्लाज्मोइडका लागि फाइलहरू र डाइरेक्टरीहरूको बारेमा जानकारी
+ Comment[nl]=Informatie over bestanden en mappen voor Plasmoids
+ Comment[nn]=Informasjon om filer og mapper for Plasmoidar
++Comment[pa]=ਪਲਾਜਮੋਡੀਸ ਲਈ ਫਾਇਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ ਵਾਸਤੇ ਜਾਣਕਾਰੀ
+ Comment[pt]=Informação sobre os ficheiros e pastas nos Plasmóides
+ Comment[pt_BR]=Informações sobre arquivos e diretórios, para os Plasmoids
+ Comment[sr]=Подаци о фајловима и фасциклама за плазмоиде
+@@ -38,7 +42,7 @@
+ Comment[x-test]=xxInfo about files and directories for Plasmoidsxx
+ Comment[zh_CN]=Plasmoids 下关于文件和目录的信息
+ Comment[zh_TW]=Plasmoids 關於檔案與目錄的資訊
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=unknown
+ X-KDE-Library=plasma_engine_filebrowser
+--- a/plasma/dataengines/tasks/plasma-engine-tasks.desktop
++++ b/plasma/dataengines/tasks/plasma-engine-tasks.desktop
+@@ -11,6 +11,7 @@
+ Name[ne]=कार्य व्यवस्थापन डेटा इन्जिन
+ Name[nl]=Taakbeheer (gegevensengine)
+ Name[nn]=Datamotor for oppgåvestyring
++Name[pa]=ਟਾਸਕ ਮੈਨੇਜ਼ਮੈਂਟ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados de Gestão de Tarefas
+ Name[pt_BR]=Mecanismo de Dados de Gerenciamento Tarefas
+ Name[sr]=Мотор за управљање задацима
+@@ -19,7 +20,7 @@
+ Name[x-test]=xxTask Management Data Enginexx
+ Name[zh_CN]=任务管理数据引擎
+ Name[zh_TW]=工作管理資料引擎
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=alarmclock
+ X-KDE-Library=plasma_engine_tasks
+--- a/plasma/dataengines/places/plasma-engine-places.desktop
++++ b/plasma/dataengines/places/plasma-engine-places.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Places Data Engine
+ Name[ca]=Motor de dades de llocs
+ Name[el]=Μηχανή δεδομένων τοποθεσιών
+@@ -13,6 +12,7 @@
+ Name[ne]=स्थान डेटा इन्जिन
+ Name[nl]=Locaties (gegevensengine)
+ Name[nn]=Datamotor for stader
++Name[pa]=ਥਾਵਾਂ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados dos Locais
+ Name[pt_BR]=Mecanismo de Dados de Locais
+ Name[sr]=Мотор за места
+@@ -22,6 +22,7 @@
+ Name[zh_CN]=Plasma 数据引擎
+ Name[zh_TW]=Places 資料引擎
+ Comment=Places data for Plasmoids
++Comment[ca]=Dades de llocs pels plasmoides
+ Comment[el]=Δεδομένα τοποθεσιών για πλασμοειδή
+ Comment[et]=Asukohtade andmed plasmoididele
+ Comment[ga]=Sonraí áiteanna le haghaidh Plasmoids
+@@ -33,6 +34,7 @@
+ Comment[ne]=प्लासमोइड्सका लागि स्थान डेटा
+ Comment[nl]=Locatiegegevens voor Plasmoids
+ Comment[nn]=Staddata for plasmoidar
++Comment[pa]=ਪਲਾਜਮੋਡੀਸ ਲਈ ਥਾਵਾਂ ਡਾਟਾ
+ Comment[pt]=Dados dos locais para os Plasmóides
+ Comment[pt_BR]=Dados de locais para os Plasmoids
+ Comment[sr]=Подаци о местима за плазмоиде
+@@ -41,7 +43,7 @@
+ Comment[x-test]=xxPlaces data for Plasmoidsxx
+ Comment[zh_CN]=Plasmoids 的位置数据
+ Comment[zh_TW]=Plasmoid 的 Places 資料
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=folder
+ X-KDE-Library=plasma_engine_places
+--- a/plasma/dataengines/mouse/plasma-engine-mouse.desktop
++++ b/plasma/dataengines/mouse/plasma-engine-mouse.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Mouse Data Engine
+ Name[ca]=Motor de dades del ratolí
++Name[de]=Mausdaten-Treiber
+ Name[el]=Μηχανή δεδομένων ποντικιού
+ Name[et]=Hiire andmete mootor
+ Name[ja]=マウスデータエンジン
+@@ -12,6 +12,7 @@
+ Name[ne]=माउस डेटा इन्जिन
+ Name[nl]=Muis (gegevensengine)
+ Name[nn]=Datamotor for mus
++Name[pa]=ਮਾਊਂਸ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados do Rato
+ Name[pt_BR]=Mecanismo de Dados de Mouse
+ Name[sr]=Мотор за миш
+@@ -21,6 +22,8 @@
+ Name[zh_CN]=鼠标数据引擎
+ Name[zh_TW]=滑鼠資料引擎
+ Comment=Mouse data for Plasmoids
++Comment[ca]=Dades del ratolí pels plasmoides
++Comment[de]=Mausdaten für Plasmoide
+ Comment[el]=Δεδομένα ποντικιού για πλασμοειδή
+ Comment[et]=Hiire andmed plasmoididele
+ Comment[ga]=Sonraí luiche le haghaidh Plasmoids
+@@ -32,6 +35,7 @@
+ Comment[ne]=प्लासमोइड्सका लागि माउस डेटा
+ Comment[nl]=Muisgegevens voor Plasmoids
+ Comment[nn]=Musdata for plasmoidar
++Comment[pa]=ਪਲਾਜਮੋਡੀਸ ਲਈ ਮਾਊਸ ਡਾਟਾ
+ Comment[pt]=Dados do rato para os Plasmóides
+ Comment[pt_BR]=Dados de mouse para os Plasmoids
+ Comment[sr]=Подаци о мишу за плазмоиде
+@@ -41,7 +45,7 @@
+ Comment[zh_CN]=Plasmoids 的鼠标数据
+ Comment[zh_TW]=Plasmoid 的滑鼠資料
+ Type=Service
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Icon=
+ X-KDE-Library=plasma_engine_mouse
+ X-EngineName=mouse
+--- a/plasma/dataengines/powermanagement/plasma-engine-powermanagement.desktop
++++ b/plasma/dataengines/powermanagement/plasma-engine-powermanagement.desktop
+@@ -1,6 +1,7 @@
+ [Desktop Entry]
+ Name=Powermanagement Data Engine
+ Name[ca]=Motor de dades per a la gestió de l'energia
++Name[de]=Energieverwaltungs-Treiber
+ Name[el]=Μηχανή δεδομένων διαχείρισης ενέργειας
+ Name[et]=Voolutarbe andmete mootor
+ Name[ga]=Inneall Sonraí Powermanagement
+@@ -12,6 +13,7 @@
+ Name[ne]=पावर व्यवस्थापन डेटा इन्जिन
+ Name[nl]=Energiebeheer (gegevensengine)
+ Name[nn]=Datamotor for straumstyring
++Name[pa]=ਪਾਵਰ-ਮੈਨੇਜ਼ਮੈਂਟ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados de Gestão de Energia
+ Name[pt_BR]=Mecanismo de Dados de Gerenciamento de Energia
+ Name[sr]=Мотор за управљање енергијом
+@@ -20,7 +22,7 @@
+ Name[x-test]=xxPowermanagement Data Enginexx
+ Name[zh_CN]=电源管理数据引擎
+ Name[zh_TW]=電源管理資料引擎
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=power
+ X-KDE-Library=plasma_engine_powermanagement
+--- a/plasma/dataengines/powermanagement/powermanagementengine.cpp
++++ b/plasma/dataengines/powermanagement/powermanagementengine.cpp
+@@ -140,27 +140,23 @@
+         state = I18N_NOOP("Could not determine battery status. Something is fishy here. :o");
+     }
+     setData(I18N_NOOP("Battery"), I18N_NOOP("State"), state);
+-    kDebug() << "PMEngine::Battery: updateChargeState " << state;
+     checkForUpdates();
+ }
+ 
+ void PowermanagementEngine::updateBatteryPlugState(bool newState)
+ {
+-    kDebug() << "PMEngine::Battery: updatePlugState" << newState;
+     setData(I18N_NOOP("Battery"), I18N_NOOP("Plugged in"), newState);
+     checkForUpdates();
+ }
+ 
+ void PowermanagementEngine::updateBatteryChargePercent(int newValue)
+ {
+-    kDebug() << "PMEngine::Battery: new chargepercent: " << newValue;
+     setData(I18N_NOOP("Battery"), I18N_NOOP("Percent"), newValue);
+     checkForUpdates();
+ }
+ 
+ void PowermanagementEngine::updateAcPlugState(bool newState)
+ {
+-    kDebug() << "PMEngine::AcAdapter: updatePlugState" << newState;
+     setData(I18N_NOOP("AC Adapter"), I18N_NOOP("Plugged in"), newState);
+     checkForUpdates();
+ }
+--- a/plasma/dataengines/soliddevice/plasma-engine-soliddevice.desktop
++++ b/plasma/dataengines/soliddevice/plasma-engine-soliddevice.desktop
+@@ -1,6 +1,7 @@
+ [Desktop Entry]
+ Name=SolidDevice Data Engine
+ Name[ca]=Motor de dades del SolidDevice
++Name[de]=Solid-Geräte-Treiber
+ Name[el]=Μηχανή δεδομένων συσκευών Solid
+ Name[et]=SolidDevice'i andmete mootor
+ Name[ga]=Inneall Sonraí SolidDevice
+@@ -11,6 +12,7 @@
+ Name[ne]=ठोस यन्त्र डेटा इन्जिन
+ Name[nl]=SolidDevice (gegevensengine)
+ Name[nn]=Datamotor for SolidDevice
++Name[pa]=ਸੋਲਡ-ਡੀਵਾਇਸ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados do SolidDevice
+ Name[pt_BR]=Mecanismo de Dados SolidDevice
+ Name[sr]=Мотор Солида
+@@ -31,6 +33,7 @@
+ Comment[ne]=प्लासमोइड्सका लागि ठोस यन्त्र डेटा
+ Comment[nl]=SolidDevice-gegevens voor Plasmoids
+ Comment[nn]=SolidDevice-data for plasmoidar
++Comment[pa]=ਪਲਾਜਮੋਡੀਸ ਲਈ ਸੋਲਡ-ਡੀਵਾਇਸ ਡਾਟਾ
+ Comment[pt]=Dados do SolidDevice para os Plasmóides
+ Comment[pt_BR]=Dados de SolidDevice para os Plasmoids
+ Comment[sr]=Подаци из Солида за плазмоиде
+@@ -39,7 +42,7 @@
+ Comment[x-test]=xxSolidDevice data for Plasmoidsxx
+ Comment[zh_CN]=Plasmoids 的SolidDevice 数据
+ Comment[zh_TW]=Plasmoids 的 SolidDevice 資料
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=alarmclock
+ X-KDE-Library=plasma_engine_soliddevice
+--- a/plasma/dataengines/time/plasma-engine-time.desktop
++++ b/plasma/dataengines/time/plasma-engine-time.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Time Data Engine
+ Name[ar]=محرك بيانات الوقت
+ Name[be]=Рухавік дадзеных Time
+@@ -20,7 +19,7 @@
+ Name[ne]=समय डेटा इन्जिन
+ Name[nl]=Tijd (gegevensengine)
+ Name[nn]=Tidsdatamotor
+-Name[pa]=ਸਮਾਂ ਡਾਟਾ ਇੰਜਣ
++Name[pa]=ਟਾਈਮ ਡਾਟਾ ਇੰਜਣ
+ Name[pt]=Motor de Dados Horários
+ Name[pt_BR]=Mecanismo de Dados de Tempo
+ Name[sr]=Мотор за датум и време
+@@ -32,6 +31,7 @@
+ Name[zh_TW]=時間資料引擎
+ Comment=Time data for Plasmoids
+ Comment[bg]=Време за Plasmoids
++Comment[ca]=Dades d'hora pels plasmoides
+ Comment[de]=Zeitdaten für Plasmoide
+ Comment[el]=Δεδομένα χρόνου για πλασμοειδή
+ Comment[es]=Datos horarios para los plasmoides
+@@ -58,7 +58,7 @@
+ Comment[x-test]=xxTime data for Plasmoidsxx
+ Comment[zh_CN]=Plasmoids 的时间数据
+ Comment[zh_TW]=電漿時鐘的時間資料
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=alarmclock
+ X-KDE-Library=plasma_engine_time
+--- a/plasma/applets/devicenotifier/devicenotifier.cpp
++++ b/plasma/applets/devicenotifier/devicenotifier.cpp
+@@ -23,7 +23,7 @@
+ #include <QColor>
+ #include <QApplication>
+ 
+-#include <plasma/widgets/hboxlayout.h>
++#include <plasma/layouts/hboxlayout.h>
+ #include <plasma/widgets/label.h>
+ #include <plasma/widgets/widget.h>
+ #include <plasma/widgets/icon.h>
+@@ -43,12 +43,11 @@
+     m_layout = new Plasma::HBoxLayout(this);
+     m_layout->setMargin(0);
+     m_layout->setSpacing(0);
+-    /*m_icon=new Plasma::Icon(KIcon(""),"",this);
+-    m_layout->addItem(m_icon);*/
+     m_label=new Plasma::Label(this);
+     m_label->setText(i18n("Welcome to Device Notifier \n Plug a device to test"));
+-    m_label->setPen(QPen(Qt::white));  
+-    m_layout->addItem(m_label);
++    m_label->setPen(QPen(Qt::white)); 
++
++    setLayout(m_layout);
+ 
+     m_time=5;
+     m_height=150;
+@@ -82,7 +81,6 @@
+     Q_UNUSED(p);
+     Q_UNUSED(contentsRect);
+     kDebug()<<"DeviceNotifier:: geometry "<<geometry().width();
+-    //hide();
+ }
+ 
+ void DeviceNotifier::hideNotifier(QGraphicsItem * item)
+@@ -118,23 +116,22 @@
+ 	QString icon_temp = data["icon"].toString();
+ 
+ 	if (first) {
+-	    origin_size=geometry();
+ 	    first=false;
++	    delete m_label;
+ 	    m_icon=new Plasma::Icon(KIcon(icon_temp),"",this);
+ 	    m_icon->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);
++	    m_label=new Plasma::Label(this);
+ 	}
+ 
+ 	m_icon->setIcon(KIcon(icon_temp));
+-	
+ 	icon = true;
+-	m_layout->removeItem(m_label);
+ 	device_name=i18n("A new device has been detected: \n");
+ 	device_name+=data["text"].toString();
+ 	m_label->setPen(QPen(Qt::white));
+ 	m_label->setText(device_name);
+-	m_layout->addItem(m_icon);
+-	m_layout->addItem(m_label);
+ 
++	m_layout->insertItem(0,m_icon);
++	
+ 	//FIXME Problem with updating layout of applet.Why calling updadeGeometry of the label afeter applet.
+ 	updateGeometry();
+ 	m_label->updateGeometry();
+--- a/plasma/applets/devicenotifier/test-predicate-openinwindow.desktop
++++ b/plasma/applets/devicenotifier/test-predicate-openinwindow.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ X-KDE-Solid-Predicate=[[ StorageVolume.ignored == false AND StorageVolume.usage == 'FileSystem' ] OR [ IS StorageAccess AND StorageDrive.driveType == 'Floppy' ]]
+ Type=Service
+ Actions=open;
+@@ -9,15 +8,19 @@
+ Name=open
+ Name[de]=Öffnen
+ Name[el]=άνοιγμα
++Name[eo]=malfermata
+ Name[ga]=oscail
+ Name[ko]=열기
++Name[nb]=åpne
+ Name[nds]=Opmaken
+ Name[nl]=openen
++Name[pa]=ਖੋਲ੍ਹੋ
+ Name[pt]=abrir
+ Name[pt_BR]=abrir
+ Name[sr]=отворено
+ Name[sr at latin]=otvoreno
+ Name[sv]=öppen
++Name[x-test]=xxopenxx
+ Name[zh_CN]=打开
+ Name[zh_TW]=開啟
+ Exec=dbus-launch dolphin
+--- a/plasma/applets/devicenotifier/devicenotifier.h
++++ b/plasma/applets/devicenotifier/devicenotifier.h
+@@ -63,23 +63,22 @@
+ 
+     private:
+         Plasma::Label * m_label;
+-		Plasma::Icon * m_icon;
++	Plasma::Icon * m_icon;
+         QFont m_font;
+-		QRectF origin_size;
+ 		
+         Plasma::HBoxLayout *m_layout;
+         bool icon;
+-		bool first;
++	bool first;
+ 
+         QTimer *t;
+         Plasma::DataEngine* SolidEngine;
+         QStringList desktop_files;
+         QString m_udi;
+         QString device_name;
+-		int m_pixelSize;
+-		int m_height;
+-		int m_time;
+-		KDialog *m_dialog;
++	int m_pixelSize;
++	int m_height;
++	int m_time;
++	KDialog *m_dialog;
+         /// Designer Config file
+         Ui::solidNotifierConfig ui;
+ 
+--- a/plasma/applets/devicenotifier/plasma-applet-devicenotifier.desktop
++++ b/plasma/applets/devicenotifier/plasma-applet-devicenotifier.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=New Device Notifier
+ Name[ca]=Notificador de dispositiu nou
+ Name[de]=Geräteüberwachung
+ Name[el]=Ειδοποίηση νέας συσκευής
++Name[eo]=Atentigilo pri nova aparato
+ Name[et]=Uue seadme teadustaja
+ Name[ja]=新しいデバイスの通知
+ Name[ko]=새 장치 알림이
+@@ -12,6 +12,7 @@
+ Name[ne]=नयाँ यन्त्र सूचक
+ Name[nl]=Nieuwe apparaatmelding
+ Name[nn]=Varsling om nye einingar
++Name[pa]=ਨਵਾਂ ਜੰਤਰ ਨੋਟੀਫਾਇਰ
+ Name[pt]=Notificação de Dispositivos Novos
+ Name[pt_BR]=Notificador de Novo Dispositivo
+ Name[sr]=Обавештења о новим уређајима
+@@ -32,6 +33,7 @@
+ Comment[ne]=नयाँ यन्त्र सूचक प्लाज्मोइड
+ Comment[nl]=Nieuwe apparaten melden (plasmoid)
+ Comment[nn]=Plasmoide som varslar om nye einingar
++Comment[pa]=ਨਵਾਂ ਜੰਤਰ ਨੋਟੀਫਾਇਰ ਪਲਾਜ਼ਮੋਡ
+ Comment[pt]=Plasmóide de notificação de dispositivos novos
+ Comment[pt_BR]=Plasmoid notificador de novo dispositivo
+ Comment[sr]=Плазмоид за обавештавање о новим уређајима
+@@ -42,7 +44,7 @@
+ Comment[zh_TW]=新增裝置通知器
+ Icon=drive-removable-media-usb-pendrive
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_devicenotifier
+ X-KDE-PluginInfo-Author=The Plasma Team
+--- a/plasma/applets/launcher/url.cpp
++++ b/plasma/applets/launcher/url.cpp
+@@ -30,8 +30,9 @@
+ #include <KSharedConfig>
+ #include <KUrl>
+ 
+-#include <plasma/widgets/boxlayout.h>
++#include <plasma/layouts/boxlayout.h>
+ #include <plasma/widgets/icon.h>
++#include <plasma/containment.h>
+ 
+ Url::Url(QObject *parent, const QVariantList &args)
+     : Plasma::Applet(parent, args),
+@@ -90,6 +91,9 @@
+ void Url::openUrl()
+ {
+     if (m_url.isValid()) {
++        if (containment()) {
++            containment()->emitLaunchActivated();
++        }
+         KRun::runUrl(m_url, m_mimetype, 0);
+     }
+ }
+--- a/plasma/applets/launcher/plasma-applet-url.desktop
++++ b/plasma/applets/launcher/plasma-applet-url.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Button
+ Name[ar]=زر
+ Name[be]=Кнопка
+@@ -7,6 +6,7 @@
+ Name[ca]=Botó
+ Name[de]=Knopf
+ Name[el]=Κουμπί
++Name[eo]=Butono
+ Name[es]=Botón
+ Name[et]=Nupp
+ Name[fa]=بوتان
+@@ -41,6 +41,7 @@
+ Comment[ca]=Un botó per engegar
+ Comment[de]=Ein Start-Knopf
+ Comment[el]=Ένα κουμπί εκκίνησης
++Comment[eo]=Lanĉila butono
+ Comment[es]=Un botón lanzador
+ Comment[et]=Käivitamisnupp
+ Comment[fa]=دکمۀ راه‌اندازی
+@@ -69,7 +70,7 @@
+ Comment[zh_CN]=启动器按钮
+ Comment[zh_TW]=啟動按鍵
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_url
+ X-KDE-PluginInfo-Author=The Plasma Team
+--- a/plasma/applets/lock_logout/lockout.cpp
++++ b/plasma/applets/lock_logout/lockout.cpp
+@@ -23,7 +23,7 @@
+ #include <QColor>
+ #include <QApplication>
+ 
+-#include <plasma/widgets/vboxlayout.h>
++#include <plasma/layouts/vboxlayout.h>
+ #include <plasma/widgets/widget.h>
+ #include <plasma/widgets/icon.h>
+ 
+--- a/plasma/applets/lock_logout/plasma-applet-lockout.desktop
++++ b/plasma/applets/lock_logout/plasma-applet-lockout.desktop
+@@ -1,17 +1,19 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Lock/Logout
+ Name[ca]=Bloqueja/surt
+ Name[de]=Bildschirmsperre und Abmeldung aus KDE
+ Name[el]=Κλείδωμα/αποσύνδεση
++Name[eo]=Ŝloso/adiaŭo
+ Name[et]=Lukustamine/väljalogimine
+ Name[ga]=Glasáil/Logáil Amach
+ Name[ja]=ロック/ログアウト
+ Name[ko]=잠금/로그아웃
++Name[nb]=Lås/Logg ut
+ Name[nds]=Afsluten/Afmellen
+ Name[ne]=ताल्चा लगाउनुहोस्/लगआउट गर्नुहोस्
+ Name[nl]=Vergrendelen/Afmelden
+ Name[nn]=Lås / logg ut
++Name[pa]=ਲਾਕ/ਲਾਗ ਆਉਟ
+ Name[pt]=Bloquear/Sair
+ Name[pt_BR]=Bloquear/Sair
+ Name[sl]=Zaklepanje/odjava
+@@ -23,14 +25,18 @@
+ Name[zh_TW]=鎖定/登出
+ Comment=Let user lock screen or end session
+ Comment[ca]=Permet a l'usuari bloquejar la pantalla o sortir de la sessió
++Comment[de]=Sperrt den Bildschirm oder meldet die KDE-Sitzung ab
+ Comment[el]=Επιτρέπει στο χρήση το κλείδωμα της οθόνης ή το τέλος της συνεδρίας
++Comment[eo]=Permesi al uzanto ŝlosi ekranon aŭ fini seancon
+ Comment[et]=Võimaldab kasutajal ekraani lukustada ning seansi lõpetada
+ Comment[ja]=スクリーンをロックしたりセッションを終了したりします
+ Comment[ko]=세션을 잠그거나 끝내기
++Comment[nb]=Lar brukeren låse skjermen eller avslutte økta
+ Comment[nds]=Afmellen oder den Schirm afsluten
+ Comment[ne]=पर्दा ताल्चा लगाउन वा सत्र अन्त्य गर्न गर्न प्रयोगकर्तालाई दिनुहोस्
+ Comment[nl]=Hiermee kunt u het scherm vergrendelen of de sessie beëindigen
+ Comment[nn]=Lås skjermen eller avslutt økta
++Comment[pa]=ਯੂਜ਼ਰ ਨੂੰ ਸਕਰੀਨ ਲਾਕ ਜਾਂ ਸ਼ੈਸ਼ਨ ਖਤਮ ਕਰਨ ਦਿਓ
+ Comment[pt]=Permitir ao utilizador bloquear o ecrã ou terminar a sessão
+ Comment[pt_BR]=Permite que o usuário bloqueie a tela ou termine a sessão
+ Comment[sr]=Закључавање екрана или завршавање сесије
+@@ -41,7 +47,7 @@
+ Comment[zh_TW]=讓使用者鎖定螢幕或結束工作階段
+ Icon=system-log-out
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_lockout
+ X-KDE-PluginInfo-Author=The Plasma Team
+--- a/plasma/applets/systemtray/systemtray.cpp
++++ b/plasma/applets/systemtray/systemtray.cpp
+@@ -25,11 +25,12 @@
+ 
+ // KDE
+ #include <KWindowSystem>
++#include <QGraphicsView>
+ 
+ SystemTray::SystemTray(QObject *parent, const QVariantList &arguments)
+     : Plasma::Applet(parent, arguments),
+       m_systemTrayWidget(new SystemTrayWidget(0,
+-                  Qt::FramelessWindowHint))
++                  Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint))
+ {
+     connect(m_systemTrayWidget, SIGNAL(sizeChanged()), SLOT(updateLayout()));
+     m_systemTrayWidget->show();
+@@ -57,7 +58,25 @@
+ QVariant SystemTray::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+ {
+     if (change == ItemPositionHasChanged) {
+-        m_systemTrayWidget->move(scenePos().toPoint());
++        //figure out where this applet really is.
++        QPoint realPos(0, 0); //start with a default that's at least visible
++        QGraphicsScene *s=scene();
++        if (s) {
++            QList<QGraphicsView *> viewlist = s->views();
++            foreach (QGraphicsView *v, viewlist) {
++                QRectF r=v->sceneRect();
++                //now find out if this applet is actually on here
++                //I consider it "on here" if our pos is within the rect
++                //but there may be other valid ways to do this
++                if (r.contains(scenePos())) {
++                    kDebug() << "using view" << v;
++                    QPoint p=v->mapFromScene(scenePos());
++                    realPos = v->mapToGlobal(p);
++                    break; //no, I don't care if other views show it
++                }
++            }
++        }
++        m_systemTrayWidget->move(realPos);
+     }
+     return Plasma::Applet::itemChange(change, value);
+ }
+--- a/plasma/applets/systemtray/plasma-applet-systemtray.desktop
++++ b/plasma/applets/systemtray/plasma-applet-systemtray.desktop
+@@ -62,7 +62,7 @@
+ Name[zh_CN]=系统托盘
+ Name[zh_TW]=系統匣
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_systemtray
+ X-KDE-PluginInfo-Author=Alexander Rodin
+--- a/plasma/applets/tasks/tasks.cpp
++++ b/plasma/applets/tasks/tasks.cpp
+@@ -46,8 +46,8 @@
+ #include <taskmanager/taskrmbmenu.h>
+ 
+ // Plasma
+-#include <plasma/widgets/boxlayout.h>
+-#include <plasma/widgets/layoutanimator.h>
++#include <plasma/layouts/boxlayout.h>
++#include <plasma/layouts/layoutanimator.h>
+ 
+ Tasks::Tasks(QObject* parent , const QVariantList &arguments)
+  : Plasma::Applet(parent,arguments)
+@@ -145,6 +145,10 @@
+ 
+ void Tasks::addWindowTask(Task::TaskPtr task)
+ {
++    if (!task->showInTaskbar()) {
++        return;
++    }
++
+     WindowTaskItem *item = new WindowTaskItem(_rootTaskGroup, _rootTaskGroup);
+     item->setWindowTask(task);
+     _windowTaskItems.insert(task,item);
+@@ -154,7 +158,9 @@
+ 
+ void Tasks::removeWindowTask(Task::TaskPtr task)
+ {
+-    removeItemFromRootGroup(_windowTaskItems[task]);
++    if (_windowTaskItems.contains(task)) {
++        removeItemFromRootGroup(_windowTaskItems[task]);
++    }
+ }
+ 
+ 
+@@ -560,7 +566,7 @@
+     _tasks.insert(index, item);
+ 
+     layout()->addItem(item);
+-    layout()->update();
++    layout()->updateGeometry();
+ }
+ 
+ void TaskGroupItem::removeTask(AbstractTaskItem *item)
+@@ -572,7 +578,7 @@
+     }
+ 
+     layout()->removeItem(item);
+-    layout()->update();
++    layout()->updateGeometry();
+ 
+     // if the group is now empty then ask the parent to remove it
+     if (_tasks.count() == 0) {
+--- a/plasma/applets/tasks/plasma-tasks-default.desktop
++++ b/plasma/applets/tasks/plasma-tasks-default.desktop
+@@ -5,6 +5,7 @@
+ Name[ca]=Gestor de tasques
+ Name[de]=Prozessverwaltung
+ Name[el]=Διαχειριστής εργασιών
++Name[eo]=Taskadministrilo
+ Name[et]=Tegumihaldur
+ Name[ga]=Bainisteoir na dTascanna
+ Name[ja]=タスクマネージャ
+@@ -16,6 +17,7 @@
+ Name[ne]=कार्य प्रबन्धक
+ Name[nl]=Takenbeheer
+ Name[nn]=Oppgåvehandsamar
++Name[pa]=ਟਾਸਕ ਮੈਨੇਜਰ
+ Name[pt]=Gestor de Tarefas
+ Name[pt_BR]=Gerenciador de Tarefas
+ Name[sl]=Upravitelj opravil
+@@ -26,7 +28,7 @@
+ Name[zh_CN]=任务管理器
+ Name[zh_TW]=工作管理員
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_tasks
+ X-KDE-PluginInfo-Author=Robert Knight
+--- a/plasma/applets/digital-clock/clock.h
++++ b/plasma/applets/digital-clock/clock.h
+@@ -73,10 +73,12 @@
+         bool m_plainClockFontItalic;
+ 
+         bool m_showDate;
++        bool m_showYear;
+         bool m_showDay;
++        bool m_showTimezone;
+ 
+         void animateUpdate();
+-        int getOffsetForDigit(int digitNumber);
++        int getOffsetForDigit(int digitNumber, int elWidth);
+ 
+         QSize m_defaultElementSize;
+ 
+--- a/plasma/applets/digital-clock/plasma-clock-digital.desktop
++++ b/plasma/applets/digital-clock/plasma-clock-digital.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Digital Clock
+ Name[ca]=Rellotge digital
+ Name[de]=Digitale Uhr
+ Name[el]=Ψηφιακό ρολόι
++Name[eo]=Cifereca horloĝo
+ Name[et]=Digikell
+ Name[ga]=Clog Digiteach
+ Name[ja]=デジタル時計
+@@ -14,6 +14,7 @@
+ Name[ne]=डिजिटल घडी
+ Name[nl]=Digitale klok
+ Name[nn]=Digital klokke
++Name[pa]=ਡਿਜਿਟਲ ਘੜੀ
+ Name[pt]=Relógio Digital
+ Name[pt_BR]=Relógio Digital
+ Name[sl]=Digitalna ura
+@@ -25,8 +26,10 @@
+ Name[zh_TW]=數位時鐘
+ 
+ Comment=An SVG themable digital clock
++Comment[ca]=Un rellotge digital que permet temes SVG
+ Comment[de]=Eine Uhr mit SVG-fähigem Design
+ Comment[el]=Ένα ψηφιακό ρολόι με θέμα SVG
++Comment[eo]=SVG-etosigebla cifereca horloĝo
+ Comment[et]=SVG teemaga digikell
+ Comment[ga]=Clog digiteach le téamaí SVG
+ Comment[ja]=SVG テーマを使ったデジタル時計
+@@ -37,6 +40,7 @@
+ Comment[ne]=एउटा एसभीजी थेमेबल डिजिटल घडी
+ Comment[nl]=Een klok met SVG-themamogelijkheden
+ Comment[nn]=Ei SVG-basert digitalklokke med fleire tema
++Comment[pa]=ਇੱਕ SVG ਥੀਮਯੋਗ ਡਿਜਿਟਲ ਕਲਾਕ
+ Comment[pt]=Um relógio digital com temas em SVG
+ Comment[pt_BR]=Um relógio digital com temas em SVG
+ Comment[sr]=Дигитални часовник са СВГ темама
+@@ -48,7 +52,7 @@
+ 
+ Icon=chronometer
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_dig_clock
+ X-KDE-PluginInfo-Author=Riccardo Iaconelli
+--- a/plasma/applets/digital-clock/clock.cpp
++++ b/plasma/applets/digital-clock/clock.cpp
+@@ -48,20 +48,36 @@
+       m_plainClockFontBold(0),
+       m_plainClockFontItalic(0),
+       m_showDate(0),
++      m_showYear(0),
+       m_showDay(0),
++      m_showTimezone(0),
+       m_dialog(0)
+ {
+     setHasConfigurationInterface(true);
+ 
+     KConfigGroup cg = config();
+     m_timezone = cg.readEntry("timezone", "Local");
++    if (m_timezone != "Local") {
++        m_showTimezone = true;
++    }
+     m_theme = new Plasma::Svg("widgets/digital-clock", this);
+     m_theme->setContentType(Plasma::Svg::ImageSet);
+ 
+-    m_showDate = cg.readEntry("showDate", false);
+-    m_showDay = cg.readEntry("showDay", false);
++    if (formFactor() == Plasma::Planar ||
++        formFactor() == Plasma::MediaCenter) {
++        m_showDate = cg.readEntry("showDate", false);
++        m_showYear = cg.readEntry("showYear", false);
++    } else {
++        m_showDate = cg.readEntry("showDate", false);
++        m_showYear = cg.readEntry("showYear", false);
++    }
++    m_showDay = cg.readEntry("showDay", true);
++
++    // Default to show the timezone if it's not "Local"
++    //m_showTimezone = cg.readEntry("showTimezone", m_showTimezone);
++    m_showTimezone = false; // FIXME: Remove
+ 
+-    if ( cg.readEntry("plainClock", true) ) {
++    if (cg.readEntry("plainClock", true)) {
+         m_clockStyle = PlainClock;
+     } else {
+         m_clockStyle = FancyClock;
+@@ -80,7 +96,7 @@
+     m_horizontalSpacing = 2;
+     m_verticalSpacing = 1;
+ 
+-    // take the size of the top half of the '0' number 
++    // take the size of the top half of the '0' number
+     // to calculate the aspect ratio when drawing
+     m_defaultElementSize = m_theme->elementSize("e0-p1");
+ 
+@@ -102,9 +118,9 @@
+ {
+     if (formFactor() == Plasma::Planar ||
+         formFactor() == Plasma::MediaCenter) {
+-        m_sizeHint = QSize(170, 72);
++        m_sizeHint = QSize(200, 72);
+     } else {
+-        m_sizeHint = QSize(100, 48);
++        m_sizeHint = QSize(144, 48);
+     }
+     updateGeometry();
+ }
+@@ -117,7 +133,6 @@
+ 
+     if (m_time.minute() == m_lastTimeSeen.minute()) {
+         // avoid unnecessary repaints
+-        // kDebug() << "avoided unecessary update!";
+         return;
+     }
+ 
+@@ -134,13 +149,16 @@
+ 
+         ui.setupUi(m_dialog->mainWidget());
+         ui.showDate->setChecked(m_showDate);
++        ui.showYear->setChecked(m_showYear);
+         ui.showDay->setChecked(m_showDay);
++        ui.showTimezone->setChecked(m_showTimezone);
+         ui.plainClockCheck->setChecked(PlainClock == m_clockStyle);
+         ui.plainClockGroup->setEnabled(PlainClock == m_clockStyle);
+         ui.plainClockFontBold->setChecked(m_plainClockFontBold);
+         ui.plainClockFontItalic->setChecked(m_plainClockFontItalic);
+         ui.plainClockFont->setCurrentFont(m_plainClockFont);
+         ui.plainClockColor->setColor(m_plainClockColor);
++        ui.timeZones->setSelected(m_timezone, true);
+ 
+         m_dialog->setButtons( KDialog::Ok | KDialog::Cancel | KDialog::Apply );
+ 
+@@ -155,7 +173,7 @@
+ void Clock::configAccepted()
+ {
+     KConfigGroup cg = config();
+-    QGraphicsItem::update();
++    //QGraphicsItem::update();
+     QStringList tzs = ui.timeZones->selection();
+ 
+     if (tzs.count() > 0) {
+@@ -163,25 +181,36 @@
+         QString tz = tzs.at(0);
+         if (tz != m_timezone) {
+             dataEngine("time")->disconnectSource(m_timezone, this);
++            // We have changed the timezone, show that in the clock, but only if this
++            // setting hasn't been changed.
++            ui.showTimezone->setCheckState(Qt::Checked);
+             m_timezone = tz;
+-            dataEngine("time")->connectSource(m_timezone, this);
++            dataEngine("time")->connectSource(m_timezone, this, 6000, Plasma::AlignToMinute);
+         }
+     } else if (m_timezone != "Local") {
+         dataEngine("time")->disconnectSource(m_timezone, this);
+         m_timezone = "Local";
+-        dataEngine("time")->connectSource(m_timezone, this);
++        dataEngine("time")->connectSource(m_timezone, this, 6000, Plasma::AlignToMinute);
++    } else {
++        kDebug() << "Timezone unknown: " << tzs;
+     }
+ 
+     m_showDate = ui.showDate->checkState() == Qt::Checked;
++    cg.writeEntry("showDate", m_showDate);
++    m_showYear = ui.showYear->checkState() == Qt::Checked;
++    cg.writeEntry("showYear", m_showYear);
+     m_showDay = ui.showDay->checkState() == Qt::Checked;
+     cg.writeEntry("showDay", m_showDay);
+ 
++    if (m_showTimezone != (ui.showTimezone->checkState() == Qt::Checked)) {
++        cg.writeEntry("showTimezone", m_showTimezone);
++    }
++    m_showTimezone = ui.showTimezone->checkState() == Qt::Checked;
++
+     if ( ui.plainClockCheck->checkState() == Qt::Checked ) {
+         m_clockStyle = PlainClock;
+-        kDebug() << "PlainClock";
+     } else {
+         m_clockStyle = FancyClock;
+-        kDebug() << "FancyClock";
+     }
+     m_plainClockFont = ui.plainClockFont->currentFont();
+     m_plainClockColor = ui.plainClockColor->color();
+@@ -197,7 +226,6 @@
+     cg.writeEntry("PlainClockFontBold", m_plainClockFontBold);
+     cg.writeEntry("PlainClockFontItalic", m_plainClockFontItalic);
+ 
+-    dataEngine("time")->connectSource(m_timezone, this);
+     update();
+     cg.config()->sync();
+ }
+@@ -208,7 +236,6 @@
+ 
+ void Clock::animateUpdate()
+ {
+-//     kDebug() << "animateUpdate() called";
+     QTimeLine *tl = new QTimeLine(100, this);
+     tl->setFrameRange(0, 4);
+ //     tl->setCurveShape(QTimeLine::EaseInCurve),
+@@ -216,7 +243,7 @@
+     tl->start();
+ }
+ 
+-void Clock::animationSlot(int step)
++void Clock::animationSlot(const int step)
+ {
+     if (step == 4) { // The animation is stopped
+         m_animating = false;
+@@ -229,26 +256,25 @@
+     }
+ }
+ 
+-int Clock::getOffsetForDigit(int digitNumber)
++int Clock::getOffsetForDigit(const int digitNumber, const int elWidth)
+ {
+     int offset = 0;
+-    int margin = 4;
+-    int elWidth = qRound((contentSize().width() - m_horizontalSpacing - margin*2) / 4.0);
++    const int margin = 4;
+ 
+-    offset += elWidth*digitNumber; // Add space taken by digit
+-    offset += m_horizontalSpacing*digitNumber; // Add space taken by spaces infra-numbers
++    offset += (elWidth+m_horizontalSpacing)*digitNumber; // Add space taken by digit
++    offset += (int)((contentSize().width()-(elWidth*4+m_horizontalSpacing*6-margin*2))/2); // Align to center
+ 
+     if (digitNumber >= 2) { // There's a gap between hours and minutes...
+         offset += m_horizontalSpacing*3;
+     }
+ 
+-//     kDebug() << offset << digitNumber << elWidth;
+     return offset;
+ }
+ 
+ void Clock::paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option, const QRect &contentsRect)
+ {
+     Q_UNUSED(option);
++    //TODO Draw grey rectangle around numbers, as in Nuno's idea and in his mock. Should be in the svg.
+ 
+     if ( !m_time.isValid() || !m_date.isValid() ) {
+         return;
+@@ -264,58 +290,74 @@
+ 
+     const qreal margin = 4;
+ 
+-    if ( m_clockStyle == PlainClock ) {
+-        p->setPen(QPen(m_plainClockColor));
+-
+-        QRect timeRect;
+-
+-        // Paint the date, conditionally, and let us know afterwards how much
+-        // space is left for painting the time on top of it.
+-        if ( m_showDate ) {
+-            QString dateString = day + ' ' + month + ' ' + year;
++    p->setPen(QPen(m_plainClockColor));
++    p->setRenderHint(QPainter::SmoothPixmapTransform);
++    p->setRenderHint(QPainter::Antialiasing);
++
++    QRect timeRect;
++
++    // Paint the date, conditionally, and let us know afterwards how much
++    // space is left for painting the time on top of it.
++    if (m_showDate || m_showTimezone) {
++        QString dateString;
++        if (m_showDate) {
++            dateString = day + ' ' + month + ' ';
+             if (m_showDay) {
+-                QString weekday = QDate::longDayName(QDate::currentDate().dayOfWeek());
++                QString weekday = QDate::longDayName(m_date.dayOfWeek()); // FIXME: Respect timezone settings
+                 dateString = weekday + ", "  + dateString;
+             }
+-
+-            if (m_timezone != "Local") {
+-                dateString += "\n" + m_timezone;
++            if (m_showYear) {
++                dateString += year + ' ';
+             }
+-            // Check sizes
+-            p->setFont(KGlobalSettings::smallestReadableFont());
+-            QRect dateRect = p->boundingRect(contentsRect, QPainter::TextAntialiasing, dateString);
+-
+-            p->drawText( QRectF(margin,
+-                                contentsRect.bottom()-dateRect.height()+margin,
+-                                contentsRect.right()-margin,
+-                                contentsRect.bottom()-margin) ,
+-                        dateString,
+-                        QTextOption(Qt::AlignHCenter)
+-                    );
+-            // Now find out how much space is left for painting the time
+-            timeRect = QRect(   contentsRect.left(),
+-                                contentsRect.top(),
+-                                (int)(contentsRect.width()-margin),
+-                                (int)(contentsRect.height()-margin-dateRect.height()+10));
+-        } else {
+-            timeRect = QRect(   contentsRect.left(),
+-                                (int)(contentsRect.top()+margin),
+-                                (int)(contentsRect.width()-margin),
+-                                (int)(contentsRect.height()-margin));
++        }
++        if (m_showTimezone) {
++            dateString += m_timezone;
++            dateString.replace("_", " ");
++        }
++
++        // Check sizes
++        p->setFont(KGlobalSettings::smallestReadableFont());
++        QRect dateRect = p->boundingRect(contentsRect,
++                    QPainter::TextAntialiasing,
++                    dateString);
++        int subtitleHeight = dateRect.height();
++        if (dateRect.width() > contentsRect.width()) {
++            subtitleHeight = dateRect.height()*2;
+         }
+ 
++        p->drawText( QRectF(0,
++                            contentsRect.bottom()-subtitleHeight,
++                            contentsRect.right(),
++                            contentsRect.bottom()) ,
++                    dateString,
++                    QTextOption(Qt::AlignHCenter)
++                );
++
++        // Now find out how much space is left for painting the time
++        timeRect = QRect(   contentsRect.left(),
++                            contentsRect.top(),
++                            (int)(contentsRect.width()),
++                            (int)(contentsRect.height()-subtitleHeight));
++    } else {
++        timeRect = QRect(   contentsRect.left(),
++                            (int)(contentsRect.top()),
++                            (int)(contentsRect.width()),
++                            (int)(contentsRect.height()));
++    }
++
++    if ( m_clockStyle == PlainClock ) {
+         QString timeString = hours + ":" + minutes;
+ 
+         m_plainClockFont.setBold(m_plainClockFontBold);
+         m_plainClockFont.setItalic(m_plainClockFontItalic);
+ 
+         // Choose a relatively big font size to start with and decrease it from there to fit.
+-        m_plainClockFont.setPointSize((int)(contentsRect.height()/1.5));
++        m_plainClockFont.setPointSize(qMax((int)(contentsRect.height()/1.5), 1));
+         p->setFont(m_plainClockFont);
+         QRect tmpTimeRect = p->boundingRect(timeRect, QPainter::TextAntialiasing, timeString);
+ 
+-        while ( tmpTimeRect.width() > timeRect.width() || tmpTimeRect.height() > timeRect.height() ) {
+-            m_plainClockFont.setPointSize(m_plainClockFont.pointSize()-1);
++        while ((tmpTimeRect.width() > timeRect.width() || tmpTimeRect.height() > timeRect.height()) && m_plainClockFont.pointSize() > 1) {
++            m_plainClockFont.setPointSize(m_plainClockFont.pointSize() - 1);
+             p->setFont(m_plainClockFont);
+             tmpTimeRect = p->boundingRect(timeRect, QPainter::TextAntialiasing, timeString);
+         }
+@@ -327,8 +369,32 @@
+         return;
+     }
+ 
+-    int elWidth = qRound((contentsRect.width() - m_horizontalSpacing - margin*2) / 4.0);
+-    int elHeight = qRound((contentsRect.height() - m_verticalSpacing - margin*2) / 2.0);
++    // Find the largest possible size fitting in the remaining space
++    // Aspect ratio for the whole digiclock
++
++    int maxHeight = qMin((int)(contentSize().height()), timeRect.height());
++    int maxWidth = qMin((int)(contentSize().width()-(margin*2)), (int)(timeRect.width()-(margin*2)));
++
++    if (maxHeight*3 > maxWidth) {
++        maxHeight = (int)(maxWidth/3);
++    } else if (maxHeight > maxWidth/3){
++        maxWidth = maxHeight*3;
++    }
++
++    timeRect.setWidth(maxWidth);
++    timeRect.setHeight(maxHeight);
++
++    while (timeRect.width() > maxWidth || timeRect.width()/3 > maxHeight) {
++        timeRect.setHeight(timeRect.height()-1);
++        timeRect.setWidth((int)(((timeRect.height()-m_verticalSpacing)/2)*1.4*4+(6*m_horizontalSpacing)));
++    } // small enough now.
++
++    m_theme->resize(timeRect.width(), timeRect.height());
++
++    int elHeight = qRound((timeRect.height() - m_verticalSpacing - margin*2) / 2.0);
++    int elWidth = qRound(elHeight*1.4); // Needs to be in line with the graphics
++
++    m_horizontalSpacing = qMin(4, qRound(elWidth/10));
+ 
+     // enforce natural aspect ratio for elements
+     QSize elSize = m_defaultElementSize;
+@@ -337,7 +403,7 @@
+     elHeight = elSize.height();
+ 
+     // set left offset of clock elements so as to horizontally center the time display
+-    int leftOffset = getOffsetForDigit(0);
++    int leftOffset = getOffsetForDigit(0, elWidth);
+     int upperElementTop = (int)margin;
+     int bottomElementTop = upperElementTop + elHeight + m_verticalSpacing;
+ 
+@@ -346,24 +412,24 @@
+     m_theme->paint(p, QRectF(leftOffset, bottomElementTop, elWidth, elHeight), 'e'+hours[0]+"-p2");
+ 
+     // 1-hour-digit
+-    leftOffset = getOffsetForDigit(1);
++    leftOffset = getOffsetForDigit(1, elWidth);
+     m_theme->paint(p, QRectF(leftOffset, upperElementTop, elWidth, elHeight), 'e'+hours[1]+"-p1");
+     m_theme->paint(p, QRectF(leftOffset, bottomElementTop, elWidth, elHeight), 'e'+hours[1]+"-p2");
+ 
+     // 10-minutes-digit
+-    leftOffset = getOffsetForDigit(2);
++    leftOffset = getOffsetForDigit(2, elWidth);
+     m_theme->paint(p, QRectF(leftOffset, upperElementTop, elWidth, elHeight), 'e'+minutes[0]+"-p1");
+     m_theme->paint(p, QRectF(leftOffset, bottomElementTop, elWidth, elHeight), 'e'+minutes[0]+"-p2");
+ 
+     // 1-minute-digit
+-    leftOffset = getOffsetForDigit(3);
++    leftOffset = getOffsetForDigit(3, elWidth);
+     m_theme->paint(p, QRectF(leftOffset, upperElementTop, elWidth, elHeight), 'e'+minutes[1]+"-p1");
+     m_theme->paint(p, QRectF(leftOffset, bottomElementTop, elWidth, elHeight), 'e'+minutes[1]+"-p2");
+ 
+     // Make sure we don't get artifacts if an update gets called while animating
+     if (m_animating) {
+         // If we are aninmating, this digit is for sure.
+-        leftOffset = getOffsetForDigit(3);
++        leftOffset = getOffsetForDigit(3, elWidth);
+         Number oldMinutes = (QChar) minutes[1]; // 1-minutes digit
+         --oldMinutes; // This is the digit which should be painted under the new one
+         QString element;
+@@ -437,25 +503,6 @@
+             }
+         }
+     }
+-
+-    // Only show the date when there's enough room
+-    // We might want this configurable at some point.
+-    if ( m_showDate ) {
+-        // FIXME: this depends on the backgroundcolor of the theme, we'd want a matching contrast
+-        p->setPen(m_plainClockColor);
+-
+-        QString dateString = day + ' ' + month + ' ' + year;
+-        if ( m_timezone != "Local" ) {
+-            dateString += " (" + m_timezone + ")";
+-        }
+-        p->drawText( QRectF(margin,
+-                            bottomElementTop+elHeight,
+-                            contentsRect.right()-margin,
+-                            contentsRect.bottom()) ,
+-                    dateString,
+-                    QTextOption(Qt::AlignHCenter)
+-                );
+-    }
+ }
+ 
+ #include "clock.moc"
+--- a/plasma/applets/digital-clock/clockConfig.ui
++++ b/plasma/applets/digital-clock/clockConfig.ui
+@@ -5,18 +5,18 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>421</width>
+-    <height>373</height>
++    <width>438</width>
++    <height>335</height>
+    </rect>
+   </property>
+   <property name="minimumSize" >
+    <size>
+-    <width>350</width>
++    <width>400</width>
+     <height>200</height>
+    </size>
+   </property>
+-  <layout class="QGridLayout" >
+-   <item row="0" column="0" >
++  <layout class="QHBoxLayout" >
++   <item>
+     <widget class="QTabWidget" name="ClockTab" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+@@ -37,32 +37,69 @@
+       <attribute name="title" >
+        <string>Appearance</string>
+       </attribute>
+-      <layout class="QGridLayout" >
+-       <item row="0" column="0" >
++      <layout class="QVBoxLayout" >
++       <item>
+         <widget class="QCheckBox" name="showDate" >
+          <property name="text" >
+           <string>Show &amp;date</string>
+          </property>
+         </widget>
+        </item>
+-       <item row="0" column="1" >
+-        <widget class="QCheckBox" name="showDay" >
+-         <property name="enabled" >
+-          <bool>false</bool>
+-         </property>
++       <item>
++        <layout class="QHBoxLayout" >
++         <item>
++          <spacer>
++           <property name="orientation" >
++            <enum>Qt::Horizontal</enum>
++           </property>
++           <property name="sizeType" >
++            <enum>QSizePolicy::Fixed</enum>
++           </property>
++           <property name="sizeHint" >
++            <size>
++             <width>60</width>
++             <height>16</height>
++            </size>
++           </property>
++          </spacer>
++         </item>
++         <item>
++          <widget class="QCheckBox" name="showDay" >
++           <property name="enabled" >
++            <bool>false</bool>
++           </property>
++           <property name="text" >
++            <string>Show day of the &amp;week</string>
++           </property>
++          </widget>
++         </item>
++         <item>
++          <widget class="QCheckBox" name="showYear" >
++           <property name="enabled" >
++            <bool>false</bool>
++           </property>
++           <property name="text" >
++            <string>Show &amp;year</string>
++           </property>
++          </widget>
++         </item>
++        </layout>
++       </item>
++       <item>
++        <widget class="QCheckBox" name="showTimezone" >
+          <property name="text" >
+-          <string>Show day of the &amp;week</string>
++          <string>Show &amp;timezone</string>
+          </property>
+         </widget>
+        </item>
+-       <item row="1" column="0" colspan="2" >
++       <item>
+         <widget class="QCheckBox" name="plainClockCheck" >
+          <property name="text" >
+           <string>Use &amp;plain clock</string>
+          </property>
+         </widget>
+        </item>
+-       <item row="2" column="0" colspan="2" >
++       <item>
+         <widget class="QGroupBox" name="plainClockGroup" >
+          <property name="enabled" >
+           <bool>false</bool>
+@@ -209,5 +246,21 @@
+     </hint>
+    </hints>
+   </connection>
++  <connection>
++   <sender>showDate</sender>
++   <signal>toggled(bool)</signal>
++   <receiver>showYear</receiver>
++   <slot>setEnabled(bool)</slot>
++   <hints>
++    <hint type="sourcelabel" >
++     <x>78</x>
++     <y>53</y>
++    </hint>
++    <hint type="destinationlabel" >
++     <x>369</x>
++     <y>53</y>
++    </hint>
++   </hints>
++  </connection>
+  </connections>
+ </ui>
+--- /dev/null
++++ b/plasma/applets/battery/battery-oxygen.svg
+@@ -0,0 +1,992 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Created with Inkscape (http://www.inkscape.org/) -->
++<svg
++   xmlns:svg="http://www.w3.org/2000/svg"
++   xmlns="http://www.w3.org/2000/svg"
++   xmlns:xlink="http://www.w3.org/1999/xlink"
++   version="1.0"
++   width="127.99588"
++   height="127.99588"
++   id="svg1966">
++  <defs
++     id="defs1968">
++    <linearGradient
++       id="linearGradient3289">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop3291" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="1"
++         id="stop3294" />
++    </linearGradient>
++    <radialGradient
++       cx="538.77338"
++       cy="651.10352"
++       r="126.0234"
++       id="XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="translate(-484,-674)">
++      <stop
++         style="stop-color:#cceaac;stop-opacity:1"
++         offset="0"
++         id="stop137" />
++      <stop
++         style="stop-color:#3ba42a;stop-opacity:1"
++         offset="0.53930002"
++         id="stop139" />
++      <stop
++         style="stop-color:#91e851;stop-opacity:1"
++         offset="1"
++         id="stop141" />
++    </radialGradient>
++    <linearGradient
++       id="linearGradient3291">
++      <stop
++         style="stop-color:#000000;stop-opacity:1"
++         offset="0"
++         id="stop3293" />
++      <stop
++         style="stop-color:#000000;stop-opacity:0"
++         offset="1"
++         id="stop3295" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient2858">
++      <stop
++         style="stop-color:#303030;stop-opacity:1"
++         offset="0"
++         id="stop2860" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0.59215689"
++         offset="0.05769231"
++         id="stop2863" />
++      <stop
++         style="stop-color:#4b4b4b;stop-opacity:0.18431373"
++         offset="0.11538462"
++         id="stop2868" />
++      <stop
++         style="stop-color:#000000;stop-opacity:0"
++         offset="0.69156802"
++         id="stop2866" />
++      <stop
++         style="stop-color:#000000;stop-opacity:0.09747292"
++         offset="0.90384614"
++         id="stop2870" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0.54509807"
++         offset="0.95192307"
++         id="stop2867" />
++      <stop
++         style="stop-color:#5d5d5d;stop-opacity:1"
++         offset="1"
++         id="stop2862" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient2874">
++      <stop
++         style="stop-color:#414141;stop-opacity:1"
++         offset="0"
++         id="stop2876" />
++      <stop
++         style="stop-color:#414141;stop-opacity:0"
++         offset="1"
++         id="stop2878" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient2916">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop2918" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0"
++         offset="1"
++         id="stop2920" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient3041">
++      <stop
++         style="stop-color:#303030;stop-opacity:1"
++         offset="0"
++         id="stop3043" />
++      <stop
++         style="stop-color:#555555;stop-opacity:1"
++         offset="0.11538462"
++         id="stop3045" />
++      <stop
++         style="stop-color:#3b3b3b;stop-opacity:1"
++         offset="0.26590282"
++         id="stop3053" />
++      <stop
++         style="stop-color:#646464;stop-opacity:1"
++         offset="0.28553563"
++         id="stop3057" />
++      <stop
++         style="stop-color:#7b7b7b;stop-opacity:1"
++         offset="0.43724003"
++         id="stop3055" />
++      <stop
++         style="stop-color:#888888;stop-opacity:1"
++         offset="0.69156802"
++         id="stop3047" />
++      <stop
++         style="stop-color:#747474;stop-opacity:1"
++         offset="0.90384614"
++         id="stop3049" />
++      <stop
++         style="stop-color:#5d5d5d;stop-opacity:1"
++         offset="1"
++         id="stop3051" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient3082">
++      <stop
++         style="stop-color:#000000;stop-opacity:1"
++         offset="0"
++         id="stop3084" />
++      <stop
++         style="stop-color:#000000;stop-opacity:0"
++         offset="1"
++         id="stop3086" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient3140">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop3142" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0"
++         offset="1"
++         id="stop3144" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient2895">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop2897" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0"
++         offset="1"
++         id="stop2899" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient3822">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop3824" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0"
++         offset="1"
++         id="stop3826" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient3832">
++      <stop
++         style="stop-color:#ffffff;stop-opacity:1"
++         offset="0"
++         id="stop3834" />
++      <stop
++         style="stop-color:#ffffff;stop-opacity:0"
++         offset="1"
++         id="stop3836" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient4882">
++      <stop
++         style="stop-color:#cf4913;stop-opacity:1"
++         offset="0"
++         id="stop4884" />
++      <stop
++         style="stop-color:#cf4913;stop-opacity:0"
++         offset="1"
++         id="stop4886" />
++    </linearGradient>
++    <linearGradient
++       id="linearGradient4870">
++      <stop
++         style="stop-color:#ffdd00;stop-opacity:1"
++         offset="0"
++         id="stop4872" />
++      <stop
++         style="stop-color:#ffdd00;stop-opacity:0"
++         offset="1"
++         id="stop4874" />
++    </linearGradient>
++    <linearGradient
++       x1="112.96474"
++       y1="13.498544"
++       x2="102.22598"
++       y2="68.116089"
++       id="linearGradient2711"
++       xlink:href="#linearGradient4882"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.108772,0,0,1.108772,-106.1808,-37.92178)" />
++    <radialGradient
++       cx="96.8349"
++       cy="78.852486"
++       r="26.26219"
++       fx="96.8349"
++       fy="78.852486"
++       id="radialGradient2714"
++       xlink:href="#linearGradient4870"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.108772,0,0,2.02823,-106.1808,-104.056)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient3123"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <linearGradient
++       x1="1.4227993"
++       y1="1.022699"
++       x2="5.5960732"
++       y2="1.022699"
++       id="linearGradient2215"
++       xlink:href="#linearGradient3041"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(4.861062,0,0,5.383735,11.29209,-18.0711)" />
++    <linearGradient
++       x1="6.4523492"
++       y1="-2.8016193"
++       x2="5.5593128"
++       y2="1.0485095"
++       id="linearGradient2212"
++       xlink:href="#linearGradient3082"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(4.861062,0,0,5.383735,11.29209,-18.0711)" />
++    <linearGradient
++       x1="11.434079"
++       y1="1.0289581"
++       x2="11.174653"
++       y2="2.2792649"
++       id="linearGradient2209"
++       xlink:href="#linearGradient3822"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(5.480952,0,0,5.820575,-30.55542,-25.48731)" />
++    <linearGradient
++       x1="5.6568542"
++       y1="6.0850325"
++       x2="5.6568542"
++       y2="1.4639859"
++       id="linearGradient2206"
++       xlink:href="#linearGradient3082"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(4.861062,0,0,5.383735,11.29209,-18.0711)" />
++    <linearGradient
++       x1="18.01074"
++       y1="65.760353"
++       x2="72.498932"
++       y2="65.760353"
++       id="linearGradient2203"
++       xlink:href="#linearGradient2858"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.017716,0,0,0.960169,-17.74614,-18.81356)" />
++    <linearGradient
++       x1="69.07917"
++       y1="1.0128831"
++       x2="63.575024"
++       y2="39.769947"
++       id="linearGradient2200"
++       xlink:href="#linearGradient2874"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.003437,0,0,0.96108,-16.62023,-18.82388)" />
++    <linearGradient
++       x1="63.948738"
++       y1="-163.6496"
++       x2="43.918915"
++       y2="54.970299"
++       id="linearGradient2194"
++       xlink:href="#linearGradient2874"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.016892,0,0,0.839558,-17.73117,-106.1082)" />
++    <linearGradient
++       x1="43.918915"
++       y1="7.8450942"
++       x2="43.918915"
++       y2="15.315003"
++       id="linearGradient2191"
++       xlink:href="#linearGradient2874"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.018187,0,0,0.864614,-17.75454,-106.3913)" />
++    <radialGradient
++       cx="63.912209"
++       cy="115.70919"
++       r="63.912209"
++       fx="66.022942"
++       fy="115.70919"
++       id="radialGradient3297"
++       xlink:href="#linearGradient3291"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)" />
++    <radialGradient
++       cx="12.308078"
++       cy="3.0406888"
++       r="2.9831069"
++       fx="13.944797"
++       fy="3.0406888"
++       id="radialGradient3838"
++       xlink:href="#linearGradient3832"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1,0,0,2.962963e-2,0,2.950605)" />
++    <radialGradient
++       cx="12.308078"
++       cy="3.0406888"
++       r="2.9831069"
++       fx="13.944797"
++       fy="3.0406888"
++       id="radialGradient3842"
++       xlink:href="#linearGradient3832"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1,0,0,2.962963e-2,0,2.950605)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient5700"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient5702"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.7408153e-2,-8.113798e-2,-9.3116297,-18.63497,67.499937)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient5704"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient5706"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient5708"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <linearGradient
++       x1="38.875084"
++       y1="67.528122"
++       x2="90.409752"
++       y2="67.528122"
++       id="linearGradient6228"
++       xlink:href="#linearGradient2916"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(0.511504,0,0,1.80649,68.030435,-6.0981568)" />
++    <linearGradient
++       x1="38.875084"
++       y1="67.528122"
++       x2="90.409752"
++       y2="67.528122"
++       id="linearGradient6233"
++       xlink:href="#linearGradient2916"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(0.511504,0,0,0.96108,67.773305,4.8320565)" />
++    <linearGradient
++       x1="11.543377"
++       y1="3.4375"
++       x2="10.88339"
++       y2="5.9006019"
++       id="linearGradient6238"
++       xlink:href="#linearGradient2895"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(5.467529,0,0,5.820575,24.290213,-2.0656323)" />
++    <linearGradient
++       x1="38.875084"
++       y1="67.528122"
++       x2="90.409752"
++       y2="67.528122"
++       id="linearGradient6243"
++       xlink:href="#linearGradient2916"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(0.511504,0,0,0.77135,67.773305,6.6291413)" />
++    <radialGradient
++       cx="68.000046"
++       cy="-117.34602"
++       r="27.999956"
++       fx="68.000046"
++       fy="-117.34602"
++       id="radialGradient9168"
++       xlink:href="#linearGradient3140"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(0.990365,0,0,1.664158,16.251985,75.514833)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient10241"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient10243"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient10245"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.7567263e-2,-8.113798e-2,-9.3512354,-18.63497,67.294592)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient10881"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient10883"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="63.912209"
++       cy="115.70919"
++       r="63.912209"
++       fx="66.022942"
++       fy="115.70919"
++       id="radialGradient10885"
++       xlink:href="#linearGradient3291"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)" />
++    <linearGradient
++       x1="69.07917"
++       y1="1.0128831"
++       x2="63.575024"
++       y2="39.769947"
++       id="linearGradient10897"
++       xlink:href="#linearGradient2874"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.003437,0,0,0.96108,-16.62023,-18.82388)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient11544"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-18.63497,67.44112)" />
++    <radialGradient
++       cx="-2.1224115"
++       cy="14.219431"
++       r="20.361954"
++       fx="-2.1224115"
++       fy="14.219431"
++       id="radialGradient11891"
++       xlink:href="#XMLID_15_"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(-4.104268,3.657634e-2,-8.113798e-2,-9.104575,-3.5962049,71.430875)" />
++    <linearGradient
++       x1="18.01074"
++       y1="65.760353"
++       x2="72.498932"
++       y2="65.760353"
++       id="linearGradient3476"
++       xlink:href="#linearGradient3289"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.017716,0,0,0.960169,-17.748507,-18.818874)" />
++    <linearGradient
++       x1="18.01074"
++       y1="65.760353"
++       x2="72.498932"
++       y2="65.760353"
++       id="linearGradient2658"
++       xlink:href="#linearGradient3289"
++       gradientUnits="userSpaceOnUse"
++       gradientTransform="matrix(1.017716,0,0,0.960169,37.524222,4.4538538)" />
++  </defs>
++  <g
++     style="display:inline"
++     id="BlackLayer">
++    <rect
++       width="197.73506"
++       height="161.99174"
++       x="-41.678482"
++       y="-20.024384"
++       style="opacity:1;fill:#000000;fill-opacity:1"
++       id="rect8192" />
++  </g>
++  <path
++     d="M 127.82442 115.70919 A 63.912209 12.641975 0 1 1  0,115.70919 A 63.912209 12.641975 0 1 1  127.82442 115.70919 z"
++     transform="matrix(0.568584,0,0,0.416904,45.697996,75.737286)"
++     style="opacity:0.38139535;fill:url(#radialGradient3297);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++     id="Shadow" />
++  <g
++     style="display:inline"
++     id="BatteryLayer">
++    <g
++       transform="translate(55.17649,23.175806)"
++       style="display:inline"
++       id="Battery">
++      <rect
++         width="128.30774"
++         height="128.56487"
++         x="-55.282894"
++         y="-23.196409"
++         style="opacity:1;fill:none;fill-opacity:1"
++         id="rect9692" />
++      <path
++         d="M 18.408864,-18.071072 L 38.36072,-18.071072 C 39.610389,-18.071072 40.616433,-16.956851 40.616433,-15.572811 L 40.616433,-7.280402 L 16.153145,-7.280402 L 16.153145,-15.572811 C 16.153145,-16.956851 17.159193,-18.071072 18.408864,-18.071072 z "
++         style="fill:url(#linearGradient2215);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3181" />
++      <path
++         d="M 18.408864,-18.071072 L 38.36072,-18.071072 C 39.610389,-18.071072 40.616433,-16.956851 40.616433,-15.572811 L 40.616433,-12.426204 L 16.153145,-12.426204 L 16.153145,-15.572811 C 16.153145,-16.956851 17.159193,-18.071072 18.408864,-18.071072 z "
++         style="fill:url(#linearGradient2212);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3183" />
++      <path
++         d="M 19.923689,-17.252554 L 37.744717,-17.252554 C 38.860932,-17.252554 39.759526,-16.298268 39.759526,-15.112894 L 39.759526,-13.912123 C 24.203241,-10.238421 35.063565,-13.654888 17.908878,-13.912123 L 17.908878,-15.112894 C 17.908878,-16.298268 18.807482,-17.252554 19.923689,-17.252554 z "
++         style="fill:url(#linearGradient2209);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3185" />
++      <path
++         d="M 40.616433,-10.189082 L 40.616433,-7.328485 L 16.153145,-7.328485 L 16.153145,-10.189082 L 40.616433,-10.189082 z "
++         style="fill:url(#linearGradient2206);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3187" />
++      <rect
++         width="55.453815"
++         height="104.63548"
++         rx="2.1937749"
++         ry="1.9589152"
++         x="0.58381283"
++         y="-7.9904442"
++         style="fill:url(#linearGradient2203);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect3189" />
++      <rect
++         width="54.675182"
++         height="37.029793"
++         rx="2.2019448"
++         ry="1.9633386"
++         x="1.4523507"
++         y="-7.9904442"
++         style="opacity:0.51000001;fill:url(#linearGradient2200);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect3191" />
++      <rect
++         width="55.408527"
++         height="59.717663"
++         rx="2.0819607"
++         ry="1.924963"
++         x="0.58381283"
++         y="-96.645035"
++         transform="scale(1,-1)"
++         style="opacity:0.87000002;fill:url(#linearGradient2194);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect3195" />
++      <rect
++         width="55.479202"
++         height="61.501431"
++         rx="2.0762138"
++         ry="1.9149517"
++         x="0.58381283"
++         y="-96.645035"
++         transform="scale(1,-1)"
++         style="fill:url(#linearGradient2191);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect3197" />
++      <path
++         d="M 15.291185 3.0406995 A 2.9831069 0.088388346 0 1 1  9.324971,3.0406995 A 2.9831069 0.088388346 0 1 1  15.291185 3.0406995 z"
++         transform="matrix(5.467529,0,0,5.820575,-32.73139,-24.9369)"
++         style="fill:url(#radialGradient3838);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3207" />
++      <path
++         d="M 15.291185 3.0406995 A 2.9831069 0.088388346 0 1 1  9.324971,3.0406995 A 2.9831069 0.088388346 0 1 1  15.291185 3.0406995 z"
++         transform="matrix(3.138118,0,0,5.820575,-10.52524,-34.85006)"
++         style="fill:url(#radialGradient3842);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="path3209" />
++    </g>
++  </g>
++  <g
++     style="display:none"
++     id="BatteryBackgroundLayer">
++    <rect
++       width="55.453815"
++       height="104.63548"
++       rx="2.1937749"
++       ry="1.9589152"
++       x="55.854179"
++       y="15.27697"
++       style="opacity:0.69897964;fill:url(#linearGradient2658);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="Background" />
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="opacity:1;display:inline"
++     id="Filll100Layer">
++    <g
++       transform="translate(-0.1433807,-8.6962177e-2)"
++       style="display:inline"
++       id="Fill100">
++      <g
++         transform="translate(23.36037,8.6956e-2)"
++         style="fill:url(#radialGradient5700);fill-opacity:1;display:inline"
++         id="g2224">
++        <rect
++           width="40.723907"
++           height="16.353392"
++           x="8.158268"
++           y="48.501419"
++           style="fill:url(#radialGradient5702);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect3007" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="24.880419"
++           style="fill:url(#radialGradient5704);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect3009" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="0.89578629"
++           style="fill:url(#radialGradient5706);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect3011" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="72.849678"
++           style="fill:url(#radialGradient5708);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect3175" />
++        <rect
++           width="128.30772"
++           height="128.14153"
++           x="-23.398808"
++           y="-0.054729871"
++           transform="translate(-31.81612,-23.08885)"
++           style="opacity:1;fill:none;fill-opacity:1"
++           id="rect3631" />
++      </g>
++    </g>
++    <rect
++       width="128.0506"
++       height="128.56487"
++       x="-31.81612"
++       y="-23.196409"
++       style="opacity:1;fill:none;fill-opacity:1"
++       id="spacer1" />
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="display:inline"
++     id="Fill80Layer">
++    <g
++       transform="translate(23.128603,-0.3655957)"
++       id="Fill80">
++      <rect
++         width="40.723907"
++         height="15.989755"
++         x="8.158268"
++         y="48.865055"
++         style="fill:url(#radialGradient10241);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect10189" />
++      <rect
++         width="40.723907"
++         height="15.989755"
++         x="8.158268"
++         y="24.880419"
++         style="fill:url(#radialGradient10243);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect10191" />
++      <rect
++         width="40.723907"
++         height="15.989755"
++         x="8.158268"
++         y="0.89578629"
++         style="fill:#d8e6b9;fill-opacity:0.52845525;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect10193" />
++      <rect
++         width="40.723907"
++         height="16.422947"
++         x="8.158268"
++         y="72.849678"
++         style="fill:url(#radialGradient10245);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="rect1956" />
++      <path
++         d="M 19.076679,-19.807554 L 19.076679,-22.602263 L 19.076679,-19.807554 z "
++         style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++         id="path2276" />
++      <rect
++         width="128.01291"
++         height="128.01941"
++         x="-54.907028"
++         y="-22.650955"
++         style="opacity:1;fill:none;fill-opacity:1"
++         id="spacer80" />
++    </g>
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="display:inline"
++     id="Fill60Layer">
++    <g
++       transform="translate(-0.1433807,-8.6962177e-2)"
++       style="display:inline"
++       id="Fill60">
++      <rect
++         width="128.0506"
++         height="128.56487"
++         x="-31.81612"
++         y="-23.196409"
++         style="opacity:1;fill:none;fill-opacity:1"
++         id="spacer" />
++      <g
++         transform="translate(23.061342,-0.1025257)"
++         id="g10855">
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="48.865055"
++           style="fill:url(#radialGradient10881);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect10857" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="24.880419"
++           style="fill:#d8e6b9;fill-opacity:0.52941165;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect10859" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="72.849678"
++           style="fill:url(#radialGradient10883);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect10861" />
++        <path
++           d="M 19.076679,-19.807554 L 19.076679,-22.602263 L 19.076679,-19.807554 z "
++           style="fill:#ffffff;fill-opacity:0.75688076;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="path10863" />
++        <path
++           d="M 127.82442 115.70919 A 63.912209 12.641975 0 1 1  0,115.70919 A 63.912209 12.641975 0 1 1  127.82442 115.70919 z"
++           transform="matrix(0.568584,0,0,0.416904,-8.55638,51.30996)"
++           style="opacity:0.38139535;fill:url(#radialGradient10885);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="path3289" />
++        <rect
++           width="54.675182"
++           height="37.029793"
++           rx="2.2019448"
++           ry="1.9633386"
++           x="1.4523507"
++           y="-7.9904442"
++           style="opacity:0.51000001;fill:url(#linearGradient10897);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect2872" />
++      </g>
++    </g>
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="display:inline"
++     id="Fill40Layer">
++    <g
++       transform="translate(-0.1433807,-8.6962177e-2)"
++       style="display:inline"
++       id="Fill40">
++      <rect
++         width="128.0506"
++         height="128.56487"
++         x="-31.81612"
++         y="-23.196409"
++         style="opacity:1;fill:none;fill-opacity:1"
++         id="spacer40" />
++      <g
++         transform="matrix(1,0,0,1.0136097,23.025612,-1.1414838)"
++         id="g11518">
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="48.865055"
++           style="fill:#d8e6b9;fill-opacity:0.52941165;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect11520" />
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="8.158268"
++           y="72.849678"
++           style="fill:url(#radialGradient11544);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect11522" />
++      </g>
++    </g>
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="display:inline"
++     id="Fill20Layer">
++    <g
++       transform="translate(-6.5716245,6.0610372)"
++       style="display:inline"
++       id="Fill20">
++      <g
++         transform="translate(14.834564,-9.9934398)"
++         id="g11826">
++        <rect
++           width="40.723907"
++           height="15.989755"
++           x="23.197033"
++           y="76.839432"
++           style="fill:url(#radialGradient11891);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.59500003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++           id="rect11828" />
++      </g>
++      <rect
++         width="128.0506"
++         height="128.07358"
++         x="-25.270666"
++         y="-29.227592"
++         style="opacity:1;fill:none;fill-opacity:1"
++         id="spacer20" />
++    </g>
++  </g>
++  <g
++     transform="translate(31.81612,23.08885)"
++     style="display:inline"
++     id="Fill00Layer">
++    <g
++       transform="translate(-0.1433807,-8.6962177e-2)"
++       style="display:inline"
++       id="Fill00" />
++    <rect
++       width="128.0506"
++       height="128.56487"
++       x="-31.81612"
++       y="-23.196409"
++       style="opacity:1;fill:none;fill-opacity:1"
++       id="spacer00" />
++  </g>
++  <g
++     style="display:inline"
++     id="AcAdapter">
++    <path
++       d="M 20.208548,-15.087319 C 6.308855,-7.968267 -16.786689,27.75069 -31.81612,46.639178 L -7.716262,48.938741 C -11.394766,64.925216 -16.059357,95.01165 -22.85708,99.50451 C -8.826075,98.11598 17.459493,53.143469 33.18388,32.788025 L 5.981113,30.492454 C 10.22375,16.063909 14.03187,-6.077773 20.208548,-15.087319 z "
++       transform="translate(31.81612,23.08885)"
++       style="opacity:0.41803278;fill:#cf4913;fill-opacity:0.75;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++       id="Ac1" />
++    <path
++       d="M 20.208548,-15.087319 C 6.308855,-7.968267 -16.786689,27.75069 -31.81612,46.639178 L -7.716262,48.938741 C -11.394766,64.925216 -16.059357,95.01165 -22.85708,99.50451 C -8.826075,98.11598 17.459493,53.143469 33.18388,32.788025 L 5.981113,30.492454 C 10.22375,16.063909 14.03187,-6.077773 20.208548,-15.087319 z "
++       transform="translate(31.81612,23.08885)"
++       style="opacity:0.41803278;fill:url(#linearGradient2711);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++       id="Ac4" />
++    <path
++       d="M 17.157353,-11.436605 C 4.757218,-2.255621 -12.902308,26.340305 -27.931739,45.228793 L -5.800094,47.153459 C -9.478599,63.139933 -12.549862,88.259 -16.910772,95.09494 C -8.128314,89.76999 14.581399,54.454792 30.305797,34.099348 L 4.429499,31.84903 C 8.672113,17.420485 10.980653,-2.427059 17.157353,-11.436605 z "
++       transform="translate(31.81612,23.08885)"
++       style="fill:url(#radialGradient2714);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
++       id="Ac3" />
++    <path
++       d="M 17.157353,-11.436605 C 4.757218,-2.255621 -12.902308,26.340305 -27.931739,45.228793 L -5.800094,47.153459 C -9.478599,63.139933 -12.549862,88.259 -16.910772,95.09494 C -8.128314,89.76999 14.581399,54.454792 30.305797,34.099348 L 4.429499,31.84903 C 8.672113,17.420485 10.980653,-2.427059 17.157353,-11.436605 z "
++       transform="translate(31.81612,23.08885)"
++       style="fill:#e3ad00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
++       id="Ac2" />
++    <rect
++       width="128.05061"
++       height="127.79348"
++       x="0"
++       y="-0.31186262"
++       style="opacity:1;fill:none;fill-opacity:1"
++       id="rect2632" />
++  </g>
++  <g
++     style="display:inline"
++     id="Overlay">
++    <rect
++       width="128.05061"
++       height="127.79347"
++       x="1.0394411e-06"
++       y="-0.054732177"
++       style="opacity:1;fill:none;fill-opacity:1"
++       id="spacerover" />
++    <rect
++       width="13.170826"
++       height="102.8517"
++       rx="0"
++       ry="0"
++       x="87.721039"
++       y="16.672493"
++       style="opacity:0.22540983;fill:url(#linearGradient6233);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="over5" />
++    <rect
++       width="13.170826"
++       height="31.863861"
++       rx="0"
++       ry="0"
++       x="87.721039"
++       y="16.132019"
++       style="opacity:0.22540983;fill:url(#linearGradient6243);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="over4" />
++    <path
++       d="M 60.854303,17.942584 C 60.333693,17.942584 60,18.479714 60,19.03394 L 60,22.126121 C 70.885517,40.75761 93.205893,30.495298 108.52429,27.219123 L 108.52429,19.03394 C 108.52429,18.479714 108.19061,17.942584 107.67,17.942584 L 60.854303,17.942584 z "
++       style="opacity:0.48360656;fill:url(#linearGradient6238);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="over3" />
++    <rect
++       width="13.170826"
++       height="71.838249"
++       rx="0"
++       ry="0"
++       x="87.978165"
++       y="16.157631"
++       style="opacity:0.22540983;fill:url(#linearGradient6228);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="over2" />
++    <rect
++       width="55.460392"
++       height="61.206009"
++       rx="2.0960798"
++       ry="1.9391078"
++       x="55.866707"
++       y="-119.74129"
++       transform="scale(1,-1)"
++       style="opacity:0.41000001;fill:url(#radialGradient9168);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.04;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
++       id="over1" />
++  </g>
++</svg>
+--- a/plasma/applets/battery/plasma-battery-default.desktop
++++ b/plasma/applets/battery/plasma-battery-default.desktop
+@@ -4,6 +4,7 @@
+ Name[ca]=Monitor de bateria
+ Name[de]=Akkuüberwachung
+ Name[el]=Επόπτης συστήματος
++Name[eo]=Bateristato-programo
+ Name[et]=Aku jälgija
+ Name[ja]=バッテリモニタ
+ Name[km]=កម្មវិធី​ត្រួត​​ពិនិត្យ​ថាមពល
+@@ -13,6 +14,7 @@
+ Name[ne]=ब्याट्री अनुगमन
+ Name[nl]=Accumonitor
+ Name[nn]=Batteriovervaking
++Name[pa]=ਬੈਟਰੀ ਮਾਨੀਟਰ
+ Name[pt]=Monitor da Bateria
+ Name[pt_BR]=Monitor da Bateria
+ Name[sr]=Монитор батерије
+@@ -23,6 +25,7 @@
+ Name[zh_TW]=電池監視器
+ Comment=A battery charge monitor
+ Comment[be]=Назіранне за зарадам батарэй
++Comment[ca]=Un monitor de càrrega de la bateria
+ Comment[de]=Eine Batteriestand-Anzeige
+ Comment[el]=Ένας επόπτης φόρτισης της μπαταρίας
+ Comment[et]=Aku täidetuse jälgija
+@@ -34,6 +37,7 @@
+ Comment[ne]=ब्याट्री चार्ज अनुगमन
+ Comment[nl]=Opladen van de accu volgen
+ Comment[nn]=Overvaking av batteristatus
++Comment[pa]=ਇੱਕ ਬੈਟਰੀ ਚਾਰਜ ਮਾਨਟੀਰ
+ Comment[pt]=Um monitor da carga da bateria
+ Comment[pt_BR]=Um monitor da carga da bateria
+ Comment[sr]=Надгледање стања батерије
+@@ -44,7 +48,7 @@
+ Comment[zh_TW]=電池電力監測器
+ Icon=battery
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_battery
+ X-KDE-PluginInfo-Author=Sebastian Kügler
+--- a/plasma/applets/battery/battery.h
++++ b/plasma/applets/battery/battery.h
+@@ -54,7 +54,7 @@
+     public slots:
+         void dataUpdated(const QString &name, const Plasma::DataEngine::Data &data);
+         void showConfigurationInterface();
+- 
++
+     protected Q_SLOTS:
+         virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+         virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+@@ -63,6 +63,13 @@
+         void configAccepted();
+ 
+     private:
++        Q_ENUMS( m_batteryStyle )
++        enum ClockStyle {
++            // Keep the order of styles the same order as the items in the configdialog!
++            OxygenBattery, ClassicBattery
++        };
++        int m_batteryStyle;
++
+         /* Paint a label on top of the battery
+          *
+          */
+@@ -81,7 +88,7 @@
+         // Configuration dialog
+         KDialog *m_dialog;
+         Ui::batteryConfig ui;
+-        
++
+         // Internal data
+         QList<QVariant> batterylist, acadapterlist;
+         QFont m_font;
+--- a/plasma/applets/battery/battery.cpp
++++ b/plasma/applets/battery/battery.cpp
+@@ -1,6 +1,6 @@
+ /***************************************************************************
+  *   Copyright (C) 2005,2006,2007 by Siraj Razick <siraj at kdemail.net>      *
+- *   Copyright (C) 2007 by Riccardo Iaconelli <riccardo at kde.org>             *
++ *   Copyright (C) 2007 by Riccardo Iaconelli <riccardo at kde.org>           *
+  *   Copyright (C) 2007 by Sebastian Kuegler <sebas at kde.org>               *
+  *                                                                         *
+  *   This program is free software; you can redistribute it and/or modify  *
+@@ -40,6 +40,7 @@
+ 
+ Battery::Battery(QObject *parent, const QVariantList &args)
+     : Plasma::Applet(parent, args),
++      m_batteryStyle(0),
+       m_battery_percent_label(0),
+       m_battery_percent(0),
+       m_dialog(0),
+@@ -53,9 +54,19 @@
+     KConfigGroup cg = config();
+     m_showBatteryString = cg.readEntry("showBatteryString", true);
+     m_drawBackground = cg.readEntry("drawBackground", true);
++    setDrawStandardBackground(m_drawBackground);
+     m_pixelSize = cg.readEntry("size", 200);
+-    m_smallPixelSize = 22;
+-    m_theme = new Plasma::Svg("widgets/battery", this);
++
++    QString svgFile = QString();
++    if (cg.readEntry("style", 0) == 0) {
++        m_batteryStyle = OxygenBattery;
++        svgFile = "widgets/battery-oxygen";
++    } else {
++        m_batteryStyle = ClassicBattery;
++        svgFile = "widgets/battery";
++    }
++    m_smallPixelSize = 44;
++    m_theme = new Plasma::Svg(svgFile, this);
+     m_theme->setContentType(Plasma::Svg::SingleImage);
+     m_theme->resize(m_pixelSize, m_pixelSize);
+ 
+@@ -80,7 +91,18 @@
+ 
+ QSizeF Battery::contentSizeHint() const
+ {
+-    return m_size;
++    QSizeF sizehint = QSizeF(m_pixelSize, m_pixelSize);
++    qreal aspectratio = contentSize().width() /  contentSize().height();
++    if (contentSize() == QSizeF(0, 0)) {
++        return sizehint;
++    } else if (aspectratio == 1) {
++        sizehint = QSizeF(contentSize().width(), contentSize().height());
++    } else if (aspectratio > 1) {
++        sizehint = QSizeF(contentSize().height(), contentSize().height());
++    } else {
++        sizehint = QSizeF(contentSize().width(), contentSize().width());
++    }
++    return sizehint;
+ }
+ 
+ void Battery::constraintsUpdated(Plasma::Constraints constraints)
+@@ -95,7 +117,11 @@
+             kDebug() << "Huge FormFactor";
+             pixelSize = m_pixelSize;
+         }
+-        m_theme->resize(QSize(pixelSize, pixelSize));
++	// Reset aspect ratio
++        //QSize themesize = m_theme->elementSize("Battery");
++        
++        m_size = QSizeF(QSize(pixelSize, pixelSize));
++        m_theme->resize(m_size);
+         m_size = m_theme->size();
+         m_font.setPointSize((int)(pixelSize/10));
+         updateGeometry();
+@@ -104,11 +130,10 @@
+ 
+ void Battery::dataUpdated(const QString& source, const Plasma::DataEngine::Data &data)
+ {
+-    kDebug() << "Applet::dataUpdated() ---------------------------- " << source;
+     if (source == I18N_NOOP("Battery")) {
+         m_hasBattery = data[I18N_NOOP("has Battery")].toBool();
+         if (!data[I18N_NOOP("Plugged in")].toBool()) {
+-           m_hasBattery = false; 
++           m_hasBattery = false;
+         }
+         m_battery_percent = data[I18N_NOOP("Percent")].toInt();
+         m_battery_percent_label = data[I18N_NOOP("Percent")].toString();
+@@ -119,7 +144,7 @@
+         kDebug() << "Applet::Battery::dataUpdated " << m_battery_percent;
+     } else if (source == I18N_NOOP("AC Adapter")) {
+         m_acadapter_plugged = data[I18N_NOOP("Plugged in")].toBool();
+-        kDebug() << "Applet::AC Adapter dataUpdated: " << m_acadapter_plugged; 
++        kDebug() << "Applet::AC Adapter dataUpdated: " << m_acadapter_plugged;
+     } else {
+         kDebug() << "Applet::Dunno what to do with " << source;
+     }
+@@ -139,9 +164,12 @@
+         connect( m_dialog, SIGNAL(okClicked()), this, SLOT(configAccepted()) );
+ 
+     }
++
++    ui.styleGroup->setSelected(m_batteryStyle);
++
+     ui.spinSize->setValue((int)m_size.width());
+     ui.showBatteryStringCheckBox->setChecked(m_showBatteryString ? Qt::Checked : Qt::Unchecked);
+-    ui.drawBackgroundCheckBox->setChecked(m_drawBackground ? Qt::Checked : Qt::Unchecked); 
++    ui.drawBackgroundCheckBox->setChecked(m_drawBackground ? Qt::Checked : Qt::Unchecked);
+     m_dialog->show();
+ }
+ 
+@@ -152,19 +180,33 @@
+     cg.writeEntry("showBatteryString", m_showBatteryString);
+ 
+     m_drawBackground = ui.drawBackgroundCheckBox->checkState() == Qt::Checked;
++    setDrawStandardBackground(m_drawBackground);
+     cg.writeEntry("drawBackground", m_drawBackground);
+-    cg.writeEntry("size", ui.spinSize->value());
+ 
+-    kDebug() << "Resize to: " << ui.spinSize->value();
+     m_pixelSize = ui.spinSize->value();
+     m_theme->resize(m_pixelSize, m_pixelSize);
+ 
++    if (ui.styleGroup->selected() != m_batteryStyle) {
++        QString svgFile = QString();
++        if (ui.styleGroup->selected() == OxygenBattery) {
++            svgFile = "widgets/battery-oxygen";
++        } else {
++            svgFile = "widgets/battery";
++        }
++        m_batteryStyle = ui.styleGroup->selected();
++        delete m_theme;
++        m_theme = new Plasma::Svg(svgFile, this);
++        kDebug() << "Changing theme to " << svgFile;
++        cg.writeEntry("style", m_batteryStyle);
++    }
++
+     dataEngine("powermanagement")->disconnectSource(I18N_NOOP("Battery"), this);
+     dataEngine("powermanagement")->connectSource(I18N_NOOP("Battery"), this);
+     dataEngine("powermanagement")->disconnectSource(I18N_NOOP("AC Adapter"), this);
+     dataEngine("powermanagement")->connectSource(I18N_NOOP("AC Adapter"), this);
+ 
+     constraintsUpdated(Plasma::AllConstraints);
++    update();
+     cg.config()->sync();
+ }
+ 
+@@ -218,14 +260,14 @@
+     // Let's find a good position for painting the background
+     QRect text_rect = QRect((int)((contentSize().width()-fm.width(labelText))/2),
+                             (int)(((contentSize().height() - (int)fm.height())/2*0.9)),
+-                            text_width, 
++                            text_width,
+                             (int)(fm.height()*1.2));
+     // Poor man's highlighting
+     if (m_isHovered) {
+         m_boxColor.setAlpha(m_boxHoverAlpha);
+     }
+     p->setBrush(m_boxColor);
+-    
++
+     // Find sensible proportions for the rounded corners
+     float round_prop = text_rect.width() / text_rect.height();
+ 
+@@ -244,7 +286,6 @@
+ void Battery::paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option, const QRect &contentsRect)
+ {
+     Q_UNUSED( option );
+-    //Q_UNUSED( contentsRect );
+ 
+     bool showString = true;
+ 
+@@ -260,54 +301,65 @@
+         m_theme->paint(p, contentsRect, "AcAdapter");
+         if (formFactor() == Plasma::Planar ||
+             formFactor() == Plasma::MediaCenter) {
+-
+             // Show that there's no battery
+             paintLabel(p, m_battery_percent_label);
+         }
+         return;
+     }
++    QRect corect = QRect(contentsRect.top(), contentsRect.left(), contentSizeHint().toSize().width(), contentSizeHint().toSize().height());
+ 
+     if (m_theme->elementExists("Battery")) {
+-        m_theme->paint(p, contentsRect, "Battery");
+-    } else {
+-        kDebug() << "Battery does not exist in SVG";
++        m_theme->paint(p, corect, "Battery");
+     }
+ 
+     // Now let's find out which fillstate to show
+     QString fill_element = QString();
+ 
+-    if (m_battery_percent > 95) {
+-        fill_element = "Fill100";
+-    } else if (m_battery_percent > 90) {
+-        fill_element = "Fill90";
+-    } else if (m_battery_percent > 80) {
+-        fill_element = "Fill80";
+-    } else if (m_battery_percent > 70) {
+-        fill_element = "Fill70";
+-    } else if (m_battery_percent > 55) {
+-        fill_element = "Fill60";
+-    } else if (m_battery_percent > 40) {
+-        fill_element = "Fill50";
+-    } else if (m_battery_percent > 30) {
+-        fill_element = "Fill40";
+-    } else if (m_battery_percent > 20) {
+-        fill_element = "Fill30";
+-    } else if (m_battery_percent > 10) {
+-        fill_element = "Fill20";
+-    } else if (m_battery_percent >= 5) {
+-        fill_element = "Fill10";
++    if (m_batteryStyle == OxygenBattery) {
++        if (m_battery_percent > 95) {
++            fill_element = "Fill100";
++        } else if (m_battery_percent > 80) {
++            fill_element = "Fill80";
++        } else if (m_battery_percent > 50) {
++            fill_element = "Fill60";
++        } else if (m_battery_percent > 20) {
++            fill_element = "Fill40";
++        } else if (m_battery_percent > 10) {
++            fill_element = "Fill20";
++        } // Don't show a fillbar below 11% charged
++    } else { // OxyenStyle
++        if (m_battery_percent > 95) {
++            fill_element = "Fill100";
++        } else if (m_battery_percent > 90) {
++            fill_element = "Fill90";
++        } else if (m_battery_percent > 80) {
++            fill_element = "Fill80";
++        } else if (m_battery_percent > 70) {
++            fill_element = "Fill70";
++        } else if (m_battery_percent > 55) {
++            fill_element = "Fill60";
++        } else if (m_battery_percent > 40) {
++            fill_element = "Fill50";
++        } else if (m_battery_percent > 30) {
++            fill_element = "Fill40";
++        } else if (m_battery_percent > 20) {
++            fill_element = "Fill30";
++        } else if (m_battery_percent > 10) {
++            fill_element = "Fill20";
++        } else if (m_battery_percent >= 5) {
++            fill_element = "Fill10";
++        } // Lower than 5%? Show no fillbar.
+     }
+-
+     if (!fill_element.isEmpty()) {
+         if (m_theme->elementExists(fill_element)) {
+-            m_theme->paint(p, contentsRect, fill_element);
++            m_theme->paint(p, corect, fill_element);
+         } else {
+             kDebug() << fill_element << " does not exist in svg";
+         }
+     }
+ 
+     if (m_acadapter_plugged) {
+-        m_theme->paint(p, contentsRect, "AcAdapter");
++        m_theme->paint(p, corect, "AcAdapter");
+     }
+ 
+     // Only show batterystring when we're huge
+@@ -320,14 +372,17 @@
+     // but no text.
+     if (formFactor() == Plasma::Vertical ||
+         formFactor() == Plasma::Horizontal) {
+-        m_theme->paint(p, contentsRect, "Shadow");
++        m_theme->paint(p, corect, "Shadow");
+         showString = false;
+     }
++    if (m_theme->elementExists("Overlay")) {
++        m_theme->paint(p, corect, "Overlay");
++    }
+ 
+     if (formFactor() == Plasma::Planar ||
+         formFactor() == Plasma::MediaCenter) {
+         if (showString || m_isHovered) {
+-            // Show the charge percentage with a box 
++            // Show the charge percentage with a box
+             // on top of the battery, but only for plasmoids bigger than ....
+             if (m_pixelSize > 36) {
+                 paintLabel(p, m_battery_percent_label);
+--- a/plasma/applets/battery/batteryConfig.ui
++++ b/plasma/applets/battery/batteryConfig.ui
+@@ -5,14 +5,14 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>306</width>
+-    <height>95</height>
++    <width>318</width>
++    <height>170</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+    <string>Configure Battery Monitor</string>
+   </property>
+-  <property name="accessibleName" stdset="0" >
++  <property name="accessibleName" >
+    <string>Configure Battery Monitor</string>
+   </property>
+   <layout class="QVBoxLayout" >
+@@ -37,6 +37,29 @@
+     </widget>
+    </item>
+    <item>
++    <widget class="KButtonGroup" name="styleGroup" >
++     <layout class="QVBoxLayout" >
++      <item>
++       <widget class="QRadioButton" name="oxygenBattery" >
++        <property name="text" >
++         <string>Oxygen theme</string>
++        </property>
++        <property name="checked" >
++         <bool>true</bool>
++        </property>
++       </widget>
++      </item>
++      <item>
++       <widget class="QRadioButton" name="classicBattery" >
++        <property name="text" >
++         <string>Classic theme</string>
++        </property>
++       </widget>
++      </item>
++     </layout>
++    </widget>
++   </item>
++   <item>
+     <layout class="QHBoxLayout" >
+      <item>
+       <widget class="QLabel" name="labelSize" >
+@@ -75,6 +98,14 @@
+    </item>
+   </layout>
+  </widget>
++ <customwidgets>
++  <customwidget>
++   <class>KButtonGroup</class>
++   <extends>QGroupBox</extends>
++   <header>kbuttongroup.h</header>
++   <container>1</container>
++  </customwidget>
++ </customwidgets>
+  <resources/>
+  <connections/>
+ </ui>
+--- a/plasma/applets/battery/CMakeLists.txt
++++ b/plasma/applets/battery/CMakeLists.txt
+@@ -12,5 +12,6 @@
+ 
+ install(FILES
+     battery.svg
++    battery-oxygen.svg
+     DESTINATION ${DATA_INSTALL_DIR}/desktoptheme/default/widgets/)
+ 
+--- a/plasma/applets/clock/clock.h
++++ b/plasma/applets/clock/clock.h
+@@ -33,7 +33,7 @@
+ #include <QGraphicsItem>
+ #include <QColor>
+ 
+-#include <plasma/applet.h>
++#include <plasma/containment.h>
+ #include <plasma/dataengine.h>
+ #include "ui_clockConfig.h"
+ 
+@@ -46,7 +46,7 @@
+     class Svg;
+ }
+ 
+-class Clock : public Plasma::Applet
++class Clock : public Plasma::Containment
+ {
+     Q_OBJECT
+     public:
+@@ -73,8 +73,6 @@
+ 
+         bool m_showTimeString;
+         bool m_showSecondHand;
+-        QSizeF m_size;
+-        int m_pixelSize;
+         QString m_timezone;
+         Plasma::Svg* m_theme;
+         QTime m_time;
+--- a/plasma/applets/clock/clock.cpp
++++ b/plasma/applets/clock/clock.cpp
+@@ -47,7 +47,7 @@
+ #include <plasma/svg.h>
+ 
+ Clock::Clock(QObject *parent, const QVariantList &args)
+-    : Plasma::Applet(parent, args),
++    : Plasma::Containment(parent, args),
+       m_dialog(0)
+ {
+     setHasConfigurationInterface(true);
+@@ -55,11 +55,12 @@
+     KConfigGroup cg = config();
+     m_showTimeString = cg.readEntry("showTimeString", false);
+     m_showSecondHand = cg.readEntry("showSecondHand", false);
+-    m_pixelSize = cg.readEntry("size", 125);
++    int pixelSize = cg.readEntry("size", 125);
+     m_timezone = cg.readEntry("timezone", "Local");
+     m_theme = new Plasma::Svg("widgets/clock", this);
+     m_theme->setContentType(Plasma::Svg::SingleImage);
+-    m_theme->resize(m_pixelSize, m_pixelSize);
++    m_theme->resize(pixelSize, pixelSize);
++    setSize(pixelSize, pixelSize);
+ 
+     connectToEngine();
+ }
+@@ -76,7 +77,8 @@
+ 
+ QSizeF Clock::contentSizeHint() const
+ {
+-    return m_size;
++    //kDebug() << "content size hint is being asked for and we return" << size();
++    return size();
+ }
+ 
+ void Clock::constraintsUpdated(Plasma::Constraints constraints)
+@@ -84,11 +86,11 @@
+     if (constraints & Plasma::FormFactorConstraint) {
+         setDrawStandardBackground(false);
+         if (formFactor() == Plasma::Planar ||
+-                formFactor() == Plasma::MediaCenter) {
+-            m_size = m_theme->size();
++            formFactor() == Plasma::MediaCenter) {
++            setSize(m_theme->size());
+         } else {
+             QFontMetrics fm(QApplication::font());
+-            m_size = QSizeF(fm.width("00:00:00") * 1.2, fm.height() * 1.5);
++            setSize(QSizeF(fm.width("00:00:00") * 1.2, fm.height() * 1.5));
+         }
+         updateGeometry();
+     }
+@@ -129,8 +131,8 @@
+         connect( m_dialog, SIGNAL(okClicked()), this, SLOT(configAccepted()) );
+ 
+     }
++
+     ui.timeZones->setSelected(m_timezone, true);
+-    ui.spinSize->setValue((int)m_size.width());
+     ui.showTimeStringCheckBox->setChecked(m_showTimeString);
+     ui.showSecondHandCheckBox->setChecked(m_showSecondHand);
+     m_dialog->show();
+@@ -145,9 +147,6 @@
+     cg.writeEntry("showTimeString", m_showTimeString);
+     cg.writeEntry("showSecondHand", m_showSecondHand);
+     update();
+-    cg.writeEntry("size", ui.spinSize->value());
+-    m_size = QSize(ui.spinSize->value(), ui.spinSize->value());
+-    m_theme->resize(m_size);
+     QStringList tzs = ui.timeZones->selection();
+ 
+     if (tzs.count() > 0) {
+--- a/plasma/applets/clock/clockConfig.ui
++++ b/plasma/applets/clock/clockConfig.ui
+@@ -15,133 +15,5534 @@
+     <height>200</height>
+    </size>
+   </property>
+-  <layout class="QGridLayout" >
+-   <property name="leftMargin" >
+-    <number>9</number>
+-   </property>
+-   <property name="topMargin" >
+-    <number>9</number>
+-   </property>
+-   <property name="rightMargin" >
+-    <number>9</number>
+-   </property>
+-   <property name="bottomMargin" >
+-    <number>9</number>
+-   </property>
+-   <property name="horizontalSpacing" >
+-    <number>6</number>
+-   </property>
+-   <property name="verticalSpacing" >
+-    <number>6</number>
+-   </property>
+-   <item row="0" column="0" >
+-    <layout class="QVBoxLayout" >
+-     <property name="spacing" >
+-      <number>6</number>
+-     </property>
+-     <property name="leftMargin" >
+-      <number>0</number>
+-     </property>
+-     <property name="topMargin" >
+-      <number>0</number>
+-     </property>
+-     <property name="rightMargin" >
+-      <number>0</number>
+-     </property>
+-     <property name="bottomMargin" >
+-      <number>0</number>
+-     </property>
+-     <item>
+-      <widget class="KTimeZoneWidget" name="timeZones" >
+-       <property name="minimumSize" >
+-        <size>
+-         <width>300</width>
+-         <height>0</height>
+-        </size>
+-       </property>
+-       <column>
+-        <property name="text" >
+-         <string>Area</string>
+-        </property>
+-       </column>
+-       <column>
+-        <property name="text" >
+-         <string>Region</string>
+-        </property>
+-       </column>
+-       <column>
+-        <property name="text" >
+-         <string>Comment</string>
+-        </property>
+-       </column>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QCheckBox" name="showSecondHandCheckBox" >
+-       <property name="toolTip" >
+-        <string>Display the second hand</string>
+-       </property>
+-       <property name="whatsThis" >
+-        <string>Check this if you want to display the second hand in order to see the seconds.</string>
+-       </property>
+-       <property name="text" >
+-        <string>Display seconds</string>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QCheckBox" name="showTimeStringCheckBox" >
+-       <property name="toolTip" >
+-        <string>Display the time as a string</string>
+-       </property>
+-       <property name="whatsThis" >
+-        <string>Check this if you want to display the time as a string within the clock.</string>
+-       </property>
+-       <property name="text" >
+-        <string>Also display the time in text</string>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" >
+-       <property name="spacing" >
+-        <number>6</number>
+-       </property>
+-       <property name="leftMargin" >
+-        <number>0</number>
+-       </property>
+-       <property name="topMargin" >
+-        <number>0</number>
+-       </property>
+-       <property name="rightMargin" >
+-        <number>0</number>
+-       </property>
+-       <property name="bottomMargin" >
+-        <number>0</number>
+-       </property>
+-       <item>
+-        <widget class="QLabel" name="labelSize" >
+-         <property name="text" >
+-          <string>Size of the clock:</string>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QSpinBox" name="spinSize" >
+-         <property name="toolTip" >
+-          <string>Change clock size</string>
+-         </property>
+-         <property name="whatsThis" >
+-          <string>Set a new size for the clock between 0 and 500. The size is the square side that contains the clock.</string>
+-         </property>
+-         <property name="maximum" >
+-          <number>500</number>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
++  <layout class="QVBoxLayout" >
++   <item>
++    <widget class="KTimeZoneWidget" name="timeZones" >
++     <property name="minimumSize" >
++      <size>
++       <width>300</width>
++       <height>0</height>
++      </size>
++     </property>
++     <column>
++      <property name="text" >
++       <string>Area</string>
++      </property>
++     </column>
++     <column>
++      <property name="text" >
++       <string>Region</string>
++      </property>
++     </column>
++     <column>
++      <property name="text" >
++       <string>Comment</string>
++      </property>
++     </column>
++     <item>
++      <property name="text" >
++       <string>Abidjan</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Accra</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Addis Ababa</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ET</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Algiers</string>
++      </property>
++      <property name="text" >
++       <string>Africa/DZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Asmara</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ER</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bamako</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ML</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bangui</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Banjul</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bissau</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Blantyre</string>
++      </property>
++      <property name="text" >
++       <string>Africa/MW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Brazzaville</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bujumbura</string>
++      </property>
++      <property name="text" >
++       <string>Africa/BI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cairo</string>
++      </property>
++      <property name="text" >
++       <string>Africa/EG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Casablanca</string>
++      </property>
++      <property name="text" >
++       <string>Africa/MA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ceuta</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ES</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Ceuta &amp; Melilla</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Conakry</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dakar</string>
++      </property>
++      <property name="text" >
++       <string>Africa/SN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dar es Salaam</string>
++      </property>
++      <property name="text" >
++       <string>Africa/TZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Djibouti</string>
++      </property>
++      <property name="text" >
++       <string>Africa/DJ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Douala</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>El Aaiun</string>
++      </property>
++      <property name="text" >
++       <string>Africa/EH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Freetown</string>
++      </property>
++      <property name="text" >
++       <string>Africa/SL</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Gaborone</string>
++      </property>
++      <property name="text" >
++       <string>Africa/BW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Harare</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ZW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Johannesburg</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ZA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kampala</string>
++      </property>
++      <property name="text" >
++       <string>Africa/UG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Khartoum</string>
++      </property>
++      <property name="text" >
++       <string>Africa/SD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kigali</string>
++      </property>
++      <property name="text" >
++       <string>Africa/RW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kinshasa</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>west Dem. Rep. of Congo</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lagos</string>
++      </property>
++      <property name="text" >
++       <string>Africa/NG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Libreville</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lome</string>
++      </property>
++      <property name="text" >
++       <string>Africa/TG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Luanda</string>
++      </property>
++      <property name="text" >
++       <string>Africa/AO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lubumbashi</string>
++      </property>
++      <property name="text" >
++       <string>Africa/CD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>east Dem. Rep. of Congo</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lusaka</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ZM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Malabo</string>
++      </property>
++      <property name="text" >
++       <string>Africa/GQ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Maputo</string>
++      </property>
++      <property name="text" >
++       <string>Africa/MZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Maseru</string>
++      </property>
++      <property name="text" >
++       <string>Africa/LS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mbabane</string>
++      </property>
++      <property name="text" >
++       <string>Africa/SZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mogadishu</string>
++      </property>
++      <property name="text" >
++       <string>Africa/SO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Monrovia</string>
++      </property>
++      <property name="text" >
++       <string>Africa/LR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nairobi</string>
++      </property>
++      <property name="text" >
++       <string>Africa/KE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ndjamena</string>
++      </property>
++      <property name="text" >
++       <string>Africa/TD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Niamey</string>
++      </property>
++      <property name="text" >
++       <string>Africa/NE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nouakchott</string>
++      </property>
++      <property name="text" >
++       <string>Africa/MR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ouagadougou</string>
++      </property>
++      <property name="text" >
++       <string>Africa/BF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Porto-Novo</string>
++      </property>
++      <property name="text" >
++       <string>Africa/BJ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sao Tome</string>
++      </property>
++      <property name="text" >
++       <string>Africa/ST</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tripoli</string>
++      </property>
++      <property name="text" >
++       <string>Africa/LY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tunis</string>
++      </property>
++      <property name="text" >
++       <string>Africa/TN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Windhoek</string>
++      </property>
++      <property name="text" >
++       <string>Africa/NA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Adak</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Aleutian Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Anchorage</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Alaska Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Anguilla</string>
++      </property>
++      <property name="text" >
++       <string>America/AI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Antigua</string>
++      </property>
++      <property name="text" >
++       <string>America/AG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Araguaina</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Tocantins</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Buenos Aires</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Buenos Aires (BA, CF)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Catamarca</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Catamarca (CT), Chubut (CH)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cordoba</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jujuy</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Jujuy (JY)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>La Rioja</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>La Rioja (LR)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mendoza</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mendoza (MZ)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rio Gallegos</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Santa Cruz (SC)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>San Juan</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>San Juan (SJ)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tucuman</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Tucuman (TM)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ushuaia</string>
++      </property>
++      <property name="text" >
++       <string>America/Argentina/AR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Tierra del Fuego (TF)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Aruba</string>
++      </property>
++      <property name="text" >
++       <string>America/AW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Asuncion</string>
++      </property>
++      <property name="text" >
++       <string>America/PY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Atikokan</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bahia</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Bahia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Barbados</string>
++      </property>
++      <property name="text" >
++       <string>America/BB</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Belem</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Amapa, E Para</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Belize</string>
++      </property>
++      <property name="text" >
++       <string>America/BZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Blanc-Sablon</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic Standard Time - Quebec - Lower North Shore</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Boa Vista</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Roraima</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bogota</string>
++      </property>
++      <property name="text" >
++       <string>America/CO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Boise</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - south Idaho &amp; east Oregon</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cambridge Bay</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - west Nunavut</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Campo Grande</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mato Grosso do Sul</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cancun</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Quintana Roo</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Caracas</string>
++      </property>
++      <property name="text" >
++       <string>America/VE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cayenne</string>
++      </property>
++      <property name="text" >
++       <string>America/GF</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cayman</string>
++      </property>
++      <property name="text" >
++       <string>America/KY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chicago</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chihuahua</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - Chihuahua</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Costa Rica</string>
++      </property>
++      <property name="text" >
++       <string>America/CR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cuiaba</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mato Grosso</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Curacao</string>
++      </property>
++      <property name="text" >
++       <string>America/AN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Danmarkshavn</string>
++      </property>
++      <property name="text" >
++       <string>America/GL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>east coast, north of Scoresbysund</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dawson</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pacific Time - north Yukon</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dawson Creek</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Standard Time - Dawson Creek &amp; Fort Saint John, British Columbia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Denver</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Detroit</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Michigan - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dominica</string>
++      </property>
++      <property name="text" >
++       <string>America/DM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Edmonton</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - Alberta, east British Columbia &amp; west Saskatchewan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Eirunepe</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>W Amazonas</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>El Salvador</string>
++      </property>
++      <property name="text" >
++       <string>America/SV</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Fortaleza</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>NE Brazil (MA, PI, CE, RN, PB)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Glace Bay</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Godthab</string>
++      </property>
++      <property name="text" >
++       <string>America/GL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Goose Bay</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic Time - Labrador - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Grand Turk</string>
++      </property>
++      <property name="text" >
++       <string>America/TC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Grenada</string>
++      </property>
++      <property name="text" >
++       <string>America/GD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guadeloupe</string>
++      </property>
++      <property name="text" >
++       <string>America/GP</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guatemala</string>
++      </property>
++      <property name="text" >
++       <string>America/GT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guayaquil</string>
++      </property>
++      <property name="text" >
++       <string>America/EC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>mainland</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guyana</string>
++      </property>
++      <property name="text" >
++       <string>America/GY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Halifax</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic Time - Nova Scotia (most places), PEI</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Havana</string>
++      </property>
++      <property name="text" >
++       <string>America/CU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Hermosillo</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Standard Time - Sonora</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Indianapolis</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Knox</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - Starke County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Marengo</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - Crawford County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Petersburg</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Indiana - Pike County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tell City</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Indiana - Perry County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vevay</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - Switzerland County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vincennes</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - Daviess, Dubois, Knox &amp; Martin Counties</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Winamac</string>
++      </property>
++      <property name="text" >
++       <string>America/Indiana/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Indiana - Pulaski County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Inuvik</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - west Northwest Territories</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Iqaluit</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - east Nunavut - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jamaica</string>
++      </property>
++      <property name="text" >
++       <string>America/JM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Juneau</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Alaska Time - Alaska panhandle</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Louisville</string>
++      </property>
++      <property name="text" >
++       <string>America/Kentucky/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Kentucky - Louisville area</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Monticello</string>
++      </property>
++      <property name="text" >
++       <string>America/Kentucky/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Kentucky - Wayne County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>La Paz</string>
++      </property>
++      <property name="text" >
++       <string>America/BO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lima</string>
++      </property>
++      <property name="text" >
++       <string>America/PE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Los Angeles</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pacific Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Maceio</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Alagoas, Sergipe</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Managua</string>
++      </property>
++      <property name="text" >
++       <string>America/NI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Manaus</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>E Amazonas</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Martinique</string>
++      </property>
++      <property name="text" >
++       <string>America/MQ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mazatlan</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - S Baja, Nayarit, Sinaloa</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Menominee</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Michigan - Dickinson, Gogebic, Iron &amp; Menominee Counties</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Merida</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Campeche, Yucatan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mexico City</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Miquelon</string>
++      </property>
++      <property name="text" >
++       <string>America/PM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Moncton</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic Time - New Brunswick</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Monterrey</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Montevideo</string>
++      </property>
++      <property name="text" >
++       <string>America/UY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Montreal</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Quebec - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Montserrat</string>
++      </property>
++      <property name="text" >
++       <string>America/MS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nassau</string>
++      </property>
++      <property name="text" >
++       <string>America/BS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>New York</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nipigon</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Ontario &amp; Quebec - places that did not observe DST 1967-1973</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nome</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Alaska Time - west Alaska</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Noronha</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atlantic islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Center</string>
++      </property>
++      <property name="text" >
++       <string>America/North Dakota/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - North Dakota - Oliver County</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>New Salem</string>
++      </property>
++      <property name="text" >
++       <string>America/North Dakota/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - North Dakota - Morton County (except Mandan area)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Panama</string>
++      </property>
++      <property name="text" >
++       <string>America/PA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Pangnirtung</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Pangnirtung, Nunavut</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Paramaribo</string>
++      </property>
++      <property name="text" >
++       <string>America/SR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Phoenix</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Standard Time - Arizona</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Port-au-Prince</string>
++      </property>
++      <property name="text" >
++       <string>America/HT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Port of Spain</string>
++      </property>
++      <property name="text" >
++       <string>America/TT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Porto Velho</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>W Para, Rondonia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Puerto Rico</string>
++      </property>
++      <property name="text" >
++       <string>America/PR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rainy River</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Rainy River &amp; Fort Frances, Ontario</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rankin Inlet</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - central Nunavut</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Recife</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pernambuco</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Regina</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Standard Time - Saskatchewan - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Resolute</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Resolute, Nunavut</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rio Branco</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Acre</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Santiago</string>
++      </property>
++      <property name="text" >
++       <string>America/CL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Santo Domingo</string>
++      </property>
++      <property name="text" >
++       <string>America/DO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sao Paulo</string>
++      </property>
++      <property name="text" >
++       <string>America/BR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>S &amp; SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Scoresbysund</string>
++      </property>
++      <property name="text" >
++       <string>America/GL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Scoresbysund / Ittoqqortoormiit</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Shiprock</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - Navajo</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Johns</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Newfoundland Time, including SE Labrador</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Kitts</string>
++      </property>
++      <property name="text" >
++       <string>America/KN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Lucia</string>
++      </property>
++      <property name="text" >
++       <string>America/LC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Thomas</string>
++      </property>
++      <property name="text" >
++       <string>America/VI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Vincent</string>
++      </property>
++      <property name="text" >
++       <string>America/VC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Swift Current</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Standard Time - Saskatchewan - midwest</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tegucigalpa</string>
++      </property>
++      <property name="text" >
++       <string>America/HN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Thule</string>
++      </property>
++      <property name="text" >
++       <string>America/GL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Thule / Pituffik</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Thunder Bay</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Thunder Bay, Ontario</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tijuana</string>
++      </property>
++      <property name="text" >
++       <string>America/MX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pacific Time</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Toronto</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Eastern Time - Ontario - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tortola</string>
++      </property>
++      <property name="text" >
++       <string>America/VG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vancouver</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pacific Time - west British Columbia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Whitehorse</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Pacific Time - south Yukon</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Winnipeg</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Central Time - Manitoba &amp; west Ontario</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Yakutat</string>
++      </property>
++      <property name="text" >
++       <string>America/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Alaska Time - Alaska panhandle neck</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Yellowknife</string>
++      </property>
++      <property name="text" >
++       <string>America/CA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Mountain Time - central Northwest Territories</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Casey</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Casey Station, Bailey Peninsula</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Davis</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Davis Station, Vestfold Hills</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>DumontDUrville</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Dumont-d'Urville Station, Terre Adelie</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mawson</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Mawson Station, Holme Bay</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>McMurdo</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>McMurdo Station, Ross Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Palmer</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Palmer Station, Anvers Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rothera</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Rothera Station, Adelaide Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>South Pole</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Amundsen-Scott Station, South Pole</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Syowa</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Syowa Station, E Ongul I</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vostok</string>
++      </property>
++      <property name="text" >
++       <string>Antarctica/AQ</string>
++      </property>
++      <property name="text" >
++       <string>Vostok Station, S Magnetic Pole</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Longyearbyen</string>
++      </property>
++      <property name="text" >
++       <string>Arctic/SJ</string>
++      </property>
++      <property name="text" >
++       <string>Svalbard</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Aden</string>
++      </property>
++      <property name="text" >
++       <string>Asia/YE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Almaty</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Amman</string>
++      </property>
++      <property name="text" >
++       <string>Asia/JO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Anadyr</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+10 - Bering Sea</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Aqtau</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Aqtobe</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Aqtobe (Aktobe)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ashgabat</string>
++      </property>
++      <property name="text" >
++       <string>Asia/TM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Baghdad</string>
++      </property>
++      <property name="text" >
++       <string>Asia/IQ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bahrain</string>
++      </property>
++      <property name="text" >
++       <string>Asia/BH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Baku</string>
++      </property>
++      <property name="text" >
++       <string>Asia/AZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bangkok</string>
++      </property>
++      <property name="text" >
++       <string>Asia/TH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Beirut</string>
++      </property>
++      <property name="text" >
++       <string>Asia/LB</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bishkek</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Brunei</string>
++      </property>
++      <property name="text" >
++       <string>Asia/BN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Calcutta</string>
++      </property>
++      <property name="text" >
++       <string>Asia/IN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Choibalsan</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Dornod, Sukhbaatar</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chongqing</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Colombo</string>
++      </property>
++      <property name="text" >
++       <string>Asia/LK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Damascus</string>
++      </property>
++      <property name="text" >
++       <string>Asia/SY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dhaka</string>
++      </property>
++      <property name="text" >
++       <string>Asia/BD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dili</string>
++      </property>
++      <property name="text" >
++       <string>Asia/TL</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dubai</string>
++      </property>
++      <property name="text" >
++       <string>Asia/AE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dushanbe</string>
++      </property>
++      <property name="text" >
++       <string>Asia/TJ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Gaza</string>
++      </property>
++      <property name="text" >
++       <string>Asia/PS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Harbin</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Heilongjiang (except Mohe), Jilin</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Hong Kong</string>
++      </property>
++      <property name="text" >
++       <string>Asia/HK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Hovd</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Irkutsk</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+05 - Lake Baikal</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jakarta</string>
++      </property>
++      <property name="text" >
++       <string>Asia/ID</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Java &amp; Sumatra</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jayapura</string>
++      </property>
++      <property name="text" >
++       <string>Asia/ID</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Irian Jaya &amp; the Moluccas</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jerusalem</string>
++      </property>
++      <property name="text" >
++       <string>Asia/IL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kabul</string>
++      </property>
++      <property name="text" >
++       <string>Asia/AF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kamchatka</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+09 - Kamchatka</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Karachi</string>
++      </property>
++      <property name="text" >
++       <string>Asia/PK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kashgar</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>west Tibet &amp; Xinjiang</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Katmandu</string>
++      </property>
++      <property name="text" >
++       <string>Asia/NP</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Krasnoyarsk</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+04 - Yenisei River</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kuala Lumpur</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>peninsular Malaysia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kuching</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Sabah &amp; Sarawak</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kuwait</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Macau</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Magadan</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+08 - Magadan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Makassar</string>
++      </property>
++      <property name="text" >
++       <string>Asia/ID</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>east &amp; south Borneo, Celebes, Bali, Nusa Tengarra, west Timor</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Manila</string>
++      </property>
++      <property name="text" >
++       <string>Asia/PH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Muscat</string>
++      </property>
++      <property name="text" >
++       <string>Asia/OM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nicosia</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Novosibirsk</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+03 - Novosibirsk</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Omsk</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+03 - west Siberia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Oral</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>West Kazakhstan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Phnom Penh</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Pontianak</string>
++      </property>
++      <property name="text" >
++       <string>Asia/ID</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>west &amp; central Borneo</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Pyongyang</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KP</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Qatar</string>
++      </property>
++      <property name="text" >
++       <string>Asia/QA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Qyzylorda</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Qyzylorda (Kyzylorda, Kzyl-Orda)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rangoon</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Riyadh</string>
++      </property>
++      <property name="text" >
++       <string>Asia/SA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Saigon</string>
++      </property>
++      <property name="text" >
++       <string>Asia/VN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sakhalin</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+07 - Sakhalin Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Samarkand</string>
++      </property>
++      <property name="text" >
++       <string>Asia/UZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>west Uzbekistan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Seoul</string>
++      </property>
++      <property name="text" >
++       <string>Asia/KR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Shanghai</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>east China - Beijing, Guangdong, Shanghai, etc.</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Singapore</string>
++      </property>
++      <property name="text" >
++       <string>Asia/SG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Taipei</string>
++      </property>
++      <property name="text" >
++       <string>Asia/TW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tashkent</string>
++      </property>
++      <property name="text" >
++       <string>Asia/UZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>east Uzbekistan</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tbilisi</string>
++      </property>
++      <property name="text" >
++       <string>Asia/GE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tehran</string>
++      </property>
++      <property name="text" >
++       <string>Asia/IR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Thimphu</string>
++      </property>
++      <property name="text" >
++       <string>Asia/BT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tokyo</string>
++      </property>
++      <property name="text" >
++       <string>Asia/JP</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ulaanbaatar</string>
++      </property>
++      <property name="text" >
++       <string>Asia/MN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Urumqi</string>
++      </property>
++      <property name="text" >
++       <string>Asia/CN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most of Tibet &amp; Xinjiang</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vientiane</string>
++      </property>
++      <property name="text" >
++       <string>Asia/LA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vladivostok</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+07 - Amur River</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Yakutsk</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+06 - Lena River</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Yekaterinburg</string>
++      </property>
++      <property name="text" >
++       <string>Asia/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+02 - Urals</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Yerevan</string>
++      </property>
++      <property name="text" >
++       <string>Asia/AM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Azores</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/PT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Azores</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bermuda</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/BM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Canary</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/ES</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Canary Islands</string>
++      </property>
+      </item>
+-    </layout>
++     <item>
++      <property name="text" >
++       <string>Cape Verde</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/CV</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Faroe</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/FO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jan Mayen</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/SJ</string>
++      </property>
++      <property name="text" >
++       <string>Jan Mayen</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Madeira</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/PT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Madeira Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Reykjavik</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/IS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>South Georgia</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/GS</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>St Helena</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/SH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Stanley</string>
++      </property>
++      <property name="text" >
++       <string>Atlantic/FK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Adelaide</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>South Australia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Brisbane</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Queensland - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Broken Hill</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>New South Wales - Yancowinna</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Currie</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Tasmania - King Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Darwin</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Northern Territory</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Eucla</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Western Australia - Eucla area</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Hobart</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Tasmania - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lindeman</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Queensland - Holiday Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lord Howe</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Lord Howe Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Melbourne</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Victoria</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Perth</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Western Australia - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sydney</string>
++      </property>
++      <property name="text" >
++       <string>Australia/AU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>New South Wales - most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Amsterdam</string>
++      </property>
++      <property name="text" >
++       <string>Europe/NL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Andorra</string>
++      </property>
++      <property name="text" >
++       <string>Europe/AD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Athens</string>
++      </property>
++      <property name="text" >
++       <string>Europe/GR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Belgrade</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Berlin</string>
++      </property>
++      <property name="text" >
++       <string>Europe/DE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bratislava</string>
++      </property>
++      <property name="text" >
++       <string>Europe/SK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Brussels</string>
++      </property>
++      <property name="text" >
++       <string>Europe/BE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Bucharest</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Budapest</string>
++      </property>
++      <property name="text" >
++       <string>Europe/HU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chisinau</string>
++      </property>
++      <property name="text" >
++       <string>Europe/MD</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Copenhagen</string>
++      </property>
++      <property name="text" >
++       <string>Europe/DK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Dublin</string>
++      </property>
++      <property name="text" >
++       <string>Europe/IE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Gibraltar</string>
++      </property>
++      <property name="text" >
++       <string>Europe/GI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guernsey</string>
++      </property>
++      <property name="text" >
++       <string>Europe/GG</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Helsinki</string>
++      </property>
++      <property name="text" >
++       <string>Europe/FI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Isle of Man</string>
++      </property>
++      <property name="text" >
++       <string>Europe/IM</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Istanbul</string>
++      </property>
++      <property name="text" >
++       <string>Europe/TR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Jersey</string>
++      </property>
++      <property name="text" >
++       <string>Europe/JE</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kaliningrad</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow-01 - Kaliningrad</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kiev</string>
++      </property>
++      <property name="text" >
++       <string>Europe/UA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Lisbon</string>
++      </property>
++      <property name="text" >
++       <string>Europe/PT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>mainland</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ljubljana</string>
++      </property>
++      <property name="text" >
++       <string>Europe/SI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>London</string>
++      </property>
++      <property name="text" >
++       <string>Europe/GB</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Luxembourg</string>
++      </property>
++      <property name="text" >
++       <string>Europe/LU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Madrid</string>
++      </property>
++      <property name="text" >
++       <string>Europe/ES</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>mainland</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Malta</string>
++      </property>
++      <property name="text" >
++       <string>Europe/MT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mariehamn</string>
++      </property>
++      <property name="text" >
++       <string>Europe/AX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Minsk</string>
++      </property>
++      <property name="text" >
++       <string>Europe/BY</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Monaco</string>
++      </property>
++      <property name="text" >
++       <string>Europe/MC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Moscow</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+00 - west Russia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Oslo</string>
++      </property>
++      <property name="text" >
++       <string>Europe/NO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Paris</string>
++      </property>
++      <property name="text" >
++       <string>Europe/FR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Podgorica</string>
++      </property>
++      <property name="text" >
++       <string>Europe/ME</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Prague</string>
++      </property>
++      <property name="text" >
++       <string>Europe/CZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Riga</string>
++      </property>
++      <property name="text" >
++       <string>Europe/LV</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rome</string>
++      </property>
++      <property name="text" >
++       <string>Europe/IT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Samara</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+01 - Samara, Udmurtia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>San Marino</string>
++      </property>
++      <property name="text" >
++       <string>Europe/SM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sarajevo</string>
++      </property>
++      <property name="text" >
++       <string>Europe/BA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Simferopol</string>
++      </property>
++      <property name="text" >
++       <string>Europe/UA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>central Crimea</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Skopje</string>
++      </property>
++      <property name="text" >
++       <string>Europe/MK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Sofia</string>
++      </property>
++      <property name="text" >
++       <string>Europe/BG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Stockholm</string>
++      </property>
++      <property name="text" >
++       <string>Europe/SE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tallinn</string>
++      </property>
++      <property name="text" >
++       <string>Europe/EE</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tirane</string>
++      </property>
++      <property name="text" >
++       <string>Europe/AL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Uzhgorod</string>
++      </property>
++      <property name="text" >
++       <string>Europe/UA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Ruthenia</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vaduz</string>
++      </property>
++      <property name="text" >
++       <string>Europe/LI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vatican</string>
++      </property>
++      <property name="text" >
++       <string>Europe/VA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vienna</string>
++      </property>
++      <property name="text" >
++       <string>Europe/AT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Vilnius</string>
++      </property>
++      <property name="text" >
++       <string>Europe/LT</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Volgograd</string>
++      </property>
++      <property name="text" >
++       <string>Europe/RU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Moscow+00 - Caspian Sea</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Warsaw</string>
++      </property>
++      <property name="text" >
++       <string>Europe/PL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Zagreb</string>
++      </property>
++      <property name="text" >
++       <string>Europe/HR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Zaporozhye</string>
++      </property>
++      <property name="text" >
++       <string>Europe/UA</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Zurich</string>
++      </property>
++      <property name="text" >
++       <string>Europe/CH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Antananarivo</string>
++      </property>
++      <property name="text" >
++       <string>Indian/MG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chagos</string>
++      </property>
++      <property name="text" >
++       <string>Indian/IO</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Christmas</string>
++      </property>
++      <property name="text" >
++       <string>Indian/CX</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Cocos</string>
++      </property>
++      <property name="text" >
++       <string>Indian/CC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Comoro</string>
++      </property>
++      <property name="text" >
++       <string>Indian/KM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kerguelen</string>
++      </property>
++      <property name="text" >
++       <string>Indian/TF</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mahe</string>
++      </property>
++      <property name="text" >
++       <string>Indian/SC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Maldives</string>
++      </property>
++      <property name="text" >
++       <string>Indian/MV</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mauritius</string>
++      </property>
++      <property name="text" >
++       <string>Indian/MU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Mayotte</string>
++      </property>
++      <property name="text" >
++       <string>Indian/YT</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Reunion</string>
++      </property>
++      <property name="text" >
++       <string>Indian/RE</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Apia</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/WS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Auckland</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Chatham</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NZ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Chatham Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Easter</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/CL</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Easter Island &amp; Sala y Gomez</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Efate</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/VU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Enderbury</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/KI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Phoenix Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Fakaofo</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/TK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Fiji</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/FJ</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Funafuti</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/TV</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Galapagos</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/EC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Galapagos Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Gambier</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Gambier Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guadalcanal</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/SB</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Guam</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/GU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Honolulu</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/US</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Hawaii</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Johnston</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/UM</string>
++      </property>
++      <property name="text" >
++       <string>Johnston Atoll</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kiritimati</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/KI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Line Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kosrae</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/FM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Kosrae</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Kwajalein</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/MH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Kwajalein</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Majuro</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/MH</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>most locations</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Marquesas</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Marquesas Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Midway</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/UM</string>
++      </property>
++      <property name="text" >
++       <string>Midway Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Nauru</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NR</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Niue</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NU</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Norfolk</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Noumea</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/NC</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Pago Pago</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/AS</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Palau</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PW</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Pitcairn</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PN</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Ponape</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/FM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Ponape (Pohnpei)</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Port Moresby</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PG</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Rarotonga</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/CK</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Saipan</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/MP</string>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tahiti</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/PF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Society Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tarawa</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/KI</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Gilbert Islands</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Tongatapu</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/TO</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Truk</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/FM</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string>Truk (Chuuk) and Yap</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Wake</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/UM</string>
++      </property>
++      <property name="text" >
++       <string>Wake Island</string>
++      </property>
++     </item>
++     <item>
++      <property name="text" >
++       <string>Wallis</string>
++      </property>
++      <property name="text" >
++       <string>Pacific/WF</string>
++      </property>
++      <property name="icon" >
++       <iconset/>
++      </property>
++      <property name="text" >
++       <string/>
++      </property>
++     </item>
++    </widget>
++   </item>
++   <item>
++    <widget class="QCheckBox" name="showSecondHandCheckBox" >
++     <property name="toolTip" >
++      <string>Display the second hand</string>
++     </property>
++     <property name="whatsThis" >
++      <string>Check this if you want to display the second hand in order to see the seconds.</string>
++     </property>
++     <property name="text" >
++      <string>Display seconds</string>
++     </property>
++    </widget>
++   </item>
++   <item>
++    <widget class="QCheckBox" name="showTimeStringCheckBox" >
++     <property name="toolTip" >
++      <string>Display the time as a string</string>
++     </property>
++     <property name="whatsThis" >
++      <string>Check this if you want to display the time as a string within the clock.</string>
++     </property>
++     <property name="text" >
++      <string>Also display the time in text</string>
++     </property>
++    </widget>
+    </item>
+   </layout>
+  </widget>
+--- a/plasma/applets/clock/plasma-clock-analog.desktop
++++ b/plasma/applets/clock/plasma-clock-analog.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Analog Clock
+ Name[ar]=ساعة عادية
+ Name[be]=Аналагавы гадзіннік
+@@ -8,6 +7,7 @@
+ Name[csb]=Analogòwi zédżer
+ Name[de]=Analoge Uhr
+ Name[el]=Αναλογικό ρολόι
++Name[eo]=Analoga horloĝo
+ Name[es]=Reloj analógico
+ Name[et]=Analoogkell
+ Name[fa]=ساعت قیاسی
+@@ -36,6 +36,7 @@
+ Name[zh_TW]=類比時鐘
+ Comment=An SVG themable clock
+ Comment[bg]=Часовник с SVG тема
++Comment[ca]=Un rellotge que permet temes SVG
+ Comment[de]=Eine Uhr mit SVG-fähigem Design
+ Comment[el]=Ένα ρολόι με θέματα SVG
+ Comment[es]=Un reloj con temas en formato SVG
+@@ -53,6 +54,7 @@
+ Comment[ne]=एउटा एसभीजी थेमेबल घडी
+ Comment[nl]=Een klok met SVG-themamogelijkheden
+ Comment[nn]=Ei SVG-basert klokke med fleire tema
++Comment[pa]=ਇੱਕ SVG ਥੀਮ-ਯੋਗ ਕਲਾਕ
+ Comment[pt]=Um relógio com temas em SVG
+ Comment[pt_BR]=Um relógio com temas em SVG
+ Comment[sr]=Часовник са СВГ темама
+@@ -64,7 +66,7 @@
+ Comment[zh_TW]=SVG 可調整外觀時鐘
+ Icon=chronometer
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet,Plasma/Containment
+ 
+ X-KDE-Library=plasma_applet_clock
+ X-KDE-PluginInfo-Author=The Plasma Team
+--- a/plasma/applets/kickoff/applet/applet.cpp
++++ b/plasma/applets/kickoff/applet/applet.cpp
+@@ -29,8 +29,9 @@
+ #include <KIcon>
+ 
+ // Plasma
+-#include <plasma/widgets/boxlayout.h>
++#include <plasma/layouts/boxlayout.h>
+ #include <plasma/widgets/icon.h>
++#include <plasma/containment.h>
+ 
+ // Local
+ #include "ui/launcher.h"
+@@ -88,6 +89,9 @@
+             globalPos.ry() -= m_launcher->height(); 
+             m_launcher->move(globalPos);
+         }
++        if (containment()) {
++            containment()->emitLaunchActivated();
++        }
+     }
+ 
+     m_launcher->setVisible(!m_launcher->isVisible());
+--- a/plasma/applets/kickoff/applet/plasma-applet-launcher.desktop
++++ b/plasma/applets/kickoff/applet/plasma-applet-launcher.desktop
+@@ -1,9 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Application Launcher
+ Name[ca]=Engegador d'aplicacions
+ Name[de]=Programmstarter
+ Name[el]=Εκτέλεση εφαρμογών
++Name[eo]=Aplikaĵolanĉilo
+ Name[et]=Rakenduste käivitaja
+ Name[ga]=Tosaitheoir Feidhmchlár
+ Name[ja]=アプリケーションランチャー
+@@ -13,6 +13,7 @@
+ Name[ne]=अनुप्रयोक सुरुआतकर्ता
+ Name[nl]=Programmastarter
+ Name[nn]=Programstartar
++Name[pa]=ਐਪਲੀਕੇਸ਼ ਲਾਂਚਰ
+ Name[pt]=Lançador de Aplicações
+ Name[pt_BR]=Lançador de Aplicativos
+ Name[sl]=Zaganjalnik programov
+@@ -26,6 +27,7 @@
+ Comment[ca]=Executador per a iniciar aplicacions
+ Comment[de]=Startet verschiedene Programme
+ Comment[el]=Εκτέλεση εφαρμογών
++Comment[eo]=Aplikaĵlanĉilo
+ Comment[et]=Rakenduste käivitaja
+ Comment[ga]=Tosaitheoir a thosaíonn feidhmchláir
+ Comment[ja]=アプリケーションを起動するランチャー
+@@ -35,6 +37,7 @@
+ Comment[ne]=अनुप्रयोग सुरुआत गर्न सुरुआतकर्ता
+ Comment[nl]=Applet voor het starten van programma's
+ Comment[nn]=Start program
++Comment[pa]=ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਣ ਲਈ ਲਾਂਚਰ
+ Comment[pt]=Lançador para iniciar aplicações
+ Comment[pt_BR]=Lançador para iniciar aplicativos
+ Comment[sr]=Покретач за програме
+@@ -45,7 +48,7 @@
+ Comment[zh_TW]=應用程式啟動器
+ Icon=
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_launcher
+ X-KDE-PluginInfo-Author=Robert Knight
+--- a/plasma/applets/kickoff/STATUS-TODO
++++ b/plasma/applets/kickoff/STATUS-TODO
+@@ -44,7 +44,7 @@
+ 	  mailing list discussion.
+ 
+ Presentation
+-    - When used as a Plasma applet the Kickoff window does not
++    + When used as a Plasma applet the Kickoff window does not
+       appear and disappear smoothly.  (Works okay when standalone
+       Kickoff application is run) [Also Performance?]
+ 	- Missing the custom QTabBar styling to draw the view names
+--- a/plasma/applets/kickoff/core/urlitemlauncher.cpp
++++ b/plasma/applets/kickoff/core/urlitemlauncher.cpp
+@@ -29,6 +29,8 @@
+ 
+ // KDE
+ #include <KRun>
++#include <Solid/Device>
++#include <Solid/StorageAccess>
+ 
+ // Local
+ #include "core/models.h"
+@@ -68,20 +70,32 @@
+     , d(new Private)
+ {
+ }
++
+ UrlItemLauncher::~UrlItemLauncher()
+ {
+     delete d;
+ }
++
+ bool UrlItemLauncher::openItem(const QModelIndex& index)
+ {
+-    QUrl url(index.data(UrlRole).value<QString>());
+-    if (url.isEmpty()) {
++    QString urlString = index.data(UrlRole).value<QString>();
++    if (urlString.isEmpty()) {
+         qDebug() << "Item" << index.data(Qt::DisplayRole) << "has to URL to open.";
+         return false;
+     }
+ 
+-    qDebug() << "Opening item with URL" << url;
++    qDebug() << "Opening item with URL" << urlString;
+ 
++    if (deviceFactoryData()->deviceByUrl.contains(urlString)) {
++        Solid::Device device = deviceFactoryData()->deviceByUrl[urlString];
++        Solid::StorageAccess *access = device.as<Solid::StorageAccess>();
++
++        if (!access->isAccessible()) {
++            access->setup();
++        }
++    }
++
++    QUrl url(urlString);
+     HandlerInfo protocolHandler = Private::globalHandlers[url.scheme()];
+     if (protocolHandler.type == ProtocolHandler && protocolHandler.handler != 0) {
+         return protocolHandler.handler->openUrl(url);
+@@ -95,6 +109,7 @@
+ 
+     return Private::genericHandler.openUrl(url);
+ }
++
+ void UrlItemLauncher::addGlobalHandler(HandlerType type,const QString& name,UrlItemHandler *handler)
+ {
+     HandlerInfo info;
+--- a/plasma/applets/kickoff/core/systemmodel.cpp
++++ b/plasma/applets/kickoff/core/systemmodel.cpp
+@@ -53,8 +53,8 @@
+         ,removableStorageItem(0)
+         ,fixedStorageItem(0)
+     {
+-        
+     }
++
+     QStandardItem *lookupDeviceByMountPoint(const QString& mountPoint)
+     {
+         QString mountUrl = KUrl(mountPoint).url();
+@@ -71,10 +71,6 @@
+             if (!access) {
+                 return;
+             }
+-            if (!access->isAccessible()) {
+-                bool result = const_cast<Solid::StorageAccess*>(access)->setup();
+-                qDebug() << "Setup result:" << result;
+-            }
+ 
+             QStandardItem *deviceItem = StandardItemFactory::createItemForDevice(device);
+             if (!deviceItem) {
+@@ -100,6 +96,7 @@
+             }
+             deviceItemById.insert(device.udi(),deviceItem);
+     }
++
+     void loadStorageItems()
+     {
+         // get device list
+@@ -108,11 +105,11 @@
+         // add items
+         removableStorageItem = new QStandardItem(i18n("Removable Storage"));
+         fixedStorageItem = new QStandardItem(i18n("Storage"));
+-        
++
+         foreach(const Solid::Device& device,deviceList) {
+-            addDevice(device);        
++            addDevice(device);
+         }
+-        
++
+         q->appendRow(removableStorageItem);
+         q->appendRow(fixedStorageItem);
+     }
+@@ -125,7 +122,6 @@
+         placesItem->appendRow(homeItem);
+ 
+         QStandardItem *networkItem = StandardItemFactory::createItemForUrl("remote:/");
+-        networkItem->setData(QVariant(),SubTitleRole);
+         placesItem->appendRow(networkItem); 
+ 
+         KService::Ptr settingsService = KService::serviceByStorageId("kde4-systemsettings.desktop");
+@@ -135,6 +131,7 @@
+ 
+         q->appendRow(placesItem);
+     }
++
+     void queryFreeSpace(const QString& mountPoint)
+     {
+         KDiskFreeSpace *freeSpace = KDiskFreeSpace::findUsageInfo(mountPoint);
+@@ -155,19 +152,21 @@
+     d->loadPlaces();
+     d->loadStorageItems();
+ 
+-    connect(Solid::DeviceNotifier::instance(),SIGNAL(deviceAdded(QString)),this,SLOT(deviceAdded(QString)));
+-    connect(Solid::DeviceNotifier::instance(),SIGNAL(deviceRemoved(QString)),this,SLOT(deviceRemoved(QString)));
++    connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(QString)), this, SLOT(deviceAdded(QString)));
++    connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceRemoved(QString)), this, SLOT(deviceRemoved(QString)));
++}
+ 
+-    }
+ SystemModel::~SystemModel()
+ {
+     delete d;
+ }
++
+ void SystemModel::deviceAdded(const QString& udi)
+ {
+     qDebug() << "SystemModel adding device" << udi;
+     d->addDevice(Solid::Device(udi));
+ }
++
+ void SystemModel::deviceRemoved(const QString& udi)
+ {
+     QStandardItem *deviceItem = d->deviceItemById[udi];
+@@ -177,6 +176,7 @@
+         d->deviceItemById.remove(udi);
+     }
+ }
++
+ void SystemModel::registerDevicePaths()
+ {
+     QList<Solid::Device> deviceList = Solid::Device::listFromType(Solid::DeviceInterface::StorageAccess,QString());
+@@ -187,6 +187,7 @@
+         }
+     }
+ }
++
+ void SystemModel::freeSpaceInfoAvailable(const QString& mountPoint,quint64,quint64 kbUsed,quint64 kbAvailable)
+ {
+     QStandardItem *deviceItem = d->lookupDeviceByMountPoint(mountPoint);
+--- a/plasma/applets/kickoff/core/models.cpp
++++ b/plasma/applets/kickoff/core/models.cpp
+@@ -25,36 +25,42 @@
+ #include <QStandardItem>
+ 
+ // KDE
++#include <KDebug>
++#include <KConfigGroup>
+ #include <KDesktopFile>
+ #include <KIcon>
+ #include <KGlobal>
+ #include <KMimeType>
+ #include <KUrl>
+-#include <solid/device.h>
+-#include <solid/storageaccess.h>
++#include <Solid/Device>
++#include <Solid/StorageAccess>
++#include <Solid/StorageDrive>
+ 
+ using namespace Kickoff;
+ 
+ static KUrl homeUrl(getenv("HOME"));
+ static KUrl remoteUrl("remote:/");
+ 
+-class StandardItemFactoryData
++namespace Kickoff
+ {
+-public:
+-    QHash<QString,Solid::Device> deviceByUrl;
+-};
+-K_GLOBAL_STATIC(StandardItemFactoryData,factoryData)
++
++K_GLOBAL_STATIC(StandardItemFactoryData, factoryData)
++
++StandardItemFactoryData* deviceFactoryData()
++{
++    return factoryData;
++}
++} // namespace Kickoff
+ 
+ QStandardItem *StandardItemFactory::createItemForUrl(const QString& urlString)
+ {
+     KUrl url(urlString);
+-    
++
+     QStandardItem *item = 0; 
+ 
+     if (factoryData->deviceByUrl.contains(urlString)) {
+         return createItemForDevice(factoryData->deviceByUrl[urlString]);
+-    } else if (url.isLocalFile() && QFileInfo(url.path()).suffix() == "desktop") {
+-
++    } else if (url.isLocalFile() && urlString.endsWith(".desktop")) {
+         // .desktop files may be services (type field == 'Application' or 'Service')
+         // or they may be other types such as links.
+         //
+@@ -70,39 +76,41 @@
+         item->setText(QFileInfo(urlString).baseName());
+         item->setIcon(KIcon(desktopFile.readIcon()));
+ 
+-        KUrl desktopUrl(desktopFile.readUrl()); 
++        //FIXME: this is a hack around borkage in KRecentDocuments which stores a path in the URL
++        //       field!
++        KUrl desktopUrl(desktopFile.desktopGroup().readPathEntry("URL", QString()));
+         item->setData(desktopUrl.url(),Kickoff::UrlRole);
+ 
+         QString subTitle = desktopUrl.isLocalFile() ? desktopUrl.path() : desktopUrl.prettyUrl();
++        item->setData(subTitle, Kickoff::SubTitleRole);
+ 
+-        item->setData(subTitle,Kickoff::SubTitleRole);
+-
+-        setSpecialUrlProperties(desktopUrl,item);
+-
++        setSpecialUrlProperties(desktopUrl, item);
+     } else {
+         item = new QStandardItem;
+         item->setText(QFileInfo(urlString).baseName());
+         item->setIcon(KIcon(KMimeType::iconNameForUrl(url)));
+-        
+-        item->setData(url.url(),Kickoff::UrlRole);
+-        QString subTitle = url.isLocalFile() ? url.path() : url.prettyUrl();
+-        item->setData(subTitle,Kickoff::SubTitleRole);
++        item->setData(url.url(), Kickoff::UrlRole);
++        QString subTitle = url.isLocalFile() && url.path().length() > 1 ? url.path() : url.prettyUrl();
++        item->setData(subTitle, Kickoff::SubTitleRole);
+ 
+-        setSpecialUrlProperties(url,item);
++        setSpecialUrlProperties(url, item);
+     }
+ 
+     return item;
+ }
+-void StandardItemFactory::associateDevice(const QString& url,const Solid::Device& device)
++
++void StandardItemFactory::associateDevice(const QString& url, const Solid::Device& device)
+ {
+-    factoryData->deviceByUrl.insert(url,device);
++    factoryData->deviceByUrl.insert(url, device);
+ }
++
+ Solid::Device StandardItemFactory::deviceForUrl(const QString& url)
+ {
+     return factoryData->deviceByUrl.value(url);
+ }
++
+ void StandardItemFactory::setSpecialUrlProperties(const KUrl& url,QStandardItem *item)
+-{        
++{
+     // specially handled URLs
+     if (url == homeUrl) {
+         item->setText(i18n("Home Folder"));
+@@ -111,6 +119,7 @@
+         item->setText(i18n("Network Folders"));
+     }
+ }
++
+ QStandardItem *StandardItemFactory::createItemForService(KService::Ptr service)
+ {
+     QStandardItem *appItem = new QStandardItem;
+@@ -128,18 +137,29 @@
+ 
+     return appItem;
+ }
++
+ QStandardItem *StandardItemFactory::createItemForDevice(const Solid::Device& device)
+ {
+-     const Solid::StorageAccess* access = device.as<Solid::StorageAccess>();
+-     if (!access)
++     const Solid::StorageAccess *access = device.as<Solid::StorageAccess>();
++     if (!access) {
+          return 0;
++     }
+ 
+      QStandardItem *deviceItem = new QStandardItem;
+-     deviceItem->setText(device.product());
+-     deviceItem->setIcon(KIcon(device.icon()));
+ 
+-     deviceItem->setData(access->filePath(),SubTitleRole);
+-     deviceItem->setData(KUrl(access->filePath()).url(),UrlRole);
++     //FIXME: we're never getting a drive back, so we aren't getting info on when
++     //       it is removable, etc
++     const Solid::StorageDrive *drive = device.as<Solid::StorageDrive>();
++     if (!drive || drive->isRemovable() || drive->isHotpluggable()) {
++         deviceItem->setText(device.product());
++         deviceItem->setData(access->filePath(), SubTitleRole);
++     } else {
++         deviceItem->setText(access->filePath());
++         deviceItem->setData(device.product(), SubTitleRole);
++     }
++
++     deviceItem->setIcon(KIcon(device.icon()));
++     deviceItem->setData(KUrl(access->filePath()).url(), UrlRole);
+ 
+      return deviceItem;
+ }
+--- a/plasma/applets/kickoff/core/favoritesmodel.cpp
++++ b/plasma/applets/kickoff/core/favoritesmodel.cpp
+@@ -72,7 +72,7 @@
+         QList<QString> desktopFiles;
+ 
+         foreach(const QString& application,applications) {
+-            KService::Ptr service = KService::serviceByStorageId(application);
++            KService::Ptr service = KService::serviceByStorageId("kde4-" + application + ".desktop");
+             if (service) {
+                 desktopFiles << service->entryPath();
+             }
+--- a/plasma/applets/kickoff/core/models.h
++++ b/plasma/applets/kickoff/core/models.h
+@@ -37,6 +37,14 @@
+ 
+ namespace Kickoff
+ {
++    class StandardItemFactoryData
++    {
++        public:
++            QHash<QString,Solid::Device> deviceByUrl;
++    };
++
++    StandardItemFactoryData* deviceFactoryData();
++
+     /** 
+      * Additional data roles for data which the Kickoff models supply with their items
+      * for use when rendering the items and launching them.
+--- a/plasma/applets/kickoff/ui/itemdelegate.h
++++ b/plasma/applets/kickoff/ui/itemdelegate.h
+@@ -40,18 +40,34 @@
+ class ItemDelegate : public QAbstractItemDelegate , public ItemStateProvider
+ {
+ public:
++    ItemDelegate();
+     virtual void paint(QPainter *painter,const QStyleOptionViewItem& option,const QModelIndex& index) const;
+     virtual QSize sizeHint(const QStyleOptionViewItem& option , const QModelIndex& index) const;
+ 
+     // reimplemented from ItemStateProvider
+     virtual bool isVisible(const QModelIndex& index) const;
+ 
+-private:
+-    QPainterPath roundedRectangle(const QRectF& rect,qreal radius) const;
+-    QFont fontForSubTitle(const QFont& titleFont) const;
++    // margin is equivalent to ItemDelegate::BACK_ARROW_WIDTH + ItemDelegate::BACK_ARROW_SPACING
++    static const int HEADER_LEFT_MARGIN = 5;
++    static const int HEADER_TOP_MARGIN = 10;
++    static const int HEADER_BOTTOM_MARGIN = 10;
++    static const int HEADER_HEIGHT = 35;
++    static const int FIRST_HEADER_HEIGHT = 20;
+ 
+     static const int ICON_TEXT_MARGIN = 10;
++    static const int ICON_SIZE = 32;
++
++    static const int ITEM_LEFT_MARGIN = 25;
++    static const int ITEM_RIGHT_MARGIN = 7;
++    static const int ITEM_HEIGHT = 32;
++    static const int TOP_OFFSET = 5;
+ 
++    static const int BACK_ARROW_WIDTH = 20;
++    static const int BACK_ARROW_SPACING = 5;
++
++private:
++    QPainterPath roundedRectangle(const QRectF& rect,qreal radius) const;
++    QFont fontForSubTitle(const QFont& titleFont) const;
+ };
+ 
+ }
+--- a/plasma/applets/kickoff/ui/contextmenufactory.cpp
++++ b/plasma/applets/kickoff/ui/contextmenufactory.cpp
+@@ -33,8 +33,8 @@
+ #include <KFileItem>
+ #include <KParts/BrowserExtension>
+ #include <KBookmarkManager>
+-#include <solid/device.h>
+-#include <solid/storageaccess.h>
++#include <Solid/Device>
++#include <Solid/StorageAccess>
+ 
+ // Local
+ #include "core/favoritesmodel.h"
+@@ -157,10 +157,12 @@
+ 
+     // display menu
+     KMenu menu;
+-    foreach(QAction *action, actions) {
++    menu.addTitle(index.data(Qt::DisplayRole).value<QString>());
++    foreach (QAction* action, actions) {
+         menu.addAction(action);
+     }
+-    QAction *result = menu.exec(QCursor::pos()); 
++
++    QAction *result = menu.exec(QCursor::pos());
+ 
+     if (result == favoriteAction) {
+         if (isFavorite) {
+--- a/plasma/applets/kickoff/ui/launcher.cpp
++++ b/plasma/applets/kickoff/ui/launcher.cpp
+@@ -1,4 +1,4 @@
+-/*  
++/*
+     Copyright 2007 Robert Knight <robertknight at gmail.com>
+ 
+     This library is free software; you can redistribute it and/or
+@@ -21,7 +21,8 @@
+ #include "ui/launcher.h"
+ 
+ // Qt
+-#include <QCoreApplication>
++#include <QApplication>
++#include <QDesktopWidget>
+ #include <QKeyEvent>
+ #include <QMouseEvent>
+ #include <QPainter>
+@@ -78,7 +79,7 @@
+         view->installEventFilter(q); 
+     }
+ 
+-    void addView(const QString& name,const QIcon& icon,
++    void addView(const QString& name, const QIcon& icon,
+                  QAbstractItemModel *model = 0, QAbstractItemView *view = 0)
+     {
+         view->setFrameStyle(QFrame::NoFrame);
+@@ -91,13 +92,13 @@
+         view->setDropIndicatorShown(true);
+         view->setDragDropMode(QAbstractItemView::InternalMove);
+         view->setModel(model);
++        //view->setCurrentIndex(QModelIndex());
+         setupEventHandler(view);
+ 
+-        connect(view,SIGNAL(customContextMenuRequested(QPoint)),q,SLOT(showViewContextMenu(QPoint)));
++        connect(view, SIGNAL(customContextMenuRequested(QPoint)), q, SLOT(showViewContextMenu(QPoint)));
+ 
+-        contentSwitcher->addTab(icon,name);
++        contentSwitcher->addTab(icon, name);
+         contentArea->addWidget(view);
+-        
+     }
+ 
+     void initTabs()
+@@ -113,7 +114,7 @@
+ 
+         // My Computer view
+         setupSystemView();
+-       
++
+         // Recently Used view 
+         setupRecentView();
+ 
+@@ -123,6 +124,7 @@
+         // Search Bar
+         setupSearchView();
+     }
++
+     void setupLeaveView()
+     {
+         LeaveModel *model = new LeaveModel(q);
+@@ -130,8 +132,9 @@
+         ItemDelegate *delegate = new ItemDelegate;
+         view->setItemDelegate(delegate);
+         view->setItemStateProvider(delegate);
+-        addView(i18n("Leave"),KIcon("application-exit"),model,view);
++        addView(i18n("Leave"), KIcon("application-exit"), model, view);
+     }
++
+     void setupFavoritesView()
+     {
+         FavoritesModel *model = new FavoritesModel(q);
+@@ -139,12 +142,13 @@
+         ItemDelegate *delegate = new ItemDelegate;
+         view->setItemDelegate(delegate);
+         view->setItemStateProvider(delegate);
+-        addView(i18n("Favorites"),KIcon("bookmark"),model,view);
++        addView(i18n("Favorites"), KIcon("bookmark"), model, view);
+ 
+-        connect(model,SIGNAL(rowsInserted(QModelIndex,int,int)),q,SLOT(focusFavoritesView()));
++        connect(model, SIGNAL(rowsInserted(QModelIndex, int, int)), q, SLOT(focusFavoritesView()));
+ 
+         favoritesView = view;
+     }
++
+     void setupAllProgramsView() 
+     {
+         ApplicationModel *applicationModel = new ApplicationModel(q);
+@@ -154,9 +158,10 @@
+         ItemDelegate *delegate = new ItemDelegate;
+         applicationView->setItemDelegate(delegate);
+ 
+-        addView(i18n("Applications"),KIcon("applications-other"),
+-                    applicationModel,applicationView);
++        addView(i18n("Applications"), KIcon("applications-other"),
++                    applicationModel, applicationView);
+     }
++
+     void setupRecentView()
+     {
+         RecentlyUsedModel *model = new RecentlyUsedModel(q);
+@@ -164,16 +169,17 @@
+         ItemDelegate *delegate = new ItemDelegate;
+         view->setItemDelegate(delegate);
+         view->setItemStateProvider(delegate);
+-        addView(i18n("Recently Used"),KIcon("view-calendar-week"),model,view);
++        addView(i18n("Recently Used"), KIcon("view-calendar-week"), model, view);
+ 
+-        QAction *clearApplications = new QAction(KIcon("edit-clear-history"),i18n("Clear Recent Applications"),q);
+-        QAction *clearDocuments = new QAction(KIcon("edit-clear-history"),i18n("Clear Recent Documents"),q);
++        QAction *clearApplications = new QAction(KIcon("edit-clear-history"), i18n("Clear Recent Applications"), q);
++        QAction *clearDocuments = new QAction(KIcon("edit-clear-history"), i18n("Clear Recent Documents"), q);
+ 
+-        connect(clearApplications,SIGNAL(triggered()),model,SLOT(clearRecentApplications()));
+-        connect(clearDocuments,SIGNAL(triggered()),model,SLOT(clearRecentDocuments()));
++        connect(clearApplications, SIGNAL(triggered()), model, SLOT(clearRecentApplications()));
++        connect(clearDocuments, SIGNAL(triggered()), model, SLOT(clearRecentDocuments()));
+ 
+-        contextMenuFactory->setViewActions(view,QList<QAction*>() << clearApplications << clearDocuments);
++        contextMenuFactory->setViewActions(view, QList<QAction*>() << clearApplications << clearDocuments);
+     }
++
+     void setupSystemView()
+     {
+         SystemModel *model = new SystemModel(q);
+@@ -181,9 +187,10 @@
+         ItemDelegate *delegate = new ItemDelegate;
+         view->setItemDelegate(delegate);
+         view->setItemStateProvider(delegate);
+-        
+-        addView(i18n("My Computer"),systemIcon(),model,view);
++
++        addView(i18n("My Computer"), systemIcon(), model, view);
+     }
++
+     void setupSearchView()
+     {
+         SearchModel *model = new SearchModel(q);
+@@ -197,31 +204,31 @@
+         view->setFocusPolicy(Qt::NoFocus);
+         setupEventHandler(view);
+ 
+-        connect(searchBar,SIGNAL(queryChanged(QString)),model,SLOT(setQuery(QString)));
+-        connect(searchBar,SIGNAL(queryChanged(QString)),q,SLOT(focusSearchView(QString)));
++        connect(searchBar, SIGNAL(queryChanged(QString)), model, SLOT(setQuery(QString)));
++        connect(searchBar, SIGNAL(queryChanged(QString)), q, SLOT(focusSearchView(QString)));
+ 
+         view->setContextMenuPolicy(Qt::CustomContextMenu);
+-        connect(view,SIGNAL(customContextMenuRequested(QPoint)),q,SLOT(showViewContextMenu(QPoint)));
+-        
++        connect(view, SIGNAL(customContextMenuRequested(QPoint)), q, SLOT(showViewContextMenu(QPoint)));
++
+         contentArea->addWidget(view);
+         searchView = view;
+     }
++
+     void registerUrlHandlers() 
+     {
+-        typedef UrlItemLauncher UIL;
+-        
+-        UIL::addGlobalHandler(UIL::ExtensionHandler,"desktop",new ServiceItemHandler);
+-        UIL::addGlobalHandler(UIL::ProtocolHandler,"leave",new LeaveItemHandler);
++        UrlItemLauncher::addGlobalHandler(UrlItemLauncher::ExtensionHandler, "desktop", new ServiceItemHandler);
++        UrlItemLauncher::addGlobalHandler(UrlItemLauncher::ProtocolHandler, "leave", new LeaveItemHandler);
+     }
++
+     QIcon systemIcon()
+     {
+-       QList<Solid::Device> batteryList = Solid::Device::listFromType(Solid::DeviceInterface::Battery,QString());
+-       
++       QList<Solid::Device> batteryList = Solid::Device::listFromType(Solid::DeviceInterface::Battery, QString());
++
+        if (batteryList.isEmpty()) {
+           return KIcon("computer");
+        } else {
+           return KIcon("computer-laptop");
+-       } 
++       }
+     }
+ 
+     Launcher * const q;
+@@ -236,7 +243,7 @@
+ };
+ 
+ Launcher::Launcher(QWidget *parent)
+-    : QWidget(parent,Qt::Window)
++    : QWidget(parent, Qt::Window)
+     , d(new Private(this))
+ {
+     QVBoxLayout *layout = new QVBoxLayout;
+@@ -250,8 +257,8 @@
+     d->contentSwitcher->installEventFilter(this);
+     d->contentSwitcher->setIconSize(QSize(48,48));
+     d->contentSwitcher->setShape(QTabBar::RoundedSouth);
+-    connect( d->contentSwitcher , SIGNAL(currentChanged(int)) , d->contentArea , 
+-             SLOT(setCurrentIndex(int)) );
++    connect(d->contentSwitcher, SIGNAL(currentChanged(int)),
++            d->contentArea, SLOT(setCurrentIndex(int)) );
+     d->contextMenuFactory = new ContextMenuFactory(this);
+ 
+     d->initTabs();
+@@ -271,21 +278,29 @@
+     // height to allow X number of items to be visible in the Favorites
+     // view (which shows initially on startup)
+     QSize size = QWidget::sizeHint();
+-    size.rheight() += 100;
++
++    // the extra 2 pixels are to make room for the content margins; see moveEvent
++    size.rwidth() += 2;
++    size.rheight() += 102;
++
+     return size;
+ }
++
+ void Launcher::setAutoHide(bool hide)
+ {
+     d->autoHide = hide;
+ }
++
+ bool Launcher::autoHide() const
+ {
+     return d->autoHide;
+ }
++
+ Launcher::~Launcher()
+ {
+     delete d;
+ }
++
+ void Launcher::focusSearchView(const QString& query)
+ {
+     if (!query.isEmpty()) {
+@@ -294,6 +309,7 @@
+         focusFavoritesView();
+     }
+ }
++
+ void Launcher::focusFavoritesView()
+ {
+     d->contentSwitcher->setCurrentIndex(0);
+@@ -363,15 +379,17 @@
+             return true;
+         } 
+     }
+-    return QWidget::eventFilter(object,event);
++    return QWidget::eventFilter(object, event);
+ }
++
+ void Launcher::showViewContextMenu(const QPoint& pos)
+ {
+     QAbstractItemView *view = qobject_cast<QAbstractItemView*>(sender());
+     if (view) {
+-        d->contextMenuFactory->showContextMenu(view,d->contentArea->mapFromParent(pos));
++        d->contextMenuFactory->showContextMenu(view, d->contentArea->mapFromParent(pos));
+     }
+ }
++
+ void Launcher::keyPressEvent(QKeyEvent *event)
+ {
+     if (event->key() == Qt::Key_Escape) {
+@@ -388,13 +406,47 @@
+ #endif
+ }
+ 
+-void Launcher::showEvent(QShowEvent *)
++void Launcher::moveEvent(QMoveEvent *e)
+ {
+     // focus the search bar ready for typing 
++    int leftMargin = 1;
++    int rightMargin = 1;
++    int topMargin = 1;
++    int bottomMargin = 1;
++
++    QRect r(QApplication::desktop()->screenGeometry(this));
++    QRect g(geometry());
++
++    if (g.left() == r.left()) {
++        leftMargin = 0;
++    }
++
++    if (g.right() == r.right()) {
++        rightMargin = 0;
++    }
++
++    if (g.top() == r.top()) {
++        topMargin = 0;
++    }
++
++    if (g.bottom() == r.bottom()) {
++        bottomMargin = 0;
++    }
++
++    setContentsMargins(leftMargin, rightMargin, topMargin, rightMargin);
++    QWidget::moveEvent(e);
++}
++
++void Launcher::showEvent(QShowEvent *e)
++{
+     d->searchBar->setFocus();
++    QWidget::showEvent(e);
+ }
+ 
+ void Launcher::paintEvent(QPaintEvent*)
+ {
+     // TODO - Draw a pretty background here
++    QPainter p(this);
++    p.setPen(QPen(palette().mid(), 0));
++    p.drawRect(rect().adjusted(0, 0, -1, -1));
+ }
+--- a/plasma/applets/kickoff/ui/flipscrollview.cpp
++++ b/plasma/applets/kickoff/ui/flipscrollview.cpp
+@@ -24,9 +24,15 @@
+ #include <QMouseEvent>
+ #include <QPainter>
+ #include <QScrollBar>
++#include <QStack>
+ #include <QTimeLine>
+ #include <QtDebug>
+ 
++// KDE
++#include <KDebug>
++
++#include "ui/itemdelegate.h"
++
+ using namespace Kickoff;
+ 
+ class FlipScrollView::Private
+@@ -37,7 +43,6 @@
+           , backArrowHover(false)
+           , flipAnimTimeLine(new QTimeLine())
+           , animLeftToRight(true)
+-          , previousVerticalOffset(0)
+     {
+     }
+     ~Private() 
+@@ -53,33 +58,40 @@
+             return q->rootIndex(); 
+         }
+     }
+-    QModelIndex previousRoot() const {
+-        return previousRootIndex;
++    QModelIndex previousRoot() const
++    {
++        if (previousRootIndices.isEmpty()) {
++            return QModelIndex();
++        }
++        return previousRootIndices.top();
+     }
+     void setCurrentRoot(const QModelIndex& index)
+     {
+-        previousRootIndex = currentRootIndex;
+-        previousVerticalOffset = q->verticalOffset();
+-        currentRootIndex = index;
+-       
+-        updateScrollBarRange();
+-        q->verticalScrollBar()->setValue(0);
+-
+-        // when going back up the tree, highlight the item which opens
+-        // the branch we have just left
+-        if (previousRootIndex.parent() == index)
+-            hoveredIndex = previousRootIndex;
+-        else
++        if (previousRootIndices.isEmpty() || previousRootIndices.top() != index) {
++            // we're entering into a submenu
++            animLeftToRight = true;
+             hoveredIndex = QModelIndex();
+-
+-        // set whether the flip animation should go in a left to right
+-        // or right to left direction. 
+-        // note: this check used gives the wrong value for animLeftToRight
+-        // if we go down more than one level of the tree at once 
+-        animLeftToRight = currentRootIndex.parent() == previousRootIndex;
++            previousRootIndices.push(currentRootIndex);
++            currentRootIndex = index;
++            previousVerticalOffsets.append(q->verticalOffset());
++            updateScrollBarRange();
++            q->verticalScrollBar()->setValue(0);
++        } else {
++            // we're exiting to the parent menu
++            animLeftToRight = false;
++            hoveredIndex = currentRootIndex;
++            previousRootIndices.pop();
++            currentRootIndex = index;
++            updateScrollBarRange();
++            q->verticalScrollBar()->setValue(previousVerticalOffsets.pop());
++        }
+ 
+         flipAnimTimeLine->start();
+     }
++    int previousVerticalOffset()
++    {
++        return previousVerticalOffsets.isEmpty() ? 0 : previousVerticalOffsets.top();
++    }
+     int treeDepth(const QModelIndex& headerIndex) const 
+     {
+         int depth = 0;
+@@ -96,11 +108,11 @@
+         int depth = treeDepth(headerIndex);
+ 
+         int top = -q->verticalScrollBar()->value();
+-        return QRect(backArrowRect().right()+BACK_ARROW_SPACING,top,
+-                     q->width()-backArrowRect().width()-1-BACK_ARROW_SPACING,
+-                     depth*metrics.height()+
+-                     ((depth > 0) ? HEADER_BOTTOM_MARGIN + HEADER_TOP_MARGIN : 1));
+-                     
++        return QRect(backArrowRect().right() + ItemDelegate::BACK_ARROW_SPACING,top,
++                     q->width() - backArrowRect().width() - 1 - ItemDelegate::BACK_ARROW_SPACING,
++                     depth * metrics.height() +
++                          ((depth > 0) ? ItemDelegate::HEADER_BOTTOM_MARGIN + ItemDelegate::HEADER_TOP_MARGIN
++                                       : 1));
+     }
+     void drawHeader(QPainter *painter,const QRect& rect,const QModelIndex& headerIndex)
+     {
+@@ -110,7 +122,7 @@
+ 
+          QFontMetrics metrics(q->font());
+ 
+-         int top = rect.bottom() - metrics.height() - HEADER_BOTTOM_MARGIN;
++         int top = rect.bottom() - metrics.height() - ItemDelegate::HEADER_BOTTOM_MARGIN;
+          QModelIndex branchIndex = headerIndex;
+          bool first = true;
+          while (branchIndex.isValid()) {
+@@ -133,7 +145,7 @@
+ 
+ /*         if (!first) {
+              painter->setPen(QPen(q->palette().mid(),2));
+-             int dividerY = rect.bottom()-HEADER_BOTTOM_MARGIN/2;
++             int dividerY = rect.bottom() - ItemDelegate::HEADER_BOTTOM_MARGIN/2;
+              painter->drawLine(rect.left(),dividerY,rect.right(),dividerY);
+          }*/
+         painter->restore();
+@@ -183,17 +195,18 @@
+     }
+     QRect backArrowRect() const
+     {
+-        return QRect(0,0,BACK_ARROW_WIDTH,q->height());
++        return QRect(0, 0, ItemDelegate::BACK_ARROW_WIDTH, q->height());
+     }
+     void updateScrollBarRange()
+     {
+         int childCount = q->model()->rowCount(currentRootIndex);
+         int pageSize = q->height();
+         int headerHeight = headerRect(currentRoot()).height();
+-        q->verticalScrollBar()->setRange(0,(childCount*itemHeight)+
+-                                            headerHeight-pageSize);
++        int itemH = q->sizeHintForIndex(q->model()->index(0, 0)).height();
++        q->verticalScrollBar()->setRange(0, (childCount * itemH) + //itemHeight) +
++                                             headerHeight - pageSize);
+         q->verticalScrollBar()->setPageStep(pageSize);
+-        q->verticalScrollBar()->setSingleStep(itemHeight);
++        q->verticalScrollBar()->setSingleStep(itemH);
+     }
+ 
+     FlipScrollView * const q;
+@@ -203,17 +216,13 @@
+ 
+     QTimeLine *flipAnimTimeLine;
+     bool animLeftToRight;
+-    int previousVerticalOffset;
+ 
+-    static const int BACK_ARROW_WIDTH = 20;
+-    static const int BACK_ARROW_SPACING = 5;
+     static const int FLIP_ANIM_DURATION = 300;
+-    static const int HEADER_TOP_MARGIN = 10;
+-    static const int HEADER_BOTTOM_MARGIN = 10;
+ 
+ private:
+      QPersistentModelIndex currentRootIndex;
+-     QPersistentModelIndex previousRootIndex;
++     QStack<QPersistentModelIndex> previousRootIndices;
++     QStack<int> previousVerticalOffsets;
+ };
+ 
+ FlipScrollView::FlipScrollView(QWidget *parent)
+@@ -241,7 +250,7 @@
+     int rowIndex = (point.y() - topOffset) / d->itemHeight;
+ 
+     QRect itemRect = rect();
+-    itemRect.setLeft(d->backArrowRect().right()+Private::BACK_ARROW_SPACING);
++    itemRect.setLeft(d->backArrowRect().right() + ItemDelegate::BACK_ARROW_SPACING);
+ 
+     if (rowIndex < items && itemRect.contains(point)) {
+        return model()->index(rowIndex,0,d->currentRoot());
+@@ -271,33 +280,41 @@
+ QRect FlipScrollView::visualRect(const QModelIndex& index) const
+ {
+     int topOffset = d->headerRect(index.parent()).height();
+-    int leftOffset = d->backArrowRect().width() + Private::BACK_ARROW_SPACING;
++    int leftOffset = d->backArrowRect().width() + ItemDelegate::BACK_ARROW_SPACING;
+ 
+-    if (index.parent() != d->currentRoot() && index.parent() != d->previousRoot())
++    if (index.parent() != d->currentRoot() && index.parent() != d->previousRoot()) {
+         return QRect();
+-    
++    }
++
+     bool parentIsPreviousRoot = d->previousRoot().isValid() && index.parent() == d->previousRoot();
+     if (parentIsPreviousRoot && d->flipAnimTimeLine->state() == QTimeLine::NotRunning) {
+         return QRect();
+     }
+-    
+-    if (parentIsPreviousRoot) { 
+-        topOffset -= d->previousVerticalOffset;
++
++    if (parentIsPreviousRoot) {
++        topOffset -= d->previousVerticalOffset();
+     } else {
+         topOffset -= verticalOffset();
+     }
+ 
++    /*
++    int scrollBarWidth = verticalScrollBar()->isVisible() ? verticalScrollBar()->width() : 0;
++    int height = sizeHintForIndex(index).height();
++    QRect itemRect(leftOffset, topOffset + index.row() * height,
++                   width() - leftOffset - scrollBarWidth, height);
++    */
+     int scrollBarWidth = verticalScrollBar()->isVisible() ? 
+                                     verticalScrollBar()->width() : 0;
+-    QRect itemRect(leftOffset,topOffset+index.row()*d->itemHeight,
+-                   width()-leftOffset-scrollBarWidth-Private::BACK_ARROW_SPACING,d->itemHeight);
++    QRect itemRect(leftOffset, topOffset + index.row() * d->itemHeight,
++                   width() - leftOffset - scrollBarWidth - ItemDelegate::BACK_ARROW_SPACING,
++                   d->itemHeight);
+ 
+     const qreal timeValue = d->flipAnimTimeLine->currentValue();
+     if ( index.parent() == d->currentRoot() ) {
+        if (d->animLeftToRight) {
+-        itemRect.translate((int)(itemRect.width()*(1-timeValue)),0);
++           itemRect.translate((int)(itemRect.width()*(1-timeValue)),0);
+        } else {
+-        itemRect.translate((int)(-itemRect.width()*(1-timeValue)),0);
++           itemRect.translate((int)(-itemRect.width()*(1-timeValue)),0);
+        }
+     } else {
+        if (d->animLeftToRight) {
+@@ -374,7 +391,8 @@
+ {
+     QAbstractItemView::setModel(model);
+     if (model) {
+-        setCurrentIndex(model->index(0,0));
++//        setCurrentIndex(model->index(0,0));
++//        d->itemHeight = sizeHintForIndex(model->index(0, 0)).height();
+     }
+ }
+ 
+@@ -475,52 +493,56 @@
+         redrawIndexes << model()->index(i,0,d->previousRoot());
+     }
+ 
+-    foreach(const QModelIndex& index,redrawIndexes) {
++    foreach(const QModelIndex& index, redrawIndexes) {
+         QStyleOptionViewItem option = viewOptions();
+         option.rect = visualRect(index);
+ 
+         // only draw items intersecting the region of the widget
+         // being updated
+-        if (event->rect().intersects(option.rect)) {
+-        
+-            if (selectionModel()->isSelected(index)) {
+-                option.state |= QStyle::State_Selected;
+-            }
+-            if (index == d->hoveredIndex) {
+-                option.state |= QStyle::State_MouseOver;
+-            }
+-            if (index == currentIndex()) {
+-                option.state |= QStyle::State_HasFocus;
+-            } 
+-        
+-            itemDelegate(index)->paint(&painter,option,index);
+-
+-            if (model()->hasChildren(index)) {
+-                painter.save();
+-                painter.setPen(Qt::NoPen);
+-
+-                // there is an assumption made here that the delegate will fill the background
+-                // with the selected color or some similar color which contrasts well with the
+-                // highlighted text color
+-                if (option.state & (QStyle::State_Selected|QStyle::State_MouseOver)) {
+-                    painter.setBrush(palette().highlightedText());
+-                } else {
+-                    painter.setBrush(palette().dark());
+-                }
++        if (!event->rect().intersects(option.rect)) {
++            continue;
++        }
+ 
+-                QRect triRect = option.rect;
+-                triRect.setLeft(triRect.right()-20);
+-                painter.translate(triRect.center());
+-                painter.rotate(180);
+-                painter.drawPath(d->trianglePath());
+-                painter.resetTransform();
+-                painter.restore();
++        if (selectionModel()->isSelected(index)) {
++            option.state |= QStyle::State_Selected;
++        }
++
++        if (index == d->hoveredIndex) {
++            option.state |= QStyle::State_MouseOver;
++        }
++
++        if (index == currentIndex()) {
++            option.state |= QStyle::State_HasFocus;
++        }
++
++        itemDelegate(index)->paint(&painter,option,index);
++
++        if (model()->hasChildren(index)) {
++            painter.save();
++            painter.setPen(Qt::NoPen);
++
++            // there is an assumption made here that the delegate will fill the background
++            // with the selected color or some similar color which contrasts well with the
++            // highlighted text color
++            if (option.state & (QStyle::State_Selected|QStyle::State_MouseOver)) {
++                painter.setBrush(palette().highlight());
++            } else {
++                painter.setBrush(palette().dark());
+             }
++
++            QRect triRect = option.rect;
++            QPainterPath tPath = d->trianglePath();
++            triRect.setLeft(triRect.right() - ItemDelegate::ITEM_RIGHT_MARGIN);
++            painter.translate(triRect.center().x(), triRect.y() + (tPath.boundingRect().height() / 2)  + 3);
++            painter.rotate(180);
++            painter.drawPath(tPath);
++            painter.resetTransform();
++            painter.restore();
+         }
+     }
+ 
+     const qreal timerValue = d->flipAnimTimeLine->currentValue();
+-    
++
+     // draw header for current view
+     QRect headerRect = d->headerRect(d->currentRoot());
+     if (d->animLeftToRight) {
+@@ -528,9 +550,11 @@
+     } else {
+         headerRect.translate((int)(-headerRect.width()*(1-timerValue)),0);
+     }
++
+     if (event->rect().intersects(headerRect)) {
+         d->drawHeader(&painter,headerRect,d->currentRoot());
+     }
++
+     // draw header for previous view
+     QRect prevHeaderRect = d->headerRect(d->previousRoot());
+     if (d->animLeftToRight) {
+@@ -538,6 +562,7 @@
+     } else {
+         prevHeaderRect.translate((int)(prevHeaderRect.width()*timerValue),0);
+     }
++
+     if (event->rect().intersects(prevHeaderRect) && timerValue < 1.0) {
+         d->drawHeader(&painter,prevHeaderRect,d->previousRoot());
+     }
+@@ -547,9 +572,11 @@
+     if (d->currentRoot().isValid()) {
+         state |= QStyle::State_Enabled;
+     }
+-    if (d->backArrowHover) { 
++
++    if (d->backArrowHover) {
+         state |= QStyle::State_MouseOver;
+     }
++
+     if (d->currentRoot().isValid() || d->previousRoot().isValid()) {
+         qreal opacity = 1.0;
+         if (!d->previousRoot().isValid()) {
+@@ -557,11 +584,10 @@
+         } else if (!d->currentRoot().isValid()) {
+             opacity = 1-timerValue;
+         }
++
+         painter.save();
+         painter.setOpacity(opacity);
+-
+         d->drawBackArrow(&painter,state);
+-        
+         painter.restore();
+     }
+ }
+--- a/plasma/applets/kickoff/ui/launcher.h
++++ b/plasma/applets/kickoff/ui/launcher.h
+@@ -51,6 +51,7 @@
+ protected:
+     virtual void keyPressEvent(QKeyEvent *event);
+     virtual void showEvent(QShowEvent *event);
++    virtual void moveEvent(QMoveEvent *event);
+     virtual void paintEvent(QPaintEvent *event);
+ 
+ private Q_SLOTS:
+--- a/plasma/applets/kickoff/ui/itemdelegate.cpp
++++ b/plasma/applets/kickoff/ui/itemdelegate.cpp
+@@ -32,20 +32,27 @@
+ 
+ // KDE
+ #include <KColorUtils>
++#include <KDebug>
+ #include <KGlobal>
+ #include <KGlobalSettings>
+ 
+ using namespace Kickoff;
+ 
++ItemDelegate::ItemDelegate()
++{
++}
++
+ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+ {
+     const bool hover = option.state & (QStyle::State_Selected|QStyle::State_MouseOver|QStyle::State_HasFocus);
++    QRect contentRect = option.rect;
++    contentRect.setBottom(contentRect.bottom() - 1);
+     QRect decorationRect = QStyle::alignedRect(option.direction,
+                                                option.decorationPosition == QStyleOptionViewItem::Left ? Qt::AlignLeft : Qt::AlignRight,
+                                                option.decorationSize,
+-                                               option.rect);
+-    QSize textSize(option.rect.width()-decorationRect.width()-ICON_TEXT_MARGIN,
+-                   option.rect.height());
++                                               contentRect);
++    QSize textSize(option.rect.width() - decorationRect.width() - ICON_TEXT_MARGIN,
++                   option.rect.height() - 2);
+ 
+     qreal freeSpace = -1;
+     qreal usedSpace = -1;
+@@ -59,51 +66,66 @@
+     QRect textRect = QStyle::alignedRect(option.direction,
+                                          textAlignment,
+                                          textSize,
+-                                         option.rect);
++                                         contentRect.adjusted(0, 2, 0, 0));
+     QString titleText = index.data(Qt::DisplayRole).value<QString>();
+     QString subTitleText = index.data(SubTitleRole).value<QString>();
+ 
+     QRect titleRect = textRect;
+ 
+-    if (!subTitleText.isEmpty()) {
+-        titleRect.setHeight(titleRect.height()/2);
++    if (subTitleText.isEmpty()) {
++        subTitleText = " ";
+     }
+ 
++    titleRect.setHeight(titleRect.height() / 2);
+     QRect subTitleRect = titleRect;
+-    subTitleRect.translate(0,subTitleRect.height());
++    subTitleRect.translate(0, subTitleRect.height());
++    QFont subTitleFont = fontForSubTitle(option.font);
++
++    QFont titleFont(option.font);
+ 
+-    // draw background on hover
+     if (hover) {
+         painter->save();
+         painter->setPen(Qt::NoPen);
+         QColor backgroundColor = option.palette.color(QPalette::Highlight);
++        QFontMetrics titleMetrics(titleFont);
++        QFontMetrics subTitleMetrics(subTitleFont);
++        QRect textAreaRect = contentRect;
++        qreal actualTextWidth = qMax(titleMetrics.width(titleText), subTitleMetrics.width(subTitleText));
++        textAreaRect.adjust(decorationRect.width() + ICON_TEXT_MARGIN - 3, 0, -(titleRect.width() - actualTextWidth) + 3, 1);
+         // use a slightly translucent version of the palette's highlight color
+         // for the background
+         backgroundColor.setAlphaF(0.5);
+         painter->setBrush(QBrush(backgroundColor));
+-        painter->drawPath(roundedRectangle(option.rect,5));
++        painter->drawPath(roundedRectangle(textAreaRect, 5));
+         painter->restore();
+     }
+ 
+     // draw icon
+     QIcon decorationIcon = index.data(Qt::DecorationRole).value<QIcon>();
++
++    if (!hover) {
++        painter->save();
++        painter->setOpacity(0.7);
++    }
++
+     decorationIcon.paint(painter, decorationRect, option.decorationAlignment);
+ 
++    if (!hover) {
++        painter->restore();
++    }
++
+     painter->save();
+-    
+-    // draw title and sub-title 
+-    QFont titleFont(option.font);
++
++    // draw title
+     painter->setFont(titleFont);
+-    painter->drawText(titleRect,Qt::AlignLeft|Qt::AlignVCenter,titleText);
++    painter->drawText(titleRect, Qt::AlignLeft|Qt::AlignVCenter, titleText);
+ 
+-    QFont subTitleFont = fontForSubTitle(option.font);
+-    if (!hover) {
+-        painter->setPen(QPen(option.palette.mid(),0));
++    if (hover) {
++        // draw sub-title
++        painter->setFont(subTitleFont);
++        painter->drawText(subTitleRect, Qt::AlignLeft|Qt::AlignVCenter, subTitleText);
+     }
+ 
+-    painter->setFont(subTitleFont);
+-
+-    painter->drawText(subTitleRect,Qt::AlignLeft|Qt::AlignVCenter,subTitleText);
+     painter->restore();
+ 
+     // draw free space information (for drive icons)
+@@ -113,15 +135,19 @@
+         QFontMetrics titleMetrics(option.font);
+         QFontMetrics subTitleMetrics(subTitleFont);
+ 
++        qreal actualTextWidth = qMax(titleMetrics.width(titleText), subTitleMetrics.width(subTitleText));
++
+         QSize spaceSize = option.rect.size();
+-        spaceSize.rwidth() /= 3;
++        //kDebug() << "space size is" << spaceSize.rwidth() << "and we're going to lop off"
++        //         << (actualTextWidth + decorationRect.width() + ICON_TEXT_MARGIN + 3);
++        spaceSize.rwidth() /= 3; //-= (spaceSize.width() * 2.0 / 3.0) /*actualTextWidth +*/ + decorationRect.width() + (ICON_TEXT_MARGIN * 2) + 3;
+         spaceSize.rheight() -= 20;
+ 
+         // check if there is enough space to draw the bar
+-        qreal actualTextWidth = qMax(titleMetrics.width(titleText),subTitleMetrics.width(subTitleText));
+         qreal textBarGap = (titleRect.width() - actualTextWidth) - (spaceSize.width() + ICON_TEXT_MARGIN);
+-        if (textBarGap > 0) {
++        //kDebug() << "text bar gap is" << textBarGap;
+ 
++        if (textBarGap > 0) {
+             // if the item view is gradually resized smaller or larger, make the bar fade out/in 
+             // as enough space for it becomes available
+             if (textBarGap < 20.0) {
+@@ -129,17 +155,22 @@
+             }
+ 
+             QRectF spaceRect = QStyle::alignedRect(option.direction,
+-                                                   Qt::AlignVCenter|Qt::AlignRight,spaceSize,option.rect);
++                                                   Qt::AlignRight, spaceSize, contentRect);
+ 
+             // add spacing between item text and free-space bar and tweak the position slightly
+-            // to give a shart outline when drawn with anti-aliasing enabled
+-            spaceRect.translate(-ICON_TEXT_MARGIN+0.5,0.5);
++            // to give a sharp outline when drawn with anti-aliasing enabled
++            spaceRect.translate(0.5, 3.5);
+ 
+-            QBrush fillBrush = KColorUtils::mix(Qt::green,Qt::yellow,(usedSpace/(freeSpace+usedSpace))); 
++            QColor fillBrush = KColorUtils::mix(Qt::green, Qt::yellow, (usedSpace / (freeSpace+usedSpace)));
++            QColor penColor = option.palette.mid().color();
++            if (!hover) {
++                fillBrush.setAlpha(75);
++                penColor.setAlpha(75);
++            }
+ 
+-            qreal width = ( usedSpace / (freeSpace+usedSpace) ) * spaceRect.width();
+-            painter->setPen(QPen(option.palette.mid(),0));
+-            painter->fillRect(QRectF(spaceRect.left(),spaceRect.top(),width,spaceRect.height()),fillBrush); 
++            qreal width = (usedSpace / (freeSpace + usedSpace)) * spaceRect.width();
++            painter->setPen(QPen(penColor, 0));
++            painter->fillRect(QRectF(spaceRect.left(), spaceRect.top(), width, spaceRect.height()), fillBrush);
+             painter->setBrush(QBrush(Qt::NoBrush));
+             painter->drawRect(spaceRect);
+ 
+@@ -163,21 +194,27 @@
+     return subTitleFont;
+ }
+ 
+-QSize ItemDelegate::sizeHint(const QStyleOptionViewItem& option,const QModelIndex& index) const
++QSize ItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
+ {
+-    QSize size = option.decorationSize;
+-    
++    Q_UNUSED(index)
++    QSize size = option.rect.size();
++
+     QFontMetrics metrics(option.font);
+-    QFontMetrics subTitleMetrics(fontForSubTitle(option.font));
+-    size.rwidth() += ICON_TEXT_MARGIN;
+-    size.rwidth() += qMax(metrics.width(index.data(Qt::DisplayRole).value<QString>()),
+-                          metrics.width(index.data(SubTitleRole).value<QString>()));
+-    size.rheight() = qMax(size.height(),metrics.height() + subTitleMetrics.height());
++
++/*    size.rwidth() += ICON_TEXT_MARGIN +
++                     qMax(metrics.width(index.data(Qt::DisplayRole).value<QString>()),
++                          metrics.width(index.data(SubTitleRole).value<QString>()));*/
++    QFont subTitleFont = option.font;
++    subTitleFont.setPointSize(qMax(subTitleFont.pointSize() - 2,
++                                   KGlobalSettings::smallestReadableFont().pointSize()));
++    QFontMetrics subMetrics(subTitleFont);
++    size.setHeight(qMax(option.decorationSize.height(), qMax(size.height(), metrics.height() + subMetrics.ascent()) + 3));
++//    kDebug() << "size hint is" << size << (metrics.height() + subMetrics.ascent());
+ 
+     return size;
+ }
+ 
+-bool ItemDelegate::isVisible(const QModelIndex& index) const 
++bool ItemDelegate::isVisible(const QModelIndex& index) const
+ {
+     Q_ASSERT(index.isValid());
+ 
+--- a/plasma/applets/kickoff/ui/searchbar.cpp
++++ b/plasma/applets/kickoff/ui/searchbar.cpp
+@@ -32,6 +32,8 @@
+ #include <KLineEdit>
+ #include <KLocalizedString>
+ 
++#include "ui/itemdelegate.h"
++
+ using namespace Kickoff;
+ 
+ class SearchBar::Private
+@@ -57,20 +59,22 @@
+     // setup UI
+     QHBoxLayout *layout = new QHBoxLayout;
+     layout->setMargin(3);
++    layout->setSpacing(0); // we do the spacing manually to line up with the views below
+ 
+     QLabel *searchLabel = new QLabel(i18n("Search:"),this);
++    QLabel *searchIcon = new QLabel(this);
++    searchIcon->setPixmap(KIcon("system-search").pixmap(ItemDelegate::ICON_SIZE, ItemDelegate::ICON_SIZE));
+ 
+     d->editWidget = new KLineEdit(this);
+     d->editWidget->installEventFilter(this);
+     d->editWidget->setClearButtonShown(true);
+     connect(d->editWidget,SIGNAL(textChanged(QString)),this,SIGNAL(startUpdateTimer()));
+ 
+-    QLabel *searchIcon = new QLabel(this);
+-    searchIcon->setPixmap(KIcon("system-search").pixmap(32,32));
+-
++    layout->addSpacing(ItemDelegate::ITEM_LEFT_MARGIN - 3);
++    layout->addWidget(searchIcon);
++    layout->addSpacing(ItemDelegate::ICON_TEXT_MARGIN);
+     layout->addWidget(searchLabel);
+     layout->addWidget(d->editWidget);
+-    layout->addWidget(searchIcon);
+     setLayout(layout);
+ 
+     setFocusProxy(d->editWidget);
+--- a/plasma/applets/kickoff/ui/urlitemview.cpp
++++ b/plasma/applets/kickoff/ui/urlitemview.cpp
+@@ -29,10 +29,11 @@
+ #include <QtGui/QPaintEvent>
+ #include <QtGui/QScrollBar>
+ 
+-#include <QtDebug>
++#include <KDebug>
+ 
+ // Local
+ #include "core/models.h"
++#include "ui/itemdelegate.h"
+ 
+ using namespace Kickoff;
+ 
+@@ -55,14 +56,14 @@
+         if (!q->model()) {
+             return;
+         }
+-    
+-        int verticalOffset = TOP_OFFSET;
++
++        int verticalOffset = ItemDelegate::TOP_OFFSET;
+         int horizontalOffset = 0;
+         int row = 0;
+         int visualColumn = 0;
+ 
+         QModelIndex branch = currentRootIndex;
+-        
++
+         while (true) {
+             if (itemChildOffsets[branch]+row >= q->model()->rowCount(branch) ||
+                 branch != currentRootIndex && row > MAX_CHILD_ROWS) {
+@@ -75,12 +76,12 @@
+                     break;
+                 }
+             }
+-        
++
+             QModelIndex child = q->model()->index(row+itemChildOffsets[branch],0,branch);
+ 
+             if (q->model()->hasChildren(child)) {
+                 QSize childSize = calculateHeaderSize(child);
+-                itemRects.insert(child,QRect(QPoint(HEADER_LEFT_MARGIN,verticalOffset),childSize));
++                itemRects.insert(child,QRect(QPoint(ItemDelegate::HEADER_LEFT_MARGIN,verticalOffset),childSize));
+ 
+                 verticalOffset += childSize.height();
+                 horizontalOffset = 0; 
+@@ -119,6 +120,7 @@
+ 
+         updateScrollBarRange();
+     }
++
+     void drawHeader(QPainter *painter,
+                     const QModelIndex& index,
+                     const QStyleOptionViewItem& option)
+@@ -130,7 +132,7 @@
+         painter->setFont(font);
+         painter->setPen(QPen(option.palette.dark(),0));
+         QString text = index.data(Qt::DisplayRole).value<QString>();
+-        int dy = (int)(index.row() > 0 ? HEADER_HEIGHT / 4.0 : 0);
++        int dy = (int)(index.row() > 0 ? ItemDelegate::HEADER_HEIGHT / 4.0 : 0);
+         painter->drawText(option.rect.adjusted(0, dy, 0, 0),
+                           Qt::AlignVCenter|Qt::AlignLeft, text);
+         painter->restore();
+@@ -141,29 +143,31 @@
+         int pageSize = q->height();
+         q->verticalScrollBar()->setRange(0,contentsHeight-pageSize);
+         q->verticalScrollBar()->setPageStep(pageSize);
+-        q->verticalScrollBar()->setSingleStep(ITEM_HEIGHT);
++        q->verticalScrollBar()->setSingleStep(ItemDelegate::ITEM_HEIGHT);
+     }
+ 
+     int contentWidth() const
+     {
+         return q->width();
+     }
++
+     QSize calculateItemSize(const QModelIndex& index) const 
+     {
+         if (itemStateProvider && !itemStateProvider->isVisible(index)) {
+             return QSize();
+         } else {
+-            return QSize(contentWidth()/MAX_COLUMNS,q->sizeHintForIndex(index).height());
++            return  QSize(contentWidth() / MAX_COLUMNS, q->sizeHintForIndex(index).height());
+         }
+     }
++
+     QSize calculateHeaderSize(const QModelIndex& index) const
+     {
+         if (itemStateProvider && !itemStateProvider->isVisible(index)) {
+             return QSize();
+         } else if (index.row() == 0) {
+-            return QSize(q->width()-HEADER_LEFT_MARGIN, FIRST_HEADER_HEIGHT);
++            return QSize(q->width() - ItemDelegate::HEADER_LEFT_MARGIN, ItemDelegate::FIRST_HEADER_HEIGHT);
+         } else {
+-            return QSize(q->width()-HEADER_LEFT_MARGIN, HEADER_HEIGHT);
++            return QSize(q->width() - ItemDelegate::HEADER_LEFT_MARGIN, ItemDelegate::HEADER_HEIGHT);
+         }
+     }
+ 
+@@ -171,6 +175,7 @@
+     {
+         return point + QPoint(0,q->verticalOffset());
+     }
++
+     QPoint mapToViewport(const QPoint& point) const
+     {
+         return point - QPoint(0,q->verticalOffset());
+@@ -187,16 +192,8 @@
+     int contentsHeight;
+     ItemStateProvider *itemStateProvider;
+ 
+-    // margin is equivalent to FlipScrollView::Private::BACK_ARROW_WIDTH + 
+-    // FlipScrollView::Private::BACK_ARROW_SPACING
+-    static const int ITEM_LEFT_MARGIN = 25; 
+-    static const int HEADER_LEFT_MARGIN = 5; 
+-    static const int ITEM_HEIGHT = 32;
+-    static const int HEADER_HEIGHT = 35;
+-    static const int FIRST_HEADER_HEIGHT = 20;
+     static const int MAX_COLUMNS = 1;
+-    static const int TOP_OFFSET = 5;
+-    
++
+     // TODO Eventually it will be possible to restrict each branch to only showing
+     // a given number of children, with Next/Previous arrows to view more children
+     //
+@@ -212,7 +209,7 @@
+     : QAbstractItemView(parent)
+     , d(new Private(this))
+ {
+-    setIconSize(QSize(Private::ITEM_HEIGHT,Private::ITEM_HEIGHT));
++    setIconSize(QSize(ItemDelegate::ITEM_HEIGHT,ItemDelegate::ITEM_HEIGHT));
+     setMouseTracking(true);
+ }
+ 
+@@ -234,6 +231,7 @@
+     }
+     return QModelIndex();
+ }
++
+ void UrlItemView::setModel(QAbstractItemModel *model)
+ {
+     QAbstractItemView::setModel(model);
+@@ -248,20 +246,21 @@
+     d->itemChildOffsets.clear();
+     updateLayout();
+ }
++
+ void UrlItemView::updateLayout()
+ {
+     d->doLayout();
+-   
++
+     if (!d->visualOrder.contains(currentIndex())) {
+         // select the first valid index
+         setCurrentIndex(moveCursor(MoveDown,0)); 
+     }
+-    
+ 
+     if (viewport()->isVisible()) {
+         viewport()->update();
+     }
+ }
++
+ void UrlItemView::scrollTo(const QModelIndex& index, ScrollHint hint)
+ {
+     QRect itemRect = d->itemRects[index];
+@@ -301,8 +300,9 @@
+ QRect UrlItemView::visualRect(const QModelIndex& index) const
+ {
+     QRect itemRect = d->itemRects[index];
+-    if (!itemRect.isValid())
++    if (!itemRect.isValid()) {
+         return itemRect;
++    }
+ 
+     itemRect.moveTopLeft(d->mapToViewport(itemRect.topLeft()));
+     return itemRect;
+@@ -365,10 +365,12 @@
+     }
+     return region;
+ }
++
+ void UrlItemView::paintEvent(QPaintEvent *event)
+ {
+-    if (!model())
++    if (!model()) {
+         return;
++    }
+ 
+     QPainter painter(viewport());
+     painter.setRenderHint(QPainter::Antialiasing);
+@@ -380,7 +382,6 @@
+         const QModelIndex index = indexIter.key();
+ 
+         if (event->region().contains(itemRect)) {
+-
+             QStyleOptionViewItem option = viewOptions();
+             option.rect = itemRect;
+ 
+@@ -398,18 +399,20 @@
+                 d->drawHeader(&painter,index,option);
+             } else {
+                 if (option.rect.left() == 0) {
+-                        option.rect.setLeft(option.rect.left() + Private::ITEM_LEFT_MARGIN);
+-                        option.rect.setRight(option.rect.right() - Private::ITEM_LEFT_MARGIN);
++                    option.rect.setLeft(option.rect.left() + ItemDelegate::ITEM_LEFT_MARGIN);
++                    option.rect.setRight(option.rect.right() - ItemDelegate::ITEM_RIGHT_MARGIN);
+                 }
+                 itemDelegate(index)->paint(&painter,option,index);
+             }
+         }
+     }
+ }
++
+ void UrlItemView::resizeEvent(QResizeEvent *)
+ {
+     updateLayout();
+ }
++
+ void UrlItemView::mouseMoveEvent(QMouseEvent *event)
+ {
+     const QModelIndex itemUnderMouse = indexAt(event->pos());
+@@ -423,19 +426,23 @@
+     }
+     QAbstractItemView::mouseMoveEvent(event);
+ }
++
+ void UrlItemView::setItemStateProvider(ItemStateProvider *provider)
+ {
+     d->itemStateProvider = provider;
+ }
++
+ void UrlItemView::startDrag(Qt::DropActions supportedActions) 
+ {
+     qDebug() << "Starting UrlItemView drag with actions" << supportedActions;
+     QAbstractItemView::startDrag(supportedActions);
+ }
++
+ void UrlItemView::dropEvent(QDropEvent *)
+ {
+     qDebug() << "UrlItemView drop event";
+ }
++
+ ItemStateProvider *UrlItemView::itemStateProvider() const
+ {
+     return d->itemStateProvider;
+--- a/plasma/applets/pager/plasma-pager-default.desktop
++++ b/plasma/applets/pager/plasma-pager-default.desktop
+@@ -2,6 +2,7 @@
+ Name=Pager
+ Name[ca]=Paginador
+ Name[el]=Πίνακας σελίδων
++Name[eo]=Paĝilo
+ Name[et]=Peiler
+ Name[ga]=Brabhsálaí Leathanach
+ Name[ja]=ページャ
+@@ -9,6 +10,7 @@
+ Name[nb]=Sidebytter
+ Name[ne]=पेजर
+ Name[nn]=Skrivebordsbyttar
++Name[pa]=ਪੇਜ਼ਰ
+ Name[pt]=Paginador
+ Name[sr]=Пејџер
+ Name[sr at latin]=Pejdžer
+@@ -17,7 +19,7 @@
+ Name[zh_CN]=分页器
+ Name[zh_TW]=呼叫器
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_pager
+ X-KDE-PluginInfo-Author=The Plasma Team
+--- a/plasma/desktoptheme/dialogs/background.svg
++++ b/plasma/desktoptheme/dialogs/background.svg
+@@ -2,735 +2,24 @@
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
+ <svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+-   xmlns:cc="http://web.resource.org/cc/"
++   xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:svg="http://www.w3.org/2000/svg"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+-   width="590.15448"
+-   height="413.83847"
++   version="1.0"
++   width="42"
++   height="50"
+    id="svg2"
+    sodipodi:version="0.32"
+-   inkscape:version="0.44"
+-   sodipodi:docbase="/home/kde/kdebase/workspace/krunner/images/background"
+-   sodipodi:docname="dialog.svg"
+-   version="1.0">
+-  <defs
+-     id="defs4">
+-    <linearGradient
+-       id="linearGradient2362"
+-       inkscape:collect="always">
+-      <stop
+-         id="stop2364"
+-         offset="0"
+-         style="stop-color:#ffffff;stop-opacity:1;" />
+-      <stop
+-         id="stop2366"
+-         offset="1"
+-         style="stop-color:#ffffff;stop-opacity:0;" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient2389">
+-      <stop
+-         id="stop2391"
+-         offset="0"
+-         style="stop-color:#000000;stop-opacity:0;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0;"
+-         offset="0.4375"
+-         id="stop2393" />
+-      <stop
+-         id="stop2395"
+-         offset="0.56588125"
+-         style="stop-color:#000000;stop-opacity:0;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0.24705882;"
+-         offset="0.76237977"
+-         id="stop2423" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0.49803922;"
+-         offset="0.77884614"
+-         id="stop2421" />
+-      <stop
+-         id="stop2397"
+-         offset="0.875"
+-         style="stop-color:#000000;stop-opacity:1;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0.49803922;"
+-         offset="0.875"
+-         id="stop2411" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0;"
+-         offset="1"
+-         id="stop2399" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient2321">
+-      <stop
+-         id="stop2323"
+-         offset="0"
+-         style="stop-color:#c3c3c3;stop-opacity:1;" />
+-      <stop
+-         id="stop2325"
+-         offset="1"
+-         style="stop-color:#ffffff;stop-opacity:1;" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient3291"
+-       inkscape:collect="always">
+-      <stop
+-         id="stop3293"
+-         offset="0"
+-         style="stop-color:#000000;stop-opacity:1;" />
+-      <stop
+-         id="stop3295"
+-         offset="1"
+-         style="stop-color:#000000;stop-opacity:0;" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient2287">
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0;"
+-         offset="0"
+-         id="stop2299" />
+-      <stop
+-         id="stop2307"
+-         offset="0.4375"
+-         style="stop-color:#000000;stop-opacity:0;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0;"
+-         offset="0.58240438"
+-         id="stop2309" />
+-      <stop
+-         id="stop2419"
+-         offset="0.76442307"
+-         style="stop-color:#000000;stop-opacity:0.49803922;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:1;"
+-         offset="0.875"
+-         id="stop2303" />
+-      <stop
+-         id="stop2413"
+-         offset="0.91826922"
+-         style="stop-color:#000000;stop-opacity:0.49803922;" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:0;"
+-         offset="0.96048182"
+-         id="stop2417" />
+-      <stop
+-         id="stop2291"
+-         offset="1"
+-         style="stop-color:#000000;stop-opacity:0;" />
+-    </linearGradient>
+-    <linearGradient
+-       inkscape:collect="always"
+-       id="linearGradient9889">
+-      <stop
+-         style="stop-color:#e0e0e0;stop-opacity:1;"
+-         offset="0"
+-         id="stop9891" />
+-      <stop
+-         style="stop-color:#e0e0e0;stop-opacity:0;"
+-         offset="1"
+-         id="stop9893" />
+-    </linearGradient>
+-    <linearGradient
+-       inkscape:collect="always"
+-       id="linearGradient4540">
+-      <stop
+-         style="stop-color:white;stop-opacity:1;"
+-         offset="0"
+-         id="stop4542" />
+-      <stop
+-         style="stop-color:white;stop-opacity:0;"
+-         offset="1"
+-         id="stop4544" />
+-    </linearGradient>
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient9002"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,556.7623,511.3309)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient9895"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609"
+-       gradientUnits="userSpaceOnUse" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient9931"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1303.906,-544.3834)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient9939"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,2375.334,-20.09771)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient9941"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(761.4199,-531.4414)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26588"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26590"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26592"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26594"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26596"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26598"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26600"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26637"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26639"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26641"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26643"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26645"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26647"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26649"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26709"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26711"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26713"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26715"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26717"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26719"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26721"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26736"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26738"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26740"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26742"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26744"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26746"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26748"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26778"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26780"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26782"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26784"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26786"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26788"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26790"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient26805"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient26807"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient26809"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient26811"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient26813"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient26815"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient26817"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4540"
+-       id="radialGradient2577"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.575169e-2,0.999876,-1.949474,3.07113e-2,1411.818,562.7645)"
+-       cx="45.063793"
+-       cy="250.02426"
+-       fx="45.063793"
+-       fy="250.02426"
+-       r="358.57144" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient9889"
+-       id="linearGradient2579"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(855.0561,51.4336)"
+-       x1="145.72322"
+-       y1="540.92859"
+-       x2="735.70538"
+-       y2="792.36609" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2287"
+-       id="radialGradient2581"
+-       gradientUnits="userSpaceOnUse"
+-       cx="95.796135"
+-       cy="56.931728"
+-       fx="95.990845"
+-       fy="39.602753"
+-       r="47.11924" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3291"
+-       id="radialGradient2583"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1,0,0,0.197802,0,92.82166)"
+-       cx="63.912209"
+-       cy="115.70919"
+-       fx="63.912209"
+-       fy="115.7093"
+-       r="63.912209" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2321"
+-       id="linearGradient2585"
+-       gradientUnits="userSpaceOnUse"
+-       x1="-42.789177"
+-       y1="82.913582"
+-       x2="229.1772"
+-       y2="81.155327" />
+-    <radialGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2389"
+-       id="radialGradient2587"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(1.165294,0,0,1.180294,-9.816118,-9.597466)"
+-       cx="59.385818"
+-       cy="52.046673"
+-       fx="59.385818"
+-       fy="52.046673"
+-       r="43.225086" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient2362"
+-       id="linearGradient2589"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(4.278214,0,0,4.207701,969.1386,592.9277)"
+-       x1="74.514832"
+-       y1="17.232468"
+-       x2="52.587749"
+-       y2="99.06546" />
+-  </defs>
+-  <sodipodi:namedview
+-     id="base"
+-     pagecolor="#ffffff"
+-     bordercolor="#666666"
+-     borderopacity="1.0"
+-     inkscape:pageopacity="0.0"
+-     inkscape:pageshadow="2"
+-     inkscape:zoom="0.76854167"
+-     inkscape:cx="418.7211"
+-     inkscape:cy="224.70778"
+-     inkscape:document-units="px"
+-     inkscape:current-layer="layer1"
+-     inkscape:window-width="1280"
+-     inkscape:window-height="720"
+-     inkscape:window-x="0"
+-     inkscape:window-y="24"
+-     showgrid="true"
+-     showguides="true"
+-     inkscape:guide-bbox="true">
+-    <sodipodi:guide
+-       orientation="horizontal"
+-       position="432.42963"
+-       id="guide26635" />
+-  </sodipodi:namedview>
++   inkscape:version="0.45+devel"
++   sodipodi:docname="background.svg"
++   sodipodi:docbase="/home/aseigo/kde4/KDE/kdebase/workspace/plasma/desktoptheme/widgets"
++   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+   <metadata
+-     id="metadata7">
++     id="metadata2480">
+     <rdf:RDF>
+       <cc:Work
+          rdf:about="">
+@@ -740,93 +29,96 @@
+       </cc:Work>
+     </rdf:RDF>
+   </metadata>
+-  <g
+-     inkscape:label="Calque 1"
+-     inkscape:groupmode="layer"
+-     id="layer1"
+-     transform="translate(-72.16683,-607.1714)">
+-    <path
+-       sodipodi:nodetypes="cccccscccscccccc"
+-       id="path9935"
+-       d="M 1837.3705,9.4999954 C 1837.2385,9.4999954 1837.1518,9.8884554 1837.1518,10.374995 L 1837.1518,511.46869 C 1837.1518,511.95529 1837.2385,512.37499 1837.3705,512.37499 L 1903.0893,512.37499 C 1883.2405,446.56045 1957.1467,305.50035 2084.9018,174.34375 C 2158.1634,99.131495 2235.1716,41.540465 2300.0268,9.4999954 L 1837.3705,9.4999954 z M 2450.0893,9.4999954 C 2350.7098,139.57936 2405.2465,218.97157 2271.5893,356.1875 C 2204.4986,425.06445 2134.313,479.14139 2073.1518,512.37499 L 2554.058,512.37499 C 2554.19,512.37499 2554.2768,511.95529 2554.2768,511.46869 L 2554.2768,10.374995 C 2554.2768,9.8884554 2554.19,9.4999954 2554.058,9.4999954 L 2450.0893,9.4999954 z "
+-       style="opacity:1;fill:url(#radialGradient9939);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.4000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+-    <g
+-       id="g26754"
+-       transform="matrix(0.822945,0,0,0.822945,-640.2821,120.991)">
+-      <g
+-         id="g2564"
+-         transform="translate(-7.905544,-1.581109)">
+-        <path
+-           style="fill:url(#radialGradient2577);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.4000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+-           d="M 873.85521,592.36221 C 873.72318,592.36221 873.63646,592.75067 873.63646,593.23721 L 873.63646,1094.3309 C 873.63646,1094.8175 873.72318,1095.2372 873.85521,1095.2372 L 939.57396,1095.2372 C 919.72513,1029.4227 993.63138,888.36256 1121.3865,757.20596 C 1194.6481,681.99371 1271.6563,624.40268 1336.5115,592.36221 L 873.85521,592.36221 z M 1486.574,592.36221 C 1387.1945,722.44157 1441.7312,801.83378 1308.074,939.04971 C 1240.9833,1007.9267 1170.7977,1062.0036 1109.6365,1095.2372 L 1590.5427,1095.2372 C 1590.6747,1095.2372 1590.7615,1094.8175 1590.7615,1094.3309 L 1590.7615,593.23721 C 1590.7615,592.75067 1590.6747,592.36221 1590.5427,592.36221 L 1486.574,592.36221 z "
+-           id="path26756"
+-           sodipodi:nodetypes="cccccscccscccccc" />
+-        <path
+-           style="opacity:0.70975061;fill:url(#linearGradient2579);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.4000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+-           d="M 873.85521,592.36221 C 873.72318,592.36221 873.63646,592.75067 873.63646,593.23721 L 873.63646,1094.3309 C 873.63646,1094.8175 873.72318,1095.2372 873.85521,1095.2372 C 873.85521,1095.2372 999.46127,1000.795 1079.3832,875.07621 C 1159.305,749.35746 1193.5427,592.36221 1193.5427,592.36221 L 873.85521,592.36221 z M 1436.4133,789.50507 C 1366.4523,915.22382 1310.699,1095.2372 1310.699,1095.2372 L 1590.5427,1095.2372 C 1590.6747,1095.2372 1590.7614,1094.8175 1590.7615,1094.3309 L 1590.7615,593.23721 C 1590.7615,592.75067 1590.6747,592.36221 1590.5427,592.36221 C 1590.5427,592.36221 1506.3742,663.78632 1436.4133,789.50507 z "
+-           id="path26758"
+-           sodipodi:nodetypes="ccccsccccccccs" />
+-        <path
+-           sodipodi:type="arc"
+-           style="opacity:0.11413042;fill:url(#radialGradient2581);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.71249998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+-           id="path26760"
+-           sodipodi:cx="95.796135"
+-           sodipodi:cy="56.931728"
+-           sodipodi:rx="47.11924"
+-           sodipodi:ry="47.11924"
+-           d="M 142.91537 56.931728 A 47.11924 47.11924 0 1 1  48.676895,56.931728 A 47.11924 47.11924 0 1 1  142.91537 56.931728 z"
+-           transform="matrix(4.605266,0,0,4.529368,797.4471,586.4943)" />
+-        <path
+-           sodipodi:type="arc"
+-           style="opacity:0.22826089;fill:url(#radialGradient2583);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+-           id="path26762"
+-           sodipodi:cx="63.912209"
+-           sodipodi:cy="115.70919"
+-           sodipodi:rx="63.912209"
+-           sodipodi:ry="12.641975"
+-           d="M 127.82442 115.70919 A 63.912209 12.641975 0 1 1  0,115.70919 A 63.912209 12.641975 0 1 1  127.82442 115.70919 z"
+-           transform="matrix(3.400057,0,0,1.393345,1021.142,886.7121)" />
+-        <path
+-           sodipodi:type="arc"
+-           style="opacity:0.22826089;fill:url(#linearGradient2585);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.71249998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+-           id="path26764"
+-           sodipodi:cx="59.385818"
+-           sodipodi:cy="53.232281"
+-           sodipodi:rx="43.225086"
+-           sodipodi:ry="43.809208"
+-           d="M 102.6109 53.232281 A 43.225086 43.809208 0 1 1  16.160732,53.232281 A 43.225086 43.809208 0 1 1  102.6109 53.232281 z"
+-           transform="matrix(4.430326,0,0,4.432122,975.932,599.8251)" />
+-        <path
+-           transform="matrix(4.430326,0,0,4.449524,975.932,600.233)"
+-           d="M 102.6109 53.232281 A 43.225086 43.809208 0 1 1  16.160732,53.232281 A 43.225086 43.809208 0 1 1  102.6109 53.232281 z"
+-           sodipodi:ry="43.809208"
+-           sodipodi:rx="43.225086"
+-           sodipodi:cy="53.232281"
+-           sodipodi:cx="59.385818"
+-           id="path26766"
+-           style="opacity:0.09239131;fill:url(#radialGradient2587);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.71249998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+-           sodipodi:type="arc" />
+-        <path
+-           style="opacity:0.22826089;fill:url(#linearGradient2589);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.71249998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:4;stroke-opacity:1"
+-           d="M 1234.3877,645.65561 C 1137.6596,648.03459 1059.9168,724.84287 1059.9168,808.30981 C 1059.9168,821.22728 1061.7581,833.79555 1065.2645,845.78467 C 1181.9702,823.55875 1298.0127,823.83452 1413.6716,842.62891 C 1416.6037,831.60719 1418.0836,820.08989 1418.0836,808.30981 C 1418.0836,723.518 1337.9275,645.65561 1239.067,645.65561 C 1237.5223,645.65561 1235.923,645.61785 1234.3877,645.65561 z "
+-           id="path26768" />
+-        <g
+-           id="g26770"
+-           transform="translate(5.714286,1.428571)">
+-          <path
+-             id="path26772"
+-             d="M 1233.4772,691.79243 C 1226.5618,691.8559 1219.5677,692.51651 1212.7717,693.61939 L 1206.4788,742.33826 C 1200.1005,744.39817 1193.8142,747.11058 1187.8032,750.66106 C 1181.7923,754.21148 1176.4465,758.45218 1171.5636,763.04377 L 1125.6867,744.97719 C 1121.4844,750.36254 1117.5734,756.10354 1114.1159,762.2318 C 1110.6366,768.39857 1107.8324,774.68733 1105.3871,781.11035 L 1144.5652,811.15366 C 1141.7739,824.24643 1141.8637,837.99239 1144.9712,851.34673 L 1106.4021,881.99901 C 1111.5435,894.78267 1118.6799,906.86465 1127.5136,917.72617 L 1173.1876,899.05062 C 1183.2252,908.0519 1194.9136,914.65305 1207.4938,918.53815 L 1215.4106,967.46001 C 1229.2751,969.40469 1243.2212,969.26376 1256.8216,967.05402 L 1263.1145,918.33515 C 1269.5349,916.27142 1275.7409,913.38239 1281.7901,909.80935 C 1287.8392,906.23637 1293.3261,902.05348 1298.2327,897.42665 L 1343.9066,915.69621 C 1348.1399,910.28173 1351.9981,904.60851 1355.4773,898.44163 C 1358.9348,892.31352 1361.7696,885.94459 1364.2061,879.56307 L 1325.231,849.51977 C 1328.0223,836.427 1327.9326,822.68099 1324.8251,809.3267 L 1363.1912,778.47142 C 1358.0506,765.69683 1351.1107,753.80184 1342.2826,742.94724 L 1297.0147,762.0288 C 1286.5903,752.5353 1274.2744,745.63457 1261.0845,741.72927 L 1254.1827,693.2134 C 1247.2547,692.24174 1240.3925,691.72896 1233.4772,691.79243 z M 1234.8981,784.56128 C 1260.1094,784.56128 1280.5721,805.02392 1280.5721,830.23521 C 1280.5721,855.44651 1260.1094,875.90915 1234.8981,875.90915 C 1209.6868,875.90915 1189.2242,855.44652 1189.2242,830.23521 C 1189.2241,805.02392 1209.6868,784.56128 1234.8981,784.56128 z "
+-             style="opacity:0.22826089;fill:#8eb700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+-          <path
+-             style="opacity:0.22826089;fill:#71b619;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1"
+-             d="M 1233.4772,691.79243 C 1226.5618,691.8559 1219.5677,692.51651 1212.7717,693.61939 L 1206.4788,742.33826 C 1200.1005,744.39817 1193.8142,747.11058 1187.8032,750.66106 C 1181.7923,754.21148 1176.4465,758.45218 1171.5636,763.04377 L 1125.6867,744.97719 C 1121.4844,750.36254 1117.5734,756.10354 1114.1159,762.2318 C 1110.6366,768.39857 1107.8324,774.68733 1105.3871,781.11035 L 1144.5652,811.15366 C 1141.7739,824.24643 1141.8637,837.99239 1144.9712,851.34673 L 1106.4021,881.99901 C 1111.5435,894.78267 1118.6799,906.86465 1127.5136,917.72617 L 1173.1876,899.05062 C 1183.2252,908.0519 1194.9136,914.65305 1207.4938,918.53815 L 1215.4106,967.46001 C 1229.2751,969.40469 1243.2212,969.26376 1256.8216,967.05402 L 1263.1145,918.33515 C 1269.5349,916.27142 1275.7409,913.38239 1281.7901,909.80935 C 1287.8392,906.23637 1293.3261,902.05348 1298.2327,897.42665 L 1343.9066,915.69621 C 1348.1399,910.28173 1351.9981,904.60851 1355.4773,898.44163 C 1358.9348,892.31352 1361.7696,885.94459 1364.2061,879.56307 L 1325.231,849.51977 C 1328.0223,836.427 1327.9326,822.68099 1324.8251,809.3267 L 1363.1912,778.47142 C 1358.0506,765.69683 1351.1107,753.80184 1342.2826,742.94724 L 1297.0147,762.0288 C 1286.5903,752.5353 1274.2744,745.63457 1261.0845,741.72927 L 1254.1827,693.2134 C 1247.2547,692.24174 1240.3925,691.72896 1233.4772,691.79243 z M 1234.8981,784.56128 C 1260.1094,784.56128 1280.5721,805.02392 1280.5721,830.23521 C 1280.5721,855.44651 1260.1094,875.90915 1234.8981,875.90915 C 1209.6868,875.90915 1189.2242,855.44652 1189.2242,830.23521 C 1189.2241,805.02392 1209.6868,784.56128 1234.8981,784.56128 z "
+-             id="path26774" />
+-          <path
+-             id="path26776"
+-             d="M 1237.1607,691.85051 C 1238.8875,691.88799 1240.5549,691.92891 1242.2874,692.02905 C 1240.5836,691.92884 1238.8676,691.88398 1237.1607,691.85051 z M 1242.2874,692.02905 C 1244.0199,692.12919 1245.7891,692.25624 1247.5308,692.4152 C 1245.789,692.24679 1244.0287,692.13147 1242.2874,692.02905 z M 1247.5308,692.4152 L 1256.7916,740.58903 C 1258.4619,740.99698 1260.1165,741.44595 1261.7621,741.94802 C 1261.718,741.93458 1261.6947,741.86017 1261.6506,741.84679 L 1255.039,693.33157 C 1252.5166,692.9611 1250.0423,692.65803 1247.5308,692.4152 z M 1126.2437,744.23764 C 1124.6855,746.20802 1123.2117,748.25124 1121.7397,750.31995 L 1168.3569,766.19173 C 1169.5207,764.9862 1170.6883,763.76693 1171.9154,762.60756 L 1126.2437,744.23764 z M 1115.9814,759.1286 C 1115.5122,759.90875 1114.9481,760.64646 1114.4938,761.43971 C 1114.0987,762.1296 1113.8,762.8244 1113.4214,763.51749 C 1114.2525,762.01725 1115.1008,760.58586 1115.9814,759.1286 z M 1358.2239,767.67101 C 1358.9978,769.20443 1359.7576,770.79633 1360.4766,772.36025 C 1359.7539,770.78442 1359.0048,769.21791 1358.2239,767.67101 z M 1360.4766,772.36025 L 1323.6675,804.95571 C 1324.1268,806.57137 1324.6036,808.27417 1324.9732,809.90402 L 1363.4756,779.25255 C 1362.5455,776.89712 1361.5294,774.65598 1360.4766,772.36025 z M 1235.2492,784.60153 C 1236.3948,784.61158 1237.5449,784.66307 1238.6687,784.75601 C 1237.5364,784.66314 1236.4017,784.60956 1235.2492,784.60153 z M 1228.0207,785.05778 C 1227.4163,785.14891 1226.8237,785.34998 1226.2277,785.46438 C 1227.185,785.27946 1228.1071,785.13034 1229.0844,785.00633 C 1228.7358,785.05074 1228.3666,785.00562 1228.0207,785.05778 z M 1220.8539,786.79057 C 1219.893,787.09966 1218.9538,787.41101 1218.0228,787.78051 C 1218.9532,787.40998 1219.8948,787.10047 1220.8539,786.79057 z M 1245.2247,785.82507 C 1246.0155,786.00889 1246.8265,786.23219 1247.601,786.45652 C 1246.8192,786.22871 1246.0225,786.0114 1245.2247,785.82507 z M 1209.6017,792.23963 C 1208.5837,792.91775 1207.5669,793.5487 1206.6094,794.30364 C 1207.5769,793.53946 1208.5734,792.92488 1209.6017,792.23963 z M 1267.4728,798.29057 C 1268.3913,799.22717 1269.233,800.24475 1270.0687,801.25718 C 1269.2241,800.23306 1268.4013,799.23626 1267.4728,798.29057 z M 1273.1467,805.37337 C 1273.8328,806.42685 1274.4092,807.47782 1275.0083,808.58876 C 1274.4202,807.50066 1273.8178,806.4051 1273.1467,805.37337 z M 1275.1249,808.79637 C 1275.7654,809.99951 1276.3729,811.28494 1276.9058,812.5488 C 1276.3644,811.26246 1275.777,810.0181 1275.1249,808.79637 z M 1191.1859,817.12136 C 1190.8746,818.15804 1190.6155,819.1877 1190.3777,820.25262 C 1190.6121,819.20963 1190.8815,818.13593 1191.1859,817.12136 z M 1189.3996,826.48428 C 1189.3139,827.53755 1189.2472,828.6203 1189.2348,829.69104 C 1189.2471,828.59227 1189.311,827.563 1189.3996,826.48428 z M 1280.3508,826.45689 C 1280.4362,827.50801 1280.4924,828.57845 1280.5052,829.64822 C 1280.4978,829.1153 1280.5603,828.5839 1280.5344,828.04741 C 1280.5084,827.51092 1280.395,826.98803 1280.3508,826.45689 z M 1189.5384,835.96733 C 1189.66,836.94068 1189.9214,837.86665 1190.1028,838.81895 C 1189.9234,837.87892 1189.6591,836.92664 1189.5384,835.96733 z M 1280.1653,835.84901 C 1280.0716,836.61257 1279.9788,837.35214 1279.8479,838.10352 C 1279.9793,837.35214 1280.0714,836.61181 1280.1653,835.84901 z M 1144.8286,850.71178 L 1105.9967,881.16593 C 1106.9221,883.51076 1107.9434,885.86907 1109.0009,888.16461 L 1146.0278,855.66523 C 1145.5592,854.01666 1145.2038,852.37509 1144.8286,850.71178 z M 1213.5001,870.63492 C 1214.5869,871.21064 1215.745,871.68937 1216.8802,872.17746 C 1215.7506,871.69074 1214.5804,871.20797 1213.5001,870.63492 z M 1259.2632,868.84799 C 1258.3296,869.43852 1257.3341,869.95828 1256.3566,870.48134 C 1257.3475,869.95131 1258.3185,869.44689 1259.2632,868.84799 z M 1256.3566,870.48134 C 1255.1984,871.10112 1254.0267,871.6255 1252.8118,872.14557 C 1254.0196,871.62823 1255.2064,871.09663 1256.3566,870.48134 z M 1226.8367,875.21457 C 1227.6788,875.36383 1228.5539,875.41447 1229.4104,875.5166 C 1228.5603,875.41446 1227.6717,875.36276 1226.8367,875.21457 z M 1235.5048,875.86159 C 1236.0377,875.85426 1236.5691,875.91674 1237.1056,875.89079 C 1237.6421,875.86484 1238.165,875.75137 1238.6961,875.70723 C 1237.6457,875.79497 1236.574,875.84634 1235.5048,875.86159 z M 1301.3333,894.32284 C 1300.164,895.53745 1299.0139,896.64054 1297.7696,897.80063 L 1343.3452,916.38845 C 1344.9149,914.40743 1346.3807,912.36948 1347.8493,910.30614 L 1301.3333,894.32284 z M 1203.1652,917.09089 C 1204.3846,917.53437 1205.6162,918.01415 1206.854,918.40524 L 1214.4436,967.29967 C 1216.9518,967.66807 1219.5464,967.97913 1222.0582,968.21089 L 1211.7182,919.76938 C 1208.7924,919.01853 1206.0017,918.12848 1203.1652,917.09089 z M 1222.0582,968.21089 C 1223.8081,968.37235 1225.552,968.50183 1227.3016,968.59704 C 1225.5602,968.50312 1223.801,968.36997 1222.0582,968.21089 z M 1227.3016,968.59704 C 1229.0194,968.69053 1230.7124,968.74591 1232.4283,968.77558 C 1230.6901,968.74666 1229.0429,968.69097 1227.3016,968.59704 z M 1255.9121,967.1066 C 1255.007,967.24676 1254.0698,967.4375 1253.1617,967.55951 C 1254.0859,967.43492 1254.9959,967.35654 1255.9172,967.21297 L 1255.9121,967.1066 z "
+-             style="opacity:0.22826089;fill:#eb7331;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" />
+-        </g>
+-      </g>
+-    </g>
+-  </g>
++  <sodipodi:namedview
++     inkscape:window-height="654"
++     inkscape:window-width="806"
++     inkscape:pageshadow="2"
++     inkscape:pageopacity="0.0"
++     guidetolerance="10.0"
++     gridtolerance="10.0"
++     objecttolerance="10.0"
++     borderopacity="1.0"
++     bordercolor="#666666"
++     pagecolor="#ffffff"
++     id="base"
++     inkscape:zoom="5.5390032"
++     inkscape:cx="44.591218"
++     inkscape:cy="24.245951"
++     inkscape:window-x="368"
++     inkscape:window-y="365"
++     inkscape:current-layer="svg2">
++    <inkscape:grid
++       type="xygrid"
++       id="grid2893" />
++  </sodipodi:namedview>
++  <defs
++     id="defs5" />
++  <rect
++     style="opacity:1;fill:#000000;stroke:#000000;stroke-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
++     id="center"
++     width="42"
++     height="50"
++     x="0"
++     y="0" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJ3SURB VDiNrZS7ThwxFIb/Yx/PhdVILJEiVgRBwUpQUESR8gIU2TegpEtPmZ5HoKGkSZsUiZR3QLRRlDQp aDYbCFp2ZmfnYqdYG5xhACFi6dfcfD7/5xx7CICBN8IwrPb3978kSXIRRdGUmSsiMkRkhBCamasw DIu9vb13RPQKwBhACmAKIBdojKWlpbT57jHjFnB7e3v434Cbm5uX/X7/8ilAVkqZbrdbbm1tXW1s bJwD0ESkicg8GN0G3N3d/W0BJRFpIUT9FKCwwbUQopRSFsxc2M5qItKPdkhEpRCiZOYpM2dKqSkz F1LKmoge7ZCVUhMpZaGUyuI4HkdRlCmlZhbYmnYQBGyMqVuBCwsLF1LKIgiCaRRFaRRFqVKqFEJo AKYNurKy8nwymfxsBSZJMpJSlkqpwuk+d0Rker3ei+Fw+BU3p8y4e5EkyZ9OpzOO4zgNwzBn5koI oY25zSMi0+12O2tra6+Pj48/NGEAwEEQzGxHYV0ZG3wLtri4GO/s7Lw5PT39eHBw8AOAbrgEM3PV DHT3xhhiZrG6uvpsfX291+/3X56cnHweDAbvLcwXABiq67psq5W/xng8/nV2dvb96Ojo0+Hh4TfM /yxXACZWGYAcQMHLy8tv74GZLMvqNE1LABWA0qqwzxWA2koDAI9Go/wumJVLqbKgwgM7qKulYTuh Deau2jpwznKrmefUOTRs6/GQw9pzltuY3AO6LAxj/vu+C+gmOoeldeYc+mlfp3x1T8o+0AU261h7 2bQC/SPi7zMf2tbheZcx30d3pdyso7s6uW83Rw8PN8U59Wuq8e9i8wBjDGNe3DaYP7T3vqlrGAD8 BSHzOdR7PMREAAAAAElFTkSuQmCC "
++     x="22"
++     y="25"
++     width="20"
++     height="25"
++     id="bottomright"
++     inkscape:label="#bottomright" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIKSURB VDiNrdU9j9NAEAbg2fXa+Wi5q5DoKE4prkEnfg8VDQUdEjU1NTXKf4CGwq2j9DRpSKSksKJYdrIf Mzs03mjjODk4nSUr63jz6J1ZryOYGZ7zkM+qAYD6n8lCCPFk8JEfX7x3BvZAogNcGp+CHSggYrVa vb69vX2fJMlbKeUEANIryUEwcxeTACAmk4ksiuLDcDj8jIi/rLW/D4fDH0S0zHyc770/SdktRwaw ruuPo9Ho3Xa7/dY0TYmIkogEEQkAAGYWMXxWcoTJ+Xx+Nx6PP63X6y+73W7nnBsE0HsvvffQh8UJ ZXSmdV1/BYAXi8Xih9ZaWWsTRJSImBCRZOYTMB6rCBXttcqy7GGz2fysqmpgjEmNMSqA3vtQqujb ZTGYtNeZUupuuVx+b5pmoLVOrbUqpPPey0v9i0EZg0KItKoq2O/3mTEmc86pkC6A3VKvgSkAgNY6 NcZk1lplrU2JKGFm0T4mj4IBPYLWWuWcO2JElASssyBnIEQJQ0pAxKTtW8BknC4kZGaYzWYv8zy/ L8vyprvKAQYiku0jItre9aUT0+n0oSiKN5dKDieE5kepTsr03suiKF7FWCgVoskBjrfWWc+YWXrv kzzP77uLEr+xz/oTf0ZjwczCOZeWZXlzCYyx3i0Vf0dEiXNuoLUeXkv4TwczAxEliJj13X8KKJlZ ImLv38dfxGKNNs8wC5gAAAAASUVORK5CYII= "
++     x="0"
++     y="0"
++     width="20"
++     height="23"
++     id="topleft" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURB VDiNrZS7ThtBFIb/Mzdsb2wkKwIhLOgsF9Q0lLFEhCKavEIkGt4jJc9Ax3PQpw0mVYJonEQCicXs rmfmpGAmGS9rpIQc6ddqj8585zIXAtAKagPIAPSY+dPp6enHsiyNtVZ57wUzEzOTtVYVRdG+u7vr n5ycvC3LUiExgRdYv9+/r/teBNzZ2Zn+V+BwOLwdjUa3qU8tC37OiIiJyAPwe3t739fX193FxUX3 5uZGvwgohHBE5Le3tx+2trYsM4u/BhKRJyKvlLJKqUpKWQkh5t57AfxDy0QEKaVTSlVa6wel1Mw5 p6y18N43t8zMzhijyrJsbFdK6bTWZavVmnnvFQAIIaxzzjQC8zz/urm5uTaZTH7WYcwMIYTXWs+Z +T7AXFVVRQrkIADg6XT6eWNjY3B5efmjqWUALKV0xpiSiFgpVc3n83vnnJZ4nGOUAbCyurp6e3h4 +OHq6moym80sMwsAFJmhShZCsJTSSSmtUmpujCkjUALQQeb8/Dw/ODjIdnd331xfX38risIyM/0p khYqTsBeBlgKNQDM2dnZl/39/dfj8fh9t9sFEfk8zwvvfTyHsX0QEYeKPUUAHl+cDoBXQV0A7ePj 49HR0dG7wWAw7PV6a8msGy0CFYCVAMwCMAv/rVC5yrJMdzodmcyzEaiTDWkFUFQ7+GJSEUTLoLIW IJYs4kQ+yCXf31K1IAugSoARZkOV9QKeWATGRYSnMBfGUiXANGYpMC6eJ7BYdTz4KRBN0Hj1fM0f YTFBHZa+9AvQ9HGIkJggAm0A1OfX2DIx8+Jden7X01aXAwHUodSgmAy1uAX7BQ0eBlSo9ueJAAAA AElFTkSuQmCC "
++     x="0"
++     y="25"
++     width="20"
++     height="25"
++     id="bottomleft" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAYAAAAbp/98AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABqSURB VAiZfce7EoIwFEDBDbkFFJR8HKXfH4fGB44QsSGVM55qT8IBnbM/iHmerxA55w9E13UbUkTEEymG YViO40gxjmNpWCD6vl8hImKHVGvdIE3TdIEopbwg8G5YGx4Ntx/cIZ+zZyTUL8puIaBwGexNAAAA AElFTkSuQmCC "
++     x="20"
++     y="25"
++     width="2"
++     height="25"
++     id="bottom" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJeSURB VDiNrdW/axRBFAfw75t5t5eYGAgnJHCI2ESshHDBLoWNrX+ChWJhZRmsrS1sBMEq+SOshFSGQMBi sTDVcTbGcHeSXO52Zt6zyOwxt7k7CWRg4H7NZ77v3ewuqSpucpgb1QBQnHOHXqMMwvyUM6FZmxCA 2n+g6usJqAqTqo7mJAQAJyJ5COHbycnJx2az+TOBx1gJU6fTeZGuNsaMf0REyszZ4uLi3SzLHjDz k+Fw+G5ra+tDnucSQUlRyvP8ZTUSESkRKQBYa9Vaq8wsS0tLjdXV1VcXFxefl5eX3yfgGOV+v1+f VicRqTEGxhgpwcFg0C+K4tP6+vrbo6OjL5ubmz+SJQIA3Ov1bqVIJSWstcLMgZkly7LgnPu7srLy dWNj4zWANwBcivLZ2dnClHQAoDGllmC9XvdFUbhut3u8trb2FADHsh3imebBYHAFTPsYSxZmDs45 6703nU7nd7PZfAggS/qoAIhHo1E2DUv6KGXKEIIVEQJQEFEtgiFOAaDsvedZIAA1xigRaQjBlGc4 OVq1WK4vUQ4hmAo2AYuIlkBRFIh/VEhAxuXle9nDnZ2d541G48/29vb3Vqv1i4jGCVWVULkivPfi vbfxLQOwcRoAMOfn57fb7fb93d3dZ3t7e49VldIJgESERIRUlUIIJqnKpukA0ES5h4eHrYODg3tp v8rqS1hVSUTKdSaZV0EA2N/ffyQiVlUn0DJtkhwJVG569V54enp6xzlXS4EKivSzpNzxDhNjOBwu OOfqIQRbWTiBpqlSdOrd2nufRXDa13PHLJBjD6/9EPsHVMljBvA4PAYAAAAASUVORK5CYII= "
++     x="22"
++     y="0"
++     width="20"
++     height="23"
++     id="topright" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABLSURB VAiZpczBDYAgEEXB9zebwIVqLIg2sC/r8mBiIIa43rk6BYyAYNFaO0opZ865u/uUFJLCzF53nyml p9a6S9qAC7iBDgxbs78+tHsRDDSrU6UAAAAASUVORK5CYII= "
++     x="22"
++     y="23"
++     width="20"
++     height="2"
++     id="right" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABMSURB VAiZpcgxCoAwEETR2RDEELDwXN7LXCMH8jRpdmHI2Fil9cFvvgHYvwqACuCQ9PTe74jYSOY5Z5Jk koxkdvcyxjhbaxcWaR1/vSI1IAOvb27vAAAAAElFTkSuQmCC "
++     x="0"
++     y="23"
++     width="20"
++     height="2"
++     id="left" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAXCAYAAAAhrZ4MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABdSURB VAiZlc5BCsIwFATQl/jR4jk9eg+QQCkEUr4LW9ClAwNvN1MyE1RnylnxjRuUzBxQ1nV9QfTey4UH RGvtCbFt2wKx7/sHY4w7xJwzII7jqFBqrfNaz58/f+ENRUIjftJV2bAAAAAASUVORK5CYII= "
++     x="20"
++     y="0"
++     width="2"
++     height="23"
++     id="top" />
++  <path
++     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4.15;stroke-opacity:1"
++     d="M 20,23 L 22,23 L 22,25 L 20,25 L 20,23 z"
++     id="rect2895" />
+ </svg>
+--- a/plasma/desktoptheme/widgets/panel-background.svg
++++ b/plasma/desktoptheme/widgets/panel-background.svg
+@@ -2,139 +2,24 @@
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
+ <svg
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+-   xmlns:cc="http://web.resource.org/cc/"
++   xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:svg="http://www.w3.org/2000/svg"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+-   width="611.42859"
+-   height="32.857143"
++   version="1.0"
++   width="42"
++   height="50"
+    id="svg2"
+    sodipodi:version="0.32"
+-   inkscape:version="0.45"
+-   sodipodi:docbase="/media/usbdisk/robert/kde4/src/kdebase/workspace/plasma/desktoptheme/widgets"
+-   sodipodi:docname="panel-background.svg"
+-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+-   version="1.0"
+-   sodipodi:modified="true">
+-  <defs
+-     id="defs4">
+-    <linearGradient
+-       id="linearGradient4019">
+-      <stop
+-         style="stop-color:#ffffff;stop-opacity:0.54639173;"
+-         offset="0"
+-         id="stop4021" />
+-      <stop
+-         id="stop4059"
+-         offset="0.17857143"
+-         style="stop-color:#ffffff;stop-opacity:0.34020618;" />
+-      <stop
+-         style="stop-color:#03106c;stop-opacity:0;"
+-         offset="1"
+-         id="stop4023" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient4009">
+-      <stop
+-         style="stop-color:#03106c;stop-opacity:1;"
+-         offset="0"
+-         id="stop4011" />
+-      <stop
+-         style="stop-color:#03106c;stop-opacity:0;"
+-         offset="1"
+-         id="stop4013" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient3954">
+-      <stop
+-         style="stop-color:#00094e;stop-opacity:1;"
+-         offset="0"
+-         id="stop3956" />
+-      <stop
+-         id="stop4005"
+-         offset="0.5"
+-         style="stop-color:#010c5d;stop-opacity:0.40206185;" />
+-      <stop
+-         style="stop-color:#03106c;stop-opacity:0;"
+-         offset="1"
+-         id="stop3958" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient3898">
+-      <stop
+-         style="stop-color:#ffffff;stop-opacity:0.23529412;"
+-         offset="0"
+-         id="stop3900" />
+-      <stop
+-         style="stop-color:#ffffff;stop-opacity:0;"
+-         offset="1"
+-         id="stop3902" />
+-    </linearGradient>
+-    <linearGradient
+-       id="linearGradient3133">
+-      <stop
+-         style="stop-color:#000049;stop-opacity:1;"
+-         offset="0"
+-         id="stop3135" />
+-      <stop
+-         style="stop-color:#000000;stop-opacity:1;"
+-         offset="1"
+-         id="stop3137" />
+-    </linearGradient>
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3133"
+-       id="linearGradient3147"
+-       x1="61.428574"
+-       y1="85.933617"
+-       x2="672.85718"
+-       y2="85.933617"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="translate(5.7142857,-37.142857)" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient3954"
+-       id="linearGradient4003"
+-       gradientUnits="userSpaceOnUse"
+-       x1="153.54318"
+-       y1="82.102081"
+-       x2="537.90622"
+-       y2="82.102081" />
+-    <linearGradient
+-       inkscape:collect="always"
+-       xlink:href="#linearGradient4019"
+-       id="linearGradient4025"
+-       x1="186.87822"
+-       y1="-139.12133"
+-       x2="244.45691"
+-       y2="-139.12133"
+-       gradientUnits="userSpaceOnUse"
+-       gradientTransform="matrix(0.1491227,0,0,17.565218,4.2690294,2070.7301)" />
+-  </defs>
+-  <sodipodi:namedview
+-     id="base"
+-     pagecolor="#ffffff"
+-     bordercolor="#666666"
+-     borderopacity="1.0"
+-     gridtolerance="10000"
+-     guidetolerance="10"
+-     objecttolerance="10"
+-     inkscape:pageopacity="0.0"
+-     inkscape:pageshadow="2"
+-     inkscape:zoom="1.979899"
+-     inkscape:cx="306.44684"
+-     inkscape:cy="55.329829"
+-     inkscape:document-units="px"
+-     inkscape:current-layer="layer1"
+-     inkscape:window-width="1400"
+-     inkscape:window-height="977"
+-     inkscape:window-x="0"
+-     inkscape:window-y="0" />
++   inkscape:version="0.45+devel"
++   sodipodi:docname="background.svg"
++   sodipodi:docbase="/home/aseigo/kde4/KDE/kdebase/workspace/plasma/desktoptheme/widgets"
++   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+   <metadata
+-     id="metadata7">
++     id="metadata2480">
+     <rdf:RDF>
+       <cc:Work
+          rdf:about="">
+@@ -144,35 +29,96 @@
+       </cc:Work>
+     </rdf:RDF>
+   </metadata>
+-  <g
+-     inkscape:label="Layer 1"
+-     inkscape:groupmode="layer"
+-     id="layer1"
+-     transform="translate(-67.14286,-32.362186)">
+-    <rect
+-       style="opacity:1;fill:url(#linearGradient3147);fill-opacity:1;stroke:none;stroke-width:7.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+-       id="rect2160"
+-       width="611.42859"
+-       height="32.857143"
+-       x="67.14286"
+-       y="32.362186" />
+-    <path
+-       sodipodi:type="arc"
+-       style="opacity:1;fill:url(#linearGradient4003);fill-opacity:1;stroke:none;stroke-width:7.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+-       id="path3950"
+-       sodipodi:cx="345.7247"
+-       sodipodi:cy="82.102081"
+-       sodipodi:rx="192.18152"
+-       sodipodi:ry="54.800774"
+-       d="M 537.90622 82.102081 A 192.18152 54.800774 0 1 1  153.54318,82.102081 A 192.18152 54.800774 0 1 1  537.90622 82.102081 z"
+-       transform="matrix(1.5585664,5.596483e-2,-0.3085081,0.2168223,-139.27654,11.654348)" />
+-    <rect
+-       style="opacity:1;fill:url(#linearGradient4025);fill-opacity:1;stroke:none;stroke-width:7.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+-       id="rect4017"
+-       width="8.5862951"
+-       height="612.15247"
+-       x="32.136829"
+-       y="-679.04279"
+-       transform="matrix(0,1,-1,0,0,0)" />
+-  </g>
++  <sodipodi:namedview
++     inkscape:window-height="654"
++     inkscape:window-width="806"
++     inkscape:pageshadow="2"
++     inkscape:pageopacity="0.0"
++     guidetolerance="10.0"
++     gridtolerance="10.0"
++     objecttolerance="10.0"
++     borderopacity="1.0"
++     bordercolor="#666666"
++     pagecolor="#ffffff"
++     id="base"
++     inkscape:zoom="5.5390032"
++     inkscape:cx="44.591218"
++     inkscape:cy="24.245951"
++     inkscape:window-x="368"
++     inkscape:window-y="365"
++     inkscape:current-layer="svg2">
++    <inkscape:grid
++       type="xygrid"
++       id="grid2893" />
++  </sodipodi:namedview>
++  <defs
++     id="defs5" />
++  <rect
++     style="opacity:1;fill:#000000;stroke:#000000;stroke-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
++     id="center"
++     width="42"
++     height="50"
++     x="0"
++     y="0" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJ3SURB VDiNrZS7ThwxFIb/Yx/PhdVILJEiVgRBwUpQUESR8gIU2TegpEtPmZ5HoKGkSZsUiZR3QLRRlDQp aDYbCFp2ZmfnYqdYG5xhACFi6dfcfD7/5xx7CICBN8IwrPb3978kSXIRRdGUmSsiMkRkhBCamasw DIu9vb13RPQKwBhACmAKIBdojKWlpbT57jHjFnB7e3v434Cbm5uX/X7/8ilAVkqZbrdbbm1tXW1s bJwD0ESkicg8GN0G3N3d/W0BJRFpIUT9FKCwwbUQopRSFsxc2M5qItKPdkhEpRCiZOYpM2dKqSkz F1LKmoge7ZCVUhMpZaGUyuI4HkdRlCmlZhbYmnYQBGyMqVuBCwsLF1LKIgiCaRRFaRRFqVKqFEJo AKYNurKy8nwymfxsBSZJMpJSlkqpwuk+d0Rker3ei+Fw+BU3p8y4e5EkyZ9OpzOO4zgNwzBn5koI oY25zSMi0+12O2tra6+Pj48/NGEAwEEQzGxHYV0ZG3wLtri4GO/s7Lw5PT39eHBw8AOAbrgEM3PV DHT3xhhiZrG6uvpsfX291+/3X56cnHweDAbvLcwXABiq67psq5W/xng8/nV2dvb96Ojo0+Hh4TfM /yxXACZWGYAcQMHLy8tv74GZLMvqNE1LABWA0qqwzxWA2koDAI9Go/wumJVLqbKgwgM7qKulYTuh Deau2jpwznKrmefUOTRs6/GQw9pzltuY3AO6LAxj/vu+C+gmOoeldeYc+mlfp3x1T8o+0AU261h7 2bQC/SPi7zMf2tbheZcx30d3pdyso7s6uW83Rw8PN8U59Wuq8e9i8wBjDGNe3DaYP7T3vqlrGAD8 BSHzOdR7PMREAAAAAElFTkSuQmCC "
++     x="22"
++     y="25"
++     width="20"
++     height="25"
++     id="bottomright"
++     inkscape:label="#bottomright" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIKSURB VDiNrdU9j9NAEAbg2fXa+Wi5q5DoKE4prkEnfg8VDQUdEjU1NTXKf4CGwq2j9DRpSKSksKJYdrIf Mzs03mjjODk4nSUr63jz6J1ZryOYGZ7zkM+qAYD6n8lCCPFk8JEfX7x3BvZAogNcGp+CHSggYrVa vb69vX2fJMlbKeUEANIryUEwcxeTACAmk4ksiuLDcDj8jIi/rLW/D4fDH0S0zHyc770/SdktRwaw ruuPo9Ho3Xa7/dY0TYmIkogEEQkAAGYWMXxWcoTJ+Xx+Nx6PP63X6y+73W7nnBsE0HsvvffQh8UJ ZXSmdV1/BYAXi8Xih9ZaWWsTRJSImBCRZOYTMB6rCBXttcqy7GGz2fysqmpgjEmNMSqA3vtQqujb ZTGYtNeZUupuuVx+b5pmoLVOrbUqpPPey0v9i0EZg0KItKoq2O/3mTEmc86pkC6A3VKvgSkAgNY6 NcZk1lplrU2JKGFm0T4mj4IBPYLWWuWcO2JElASssyBnIEQJQ0pAxKTtW8BknC4kZGaYzWYv8zy/ L8vyprvKAQYiku0jItre9aUT0+n0oSiKN5dKDieE5kepTsr03suiKF7FWCgVoskBjrfWWc+YWXrv kzzP77uLEr+xz/oTf0ZjwczCOZeWZXlzCYyx3i0Vf0dEiXNuoLUeXkv4TwczAxEliJj13X8KKJlZ ImLv38dfxGKNNs8wC5gAAAAASUVORK5CYII= "
++     x="0"
++     y="0"
++     width="20"
++     height="23"
++     id="topleft" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURB VDiNrZS7ThtBFIb/Mzdsb2wkKwIhLOgsF9Q0lLFEhCKavEIkGt4jJc9Ax3PQpw0mVYJonEQCicXs rmfmpGAmGS9rpIQc6ddqj8585zIXAtAKagPIAPSY+dPp6enHsiyNtVZ57wUzEzOTtVYVRdG+u7vr n5ycvC3LUiExgRdYv9+/r/teBNzZ2Zn+V+BwOLwdjUa3qU8tC37OiIiJyAPwe3t739fX193FxUX3 5uZGvwgohHBE5Le3tx+2trYsM4u/BhKRJyKvlLJKqUpKWQkh5t57AfxDy0QEKaVTSlVa6wel1Mw5 p6y18N43t8zMzhijyrJsbFdK6bTWZavVmnnvFQAIIaxzzjQC8zz/urm5uTaZTH7WYcwMIYTXWs+Z +T7AXFVVRQrkIADg6XT6eWNjY3B5efmjqWUALKV0xpiSiFgpVc3n83vnnJZ4nGOUAbCyurp6e3h4 +OHq6moym80sMwsAFJmhShZCsJTSSSmtUmpujCkjUALQQeb8/Dw/ODjIdnd331xfX38risIyM/0p khYqTsBeBlgKNQDM2dnZl/39/dfj8fh9t9sFEfk8zwvvfTyHsX0QEYeKPUUAHl+cDoBXQV0A7ePj 49HR0dG7wWAw7PV6a8msGy0CFYCVAMwCMAv/rVC5yrJMdzodmcyzEaiTDWkFUFQ7+GJSEUTLoLIW IJYs4kQ+yCXf31K1IAugSoARZkOV9QKeWATGRYSnMBfGUiXANGYpMC6eJ7BYdTz4KRBN0Hj1fM0f YTFBHZa+9AvQ9HGIkJggAm0A1OfX2DIx8+Jden7X01aXAwHUodSgmAy1uAX7BQ0eBlSo9ueJAAAA AElFTkSuQmCC "
++     x="0"
++     y="25"
++     width="20"
++     height="25"
++     id="bottomleft" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAZCAYAAAAbp/98AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABqSURB VAiZfce7EoIwFEDBDbkFFJR8HKXfH4fGB44QsSGVM55qT8IBnbM/iHmerxA55w9E13UbUkTEEymG YViO40gxjmNpWCD6vl8hImKHVGvdIE3TdIEopbwg8G5YGx4Ntx/cIZ+zZyTUL8puIaBwGexNAAAA AElFTkSuQmCC "
++     x="20"
++     y="25"
++     width="2"
++     height="25"
++     id="bottom" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJeSURB VDiNrdW/axRBFAfw75t5t5eYGAgnJHCI2ESshHDBLoWNrX+ChWJhZRmsrS1sBMEq+SOshFSGQMBi sTDVcTbGcHeSXO52Zt6zyOwxt7k7CWRg4H7NZ77v3ewuqSpucpgb1QBQnHOHXqMMwvyUM6FZmxCA 2n+g6usJqAqTqo7mJAQAJyJ5COHbycnJx2az+TOBx1gJU6fTeZGuNsaMf0REyszZ4uLi3SzLHjDz k+Fw+G5ra+tDnucSQUlRyvP8ZTUSESkRKQBYa9Vaq8wsS0tLjdXV1VcXFxefl5eX3yfgGOV+v1+f VicRqTEGxhgpwcFg0C+K4tP6+vrbo6OjL5ubmz+SJQIA3Ov1bqVIJSWstcLMgZkly7LgnPu7srLy dWNj4zWANwBcivLZ2dnClHQAoDGllmC9XvdFUbhut3u8trb2FADHsh3imebBYHAFTPsYSxZmDs45 6703nU7nd7PZfAggS/qoAIhHo1E2DUv6KGXKEIIVEQJQEFEtgiFOAaDsvedZIAA1xigRaQjBlGc4 OVq1WK4vUQ4hmAo2AYuIlkBRFIh/VEhAxuXle9nDnZ2d541G48/29vb3Vqv1i4jGCVWVULkivPfi vbfxLQOwcRoAMOfn57fb7fb93d3dZ3t7e49VldIJgESERIRUlUIIJqnKpukA0ES5h4eHrYODg3tp v8rqS1hVSUTKdSaZV0EA2N/ffyQiVlUn0DJtkhwJVG569V54enp6xzlXS4EKivSzpNzxDhNjOBwu OOfqIQRbWTiBpqlSdOrd2nufRXDa13PHLJBjD6/9EPsHVMljBvA4PAYAAAAASUVORK5CYII= "
++     x="22"
++     y="0"
++     width="20"
++     height="23"
++     id="topright" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABLSURB VAiZpczBDYAgEEXB9zebwIVqLIg2sC/r8mBiIIa43rk6BYyAYNFaO0opZ865u/uUFJLCzF53nyml p9a6S9qAC7iBDgxbs78+tHsRDDSrU6UAAAAASUVORK5CYII= "
++     x="22"
++     y="23"
++     width="20"
++     height="2"
++     id="right" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABMSURB VAiZpcgxCoAwEETR2RDEELDwXN7LXCMH8jRpdmHI2Fil9cFvvgHYvwqACuCQ9PTe74jYSOY5Z5Jk koxkdvcyxjhbaxcWaR1/vSI1IAOvb27vAAAAAElFTkSuQmCC "
++     x="0"
++     y="23"
++     width="20"
++     height="2"
++     id="left" />
++  <image
++     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAXCAYAAAAhrZ4MAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABdSURB VAiZlc5BCsIwFATQl/jR4jk9eg+QQCkEUr4LW9ClAwNvN1MyE1RnylnxjRuUzBxQ1nV9QfTey4UH RGvtCbFt2wKx7/sHY4w7xJwzII7jqFBqrfNaz58/f+ENRUIjftJV2bAAAAAASUVORK5CYII= "
++     x="20"
++     y="0"
++     width="2"
++     height="23"
++     id="top" />
++  <path
++     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:4.15;stroke-opacity:1"
++     d="M 20,23 L 22,23 L 22,25 L 20,25 L 20,23 z"
++     id="rect2895" />
+ </svg>
+--- a/plasma/desktoptheme/metadata.desktop
++++ b/plasma/desktoptheme/metadata.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Oxygen
+ Name[csb]=Krziseń
++Name[eo]=Oksigen
+ Name[kk]=Оттегі
+ Name[km]=អុកស៊ីហ្សែន
+ Name[ne]=अक्सिजन
+@@ -13,6 +13,7 @@
+ Name[x-test]=xxOxygenxx
+ Comment=Theme done in the Oxygen style
+ Comment[bg]=Тема в стил "Oxygen"
++Comment[ca]=Tema fet en estil Oxygen
+ Comment[de]=Oberflächen-Design im Oxygen-Stil
+ Comment[el]=Το θέμα δημιουργήθηκε στο στυλ Oxygen
+ Comment[es]=Tema realizado con el estilo Oxygen
+--- a/plasma/runners/search/plasma-runner-search.desktop
++++ b/plasma/runners/search/plasma-runner-search.desktop
+@@ -1,11 +1,11 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Search Runner
+ Name[be]=Запуск пошуку
+ Name[bg]=Търсене
+ Name[ca]=Executador de cerques
+ Name[de]=Suche durchführen
+ Name[el]=Εκτελεστής αναζήτησης
++Name[eo]=Serĉil-elektilo
+ Name[et]=Otsingu jäivitaja
+ Name[fa]=اجراکتتدۀ جستجو
+ Name[he]=חיפוש
+@@ -37,6 +37,7 @@
+ Comment[csb]=Szëkba lopków
+ Comment[de]=Dateien suchen
+ Comment[el]=Αναζήτηση αρχείων
++Comment[eo]=Serĉi dosierojn
+ Comment[et]=Failide otsimine
+ Comment[fa]=پرونده‌های جستجو
+ Comment[ga]=Cuardaigh comhaid
+@@ -63,7 +64,7 @@
+ Comment[x-test]=xxSearch filesxx
+ Comment[zh_CN]=搜索文件
+ Comment[zh_TW]=搜索檔案
+-ServiceTypes=Plasma/Runner
++X-KDE-ServiceTypes=Plasma/Runner
+ Type=Service
+ X-KDE-Library=krunner_searchrunner
+ X-Krunner-ID=Search Runner
+--- a/plasma/runners/bookmarks/plasma-runner-bookmarks.desktop
++++ b/plasma/runners/bookmarks/plasma-runner-bookmarks.desktop
+@@ -1,40 +1,48 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Bookmark Runner
+ Name[ca]=Executador de preferits
+ Name[el]=Εκτελεστής σελιδοδεικτών
++Name[eo]=Legosigno-elektilo
+ Name[et]=Järjehoidja käivitaja
+ Name[ja]=ブックマーク Runner
+ Name[ko]=책갈피 실행기
++Name[nb]=Bokmerkekjører
+ Name[nds]=Leestekendreger
+ Name[nl]=Bladwijzers openen
+ Name[nn]=Bokmerkestartar
++Name[pa]=ਬੁੱਕਮਾਰਕ ਰਨਰ
+ Name[pt]=Execução de Favoritos
+ Name[pt_BR]=Executor de Favoritos
+ Name[sr]=Извођач маркера
+ Name[sr at latin]=Izvođač markera
+ Name[sv]=Kör bokmärke
++Name[x-test]=xxBookmark Runnerxx
+ Name[zh_CN]=书签运行器
+ Name[zh_TW]=書籤執行者
+ Comment=Open bookmark
+ Comment[ca]=Obre un punts
++Comment[de]=Lesezeichen aufrufen
+ Comment[el]=Άνοιγμα σελιδοδείκτη
++Comment[eo]=Malfermi legosignon
+ Comment[et]=Järjehoidja avamine
+ Comment[ga]=Oscail leabharmharc
+ Comment[ja]=ブックマークを開く
+ Comment[ko]=책갈피 열기
++Comment[nb]=Åpne bokmerke
+ Comment[nds]=Leesteken opmaken
+ Comment[nl]=Bladwijzer openen
+ Comment[nn]=Opna bokmerke
++Comment[pa]=ਬੁੱਕਮਾਰਕ ਖੋਲ੍ਹੋ
+ Comment[pt]=Abrir um favorito
+ Comment[pt_BR]=Abrir um favorito
+ Comment[sl]=Odpri zaznamek
+ Comment[sr]=Отвори маркер
+ Comment[sr at latin]=Otvori marker
+ Comment[sv]=Öppna bokmärke
++Comment[x-test]=xxOpen bookmarkxx
+ Comment[zh_CN]=打开书签
+ Comment[zh_TW]=開啟書籤
+-ServiceTypes=Plasma/Runner
++X-KDE-ServiceTypes=Plasma/Runner
+ Type=Service
+ X-KDE-Library=krunner_bookmarksrunner
+ X-Krunner-ID=Bookmarks Runner
+--- a/plasma/runners/bookmarks/bookmarksrunner.cpp
++++ b/plasma/runners/bookmarks/bookmarksrunner.cpp
+@@ -25,11 +25,14 @@
+ #include <QWidget>
+ #include <QScriptEngine>
+ #include <QList>
++#include <QDBusInterface>
++#include <QDBusReply>
+ 
+ #include <KIcon>
+ #include <KBookmarkManager>
+ #include <KToolInvocation>
+ #include <KUrl>
++#include <KStandardDirs>
+ 
+ 
+ BookmarksRunner::BookmarksRunner( QObject* parent, const QVariantList &args )
+@@ -38,6 +41,7 @@
+     Q_UNUSED(args)
+ 
+     setObjectName(i18n("Bookmarks"));
++    m_icon = KIcon("bookmark");
+ }
+ 
+ BookmarksRunner::~BookmarksRunner()
+@@ -57,7 +61,14 @@
+     foreach (KBookmark bookmark, matchingBookmarks) {
+         kDebug() << "Found bookmark: " << bookmark.text() << " (" << bookmark.url().prettyUrl() << ")";
+         Plasma::SearchAction *action = search->addPossibleMatch(this);
+-        action->setIcon(KIcon("bookmark"));
++
++        QIcon icon = getFavicon(bookmark.url());
++        if (icon.isNull()) {
++            action->setIcon(m_icon);
++        }
++        else {
++            action->setIcon(icon);
++        }
+         action->setText(bookmark.text());
+         action->setData(bookmark.url().url());
+     }
+@@ -71,7 +82,7 @@
+         if(currentBookmark.isGroup()) { //recurse
+             matchingBookmarks += searchBookmarks(currentBookmark.toGroup(), query);
+         } else {
+-            if(currentBookmark.text().contains(query, Qt::CaseInsensitive)) {
++            if(currentBookmark.text().contains(query, Qt::CaseInsensitive) || currentBookmark.url().prettyUrl().contains(query, Qt::CaseInsensitive)) {
+                 matchingBookmarks.append(currentBookmark);
+             }
+         }
+@@ -80,6 +91,26 @@
+     return matchingBookmarks;
+ }
+ 
++KIcon BookmarksRunner::getFavicon(const KUrl &url) {
++    // query the favicons module
++    QDBusInterface favicon("org.kde.kded", "/modules/favicons", "org.kde.FavIcon");
++    QDBusReply<QString> reply = favicon.call("iconForUrl", url.url());
++
++    if (!reply.isValid()) {
++        return KIcon();
++    }
++
++    // locate the favicon
++    QString iconFile = KGlobal::dirs()->findResource("cache",reply.value()+".png");
++    if(iconFile.isNull()) {
++        return KIcon();
++    }
++
++    KIcon icon = KIcon(iconFile);
++
++    return icon;
++}
++
+ void BookmarksRunner::exec(Plasma::SearchAction *action)
+ {
+     KUrl url = (KUrl)action->data().toString();
+--- a/plasma/runners/bookmarks/bookmarksrunner.h
++++ b/plasma/runners/bookmarks/bookmarksrunner.h
+@@ -21,6 +21,7 @@
+ #define BOOKMARKSRUNNER_H
+ 
+ #include <KGenericFactory>
++#include <KIcon>
+ 
+ #include <plasma/abstractrunner.h>
+ 
+@@ -29,7 +30,6 @@
+ class KBookmark;
+ class KBookmarkGroup;
+ 
+-
+ class BookmarksRunner : public Plasma::AbstractRunner
+ {
+     Q_OBJECT
+@@ -43,6 +43,10 @@
+ 
+     private:
+         QList<KBookmark> searchBookmarks(const KBookmarkGroup &bookmarkGrp, const QString &query);
++        KIcon getFavicon(const KUrl &url);
++
++    private:
++        KIcon m_icon;
+ };
+ 
+ K_EXPORT_PLASMA_RUNNER(bookmarksrunner, BookmarksRunner)
+--- a/plasma/runners/calculator/plasma-runner-calculator.desktop
++++ b/plasma/runners/calculator/plasma-runner-calculator.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Calculator Runner
+ Name[ar]=منفذ الحاسبة
+ Name[be]=Калькулятар
+@@ -8,6 +7,7 @@
+ Name[csb]=Kalkùlator
+ Name[de]=Rechner-Starter
+ Name[el]=Εκτελεστής υπολογισμών
++Name[eo]=Kalkulil-elektilo
+ Name[es]=Ejecución de la calculadora
+ Name[et]=Kalkulaatori käivitaja
+ Name[fa]=اجراکنندۀ ماشین حساب
+@@ -64,7 +64,7 @@
+ Comment[x-test]=xxCalculate expressionsxx
+ Comment[zh_CN]=计算表达式
+ Comment[zh_TW]=計算機表示式
+-ServiceTypes=Plasma/Runner
++X-KDE-ServiceTypes=Plasma/Runner
+ Type=Service
+ X-KDE-Library=krunner_calculatorrunner
+ X-Krunner-ID=Calculator Runner
+--- a/plasma/runners/webshortcuts/webshortcutrunner.cpp
++++ b/plasma/runners/webshortcuts/webshortcutrunner.cpp
+@@ -18,19 +18,18 @@
+ 
+ #include <QAction>
+ #include <QStringList>
+-#include <QIcon>
+ #include <QDBusInterface>
+ #include <QDBusReply>
+ 
+ #include <KDebug>
+ #include <KRun>
+-#include <KIconLoader>
+ #include <KLocale>
+ #include <KMimeType>
+ #include <KService>
+ #include <KStandardDirs>
+ #include <KToolInvocation>
+ #include <KUrl>
++#include <KIcon>
+ 
+ #include <kservicetypetrader.h>
+ 
+@@ -46,7 +45,7 @@
+     setObjectName(i18n("Locations"));
+     // query ktrader for all available searchproviders and preload the default icon
+     m_offers = KServiceTypeTrader::self()->query("SearchProvider");
+-    m_icon = QIcon(KIconLoader::global()->loadIcon("konqueror", KIconLoader::Small));
++    m_icon = KIcon("konqueror");
+ }
+ 
+ WebshortcutRunner::~WebshortcutRunner()
+@@ -76,7 +75,7 @@
+                 action->setData(url);
+ 
+                 // let's try if we can get a proper icon from the favicon cache
+-                QIcon icon = getFavicon(url);
++                KIcon icon = getFavicon(url);
+                 if (icon.isNull()){
+                     action->setIcon(m_icon);
+                 } else {
+@@ -131,24 +130,24 @@
+     return QString();
+ }
+ 
+-QIcon WebshortcutRunner::getFavicon(const KUrl &url) {
++KIcon WebshortcutRunner::getFavicon(const KUrl &url) {
+     // query the favicons module
+     QDBusInterface favicon("org.kde.kded", "/modules/favicons", "org.kde.FavIcon");
+     QDBusReply<QString> reply = favicon.call("iconForUrl", url.url());
+ 
+     if (!reply.isValid()) {
+-        return QIcon();
++        return KIcon();
+     }
+ 
+     // locate the favicon
+     QString iconFile = KGlobal::dirs()->findResource("cache",reply.value()+".png");
+-    QIcon icon = QIcon(iconFile);
+ 
+-    if (!icon.isNull()) {
+-        return icon;
++    if(iconFile.isNull()) {
++	return KIcon();
+     }
++    KIcon icon = KIcon(iconFile);
+ 
+-    return QIcon();
++    return icon;
+ }
+ 
+ void WebshortcutRunner::exec(Plasma::SearchAction *action)
+--- a/plasma/runners/webshortcuts/plasma-runner-webshortcuts.desktop
++++ b/plasma/runners/webshortcuts/plasma-runner-webshortcuts.desktop
+@@ -1,8 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Webshortcut runner
+ Name[ca]=Executador de dreceres web
+ Name[el]=Εκτέλεση συντομεύσεων ιστού
++Name[eo]=TTT-klavokombina elektilo
+ Name[et]=Veebi kiirkorralduste käivitaja
+ Name[ja]=ウェブショートカットランナー
+ Name[km]=កម្មវិធី​រត់​ផ្លូវកាត់​បណ្ដាញ
+@@ -12,6 +12,7 @@
+ Name[ne]=वेब सर्टकट रनर
+ Name[nl]=Webkoppelingen volgen
+ Name[nn]=Vevsnarvegstartar
++Name[pa]=ਵੈਬ-ਸ਼ਾਰਟਕੱਟ ਰਨਰ
+ Name[pt]=Execução de atalhos Web
+ Name[pt_BR]=Execução de Atalhos da Web
+ Name[sr]=Извођач веб пречица
+@@ -23,6 +24,7 @@
+ Comment=Webshortcut runner
+ Comment[ca]=Executador de dreceres web
+ Comment[el]=Εκτέλεση συντομεύσεων ιστού
++Comment[eo]=TTT-klavokombina elektilo
+ Comment[et]=Veebi kiirkorralduste käivitaja
+ Comment[ja]=ウェブショートカットランナー
+ Comment[km]=កម្មវិធី​រត់​ផ្លូវកាត់​បណ្ដាញ
+@@ -32,6 +34,7 @@
+ Comment[ne]=वेब सर्टकट रनर
+ Comment[nl]=Webkoppelingen volgen
+ Comment[nn]=Vevsnarvegstartar
++Comment[pa]=ਵੈਬ-ਸ਼ਾਰਟਕੱਟ ਰਨਰ
+ Comment[pt]=Execução de atalhos Web
+ Comment[pt_BR]=Execução de Atalhos da Web
+ Comment[sr]=Извођач веб пречица
+@@ -40,7 +43,7 @@
+ Comment[x-test]=xxWebshortcut runnerxx
+ Comment[zh_CN]=网页快捷方式运行器
+ Comment[zh_TW]=網頁捷徑執行者
+-ServiceTypes=Plasma/Runner
++X-KDE-ServiceTypes=Plasma/Runner
+ Type=Service
+ X-KDE-Library=krunner_webshortcuts
+ X-Krunner-ID=Webshortcut runner
+--- a/plasma/runners/webshortcuts/webshortcutrunner.h
++++ b/plasma/runners/webshortcuts/webshortcutrunner.h
+@@ -37,11 +37,11 @@
+ 
+     private:
+         QString getSearchQuery(const QString &query, const QString &searchWord);
+-        QIcon getFavicon(const KUrl& url);
++        KIcon getFavicon(const KUrl& url);
+ 
+     private:
+         KService::List m_offers;
+-        QIcon m_icon;
++        KIcon m_icon;
+         Plasma::SearchContext::Type m_type;
+ };
+ 
+--- a/plasma/animators/default/plasma-animator-default.desktop
++++ b/plasma/animators/default/plasma-animator-default.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=Default Plasma Animator
+ Name[bg]=Аниматор за Plasma
+ Name[ca]=Animador de plasma per omissió
+@@ -20,7 +19,7 @@
+ Name[ne]=पूर्वनिर्धारित प्लाज्मा एनिमेटर
+ Name[nl]=Standaard Plasma-animator
+ Name[nn]=Standard Plasma-animatør
+-Name[pa]=ਮੂਲ ਪਲਾਜ਼ਮਾ ਐਨੀਮੇਟਰ
++Name[pa]=ਡਿਫਾਲਟ ਪਲਾਜ਼ਮਾ ਐਨੀਮੇਟਰ
+ Name[pt]=Animador Predefinido do Plasma
+ Name[pt_BR]=Animador Padrão do Plasma
+ Name[sr]=Подразумевани аниматор Плазме
+@@ -30,7 +29,7 @@
+ Name[x-test]=xxDefault Plasma Animatorxx
+ Name[zh_CN]=默认 Plasma 动画
+ Name[zh_TW]=預設 Plasma 動畫
+-ServiceTypes=Plasma/Animator
++X-KDE-ServiceTypes=Plasma/Animator
+ Type=Service
+ Icon=plasma
+ X-KDE-Library=plasma_animator_default
+--- a/plasma/animators/default/defaultAnimator.cpp
++++ b/plasma/animators/default/defaultAnimator.cpp
+@@ -65,16 +65,20 @@
+     }
+     item->resetTransform();
+     item->scale(progress, progress);
++    QRectF r = item->boundingRect();
++    item->translate(r.width() / 2 * progress, r.height() / 2 * progress);
+ }
+ 
+ void DefaultAnimator::disappear(qreal progress, QGraphicsItem* item)
+ {
+     if (progress >= 1) {
+-        item->resetTransform();
++        //item->resetTransform();
+         return;
+     }
+     item->resetTransform();
+     item->scale(1-progress,1-progress);
++    QRectF r = item->boundingRect();
++    item->translate(r.width() / 2 * progress, r.height() / 2 * progress);
+ }
+ 
+ QPixmap DefaultAnimator::elementAppear(qreal progress, const QPixmap& pixmap)
+--- a/plasma/plasma/plasmaapp.cpp
++++ b/plasma/plasma/plasmaapp.cpp
+@@ -32,6 +32,7 @@
+ #include <KCrash>
+ #include <KDebug>
+ #include <KCmdLineArgs>
++#include <KWindowSystem>
+ 
+ #include <ksmserver_interface.h>
+ 
+@@ -43,21 +44,67 @@
+ #include "desktopview.h"
+ #include "panelview.h"
+ 
++#include <X11/extensions/Xrender.h>
++
++Display* dpy = 0;
++Colormap colormap = 0;
++Visual *visual = 0;
++
++void checkComposite()
++{
++    dpy = XOpenDisplay(0); // open default display
++    if (!dpy) {
++        kError() << "Cannot connect to the X server" << endl;
++        return;
++    }
++
++    int screen = DefaultScreen(dpy);
++    int eventBase, errorBase;
++
++    if (XRenderQueryExtension(dpy, &eventBase, &errorBase)) {
++        int nvi;
++        XVisualInfo templ;
++        templ.screen  = screen;
++        templ.depth   = 32;
++        templ.c_class = TrueColor;
++        XVisualInfo *xvi = XGetVisualInfo(dpy,
++                                          VisualScreenMask | VisualDepthMask | VisualClassMask,
++                                          &templ, &nvi);
++        for (int i = 0; i < nvi; ++i) {
++            XRenderPictFormat *format = XRenderFindVisualFormat(dpy, xvi[i].visual);
++            if (format->type == PictTypeDirect && format->direct.alphaMask) {
++                visual = xvi[i].visual;
++                colormap = XCreateColormap(dpy, RootWindow(dpy, screen), visual, AllocNone);
++                break;
++            }
++        }
++    }
++
++    kDebug() << (colormap ? "Plasma has an argb visual" : "Plasma lacks an argb visual") << visual << colormap;
++    kDebug() << ((KWindowSystem::compositingActive() && colormap) ? "Plasma can use COMPOSITE for effects"
++                                                                    : "Plasma is COMPOSITE-less") << "on" << dpy;
++}
++
+ PlasmaApp* PlasmaApp::self()
+ {
++    if (!kapp) {
++        checkComposite();
++        return new PlasmaApp(dpy, visual ? Qt::HANDLE(visual) : 0, colormap ? Qt::HANDLE(colormap) : 0);
++    }
++
+     return qobject_cast<PlasmaApp*>(kapp);
+ }
+ 
+-PlasmaApp::PlasmaApp()
+-    : m_root(0),
++PlasmaApp::PlasmaApp(Display* display, Qt::HANDLE visual, Qt::HANDLE colormap)
++    : KUniqueApplication(display, visual, colormap),
++      m_root(0),
+       m_corona(0)
+ {
+     new AppAdaptor(this); 
+     QDBusConnection::sessionBus().registerObject("/App", this);
+     notifyStartup(false);
+ 
+-
+-    // this same pattern is in KRunner (see workspace/krunner/restartingapplication.h)
++    // TODO: this same pattern is in KRunner (see workspace/krunner/restartingapplication.h)
+     // would be interesting to see if this could be shared.
+     if (!KCrash::crashHandler())
+     {
+@@ -135,6 +182,11 @@
+     return m_corona;
+ }
+ 
++bool PlasmaApp::hasComposite()
++{
++    return colormap && KWindowSystem::compositingActive();
++}
++
+ void PlasmaApp::notifyStartup(bool completed)
+ {
+     org::kde::KSMServerInterface ksmserver("org.kde.ksmserver", "/KSMServer", QDBusConnection::sessionBus());
+@@ -154,7 +206,7 @@
+                  << "| screen:" << containment->screen()
+                  << "| geometry:" << containment->geometry()
+                  << "| zValue:" << containment->zValue();
+-        if (containment->type() == Plasma::Containment::PanelContainment) {
++        if (containment->containmentType() == Plasma::Containment::PanelContainment) {
+             kDebug() << "we have a panel!";
+             PanelView *panelView = new PanelView(containment);
+             m_panels << panelView;
+--- a/plasma/plasma/panelview.h
++++ b/plasma/plasma/panelview.h
+@@ -20,9 +20,8 @@
+ #ifndef PLASMA_PANELVIEW_H
+ #define PLASMA_PANELVIEW_H
+ 
+-#include <QGraphicsView>
+-
+ #include <plasma/plasma.h>
++#include <plasma/view.h>
+ 
+ class QWidget;
+ 
+@@ -33,7 +32,7 @@
+     class Svg;
+ }
+ 
+-class PanelView : public QGraphicsView
++class PanelView : public Plasma::View
+ {
+     Q_OBJECT
+ public:
+@@ -56,27 +55,19 @@
+     Plasma::Location location() const;
+ 
+     /**
+-     * @return the Containment associated with this panel.
+-     */
+-    Plasma::Containment *containment() const;
+-
+-    /**
+      * @return the Corona (scene) associated with this panel.
+      */
+     Plasma::Corona *corona() const;
+ 
+ protected:
+     void updateStruts();
+-
+     virtual void moveEvent(QMoveEvent *event);
+-
+     virtual void resizeEvent(QResizeEvent *event);
+ 
+ private slots:
+     void updatePanelGeometry();
+ 
+ private:
+-    Plasma::Containment *m_containment;
+     Plasma::Svg *m_background;
+ };
+ 
+--- /dev/null
++++ b/plasma/plasma/dashboardview.cpp
+@@ -0,0 +1,106 @@
++/*
++ *   Copyright 2007 Aaron Seigo <aseigo at kde.org>
++ *   Copyright 2007 Matt Broadstone <mbroadst at gmail.com>
++ *   Copyright 2007 André Duffeck <duffeck at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#include "dashboardview.h"
++
++#include "plasma/applet.h"
++#include "plasma/corona.h"
++#include "plasma/containment.h"
++#include "plasma/svg.h"
++#include "plasma/appletbrowser.h"
++
++#include "plasmaapp.h"
++
++#include <KWindowSystem>
++
++DashboardView::DashboardView(int screen, QWidget *parent)
++    : Plasma::View(screen, PlasmaApp::self()->corona(), parent), 
++      m_appletBrowserWidget(0)
++{
++    setContextMenuPolicy(Qt::NoContextMenu);
++    setWindowFlags(Qt::FramelessWindowHint);
++    //setWindowOpacity(0.9);
++    setWindowState(Qt::WindowFullScreen);
++    KWindowSystem::setState(winId(), NET::KeepAbove|NET::SkipTaskbar);
++
++    setDrawWallpaper(!PlasmaApp::hasComposite());
++    hide();
++
++    connect(scene(), SIGNAL(launchActivated()), SLOT(hideView()));
++    connect(containment(), SIGNAL(showAddWidgets()), this, SLOT(showAppletBrowser()));
++}
++
++DashboardView::~DashboardView()
++{
++    delete m_appletBrowserWidget;
++}
++
++void DashboardView::drawBackground(QPainter * painter, const QRectF & rect)
++{
++    if (PlasmaApp::hasComposite()) {
++        setDrawWallpaper(false);
++        painter->setCompositionMode(QPainter::CompositionMode_Source);
++        painter->fillRect(geometry(), QColor(0, 0, 0, 180));
++    } else {
++        setDrawWallpaper(true);
++        Plasma::View::drawBackground(painter, rect);
++    }
++}
++
++void DashboardView::showAppletBrowser()
++{
++    if (!m_appletBrowserWidget) {
++        m_appletBrowserWidget = new Plasma::AppletBrowserWidget(qobject_cast<Plasma::Corona *>(scene()), true, this, Qt::FramelessWindowHint );
++        m_appletBrowserWidget->setApplication();
++        m_appletBrowserWidget->setWindowTitle(i18n("Add Widgets"));
++        KWindowSystem::setState(m_appletBrowserWidget->winId(), NET::KeepAbove);
++        //TODO: provide a nice unobtrusive way to access the browser
++        m_appletBrowserWidget->move( 0, 0 );
++    }
++
++    m_appletBrowserWidget->show();
++}
++
++void DashboardView::appletBrowserDestroyed()
++{
++    m_appletBrowserWidget = 0;
++}
++
++void DashboardView::toggleVisibility()
++{
++    if (isHidden()) {
++        show();
++        raise();
++    } else {
++        hideView();
++    }
++}
++
++void DashboardView::hideView()
++{
++    if (m_appletBrowserWidget) {
++        m_appletBrowserWidget->hide();
++    }
++    hide();
++}
++
++#include "dashboardview.moc"
++
+--- a/plasma/plasma/plasmaapp.h
++++ b/plasma/plasma/plasmaapp.h
+@@ -37,10 +37,11 @@
+ {
+     Q_OBJECT
+ public:
+-    PlasmaApp();
+     ~PlasmaApp();
+ 
+     static PlasmaApp* self();
++    static bool hasComposite();
++
+     void notifyStartup(bool completed);
+     Plasma::Corona* corona();
+ 
+@@ -53,6 +54,7 @@
+     void setCrashHandler();
+ 
+ private:
++    PlasmaApp(Display* display, Qt::HANDLE visual, Qt::HANDLE colormap);
+     static void crashHandler(int signal);
+     void createPanels();
+ 
+--- a/plasma/plasma/desktopview.cpp
++++ b/plasma/plasma/desktopview.cpp
+@@ -29,71 +29,70 @@
+ #include <KMenu>
+ #include <KRun>
+ #include <KToggleAction>
++#include <KWindowSystem>
+ 
+ #include "plasma/applet.h"
++#include "plasma/appletbrowser.h"
+ #include "plasma/corona.h"
+ #include "plasma/containment.h"
+ #include "plasma/svg.h"
+ 
++#include "dashboardview.h"
+ #include "plasmaapp.h"
+ 
+-DesktopView::DesktopView(QWidget *parent, int screen)
+-    : QGraphicsView(parent),
+-      m_screen(screen),
+-      m_zoomLevel(Plasma::DesktopZoom)
+-{
+-    setFrameShape(QFrame::NoFrame);
+-    setAutoFillBackground(true);
+-    setDragMode(QGraphicsView::RubberBandDrag);
+-    setCacheMode(QGraphicsView::CacheBackground);
+-    setInteractive(true);
+-    setAcceptDrops(true);
+-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-//    setContextMenuPolicy(Qt::NoContextMenu);
+-
+-    Plasma::Corona *corona = PlasmaApp::self()->corona();
+-    setScene(corona);
+-
+-    Plasma::Containment * c = corona->containmentForScreen(screen);
+-    kDebug() << "desktop view on screen" << screen << "has containment" << (qint64)c;
+-    if (c) {
+-        setSceneRect(c->geometry());
+-        connect(c, SIGNAL(zoomIn()), this, SLOT(zoomIn()));
+-        connect(c, SIGNAL(zoomOut()), this, SLOT(zoomOut()));
+-        connect(c, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect()));
++DesktopView::DesktopView(int screen, QWidget *parent)
++    : Plasma::View(screen, PlasmaApp::self()->corona(), parent),
++      m_zoomLevel(Plasma::DesktopZoom),
++      m_appletBrowser(0),
++      m_dashboard(0)
++{
++    if (containment()) {
++        connect(containment(), SIGNAL(zoomIn()), this, SLOT(zoomIn()));
++        connect(containment(), SIGNAL(zoomOut()), this, SLOT(zoomOut()));
++        connect(containment(), SIGNAL(showAddWidgets()), this, SLOT(showAppletBrowser()));
+     }
+ }
+ 
+ DesktopView::~DesktopView()
+ {
++    delete m_dashboard;
+ }
+ 
+-int DesktopView::screen() const
++void DesktopView::toggleDashboard()
+ {
+-    return m_screen;
++    if (!m_dashboard) {
++        m_dashboard = new DashboardView(screen(), 0);
++        m_dashboard->setGeometry(geometry());
++    }
++
++    m_dashboard->toggleVisibility();
++    kDebug() << "toggling dashboard for screen" << screen() << m_dashboard->isVisible();
+ }
+ 
+-void DesktopView::updateSceneRect()
++void DesktopView::adjustSize()
+ {
+-    Plasma::Containment * c =  PlasmaApp::self()->corona()->containmentForScreen(m_screen);
+-    if (c) {
+-        setSceneRect(c->geometry());
++    // adapt to screen resolution changes
++    QDesktopWidget *desktop = QApplication::desktop();
++    QRect geom = desktop->screenGeometry(screen());
++    setGeometry(geom);
++
++    if (m_dashboard) {
++        m_dashboard->setGeometry(geom);
+     }
+ }
+ 
+ void DesktopView::zoomIn()
+ {
+-	qreal s = Plasma::scalingFactor(m_zoomLevel) / matrix().m11();
++    qreal s = Plasma::scalingFactor(m_zoomLevel) / matrix().m11();
+     if (m_zoomLevel == Plasma::GroupZoom) {
+         m_zoomLevel = Plasma::DesktopZoom;
+-		s = Plasma::scalingFactor(m_zoomLevel) / matrix().m11();
+-		setSceneRect(geometry());
++        s = Plasma::scalingFactor(m_zoomLevel) / matrix().m11();
++        setSceneRect(geometry());
+     } else if (m_zoomLevel == Plasma::OverviewZoom) {
+         m_zoomLevel = Plasma::GroupZoom;
+-		qreal factor = Plasma::scalingFactor(m_zoomLevel);
+-		s = factor / matrix().m11();
+-		setSceneRect(QRectF(0, 0, width() * 1.0/factor, height() * 1.0/factor));
++        qreal factor = Plasma::scalingFactor(m_zoomLevel);
++        s = factor / matrix().m11();
++        setSceneRect(QRectF(0, 0, width() * 1.0/factor, height() * 1.0/factor));
+     }
+ 
+     scale(s, s);
+@@ -107,12 +106,36 @@
+         m_zoomLevel = Plasma::OverviewZoom;
+     }
+ 
+-	qreal factor = Plasma::scalingFactor(m_zoomLevel);
++    qreal factor = Plasma::scalingFactor(m_zoomLevel);
+     qreal s = factor / matrix().m11();
+-	setSceneRect(QRectF(0, 0, width() * 1.0/factor, height() * 1.0/factor));
++    setSceneRect(QRectF(0, 0, width() * 1.0/factor, height() * 1.0/factor));
+     scale(s, s);
+ }
+ 
++void DesktopView::showAppletBrowser()
++{
++    if (m_dashboard && m_dashboard->isVisible()) {
++        return;
++    }
++
++    if (!m_appletBrowser) {
++        m_appletBrowser = new Plasma::AppletBrowser(containment(), this);
++        m_appletBrowser->setApplication();
++        m_appletBrowser->setAttribute(Qt::WA_DeleteOnClose);
++        m_appletBrowser->setWindowTitle(i18n("Add Widgets"));
++        connect(m_appletBrowser, SIGNAL(destroyed()), this, SLOT(appletBrowserDestroyed()));
++    }
++
++    KWindowSystem::setOnDesktop(m_appletBrowser->winId(), KWindowSystem::currentDesktop());
++    m_appletBrowser->show();
++    KWindowSystem::activateWindow(m_appletBrowser->winId());
++}
++
++void DesktopView::appletBrowserDestroyed()
++{
++    m_appletBrowser = 0;
++}
++
+ void DesktopView::wheelEvent(QWheelEvent* event)
+ {
+     if (scene() && scene()->itemAt(event->pos())) {
+--- a/plasma/plasma/main.cpp
++++ b/plasma/plasma/main.cpp
+@@ -28,7 +28,8 @@
+ static const char description[] = I18N_NOOP( "The KDE desktop, panels and widgets workspace application." );
+ static const char version[] = "0.0";
+ 
+-int main(int argc, char **argv)
++extern "C"
++KDE_EXPORT int kdemain(int argc, char **argv)
+ {
+     KAboutData aboutData("plasma", 0, ki18n("Plasma Workspace"),
+                          version, ki18n(description), KAboutData::License_GPL,
+@@ -46,6 +47,9 @@
+     options.add("nodesktop",ki18n("Starts plasma as an ordinary window rather than as the desktop."));
+     KCmdLineArgs::addCmdLineOptions(options);
+ 
+-    PlasmaApp app;
+-    return app.exec();
++    PlasmaApp *app = PlasmaApp::self();
++    app->disableSessionManagement(); // autostarted
++    int rc = app->exec();
++    delete app;
++    return rc;
+ }
+--- a/plasma/plasma/plasma.desktop
++++ b/plasma/plasma/plasma.desktop
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=plasma
+ X-DBUS-StartupType=wait
+ Name=Plasma
+@@ -7,6 +6,7 @@
+ Name[be]=Плазма
+ Name[bg]=Панама
+ Name[csb]=Plazma
++Name[eo]=Plasmo
+ Name[fa]=پلاسما
+ Name[km]=ប្លាស្មា​
+ Name[ne]=प्लासमा
+--- /dev/null
++++ b/plasma/plasma/dashboardview.h
+@@ -0,0 +1,55 @@
++/*
++ *   Copyright 2007 Aaron Seigo <aseigo at kde.org>
++ *   Copyright 2007 André Duffeck <duffeck at kde.org>
++ *
++ *   This program is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU Library General Public License as
++ *   published by the Free Software Foundation; either version 2, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details
++ *
++ *   You should have received a copy of the GNU Library General Public
++ *   License along with this program; if not, write to the
++ *   Free Software Foundation, Inc.,
++ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
++ */
++
++#ifndef DASHBOARDVIEW_H
++#define DASHBOARDVIEW_H
++
++#include "plasma/plasma.h"
++#include "plasma/view.h"
++
++namespace Plasma
++{
++    class AppletBrowserWidget;
++}
++
++class DashboardView : public Plasma::View
++{
++    Q_OBJECT
++
++public:
++    DashboardView(int screen, QWidget *parent);
++    ~DashboardView();
++
++protected:
++    void drawBackground(QPainter * painter, const QRectF & rect);
++
++public slots:
++    void toggleVisibility();
++
++protected slots:
++    void showAppletBrowser();
++    void appletBrowserDestroyed();
++    void hideView();
++
++private:
++    Plasma::AppletBrowserWidget *m_appletBrowserWidget;
++};
++
++#endif // multiple inclusion guard
+--- a/plasma/plasma/rootwidget.cpp
++++ b/plasma/plasma/rootwidget.cpp
+@@ -24,14 +24,18 @@
+ #include <QVBoxLayout>
+ 
+ #include <KWindowSystem>
++#include <KAction>
++#include <KShortcut>
+ 
+ #include "plasma/corona.h"
+ #include "plasma/plasma.h"
+ #include "plasma/svg.h"
+ 
+ #include "desktopview.h"
++#include "dashboardview.h"
+ #include "plasmaapp.h"
+ 
++
+ RootWidget::RootWidget()
+     : QWidget(0)
+ {
+@@ -42,12 +46,34 @@
+     // create a containment for each screen
+     //FIXME: we need to respond to randr changes
+     for (int i = 0; i < numScreens; ++i) {
+-        DesktopView *view = new DesktopView(this, i);
++        DesktopView *view = new DesktopView(i, this);
+         view->setGeometry(desktop->screenGeometry(i));
+         m_desktops.append(view);
+     }
+ 
+     PlasmaApp::self()->corona();
++
++    //TODO: Make the shortcut configurable
++    KAction *showAction = new KAction( this );
++    showAction->setText( i18n( "Show Dashboard" ) );
++    showAction->setGlobalShortcut( KShortcut( Qt::CTRL + Qt::Key_F12 ) );
++    connect( showAction, SIGNAL( activated() ), this, SLOT( toggleDashboard() ) );
++
++}
++
++void RootWidget::toggleDashboard()
++{
++    int currentScreen = 0;
++    if (QApplication::desktop()->numScreens() > 1) {
++        currentScreen = QApplication::desktop()->screenNumber(QCursor::pos());
++    }
++
++    if (currentScreen > m_desktops.count() - 1) {
++        kWarning() << "we don't have a DesktopView for the current screen!";
++        return;
++    }
++
++    m_desktops[currentScreen]->toggleDashboard();
+ }
+ 
+ void RootWidget::setAsDesktop(bool setAsDesktop)
+@@ -89,8 +115,9 @@
+ {
+     QDesktopWidget *desktop = QApplication::desktop();
+     setGeometry(desktop->geometry());
++
+     foreach (DesktopView *view, m_desktops) {
+-        view->setGeometry(desktop->screenGeometry(view->screen()));
++        view->adjustSize();
+     }
+ }
+ 
+--- a/plasma/plasma/desktopview.h
++++ b/plasma/plasma/desktopview.h
+@@ -20,9 +20,8 @@
+ #ifndef DESKTOPVIEW_H
+ #define DESKTOPVIEW_H
+ 
+-#include <QGraphicsView>
+-
+ #include "plasma/plasma.h"
++#include "plasma/view.h"
+ 
+ class QPixmap;
+ 
+@@ -30,29 +29,34 @@
+ {
+     class Svg;
+     class Corona;
++    class AppletBrowser;
+ }
+ 
+-class DesktopView : public QGraphicsView
++class DashboardView;
++
++class DesktopView : public Plasma::View
+ {
+     Q_OBJECT
+ 
+ public:
+-    DesktopView(QWidget *parent, int screen = -1);
++    DesktopView(int screen, QWidget *parent);
+     ~DesktopView();
+ 
+-    int screen() const;
+-
+ public slots:
+     void zoomIn();
+     void zoomOut();
+-    void updateSceneRect();
++    void showAppletBrowser();
++    void appletBrowserDestroyed();
++    void toggleDashboard();
++    void adjustSize();
+ 
+ protected:
+     void wheelEvent(QWheelEvent *event);
+ 
+ private:
+-    int m_screen;
+     Plasma::ZoomLevel m_zoomLevel;
++    Plasma::AppletBrowser *m_appletBrowser;
++    DashboardView *m_dashboard;
+ };
+ 
+ #endif // multiple inclusion guard
+--- a/plasma/plasma/panelview.cpp
++++ b/plasma/plasma/panelview.cpp
+@@ -18,7 +18,6 @@
+ */
+ 
+ #include "panelview.h"
+-#include "panelview.moc"
+ 
+ #include <QApplication>
+ #include <QDesktopWidget>
+@@ -33,15 +32,13 @@
+ #include <plasma/svg.h>
+ 
+ PanelView::PanelView(Plasma::Containment *panel, QWidget *parent)
+-    : QGraphicsView(parent),
+-      m_containment(panel)
++    : Plasma::View(panel, parent)
+ {
+-    Q_ASSERT(qobject_cast<Plasma::Corona*>(m_containment->scene()));
+-    setScene(m_containment->scene());
++    Q_ASSERT(qobject_cast<Plasma::Corona*>(panel->scene()));
+     updatePanelGeometry();
+ 
+-    connect(m_containment, SIGNAL(geometryChanged()), this, SLOT(updatePanelGeometry()));
+-    kDebug() << "Panel geometry is" << m_containment->geometry();
++    connect(panel, SIGNAL(geometryChanged()), this, SLOT(updatePanelGeometry()));
++    kDebug() << "Panel geometry is" << panel->geometry();
+ 
+     // Graphics view setup
+     setFrameStyle(QFrame::NoFrame);
+@@ -64,18 +61,13 @@
+ 
+ void PanelView::setLocation(Plasma::Location loc)
+ {
+-    m_containment->setLocation(loc);
++    containment()->setLocation(loc);
+     updatePanelGeometry();
+ }
+ 
+ Plasma::Location PanelView::location() const
+ {
+-    return m_containment->location();	
+-}
+-
+-Plasma::Containment *PanelView::containment() const
+-{
+-    return m_containment;
++    return containment()->location();
+ }
+ 
+ Plasma::Corona *PanelView::corona() const
+@@ -85,10 +77,10 @@
+ 
+ void PanelView::updatePanelGeometry()
+ {
+-    kDebug() << "New panel geometry is" << m_containment->geometry();
+-    QSize size = m_containment->size().toSize();
++    kDebug() << "New panel geometry is" << containment()->geometry();
++    QSize size = containment()->size().toSize();
+     QRect geom(QPoint(0,0), size);
+-    int screen = m_containment->screen();
++    int screen = containment()->screen();
+ 
+     if (screen < 0) {
+         //TODO: is there a valid use for -1 with a panel? floating maybe?
+@@ -117,59 +109,55 @@
+ 
+     setGeometry(geom);
+ 
+-    // now center in on the containment
+     //kDebug() << "I think the panel is at " << geom;
+-    setSceneRect(QRectF(m_containment->scenePos(), m_containment->size()));
+ }
+ 
+ void PanelView::updateStruts()
+ {
+     NETExtendedStrut strut;
+ 
+-    //QRect geom = geometry();
+-    //QRect virtRect(QApplication::desktop()->geometry());
+-
+-    //FIXME: only reserve the actually used space. the commented out code
+-    //       looks like a good start, but needs to be tested once we have
+-    //       variable width panels
+     switch (location())
+     {
+         case Plasma::TopEdge:
+             strut.top_width = height();
+-            //strut.top_width = geom.y() + h;
+-            //strut.top_start = x();
+-            //strut.top_end = x() + width() - 1;
++            strut.top_start = x();
++            strut.top_end = x() + width() - 1;
+             break;
+ 
+         case Plasma::BottomEdge:
+-            // also claim the non-visible part at the bottom
+             strut.bottom_width = height();
+-            //strut.bottom_width = (virtRect.bottom() - geom.bottom()) + h;
+-            //strut.bottom_start = x();
+-            //strut.bottom_end = x() + width() - 1;
++            strut.bottom_start = x();
++            strut.bottom_end = x() + width() - 1;
+             break;
+ 
+         case Plasma::RightEdge:
+             strut.right_width = width();
+-            //strut.right_width = (virtRect.right() - geom.right()) + w;
+-            //strut.right_start = y();
+-            //strut.right_end = y() + height() - 1;
++            strut.right_start = y();
++            strut.right_end = y() + height() - 1;
+             break;
+ 
+         case Plasma::LeftEdge:
+             strut.left_width = width();
+-            //strut.left_width = geom.x() + w;
+-            //strut.left_start = y();
+-            //strut.left_end = y() + height() - 1;
++            strut.left_start = y();
++            strut.left_end = y() + height() - 1;
+             break;
+ 
+         default:
+             break;
+     }
+-    KWindowSystem::setStrut(winId(), strut.left_width,
+-                                     strut.right_width,
+-                                     strut.top_width,
+-                                     strut.bottom_width);
++
++    KWindowSystem::setExtendedStrut(winId(), strut.left_width,
++                                             strut.left_start,
++                                             strut.left_end,
++                                             strut.right_width,
++                                             strut.right_start,
++                                             strut.right_end,
++                                             strut.top_width,
++                                             strut.top_start,
++                                             strut.top_end,
++                                             strut.bottom_width,
++                                             strut.bottom_start,
++                                             strut.bottom_end);
+ }
+ 
+ void PanelView::moveEvent(QMoveEvent *event)
+@@ -184,3 +172,5 @@
+     updateStruts();
+ }
+ 
++#include "panelview.moc"
++
+--- a/plasma/plasma/CMakeLists.txt
++++ b/plasma/plasma/CMakeLists.txt
+@@ -6,6 +6,7 @@
+     plasmaapp.cpp
+     rootwidget.cpp
+     panelview.cpp
++    dashboardview.cpp
+ )
+ 
+ set(plasmaapp_dbusXML org.kde.plasma.App.xml)
+@@ -14,10 +15,12 @@
+ set(ksmserver_xml ${KDEBASE_WORKSPACE_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml)
+ QT4_ADD_DBUS_INTERFACE(plasma_SRCS ${ksmserver_xml} ksmserver_interface)
+ 
+-kde4_add_executable(plasma-qgv ${plasma_SRCS})
++kde4_add_kdeinit_executable(plasma-qgv ${plasma_SRCS})
+ 
+-target_link_libraries(plasma-qgv plasma kworkspace  ${KDE4_KIO_LIBS})
++target_link_libraries(kdeinit_plasma-qgv plasma kworkspace  ${KDE4_KIO_LIBS})
++set_target_properties(kdeinit_plasma-qgv PROPERTIES OUTPUT_NAME kdeinit_plasma)
+ set_target_properties(plasma-qgv PROPERTIES OUTPUT_NAME plasma)
+ 
++install(TARGETS kdeinit_plasma-qgv DESTINATION ${LIB_INSTALL_DIR})
+ install(TARGETS plasma-qgv DESTINATION ${BIN_INSTALL_DIR})
+ install( FILES plasma.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} )
+--- a/plasma/plasma/rootwidget.h
++++ b/plasma/plasma/rootwidget.h
+@@ -56,6 +56,7 @@
+ 
+     protected slots:
+         void adjustSize();
++        void toggleDashboard();
+ 
+     private:
+         QList<DesktopView*> m_desktops;

Modified: branches/kde4/packages/kdebase-workspace/debian/patches/series
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/patches/series	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/patches/series	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,4 @@
+01_kdebase-workspace_branch_r739381.diff 
 06_kdehome_kde4.diff
 07_kdmrc_defaults.diff
 08_genkdmconf.diff

Modified: branches/kde4/packages/kdebase-workspace/debian/rules
===================================================================
--- branches/kde4/packages/kdebase-workspace/debian/rules	2007-11-21 19:11:20 UTC (rev 8017)
+++ branches/kde4/packages/kdebase-workspace/debian/rules	2007-11-21 19:32:05 UTC (rev 8018)
@@ -1,3 +1,11 @@
 #!/usr/bin/make -f
 
 include debian/cdbs/kde.mk
+
+makebuilddir::
+	uudecode -o ksplash/simple/full/Preview.png debian/img/Preview_full.png.uu
+	uudecode -o ksplash/simple/small/Preview.png debian/img/Preview_small.png.uu
+
+clean::
+	rm -f ksplash/simple/full/Preview.png
+	rm -f ksplash/simple/small/Preview.png




More information about the pkg-kde-commits mailing list