mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 19:30:29 +00:00
Fix create poll screen
This commit is contained in:
parent
1f5eaceb80
commit
1d7c0fbe40
@ -212,7 +212,7 @@ private enum CreatePollEntry: ItemListNodeEntry {
|
|||||||
case textHeader(String, ItemListSectionHeaderAccessoryText)
|
case textHeader(String, ItemListSectionHeaderAccessoryText)
|
||||||
case text(String, String, Int)
|
case text(String, String, Int)
|
||||||
case optionsHeader(String)
|
case optionsHeader(String)
|
||||||
case option(id: Int, ordering: OrderedLinkedListItemOrdering, placeholder: String, text: String, revealed: Bool, hasNext: Bool, isLast: Bool, isSelected: Bool?)
|
case option(id: Int, ordering: OrderedLinkedListItemOrdering, placeholder: String, text: String, revealed: Bool, hasNext: Bool, isLast: Bool, canMove: Bool, isSelected: Bool?)
|
||||||
case optionsInfo(String)
|
case optionsInfo(String)
|
||||||
case anonymousVotes(String, Bool)
|
case anonymousVotes(String, Bool)
|
||||||
case multipleChoice(String, Bool, Bool)
|
case multipleChoice(String, Bool, Bool)
|
||||||
@ -314,7 +314,7 @@ private enum CreatePollEntry: ItemListNodeEntry {
|
|||||||
}, tag: CreatePollEntryTag.text)
|
}, tag: CreatePollEntryTag.text)
|
||||||
case let .optionsHeader(text):
|
case let .optionsHeader(text):
|
||||||
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
|
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
|
||||||
case let .option(id, _, placeholder, text, revealed, hasNext, isLast, isSelected):
|
case let .option(id, _, placeholder, text, revealed, hasNext, isLast, canMove, isSelected):
|
||||||
return CreatePollOptionItem(presentationData: presentationData, id: id, placeholder: placeholder, value: text, isSelected: isSelected, maxLength: maxOptionLength, editing: CreatePollOptionItemEditing(editable: true, hasActiveRevealControls: revealed), sectionId: self.section, setItemIdWithRevealedOptions: { id, fromId in
|
return CreatePollOptionItem(presentationData: presentationData, id: id, placeholder: placeholder, value: text, isSelected: isSelected, maxLength: maxOptionLength, editing: CreatePollOptionItemEditing(editable: true, hasActiveRevealControls: revealed), sectionId: self.section, setItemIdWithRevealedOptions: { id, fromId in
|
||||||
arguments.setItemIdWithRevealedOptions(id, fromId)
|
arguments.setItemIdWithRevealedOptions(id, fromId)
|
||||||
}, updated: { value, isFocused in
|
}, updated: { value, isFocused in
|
||||||
@ -328,6 +328,7 @@ private enum CreatePollEntry: ItemListNodeEntry {
|
|||||||
arguments.moveToPreviousOption(id)
|
arguments.moveToPreviousOption(id)
|
||||||
}
|
}
|
||||||
}, canDelete: !isLast,
|
}, canDelete: !isLast,
|
||||||
|
canMove: canMove,
|
||||||
focused: { isFocused in
|
focused: { isFocused in
|
||||||
arguments.optionFocused(id, isFocused)
|
arguments.optionFocused(id, isFocused)
|
||||||
}, toggleSelected: {
|
}, toggleSelected: {
|
||||||
@ -393,7 +394,7 @@ private func createPollControllerEntries(presentationData: PresentationData, pee
|
|||||||
let isSecondLast = state.options.count == 2 && i == 0
|
let isSecondLast = state.options.count == 2 && i == 0
|
||||||
let isLast = i == state.options.count - 1
|
let isLast = i == state.options.count - 1
|
||||||
let option = state.options[i].item
|
let option = state.options[i].item
|
||||||
entries.append(.option(id: option.id, ordering: state.options[i].ordering, placeholder: isLast ? presentationData.strings.CreatePoll_AddOption : presentationData.strings.CreatePoll_OptionPlaceholder, text: option.text, revealed: state.optionIdWithRevealControls == option.id, hasNext: i != 9, isLast: isLast || isSecondLast, isSelected: state.isQuiz ? option.isSelected : nil))
|
entries.append(.option(id: option.id, ordering: state.options[i].ordering, placeholder: isLast ? presentationData.strings.CreatePoll_AddOption : presentationData.strings.CreatePoll_OptionPlaceholder, text: option.text, revealed: state.optionIdWithRevealControls == option.id, hasNext: i != 9, isLast: isLast || isSecondLast, canMove: !isLast || state.options.count == 10, isSelected: state.isQuiz ? option.isSelected : nil))
|
||||||
}
|
}
|
||||||
if state.options.count < maxOptionCount {
|
if state.options.count < maxOptionCount {
|
||||||
entries.append(.optionsInfo(presentationData.strings.CreatePoll_AddMoreOptions(Int32(maxOptionCount - state.options.count))))
|
entries.append(.optionsInfo(presentationData.strings.CreatePoll_AddMoreOptions(Int32(maxOptionCount - state.options.count))))
|
||||||
|
|||||||
@ -27,11 +27,12 @@ class CreatePollOptionItem: ListViewItem, ItemListItem {
|
|||||||
let next: (() -> Void)?
|
let next: (() -> Void)?
|
||||||
let delete: (Bool) -> Void
|
let delete: (Bool) -> Void
|
||||||
let canDelete: Bool
|
let canDelete: Bool
|
||||||
|
let canMove: Bool
|
||||||
let focused: (Bool) -> Void
|
let focused: (Bool) -> Void
|
||||||
let toggleSelected: () -> Void
|
let toggleSelected: () -> Void
|
||||||
let tag: ItemListItemTag?
|
let tag: ItemListItemTag?
|
||||||
|
|
||||||
init(presentationData: ItemListPresentationData, id: Int, placeholder: String, value: String, isSelected: Bool?, maxLength: Int, editing: CreatePollOptionItemEditing, sectionId: ItemListSectionId, setItemIdWithRevealedOptions: @escaping (Int?, Int?) -> Void, updated: @escaping (String, Bool) -> Void, next: (() -> Void)?, delete: @escaping (Bool) -> Void, canDelete: Bool, focused: @escaping (Bool) -> Void, toggleSelected: @escaping () -> Void, tag: ItemListItemTag?) {
|
init(presentationData: ItemListPresentationData, id: Int, placeholder: String, value: String, isSelected: Bool?, maxLength: Int, editing: CreatePollOptionItemEditing, sectionId: ItemListSectionId, setItemIdWithRevealedOptions: @escaping (Int?, Int?) -> Void, updated: @escaping (String, Bool) -> Void, next: (() -> Void)?, delete: @escaping (Bool) -> Void, canDelete: Bool, canMove: Bool, focused: @escaping (Bool) -> Void, toggleSelected: @escaping () -> Void, tag: ItemListItemTag?) {
|
||||||
self.presentationData = presentationData
|
self.presentationData = presentationData
|
||||||
self.id = id
|
self.id = id
|
||||||
self.placeholder = placeholder
|
self.placeholder = placeholder
|
||||||
@ -45,6 +46,7 @@ class CreatePollOptionItem: ListViewItem, ItemListItem {
|
|||||||
self.next = next
|
self.next = next
|
||||||
self.delete = delete
|
self.delete = delete
|
||||||
self.canDelete = canDelete
|
self.canDelete = canDelete
|
||||||
|
self.canMove = canMove
|
||||||
self.focused = focused
|
self.focused = focused
|
||||||
self.toggleSelected = toggleSelected
|
self.toggleSelected = toggleSelected
|
||||||
self.tag = tag
|
self.tag = tag
|
||||||
@ -442,7 +444,7 @@ class CreatePollOptionItemNode: ItemListRevealOptionsItemNode, ItemListItemNode,
|
|||||||
let _ = reorderSizeAndApply.1(layout.contentSize.height, displayTextLimit, transition)
|
let _ = reorderSizeAndApply.1(layout.contentSize.height, displayTextLimit, transition)
|
||||||
let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderSizeAndApply.0, y: 0.0), size: CGSize(width: reorderSizeAndApply.0, height: layout.contentSize.height))
|
let reorderControlFrame = CGRect(origin: CGPoint(x: params.width + revealOffset - params.rightInset - reorderSizeAndApply.0, y: 0.0), size: CGSize(width: reorderSizeAndApply.0, height: layout.contentSize.height))
|
||||||
strongSelf.reorderControlNode.frame = reorderControlFrame
|
strongSelf.reorderControlNode.frame = reorderControlFrame
|
||||||
strongSelf.reorderControlNode.isHidden = !item.canDelete
|
strongSelf.reorderControlNode.isHidden = !item.canMove
|
||||||
|
|
||||||
let _ = textLimitApply()
|
let _ = textLimitApply()
|
||||||
strongSelf.textLimitNode.frame = CGRect(origin: CGPoint(x: reorderControlFrame.minX + floor((reorderControlFrame.width - textLimitLayout.size.width) / 2.0) - 4.0 - UIScreenPixel, y: max(floor(reorderControlFrame.midY + 2.0), layout.contentSize.height - 15.0 - textLimitLayout.size.height)), size: textLimitLayout.size)
|
strongSelf.textLimitNode.frame = CGRect(origin: CGPoint(x: reorderControlFrame.minX + floor((reorderControlFrame.width - textLimitLayout.size.width) / 2.0) - 4.0 - UIScreenPixel, y: max(floor(reorderControlFrame.midY + 2.0), layout.contentSize.height - 15.0 - textLimitLayout.size.height)), size: textLimitLayout.size)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user