// This will be called before each test function is executed.
void tst_AddBookmarkDialog::init()
{
    BookmarksManager *manager = BrowserApplication::bookmarksManager();
    BookmarkNode *root = manager->bookmarks();
    QList<BookmarkNode*> nodes = root->children();
    BookmarkNode *menu = nodes[0];
    BookmarkNode *toolbar = nodes[1];
    while (!menu->children().isEmpty())
        manager->removeBookmark(menu->children().first());
    while (!toolbar->children().isEmpty())
        manager->removeBookmark(toolbar->children().first());
}
Exemple #2
0
QModelIndex BookmarksModel::index(BookmarkNode *node) const
{
    BookmarkNode *parent = node->parent();
    if (!parent)
        return QModelIndex();
    return createIndex(parent->children().indexOf(node), 0, node);
}
Exemple #3
0
QModelIndex BookmarksModel::index(int row, int column, const QModelIndex &parent) const
{
    if (row < 0 || column < 0 || row >= rowCount(parent) || column >= columnCount(parent))
        return QModelIndex();

    // get the parent node
    BookmarkNode *parentNode = node(parent);
    return createIndex(row, column, parentNode->children().at(row));
}
Exemple #4
0
bool BookmarksModel::dropMimeData(const QMimeData *data,
                                  Qt::DropAction action, int row, int column, const QModelIndex &parent)
{
    if (action == Qt::IgnoreAction)
        return true;

    if (column > 0)
        return false;

    BookmarkNode *parentNode = node(parent);

    if (!data->hasFormat(MIMETYPE)) {
        if (!data->hasUrls())
            return false;

        BookmarkNode *node = new BookmarkNode(BookmarkNode::Bookmark, parentNode);
        node->url = QString::fromUtf8(data->urls().at(0).toEncoded());

        if (data->hasText())
            node->title = data->text();
        else
            node->title = node->url;

        m_bookmarksManager->addBookmark(parentNode, node, row);
        return true;
    }

    QByteArray ba = data->data(MIMETYPE);
    QDataStream stream(&ba, QIODevice::ReadOnly);
    if (stream.atEnd())
        return false;

    QUndoStack *undoStack = m_bookmarksManager->undoRedoStack();
    undoStack->beginMacro(QLatin1String("Move Bookmarks"));

    while (!stream.atEnd()) {
        QByteArray encodedData;
        stream >> encodedData;
        QBuffer buffer(&encodedData);
        buffer.open(QBuffer::ReadOnly);

        XbelReader reader;
        BookmarkNode *rootNode = reader.read(&buffer);
        QList<BookmarkNode*> children = rootNode->children();
        for (int i = 0; i < children.count(); ++i) {
            BookmarkNode *bookmarkNode = children.at(i);
            rootNode->remove(bookmarkNode);
            row = qMax(0, row);
            m_bookmarksManager->addBookmark(parentNode, bookmarkNode, row);
            m_endMacro = true;
        }
        delete rootNode;
    }
    return true;
}
Exemple #5
0
void BookmarksManager::removeBookmark(BookmarkNode *node)
{
    if (!m_loaded)
        return;

    Q_ASSERT(node);
    BookmarkNode *parent = node->parent();
    int row = parent->children().indexOf(node);
    RemoveBookmarksCommand *command = new RemoveBookmarksCommand(this, parent, row);
    m_commands.push(command);
}
Exemple #6
0
QModelIndex BookmarksModel::parent(const QModelIndex &index) const
{
    if (!index.isValid())
        return QModelIndex();

    BookmarkNode *itemNode = node(index);
    BookmarkNode *parentNode = (itemNode ? itemNode->parent() : 0);
    if (!parentNode || parentNode == m_bookmarksManager->bookmarks())
        return QModelIndex();

    // get the parent's row
    BookmarkNode *grandParentNode = parentNode->parent();
    int parentRow = grandParentNode->children().indexOf(parentNode);
    Q_ASSERT(parentRow >= 0);
    return createIndex(parentRow, 0, parentNode);
}
Exemple #7
0
bool BookmarksModel::removeRows(int row, int count, const QModelIndex &parent)
{
    if (row < 0 || count <= 0 || row + count > rowCount(parent))
        return false;

    BookmarkNode *bookmarkNode = node(parent);
    for (int i = row + count - 1; i >= row; --i) {
        BookmarkNode *node = bookmarkNode->children().at(i);
        if (node == m_bookmarksManager->menu()
            || node == m_bookmarksManager->toolbar())
            continue;

        m_bookmarksManager->removeBookmark(node);
    }
    if (m_endMacro) {
        m_bookmarksManager->undoRedoStack()->endMacro();
        m_endMacro = false;
    }
    return true;
}
void tst_AddBookmarkDialog::addbookmarkdialog()
{
    QFETCH(QString, url);
    QFETCH(QString, title);
    QFETCH(QDialogButtonBox::StandardButton, button);
    QFETCH(int, menuCount);
    QFETCH(int, toolbarCount);
    QFETCH(int, select);

    BookmarksManager *manager = BrowserApplication::bookmarksManager();
    qRegisterMetaType<BookmarkNode *>("BookmarkNode *");
    QSignalSpy spy(manager, SIGNAL(entryAdded(BookmarkNode *)));
    BookmarkNode *menu = manager->menu();
    BookmarkNode *toolbar = manager->toolbar();
    QCOMPARE(menu->children().count(), 0);
    QCOMPARE(toolbar->children().count(), 0);

    SubAddBookmarkDialog dialog(0, manager);
    dialog.setUrl(url);
    dialog.setTitle(title);
    QComboBox *combobox = dialog.findChild<QComboBox*>();
    QVERIFY(combobox);
    if (select != -1) {
        combobox->setCurrentIndex(select);
        combobox->view()->setCurrentIndex(combobox->model()->index(select, 0));
    }
    QDialogButtonBox *buttonBox = dialog.findChild<QDialogButtonBox*>();
    QVERIFY(buttonBox);
    QPushButton *pushButton = buttonBox->button(button);
    pushButton->click();

    QCOMPARE(spy.count(), menuCount + toolbarCount);

    QCOMPARE(menu->children().count(), menuCount);
    QCOMPARE(toolbar->children().count(), toolbarCount);
    BookmarkNode *node = 0;
    if (menuCount == 1) node = menu->children()[0];
    if (toolbarCount == 1) node = toolbar->children()[0];
    if (node) {
        QCOMPARE(node->title, title);
        QCOMPARE(node->url, url);
    }
}
Exemple #9
0
void tst_Xbel::readProperly()
{
    SubXbelReader reader;
    BookmarkNode *root = reader.read("all.xbel");
    QCOMPARE(reader.error(), QXmlStreamReader::NoError);
    QList<BookmarkNode *>children = root->children();
    QCOMPARE(children.count(), 4);
    // null folder
    QCOMPARE(children[0]->children().count(), 0);
    QCOMPARE(children[0]->title, QString());
    QCOMPARE(children[0]->url, QString());
    QCOMPARE(children[0]->expanded, false);

    // folded = no
    QCOMPARE(children[1]->children().count(), 0);
    QCOMPARE(children[1]->title, QString());
    QCOMPARE(children[1]->url, QString());
    QCOMPARE(children[1]->expanded, true);
    QCOMPARE(children[1]->type(), BookmarkNode::Folder);

    // folder with two bookmarks
    QCOMPARE(children[2]->children().count(), 2);
    QCOMPARE(children[2]->title, QString("Folder Title"));
    QCOMPARE(children[2]->url, QString());
    QCOMPARE(children[2]->expanded, false);
    QCOMPARE(children[2]->type(), BookmarkNode::Folder);
    {
        children = children[2]->children();
        QCOMPARE(children[0]->children().count(), 0);
        QCOMPARE(children[0]->title, QString("Title"));
        QCOMPARE(children[0]->url, QString("http://www.foo.com/"));
        QCOMPARE(children[0]->expanded, false);
        QCOMPARE(children[0]->type(), BookmarkNode::Bookmark);

        QCOMPARE(children[1]->children().count(), 0);
        QCOMPARE(children[1]->title, QString("Title 2"));
        QCOMPARE(children[1]->url, QString("http://www.bar.com/"));
        QCOMPARE(children[1]->expanded, false);
        QCOMPARE(children[1]->type(), BookmarkNode::Bookmark);
    }

    children = root->children();
    QCOMPARE(children[3]->children().count(), 3);
    QCOMPARE(children[3]->title, QString("Has SubFolder"));
    QCOMPARE(children[3]->url, QString());
    QCOMPARE(children[3]->expanded, true);
    QCOMPARE(children[3]->type(), BookmarkNode::Folder);
    {
        children = children[3]->children();
        QCOMPARE(children[0]->children().count(), 0);
        QCOMPARE(children[0]->title, QString());
        QCOMPARE(children[0]->url, QString());
        QCOMPARE(children[0]->expanded, false);
        QCOMPARE(children[0]->type(), BookmarkNode::Separator);

        QCOMPARE(children[1]->children().count(), 3);
        QCOMPARE(children[1]->title, QString("SubFolder"));
        QCOMPARE(children[1]->url, QString());
        QCOMPARE(children[1]->expanded, true);
        QCOMPARE(children[1]->type(), BookmarkNode::Folder);
        // children not checked

        QCOMPARE(children[2]->children().count(), 0);
        QCOMPARE(children[2]->title, QString());
        QCOMPARE(children[2]->url, QString());
        QCOMPARE(children[2]->expanded, false);
        QCOMPARE(children[2]->type(), BookmarkNode::Separator);
    }
}