aui::updater::Semver#
Semantic version.
Header: | #include <AUI/Updater/Semver.h> |
CMake: | aui_link(my_target PUBLIC aui::updater) |
Detailed Description#
Parsing version#
Up to 3 numbers split with dots are supported:
EXPECT_EQ(aui::updater::Semver::fromString("1.2.3"), (aui::updater::Semver{ 1, 2, 3 }));
EXPECT_EQ(aui::updater::Semver::fromString("1.2"), (aui::updater::Semver{ 1, 2, 0 }));
EXPECT_EQ(aui::updater::Semver::fromString("1"), (aui::updater::Semver{ 1, 0, 0 }));
v
prefix is acceptable:
EXPECT_EQ(aui::updater::Semver::fromString("v1.2.3"), (aui::updater::Semver{ 1, 2, 3 }));
EXPECT_EQ(aui::updater::Semver::fromString("v0.0.0"), (aui::updater::Semver{ 0, 0, 0 }));
Public Methods#
fromString#
static Semver Semver::fromString(const AString& version)
Parse semver from string.
Examples#
examples/ui/backdrop/src/main.cpp
Backdrop - Backdrop effects demo.
Vertical::Expanding {
Centered {
Icon { ":logo.svg" } AUI_WITH_STYLE { FixedSize { 128_dp } },
} AUI_WITH_STYLE { FixedSize { 500_dp, {} } },
AText::fromString(
" — Eh bien, mon prince. Gênes et Lucques ne sont plus que des apanages, des "
"поместья, de la famille Buonaparte. Non, je vous préviens que si vous ne me dites pas "
"que nous avons la guerre, si vous vous permettez encore de pallier toutes les infamies, "
"toutes les atrocités de cet Antichrist (ma parole, j'y crois) — je ne vous connais "
"plus, vous n'êtes plus mon ami, vous n'êtes plus мой верный раб, comme vous dites 1. "
examples/ui/views/src/ExampleWindow.cpp
Views Example - All-in-one views building example.
}
}),
_new<ASpacerExpanding>(),
},
AUI_DECLARATIVE_FOR(i, *state->colors, AWordWrappingLayout) {
return Horizontal {
_new<ALabel>(i.toString()) AUI_WITH_STYLE {
TextColor { i.readableBlackOrWhite() },
}
} AUI_WITH_STYLE {
examples/ui/contacts/src/main.cpp
AUI Contacts - Usage of AUI_DECLARATIVE_FOR to make a contacts-like application.
mSelectedContact = nullptr;
}
_<AView> indexedList() {
return AUI_DECLARATIVE_FOR(group, *mContacts | ranges::views::chunk_by([](const _<Contact>& lhs, const _<Contact>& rhs) {
return groupLetter(lhs->displayName) == groupLetter(rhs->displayName);
}), AVerticalLayout) {
auto firstContact = *ranges::begin(group);
auto firstLetter = groupLetter(firstContact->displayName);
ALogger::info("Test") << "Computing view for group " << AString(1, firstLetter);
toLongInt#
Converts semver to a long int representation.
Examples#
examples/app/notes/src/main.cpp
Notes App - Note taking app that demonstrates usage of AListModel, AProperty, user data saving and loading.
},
/// [scrollarea]
AScrollArea::Builder()
.withContents(
AUI_DECLARATIVE_FOR(note, *mNotes, AVerticalLayout) {
observeChangesForDirty(note);
return notePreview(note) AUI_LET {
connect(it->clicked, [this, note] { mCurrentNote = note; });
it& mCurrentNote > [note](AView& view, const _<Note>& currentNote) {
ALOG_DEBUG(LOG_TAG) << "currentNote == note " << currentNote << " == " << note;
examples/ui/views/src/ExampleWindow.cpp
Views Example - All-in-one views building example.
}
}),
_new<ASpacerExpanding>(),
},
AUI_DECLARATIVE_FOR(i, *state->colors, AWordWrappingLayout) {
return Horizontal {
_new<ALabel>(i.toString()) AUI_WITH_STYLE {
TextColor { i.readableBlackOrWhite() },
}
} AUI_WITH_STYLE {
examples/ui/contacts/src/main.cpp
AUI Contacts - Usage of AUI_DECLARATIVE_FOR to make a contacts-like application.
mSelectedContact = nullptr;
}
_<AView> indexedList() {
return AUI_DECLARATIVE_FOR(group, *mContacts | ranges::views::chunk_by([](const _<Contact>& lhs, const _<Contact>& rhs) {
return groupLetter(lhs->displayName) == groupLetter(rhs->displayName);
}), AVerticalLayout) {
auto firstContact = *ranges::begin(group);
auto firstLetter = groupLetter(firstContact->displayName);
ALogger::info("Test") << "Computing view for group " << AString(1, firstLetter);
examples/ui/infinite_lazy_list/src/main.cpp
Infinite Lazy List - Usage of AUI_DECLARATIVE_FOR to make an infinite lazy list.
};
});
return Vertical {
AUI_DECLARATIVE_FOR(i, *state->items, AVerticalLayout) { return Label{} & i->value; },
Centered {
_new<ASpinnerV2>() AUI_LET {
AObject::connect(it->redrawn, AObject::GENERIC_OBSERVER, [state] {
// when a spinner appears, we indicate that we need more items.
state->needMore = true;
examples/7guis/crud/src/main.cpp
7GUIs CRUD - Create/Read/Update/Delete example.
Label { "Filter prefix:" },
_new<ATextField>() AUI_WITH_STYLE { Expanding(1, 0) } && mFilterPrefix,
},
AScrollArea::Builder().withExpanding().withContents(
AUI_DECLARATIVE_FOR(i, *mUsers | FILTER_VIEW, AVerticalLayout) {
auto view = _new<ALabel>();
view & i->displayName;
connect(mSelectedUser, view, [this, &view = *view, i] {
view.setAssName("selected", mSelectedUser == i);
});