int BookmarksToolbar::indexOfLastBookmark() { for (int i = m_layout->count() - 1; i >= 0; i--) { ToolButton* button = qobject_cast<ToolButton*>(m_layout->itemAt(i)->widget()); if (!button) { continue; } if (!button->menu()) { return i + 1; } } return 0; }
void BookmarksToolbar::folderRenamed(const QString &before, const QString &after) { int index = indexOfLastBookmark(); for (int i = index; i < m_layout->count(); i++) { ToolButton* button = qobject_cast<ToolButton*>(m_layout->itemAt(i)->widget()); if (!button) { continue; } if (button->text() == before) { button->setText(after); button->menu()->setTitle(after); return; } } }
void BookmarksToolbar::moveRight() { QAction* act = qobject_cast<QAction*> (sender()); if (!act) { return; } ToolButton* button = (ToolButton*) act->data().value<void*>(); int index = m_layout->indexOf(button); if (index == m_layout->count() - 1) { return; } ToolButton* buttonRight = qobject_cast<ToolButton*> (m_layout->itemAt(index + 1)->widget()); if (!buttonRight || buttonRight->menu()) { return; } Bookmark bookmark = button->data().value<Bookmark>(); Bookmark bookmarkRight = buttonRight->data().value<Bookmark>(); QSqlQuery query; query.prepare("UPDATE bookmarks SET toolbar_position=? WHERE id=?"); query.addBindValue(index + 1); query.addBindValue(bookmark.id); mApp->dbWriter()->executeQuery(query); query.prepare("UPDATE bookmarks SET toolbar_position=? WHERE id=?"); query.addBindValue(index); query.addBindValue(bookmarkRight.id); mApp->dbWriter()->executeQuery(query); QWidget* w = m_layout->takeAt(index)->widget(); m_layout->insertWidget(index + 1, w); }