void BookmarkIterator::nextOne() { // kDebug() << "BookmarkIterator::nextOne"; // Look for an interesting bookmark while (!m_bookmarkList.isEmpty()) { KBookmark bk = m_bookmarkList.takeFirst(); if (bk.hasParent() && isApplicable(bk)) { m_bk = bk; doAction(); // Async action started, we'll have to come back later return; } } if (m_bookmarkList.isEmpty()) { holder()->removeIterator(this); // deletes "this" return; } }
// SHUFFLE all these functions around, the order is just plain stupid void BookmarkInfoWidget::showBookmark(const KBookmark &bk) { // Fast exit if already shown, otherwise editing a title leads to a command after each keypress if (m_bk == bk) return; commitChanges(); m_bk = bk; if (m_bk.isNull()) { // all read only and blank m_title_le->setReadOnly(true); m_title_le->setText(QString()); m_url_le->setReadOnly(true); m_url_le->setText(QString()); m_comment_le->setReadOnly(true); m_comment_le->setText(QString()); m_visitdate_le->setReadOnly(true); m_visitdate_le->setText(QString()); m_credate_le->setReadOnly(true); m_credate_le->setText(QString()); m_visitcount_le->setReadOnly(true); m_visitcount_le->setText(QString()); return; } // read/write fields m_title_le->setReadOnly( (bk.isSeparator()|| !bk.hasParent() )? true : false); if (bk.fullText() != m_title_le->text()) m_title_le->setText(bk.fullText()); m_url_le->setReadOnly(bk.isGroup() || bk.isSeparator()); if (bk.isGroup()) { m_url_le->setText(QString()); } else { // Update the text if and only if the text represents a different URL to that // of the current bookmark - the old method, "m_url_le->text() != bk.url().pathOrUrl()", // created difficulties due to the ambiguity of converting URLs to text. (#172647) if (QUrl::fromUserInput(m_url_le->text()) != bk.url()) { const int cursorPosition = m_url_le->cursorPosition(); m_url_le->setText(bk.url().url(QUrl::PreferLocalFile)); m_url_le->setCursorPosition(cursorPosition); } } m_comment_le->setReadOnly((bk.isSeparator()|| !bk.hasParent()) ? true : false ); QString commentText = bk.description(); if (m_comment_le->text() != commentText) { const int cursorPosition = m_comment_le->cursorPosition(); m_comment_le->setText(commentText); m_comment_le->setCursorPosition(cursorPosition); } // readonly fields updateStatus(); }