| 289 | } |
| 290 | |
| 291 | void TemplateHandler::saveMenu() { |
| 292 | QMenu menu(this); |
| 293 | menu.addSection(i18n("Save As Template")); |
| 294 | |
| 295 | auto list = QDir(m_dirName + m_className).entryList(); |
| 296 | list.removeAll(QLatin1String(".")); |
| 297 | list.removeAll(QLatin1String("..")); |
| 298 | for (int i = 0; i < list.size(); ++i) { |
| 299 | QFileInfo fileinfo(list.at(i)); |
| 300 | auto* action = menu.addAction(QIcon::fromTheme(QLatin1String("document-edit")), fileinfo.fileName()); |
| 301 | action->setData(fileinfo.fileName()); |
| 302 | } |
| 303 | connect(&menu, &QMenu::triggered, this, &TemplateHandler::saveMenuSelected); |
| 304 | |
| 305 | // add editable action |
| 306 | auto* widgetAction = new QWidgetAction(this); |
| 307 | auto* frame = new QFrame(this); |
| 308 | auto* layout = new QHBoxLayout(frame); |
| 309 | |
| 310 | auto* label = new QLabel(i18n("New:"), frame); |
| 311 | layout->addWidget(label); |
| 312 | |
| 313 | auto* leFilename = new QLineEdit(QString(), frame); |
| 314 | layout->addWidget(leFilename); |
| 315 | connect(leFilename, &QLineEdit::returnPressed, this, [=]() { |
| 316 | saveNewSelected(leFilename->text()); |
| 317 | }); |
| 318 | connect(leFilename, &QLineEdit::returnPressed, &menu, &QMenu::close); |
| 319 | |
| 320 | widgetAction->setDefaultWidget(frame); |
| 321 | if (menu.actions().size() > 1) |
| 322 | menu.addSeparator(); |
| 323 | menu.addAction(widgetAction); |
| 324 | leFilename->setFocus(); |
| 325 | |
| 326 | QPoint pos(-menu.sizeHint().width() + m_tbSave->width(), -menu.sizeHint().height()); |
| 327 | menu.exec(m_tbSave->mapToGlobal(pos)); |
| 328 | } |
| 329 | |
| 330 | /*! |
| 331 | * Is called when the current properties are going to be saved as a new template. |
nothing calls this directly
no test coverage detected