Merge branch 'trz/rename' into trz/rebase

Conflicts:
	build.gradle
	src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
This commit is contained in:
lookshe 2015-10-05 13:55:43 +02:00
commit b98478e57c
26 changed files with 1151 additions and 19 deletions

View file

@ -0,0 +1,447 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
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="512"
height="512"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="conversations_plus_baloons.svg"
inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
inkscape:export-xdpi="100"
inkscape:export-ydpi="100">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3874">
<stop
style="stop-color:#00a000;stop-opacity:1;"
offset="0"
id="stop3876" />
<stop
style="stop-color:#00a000;stop-opacity:0;"
offset="1"
id="stop3878" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3913">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3915" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3917" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3818">
<stop
style="stop-color:#669900;stop-opacity:1"
offset="0"
id="stop3820" />
<stop
style="stop-color:#99cc00;stop-opacity:1"
offset="1"
id="stop3822" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3824"
cx="212.07048"
cy="1045.9178"
fx="212.07048"
fy="1045.9178"
r="238.57143"
gradientTransform="matrix(1.9491621,-0.90817722,0.65829208,1.4128498,-879.63121,-248.98648)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3919"
cx="362.98563"
cy="379.77524"
fx="362.98563"
fy="379.77524"
r="139.95312"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="-155.75885"
x2="114.59022"
y1="35.545681"
x1="114.55434"
id="linearGradient3794"
xlink:href="#linearGradient3788"
inkscape:collect="always" />
<linearGradient
id="linearGradient3788">
<stop
id="stop3790"
offset="0"
style="stop-color:#1eed00;stop-opacity:1;" />
<stop
id="stop3792"
offset="1"
style="stop-color:#abff28;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3821">
<stop
style="stop-color:#ff283d;stop-opacity:1;"
offset="0"
id="stop3823" />
<stop
style="stop-color:#ff28ae;stop-opacity:1;"
offset="1"
id="stop3825" />
</linearGradient>
<linearGradient
id="linearGradient4543">
<stop
style="stop-color:#2e45bf;stop-opacity:1;"
offset="0"
id="stop4545" />
<stop
style="stop-color:#28a7ff;stop-opacity:1;"
offset="1"
id="stop4547" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4098">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4100" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1"
offset="1"
id="stop4102" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3833"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3853"
gradientUnits="userSpaceOnUse"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3863"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3866"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3873"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
cx="321.75275"
cy="386.38751"
fx="321.75275"
fy="386.38751"
r="139.95312" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3880"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,-370.24387)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1091694,-0.44385763,0.39005536,0.79756286,-331.32325,189.97334)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<filter
inkscape:collect="always"
id="filter3895">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.0013623"
id="feGaussianBlur3897" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3874"
id="radialGradient3881"
cx="150.35715"
cy="236.28571"
fx="150.35715"
fy="236.28571"
r="26.887305"
gradientTransform="matrix(1,0,0,0.98671703,0,3.1385771)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.94668007,-0.41802431,-0.33291364,0.75114325,727.90951,-151.09719)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7071068"
inkscape:cx="-63.341475"
inkscape:cy="288.28557"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="684"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-grids="false"
inkscape:object-paths="true"
inkscape:object-nodes="false"
inkscape:snap-nodes="false">
<sodipodi:guide
orientation="1,0"
position="0,534.28571"
id="guide3004" />
<sodipodi:guide
orientation="0,1"
position="394.28571,511.42857"
id="guide3006" />
<sodipodi:guide
orientation="1,0"
position="511.42857,320"
id="guide3008" />
<sodipodi:guide
orientation="0,1"
position="401.42857,0"
id="guide3010" />
<sodipodi:guide
orientation="1,0"
position="17.142857,258.57143"
id="guide3012" />
<sodipodi:guide
orientation="0,1"
position="327.14286,494.28571"
id="guide3014" />
<sodipodi:guide
orientation="0,1"
position="324.28571,17.142857"
id="guide3016" />
<sodipodi:guide
orientation="1,0"
position="494.28571,237.14286"
id="guide3018" />
<sodipodi:guide
orientation="1,0"
position="255.71429,302.85714"
id="guide3022" />
<sodipodi:guide
orientation="1,0"
position="660,-315"
id="guide3904" />
<sodipodi:guide
orientation="0,1"
position="554.28571,475.71429"
id="guide3931" />
<sodipodi:guide
orientation="0,1"
position="581.42857,244.28571"
id="guide3933" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36218)"
style="display:inline">
<path
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
id="path3885"
style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3895)"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
inkscape:radius="12.358562"
sodipodi:type="inkscape:offset"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,53.951708)" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="fill:#0066ff;fill-opacity:1;stroke:none"
id="path3868"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,50.676388)" />
<path
style="opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 465.37929,645.95092 c -99.66655,0 -180.44749,71.72047 -180.44749,160.18241 0,18.66021 3.60043,36.57544 10.21189,53.2232 8.1887,1.03054 16.56083,1.56103 25.06293,1.56103 30.37749,0 53.79867,-5.64549 80.53519,-14.43157 l 84.91981,30.96145 a 11.188184,10.120499 0 0 0 15.04907,-11.82159 l -22.99792,-84.08283 c 14.78214,-23.46997 19.8297,-50.19542 19.8297,-77.76269 0,-20.04753 -4.25121,-39.20586 -11.994,-56.83149 -6.62195,-0.65358 -13.3526,-0.99792 -20.16918,-0.99792 z"
id="path3878"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845"
d="m 493.47738,871.35334 -24.04389,-87.99322 c 15.28869,-22.23857 20.55595,-48.35175 20.55595,-76.28358 0,-81.18671 -74.40499,-146.97946 -166.16989,-146.97946 -91.76484,0 -166.16981,65.79275 -166.16981,146.97946 0,81.18672 74.40497,147.02794 166.16981,147.02794 30.46639,0 52.72061,-5.65874 80.85763,-15.12352 z"
style="opacity:0;fill:none;stroke:#000000;stroke-width:17.21866226;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:68.87464583, 68.87464583;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855"
d="m 320.17833,548.76674 c -4.13827,-9.4e-4 -8.25632,0.0605 -9.81586,0.15351 -12.92075,0.76954 -22.81917,2.12193 -34.11502,4.70824 -4.34132,0.99402 -7.66199,1.87532 -11.68283,3.07059 -2.5677,0.76329 -6.47023,1.98325 -6.6759,2.09824 -0.0631,0.0352 2.55734,6.48362 6.13843,15.14825 0.0358,0.0868 0.13111,0.0961 0.2546,0.0511 0.85568,-0.31146 4.96317,-1.59671 6.87391,-2.14942 16.44697,-4.75734 33.78787,-7.08565 50.97451,-6.85765 2.42028,0.0321 5.48294,0.11062 6.78907,0.17914 1.30611,0.0686 2.39944,0.10688 2.43274,0.0767 0.0526,-0.0476 1.17785,-16.13384 1.13152,-16.1718 -0.01,-0.008 -1.08429,-0.0761 -2.40448,-0.15351 -1.60409,-0.0941 -5.76244,-0.15187 -9.90069,-0.15351 z m 85.17439,19.57499 c -0.0778,0.0759 -8.57119,14.09759 -8.57119,14.15032 0,0.0128 0.38971,0.21991 0.8769,0.46056 6.4421,3.18205 13.4978,7.39333 19.91497,11.84882 2.48679,1.7266 4.87769,3.48988 7.09982,5.24414 3.2378,2.55607 6.46633,5.33835 9.55245,8.21414 4.9072,4.57277 9.45432,9.38196 13.10605,13.89411 0.50173,0.62001 0.608,0.70303 0.79207,0.58852 0.87167,-0.54223 14.14115,-9.56974 14.14386,-9.62116 0.004,-0.0695 -2.56391,-3.14501 -3.64912,-4.37562 -4.33822,-4.91937 -8.14593,-8.7511 -13.26695,-13.38263 -6.3529,-5.74565 -12.40806,-10.50897 -19.23603,-15.09142 -1.9729,-1.32405 -4.01031,-2.63303 -6.13807,-3.94623 -5.07411,-3.13161 -14.3826,-8.21954 -14.62476,-7.98355 z m -211.19629,27.76323 -1.86699,1.79122 c -16.58679,15.77185 -29.26131,34.2146 -37.25495,54.24707 -0.39127,0.98058 -0.7358,1.85972 -0.76377,1.97029 -0.0367,0.14529 2.27287,0.91046 8.2883,2.73794 4.57858,1.39099 8.39743,2.52833 8.48633,2.53327 0.0889,0.005 0.70476,-1.35221 1.3861,-3.01945 6.99352,-17.11289 17.82285,-32.84295 32.02173,-46.51941 l 2.34786,-2.27736 -6.30817,-5.73177 z m 298.4074,80.04008 -7.60942,1.33057 c -4.18792,0.7436 -8.12463,1.43993 -8.76921,1.53529 -0.80487,0.1191 -1.18807,0.24336 -1.18807,0.38383 0,0.1125 0.17929,1.13426 0.39603,2.27735 2.07747,10.95686 2.52391,24.06935 1.30123,38.40797 -0.55966,6.56324 -1.80497,14.62573 -2.9985,19.47266 -0.17944,0.72877 -0.2917,1.37377 -0.25457,1.40735 0.0371,0.0335 3.93999,0.80348 8.68429,1.71443 4.74436,0.9109 8.69153,1.65348 8.74095,1.66321 0.0493,0.01 0.35153,-1.20446 0.67889,-2.71235 2.58164,-11.8915 3.70992,-23.06661 3.734,-37.02617 0.0169,-9.79205 -0.60847,-16.92701 -2.20646,-25.69062 z m -328.42069,44.52355 -0.59404,0.0767 c -0.32426,0.0425 -4.30309,0.47062 -8.82578,0.94676 -4.52269,0.47615 -8.27005,0.90467 -8.3166,0.94677 -0.10914,0.0987 0.19395,2.02928 0.87693,5.78293 3.74286,20.5706 11.55924,39.09836 24.24259,57.42003 0.34643,0.50043 0.71596,0.88794 0.82035,0.87001 0.27802,-0.0476 14.92958,-8.4814 14.93592,-8.59767 0.003,-0.0541 -0.61241,-0.97536 -1.35781,-2.04705 -3.27958,-4.71514 -7.63657,-12.12967 -10.04215,-17.09296 -5.78721,-11.94039 -9.59955,-24.12581 -11.56969,-37.02614 z m 316.85099,82.03592 c -0.36048,0.007 -16.97617,3.73907 -17.08581,3.83822 -0.0753,0.0682 16.94207,62.59192 17.19896,63.25382 0.30965,0.798 2.86925,7.31813 10.42538,6.19627 8.42278,-1.62864 7.56799,-10.19392 6.91501,-10.06007 -0.0867,0.0174 -3.86345,-14.3273 -8.59948,-31.67794 -6.7623,-24.77405 -8.66138,-31.55359 -8.85406,-31.5503 z m -244.80211,18.57706 c -0.31471,0.009 -0.93458,0.92267 -4.83721,6.70413 -2.54758,3.77402 -4.63919,6.89516 -4.63919,6.93441 0,0.095 2.63539,1.52222 5.43123,2.96823 17.18076,8.88581 36.19242,15.16537 55.6703,18.37201 2.75979,0.45453 4.36027,0.69944 8.48631,1.25377 0.53344,0.0717 1.05269,0.14407 1.15981,0.15373 0.242,0.0216 0.18744,0.43638 1.44268,-7.95778 0.57722,-3.86012 1.0799,-7.25173 1.13152,-7.54849 0.0906,-0.52038 0.0663,-0.53984 -0.45265,-0.6141 -0.29582,-0.0422 -2.06498,-0.28682 -3.93198,-0.53739 -17.1444,-2.30049 -34.78834,-7.57763 -50.21072,-14.99469 -2.7318,-1.3138 -7.81528,-3.92179 -9.10866,-4.68264 -0.0408,-0.024 -0.0965,-0.0525 -0.14144,-0.0512 z m 164.66293,6.32028 c -1.52266,0.0905 -3.53738,0.70727 -8.03371,2.175 -8.68549,2.83522 -18.54878,5.74416 -22.99794,6.7809 -0.64367,0.15 -1.18718,0.35231 -1.18807,0.43501 -0.002,0.14944 4.40029,15.44773 4.46946,15.532 0.0424,0.0521 4.87869,-1.18335 7.89228,-2.02144 3.91758,-1.08954 10.50973,-3.08747 15.2188,-4.60587 l 4.6675,-1.50969 17.14236,6.2435 c 13.94595,5.08505 17.14167,6.22073 17.22724,6.03865 0.69647,-1.48186 6.62352,-14.82249 6.59105,-14.84098 -0.29825,-0.17022 -37.77097,-13.74416 -38.3582,-13.89441 -0.96682,-0.2474 -1.71716,-0.3869 -2.63077,-0.33267 z"
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4.30466557;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="display:inline;fill:#ff8000;fill-opacity:1;stroke:none"
id="path3868-5"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(-0.77259808,0,0,0.77116679,367.55932,-282.28679)" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883-8);fill-opacity:1;stroke:none"
d="m 47.92104,278.34166 c 85.06576,0 154.01258,67.54622 154.01258,150.8595 0,17.57416 -3.07299,34.44668 -8.71589,50.12552 -6.98908,0.97055 -14.13472,1.47017 -21.3913,1.47017 -25.9273,0 -45.91736,-5.31691 -68.73708,-13.59163 L 30.609993,496.36466 A 9.5491555,9.5314668 0 0 1 17.765567,485.2311 l 19.6288,-79.18904 C 24.777759,383.93808 20.469653,358.7681 20.469653,332.8053 c 0,-18.88073 3.628423,-36.92402 10.236917,-53.5238 5.65186,-0.61553 11.396492,-0.93984 17.21447,-0.93984 z"
id="path3878-3"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845-7"
d="M 23.939214,490.62525 44.460762,407.7534 C 31.411813,386.80914 26.916189,362.2158 26.916189,335.90966 c 0,-76.4615 63.504925,-138.42498 141.826591,-138.42498 78.32162,0 141.82653,61.96348 141.82653,138.42498 0,76.4615 -63.50491,138.47065 -141.82653,138.47065 -26.00317,0 -44.99723,-5.3294 -69.012271,-14.24332 z"
style="display:inline;opacity:0;fill:none;stroke:#000000;stroke-width:15.43764114;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:61.75056976, 61.75056976;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855-0"
d="m 171.85058,186.81378 c 3.53202,-0.001 7.0468,0.057 8.37786,0.14458 11.02792,0.72475 19.47625,1.99843 29.1173,4.43421 3.70534,0.93617 6.53954,1.76617 9.97134,2.89187 2.19153,0.71887 5.52236,1.86783 5.6979,1.97612 0.0538,0.0332 -2.18271,6.10627 -5.23917,14.2666 -0.0306,0.0818 -0.1119,0.0905 -0.2173,0.0482 -0.73033,-0.29333 -4.23609,-1.50378 -5.86691,-2.02432 -14.03755,-4.48046 -28.83807,-6.67326 -43.50693,-6.45851 -2.06572,0.0302 -4.6797,0.10417 -5.7945,0.1687 -1.11476,0.0646 -2.04792,0.10066 -2.07634,0.0722 -0.045,-0.0448 -1.0053,-15.19482 -0.96576,-15.23057 0.008,-0.008 0.92544,-0.0716 2.05223,-0.14458 1.3691,-0.0887 4.91826,-0.14303 8.45028,-0.14457 z m -72.696647,18.43569 c 0.06643,0.0714 7.315537,13.27709 7.315537,13.32675 0,0.012 -0.33262,0.20711 -0.74844,0.43375 -5.49836,2.99686 -11.520423,6.96303 -16.997493,11.15921 -2.122486,1.6261 -4.163129,3.28675 -6.059727,4.93891 -2.763466,2.4073 -5.519031,5.02765 -8.153046,7.73607 -4.188314,4.30662 -8.069301,8.83591 -11.18606,13.08544 -0.428228,0.58393 -0.518926,0.66211 -0.676036,0.55427 -0.743971,-0.51067 -12.069524,-9.01277 -12.07184,-9.0612 -0.0032,-0.0654 2.188315,-2.96196 3.114542,-4.12094 3.702693,-4.63305 6.952577,-8.24177 11.323395,-12.60374 5.422218,-5.41124 10.590321,-9.89733 16.418014,-14.21307 1.68388,-1.247 3.422814,-2.47978 5.238862,-3.71655 4.330773,-2.94935 12.27561,-7.74115 12.482292,-7.5189 z m 180.256787,26.14737 1.59348,1.68696 c 14.15689,14.8539 24.97464,32.22325 31.79723,51.08979 0.33396,0.9235 0.62801,1.75148 0.65189,1.85562 0.0314,0.13682 -1.93992,0.85746 -7.0741,2.57859 -3.90783,1.31002 -7.16723,2.38116 -7.24311,2.38582 -0.0759,0.005 -0.60152,-1.2735 -1.18304,-2.84371 -5.969,-16.11689 -15.21187,-30.93143 -27.33066,-43.81189 l -2.00392,-2.14481 5.38405,-5.39818 z m -254.691788,75.38159 6.494676,1.25313 c 3.574397,0.70032 6.934399,1.35613 7.484553,1.44593 0.686953,0.11217 1.014012,0.2292 1.014012,0.36149 0,0.10595 -0.153023,1.06824 -0.338008,2.14481 -1.77313,10.31915 -2.154169,22.66846 -1.110602,36.17254 0.477667,6.18126 1.540548,13.7745 2.559231,18.33932 0.153154,0.68636 0.248963,1.29382 0.21727,1.32544 -0.03169,0.0316 -3.362797,0.75672 -7.412074,1.61465 -4.049328,0.85789 -7.418252,1.55725 -7.460429,1.56642 -0.04205,0.009 -0.300037,-1.13437 -0.579433,-2.5545 -2.203444,-11.19939 -3.166429,-21.72408 -3.186982,-34.87117 -0.01437,-9.22213 0.519332,-15.94183 1.88322,-24.19538 z m 280.308238,41.9322 0.50701,0.0722 c 0.27676,0.0401 3.6727,0.44323 7.53284,0.89166 3.86013,0.44843 7.05852,0.85201 7.09824,0.89167 0.0932,0.0929 -0.16553,1.91116 -0.74845,5.44635 -3.19455,19.37336 -9.86586,36.82275 -20.69114,54.07808 -0.29568,0.4713 -0.61108,0.83626 -0.70017,0.81936 -0.2373,-0.0448 -12.74246,-7.98776 -12.74787,-8.09727 -0.003,-0.051 0.5227,-0.91859 1.15889,-1.9279 2.79915,-4.44071 6.51785,-11.42371 8.57102,-16.09812 4.93941,-11.24543 8.19324,-22.72164 9.87477,-34.87114 z M 34.593711,425.97191 c 0.307673,0.006 14.489227,3.52144 14.582798,3.61483 0.06429,0.0642 -14.460111,58.94894 -14.679361,59.57234 -0.264295,0.75154 -2.448917,6.89219 -8.89811,5.83562 -7.188866,-1.53385 -6.459303,-9.60062 -5.901978,-9.47455 0.07403,0.0164 3.297467,-13.49343 7.339677,-29.83423 5.771655,-23.33215 7.392523,-29.71712 7.556974,-29.71401 z m 208.939479,17.49584 c 0.26861,0.009 0.79767,0.86897 4.12858,6.31393 2.17437,3.55436 3.95956,6.49385 3.95956,6.53082 0,0.0895 -2.24931,1.43362 -4.63558,2.79547 -14.66383,8.36864 -30.89035,14.28272 -47.5148,17.30273 -2.35548,0.42806 -3.72149,0.65873 -7.24309,1.18079 -0.4553,0.0675 -0.89848,0.13569 -0.9899,0.14479 -0.20655,0.0203 -0.15998,0.41098 -1.23133,-7.49463 -0.49266,-3.63545 -0.9217,-6.82967 -0.96575,-7.10914 -0.0773,-0.4901 -0.0566,-0.50843 0.38632,-0.57837 0.25249,-0.0397 1.76248,-0.27013 3.35596,-0.5061 14.63282,-2.1666 29.69198,-7.13661 42.85504,-14.12199 2.3316,-1.23733 6.67037,-3.69353 7.77427,-4.4101 0.0348,-0.0226 0.0823,-0.0494 0.12072,-0.0482 z m -140.5404,5.95243 c 1.2996,0.0852 3.01916,0.6661 6.8568,2.04841 7.41309,2.6702 15.83145,5.40983 19.62883,6.38623 0.54937,0.14127 1.01325,0.3318 1.01402,0.4097 0.001,0.14074 -3.75566,14.54864 -3.8147,14.628 -0.0362,0.0491 -4.16398,-1.11446 -6.73609,-1.90379 -3.34367,-1.02612 -8.97009,-2.90777 -12.9893,-4.33779 l -3.98373,-1.42183 -14.631058,5.88012 c -11.902923,4.78909 -14.630484,5.85868 -14.703523,5.68719 -0.594444,-1.39562 -5.653196,-13.95979 -5.625485,-13.97721 0.254566,-0.16031 32.237656,-12.94422 32.738866,-13.08573 0.82518,-0.233 1.4656,-0.36438 2.24537,-0.3133 z"
style="display:inline;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.85941029;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<ellipse
cy="334.93869"
cx="-242.26097"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-7"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-170.28149"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-89"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-98.116379"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8-8"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Dots">
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047"
cx="237.68259"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1"
cx="322.01675"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8"
cx="406.56836"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -7,7 +7,8 @@ resolutions={
'xxxhdpi' => 4,
}
images = {
'conversations_baloon.svg' => ['ic_launcher', 48],
#'conversations_baloon.svg' => ['ic_launcher', 48],
'conversations_plus_baloons.svg' => ['ic_launcher', 48],
'conversations_mono.svg' => ['ic_notification', 24],
'ic_received_indicator.svg' => ['ic_received_indicator', 12],
'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],

View file

@ -47,8 +47,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 64
versionName "1.5.2.1"
versionCode 65
versionName "1.5.2.2"
}
compileOptions {

View file

@ -0,0 +1,63 @@
package de.thedevstack.conversationsplus.ui.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Map;
import de.thedevstack.conversationsplus.R;
import de.thedevstack.conversationsplus.entities.Presences;
import de.thedevstack.conversationsplus.utils.UIHelper;
/**
* Created by tzur on 27.09.2015.
*/
public class PresencesArrayAdapter extends ArrayAdapter<Presence> {
private final Context context;
private final Presence[] values;
public PresencesArrayAdapter(Context context, Presences presences) {
super(context, R.layout.dialog_resources_status);
this.context = context;
this.values = getPresenceArray(presences);
addAll(this.values);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.dialog_resources_status, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.dlg_res_stat_resource_name);
textView.setText(this.values[position].resource);
textView.setTextColor(Color.parseColor(UIHelper.getStatusColor(this.values[position].status)));
return rowView;
}
private static Presence[] getPresenceArray(Presences presences) {
ArrayList<Presence> presenceArrayList = new ArrayList<>();
if (null != presences && null != presences.getPresences() && !presences.getPresences().isEmpty()) {
for (Map.Entry<String, Integer> entry : presences.getPresences().entrySet()) {
Presence p = new Presence();
p.resource = entry.getKey();
p.status = entry.getValue();
presenceArrayList.add(p);
}
presenceArrayList.trimToSize();
}
return presenceArrayList.toArray(new Presence[0]);
}
}
class Presence {
String resource;
int status;
}

View file

@ -0,0 +1,125 @@
package de.thedevstack.conversationsplus.ui.dialogs;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import de.thedevstack.conversationsplus.R;
/**
* Created by tzur on 29.09.2015.
*/
public class AbstractAlertDialog {
protected AlertDialog.Builder builder;
public AbstractAlertDialog(Context context, String title) {
this.builder = new AlertDialog.Builder(context);
this.builder.setTitle(title);
this.builder.setPositiveButton(R.string.cplus_ok, null);
}
public AbstractAlertDialog(Context context, int titleTextId) {
this(context, context.getString(titleTextId));
}
public void show() {
this.builder.show();
}
public Context getContext() {
return builder.getContext();
}
public AlertDialog.Builder setTitle(int titleId) {
return builder.setTitle(titleId);
}
public AlertDialog.Builder setTitle(CharSequence title) {
return builder.setTitle(title);
}
public AlertDialog.Builder setIcon(int iconId) {
return builder.setIcon(iconId);
}
public AlertDialog.Builder setIcon(Drawable icon) {
return builder.setIcon(icon);
}
public AlertDialog.Builder setMessage(CharSequence message) {
return builder.setMessage(message);
}
public AlertDialog.Builder setMessage(int messageId) {
return builder.setMessage(messageId);
}
public AlertDialog.Builder setIconAttribute(int attrId) {
return builder.setIconAttribute(attrId);
}
public AlertDialog.Builder setPositiveButton(int textId, DialogInterface.OnClickListener listener) {
return builder.setPositiveButton(textId, listener);
}
public AlertDialog.Builder setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener) {
return builder.setPositiveButton(text, listener);
}
public AlertDialog.Builder setNegativeButton(int textId, DialogInterface.OnClickListener listener) {
return builder.setNegativeButton(textId, listener);
}
public AlertDialog.Builder setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener) {
return builder.setNegativeButton(text, listener);
}
public AlertDialog.Builder setNeutralButton(int textId, DialogInterface.OnClickListener listener) {
return builder.setNeutralButton(textId, listener);
}
public AlertDialog.Builder setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener) {
return builder.setNeutralButton(text, listener);
}
public AlertDialog.Builder setCancelable(boolean cancelable) {
return builder.setCancelable(cancelable);
}
public AlertDialog.Builder setOnCancelListener(DialogInterface.OnCancelListener onCancelListener) {
return builder.setOnCancelListener(onCancelListener);
}
public AlertDialog.Builder setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
return builder.setOnDismissListener(onDismissListener);
}
public AlertDialog.Builder setOnKeyListener(DialogInterface.OnKeyListener onKeyListener) {
return builder.setOnKeyListener(onKeyListener);
}
public AlertDialog.Builder setAdapter(ListAdapter adapter, DialogInterface.OnClickListener listener) {
return builder.setAdapter(adapter, listener);
}
public AlertDialog.Builder setCursor(Cursor cursor, DialogInterface.OnClickListener listener, String labelColumn) {
return builder.setCursor(cursor, listener, labelColumn);
}
public AlertDialog.Builder setView(View view) {
return builder.setView(view);
}
public AlertDialog.Builder setView(int layoutResId) {
return builder.setView(layoutResId);
}
public AlertDialog.Builder setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener) {
return builder.setOnItemSelectedListener(listener);
}
}

View file

@ -0,0 +1,183 @@
package de.thedevstack.conversationsplus.ui.dialogs;
import android.app.Activity;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import java.util.Date;
import de.thedevstack.conversationsplus.R;
import de.thedevstack.conversationsplus.entities.Conversation;
import de.thedevstack.conversationsplus.entities.Message;
import de.thedevstack.conversationsplus.utils.UIHelper;
/**
* Fills the contents to the message details dialog.
* The view definition is done in R.layout.dialog_message_details.
*/
public class MessageDetailsDialog extends AbstractAlertDialog {
/**
* Initializes the Message Details Dialog.
* @param context the context of this alert dialog (the parent activity).
* @param message the message to be displayed
*/
public MessageDetailsDialog(Activity context, Message message) {
super(context, R.string.dlg_msg_details_title);
this.createView(context, message);
}
/**
* Creates the view for the message details alert dialog.
* @param context the context of this alert dialog (the parent activity).
* @param message the message to be displayed
*/
protected void createView(Activity context, Message message) {
int viewId = R.layout.dialog_message_details;
View view = context.getLayoutInflater().inflate(viewId, null);
displayMessageSentTime(view, message);
displaySenderAndReceiver(view, message);
displayMessageTypeInfo(view, message);
displayMessageStatusInfo(view, message);
displayFileInfo(view, message);
}
/**
* Publishes file information, if message contains an image to view.
* @param view the dialog view
* @param message the message to display in dialog
*/
protected void displayFileInfo(View view, Message message) {
if (message.getType() == Message.TYPE_IMAGE || message.getType() == Message.TYPE_FILE || message.getTransferable() != null) {
view.findViewById(R.id.dlgMsgDetFileTable).setVisibility(View.VISIBLE);
if (null != message.getFileParams()) {
Message.FileParams params = message.getFileParams();
TextView tvFilesize = (TextView) view.findViewById(R.id.dlgMsgDetFileSize);
tvFilesize.setText(UIHelper.getHumanReadableFileSize(params.size));
}
TextView mimetype = (TextView) view.findViewById(R.id.dlgMsgDetFileMimeType);
mimetype.setText(message.getMimeType());
}
this.setView(view);
}
/**
* Displays message status info to view.
* @param view the dialog view
* @param message the message to display in dialog
*/
protected void displayMessageStatusInfo(View view, Message message) {
TextView msgStatusTextView = (TextView) view.findViewById(R.id.dlgMsgDetMsgStatus);
int msgStatusResId;
int msgStatusColorResId;
switch (message.getStatus()) {
case Message.STATUS_WAITING:
msgStatusResId = R.string.dlg_msg_details_msg_status_waiting;
msgStatusColorResId = R.color.black87;
break;
case Message.STATUS_UNSEND:
msgStatusResId = R.string.dlg_msg_details_msg_status_unsend;
msgStatusColorResId = R.color.black87;
break;
case Message.STATUS_OFFERED:
msgStatusResId = R.string.dlg_msg_details_msg_status_offered;
msgStatusColorResId = R.color.black87;
break;
case Message.STATUS_SEND_FAILED:
msgStatusResId = R.string.dlg_msg_details_msg_status_failed;
msgStatusColorResId = R.color.red500;
break;
case Message.STATUS_RECEIVED:
msgStatusResId = R.string.dlg_msg_details_msg_status_received;
msgStatusColorResId = R.color.black87;
break;
case Message.STATUS_SEND:
case Message.STATUS_SEND_DISPLAYED:
case Message.STATUS_SEND_RECEIVED:
default:
msgStatusResId = R.string.dlg_msg_details_msg_status_sent;
msgStatusColorResId = R.color.black87;
}
msgStatusTextView.setText(msgStatusResId);
msgStatusTextView.setTextColor(getContext().getResources().getColor(msgStatusColorResId));
}
/**
* Publishes message type information to view.
* @param view the dialog view
* @param message the message to display in dialog
*/
protected void displayMessageTypeInfo(View view, Message message) {
TextView msgTypeTextView = (TextView) view.findViewById(R.id.dlgMsgDetMsgType);
int msgTypeResId;
switch (message.getType()) {
case Message.TYPE_PRIVATE:
msgTypeResId = R.string.dlg_msg_details_msg_type_private;
break;
case Message.TYPE_FILE:
msgTypeResId = R.string.dlg_msg_details_msg_type_file;
break;
case Message.TYPE_IMAGE:
msgTypeResId = R.string.dlg_msg_details_msg_type_image;
break;
case Message.TYPE_STATUS:
msgTypeResId = R.string.dlg_msg_details_msg_type_status;
break;
case Message.TYPE_TEXT:
default:
msgTypeResId = R.string.dlg_msg_details_msg_type_text;
}
msgTypeTextView.setText(msgTypeResId);
}
/**
* Publishes information about sending and receiving parties to view.
* @param view the dialog view
* @param message the message to display in dialog
*/
protected void displaySenderAndReceiver(View view, Message message) {
Conversation conversation = message.getConversation();
// Get own resource name -> What about msg written on other client?
String me = conversation.getAccount().getJid().getResourcepart();
// Get resource name of chat partner, if available
String other = (message.getCounterpart().isBareJid()) ? "" : message.getCounterpart().getResourcepart();
Log.d("MesageDialog", "Me: " + me + ", other: " + other);
TextView sender = (TextView) view.findViewById(R.id.dlgMsgDetSender);
TextView receipient = (TextView) view.findViewById(R.id.dlgMsgDetReceipient);
if (conversation.getMode() == Conversation.MODE_MULTI) {
// Change label of sending and receiving party to MUC terminology
TextView senderLabel = (TextView) view.findViewById(R.id.dlgMsgDetLblSender);
senderLabel.setText(R.string.dlg_msg_details_sender_nick);
TextView receipientLabel = (TextView) view.findViewById(R.id.dlgMsgDetLblReceipient);
receipientLabel.setText(R.string.dlg_msg_details_receipient_nick);
// Get own nick for MUC
me = conversation.getMucOptions().getActualNick();
}
if (Message.STATUS_RECEIVED == message.getStatus()) {
// Sender was chat partner, if the status is for my account received
sender.setText(other);
// Set receipient to myself in case of normal chat or private message in MUC
if (conversation.getMode() == Conversation.MODE_SINGLE || Message.TYPE_PRIVATE == message.getType()) {
receipient.setText(me);
}
} else {
sender.setText(me);
receipient.setText(other);
}
}
/**
* Publishes information about message sent time to view.
* @param view the dialog view
* @param message the message to display in dialog
*/
protected void displayMessageSentTime(View view, Message message) {
TextView timeSent = (TextView) view.findViewById(R.id.dlgMsgDetTimeSent);
timeSent.setText(DateFormat.format("dd.MM.yyyy kk:mm:ss", new Date(message.getMergedTimeSent())));
}
}

View file

@ -0,0 +1,47 @@
package de.thedevstack.conversationsplus.ui.listeners;
import android.content.Context;
import android.view.View;
import de.thedevstack.conversationsplus.R;
import de.thedevstack.conversationsplus.entities.Contact;
import de.thedevstack.conversationsplus.ui.adapter.PresencesArrayAdapter;
import de.thedevstack.conversationsplus.ui.dialogs.AbstractAlertDialog;
/**
* This listener shows the dialog with the resources of a contact.
* The resources are shown with the color of their current online mode.
* This listener implements OnClickListener and OnLongClickListener.
*/
public class ShowResourcesListDialogListener extends AbstractAlertDialog implements View.OnClickListener, View.OnLongClickListener {
private Contact contact;
public ShowResourcesListDialogListener(Context context, Contact contact) {
super(context, getTitle(context, contact));
this.contact = contact;
this.init();
}
private static final String getTitle(Context context, Contact contact) {
if (null != contact && null != contact.getJid() && null != contact.getJid().toBareJid()) {
int presenceCount = null != contact.getPresences() ? contact.getPresences().size() : 0;
return context.getString(R.string.dlg_resources_title, contact.getJid().toBareJid().toString(), presenceCount);
}
return null != contact ? contact.toString() : "";
}
protected void init() {
this.builder.setAdapter(new PresencesArrayAdapter(getContext(), this.contact.getPresences()), null);
}
@Override
public void onClick(View v) {
this.show();
}
@Override
public boolean onLongClick(View view) {
this.show();
return true;
}
}

View file

@ -35,7 +35,8 @@ public abstract class AbstractGenerator {
"urn:xmpp:receipts"
};
private String mVersion = null;
public final String IDENTITY_NAME = "Conversations";
//FIXME use appname or similar!!!!!!!!!!!11elf
public final String IDENTITY_NAME = "Conversations+";
public final String IDENTITY_TYPE = "phone";
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);

View file

@ -32,6 +32,7 @@ import org.openintents.openpgp.util.OpenPgpUtils;
import java.util.List;
import de.thedevstack.conversationsplus.ui.listeners.ShowResourcesListDialogListener;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
import eu.siacs.conversations.entities.Account;
@ -350,6 +351,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
} else {
contactJidTv.setText(contact.getJid().toString());
}
contactJidTv.setOnClickListener(new ShowResourcesListDialogListener(ContactDetailsActivity.this, contact));
accountJidTv.setText(getString(R.string.using_account, contact.getAccount().getJid().toBareJid()));
badge.setImageBitmap(avatarService().get(contact, getPixel(72)));
badge.setOnClickListener(this.onBadgeClick);

View file

@ -259,9 +259,10 @@ public class ConversationActivity extends XmppActivity
}
if (mContentView instanceof SlidingPaneLayout) {
SlidingPaneLayout mSlidingPaneLayout = (SlidingPaneLayout) mContentView;
// Move the conversation list when sliding the selected conversation
mSlidingPaneLayout.setParallaxDistance(150);
mSlidingPaneLayout
.setShadowResource(R.drawable.es_slidingpane_shadow);
// The shadow between conversation list and selected conversation
mSlidingPaneLayout.setShadowResourceLeft(R.drawable.es_slidingpane_shadow);
mSlidingPaneLayout.setSliderFadeColor(0);
mSlidingPaneLayout.setPanelSlideListener(new PanelSlideListener() {

View file

@ -42,6 +42,8 @@ import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.ConcurrentLinkedQueue;
import de.thedevstack.conversationsplus.ui.dialogs.MessageDetailsDialog;
import de.thedevstack.conversationsplus.ui.listeners.ConversationSwipeRefreshListener;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
@ -500,6 +502,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.msg_ctx_mnu_details:
new MessageDetailsDialog(getActivity(), selectedMessage).show();
return true;
case R.id.share_with:
shareWith(selectedMessage);
return true;

View file

@ -7,6 +7,7 @@ import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.util.Log;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
@ -19,6 +20,7 @@ import java.lang.ref.WeakReference;
import java.util.List;
import java.util.concurrent.RejectedExecutionException;
import de.thedevstack.conversationsplus.ui.listeners.ShowResourcesListDialogListener;
import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
@ -61,11 +63,12 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
view = inflater.inflate(R.layout.conversation_list_row,parent, false);
}
Conversation conversation = getItem(position);
// Highlight the currently selected conversation
if (this.activity instanceof ConversationActivity) {
View swipeableItem = view.findViewById(R.id.swipeable_item);
ConversationActivity a = (ConversationActivity) this.activity;
int c = !a.isConversationsOverviewHideable() && conversation == a.getSelectedConversation() ? a.getSecondaryBackgroundColor() : a.getPrimaryBackgroundColor();
swipeableItem.setBackgroundColor(c);
int c = conversation == a.getSelectedConversation() ? a.getSecondaryBackgroundColor() : a.getPrimaryBackgroundColor();
view.findViewById(R.id.conversationListRowContent).setBackgroundColor(c);
view.findViewById(R.id.conversationListRowFrame).setBackgroundColor(c);
}
TextView convName = (TextView) view.findViewById(R.id.conversation_name);
if (conversation.getMode() == Conversation.MODE_SINGLE || activity.useSubjectToIdentifyConference()) {
@ -77,7 +80,7 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
TextView mTimestamp = (TextView) view.findViewById(R.id.conversation_lastupdate);
ImageView imagePreview = (ImageView) view.findViewById(R.id.conversation_lastimage);
if (Settings.SHOW_ONLINE_STATUS && conversation != null && conversation.getAccount().getStatus() == Account.State.ONLINE) {
if (Settings.SHOW_ONLINE_STATUS && conversation.getAccount().getStatus() == Account.State.ONLINE) {
TextView status = (TextView) view.findViewById(R.id.status);
String color = "#000000";
@ -138,7 +141,8 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
mTimestamp.setText(UIHelper.readableTimeDifference(activity,conversation.getLatestMessage().getTimeSent()));
ImageView profilePicture = (ImageView) view.findViewById(R.id.conversation_image);
loadAvatar(conversation,profilePicture);
profilePicture.setOnLongClickListener(new ShowResourcesListDialogListener(activity, conversation.getContact()));
loadAvatar(conversation, profilePicture);
return view;
}
@ -225,4 +229,4 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
return bitmapWorkerTaskReference.get();
}
}
}
}

View file

@ -1,5 +1,7 @@
package eu.siacs.conversations.utils;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.net.URLConnection;
@ -287,4 +289,20 @@ public class UIHelper {
body = body.replace("?","").replace("¿","");
return LOCATION_QUESTIONS.contains(body);
}
public static String getHumanReadableFileSize(long filesize) {
if (0 > filesize) {
return "?";
}
double size = Double.valueOf(filesize);
String[] sizes = {" bytes", " Kb", " Mb", " Gb", " Tb"};
int i = 0;
while (1023 < size) {
size /= 1024d;
++i;
}
BigDecimal readableSize = new BigDecimal(size);
readableSize = readableSize.setScale(2, BigDecimal.ROUND_HALF_UP);
return readableSize.doubleValue() + sizes[i];
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -5,7 +5,8 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:descendantFocusability="blocksDescendants">
android:descendantFocusability="blocksDescendants"
android:id="@+id/conversationListRowFrame">
<View
android:layout_width="fill_parent"
@ -21,9 +22,9 @@
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?android:selectableItemBackground"
android:orientation="horizontal"
android:padding="8dp" >
android:padding="8dp"
android:id="@+id/conversationListRowContent">
<ImageView
android:id="@+id/conversation_image"
@ -46,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/conversation_image"
android:paddingLeft="8dp" >
android:paddingLeft="8dp">
<TextView

View file

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_time_sent"
android:id="@+id/dlgMsgDetLblTimeSent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dlgMsgDetTimeSent"
android:width="200dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textAlignment="viewEnd"
android:gravity="end" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_msg_type"
android:id="@+id/dlgMsgDetLblMsgType"
android:layout_below="@+id/dlgMsgDetLblTimeSent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dlgMsgDetMsgType"
android:layout_below="@+id/dlgMsgDetTimeSent"
android:layout_alignRight="@+id/dlgMsgDetTimeSent"
android:layout_alignEnd="@+id/dlgMsgDetTimeSent"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_msg_status"
android:id="@+id/dlgMsgDetLblMsgStatus"
android:layout_below="@+id/dlgMsgDetLblMsgType" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dlgMsgDetMsgStatus"
android:layout_below="@+id/dlgMsgDetMsgType"
android:layout_alignRight="@+id/dlgMsgDetMsgType"
android:layout_alignEnd="@+id/dlgMsgDetMsgType"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_sender_resource"
android:id="@+id/dlgMsgDetLblSender"
android:layout_below="@+id/dlgMsgDetLblMsgStatus" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dlgMsgDetSender"
android:layout_below="@+id/dlgMsgDetMsgStatus"
android:layout_alignRight="@+id/dlgMsgDetMsgStatus"
android:layout_alignEnd="@+id/dlgMsgDetMsgStatus"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_receipient_resource"
android:id="@+id/dlgMsgDetLblReceipient"
android:layout_below="@+id/dlgMsgDetLblSender" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dlgMsgDetReceipient"
android:layout_below="@+id/dlgMsgDetSender"
android:layout_alignRight="@+id/dlgMsgDetSender"
android:layout_alignEnd="@+id/dlgMsgDetSender" />
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/dlgMsgDetLblReceipient"
android:layout_marginTop="11dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:stretchColumns="1"
android:background="@color/black87"
android:id="@+id/dlgMsgDetFileTable"
android:visibility="gone">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_marginTop="0.3dp"
android:layout_marginLeft="0.3dp"
android:layout_marginRight="0.3dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_file_details"
android:layout_column="0"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_marginTop="0.3dp"
android:layout_marginLeft="0.3dp"
android:layout_marginRight="0.3dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_file_mime" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAlignment="textEnd"
android:gravity="end"
android:id="@+id/dlgMsgDetFileMimeType" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_marginLeft="0.3dp"
android:layout_marginTop="0.3dp"
android:layout_marginRight="0.3dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dlg_msg_details_file_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAlignment="textEnd"
android:gravity="end"
android:id="@+id/dlgMsgDetFileSize"/>
</TableRow>
</TableLayout>
</RelativeLayout>
</LinearLayout>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/dlg_res_stat_resource_name"
android:layout_marginLeft="10dp" />
</LinearLayout>

View file

@ -44,7 +44,7 @@
android:id="@+id/message_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:autoLink="web|phone|email"
android:textColor="@color/black87"
android:textSize="?attr/TextSizeBody"
emojicon:emojiconSize="28sp" />

View file

@ -44,7 +44,7 @@
android:id="@+id/message_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:autoLink="web|phone|email"
android:textColor="@color/black87"
android:textSize="?attr/TextSizeBody"
emojicon:emojiconSize="28sp" />

View file

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/msg_ctx_mnu_details"
android:title="@string/msg_ctx_mnu_details"
android:visible="true"/>
<item
android:id="@+id/copy_text"
android:title="@string/copy_text"

View file

@ -466,4 +466,29 @@
<string name="search_for_contacts_or_groups">Nach Kontakten oder Konferenzen suchen</string>
<string name="pref_led_notification_color">LED-Benachrichtigung Farbe</string>
<string name="pref_led_notification_color_summary">Setze die Farbe der LED-Benachrichtigung</string>
<string name="msg_ctx_mnu_details">Nachrichtendetails</string>
<string name="dlg_msg_details_title">Nachrichtendetails</string>
<string name="cplus_ok">Ok</string>
<string name="dlg_resources_title">%1$s (%2$d)</string><!-- %s = bare jid, %d = count of online resources -->
<string name="dlg_msg_details_receipient_resource">Empfänger Resource:</string>
<string name="dlg_msg_details_receipient_nick">Empfänger Nickname:</string>
<string name="dlg_msg_details_sender_resource">Absender Resource:</string>
<string name="dlg_msg_details_sender_nick">Absender Nickname:</string>
<string name="dlg_msg_details_time_sent">Gesendet:</string>
<string name="dlg_msg_details_msg_type">Nachrichtentyp:</string>
<string name="dlg_msg_details_msg_status">Nachrichtenstatus:</string>
<string name="dlg_msg_details_file_details">Dateidetails</string>
<string name="dlg_msg_details_file_mime">Mime Type</string>
<string name="dlg_msg_details_file_size">Größe</string>
<string name="dlg_msg_details_msg_type_text">Text</string>
<string name="dlg_msg_details_msg_type_image">Bild</string>
<string name="dlg_msg_details_msg_type_file">Datei</string>
<string name="dlg_msg_details_msg_type_status">Status</string>
<string name="dlg_msg_details_msg_type_private">Privat</string>
<string name="dlg_msg_details_msg_status_sent">Gesendet</string>
<string name="dlg_msg_details_msg_status_received">Empfangen</string>
<string name="dlg_msg_details_msg_status_waiting">Wartend</string>
<string name="dlg_msg_details_msg_status_unsend">In Übertragung</string>
<string name="dlg_msg_details_msg_status_offered">Angeboten</string>
<string name="dlg_msg_details_msg_status_failed">Fehlgeschlagen</string>
</resources>

View file

@ -495,4 +495,29 @@
<string name="search_for_contacts_or_groups">Search for contacts or groups</string>
<string name="pref_led_notification_color">LED notification color</string>
<string name="pref_led_notification_color_summary">Change the color of the LED notification</string>
<string name="msg_ctx_mnu_details">Message Details</string>
<string name="dlg_msg_details_title">Message Details</string>
<string name="cplus_ok">Ok</string>
<string name="dlg_resources_title">%1$s (%2$d)</string><!-- %s = bare jid, %d = count of online resources -->
<string name="dlg_msg_details_receipient_resource">Receipient Resource:</string>
<string name="dlg_msg_details_receipient_nick">Receipient Nick:</string>
<string name="dlg_msg_details_sender_resource">Sender Resource:</string>
<string name="dlg_msg_details_sender_nick">Sender Nick:</string>
<string name="dlg_msg_details_time_sent">Time Sent:</string>
<string name="dlg_msg_details_msg_type">Message Type:</string>
<string name="dlg_msg_details_msg_status">Message Status:</string>
<string name="dlg_msg_details_file_details">File Details</string>
<string name="dlg_msg_details_file_mime">Mime Type</string>
<string name="dlg_msg_details_file_size">Size</string>
<string name="dlg_msg_details_msg_type_text">Text</string>
<string name="dlg_msg_details_msg_type_image">Image</string>
<string name="dlg_msg_details_msg_type_file">File</string>
<string name="dlg_msg_details_msg_type_status">Status</string>
<string name="dlg_msg_details_msg_type_private">Private</string>
<string name="dlg_msg_details_msg_status_sent">Sent</string>
<string name="dlg_msg_details_msg_status_received">Received</string>
<string name="dlg_msg_details_msg_status_waiting">Waiting</string>
<string name="dlg_msg_details_msg_status_unsend">Unsend</string>
<string name="dlg_msg_details_msg_status_offered">Offered</string>
<string name="dlg_msg_details_msg_status_failed">Failed</string>
</resources>