blob: 5590bd4504f001372b7009a0404786278ad584b0 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package db
// VDeck is the metadata for a set of slides.
type VDeck struct {
Title string
Thumbnail []byte
}
// VSlide contains the image content for the slide.
type VSlide struct {
// A low-res version of the image.
Thumbnail []byte
// A high-res version of the image.
// TODO(spetrovic): The type of this field should really be a BlobRef, but we can't reference
// non-VDLROOT vdl types from Java just yet.
ImageRef string
}
// VNote contains private-to-the-user notes for a specific slide.
type VNote struct {
Text string
}
// VPresentation represents a live display of a Deck.
type VPresentation struct {
// Owner is responsible for advertising the presentation and has full
// control of it.
Owner VPerson
// Driver represents who has control of the presentation. Usually, it is
// the presenter, but the presenter can give control to an audience member
// by changing this field.
Driver VPerson
}
// VPerson represents either an audience member or the presenter.
type VPerson struct{
Blessing string
// The person's full name.
Name string
}
// VCurrentSlide contains state for the live presentation. It is separate from the
// VPresentation so that the presenter can temporarily delegate control of the
// VCurrentSlide without giving up control of the entire presentation.
type VCurrentSlide struct {
// The number of the slide that the presenter is talking about.
SlideNum int32
// In the future, we could add markup/doodles here. That markup would be transient
// if stored here. Maybe better to put it in a separate row...
}
// VQuestion represents a member of the audience asking a question of the presenter.
// TODO(kash): Add support for the user to type in their question. Right now, they
// need to ask their question verbally.
type VQuestion struct {
// The person who asked the question.
Questioner VPerson
// Time when the question was asked in milliseconds since the epoch.
Time int64
// Track whether this question has been answered.
Answered bool
}
// VSession represents UI state that most apps would consider to be ephemeral.
// By storing it in Syncbase, we can resume a session on another device.
// It also simplifies the Android implementation because we don't have to store
// all of this state in a Bundle for each Activity/Fragment.
type VSession struct {
DeckId string
PresentationId string
// When the user is not driving the presentation, he can go forward/back in
// the deck on his own. A value of -1 means the user is following the
// driver of the presentation.
LocalSlide int32
// The time that this session was last used in milliseconds since the epoch.
// This field allows us to find the most recently used session and prompt
// the user to resume it.
LastTouched int64
}