TimelineViewSettings.h header
#include <ew/core/TimelineViewSettings.h>
Namespace ew::core
TimelineLaneArrangement struct
struct ew::core::TimelineLaneArrangement
One lane's persisted place in the timeline's lane arrangement (TL-46). A lane is identified by the (grouping dimension, label) it was produced under – lane labels are unique only within one grouping – so the arrangement is scoped per groupBy dimension and survives switching the grouping away and back. hidden is the PERSISTED hide of TL-46 (an authoring decision baked into the project), distinct from the transient lane filter (TL-45), which lives on the panel and is not saved.
Members
TimelineGroupBy ew::core::TimelineLaneArrangement::groupBy =
The grouping this lane belongs to; only entries whose groupBy matches the active grouping apply, so a character arrangement and a location arrangement can coexist.
QString ew::core::TimelineLaneArrangement::label
The lane's label under that grouping – its stable identity, the key the arrangement matches.
bool ew::core::TimelineLaneArrangement::collapsed = false
Whether the lane is collapsed to a thin summary strip (TL-46): its events are folded away to reclaim vertical space for the other lanes, without hiding the lane. Distinct from hidden (gone) – a collapsed lane still shows, just small.
bool operator==(const TimelineLaneArrangement &, const TimelineLaneArrangement &)=default
Value equality over all fields, so a no-op arrangement edit is detectable before an undoable command.
TimelineSeriesArrangement struct
struct ew::core::TimelineSeriesArrangement
The persisted arrangement of ONE quantitative series lane (TL-92): a series lane behaves like any other lane, so it can be reordered, hidden, or collapsed to a thin strip. A series is identified by its label ("Entity: field"), stable across sessions, rather than by a grouping dimension – a series is not produced by TimelineGroupBy, so it needs no groupBy key. Persisted because it is an authoring decision (TL-46), exactly like TimelineLaneArrangement for event lanes.
Members
QString ew::core::TimelineSeriesArrangement::label
The series' "Entity: field" label – its stable identity, the key this arrangement matches.
bool ew::core::TimelineSeriesArrangement::collapsed = false
Whether this series lane is collapsed to a thin summary strip (TL-92/TL-46): drawn short to reclaim vertical space, without hiding it. Distinct from hidden (gone).
bool operator==(const TimelineSeriesArrangement &, const TimelineSeriesArrangement &)=default
Value equality over all fields, so a no-op arrangement edit is detectable before an undoable command.
TimelineViewPreset struct
struct ew::core::TimelineViewPreset
A named, saved bundle of the whole TimelineViewSettings (TL-83) – a timeline "view preset", in the spirit of the app's dock perspectives. The user switches the entire timeline look (colour, grouping, density, labels, and what is drawn) in one gesture by applying a preset's settings. Built-in presets ("Story", "Research", "Session prep", "Presentation") ship with the app; the user can also save the current view under a name, and those user presets persist with the project (an authoring decision, like the view settings themselves). A user preset captures the full settings, including the project's lane arrangement; a built-in leaves TimelineViewSettings::laneArrangements empty because it cannot know a given project's lane labels.
Members
QString ew::core::TimelineViewPreset::name
The preset's display name and its identity when saving or overriding (a user preset whose name matches a built-in overrides it).
TimelineViewSettings ew::core::TimelineViewPreset::settings
The complete view settings this preset applies.
bool operator==(const TimelineViewPreset &, const TimelineViewPreset &)=default
Value equality over both fields, so a no-op preset-list edit is detectable before an undoable command.
TimelineViewSettings struct
struct ew::core::TimelineViewSettings
The persisted, per-project configuration of the timeline VIEW: how the one timeline panel draws every timeline – what event colour and shape encode, how events are grouped into lanes, and the visual density, sizing, and labelling. It is a single project-owned value (like Calendar), not a per-timeline object, so switching which timeline is visible keeps the reader's chosen view.
This is the foundation the T4 view controls populate: each control (encoding, the view-settings surface, group/filter, layers, lanes, presets) adds and consumes fields here. Every default reproduces the T3 look (no encoding, no regrouping, auto placement, fill-the-dock lanes), so an untouched project – or one saved before these settings existed – is drawn exactly as before.
Members
TimelineColorBy ew::core::TimelineViewSettings::colorBy =
The dimension event colour encodes; None draws each event in its track colour (the T3 look).
TimelineGroupBy ew::core::TimelineViewSettings::groupBy =
How events are gathered into lanes; Timeline (the default) keeps the model's own timelines as the lanes – the T3 look – while None collapses them onto one lane and the others regroup.
TimelineDensity ew::core::TimelineViewSettings::density =
How tightly lanes and events pack.
int ew::core::TimelineViewSettings::rowHeight = 0
The height of a lane in pixels, or 0 to divide the dock's height evenly among the lanes (the T3.7 default).
int ew::core::TimelineViewSettings::eventSize = 0
The height of an event mark in pixels, or 0 for the built-in default.
bool ew::core::TimelineViewSettings::showLabels = true
Whether event labels are drawn at all.
TimelineLabelPlacement ew::core::TimelineViewSettings::labelPlacement =
Where a shown label sits relative to its mark; Auto lets the layout place it (the T3 look).
TimelineLabelFormat ew::core::TimelineViewSettings::labelFormat =
What text a shown label carries; TitleOnly is the T3 look (just the event name).
bool ew::core::TimelineViewSettings::showGridlines = true
Whether the ruler's vertical gridlines are drawn behind the lanes (TL-81). On by default.
bool ew::core::TimelineViewSettings::showDensityStrip = true
Whether the density minimap strip below the axis is drawn (TL-81 / TL-32). On by default.
bool ew::core::TimelineViewSettings::showConflictMarks = true
Whether an event that fails a continuity check gets its conflict outline (TL-81). On by default – turning it off is a "clean read" mode that hides the validator's marks without disabling the validator.
bool ew::core::TimelineViewSettings::ordinalMode = false
Ordinal / sequence mode (TL-09): lay events out evenly by their sequence position (TimelineEvent::ordinal) rather than by date, with an integer axis, and reorder by dragging. Off by default (a dated timeline); on lets a writer use the timeline with zero dates entered. The dates are not discarded – turning it off returns to the dated axis.
TimelineSeriesShape ew::core::TimelineViewSettings::seriesShape =
How quantitative series (TL-89) are drawn in their lanes; Line (the default) reads as a curve.
std::vector<TimelineLaneArrangement> ew::core::TimelineViewSettings::laneArrangements
The persisted lane arrangement (TL-46): the order lanes are drawn in and which are hidden, per grouping dimension. Empty (the default) is the natural first-appearance order with nothing hidden – the T3 look. Among entries sharing a groupBy, VECTOR ORDER is the lane draw order; a lane with no entry keeps its natural order after the arranged ones. It persists because it is an authoring decision (TL-46), unlike the transient lane filter (TL-45).
std::vector<TimelineSeriesArrangement> ew::core::TimelineViewSettings::seriesArrangements
The persisted arrangement of the quantitative series lanes (TL-92): the order they are drawn in and which are hidden or collapsed. Empty (the default) is auto-discovery order with nothing hidden – the T5.2 look. VECTOR ORDER is the series draw order; a series with no entry keeps its natural (auto-discovery) order after the arranged ones. Keyed by the series' "Entity: field" label (not a groupBy, since a series is not grouped). An authoring decision (TL-46), like laneArrangements.
bool operator==(const TimelineViewSettings &, const TimelineViewSettings &)=default
Value equality over all fields, so a no-op view-settings edit can be detected before pushing an undoable command.
Enumerations
enum class TimelineColorBy { None, Character, Location, Thread, Tag, Status, GoodBad }
The dimension an event's colour encodes on the timeline (TL-73). None draws every event in its track colour – the look before any encoding is chosen; the others colour by a codex/story dimension so, e.g., one character's events all read as one hue.
enum class TimelineDensity { Comfortable, Compact }
How tightly the timeline packs its lanes and events. Comfortable is the default roomy look; Compact trades breathing room for more on screen at once.
enum class TimelineGroupBy { None, Timeline, Character, Location, Thread, Pov, Tag }
How events are gathered into lanes on the timeline (TL-43). None puts every event on a single lane; Timeline keeps the model's own timelines as the lanes (the default look); the others regroup every event by a codex/story dimension – character, location, tag – so the reader can slice the same events a different way. (Thread and Pov are reserved for when an event carries a per-event thread / point-of-view association, which the model does not yet have – the same gap TimelineColorBy::Thread has – so they are not offered as choices yet.)
enum class TimelineLabelFormat { TitleOnly, TitleAndYear, TitleAndFullDate }
What text a shown event label carries (TL-80's "format"). TitleOnly is the T3 look (just the event's name); the others append the event's own date so the reader can read when at a glance without hovering – YearOnly for a wide era view, FullDate for a close day/hour view. The label text is built by a pure, tested helper, never in the paint path.
enum class TimelineLabelPlacement { Auto, Above, Below, Inline, Hidden }
Where a shown event label sits relative to its mark (TL-80). Auto lets the layout place it (above or below the spine as room allows – the default); the others pin it, and Hidden suppresses the label while keeping the mark.
enum class TimelineSeriesShape { Line, Area, Stepped }
How a quantitative series is drawn on the timeline (TL-93): Line joins the readings with straight segments (a measurement that varies continuously, like a temperature); Area fills beneath that line; Stepped holds each reading until the next (a count that changes in discrete jumps, like a population). The shape is the user's choice because pretending a step function is a smooth line misstates the data.