Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kasts for openSUSE:Factory checked in at 2023-07-07 15:48:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kasts (Old) and /work/SRC/openSUSE:Factory/.kasts.new.23466 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kasts" Fri Jul 7 15:48:16 2023 rev:4 rq:1097216 version:23.04.3 Changes: -------- --- /work/SRC/openSUSE:Factory/kasts/kasts.changes 2023-06-09 20:40:16.199541095 +0200 +++ /work/SRC/openSUSE:Factory/.kasts.new.23466/kasts.changes 2023-07-07 15:50:12.965230970 +0200 @@ -1,0 +2,12 @@ +Tue Jul 4 10:19:28 UTC 2023 - Christophe Marin <[email protected]> + +- Update to 23.04.3 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.04.3/ +- Changes since 23.04.2: + * Fix mMedia nullptr dereference in VLC backend metadata call + * More safeguards for getFeed and getEntry calls + * Fix segfault when trying to remove a non-subscribed podcast (kde#471107) + +------------------------------------------------------------------- Old: ---- kasts-23.04.2.tar.xz kasts-23.04.2.tar.xz.sig New: ---- kasts-23.04.3.tar.xz kasts-23.04.3.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kasts.spec ++++++ --- /var/tmp/diff_new_pack.VkuCUB/_old 2023-07-07 15:50:13.525234306 +0200 +++ /var/tmp/diff_new_pack.VkuCUB/_new 2023-07-07 15:50:13.533234354 +0200 @@ -18,7 +18,7 @@ %bcond_without released Name: kasts -Version: 23.04.2 +Version: 23.04.3 Release: 0 Summary: Kirigami-based podcast player License: GPL-2.0-or-later ++++++ kasts-23.04.2.tar.xz -> kasts-23.04.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/CMakeLists.txt new/kasts-23.04.3/CMakeLists.txt --- old/kasts-23.04.2/CMakeLists.txt 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/CMakeLists.txt 2023-07-04 07:04:19.000000000 +0200 @@ -8,7 +8,7 @@ # KDE Applications version, managed by release script. set(RELEASE_SERVICE_VERSION_MAJOR "23") set(RELEASE_SERVICE_VERSION_MINOR "04") -set(RELEASE_SERVICE_VERSION_MICRO "2") +set(RELEASE_SERVICE_VERSION_MICRO "3") set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") project(kasts VERSION ${RELEASE_SERVICE_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/org.kde.kasts.appdata.xml new/kasts-23.04.3/org.kde.kasts.appdata.xml --- old/kasts-23.04.2/org.kde.kasts.appdata.xml 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/org.kde.kasts.appdata.xml 2023-07-04 07:04:19.000000000 +0200 @@ -231,7 +231,7 @@ <li xml:lang="ru">ÐÐ¾Ð»Ð½Ð°Ñ Ð¸Ð½ÑегÑаÑÐ¸Ñ Ñ ÑиÑÑемой: пÑи воÑпÑоизведении подкаÑÑов ÑабоÑа ÑиÑÑÐµÐ¼Ñ Ð½Ðµ пÑиоÑÑанавливаеÑÑÑ;</li> <li xml:lang="sl">Popolna sistemska integracija: npr. prepreÄevanje mirovanja sistema pri posluÅ¡anju</li> <li xml:lang="sv">Fullständig systemintegrering: t.ex. förhindra att systemet gÃ¥r till viloläge under uppspelning</li> - <li xml:lang="tr">Tam sistem tümleÅimi; örn. dinlerken sistem uykusunu ertele</li> + <li xml:lang="tr">Tam sistem tümleÅimi; örn. dinlerken sistem uykusunu engelle</li> <li xml:lang="uk">Ðовна ÑнÑегÑаÑÑÑ Ñз ÑиÑÑемоÑ, зокÑема забоÑона пÑиÑиплÑÐ½Ð½Ñ Ð¿ÑиÑÑÑÐ¾Ñ Ð¿Ñд ÑÐ°Ñ Ð¿ÑоÑлÑÑ Ð¾Ð²ÑваннÑ</li> <li xml:lang="x-test">xxFull system integration: e.g. inhibit system suspend while listeningxx</li> </ul> @@ -336,6 +336,7 @@ </screenshots> <launchable type="desktop-id">org.kde.kasts.desktop</launchable> <releases> + <release version="23.04.3" date="2023-07-06"/> <release version="23.04.2" date="2023-06-08"/> <release version="23.04.1" date="2023-05-11"/> <release version="23.04.0" date="2023-04-20"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/org.kde.kasts.desktop new/kasts-23.04.3/org.kde.kasts.desktop --- old/kasts-23.04.2/org.kde.kasts.desktop 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/org.kde.kasts.desktop 2023-07-04 07:04:19.000000000 +0200 @@ -10,6 +10,7 @@ Name[es]=Kasts Name[fi]=Kasts Name[fr]=Kasts +Name[gl]=Kasts Name[it]=Kasts Name[ka]=Kasts Name[ko]=Kasts @@ -35,6 +36,7 @@ Comment[es]=Aplicación de pódcast para móviles Comment[fi]=Podcast-mobiilisovellus Comment[fr]=Application mobile pour podcasts +Comment[gl]=Aplicación de podcasts para móbiles. Comment[it]=Applicazione mobile per podcast Comment[ka]=áááááá£á á áááááá¡á¢áá¡ áááááááªáá Comment[ko]=모ë°ì¼ íìºì¤í¸ íë¡ê·¸ë¨ @@ -60,6 +62,7 @@ GenericName[es]=Aplicación de pódcast GenericName[fi]=Podcast-sovellus GenericName[fr]=Application pour podcasts +GenericName[gl]=Aplicación de podcasts GenericName[it]=Applicazione podcast GenericName[ka]=áááááá¡á¢áá¡ áááááááªáá GenericName[ko]=íìºì¤í¸ íë¡ê·¸ë¨ @@ -85,6 +88,7 @@ Keywords[es]=pódcast Keywords[fi]=podcast Keywords[fr]=podcast +Keywords[gl]=podcast Keywords[it]=podcast Keywords[ka]=áááááá¡á¢á Keywords[ko]=íìºì¤í¸ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/po/cs/kasts.po new/kasts-23.04.3/po/cs/kasts.po --- old/kasts-23.04.2/po/cs/kasts.po 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/po/cs/kasts.po 2023-07-04 07:04:19.000000000 +0200 @@ -7,7 +7,7 @@ "Project-Id-Version: kasts\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-05-26 02:25+0000\n" -"PO-Revision-Date: 2023-03-01 16:22+0100\n" +"PO-Revision-Date: 2023-06-23 10:06+0200\n" "Last-Translator: Vit Pelcak <[email protected]>\n" "Language-Team: Czech <[email protected]>\n" "Language: cs\n" @@ -15,7 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Lokalize 22.12.3\n" +"X-Generator: Lokalize 23.04.2\n" #, kde-format msgctxt "NAME OF TRANSLATORS" @@ -337,7 +337,7 @@ #, kde-format msgctxt "@action:button" msgid "Open Sleep Timer Settings" -msgstr "" +msgstr "OtevÅÃt nastavenà Äasovánà uspánÃ" #: qml/Desktop/DesktopPlayerControls.qml:270 #: qml/Mobile/MobilePlayerControls.qml:345 @@ -375,7 +375,7 @@ #, kde-format msgctxt "@action:button" msgid "Sleep Timer" -msgstr "" +msgstr "ÄasovaÄ uspánÃ" #: qml/Desktop/DesktopPlayerControls.qml:413 #, kde-format @@ -386,14 +386,14 @@ #: qml/Mobile/MobilePlayerControls.qml:179 #, kde-format msgid "No Track Title" -msgstr "" +msgstr "Žádný název skladby" #: qml/Desktop/DesktopPlayerControls.qml:438 qml/Desktop/HeaderBar.qml:120 #: qml/Mobile/MobilePlayerControls.qml:21 #: qml/Mobile/MobilePlayerControls.qml:189 #, kde-format msgid "No Track Loaded" -msgstr "" +msgstr "Nebyla nalezena žádná skladba" #: qml/DiscoverPage.qml:16 qml/FeedListPage.qml:40 qml/main.qml:193 #, kde-format @@ -551,12 +551,12 @@ #: qml/EpisodeListPage.qml:93 qml/FeedDetailsPage.qml:366 #, kde-format msgid "No Episodes Available" -msgstr "" +msgstr "Nejsou k dispozici žádné epizody" #: qml/ErrorList.qml:30 #, kde-format msgid "No Errors Logged" -msgstr "" +msgstr "Nebyly zaznamenány žádné chyby" #: qml/ErrorList.qml:66 #, kde-format @@ -996,7 +996,7 @@ #: qml/Settings/GeneralSettingsPage.qml:44 #, kde-format msgid "Always show podcast titles in subscription view" -msgstr "" +msgstr "Vždy zobrazovat názvy podcastů v pohledu pÅihlášenÃ" #: qml/Settings/GeneralSettingsPage.qml:58 #, kde-format @@ -1054,12 +1054,12 @@ #: qml/Settings/GeneralSettingsPage.qml:144 #, kde-format msgid "Show time left instead of total track time" -msgstr "" +msgstr "Zobrazit zbývajÃcà Äas namÃsto celkové délky skladby" #: qml/Settings/GeneralSettingsPage.qml:154 #, kde-format msgid "Adjust time left based on current playback speed" -msgstr "" +msgstr "Upravit zbývajÃcà Äas podle rychlosti pÅehrávánÃ" #: qml/Settings/GeneralSettingsPage.qml:163 #, kde-format @@ -1085,12 +1085,12 @@ #: qml/Settings/GeneralSettingsPage.qml:196 #, kde-format msgid "Automatically fetch podcast updates on startup" -msgstr "" +msgstr "Automaticky stahovat aktualizace podcastů pÅi spuÅ¡tÄnÃ" #: qml/Settings/GeneralSettingsPage.qml:205 #, kde-format msgid "Update existing episode data on refresh (slower)" -msgstr "" +msgstr "Aktualizovat data existujÃcà epizody pÅi obnovenà (pomalejÅ¡Ã)" #: qml/Settings/GeneralSettingsPage.qml:215 #, kde-format @@ -1125,7 +1125,7 @@ #: qml/Settings/GeneralSettingsPage.qml:261 #, kde-format msgid "Reset play position after an episode is played" -msgstr "" +msgstr "Resetovat pozici pÅehrávánà poté, co je epizoda pÅehrána" #: qml/Settings/GeneralSettingsPage.qml:278 #, kde-format @@ -1318,12 +1318,12 @@ #: qml/Settings/SynchronizationSettingsPage.qml:69 #, kde-format msgid "Last full sync with server" -msgstr "" +msgstr "Poslednà plná synchronizace se serverem" #: qml/Settings/SynchronizationSettingsPage.qml:77 #, kde-format msgid "Last quick upload to sync server" -msgstr "" +msgstr "Poslednà rychlé odeslánà na synchronizaÄnà server" #: qml/Settings/SynchronizationSettingsPage.qml:91 #, kde-format @@ -1333,17 +1333,17 @@ #: qml/Settings/SynchronizationSettingsPage.qml:97 #, kde-format msgid "Do full sync on startup" -msgstr "" +msgstr "Provést plnou synchronizaci pÅi spuÅ¡tÄnÃ" #: qml/Settings/SynchronizationSettingsPage.qml:107 #, kde-format msgid "Do full sync when fetching podcasts" -msgstr "" +msgstr "Provést plnou synchronizaci pÅi stahovánà podcastů" #: qml/Settings/SynchronizationSettingsPage.qml:117 #, kde-format msgid "Upload episode play positions on play/pause toggle" -msgstr "" +msgstr "Odeslat pozice pÅehrávánà epizod pÅi stisknutà pÅehrát/pozastavit" #: qml/Settings/SynchronizationSettingsPage.qml:134 #, kde-format @@ -1353,7 +1353,7 @@ #: qml/Settings/SynchronizationSettingsPage.qml:139 #, kde-format msgid "Fetch all episode states from server" -msgstr "" +msgstr "Stáhnout stavy vÅ¡ech epizod ze serveru" #: qml/Settings/SynchronizationSettingsPage.qml:142 #, kde-format @@ -1363,7 +1363,7 @@ #: qml/Settings/SynchronizationSettingsPage.qml:154 #, kde-format msgid "Push all local episode states to server" -msgstr "" +msgstr "Odeslat stavy mÃstnÃch epizod na server" #: qml/Settings/SynchronizationSettingsPage.qml:158 #, kde-format @@ -1373,7 +1373,7 @@ #: qml/Settings/SynchronizationSettingsPage.qml:197 #, kde-format msgid "Push all local episode states to server?" -msgstr "" +msgstr "Odeslat stavy mÃstnÃch epizod na server?" #: qml/Settings/SynchronizationSettingsPage.qml:217 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/po/de/kasts.po new/kasts-23.04.3/po/de/kasts.po --- old/kasts-23.04.2/po/de/kasts.po 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/po/de/kasts.po 2023-07-04 07:04:19.000000000 +0200 @@ -15,7 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 22.07.70\n" +"X-Generator: Lokalize 23.07.70\n" #, kde-format msgctxt "NAME OF TRANSLATORS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/po/fi/kasts.po new/kasts-23.04.3/po/fi/kasts.po --- old/kasts-23.04.2/po/fi/kasts.po 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/po/fi/kasts.po 2023-07-04 07:04:19.000000000 +0200 @@ -15,7 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 20.12.0\n" +"X-Generator: Lokalize 23.04.1\n" #, kde-format msgctxt "NAME OF TRANSLATORS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/po/it/kasts.po new/kasts-23.04.3/po/it/kasts.po --- old/kasts-23.04.2/po/it/kasts.po 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/po/it/kasts.po 2023-07-04 07:04:19.000000000 +0200 @@ -15,7 +15,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 23.04.1\n" +"X-Generator: Lokalize 23.04.2\n" #, kde-format msgctxt "NAME OF TRANSLATORS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/po/zh_CN/kasts.po new/kasts-23.04.3/po/zh_CN/kasts.po --- old/kasts-23.04.2/po/zh_CN/kasts.po 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/po/zh_CN/kasts.po 2023-07-04 07:04:19.000000000 +0200 @@ -3,7 +3,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-05-26 02:25+0000\n" -"PO-Revision-Date: 2023-05-22 14:04\n" +"PO-Revision-Date: 2023-07-03 11:41\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/src/datamanager.cpp new/kasts-23.04.3/src/datamanager.cpp --- old/kasts-23.04.2/src/datamanager.cpp 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/src/datamanager.cpp 2023-07-04 07:04:19.000000000 +0200 @@ -127,31 +127,47 @@ Feed *DataManager::getFeed(const int index) const { - return getFeed(m_feedmap[index]); + if (index < m_feedmap.size()) { + return getFeed(m_feedmap[index]); + } + return nullptr; } Feed *DataManager::getFeed(const QString &feedurl) const { - if (m_feeds[feedurl] == nullptr) - loadFeed(feedurl); - return m_feeds[feedurl]; + if (m_feeds.contains(feedurl)) { + if (m_feeds[feedurl] == nullptr) { + loadFeed(feedurl); + } + return m_feeds[feedurl]; + } + return nullptr; } Entry *DataManager::getEntry(const int feed_index, const int entry_index) const { - return getEntry(m_entrymap[m_feedmap[feed_index]][entry_index]); + if (feed_index < m_feedmap.size() && entry_index < m_entrymap[m_feedmap[feed_index]].size()) { + return getEntry(m_entrymap[m_feedmap[feed_index]][entry_index]); + } + return nullptr; } Entry *DataManager::getEntry(const Feed *feed, const int entry_index) const { - return getEntry(m_entrymap[feed->url()][entry_index]); + if (feed && entry_index < m_entrymap[feed->url()].size()) { + return getEntry(m_entrymap[feed->url()][entry_index]); + } + return nullptr; } Entry *DataManager::getEntry(const QString &id) const { - if (m_entries[id] == nullptr) - loadEntry(id); - return m_entries[id]; + if (m_entries.contains(id)) { + if (m_entries[id] == nullptr) + loadEntry(id); + return m_entries[id]; + } + return nullptr; } int DataManager::feedCount() const @@ -196,14 +212,19 @@ { // Get feed pointer Feed *feed = getFeed(m_feedmap[index]); - removeFeed(feed); + if (feed) { + removeFeed(feed); + } } void DataManager::removeFeeds(const QStringList &feedurls) { QList<Feed *> feeds; for (QString feedurl : feedurls) { - feeds << getFeed(feedurl); + Feed *feed = getFeed(feedurl); + if (feed) { + feeds << feed; + } } removeFeeds(feeds); } @@ -213,7 +234,9 @@ QList<Feed *> feeds; for (QVariant feedVariant : feedVariantList) { if (feedVariant.canConvert<Feed *>()) { - feeds << feedVariant.value<Feed *>(); + if (feedVariant.value<Feed *>()) { + feeds << feedVariant.value<Feed *>(); + } } } removeFeeds(feeds); @@ -222,83 +245,85 @@ void DataManager::removeFeeds(const QList<Feed *> &feeds) { for (Feed *feed : feeds) { - const QString feedurl = feed->url(); - int index = m_feedmap.indexOf(feedurl); - - qCDebug(kastsDataManager) << "deleting feed" << feedurl << "with index" << index; - - // Delete the object instances and mappings - // First delete entries in Queue - qCDebug(kastsDataManager) << "delete queueentries of" << feedurl; - QStringList removeFromQueueList; - for (auto &id : m_queuemap) { - if (getEntry(id)->feed()->url() == feedurl) { - if (AudioManager::instance().entry() == getEntry(id)) { - AudioManager::instance().next(); + if (feed) { + const QString feedurl = feed->url(); + int index = m_feedmap.indexOf(feedurl); + + qCDebug(kastsDataManager) << "deleting feed" << feedurl << "with index" << index; + + // Delete the object instances and mappings + // First delete entries in Queue + qCDebug(kastsDataManager) << "delete queueentries of" << feedurl; + QStringList removeFromQueueList; + for (auto &id : m_queuemap) { + if (getEntry(id)->feed()->url() == feedurl) { + if (AudioManager::instance().entry() == getEntry(id)) { + AudioManager::instance().next(); + } + removeFromQueueList += id; } - removeFromQueueList += id; } - } - bulkQueueStatus(false, removeFromQueueList); + bulkQueueStatus(false, removeFromQueueList); - // Delete entries themselves - qCDebug(kastsDataManager) << "delete entries of" << feedurl; - for (auto &id : m_entrymap[feedurl]) { - if (getEntry(id)->hasEnclosure()) - getEntry(id)->enclosure()->deleteFile(); // delete enclosure (if it exists) - if (!getEntry(id)->image().isEmpty()) - StorageManager::instance().removeImage(getEntry(id)->image()); // delete entry images - delete m_entries[id]; // delete pointer - m_entries.remove(id); // delete the hash key - } - m_entrymap.remove(feedurl); // remove all the entry mappings belonging to the feed + // Delete entries themselves + qCDebug(kastsDataManager) << "delete entries of" << feedurl; + for (auto &id : m_entrymap[feedurl]) { + if (getEntry(id)->hasEnclosure()) + getEntry(id)->enclosure()->deleteFile(); // delete enclosure (if it exists) + if (!getEntry(id)->image().isEmpty()) + StorageManager::instance().removeImage(getEntry(id)->image()); // delete entry images + delete m_entries[id]; // delete pointer + m_entries.remove(id); // delete the hash key + } + m_entrymap.remove(feedurl); // remove all the entry mappings belonging to the feed - qCDebug(kastsDataManager) << "Remove feed image" << feed->image() << "for feed" << feedurl; - if (!feed->image().isEmpty()) - StorageManager::instance().removeImage(feed->image()); - m_feeds.remove(m_feedmap[index]); // remove from m_feeds - m_feedmap.removeAt(index); // remove from m_feedmap - delete feed; // remove the pointer - - // Then delete everything from the database - qCDebug(kastsDataManager) << "delete database part of" << feedurl; - - // Delete related Errors - QSqlQuery query; - query.prepare(QStringLiteral("DELETE FROM Errors WHERE url=:url;")); - query.bindValue(QStringLiteral(":url"), feedurl); - Database::instance().execute(query); - - // Delete Authors - query.prepare(QStringLiteral("DELETE FROM Authors WHERE feed=:feed;")); - query.bindValue(QStringLiteral(":feed"), feedurl); - Database::instance().execute(query); - - // Delete Chapters - query.prepare(QStringLiteral("DELETE FROM Chapters WHERE feed=:feed;")); - query.bindValue(QStringLiteral(":feed"), feedurl); - Database::instance().execute(query); - - // Delete Entries - query.prepare(QStringLiteral("DELETE FROM Entries WHERE feed=:feed;")); - query.bindValue(QStringLiteral(":feed"), feedurl); - Database::instance().execute(query); - - // Delete Enclosures - query.prepare(QStringLiteral("DELETE FROM Enclosures WHERE feed=:feed;")); - query.bindValue(QStringLiteral(":feed"), feedurl); - Database::instance().execute(query); - - // Delete Feed - query.prepare(QStringLiteral("DELETE FROM Feeds WHERE url=:url;")); - query.bindValue(QStringLiteral(":url"), feedurl); - Database::instance().execute(query); - - // Save this action to the database (including timestamp) in order to be - // able to sync with remote services - Sync::instance().storeRemoveFeedAction(feedurl); + qCDebug(kastsDataManager) << "Remove feed image" << feed->image() << "for feed" << feedurl; + if (!feed->image().isEmpty()) + StorageManager::instance().removeImage(feed->image()); + m_feeds.remove(m_feedmap[index]); // remove from m_feeds + m_feedmap.removeAt(index); // remove from m_feedmap + delete feed; // remove the pointer + + // Then delete everything from the database + qCDebug(kastsDataManager) << "delete database part of" << feedurl; + + // Delete related Errors + QSqlQuery query; + query.prepare(QStringLiteral("DELETE FROM Errors WHERE url=:url;")); + query.bindValue(QStringLiteral(":url"), feedurl); + Database::instance().execute(query); + + // Delete Authors + query.prepare(QStringLiteral("DELETE FROM Authors WHERE feed=:feed;")); + query.bindValue(QStringLiteral(":feed"), feedurl); + Database::instance().execute(query); + + // Delete Chapters + query.prepare(QStringLiteral("DELETE FROM Chapters WHERE feed=:feed;")); + query.bindValue(QStringLiteral(":feed"), feedurl); + Database::instance().execute(query); + + // Delete Entries + query.prepare(QStringLiteral("DELETE FROM Entries WHERE feed=:feed;")); + query.bindValue(QStringLiteral(":feed"), feedurl); + Database::instance().execute(query); + + // Delete Enclosures + query.prepare(QStringLiteral("DELETE FROM Enclosures WHERE feed=:feed;")); + query.bindValue(QStringLiteral(":feed"), feedurl); + Database::instance().execute(query); + + // Delete Feed + query.prepare(QStringLiteral("DELETE FROM Feeds WHERE url=:url;")); + query.bindValue(QStringLiteral(":url"), feedurl); + Database::instance().execute(query); + + // Save this action to the database (including timestamp) in order to be + // able to sync with remote services + Sync::instance().storeRemoveFeedAction(feedurl); - Q_EMIT feedRemoved(index); + Q_EMIT feedRemoved(index); + } } // if settings allow, then upload these changes immediately to sync server diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kasts-23.04.2/src/kmediasession/mediabackends/vlcmediabackend.cpp new/kasts-23.04.3/src/kmediasession/mediabackends/vlcmediabackend.cpp --- old/kasts-23.04.2/src/kmediasession/mediabackends/vlcmediabackend.cpp 2023-06-02 21:46:00.000000000 +0200 +++ new/kasts-23.04.3/src/kmediasession/mediabackends/vlcmediabackend.cpp 2023-07-04 07:04:19.000000000 +0200 @@ -679,16 +679,16 @@ void VlcMediaBackendPrivate::parseMetaData() { qCDebug(VlcSignalsLog) << "VlcMediaBackendPrivate::parseMetaData()"; - if (mKMediaSession->metaData()->title().isEmpty()) { + if (mMedia && mKMediaSession->metaData()->title().isEmpty()) { mKMediaSession->metaData()->setTitle(QString::fromUtf8(libvlc_media_get_meta(mMedia, libvlc_meta_Title))); } - if (mKMediaSession->metaData()->artist().isEmpty()) { + if (mMedia && mKMediaSession->metaData()->artist().isEmpty()) { mKMediaSession->metaData()->setArtist(QString::fromUtf8(libvlc_media_get_meta(mMedia, libvlc_meta_Artist))); } - if (mKMediaSession->metaData()->album().isEmpty()) { + if (mMedia && mKMediaSession->metaData()->album().isEmpty()) { mKMediaSession->metaData()->setAlbum(QString::fromUtf8(libvlc_media_get_meta(mMedia, libvlc_meta_Album))); } - if (mKMediaSession->metaData()->artworkUrl().isEmpty()) { + if (mMedia && mKMediaSession->metaData()->artworkUrl().isEmpty()) { mKMediaSession->metaData()->setArtworkUrl(QUrl(QString::fromUtf8(libvlc_media_get_meta(mMedia, libvlc_meta_ArtworkURL)))); } }
