| 244 | } |
| 245 | |
| 246 | void SymbolBar::curmbItemClicked() |
| 247 | { |
| 248 | CurmbItem *item = qobject_cast<CurmbItem *>(sender()); |
| 249 | if (!item) |
| 250 | return; |
| 251 | |
| 252 | if (!symbolView) { |
| 253 | symbolView = new SymbolView(SymbolView::Click, this); |
| 254 | symbolView->setFixedWidth(400); |
| 255 | symbolView->setWindowFlags(Qt::Popup); |
| 256 | symbolView->setClickToHide(true); |
| 257 | connect(symbolView, &SymbolView::hidden, this, &SymbolBar::resetCurmbItemState); |
| 258 | } |
| 259 | |
| 260 | auto rect = item->rect(); |
| 261 | auto pos = item->mapToGlobal(rect.bottomLeft()); |
| 262 | |
| 263 | switch (item->curmbType()) { |
| 264 | case CurmbItem::FilePath: { |
| 265 | const auto &path = item->userData().toString(); |
| 266 | QFileInfo info(path); |
| 267 | symbolView->setRootPath(info.absolutePath()); |
| 268 | symbolView->select(path); |
| 269 | symbolView->show(pos); |
| 270 | } break; |
| 271 | case CurmbItem::Symbol: { |
| 272 | const auto &data = item->userData().toList(); |
| 273 | if (data.size() == 3 && symbolView->setSymbolPath(data[0].toString())) { |
| 274 | symbolView->selectSymbol(item->text(), data[1].toInt(), data[2].toInt()); |
| 275 | symbolView->show(pos); |
| 276 | } else { |
| 277 | item->setSelected(false); |
| 278 | } |
| 279 | } break; |
| 280 | } |
| 281 | } |
| 282 | |
| 283 | void SymbolBar::resetCurmbItemState() |
| 284 | { |
nothing calls this directly
no test coverage detected