| 115 | } |
| 116 | |
| 117 | void ItemBox::_updateAllVisible(bool _redraw) |
| 118 | { |
| 119 | int count_visible = 0; |
| 120 | if (mAlignVert) |
| 121 | { |
| 122 | count_visible = (_getClientWidget()->getHeight() / mSizeItem.height) + 2; |
| 123 | } |
| 124 | else |
| 125 | { |
| 126 | count_visible = (_getClientWidget()->getWidth() / mSizeItem.width) + 2; |
| 127 | } |
| 128 | |
| 129 | size_t start = (mFirstVisibleIndex * mCountItemInLine); |
| 130 | size_t count = (count_visible * mCountItemInLine) + start; |
| 131 | |
| 132 | size_t index = 0; |
| 133 | for (size_t pos = start; pos < count; ++pos, ++index) |
| 134 | { |
| 135 | // дальше нет айтемов |
| 136 | if (pos >= mItemsInfo.size()) |
| 137 | break; |
| 138 | |
| 139 | Widget* item = getItemWidget(index); |
| 140 | if (mAlignVert) |
| 141 | { |
| 142 | item->setPosition( |
| 143 | ((int)index % mCountItemInLine) * mSizeItem.width - mContentPosition.left, |
| 144 | (((int)index / mCountItemInLine) * mSizeItem.height) - mFirstOffsetIndex); |
| 145 | } |
| 146 | else |
| 147 | { |
| 148 | item->setPosition( |
| 149 | (((int)index / mCountItemInLine) * mSizeItem.width) - mFirstOffsetIndex, |
| 150 | ((int)index % mCountItemInLine) * mSizeItem.height - mContentPosition.top); |
| 151 | } |
| 152 | |
| 153 | item->setSize(mSizeItem); |
| 154 | item->setVisible(true); |
| 155 | |
| 156 | if (_redraw) |
| 157 | { |
| 158 | IBDrawItemInfo data(pos, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, true, false); |
| 159 | requestDrawItem(this, item, data); |
| 160 | } |
| 161 | } |
| 162 | |
| 163 | // все виджеты еще есть, то их надо бы скрыть |
| 164 | while (index < mVectorItems.size()) |
| 165 | { |
| 166 | mVectorItems[index]->setVisible(false); |
| 167 | index++; |
| 168 | } |
| 169 | } |
| 170 | |
| 171 | Widget* ItemBox::getItemWidget(size_t _index) |
| 172 | { |
nothing calls this directly
no test coverage detected