| // 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 io.v.syncslides.model; |
| |
| import io.v.v23.verror.VException; |
| |
| /** |
| * A Session represents the UI state for one presentation. |
| */ |
| public interface Session { |
| String getId(); |
| |
| String getDeckId(); |
| |
| String getPresentationId(); |
| |
| /** |
| * Store the user's desire to view the given slide. This will trigger a notification to |
| * any SlideNumberListeners. |
| * |
| * @param slideNum the number of the slide |
| */ |
| void setLocalSlideNum(int slideNum) throws VException; |
| |
| interface SlideNumberListener { |
| /** |
| * Called whenever the UI should display a different slide. If the user is following |
| * a live presentation, this will be called when the driver of the presentation changes |
| * the current slide. If the user is browsing a presentation on his own, this will |
| * be triggered by calls to setLocalSlideNum(). |
| */ |
| void onChange(int slideNum); |
| /** |
| * Called whenever there is an error. The listener should unregister and re-register |
| * itself if it wants to continue. |
| */ |
| void onError(Exception e); |
| } |
| |
| /** |
| * Adds a listener for changes to the to-be-displayed slide. |
| * |
| * @param listener notified of changes |
| */ |
| void addSlideNumberListener(SlideNumberListener listener); |
| |
| /** |
| * Removes a listener that was previously passed to addSlideNumberListener(). |
| * |
| * @param listener previously passed to addSlideNumberListener(). |
| */ |
| void removeSlideNumberListener(SlideNumberListener listener); |
| |
| /** |
| * Returns a dynamically updating list of slides in the deck. |
| */ |
| DynamicList<Slide> getSlides(); |
| |
| /** |
| * Sets the notes for the given slide. |
| */ |
| void setNotes(int slideNum, String notes) throws VException; |
| } |