mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 21:36:17 +00:00
add listrow for reusability added stats like total, downloaded emojis added letterstats to count how many emojis there are starting with each letter fix lag when opening settigns cos we were initing a new hoarder in trietestingview fix downloaded view using screen width instead of window width now its good on mac and ipad split screen added designed for ipad support
70 lines
1.8 KiB
Swift
70 lines
1.8 KiB
Swift
//
|
|
// DownloadedView.swift
|
|
// StickerSlack
|
|
//
|
|
// Created by neon443 on 10/11/2025.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct DownloadedView: View {
|
|
@ObservedObject var hoarder: EmojiHoarder
|
|
|
|
@Environment(\.colorScheme) var colorScheme
|
|
var isDark: Bool { colorScheme == .dark }
|
|
|
|
var minColWidth: CGFloat { 75 }
|
|
var spacing: CGFloat { 5 }
|
|
var col: GridItem {
|
|
GridItem(
|
|
.flexible(minimum: minColWidth, maximum: 100),
|
|
spacing: spacing,
|
|
alignment: .center
|
|
)
|
|
}
|
|
|
|
var body: some View {
|
|
GeometryReader { geo in
|
|
ScrollView {
|
|
let columns: Int = max(1, Int((geo.size.width - 2*spacing) / (minColWidth + spacing)))
|
|
let layout = Array(repeating: col, count: columns)
|
|
LazyVGrid(columns: layout, spacing: spacing) {
|
|
ForEach(hoarder.downloadedEmojisArr, id: \.self) { name in
|
|
if let emoji = hoarder.trie.dict[name] {
|
|
ZStack {
|
|
Rectangle()
|
|
.foregroundStyle(isDark ? .black : .white)
|
|
EmojiPreview(hoarder: hoarder, emoji: emoji)
|
|
RoundedRectangle(cornerRadius: 15)
|
|
.stroke(.gray, lineWidth: 1)
|
|
}
|
|
.aspectRatio(1, contentMode: .fit)
|
|
.clipShape(RoundedRectangle(cornerRadius: 15))
|
|
.contextMenu {
|
|
Text(emoji.name)
|
|
Button("Copy Name", systemImage: "doc.on.clipboard") {
|
|
UIPasteboard.general.string = emoji.name
|
|
}
|
|
Button("Copy Image", systemImage: "photo.fill.on.rectangle.fill") {
|
|
UIPasteboard.general.image = emoji.image
|
|
}
|
|
Divider()
|
|
ShareLink("Share", item: emoji.remoteImageURL, subject: nil, message: nil)
|
|
Divider()
|
|
Button("Delete", systemImage: "trash.fill", role: .destructive) {
|
|
hoarder.delete(emoji: emoji)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.padding(.horizontal, spacing)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
DownloadedView(hoarder: EmojiHoarder(localOnly: true))
|
|
}
|