From a065c78b5fd1a4624406a1694ba111a597efa481 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 30 Aug 2019 18:36:14 -0700 Subject: [PATCH] Restyle UIComputerView to match other clients --- .../AddComputerIcon.imageset/Contents.json | 23 ----- .../limelight_computer_add_icon_1x.png | Bin 1543 -> 0 bytes .../limelight_computer_add_icon_2x.png | Bin 1964 -> 0 bytes .../limelight_computer_add_icon_3x.png | Bin 2449 -> 0 bytes .../Contents.json | 10 +- .../AddOverlayIcon.imageset/add.pdf | Bin 0 -> 1069 bytes .../limelight_computer_1x.png | Bin 9502 -> 0 bytes .../limelight_computer_2x.png | Bin 13331 -> 0 bytes .../limelight_computer_3x.png | Bin 22832 -> 0 bytes .../ErrorOverlayIcon.imageset/Contents.json | 21 +++++ .../ErrorOverlayIcon.imageset/error.pdf | 68 ++++++++++++++ .../LockedOverlayIcon.imageset/Contents.json | 21 +++++ .../LockedOverlayIcon.imageset/lock.pdf | 68 ++++++++++++++ .../Contents.json | 21 +++++ .../UpdatingOverlayIcon.imageset/updating.pdf | 68 ++++++++++++++ .../computer.imageset/Contents.json | 21 +++++ .../computer.imageset/computer.pdf | 69 ++++++++++++++ Limelight/UIComputerView.m | 88 +++++------------- 18 files changed, 386 insertions(+), 92 deletions(-) delete mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json delete mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_1x.png delete mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png delete mode 100644 Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_3x.png rename Limelight/Images.xcassets/{Computer.imageset => AddOverlayIcon.imageset}/Contents.json (50%) create mode 100644 Limelight/Images.xcassets/AddOverlayIcon.imageset/add.pdf delete mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_1x.png delete mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_2x.png delete mode 100644 Limelight/Images.xcassets/Computer.imageset/limelight_computer_3x.png create mode 100644 Limelight/Images.xcassets/ErrorOverlayIcon.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/ErrorOverlayIcon.imageset/error.pdf create mode 100644 Limelight/Images.xcassets/LockedOverlayIcon.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/LockedOverlayIcon.imageset/lock.pdf create mode 100644 Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/updating.pdf create mode 100644 Limelight/Images.xcassets/computer.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/computer.imageset/computer.pdf diff --git a/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json b/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json deleted file mode 100644 index 159ec2c0..00000000 --- a/Limelight/Images.xcassets/AddComputerIcon.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x", - "filename" : "limelight_computer_add_icon_1x.png" - }, - { - "idiom" : "universal", - "scale" : "2x", - "filename" : "limelight_computer_add_icon_2x.png" - }, - { - "idiom" : "universal", - "scale" : "3x", - "filename" : "limelight_computer_add_icon_3x.png" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_1x.png b/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_1x.png deleted file mode 100644 index 1c3d2db356846648e8f6c7f80edf0249e7d31116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1543 zcmeAS@N?(olHy`uVBq!ia0y~yU=Rag4mJh`h9g^YtQi;>7>k44ofy`glX=O&z`$AH z5n0T@VA}%1j91sJFJWL{Je?U5Q4-TzEgJS^{BX(Sx zdS`7J7?`hmx;Tbd2=<0}=gYVXtb6xz?o3|k{YvX~Ws(;~xGZRBnUuZ6f$W5IgYcz4qLDUm;47g+pZeD1hm z{x?ynZCA7|wYIkEKeG6DXUVe`xr~+TuNuX<+NcZVx+m>>*%7-rX!=*jiQ?vbe0=-Z zJld`%?P1Adecj#NU4F^L_POcGkWV3ZUc3vC-&ZeT*nDsCy^3##_DsFJVFjz8OV^?w zwdLjCg;$tI72Gwtaeex~8lc0WHb{o1Wtmd6`5uG(@jSv6+WwKzA~+>CCQdvCx0 zE$F(!OST$)jT&nTXXv1l|V1Sh9?uGPrcsx>`k|llk_bm2fh!f4fX8Ja$&v+ ziN2M!5>p*KG?)dmoZhgBANEL7k#kJ1wO4WeVUu<(e!b?{x%CUn_>U_`uYSze z|3Le|FP=%I%@co3xH~;U>*=4bvvpnw{1%ujv-0AjnpmM1ivpDHFyCOCv`V-%?OFPB zd$T#geIh+8Rbr}bH#|{H75BKXYUA_{8@r_IFJ?0&g`IWXs&m@^i)pRe?*|*wzCW~K zR18@USbpPm&x2+a%|(}lMA|MRJk%|S{<*q{v+?X<8g`IoU7?SeD6P!7j3H#;tFw! zEPVR9)k$;Dot_?*XpPqY{OUI+J$7-A4s1!;9$LTjfATMzyn`sew)@hdBI_pRy)lK3=zft+fq;jZ(A2WJ-6 zEW7uDr*F^>~3M`HP{PMB(QTC&uc|CLcy+1F$elT|zx9)`_ZQHo^nHsLz zbn3&c+Vcw~AH3XsGMww~mK(B_{5P8(ywJRJH~&iEMKQaB;ineuVLiEQzMIRAbIbY7 z6MMOJf*LaU{!3;g1z!-CnEm_r@Aym22j=wjyw?=b-*Qc}M{COL>8d|gGe${P2VI_K z_u;Sdo|E-LlMk>c{5W>*+_|SV=j9vw6MM?E{^hCu*WlS7p(7ss=gNyZW{>?6cC$b1 zW%|b`mRf4vyGDf7I&#`wvtud}Et@Cy^{rgkb!OJZyKmRY+Od7^p^bq* z@BiFhU0pr@P`QA?j2GJ1c`mMCSo=FX>sZW{=wG%hQJF_J<@(=h4-LDU{$24lPtp9$ b2T$d{{608eX4|nAQ0eUH>gTe~DWM4f#0i!2 diff --git a/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png b/Limelight/Images.xcassets/AddComputerIcon.imageset/limelight_computer_add_icon_2x.png deleted file mode 100644 index 661eddd89bf78dbb6b77b16e2a5b5e5965527852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1964 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 diff --git a/Limelight/Images.xcassets/Computer.imageset/Contents.json b/Limelight/Images.xcassets/AddOverlayIcon.imageset/Contents.json similarity index 50% rename from Limelight/Images.xcassets/Computer.imageset/Contents.json rename to Limelight/Images.xcassets/AddOverlayIcon.imageset/Contents.json index 3a06eed7..def80db6 100644 --- a/Limelight/Images.xcassets/Computer.imageset/Contents.json +++ b/Limelight/Images.xcassets/AddOverlayIcon.imageset/Contents.json @@ -2,18 +2,16 @@ "images" : [ { "idiom" : "universal", - "scale" : "1x", - "filename" : "limelight_computer_1x.png" + "scale" : "1x" }, { "idiom" : "universal", - "scale" : "2x", - "filename" : "limelight_computer_2x.png" + "filename" : "add.pdf", + "scale" : "2x" }, { "idiom" : "universal", - "scale" : "3x", - "filename" : "limelight_computer_3x.png" + "scale" : "3x" } ], "info" : { diff --git a/Limelight/Images.xcassets/AddOverlayIcon.imageset/add.pdf b/Limelight/Images.xcassets/AddOverlayIcon.imageset/add.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cbc761598c8663ce5f9e387ac0967590c983dd80 GIT binary patch literal 1069 zcmY!laBTsJG; zuE~6RXy)#I-Z_?RkB({0+4gRZqXd|5W_aEuh& zrGzPMtg|lVO*!(S;=b^^59}>rxp7>nc_~o8q~@i7LILD;5Urq~U}$L!k_YjO;b8<0 z71xRq_u!Jml2ip78;}4fq!JAjKq2Vts9>m|pPZ;*s95DAP%uz1HwB?suv+K*ypq(s zl41o={6Qkiy(qu50Le)Z8^EFXo zWtqvTLGDfJFTW^VQxj~Fb5UwyNoIbY3n*eVT&#=?3@r^Tj13Ge3{4Hpbq&nb4Gc7q>@-KR z6XIy+#FE6E{B*EsU=Ki}!p;ts5GsmN)3^*2EVvBdK*7w^)Yw!ZO#vomYH6wfmQ~1u ziy50+Vu~4LklAdE>%@me>W}wCd)w& literal 0 HcmV?d00001 diff --git a/Limelight/Images.xcassets/Computer.imageset/limelight_computer_1x.png b/Limelight/Images.xcassets/Computer.imageset/limelight_computer_1x.png deleted file mode 100644 index 7c2e71f17acfe08b2289c24a12637bbc6bf114aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9502 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 diff --git a/Limelight/Images.xcassets/Computer.imageset/limelight_computer_3x.png b/Limelight/Images.xcassets/Computer.imageset/limelight_computer_3x.png deleted file mode 100644 index e93d41726cde0a262426d125d527f3067cb941e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22832 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 +stream +xœeŒÑ Ã0 Dÿ5Å-Uªì(kt„Rhò¤Ýª8µ �t︓Bb�å¯B)öù̸=ó—Œõž1fã¸òä�W˜sW½P’jçjXbó†kG Ý’rî%c?õì=ÓãÍ?ÜðÒ~Óƒ~®L+· +endstream +endobj +5 0 obj + 115 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 75 75 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /CreationDate (D:20190830180932-07'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000517 00000 n +0000000301 00000 n +0000000229 00000 n +0000000015 00000 n +0000000207 00000 n +0000000582 00000 n +0000000698 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +750 +%%EOF diff --git a/Limelight/Images.xcassets/LockedOverlayIcon.imageset/Contents.json b/Limelight/Images.xcassets/LockedOverlayIcon.imageset/Contents.json new file mode 100644 index 00000000..d374f9c2 --- /dev/null +++ b/Limelight/Images.xcassets/LockedOverlayIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "lock.pdf", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/LockedOverlayIcon.imageset/lock.pdf b/Limelight/Images.xcassets/LockedOverlayIcon.imageset/lock.pdf new file mode 100644 index 00000000..7c4848a8 --- /dev/null +++ b/Limelight/Images.xcassets/LockedOverlayIcon.imageset/lock.pdf @@ -0,0 +1,68 @@ +%PDF-1.5 +%µí®û +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xœUQKnÅ Üû¾@]ÌÇðŽñŽP!õu‘,ÚÞ_*ø¥"‚ÐÌØcZë�×Öξ�q¯Ÿ¾$|ýBÊ ×wb+Ć�À<¨ßiÒ£ŠvW:9œ˜�O™•¸*˜ZΠšfwΰ çåœ; Ά ïZ§ÙÛá¸Ñ£ ×¢¨›y‚xœõ)Ñσd §r³�ËzÚa™Ç2ºUãòõp�oâè(|T'–JIrpóiI+4²Æ8´6§…êªÀd€5‘ÄxÏ v•Η¢_:'áiÔò tíöËïºk'¶vÎèP{ŽÙûЂ®¼$X2q|h“ê†Wv¦Q«?¹¹«‚ù_ùŸý Oøp…& +endstream +endobj +5 0 obj + 267 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 75 75 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /CreationDate (D:20190830180930-07'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000669 00000 n +0000000453 00000 n +0000000381 00000 n +0000000015 00000 n +0000000359 00000 n +0000000734 00000 n +0000000850 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +902 +%%EOF diff --git a/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/Contents.json b/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/Contents.json new file mode 100644 index 00000000..ba046c1e --- /dev/null +++ b/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "updating.pdf", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/updating.pdf b/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/updating.pdf new file mode 100644 index 00000000..549477a0 --- /dev/null +++ b/Limelight/Images.xcassets/UpdatingOverlayIcon.imageset/updating.pdf @@ -0,0 +1,68 @@ +%PDF-1.5 +%µí®û +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xœmQÁm1ü»Ši Ä`ðÚe¤„ÈR.�ÛG’þ¥`|»·Š"KÀ0ÌÈþ^ØÍf{úJŒù¾ox}ϸý$ëTœÃ­Ô<.î°JòèFMõp—‚ŠRyR¼€‘ÖiäÍM)WñJQâÖ`�ªÌ Nç¨<ù„"d]QÝ­ ˜÷dY(Ì5…Ÿ:’wþL£ƒÝ±€lÄVw)Xá€fª'£e‚îd¾¤†<ÉÔK›;ej¾×8å}ÒÝs ^…4{£sÁÍ[‰7õ æšxH)ÄÏO`‹[Y^ç:˜4~¤·ô ªHby +endstream +endobj +5 0 obj + 236 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 75 75 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /CreationDate (D:20190830182029-07'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000638 00000 n +0000000422 00000 n +0000000350 00000 n +0000000015 00000 n +0000000328 00000 n +0000000703 00000 n +0000000819 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +871 +%%EOF diff --git a/Limelight/Images.xcassets/computer.imageset/Contents.json b/Limelight/Images.xcassets/computer.imageset/Contents.json new file mode 100644 index 00000000..81d660df --- /dev/null +++ b/Limelight/Images.xcassets/computer.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "computer.pdf", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/computer.imageset/computer.pdf b/Limelight/Images.xcassets/computer.imageset/computer.pdf new file mode 100644 index 00000000..be00acf5 --- /dev/null +++ b/Limelight/Images.xcassets/computer.imageset/computer.pdf @@ -0,0 +1,69 @@ +%PDF-1.5 +%µí®û +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xœ]‘]! „ß{Š^ÀÊ”Àâ1<‚Ùøó êý …E »ÛN‡Yp°µƒmª‰×=)´³×•÷§À×7iØ·¸Hbä"‹= ¯3_\W«F­Æ!K©%­ðÁ½ÛñÎX¤@;$Ú®‹ ”mÊê@Œ¬Ç¿ ‰µµ+¸“!ïd�±ùË}œ#¡TÙ;7_Û«†,ÚLÙ˜EˆMHS~»ì8Ðà—î�$ëô¾±ÍX™F—ØÙ´<òŸ\W¾Í¤MlæÜûþeÓeÇÿÎ é¦Lg7 +endstream +endobj +5 0 obj + 212 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 0.3 /ca 0.3 >> + /a1 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 225 225 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /CreationDate (D:20190830180928-07'00) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000648 00000 n +0000000430 00000 n +0000000326 00000 n +0000000015 00000 n +0000000304 00000 n +0000000713 00000 n +0000000829 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +881 +%%EOF diff --git a/Limelight/UIComputerView.m b/Limelight/UIComputerView.m index dea2e51c..6bf33e42 100644 --- a/Limelight/UIComputerView.m +++ b/Limelight/UIComputerView.m @@ -12,8 +12,7 @@ TemporaryHost* _host; UIButton* _hostButton; UILabel* _hostLabel; - UILabel* _hostStatus; - UILabel* _hostPairState; + UIImageView* _hostOverlay; id _callback; CGSize _labelSize; } @@ -32,14 +31,21 @@ static const int LABEL_DY = 20; [_hostButton setBackgroundImage:[UIImage imageNamed:@"Computer"] forState:UIControlStateNormal]; [_hostButton sizeToFit]; - _hostButton.layer.shadowColor = [[UIColor blackColor] CGColor]; + _hostButton.layer.shadowColor = [[UIColor blackColor] CGColor]; _hostButton.layer.shadowOffset = CGSizeMake(5,8); _hostButton.layer.shadowOpacity = 0.7; _hostLabel = [[UILabel alloc] init]; - _hostStatus = [[UILabel alloc] init]; - _hostPairState = [[UILabel alloc] init]; +#if !TARGET_OS_TV + _hostLabel.textColor = [UIColor whiteColor]; +#endif + + _hostOverlay = [[UIImageView alloc] initWithFrame:CGRectMake(_hostButton.frame.size.width / 4, _hostButton.frame.size.height / 6, _hostButton.frame.size.width / 2, _hostButton.frame.size.height / 2)]; + [self addSubview:_hostButton]; + [self addSubview:_hostLabel]; + [self addSubview:_hostOverlay]; + return self; } @@ -47,38 +53,23 @@ static const int LABEL_DY = 20; self = [self init]; _callback = callback; - [_hostButton setBackgroundImage:[UIImage imageNamed:@"Computer"] forState:UIControlStateNormal]; - [_hostButton setContentEdgeInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; if (@available(iOS 9.0, tvOS 9.0, *)) { [_hostButton addTarget:self action:@selector(addClicked) forControlEvents:UIControlEventPrimaryActionTriggered]; } else { [_hostButton addTarget:self action:@selector(addClicked) forControlEvents:UIControlEventTouchUpInside]; } - [_hostButton sizeToFit]; [_hostLabel setText:@"Add Host"]; [_hostLabel sizeToFit]; -#if !TARGET_OS_TV - _hostLabel.textColor = [UIColor whiteColor]; -#endif - _hostLabel.center = CGPointMake(_hostButton.frame.origin.x + (_hostButton.frame.size.width / 2), _hostButton.frame.origin.y + _hostButton.frame.size.height + LABEL_DY); - UIImageView* addIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AddComputerIcon"]]; - [addIcon sizeToFit]; - addIcon.center = CGPointMake(_hostButton.frame.origin.x + _hostButton.frame.size.width, _hostButton.frame.origin.y); + float x = _hostButton.frame.origin.x + _hostButton.frame.size.width / 2; + _hostLabel.center = CGPointMake(x, _hostButton.frame.origin.y + _hostButton.frame.size.height + LABEL_DY); - // This is required to ensure this button is the same size as the others - _hostPairState.text = @"None"; - _hostStatus.text = @"None"; - [_hostPairState sizeToFit]; - [_hostStatus sizeToFit]; + [_hostOverlay setImage:[UIImage imageNamed:@"AddOverlayIcon"]]; [self updateBounds]; - [self addSubview:_hostButton]; - [self addSubview:_hostLabel]; - [self addSubview:addIcon]; - + return self; } @@ -99,10 +90,6 @@ static const int LABEL_DY = 20; [self updateContentsForHost:host]; [self updateBounds]; - [self addSubview:_hostButton]; - [self addSubview:_hostLabel]; - [self addSubview:_hostStatus]; - [self addSubview:_hostPairState]; [self startUpdateLoop]; return self; @@ -116,23 +103,15 @@ static const int LABEL_DY = 20; x = MIN(x, _hostButton.frame.origin.x); x = MIN(x, _hostLabel.frame.origin.x); - x = MIN(x, _hostStatus.frame.origin.x); - x = MIN(x, _hostPairState.frame.origin.x); y = MIN(y, _hostButton.frame.origin.y); y = MIN(y, _hostLabel.frame.origin.y); - y = MIN(y, _hostStatus.frame.origin.y); - y = MIN(y, _hostPairState.frame.origin.y); width = MAX(width, _hostButton.frame.size.width); width = MAX(width, _hostLabel.frame.size.width); - width = MAX(width, _hostStatus.frame.size.width); - width = MAX(width, _hostPairState.frame.size.width); height = _hostButton.frame.size.height + _hostLabel.frame.size.height + - _hostStatus.frame.size.height + - _hostPairState.frame.size.height + LABEL_DY / 2; self.bounds = CGRectMake(x, y, width, height); @@ -141,40 +120,23 @@ static const int LABEL_DY = 20; - (void) updateContentsForHost:(TemporaryHost*)host { _hostLabel.text = _host.name; -#if !TARGET_OS_TV - _hostLabel.textColor = [UIColor whiteColor]; -#endif [_hostLabel sizeToFit]; - switch (host.pairState) { - case PairStateUnknown: - _hostPairState.text = @"Pair State Unknown"; - break; - case PairStateUnpaired: - _hostPairState.text = @"Not Paired"; - break; - case PairStatePaired: - _hostPairState.text = @"Paired"; - break; - } -#if !TARGET_OS_TV - _hostPairState.textColor = [UIColor whiteColor]; -#endif - [_hostPairState sizeToFit]; - if (host.online) { - _hostStatus.text = @"Online"; - _hostStatus.textColor = [UIColor greenColor]; - } else { - _hostStatus.text = @"Offline"; - _hostStatus.textColor = [UIColor grayColor]; + if (host.pairState == PairStateUnpaired) { + [_hostOverlay setImage:[UIImage imageNamed:@"LockedOverlayIcon"]]; + } + else { + [_hostOverlay setImage:nil]; + } + } + else { + // TODO: Use updating icon if we've not determined online state yet + [_hostOverlay setImage:[UIImage imageNamed:@"ErrorOverlayIcon"]]; } - [_hostStatus sizeToFit]; float x = _hostButton.frame.origin.x + _hostButton.frame.size.width / 2; _hostLabel.center = CGPointMake(x, _hostButton.frame.origin.y + _hostButton.frame.size.height + LABEL_DY); - _hostPairState.center = CGPointMake(x, _hostLabel.center.y + LABEL_DY); - _hostStatus.center = CGPointMake(x, _hostPairState.center.y + LABEL_DY); } - (void) startUpdateLoop {