File indexing completed on 2024-05-12 16:23:41

0001 // SPDX-FileCopyrightText: 2020 Rinigus <rinigus.git@gmail.com>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #include "urlobserver.h"
0006 #include "browsermanager.h"
0007 
0008 UrlObserver::UrlObserver(QObject *parent)
0009     : QObject(parent)
0010 {
0011     connect(BrowserManager::instance(), &BrowserManager::databaseTableChanged, this, &UrlObserver::onDatabaseTableChanged);
0012 }
0013 
0014 QString UrlObserver::url() const
0015 {
0016     return m_url;
0017 }
0018 
0019 void UrlObserver::setUrl(const QString &url)
0020 {
0021     m_url = url;
0022     updateBookmarked();
0023     Q_EMIT urlChanged(url);
0024 }
0025 
0026 bool UrlObserver::bookmarked() const
0027 {
0028     return m_bookmarked;
0029 }
0030 
0031 void UrlObserver::onDatabaseTableChanged(const QString &table)
0032 {
0033     if (table != QStringView(u"bookmarks"))
0034         return;
0035 
0036     updateBookmarked();
0037 }
0038 
0039 QCoro::Task<> UrlObserver::updateBookmarked()
0040 {
0041     if (const bool isBookmarked = co_await BrowserManager::instance()->databaseManager()->isBookmarked(m_url); isBookmarked != m_bookmarked) {
0042         m_bookmarked = isBookmarked;
0043         Q_EMIT bookmarkedChanged(m_bookmarked);
0044     }
0045 }
0046 
0047 #include "moc_urlobserver.cpp"