DBManager::DBManager(QObject *parent)
    : QObject(parent)
    , m_maxTabId(0)
{
    qRegisterMetaType<QList<Tab> >("QList<Tab>");
    qRegisterMetaType<QList<Link> >("QList<Link>");
    qRegisterMetaType<Tab>("Tab");

    worker = new DBWorker();
    worker->moveToThread(&workerThread);

    connect(&workerThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
    connect(worker, SIGNAL(tabsAvailable(QList<Tab>)), this, SLOT(tabListAvailable(QList<Tab>)));
    connect(worker, SIGNAL(historyAvailable(QList<Link>)), this, SIGNAL(historyAvailable(QList<Link>)));
    connect(worker, SIGNAL(tabHistoryAvailable(int,QList<Link>)), this, SIGNAL(tabHistoryAvailable(int,QList<Link>)));
    connect(worker, SIGNAL(tabChanged(Tab)), this, SIGNAL(tabChanged(Tab)));
    connect(worker, SIGNAL(tabAvailable(Tab)), this, SIGNAL(tabAvailable(Tab)));
    connect(worker, SIGNAL(titleChanged(QString,QString)), this, SIGNAL(titleChanged(QString,QString)));
    connect(worker, SIGNAL(thumbPathChanged(QString,QString,int)), this, SIGNAL(thumbPathChanged(QString,QString,int)));
    workerThread.start();

    QMetaObject::invokeMethod(worker, "init", Qt::BlockingQueuedConnection);
    QMetaObject::invokeMethod(worker, "getMaxTabId", Qt::BlockingQueuedConnection,
                              Q_RETURN_ARG(int, m_maxTabId));
    QMetaObject::invokeMethod(worker, "getSettings", Qt::BlockingQueuedConnection,
                              Q_RETURN_ARG(SettingsMap, m_settings));
}
Exemple #2
0
void DBWorker::getHistory(const QString &filter)
{
    QString filterQuery;
    if (filter != "") {
        filterQuery = QString("WHERE (link.url LIKE '%%1%' OR link.title LIKE '%%1%') ").arg(filter);
    }

    QString queryString = QString("SELECT history.link_id, link.url, link.thumb_path, link.title "
                                  "FROM history INNER JOIN link "
                                  "ON history.link_id = link.link_id "
                                  "%1"
                                  "ORDER BY history.date DESC;").arg(filterQuery);
    QSqlQuery query = prepare(queryString.toLatin1().constData());

    if (!execute(query)) {
        return;
    }

    QList<Link> linkList;
    while (query.next()) {
        Link url(query.value(0).toInt(),
                           query.value(1).toString(),
                           query.value(2).toString(),
                           query.value(3).toString());
        linkList.append(url);
    }

    emit historyAvailable(linkList);
}
void DBWorker::clearHistory()
{
    QSqlQuery query = prepare("DELETE FROM browser_history;");
    execute(query);
    removeAllTabs();
    query = prepare("DELETE FROM link;");
    execute(query);

    QList<Link> linkList;
    emit historyAvailable(linkList);
}
Exemple #4
0
void Pastebin::onHistoryFinished() {
    QNetworkReply *networkReply = qobject_cast<QNetworkReply *>(sender());
    QList<PasteListing> *pasteList = new QList<PasteListing>();
    if(processPasteListResponse(networkReply, pasteList)) {
        emit historyAvailable(pasteList);
    }
    else {
        delete pasteList;
        emit historyError();
    }
}
Exemple #5
0
void DBWorker::clearHistory()
{
    int oldTabCount = tabCount();
    QSqlQuery query = prepare("DELETE FROM browser_history;");
    execute(query);
    removeAllTabs();
    query = prepare("DELETE FROM link;");
    execute(query);

    QList<Link> linkList;
    emit historyAvailable(linkList);
    if (oldTabCount != 0) {
        QList<Tab> tabList;
        emit tabsAvailable(tabList);
    }
}
void DBWorker::getHistory(const QString &filter)
{
    // Skip empty titles always
    QString filterQuery("WHERE (NULLIF(title, '') IS NOT NULL AND url NOT LIKE 'about:%' AND %1) ");
    QString order;

    if (!filter.isEmpty()) {
        filterQuery = filterQuery.arg(QString("(url LIKE :search OR title LIKE :search)"));
        order = QString("visited_count DESC, date ASC, LENGTH(url), title");
    } else {
        filterQuery = filterQuery.arg(1);
        order = QString("date DESC");
    }

    QString queryString = QString("SELECT DISTINCT id, url, title "
                                  "FROM browser_history "
                                  "%1"
                                  "ORDER BY %2 LIMIT 20;").arg(filterQuery).arg(order);
    QSqlQuery query = prepare(queryString);
    if (!filter.isEmpty()) {
        query.bindValue(QString(":search"), QString("%%1%").arg(filter));
    }

    if (!execute(query)) {
        return;
    }

    QList<Link> linkList;
    while (query.next()) {
        Link link(query.value(0).toInt(),
                  query.value(1).toString(),
                  "",
                  query.value(2).toString());
#if DEBUG_LOGS
        qDebug() << &link;
#endif
        linkList.append(link);
    }

    emit historyAvailable(linkList);
}