From d3cebfaccba5e48bb07e9718cd5eeb47761e22bd Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 19 Aug 2020 20:00:34 -0500 Subject: [PATCH] Turn the star color to white if the article is selected. Issue #2364 --- Mac/AppAssets.swift | 17 ++++++++--------- .../Timeline/Cell/TimelineTableCellView.swift | 9 ++++++++- .../Timeline/TimelineViewController.swift | 2 +- Mac/Resources/Assets.xcassets/Contents.json | 6 +++--- .../Contents.json | 0 .../timelineStar.imageset/Contents.json | 14 +++++++++----- .../timelineStar.imageset/star.pdf | Bin 0 -> 3794 bytes .../timelineStar.imageset/star@2x.pdf | Bin 0 -> 3791 bytes .../timelineStar.imageset/timelineStar.png | Bin 875 -> 0 bytes .../timelineStar.imageset/timelineStar@2x.png | Bin 1048 -> 0 bytes 10 files changed, 29 insertions(+), 19 deletions(-) rename Mac/Resources/Assets.xcassets/{swipeMarkUnstarredColor.colorset => starColor.colorset}/Contents.json (100%) create mode 100644 Mac/Resources/Assets.xcassets/timelineStar.imageset/star.pdf create mode 100644 Mac/Resources/Assets.xcassets/timelineStar.imageset/star@2x.pdf delete mode 100644 Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar.png delete mode 100644 Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png diff --git a/Mac/AppAssets.swift b/Mac/AppAssets.swift index b9f702e03..f1273b43e 100644 --- a/Mac/AppAssets.swift +++ b/Mac/AppAssets.swift @@ -10,11 +10,6 @@ import AppKit import RSCore import Account -extension NSImage.Name { - static let star = NSImage.Name("star") - static let timelineStar = NSImage.Name("timelineStar") -} - struct AppAssets { static var accountCloudKit: RSImage! = { @@ -133,8 +128,12 @@ struct AppAssets { return IconImage(RSImage(named: NSImage.smartBadgeTemplateName)!) }() - static var timelineStar: RSImage! = { - return RSImage(named: .timelineStar) + static var timelineStarSelected: RSImage! = { + return RSImage(named: "timelineStar")?.tinted(with: .white) + }() + + static var timelineStarUnselected: RSImage! = { + return RSImage(named: "timelineStar")?.tinted(with: starColor) }() static var todayFeedImage: IconImage = { @@ -161,8 +160,8 @@ struct AppAssets { return RSImage(named: "swipeMarkUnstarred")! }() - static var swipeMarkUnstarredColor: NSColor = { - return NSColor(named: NSColor.Name("swipeMarkUnstarredColor"))! + static var starColor: NSColor = { + return NSColor(named: NSColor.Name("starColor"))! }() static func image(for accountType: AccountType) -> NSImage? { diff --git a/Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift b/Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift index 9c5be0c19..63e36730c 100644 --- a/Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift +++ b/Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift @@ -20,7 +20,7 @@ class TimelineTableCellView: NSTableCellView { private lazy var iconView = IconView() - private let starView = TimelineTableCellView.imageView(with: AppAssets.timelineStar, scaling: .scaleNone) + private var starView = TimelineTableCellView.imageView(with: AppAssets.timelineStarUnselected, scaling: .scaleNone) private let separatorView = TimelineTableCellView.separatorView() private lazy var textFields = { @@ -52,12 +52,14 @@ class TimelineTableCellView: NSTableCellView { var isEmphasized: Bool = false { didSet { unreadIndicatorView.isEmphasized = isEmphasized + updateStarView() } } var isSelected: Bool = false { didSet { unreadIndicatorView.isSelected = isSelected + updateStarView() } } @@ -279,6 +281,11 @@ private extension TimelineTableCellView { } func updateStarView() { + if isSelected && isEmphasized { + starView.image = AppAssets.timelineStarSelected + } else { + starView.image = AppAssets.timelineStarUnselected + } showOrHideView(starView, !cellData.starred) } diff --git a/Mac/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift index 4f9110c3f..a73a34495 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController.swift @@ -910,7 +910,7 @@ extension TimelineViewController: NSTableViewDelegate { self.toggleArticleStarred(article); tableView.rowActionsVisible = false } - action.backgroundColor = AppAssets.swipeMarkUnstarredColor + action.backgroundColor = AppAssets.starColor action.image = article.status.starred ? AppAssets.swipeMarkUnstarredImage : AppAssets.swipeMarkStarredImage return [action] diff --git a/Mac/Resources/Assets.xcassets/Contents.json b/Mac/Resources/Assets.xcassets/Contents.json index da4a164c9..73c00596a 100644 --- a/Mac/Resources/Assets.xcassets/Contents.json +++ b/Mac/Resources/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Mac/Resources/Assets.xcassets/swipeMarkUnstarredColor.colorset/Contents.json b/Mac/Resources/Assets.xcassets/starColor.colorset/Contents.json similarity index 100% rename from Mac/Resources/Assets.xcassets/swipeMarkUnstarredColor.colorset/Contents.json rename to Mac/Resources/Assets.xcassets/starColor.colorset/Contents.json diff --git a/Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json b/Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json index 838695523..bbb83a141 100644 --- a/Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json +++ b/Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json @@ -1,13 +1,13 @@ { "images" : [ { + "filename" : "star.pdf", "idiom" : "universal", - "filename" : "timelineStar.png", "scale" : "1x" }, { + "filename" : "star@2x.pdf", "idiom" : "universal", - "filename" : "timelineStar@2x.png", "scale" : "2x" }, { @@ -16,7 +16,11 @@ } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" } -} \ No newline at end of file +} diff --git a/Mac/Resources/Assets.xcassets/timelineStar.imageset/star.pdf b/Mac/Resources/Assets.xcassets/timelineStar.imageset/star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..38512296f5357a6d9c94aae05bc6db07c0d6a862 GIT binary patch literal 3794 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 literal 0 HcmV?d00001 diff --git a/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar.png b/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar.png deleted file mode 100644 index e74ff38f6fc76506c51646f61a7b95178d3c4674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2?f>5jgR3=A9lx&I`x0{NT;9+AZi z3}UJv%;*`U@_~VY$tW`GK4GQ<#=IWDQi z$wiq3C7Jno3LtY6lk!VTY?YKi7Qq43ow)^Yi}H%0z5@DBzap_f-%!s$ADgC<%ru1a zP;`N0Alksbf>>q)3>quvqSVBa{GyQj{2V*S^i1_EZ1m9;AslN1 zGS$jCKewPLwHTzu&eTR9LkwMgWKe2xeoiSU5bO+1OrScDMbULcVAX*v3e{nw4+>SJ zP=-VySQHqCc3eQ;z|w;q7so1lO<)o^@9E+gQo)$CK#CzmkAHz=Yof^U^CD@tPaNAM zHht$B!`;);QqFA4y`6b;tA+A8E9=d6cYa@ae=ofLox-fy77t|Z^tel(cxH9NbcsZN z*v8YM0sj?~584Rr;Hca2P|fC_{j9@tF0@p=5I(56hLcy~kqR(bziAh4pLkl(hC_G9 zBaKZ7nK#;lzBP-b9J;kZ`t=(o-Hh!rTa+iPtw@nx@qh2Xmhtf zPI}^x!f86ooy?S9)`#>fWu{x&)Xxo9jCdZr#@Wj58S5sl%cg9S o-_zC4Wt~$( F695>gB)k9s diff --git a/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png b/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png deleted file mode 100644 index 31a6f6574da3690264581c4b292a24d5b350e4a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Ea{HEjtmSN`?>!lvI6;>1s;*b z3=CqbAk63)r1F7*fypQ{B%&n3*T*V3KUXg?B|j-uuOhbqsG5Pnrosxy%uOvxRH(?! z$t$+1uvG%9umZ9{!um=IU?nBlwn`Dc0SeCfMX3s=dM0`XN_Jcd3JNwwDQQ+gE^bim zK%T8qMoCG5mA-y?dAVM>v0i>ry1t>MrKP@sk-m|UE>MMTab;dfVufyAu`tKo-FP)SbBnaEtPap}qq8Pro9uK;KZ$Kp&f?lFT%O z^H6kwWFXqWzJge00}L7~=c3falKi5O{QMj{$K?E?JcY8P4rClENt}A6(JmJ z12WahIX}0cD76@*#m>}5A43dXePmE-aehuIC=l!nO-!IVkVVmTL}1l{EDF_OqYnyI zq)>)LAy^a`hjv^*-@wv?9T&$cdrbxg#u`r-$B+ufvzM8BVge;t9|SAA_3p?!V^+4- zLi4a$nNi^5E4^9L*|)ce7U#CUfAfERdBuA^|4+Q@&ONX_k`mFbyT(OWJ7D?x!{H%q zpLN)$?&C|pD1Oj2{!s9w#@wPG65ftW*O%&iaaG-+^x~P z@kN@`bEoi-2I({Gd$kUf&S=@WuC|jp+y!!Hj^#dUNSxXoeZk|VZCaw2!I5QO za@O?m$Rx8#u{bYjoN4ju_cEWO-VZs}O;(PRx_idw7^~p{l?%rn&HKE8^YO-h&KE)^ zSC&>MNZTE8`{zD?!9u&c$?;#r(|@vW`6QkGrn~MDXMN+JoiC>U-aNZ?0QbC%8ThcSnh85$n3W^syOO6%iSGky6qOZ6->Qe z(>=GKyYHj$y&Y@UnrT<|-mT$x59sN5%^?tbn17d;NZ-7~Pn&b69~G@>&)Ii0QNr!| isd+MYSEnmP&1AlML!fu-{1SaoUiEbKb6Mw<&;$Uv6@iZc