浏览代码

Always show the full-screen paywall on Premium and refresh branding.

Replace the Premium tab feature grid with the paywall overlay, use the custom AppLogo in the sidebar, and add updated app icon assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 1 月之前
父节点
当前提交
2dba8704ba

+ 10 - 0
smart_printer/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,51 +1,61 @@
 {
   "images" : [
     {
+      "filename" : "icon_16x16.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "16x16"
     },
     {
+      "filename" : "icon_16x16@2x.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "16x16"
     },
     {
+      "filename" : "icon_32x32.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "32x32"
     },
     {
+      "filename" : "icon_32x32@2x.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "32x32"
     },
     {
+      "filename" : "icon_128x128.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "128x128"
     },
     {
+      "filename" : "icon_128x128@2x.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "128x128"
     },
     {
+      "filename" : "icon_256x256.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "256x256"
     },
     {
+      "filename" : "icon_256x256@2x.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "256x256"
     },
     {
+      "filename" : "icon_512x512.png",
       "idiom" : "mac",
       "scale" : "1x",
       "size" : "512x512"
     },
     {
+      "filename" : "icon_512x512@2x.png",
       "idiom" : "mac",
       "scale" : "2x",
       "size" : "512x512"

二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_128x128.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_16x16.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_256x256.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_32x32.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_512x512.png


二进制
smart_printer/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png


二进制
smart_printer/Assets.xcassets/AppLogo.imageset/AppLogo.png


二进制
smart_printer/Assets.xcassets/AppLogo.imageset/AppLogo@2x.png


二进制
smart_printer/Assets.xcassets/AppLogo.imageset/AppLogo@3x.png


+ 23 - 0
smart_printer/Assets.xcassets/AppLogo.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "AppLogo.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "AppLogo@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "AppLogo@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 6 - 9
smart_printer/SidebarView.swift

@@ -42,11 +42,8 @@ final class SidebarView: NSView, AppearanceRefreshable {
 
         let logoIcon = NSImageView()
         logoIcon.translatesAutoresizingMaskIntoConstraints = false
-        if let image = NSImage(systemSymbolName: "printer.fill", accessibilityDescription: "Smart Printer") {
-            let config = NSImage.SymbolConfiguration(pointSize: 28, weight: .medium)
-            logoIcon.image = image.withSymbolConfiguration(config)
-        }
-        logoIcon.contentTintColor = AppTheme.purple
+        logoIcon.image = NSImage(named: "AppLogo")
+        logoIcon.imageScaling = .scaleProportionallyUpOrDown
 
         appNameLabel = NSTextField.themeLabel("Smart Printer", style: .primary, font: AppTheme.semiboldFont(size: 15))
         appNameLabel.alignment = .center
@@ -102,13 +99,13 @@ final class SidebarView: NSView, AppearanceRefreshable {
 
             logoContainer.topAnchor.constraint(equalTo: topAnchor, constant: 52),
             logoContainer.centerXAnchor.constraint(equalTo: centerXAnchor),
-            logoContainer.widthAnchor.constraint(equalToConstant: 48),
-            logoContainer.heightAnchor.constraint(equalToConstant: 48),
+            logoContainer.widthAnchor.constraint(equalToConstant: 56),
+            logoContainer.heightAnchor.constraint(equalToConstant: 56),
 
             logoIcon.centerXAnchor.constraint(equalTo: logoContainer.centerXAnchor),
             logoIcon.centerYAnchor.constraint(equalTo: logoContainer.centerYAnchor),
-            logoIcon.widthAnchor.constraint(equalToConstant: 36),
-            logoIcon.heightAnchor.constraint(equalToConstant: 36),
+            logoIcon.widthAnchor.constraint(equalToConstant: 48),
+            logoIcon.heightAnchor.constraint(equalToConstant: 48),
 
             appNameLabel.topAnchor.constraint(equalTo: logoContainer.bottomAnchor, constant: 8),
             appNameLabel.centerXAnchor.constraint(equalTo: centerXAnchor),

+ 7 - 16
smart_printer/ViewController.swift

@@ -427,10 +427,10 @@ class ViewController: NSViewController {
         dismissFeatureOverlays()
         contentContainer.isHidden = false
 
-        homeContentView.isHidden = destination != .home
+        homeContentView.isHidden = destination != .home && destination != .scanAndHome
         scanContentView.isHidden = destination != .scan
         printContentView.isHidden = destination != .print
-        scanAndHomeContentView.isHidden = destination != .scanAndHome
+        scanAndHomeContentView.isHidden = true
         settingsContentView.isHidden = destination != .settings
 
         let isSettings = destination == .settings
@@ -439,11 +439,7 @@ class ViewController: NSViewController {
         contentTopBelowWindow.isActive = isSettings
 
         if destination == .scanAndHome {
-            if StoreManager.shared.isPremium {
-                dismissPaywall()
-            } else {
-                presentPaywall(returnToHomeOnDismiss: true)
-            }
+            presentPaywall(returnToHomeOnDismiss: true)
         } else {
             dismissPaywall()
         }
@@ -543,15 +539,10 @@ class ViewController: NSViewController {
     }
 
     private func makeScanAndHomeContentView() -> NSView {
-        makeDestinationScrollView(
-            title: "Premium",
-            features: featureCards(
-                FeatureCardData(title: "From Photos", subtitle: "Take a photo from gallery", iconKind: .scanFile),
-                FeatureCardData(title: "Scan File", subtitle: "Scan any document", iconKind: .scanFile),
-                FeatureCardData(title: "Print Text", subtitle: "Type text and print", iconKind: .printText),
-                FeatureCardData(title: "Print Contacts", subtitle: "Print your contacts", iconKind: .printContacts)
-            )
-        )
+        let container = NSView()
+        container.translatesAutoresizingMaskIntoConstraints = false
+        container.isHidden = true
+        return container
     }
 
     private func makeDestinationScrollView(title: String, features: [FeatureCardData]) -> NSView {