aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlookshe <github@lookshe.org>2015-10-05 13:55:43 +0200
committerlookshe <github@lookshe.org>2015-10-05 13:55:43 +0200
commitb98478e57c088efc63fd470e429f791dd664707a (patch)
treee722ed48ee2ec125d8ad9250f79d8e1ca95666a7
parent5850cbcf9c3e72580f3288c582737a04e8148b79 (diff)
parent6f17b06ad008cc7ac89174ba7ac7cc96ee0881eb (diff)
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
-rw-r--r--art/conversations_plus_baloons.svg447
-rwxr-xr-xart/render.rb3
-rw-r--r--build.gradle4
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/adapter/PresencesArrayAdapter.java63
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/dialogs/AbstractAlertDialog.java125
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/dialogs/MessageDetailsDialog.java183
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/listeners/ShowResourcesListDialogListener.java47
-rw-r--r--src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java3
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java2
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java5
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationFragment.java5
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java16
-rw-r--r--src/main/java/eu/siacs/conversations/utils/UIHelper.java18
-rw-r--r--src/main/res/drawable-hdpi/ic_launcher.pngbin4486 -> 4334 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_launcher.pngbin2762 -> 2656 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_launcher.pngbin6377 -> 6157 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_launcher.pngbin10254 -> 10033 bytes
-rw-r--r--src/main/res/drawable-xxxhdpi/ic_launcher.pngbin14117 -> 14018 bytes
-rw-r--r--src/main/res/layout/conversation_list_row.xml9
-rw-r--r--src/main/res/layout/dialog_message_details.xml168
-rw-r--r--src/main/res/layout/dialog_resources_status.xml13
-rw-r--r--src/main/res/layout/message_received.xml2
-rw-r--r--src/main/res/layout/message_sent.xml2
-rw-r--r--src/main/res/menu/message_context.xml5
-rw-r--r--src/main/res/values-de/strings.xml25
-rw-r--r--src/main/res/values/strings.xml25
26 files changed, 1151 insertions, 19 deletions
diff --git a/art/conversations_plus_baloons.svg b/art/conversations_plus_baloons.svg
new file mode 100644
index 00000000..9f02d0a7
--- /dev/null
+++ b/art/conversations_plus_baloons.svg
@@ -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>
diff --git a/art/render.rb b/art/render.rb
index 698abea5..23548d94 100755
--- a/art/render.rb
+++ b/art/render.rb
@@ -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],
diff --git a/build.gradle b/build.gradle
index 130fa6b1..214e982a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -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 {
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/adapter/PresencesArrayAdapter.java b/src/main/java/de/thedevstack/conversationsplus/ui/adapter/PresencesArrayAdapter.java
new file mode 100644
index 00000000..0b5cb897
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/ui/adapter/PresencesArrayAdapter.java
@@ -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;
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/AbstractAlertDialog.java b/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/AbstractAlertDialog.java
new file mode 100644
index 00000000..10764798
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/AbstractAlertDialog.java
@@ -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);
+ }
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/MessageDetailsDialog.java b/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/MessageDetailsDialog.java
new file mode 100644
index 00000000..25d522f0
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/ui/dialogs/MessageDetailsDialog.java
@@ -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())));
+ }
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ShowResourcesListDialogListener.java b/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ShowResourcesListDialogListener.java
new file mode 100644
index 00000000..070ea58c
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ShowResourcesListDialogListener.java
@@ -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;
+ }
+}
diff --git a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
index 16984910..3607b69a 100644
--- a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
+++ b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
@@ -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);
diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
index c190caed..40d5bc92 100644
--- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
@@ -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);
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index bf261dba..475b0e9e 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -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() {
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index eb2688fd..70462d03 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -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;
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
index 7443c0cb..9d8cc0ba 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
@@ -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();
}
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
index 76f48037..7562c446 100644
--- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
@@ -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];
+ }
}
diff --git a/src/main/res/drawable-hdpi/ic_launcher.png b/src/main/res/drawable-hdpi/ic_launcher.png
index 25fc8591..1bea2f74 100644
--- a/src/main/res/drawable-hdpi/ic_launcher.png
+++ b/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-mdpi/ic_launcher.png b/src/main/res/drawable-mdpi/ic_launcher.png
index 733e9615..f2df046e 100644
--- a/src/main/res/drawable-mdpi/ic_launcher.png
+++ b/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/ic_launcher.png b/src/main/res/drawable-xhdpi/ic_launcher.png
index c9e48859..2c0f1647 100644
--- a/src/main/res/drawable-xhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/ic_launcher.png b/src/main/res/drawable-xxhdpi/ic_launcher.png
index e69b9c8d..f8edda90 100644
--- a/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/drawable-xxxhdpi/ic_launcher.png b/src/main/res/drawable-xxxhdpi/ic_launcher.png
index 668504df..d9aa6c0e 100644
--- a/src/main/res/drawable-xxxhdpi/ic_launcher.png
+++ b/src/main/res/drawable-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/main/res/layout/conversation_list_row.xml b/src/main/res/layout/conversation_list_row.xml
index c79628d4..efa10748 100644
--- a/src/main/res/layout/conversation_list_row.xml
+++ b/src/main/res/layout/conversation_list_row.xml
@@ -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
diff --git a/src/main/res/layout/dialog_message_details.xml b/src/main/res/layout/dialog_message_details.xml
new file mode 100644
index 00000000..4d63831e
--- /dev/null
+++ b/src/main/res/layout/dialog_message_details.xml
@@ -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> \ No newline at end of file
diff --git a/src/main/res/layout/dialog_resources_status.xml b/src/main/res/layout/dialog_resources_status.xml
new file mode 100644
index 00000000..4dd511f5
--- /dev/null
+++ b/src/main/res/layout/dialog_resources_status.xml
@@ -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> \ No newline at end of file
diff --git a/src/main/res/layout/message_received.xml b/src/main/res/layout/message_received.xml
index 68ed5711..82f85176 100644
--- a/src/main/res/layout/message_received.xml
+++ b/src/main/res/layout/message_received.xml
@@ -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" />
diff --git a/src/main/res/layout/message_sent.xml b/src/main/res/layout/message_sent.xml
index 563e2e29..3b8212a5 100644
--- a/src/main/res/layout/message_sent.xml
+++ b/src/main/res/layout/message_sent.xml
@@ -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" />
diff --git a/src/main/res/menu/message_context.xml b/src/main/res/menu/message_context.xml
index 4e1316d3..2fe1ca22 100644
--- a/src/main/res/menu/message_context.xml
+++ b/src/main/res/menu/message_context.xml
@@ -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"
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index 2d5337be..16ed5239 100644
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -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>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 94d75164..25eb3dbd 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -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>