Okno do pracy z grupą elementów i ich ilością
W wersji API V7Preview6 dodano nowe okno, które ułatwia pracę z ilością grupy elementów
IViewManager.ShowQuantityChangerPopup.
Metoda przyjmuje
string title— tytuł okna,string text— tekst z opisem,int minimalQuantity— minimalna łączna możliwa liczba dla grupy,int maximalQuantity— maksymalna łączna możliwa liczba dla grupy,IReadOnlyCollection<(string name, int quantity, int minimalQuantity, int maximalQuantity)> items— sama lista elementów.
Każdy element to
string name— jego nazwa,int quantity— aktualna ilość elementu,int minimalQuantity— minimalna możliwa liczba elementu,int maximalQuantity— maksymalna możliwa liczba elementu.
W rezultacie metoda zwraca listę IReadOnlyCollection<int>, która zawiera liczbę każdego elementu w kolejności odpowiadającej kolejności w otrzymanym argumencie items.
Przyciski + i - pozwalają zwiększyć lub zmniejszyć liczbę elementów o jeden.
Centralny obszar elementu z jego nazwą jest również klikalny i pozwala otworzyć cyfrowe okno popup do zaawansowanej edycji ilości wybranego elementu.
Po prawej stronie nazwy znajduje się aktualna ilość elementu.
W przypadku, gdy minimalna możliwa ilość każdego elementu wynosi zero,
maksymalna możliwa ilość każdego elementu jest równa maksymalnej możliwej ilości dla grupy,
aktualna ilość jednego z elementów jest równa maksymalnej możliwej ilości dla grupy,
a aktualna liczba pozostałych elementów wynosi zero,
kliknięcie na centralny obszar pozostałych elementów nie otwiera cyfrowego popupu,
a całkowicie przenosi ilość wcześniej wybranego elementu do aktualnego elementu.
Przykład
private static void ShowListWithQuantitiesPopup(IViewManager viewManager)
{
const string title = "Prezent od Świętego Mikołaja";
const string hintText = "Wybierz słodycze";
var list = new List<(string name, int quantity, int minimalQuantity, int maximalQuantity)>
{
("Czekolada", 0, 0, 3),
("Mandarynki", 0, 0, 3),
("Cukierki", 0, 0, 3),
("Wafle", 0, 0, 3),
("Herbatniki", 0, 0, 3),
("Pianki", 0, 0, 3),
("Bezy", 0, 0, 3),
};
var inputResult = viewManager.ShowQuantityChangerPopup(title, hintText, 3, 3, list);
ShowNotification(inputResult == null
? "Nic"
: $"Wybrane : {string.Join(", ", inputResult.Zip(list, (quantity, item) => (name: item.name, quantity: quantity)).Where(i => i.quantity != 0).Select(i => $"{i.quantity} × {i.name}"))}",
TimeSpan.FromSeconds(10));
}