Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
RSS Reader
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Johannes Grothe
RSS Reader
Commits
4be69b61
Commit
4be69b61
authored
4 years ago
by
Katharina J. Kühn
Browse files
Options
Downloads
Patches
Plain Diff
#4
finish sidemenu
parent
9bebba99
No related branches found
No related tags found
1 merge request
!3
Fb 4 side menu content
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
RSS_Reader/SideMenuView.swift
+89
-180
89 additions, 180 deletions
RSS_Reader/SideMenuView.swift
with
89 additions
and
180 deletions
RSS_Reader/SideMenuView.swift
+
89
−
180
View file @
4be69b61
//
// SideMenuView.swift
// RSS_Reader
//
// Created by Johannes Grothe on 31.10.20.
//
import
SwiftUI
/**
Content of the side Menu
*/
struct
MenuContent
:
View
{
@ObservedObject
var
model
:
Model
=
.
shared
init
()
{
UITableView
.
appearance
()
.
backgroundColor
=
.
clear
UITableViewCell
.
appearance
()
.
backgroundColor
=
.
clear
}
func
createMenuItem
()
->
[
MenuItem
]
{
var
menu_item_list
:
[
MenuItem
]
=
[]
for
feed_provider
in
model
.
feed_data
{
var
feed_provider_item
=
MenuItem
(
id
:
UUID
(),
name
:
feed_provider
.
name
,
image
:
feed_provider
.
icon
.
url
,
subMenuItems
:
[])
for
sub_feed
in
feed_provider
.
feeds
{
let
sub_feed_item
=
MenuItem
(
id
:
UUID
(),
name
:
sub_feed
.
name
,
image
:
nil
,
subMenuItems
:
nil
)
feed_provider_item
.
subMenuItems
?
.
append
(
sub_feed_item
)
}
menu_item_list
.
append
(
feed_provider_item
)
}
return
menu_item_list
}
var
body
:
some
View
{
VStack
{
Text
(
"Feeds"
)
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
.
padding
()
// .multilineTextAlignment(.leading)
Button
(
action
:
{
print
(
"Show All Feeds Button pressed"
)
})
{
// Label("All", systemImage: "newspaper")
HStack
{
Image
(
systemName
:
"newspaper"
)
.
font
(
.
title
)
.
padding
()
Text
(
"All"
)
.
font
(
.
title
)
Spacer
()
}
.
background
(
Color
(
"LightGreen"
))
.
frame
(
minWidth
:
0
,
maxWidth
:
.
infinity
)
}
Button
(
action
:
{
print
(
"Saved Button pressed"
)
})
{
HStack
{
Image
(
systemName
:
"tray.2"
)
.
font
(
.
title
)
.
padding
()
Text
(
"Saved"
)
.
font
(
.
title
)
Spacer
()
}
.
background
(
Color
(
"LightGreen"
))
.
frame
(
minWidth
:
0
,
maxWidth
:
.
infinity
)
}
List
(
createMenuItem
(),
children
:
\
.
subMenuItems
)
{
item
in
// List(sampleMenuItems, children: \.subMenuItems) { item in
// List {
HStack
{
if
item
.
image
!=
nil
{
Image
(
item
.
image
!
)
.
resizable
()
.
scaledToFit
()
.
frame
(
width
:
50
,
height
:
50
)
}
Text
(
item
.
name
)
.
font
(
.
system
(
.
title3
,
design
:
.
rounded
))
.
bold
()
Spacer
()
}
}
}
}
}
struct
MenuItem
:
Identifiable
{
var
id
=
UUID
()
var
name
:
String
var
image
:
String
?
var
subMenuItems
:
[
MenuItem
]?
}
// Main menu items
let
sampleMenuItems
=
[
MenuItem
(
name
:
"All"
,
image
:
"newspaper"
,
subMenuItems
:
nil
),
MenuItem
(
name
:
"Grinders"
,
image
:
"swift-mini"
,
subMenuItems
:
nil
),
MenuItem
(
name
:
"Other Equipment"
,
image
:
"espresso-ep"
,
subMenuItems
:
nil
)
]
// Main menu items
//let sampleMenuItems = [ MenuItem(name: "Espresso Machines", image: "linea-mini", subMenuItems: nil),
// MenuItem(name: "Grinders", image: "swift-mini", subMenuItems: nil),
// MenuItem(name: "Other Equipment", image: "espresso-ep", subMenuItems: nil)
// ]
/**
View for the side menu
*/
struct
SideMenuView
:
View
{
let
width
:
CGFloat
let
isOpen
:
Bool
let
menuClose
:
()
->
Void
var
body
:
some
View
{
ZStack
{
GeometryReader
{
_
in
EmptyView
()
}
.
background
(
Color
.
gray
.
opacity
(
0.1
))
.
opacity
(
self
.
isOpen
?
1.0
:
0.0
)
.
animation
(
Animation
.
easeIn
.
delay
(
0.25
))
.
onTapGesture
{
self
.
menuClose
()
}
HStack
{
MenuContent
()
.
frame
(
width
:
self
.
width
)
.
background
(
Color
.
white
)
.
offset
(
x
:
self
.
isOpen
?
0
:
-
self
.
width
)
.
animation
(
.
default
)
Spacer
()
}
}
}
}
struct
SideMenuView_Previews
:
PreviewProvider
{
static
var
previews
:
some
View
{
/*@START_MENU_TOKEN@*/
Text
(
"Hello, World!"
)
/*@END_MENU_TOKEN@*/
}
}
/**
###########
//
// SideMenuView.swift
// RSS_Reader
//
// Created by Johannes Grothe on 31.10.20.
//
import
SwiftUI
/**
...
...
@@ -180,23 +12,46 @@ struct SideMenuView_Previews: PreviewProvider {
UITableViewCell
.
appearance
()
.
backgroundColor
=
.
clear
}
func createMenuItem() -> [MenuItem] {
var menu_item_list: [MenuItem] = []
/**
creates a list with feed items
*/
func
createFeedItem
()
->
[
MenuItem
]
{
var
feed_item_list
:
[
MenuItem
]
=
[]
for
feed_provider
in
model
.
feed_data
{
var feed_provider_item = MenuItem(id: UUID(), name: feed_provider.name, image:
feed_provider.icon.ur
l, subMenuItems: [])
var
feed_provider_item
=
MenuItem
(
id
:
UUID
(),
name
:
feed_provider
.
name
,
image
:
ni
l
,
subMenuItems
:
[])
for
sub_feed
in
feed_provider
.
feeds
{
let
sub_feed_item
=
MenuItem
(
id
:
UUID
(),
name
:
sub_feed
.
name
,
image
:
nil
,
subMenuItems
:
nil
)
feed_provider_item
.
subMenuItems
?
.
append
(
sub_feed_item
)
}
menu
_item_list.append(feed_provider_item)
feed
_item_list
.
append
(
feed_provider_item
)
}
return
menu
_item_list
return
feed
_item_list
}
/**
creates a list with collection items
*/
func
createCollectionItem
()
->
[
MenuItem
]
{
var
collection_item_list
:
[
MenuItem
]
=
[]
for
feed_provider
in
model
.
collection_data
{
let
collection_provider_item
=
MenuItem
(
id
:
UUID
(),
name
:
feed_provider
.
name
,
image
:
nil
,
subMenuItems
:
[])
collection_item_list
.
append
(
collection_provider_item
)
}
return
collection_item_list
}
/**
the view
*/
var
body
:
some
View
{
/**
displayes the content of the sidemenu
*/
VStack
{
Text
(
"Feeds"
)
...
...
@@ -206,7 +61,10 @@ struct SideMenuView_Previews: PreviewProvider {
Button
(
action
:
{
print
(
"Show All Feeds Button pressed"
)
})
{
/**
displayes booksmark- and all-button
*/
HStack
{
Image
(
systemName
:
"newspaper"
)
.
font
(
.
system
(
size
:
20
))
...
...
@@ -238,13 +96,32 @@ struct SideMenuView_Previews: PreviewProvider {
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
.
padding
()
//ToDo: Add here collections logic
List
(
createCollectionItem
(),
children
:
\
.
subMenuItems
)
{
item
in
/**
displayes the collections
*/
HStack
{
Image
(
systemName
:
"questionmark.circle"
)
.
resizable
()
.
scaledToFit
()
.
frame
(
width
:
20
,
height
:
20
)
Text
(
item
.
name
)
.
font
(
.
system
(
size
:
20
))
//, design: .rounded))
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
}
}
Text
(
"Newspaper"
)
.
frame
(
maxWidth
:
.
infinity
,
alignment
:
.
leading
)
.
padding
()
List(createMenuItem(), children: \.subMenuItems) { item in
List
(
createFeedItem
(),
children
:
\
.
subMenuItems
)
{
item
in
/**
displayes the feed provider an his subfeeds
*/
HStack
{
if
item
.
image
!=
nil
&&
item
.
image
!=
""
{
...
...
@@ -269,10 +146,25 @@ struct SideMenuView_Previews: PreviewProvider {
}
}
/**
an menu item
*/
struct
MenuItem
:
Identifiable
{
/**
id of the menu item
*/
var
id
=
UUID
()
/**
name of the menu item
*/
var
name
:
String
/**
of the menu item
*/
var
image
:
String
?
/**
of the menu item
*/
var
subMenuItems
:
[
MenuItem
]?
}
...
...
@@ -280,10 +172,25 @@ struct SideMenuView_Previews: PreviewProvider {
View for the side menu
*/
struct
SideMenuView
:
View
{
let width: CGFloat
/**
the width of the sidemenu
*/
let
width
:
CGFloat
/**
contain informations about the visibil status of the sidemenu
*/
let
isOpen
:
Bool
/**
closed the sidemenu
*/
let
menuClose
:
()
->
Void
/**
contain also informations about the visibil status of the sidemenu
*/
@State
var
showMenu
:
Bool
=
true
var
body
:
some
View
{
...
...
@@ -298,6 +205,9 @@ struct SideMenuView_Previews: PreviewProvider {
}
}
/**
slides the sidemenu over the main view
*/
ZStack
{
GeometryReader
{
_
in
EmptyView
()
...
...
@@ -331,5 +241,4 @@ struct SideMenuView_Previews: PreviewProvider {
//}
*/
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment