|
@@ -27,74 +27,76 @@ import WidgetKit
|
|
|
struct NextcloudWidgetView: View {
|
|
|
var entry: NextcloudDataEntry
|
|
|
var body: some View {
|
|
|
- ZStack(alignment: .topLeading) {
|
|
|
- HStack(spacing: 5) {
|
|
|
- Image("nextcloud")
|
|
|
- .resizable()
|
|
|
- .scaledToFit()
|
|
|
- .frame(width: 18, height: 18)
|
|
|
- .cornerRadius(4)
|
|
|
- Text(NCBrandOptions.shared.brand + "dd")
|
|
|
- .font(.system(size: 12))
|
|
|
- .textCase(.uppercase)
|
|
|
- }
|
|
|
- .padding(.leading, 10)
|
|
|
- .padding(.top, 10)
|
|
|
- VStack(alignment: .leading) {
|
|
|
- VStack(spacing: 6) {
|
|
|
- ForEach(entry.recentDatas, id: \.id) { element in
|
|
|
- Link(destination: element.url) {
|
|
|
- HStack {
|
|
|
+ GeometryReader { geo in
|
|
|
+ ZStack(alignment: .topLeading) {
|
|
|
+ HStack(spacing: 5) {
|
|
|
+ Image("nextcloud")
|
|
|
+ .resizable()
|
|
|
+ .scaledToFit()
|
|
|
+ .frame(width: 18, height: 18)
|
|
|
+ .cornerRadius(4)
|
|
|
+ Text(NCBrandOptions.shared.brand + "dde")
|
|
|
+ .font(.system(size: 12))
|
|
|
+ .textCase(.uppercase)
|
|
|
+ }
|
|
|
+ .padding(.leading, 10)
|
|
|
+ .padding(.top, 10)
|
|
|
+ VStack(alignment: .leading) {
|
|
|
+ VStack(spacing: 6) {
|
|
|
+ ForEach(entry.recentDatas, id: \.id) { element in
|
|
|
+ Link(destination: element.url) {
|
|
|
+ HStack {
|
|
|
+ Image(uiImage: element.image)
|
|
|
+ .resizable()
|
|
|
+ .scaledToFill()
|
|
|
+ .frame(width: 30, height: 30)
|
|
|
+ .clipped()
|
|
|
+ .cornerRadius(4)
|
|
|
+ VStack(alignment: .leading) {
|
|
|
+ Text(element.title)
|
|
|
+ .font(.system(size: 12))
|
|
|
+ .fontWeight(.bold)
|
|
|
+ Text(element.subTitle)
|
|
|
+ .font(.system(size: CGFloat(10)))
|
|
|
+ .foregroundColor(Color(white: 0.4745))
|
|
|
+ Divider()
|
|
|
+ }
|
|
|
+ Spacer()
|
|
|
+ }
|
|
|
+ .padding(.leading, 10)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Spacer()
|
|
|
+ .frame(width: .none, height: 15.0)
|
|
|
+ Text("File in upload ...")
|
|
|
+ .font(.system(size: 12))
|
|
|
+ .frame(maxWidth: .infinity, alignment: .center)
|
|
|
+ HStack(spacing: 10) {
|
|
|
+ ForEach(entry.uploadDatas, id: \.id) { element in
|
|
|
+ VStack {
|
|
|
Image(uiImage: element.image)
|
|
|
.resizable()
|
|
|
.scaledToFill()
|
|
|
.frame(width: 30, height: 30)
|
|
|
.clipped()
|
|
|
.cornerRadius(4)
|
|
|
- VStack(alignment: .leading) {
|
|
|
- Text(element.title)
|
|
|
- .font(.system(size: 12))
|
|
|
- .fontWeight(.bold)
|
|
|
- Text(element.subTitle)
|
|
|
- .font(.system(size: CGFloat(10)))
|
|
|
- .foregroundColor(Color(white: 0.4745))
|
|
|
- Divider()
|
|
|
- }
|
|
|
- Spacer()
|
|
|
+ Text("\(element.task)")
|
|
|
+ .font(.system(size: 9))
|
|
|
}
|
|
|
- .padding(.leading, 10)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- Spacer()
|
|
|
- .frame(width: .none, height: 15.0)
|
|
|
- Text("File in upload ...")
|
|
|
- .font(.system(size: 12))
|
|
|
- .frame(maxWidth: .infinity, alignment: .center)
|
|
|
- HStack(spacing: 10) {
|
|
|
- ForEach(entry.uploadDatas, id: \.id) { element in
|
|
|
- VStack {
|
|
|
- Image(uiImage: element.image)
|
|
|
- .resizable()
|
|
|
- .scaledToFill()
|
|
|
- .frame(width: 30, height: 30)
|
|
|
- .clipped()
|
|
|
- .cornerRadius(4)
|
|
|
- Text("\(element.task)")
|
|
|
- .font(.system(size: 9))
|
|
|
}
|
|
|
}
|
|
|
+ .frame(width: geo.size.width, alignment: .center)
|
|
|
}
|
|
|
- .padding(.trailing, 15)
|
|
|
- }
|
|
|
- .padding(.top, 45)
|
|
|
- .redacted(reason: entry.isPlaceholder ? .placeholder : [])
|
|
|
+ .padding(.top, 45)
|
|
|
+ .redacted(reason: entry.isPlaceholder ? .placeholder : [])
|
|
|
|
|
|
- Text(entry.footerText)
|
|
|
- .font(.caption2)
|
|
|
- .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottomTrailing)
|
|
|
- .padding(.trailing, 10.0)
|
|
|
- .padding(.bottom, 5.0)
|
|
|
+ Text(entry.footerText)
|
|
|
+ .font(.caption2)
|
|
|
+ .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .bottomTrailing)
|
|
|
+ .padding(.trailing, 10.0)
|
|
|
+ .padding(.bottom, 5.0)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|