bool DeclarativeTabModel::activateTabById(int tabId)
{
    int index = findTabIndex(tabId);
    if (index >= 0) {
        return activateTab(index);
    }
    return false;
}
void DeclarativeTabModel::removeTabById(int tabId, bool activeTab)
{
    int index = -1;
    if (!activeTab) {
        index = findTabIndex(tabId);
    }

    if (activeTab) {
        closeActiveTab();
    } else if (index >= 0){
        remove(index);
    }
}
void DeclarativeTabModel::updateTabUrl(int tabId, bool activeTab, const QString &url, bool navigate)
{
    if (!LinkValidator::navigable(QUrl(url))) {
#if DEBUG_LOGS
        qDebug() << "invalid url: " << url;
#endif
        return;
    }

    int tabIndex = findTabIndex(tabId);
    bool updateDb = false;
    if (tabIndex >= 0 && (m_tabs.at(tabIndex).url() != url || activeTab)) {
        QVector<int> roles;
        roles << UrlRole << TitleRole << ThumbPathRole;
        m_tabs[tabIndex].setUrl(url);

        if (navigate) {
            m_tabs[tabIndex].setNextLink(0);
            int currentLinkId = m_tabs.at(tabIndex).currentLink();
            m_tabs[tabIndex].setPreviousLink(currentLinkId);
            m_tabs[tabIndex].setCurrentLink(nextLinkId());
        }
        m_tabs[tabIndex].setTitle("");
        m_tabs[tabIndex].setThumbnailPath("");

        if (tabId == m_activeTab.tabId()) {
            m_activeTab = m_tabs[tabIndex];
        }

        emit dataChanged(index(tabIndex, 0), index(tabIndex, 0), roles);
        updateDb = true;
    }

    if (updateDb) {
        if (!navigate) {
            updateTab(tabId, url, "", "");
        } else {
            navigateTo(tabId, url, "", "");
        }
    }

}
void DeclarativeTabModel::updateTitle(int tabId, bool activeTab, QString title)
{
    int tabIndex = findTabIndex(tabId);

    bool updateDb = false;

    if (activeTab) {
        m_activeTab.setTitle(title);
        updateDb = true;
    } else if (tabIndex >= 0 && m_tabs.at(tabIndex).title() != title) {
        QVector<int> roles;
        roles << TitleRole;
        m_tabs[tabIndex].setTitle(title);
        emit dataChanged(index(tabIndex, 0), index(tabIndex, 0), roles);
        updateDb = true;
    }

    if (updateDb) {
        DBManager::instance()->updateTitle(m_activeTab.currentLink(), title);
    }
}
void DeclarativeTabModel::updateTitle(int tabId, bool activeTab, QString url, QString title)
{
    int tabIndex = findTabIndex(tabId);
    bool updateDb = false;
    int linkId = 0;
    if (tabIndex >= 0 && (m_tabs.at(tabIndex).title() != title || activeTab)) {
        QVector<int> roles;
        roles << TitleRole;
        m_tabs[tabIndex].setTitle(title);
        linkId = m_tabs.at(tabIndex).currentLink();
        emit dataChanged(index(tabIndex, 0), index(tabIndex, 0), roles);
        updateDb = true;

        if (tabId == m_activeTab.tabId() && activeTab) {
            m_activeTab.setTitle(title);
        }
    }

    if (updateDb) {
        updateTitle(tabId, linkId, url, title);
    }
}
void DeclarativeTabModel::updateTabUrl(int tabId, bool activeTab, const QString &url, bool navigate)
{
    if (!LinkValidator::navigable(QUrl(url))) {
#ifdef DEBUG_LOGS
        qDebug() << "invalid url: " << url;
#endif
        return;
    }

    int tabIndex = findTabIndex(tabId);
    bool updateDb = false;
    if (activeTab) {
        m_activeTab.setUrl(url);
        updateDb = true;
    } else if (tabIndex >= 0 && m_tabs.at(tabIndex).url() != url) {
        QVector<int> roles;
        roles << UrlRole << TitleRole << ThumbPathRole;
        m_tabs[tabIndex].setUrl(url);
        m_tabs[tabIndex].setTitle("");
        m_tabs[tabIndex].setThumbnailPath("");
        emit dataChanged(index(tabIndex, 0), index(tabIndex, 0), roles);
        updateDb = true;
    }

    if (updateDb) {
        if (!navigate) {
            DBManager::instance()->updateTab(tabId, url, "", "");
        } else {
            m_activeTab.setNextLink(0);
            int currentLinkId = m_activeTab.currentLink();
            m_activeTab.setPreviousLink(currentLinkId);
            m_activeTab.setCurrentLink(++currentLinkId);
            DBManager::instance()->navigateTo(tabId, url, "", "");
        }
    }

    setBackForwardNavigation(false);
}
Example #7
0
int ScriptableProxyHelper::findTabIndex(const QString &arg1)
{
    INVOKE(findTabIndex(arg1));
    return m_wnd->findTabIndex(arg1);
}
bool DeclarativeTabModel::contains(int tabId) const
{
    return findTabIndex(tabId) >= 0;
}
int DeclarativeTabModel::activeTabIndex() const
{
    return findTabIndex(m_activeTab.tabId());
}