Watson/main.go
2023-09-12 16:58:25 +02:00

363 lines
6.7 KiB
Go

package main
import (
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"github.com/hugolgst/rich-go/client"
"fyne.io/fyne/v2/layout"
)
func main() {
a := app.New()
w := a.NewWindow("Watson")
//Reading things
BookToRead := widget.NewEntry()
BookToRead.PlaceHolder = "The Book Your are Reading"
BookGenre := widget.NewEntry()
BookGenre.PlaceHolder = "The Genre of your Book"
LinkToBook := widget.NewEntry()
LinkToBook.PlaceHolder = "The Link To The Book"
//Talking things
TalkToWho := widget.NewEntry()
TalkToWho.PlaceHolder = "Who Are you talking to?"
WhereTalk := widget.NewEntry()
WhereTalk.PlaceHolder = "Link to a Discord Server you are Talking on"
//Browsing things
Site := widget.NewEntry()
Site.PlaceHolder = "Name of the Site You are Browsing"
SiteURL := widget.NewEntry()
SiteURL.PlaceHolder = "The Link To The Site"
//Streaming things
TitleOfStream := widget.NewEntry()
TitleOfStream.PlaceHolder = "Title of your Stream"
StreamLink := widget.NewEntry()
StreamLink.PlaceHolder = "Link To your Stream"
//Working Tthings
TitleOfProject := widget.NewEntry()
TitleOfProject.PlaceHolder = "Project Name"
ProjectLink := widget.NewEntry()
ProjectLink.PlaceHolder = "Link to Project"
BrowsingPage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
Site,
SiteURL,
layout.NewSpacer(),
)
TalkingPage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
TalkToWho,
WhereTalk,
layout.NewSpacer(),
)
ReadingPage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
layout.NewSpacer(),
BookToRead,
BookGenre,
LinkToBook,
layout.NewSpacer(),
)
StramingPage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
TitleOfStream,
StreamLink,
layout.NewSpacer(),
)
WorkingPage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
TitleOfProject,
ProjectLink,
layout.NewSpacer(),
)
HomePage := container.New(
layout.NewVBoxLayout(),
layout.NewSpacer(),
widget.NewSelect([]string{"Talking", "Reading", "Streaming", "Browsing", "Working"}, func(value string) {
switch value {
case "Reading":
StartReading(BookToRead.Text, BookGenre.Text, LinkToBook.Text)
case "Talking":
StartTalking(TalkToWho.Text, WhereTalk.Text)
case "Browsing":
StartBrowsing(Site.Text, SiteURL.Text)
case "Streaming":
StartStreaming(TitleOfStream.Text, StreamLink.Text)
case "Working":
StartWorking(TitleOfProject.Text, ProjectLink.Text)
}
}),
layout.NewSpacer(),
)
tabs := container.NewAppTabs(
container.NewTabItem("Home", HomePage),
container.NewTabItem("Reading", ReadingPage),
container.NewTabItem("Talking", TalkingPage),
container.NewTabItem("Browsing", BrowsingPage),
container.NewTabItem("Streaming", StramingPage),
container.NewTabItem("Working", WorkingPage),
)
tabs.SetTabLocation(container.TabLocationLeading)
w.SetContent(tabs)
w.Resize(fyne.NewSize(1920/2, 1080/2))
w.ShowAndRun()
}
func StartReading(NameOfBook string, BookGenre string, LinkToBook string) {
if LinkToBook == "" {
err := client.Login("1151169281468416092")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: NameOfBook,
LargeImage: "open-book",
LargeText: "Genre: " + BookGenre,
Timestamps: &client.Timestamps{
Start: &now,
},
})
} else {
err := client.Login("1151169281468416092")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: NameOfBook,
LargeImage: "open-book",
LargeText: "Genre: " + BookGenre,
Timestamps: &client.Timestamps{
Start: &now,
},
Buttons: []*client.Button{
&client.Button{
Label: "Link To Book",
Url: LinkToBook,
},
},
})
}
}
func StartTalking(NameOfPartner string, DiscordLink string) {
if DiscordLink == "" {
err := client.Login("1151168383220449420")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: "I'm talking with " + NameOfPartner,
LargeImage: "talk",
Timestamps: &client.Timestamps{
Start: &now,
},
})
} else {
err := client.Login("1151168383220449420")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: "I'm talking with " + NameOfPartner,
LargeImage: "talk",
Timestamps: &client.Timestamps{
Start: &now,
},
Buttons: []*client.Button{
&client.Button{
Label: "Link To Book",
Url: DiscordLink,
},
},
})
}
}
func StartBrowsing(Site string, SiteURL string) {
if SiteURL == "" {
err := client.Login("1151167934887116931")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: "Currently on " + Site,
LargeImage: "search",
Timestamps: &client.Timestamps{
Start: &now,
},
})
} else {
err := client.Login("1151167934887116931")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: "Currently on " + Site,
LargeImage: "search",
Timestamps: &client.Timestamps{
Start: &now,
},
Buttons: []*client.Button{
&client.Button{
Label: "Visit Site",
Url: SiteURL,
},
},
})
}
}
func StartStreaming(Title string, URL string) {
if URL == "" {
err := client.Login("1151167472037286030")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: Title,
LargeImage: "stream",
Timestamps: &client.Timestamps{
Start: &now,
},
})
} else {
err := client.Login("1151167472037286030")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
Details: Title,
LargeImage: "stream",
Timestamps: &client.Timestamps{
Start: &now,
},
Buttons: []*client.Button{
&client.Button{
Label: "Watch my Stream",
Url: URL,
},
},
})
}
}
func StartWorking(Title string, URL string) {
if URL == "" {
err := client.Login("1151165670634033193")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
State: Title,
LargeImage: "keyboard",
Timestamps: &client.Timestamps{
Start: &now,
},
})
} else {
err := client.Login("1151165670634033193")
if err != nil {
panic(err)
}
now := time.Now()
err = client.SetActivity(client.Activity{
State: Title,
LargeImage: "keyboard",
Timestamps: &client.Timestamps{
Start: &now,
},
Buttons: []*client.Button{
&client.Button{
Label: "Visit my Project",
Url: URL,
},
},
})
}
}