QML-тип RemorseItem
Ненадолго появляющийся элемент, который позволяет отменить разрушающее действие (удаление). Подробнее…
Строка импорта: | import Sailfish.Silica 1.0 |
Наследуется от: | BackgroundItem |
Свойства
- horizontalAlignment : enumeration
- leftMargin : real
- pending : bool
- rightMargin : real
- wrapMode : enumeration
Сигналы
Методы
Подробное описание
Рекомендуемый способ использования RemorseItem
— использовать функцию
remorseDelete() или, если ListItem недоступен, использовать API
синглтона Remorse и оставить жизненный цикл объекта для отмены действия для обработки Silica.
Тип RemorseItem
реализует элемент, который позволяет отсрочить разрушающее действие (удаление)
на некоторое время. Если коснуться элемента RemorseItem до истечения этого времени, действие будет
отменено.
При вызове метода execute() в него передаётся родительский элемент типа
Item. При этом область отмены с таймером обратного отсчёта создаётся
как элемент типа RemorseItem
, который заполняет границы элемента родительского элемента.
Ниже приведён пример, в котором для каждого делегата задан элемент RemorseItem
. При касании
делегата элемент RemorseItem
активирует таймер обратного отсчёта для удаления этого делегата:
import QtQuick 2.2
import Sailfish.Silica 1.0
Page {
SilicaListView {
anchors.fill: parent
model: ListModel {
id: listModel
Component.onCompleted: {
for (var i=0; i<10; i++) {
append({"name": "Элемент " + i})
}
}
}
delegate: BackgroundItem {
id: myDelegate
width: ListView.view.width
Label {
text: model.name
anchors.centerIn: parent
}
RemorseItem { id: remorse }
function showRemorseItem() {
var idx = index
remorse.execute(myDelegate, "Удалено", function() { listModel.remove(idx) } )
}
onClicked: {
showRemorseItem()
}
}
}
}
Обычно тип RemorseItem
используется для применения отложенного действия к отдельному элементу.
Для аналогичного действия, которое применяется сразу к нескольким элементам, следует использовать тип
RemorsePopup.
См. также Remorse::itemAction() и RemorsePopup.
Описание свойств
horizontalAlignment : enumeration
Выравнивание по горизонтали всех текстов в элементе RemorseItem
.
Значение по умолчанию: Text.AlignLeft
.
leftMargin : real
Отступ между левым и правым краями элемента RemorseItem
и его содержимым. Значение по умолчанию:
Theme.horizontalPageMargin.
pending : bool
Истинно, если элемент RemorseItem
активен в течение периода обратного отсчета.
rightMargin : real
Отступ между левым и правым краями элемента RemorseItem
и его содержимым. Значение по умолчанию:
Theme.horizontalPageMargin.
wrapMode : enumeration
Управляет переносом текста заголовка title
, который передается в вызываемый метод
execute(). Свойство wrapMode
может пригодиться, если элемент
RemorseItem требуется уместить в небольшой области. Установка свойству значения, отличного от
Text.NoWrap
, отменяет эффект градиента затухания текста.
Значение по умолчанию: Text.NoWrap
.
Описание сигналов
onCanceled()
Обработчик данного сигнала вызывается при касании элемента RemorseItem
для отмены действия.
onTriggered()
Обработчик данного сигнала вызывается, если действие не было отменено в течение периода обратного отсчёта.
Описание методов
cancel()
Отменяет таймер обратного отсчёта RemorseItem
без выполнения действия.
execute(Item parent, string text, object callback, int timeout)
Отображает RemorseItem
вместо parent с указанным text, описывающим выполняемое действие.
Текстовое описание является необязательным, наиболее распространённым вариантом использования элемента для отмены
действия является удаление, когда строку text можно оставить пустой.
По истечении времени timeout
будет вызвана функция, переданная в параметр callback. Если callback-функция не
предоставляется, то вместо для выполнения действия нее может использоваться обработчик
onTriggered. Следует обратить внимание, что выполнение обратного вызова
происходит в области действия компонента для отмены действия, и ссылки на объекты на странице или в контексте делегата,
которые запрашивали элемент для отмены, могут быть недоступны.
Параметр timeout является необязательным. Если не указано иное, будет использоваться значение по умолчанию 4000 мс.
text должен содержать глагол, описывающий совершаемое действие. Следует использовать прошедшее время, чтобы яснее указать, что от пользователя не требуется никаких дополнительных шагов, если он не хочет отменить действие. Например, элемент, который раньше выводил текст «Очистка данных», теперь будет отображать «Данные очищены».
Следует обратить внимание, что элемент RemorseItem
станет одноуровневым по отношению к целевому
родительскому элементу target
затем, чтобы к данному родительскому элементу мог быть применен эффект затухания при
его удалении. Элемент RemorseItem
сам определяет свое положение и не будет работать, будучи
размещенным внутри контейнеров Qt Quick (например, в таких, как Column
).
trigger()
Незамедлительно выполняет действие, если оно ещё не выполнено или отменено.
С помощью данного метода можно мгновенно вызвать выполнение отложенного действия, как если бы время ожидания было
принудительно сокращено действиями пользователя. Если выполнение действия было вызвано, возвращает true
,
иначе — false
.