bool CWizDatabaseManager::openWithInfo(const QString& strKbGUID, const WIZDATABASEINFO* pInfo)
{
    Q_ASSERT(!m_strUserId.isEmpty());

    if (isOpened(strKbGUID))
        return true;

    CWizDatabase* db = new CWizDatabase();

    if (!db->Open(m_strUserId, strKbGUID)) {
        delete db;
        return false;
    }
    //
    if (pInfo)
    {
        db->InitDatabaseInfo(*pInfo);
    }

    if (strKbGUID.isEmpty()) {
        m_dbPrivate = db;

        // take ownership immediately
        connect(db, SIGNAL(databaseOpened(CWizDatabase*, const QString&)),
                SLOT(on_groupDatabaseOpened(CWizDatabase*, const QString&)),
                Qt::BlockingQueuedConnection);
    } else {
        m_mapGroups[strKbGUID] = db;
    }

    initSignals(db);

    Q_EMIT databaseOpened(strKbGUID);
    return true;
}
bool CWizDatabaseManager::open(const QString& strKbGUID)
{
    Q_ASSERT(!m_strUserId.isEmpty());

    CWizDatabase* db = new CWizDatabase();

    bool ret = false;
    if (strKbGUID.isEmpty()) {
        ret = db->openPrivate(m_strUserId, m_strPasswd);
    } else {
        ret = db->openGroup(m_strUserId, strKbGUID);
    }

    if (!ret) {
        delete db;
        return false;
    }

    initSignals(db);

    if (strKbGUID.isEmpty()) {
        m_dbPrivate = db;
    } else {
        m_dbGroups.append(db);
    }

    Q_EMIT databaseOpened(strKbGUID);

    return true;
}
void CWizDatabaseManager::on_groupDatabaseOpened(CWizDatabase* pDb, const QString& strKbGUID)
{
    // check if this group is already opened, to avoid memory leak!
    if (isOpened(strKbGUID)) {
        close(strKbGUID, false);
    }

    m_mapGroups[strKbGUID] = pDb;
    initSignals(pDb);

    Q_EMIT databaseOpened(strKbGUID);
}
示例#4
0
void SQLite::dbThreadStarted()
{
    qDebug() << __PRETTY_FUNCTION__;
    databaseOpened();
    if(!m_query.isEmpty())
    {
        this->executeQuery(m_query);
    }
    else
    {
        connect(this, SIGNAL(queryChanged(QString)),
                this, SLOT(executeQuery(QString)));
    }
}