From 300f6f50cfd32548926fec27607407ea390455c1 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Tue, 7 Dec 2021 15:25:05 +1100 Subject: [PATCH 1/2] add size label for file type attachment --- .../Content Views/DocumentView.swift | 16 +++++++++++++--- .../Session/File.imageset/doc.pdf | Bin 4310 -> 4296 bytes SignalUtilitiesKit/Utilities/OWSFormat.m | 8 ++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Session/Conversations/Message Cells/Content Views/DocumentView.swift b/Session/Conversations/Message Cells/Content Views/DocumentView.swift index 372befc8c..5f0717ae6 100644 --- a/Session/Conversations/Message Cells/Content Views/DocumentView.swift +++ b/Session/Conversations/Message Cells/Content Views/DocumentView.swift @@ -4,7 +4,7 @@ final class DocumentView : UIView { private let textColor: UIColor // MARK: Settings - private static let iconImageViewSize: CGSize = CGSize(width: 26, height: 40) + private static let iconImageViewSize: CGSize = CGSize(width: 31, height: 40) // MARK: Lifecycle init(viewItem: ConversationViewItem, textColor: UIColor) { @@ -36,11 +36,21 @@ final class DocumentView : UIView { titleLabel.lineBreakMode = .byTruncatingTail titleLabel.text = attachment.sourceFilename ?? "File" titleLabel.textColor = textColor - titleLabel.font = .systemFont(ofSize: Values.mediumFontSize, weight: .light) + titleLabel.font = .systemFont(ofSize: Values.smallFontSize, weight: .light) + // Size label + let sizeLabel = UILabel() + sizeLabel.lineBreakMode = .byTruncatingTail + sizeLabel.text = OWSFormat.formatFileSize(UInt(attachment.byteCount)) + sizeLabel.textColor = textColor + sizeLabel.font = .systemFont(ofSize: Values.verySmallFontSize) + // Label stack view + let labelStackView = UIStackView(arrangedSubviews: [ titleLabel, sizeLabel ]) + labelStackView.axis = .vertical // Stack view - let stackView = UIStackView(arrangedSubviews: [ imageView, titleLabel ]) + let stackView = UIStackView(arrangedSubviews: [ imageView, labelStackView ]) stackView.axis = .horizontal stackView.spacing = Values.verySmallSpacing + stackView.alignment = .center addSubview(stackView) stackView.pin(to: self) } diff --git a/Session/Meta/Images.xcassets/Session/File.imageset/doc.pdf b/Session/Meta/Images.xcassets/Session/File.imageset/doc.pdf index 4338f23a167302e52ad9bce56015c86851f4cd0b..50b0bb95e305d5ec08a8abfe36b2e38bed9550be 100644 GIT binary patch delta 974 zcmcbnctUZ4eZ9G*f}I^#aY<2XVlGz&V`_+ZU$7(3o&CXISTk= zoa!jo@+-W*v`af8Wm0CU^2E%KK3i|N?ykAiS};ZOp-=CPO*szJAN89Wi-u12>GqK9 zv3Yjp0sFBGV?IZ@iL65NR%#b9Oe|UNW^%Dg*==K)-n)Vi%*96;*e{lBzjAI%J8#0$ zTXowSkFPy0+01yR$gRn*{!5M7Y6JbMPr}a~C8lXF48P+0vMug_RF>QBnW=q?0@ihX ze!#N6@jFw^Gp=J-{GMET@|7#=p~3kZGb6huO1{c!WMVCtdZer&WE+FY$F&P?n?;`G zW>gjYckjghXVpFLZ5yK0X1vtd$oH?ZVdu0PypA49nNQU!U8<8db-tC?V|iI0byhO< ztx1L8k*l0%_Oi}+__UHSp)|NP;&0Y*p0XXS2Br}YT9T}`pFVd)LM8l1;bwKYm1XmG zA9Kpx8-15;%@w80X~*A*9$N5A_~4ZcBdtzp=KrmZA^e-xy*!do$#ZHUqi-r_MnevF z_obamlD8RB4$AMHu|eyhc$E9fHxV8ReD%#qbBmR>z{ST zKK|VhYkX|y3fF)qQywxj?Oqshpt7@7b`8gsQtw>`G0XY=9HfI*d@ecm_{V+S^&bRY zUH|sfj{VV=^HN_5@>eIhnqBke{{Dt}RDYNeL?x`ks5=;#@FqH z>x<=LEl*zmxcYkPABp+<_gt*l)4SC^zyBkrMap5(Mz8aiPgmVLQO*(a{z7BHF{{SE zRTa+nk8l6@iCu+NW%Fi6<_>OFBNGK5d$7MrMi9#$S ZuO=3iR1~GAaT!~h8F8tqy863u0RR?;l%N0r delta 988 zcmX@1cujGFeZ8fzf}I^#aY<2XVlGz&V`_+J-)#q;J+DRoHkRzzTzQWB*%WpO4z&hh zg&F^uHBU`?Rulo8VP{SaFLECFO8UtGn;vq#Fjz?6+ijx=vT=85_Agj}cYsRp|;>cFa={&rm-z*WEa4 z?G2Z-R!=il9&bT2mYBT~oF6|>4Ypj6Q>G|9DkX-enD zw5TvAvANa-)p^fb-d(8o@iw|9x%DH@8iAi3j?t|w3NC3jv$o%Q^-rSph~omsW+R># zH<+|4nr^Ww+)$R!?4OZs_&r^!?C8w59SS)Tr{D1wt27H6i!?m?(6}>WwWV{G>-Viq z@-iU_cI$;4mjC?s{c)M}dx1k+uHV`$n&Q7BWW%nKHIELl)VHZHH~!f*tNvn8#+_&0 z%BilV^CnatEaOn0`b~a~@69Gh?tX$&ve|a;t}jdayzOdB$TjvP;X2b5zL#A$eCKXl za&ujeIM1ayH#8GZmnQiyEPiw&Y_E>80juN3;#A#QpBp<~%Xh#1tha*Y!3SslS8Me1 zUVQ#}-L$-7<@s5K948VkMoG)r917m{`|AM(Ke3gI=Omk~{nH{cr6+cs@~Z1ACjOf- zG0{DL$E!74_e;%>dZbt>fB*RVeRDq+*Zlp~`2AV(g@3I5_qY2$eiOgrr){zMGgAjQtD&WWk;&u+zWo};hK2^lQ3eL; zK%}Xl@0*|El30?epy6U=WME`yXk=h+09G&t!d$@s1QhZVxWEhpV>1h*$y@o= zg3Pc;nP7++SQ?vR7-4Q^j3H)WXf#<@z$QM)EIB1H)!ZW4EG^C0$kNm>*}&4$+%m<& o($L5vF)7)O%Z8v5g;+?=O)M&@C`wJ^GPX1~<5E?1^>^a}09Lk;@&Et; diff --git a/SignalUtilitiesKit/Utilities/OWSFormat.m b/SignalUtilitiesKit/Utilities/OWSFormat.m index effb40f4e..db48cb8c7 100644 --- a/SignalUtilitiesKit/Utilities/OWSFormat.m +++ b/SignalUtilitiesKit/Utilities/OWSFormat.m @@ -31,11 +31,11 @@ NS_ASSUME_NONNULL_BEGIN const unsigned long kOneKilobyte = 1024; const unsigned long kOneMegabyte = kOneKilobyte * kOneKilobyte; - if (fileSize > kOneMegabyte * 10) { - return [[formatter stringFromNumber:@((int)round(fileSize / (CGFloat)kOneMegabyte))] + if (fileSize > kOneMegabyte) { + return [[formatter stringFromNumber:@((double)lround(fileSize * 100 / (CGFloat)kOneMegabyte) / 100)] stringByAppendingString:@" MB"]; - } else if (fileSize > kOneKilobyte * 10) { - return [[formatter stringFromNumber:@((int)round(fileSize / (CGFloat)kOneKilobyte))] + } else if (fileSize > kOneKilobyte) { + return [[formatter stringFromNumber:@((double)lround(fileSize * 100 / (CGFloat)kOneKilobyte) / 100)] stringByAppendingString:@" KB"]; } else { return [NSString stringWithFormat:@"%lu Bytes", fileSize]; From 6225c12ced490b89685b952e3e7175f6e98f6c03 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Tue, 7 Dec 2021 15:53:58 +1100 Subject: [PATCH 2/2] minor improvement on pre-sending file page icon --- .../Session/FileLarge.imageset/Contents.json | 12 ++++++++++++ .../Session/FileLarge.imageset/doc_large.pdf | Bin 0 -> 4310 bytes .../MediaMessageView.swift | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Session/Meta/Images.xcassets/Session/FileLarge.imageset/Contents.json create mode 100644 Session/Meta/Images.xcassets/Session/FileLarge.imageset/doc_large.pdf diff --git a/Session/Meta/Images.xcassets/Session/FileLarge.imageset/Contents.json b/Session/Meta/Images.xcassets/Session/FileLarge.imageset/Contents.json new file mode 100644 index 000000000..667dcde62 --- /dev/null +++ b/Session/Meta/Images.xcassets/Session/FileLarge.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "doc_large.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Session/Meta/Images.xcassets/Session/FileLarge.imageset/doc_large.pdf b/Session/Meta/Images.xcassets/Session/FileLarge.imageset/doc_large.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d9dd80473784a71539430605998372fd618df65c GIT binary patch literal 4310 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 uApwPoi&@))GT{H;<