public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/amarok] epel10.2: pul in more upstream fixes
@ 2026-07-06 18:32 Rex Dieter
  0 siblings, 0 replies; 2+ messages in thread
From: Rex Dieter @ 2026-07-06 18:32 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/amarok
Branch : epel10.2
Commit : 631dbbb88c7fd76f069c9183ee7dcd6c06b84692
Author : Rex Dieter <rdieter@math.unl.edu>
Date   : 2017-04-03T11:48:12-05:00
Stats  : +1085/-23 in 12 file(s)
URL    : https://src.fedoraproject.org/rpms/amarok/c/631dbbb88c7fd76f069c9183ee7dcd6c06b84692?branch=epel10.2

Log:
pul in more upstream fixes

---
diff --git a/0027-Organize-tracks-Guess-tags-presets-persisted-properl.patch b/0027-Organize-tracks-Guess-tags-presets-persisted-properl.patch
new file mode 100644
index 0000000..c84ef51
--- /dev/null
+++ b/0027-Organize-tracks-Guess-tags-presets-persisted-properl.patch
@@ -0,0 +1,383 @@
+From 0e760e5f8d06d00e084c14b64875f58bb42bd8f1 Mon Sep 17 00:00:00 2001
+From: Stefano Pettini <stefano.pettini@gmail.com>
+Date: Sun, 31 Jul 2016 22:32:11 +0200
+Subject: [PATCH 27/47] Organize tracks / Guess tags presets persisted
+ properly.
+
+FilenameLayoutWidget is reworked to fix an old bug regarding the presets
+not being saved properly, that I was also able to reproduce.
+
+Logic is not a bit more "linear". Presets are shared between "Organize tracks"
+and "Guess tags" dialog. If this is not what is wanted, it can be easily changed,
+just let me know. Presets are saved as soon as they are added, updated or deleted.
+It is not anymore necessary to accept the dialog to save eventual changes.
+
+The preset used is not saved with the marker "#DELIM#selected" anymore.
+Presets are just presets. The one used is matched on the fly using the custom
+preset field. If a preset matches the custom preset field, it's considered
+selected. Users can of course create custom presets as before.
+While presets are shared between the two dialogs, custom presets are not.
+
+Add/Update/Remove work properly. Clicking on a preset name in the combobox
+resets the custom pattern to the preset value, this is a new feature,
+before it was not possible.
+
+It's a bit difficult to explain, but UX is more natural, just give it a try.
+
+A lot of testing was done (by Stefano), like:
+- adding/updating/removing presets.
+- if settings are persisted and shared when dialogs are cancelled or accepted.
+- if custom patterns are persisted and not shared.
+- resetting a modified pattern to its defualt.
+- cancelling dialogs, modified presets are kept but custom patterns are not.
+
+REVIEW: 128565
+BUG: 226144
+---
+ ChangeLog                                |   4 +-
+ src/amarokconfig.kcfg                    |   2 +-
+ src/dialogs/OrganizeCollectionDialog.cpp |   5 --
+ src/dialogs/OrganizeCollectionDialog.h   |   2 -
+ src/widgets/FilenameLayoutWidget.cpp     | 102 ++++++++++++++++---------------
+ src/widgets/FilenameLayoutWidget.h       |  10 ++-
+ 6 files changed, 61 insertions(+), 64 deletions(-)
+
+diff --git a/src/amarokconfig.kcfg b/src/amarokconfig.kcfg
+index c35140c..b41ca5b 100644
+--- a/src/amarokconfig.kcfg
++++ b/src/amarokconfig.kcfg
+@@ -183,7 +183,7 @@
+     <entry key="Format Presets" type="StringList">
+         <label>Format Presets</label>
+         <whatsthis>A list of preset formats (token schemas).</whatsthis>
+-        <default>Default#DELIM#%artist%/%album%/%track%_-_%title%#DELIM#selected</default>
++        <default>Default#DELIM#%artist%/%album%/%track%_-_%title%</default>
+     </entry>
+ </group>
+ 
+diff --git a/src/dialogs/OrganizeCollectionDialog.cpp b/src/dialogs/OrganizeCollectionDialog.cpp
+index 973e9cb..ffeabc9 100644
+--- a/src/dialogs/OrganizeCollectionDialog.cpp
++++ b/src/dialogs/OrganizeCollectionDialog.cpp
+@@ -139,8 +139,6 @@ OrganizeCollectionDialog::OrganizeCollectionDialog( const Meta::TrackList &track
+                                                     QFlags<KDialog::ButtonCode> buttonMask )
+     : KDialog( parent )
+     , ui( new Ui::OrganizeCollectionDialogBase )
+-    , m_detailed( true )
+-    , m_schemeModified( false )
+     , m_conflict( false )
+ {
+     Q_UNUSED( name )
+@@ -196,7 +194,6 @@ OrganizeCollectionDialog::OrganizeCollectionDialog( const Meta::TrackList &track
+     // to show the conflict error
+     connect( ui->overwriteCheck, SIGNAL(stateChanged(int)), SLOT(slotOverwriteModeChanged()) );
+ 
+-    connect( this, SIGNAL(finished(int)), ui->organizeCollectionWidget, SLOT(slotSaveFormatList()) );
+     connect( this, SIGNAL(accepted()), ui->organizeCollectionWidget, SLOT(onAccept()) );
+     connect( this, SIGNAL(accepted()), SLOT(slotDialogAccepted()) );
+     connect( ui->folderCombo, SIGNAL(currentIndexChanged(QString)),
+@@ -397,8 +394,6 @@ OrganizeCollectionDialog::slotDialogAccepted()
+     AmarokConfig::setAsciiOnly( ui->optionsWidget->asciiOnly() );
+     AmarokConfig::setReplacementRegexp( ui->optionsWidget->regexpText() );
+     AmarokConfig::setReplacementString( ui->optionsWidget->replaceText() );
+-
+-    ui->organizeCollectionWidget->onAccept();
+ }
+ 
+ //The Ok button should be disabled when there's no collection root selected, and when there is no .%filetype in format string
+diff --git a/src/dialogs/OrganizeCollectionDialog.h b/src/dialogs/OrganizeCollectionDialog.h
+index 88fa08d..8d57f4a 100644
+--- a/src/dialogs/OrganizeCollectionDialog.h
++++ b/src/dialogs/OrganizeCollectionDialog.h
+@@ -116,10 +116,8 @@ class AMAROK_EXPORT OrganizeCollectionDialog : public KDialog
+         Ui::OrganizeCollectionDialogBase *ui;
+ 
+         TrackOrganizer *m_trackOrganizer;
+-        bool m_detailed;
+         Meta::TrackList m_allTracks;
+         QString m_targetFileExtension;
+-        bool m_schemeModified;
+ 
+         QStringList m_originals;
+         QStringList m_previews;
+diff --git a/src/widgets/FilenameLayoutWidget.cpp b/src/widgets/FilenameLayoutWidget.cpp
+index 8d189cf..6d01743 100644
+--- a/src/widgets/FilenameLayoutWidget.cpp
++++ b/src/widgets/FilenameLayoutWidget.cpp
+@@ -90,14 +90,15 @@ FilenameLayoutWidget::FilenameLayoutWidget( QWidget *parent )
+ 
+     // - the preset buttons
+     m_addPresetButton = new QPushButton( i18n("Add preset"), this );
+-    m_addPresetButton->setToolTip( i18n("Saves the current scheme/format above as a preset.") );
++    m_addPresetButton->setToolTip( i18n("Saves the current scheme/format as new preset.") );
+     presetLayout1->addWidget( m_addPresetButton, 0 );
+ 
+     m_updatePresetButton = new QPushButton( i18n("Update preset"), this );
++    m_updatePresetButton->setToolTip( i18n("Updates the preset with the current scheme/format.") );
+     presetLayout1->addWidget( m_updatePresetButton, 0 );
+ 
+     m_removePresetButton = new QPushButton( i18n("Remove preset"), this );
+-    m_removePresetButton->setToolTip( i18n("Removes the currently selected format preset") );
++    m_removePresetButton->setToolTip( i18n("Removes the currently selected preset.") );
+     presetLayout1->addWidget( m_removePresetButton, 0 );
+ 
+     schemeGroupLayout->addLayout( presetLayout1 );
+@@ -167,7 +168,8 @@ FilenameLayoutWidget::FilenameLayoutWidget( QWidget *parent )
+ 
+     connect( m_filenameLayoutEdit, SIGNAL(textChanged(QString)),
+              this, SIGNAL(schemeChanged()) );
+-debug() << "st3.1";
++    connect( m_filenameLayoutEdit, SIGNAL(textChanged(QString)),
++             this, SLOT(slotUpdatePresetButton()) );
+ }
+ 
+ Token*
+@@ -233,16 +235,17 @@ FilenameLayoutWidget::createStaticToken(qint64 value) const
+ void
+ FilenameLayoutWidget::onAccept()    //SLOT
+ {
+-    slotSaveFormatList();
++    QString custom = getParsableScheme();
++
++    // Custom scheme is stored per dialog
++    debug() << "--- saving custom scheme for" << m_configCategory << custom;
++    Amarok::config( m_configCategory ).writeEntry( "Custom Scheme", custom );
+ }
+ 
+ QString
+ FilenameLayoutWidget::getParsableScheme() const
+ {
+-    QString scheme = m_advancedMode ? m_filenameLayoutEdit->text() : dropTargetScheme();
+-
+-    Amarok::config( m_configCategory ).writeEntry( "Custom Scheme", scheme );
+-    return scheme;
++    return m_advancedMode ? m_filenameLayoutEdit->text() : dropTargetScheme();
+ }
+ 
+ // attempts to set the scheme
+@@ -255,8 +258,6 @@ void FilenameLayoutWidget::setScheme(const QString& scheme)
+     emit schemeChanged();
+ }
+ 
+-
+-
+ //Handles the modifications to the dialog to toggle between advanced and basic editing mode.
+ void
+ FilenameLayoutWidget::toggleAdvancedMode()
+@@ -287,7 +288,6 @@ FilenameLayoutWidget::setAdvancedMode( bool isAdvanced )
+     Amarok::config( m_configCategory ).writeEntry( "Mode", entryValue );
+ }
+ 
+-
+ QString
+ FilenameLayoutWidget::dropTargetScheme() const
+ {
+@@ -342,28 +342,34 @@ FilenameLayoutWidget::populateConfiguration()
+     QString mode = Amarok::config( m_configCategory ).readEntry( "Mode" );
+     setAdvancedMode( mode == QLatin1String( "Advanced" ) );
+ 
+-    setScheme( Amarok::config( m_configCategory ).readEntryUntranslated( "Custom Scheme" ) );
++    // Custom scheme is stored per dialog
++    QString custom = Amarok::config( m_configCategory ).readEntryUntranslated( "Custom Scheme" );
++    debug() << "--- got custom scheme for" << m_configCategory << custom;
+ 
+-    populateFormatList();
+-}
++    populateFormatList( custom );
+ 
++    setScheme( custom );
++}
+ 
+ void
+-FilenameLayoutWidget::populateFormatList()
++FilenameLayoutWidget::populateFormatList( const QString& custom )
+ {
+     DEBUG_BLOCK
+ 
++    // Configuration is not symmetric: dialog-specific settings are saved
++    // using m_configCategory, that is different per dialog. The presets are saved
++    // only in one single place, so these can be shared. This place is the "default" one,
++    // that is the configuration for OrganizeCollectionDialog.
++
+     // items are stored in the config list in the following format:
+-    // Label#DELIM#format string#DELIM#selected
+-    // the last item to have the third parameter is the default selected preset
+-    // the third param isnis optional
++    // Label#DELIM#format string
+     QStringList presets_raw;
+     int selected_index = -1;
+     m_presetCombo->clear();
+-    presets_raw = AmarokConfig::formatPresets();
++    presets_raw = AmarokConfig::formatPresets(); // Always use the one in OrganizeCollectionDialog
+     // presets_raw = Amarok::config( m_configCategory ).readEntry( QString::fromLatin1( "Format Presets" ), QStringList() );
+ 
+-    debug() << "--- got preset for" << m_configCategory << presets_raw;
++    debug() << "--- got presets" << presets_raw;
+ 
+     foreach( const QString &str, presets_raw )
+     {
+@@ -372,49 +378,44 @@ FilenameLayoutWidget::populateFormatList()
+         if( items.size() < 2 )
+             continue;
+         m_presetCombo->addItem( items.at( 0 ), items.at( 1 ) ); // Label, format string
+-        if( items.size() == 3 )
++        if( items.at( 1 ) == custom )
+             selected_index = m_presetCombo->findData( items.at( 1 ) );
+     }
+ 
+-    if( selected_index > 0 )
++    if( selected_index >= 0 )
+         m_presetCombo->setCurrentIndex( selected_index );
+ 
+-    slotFormatPresetSelected( selected_index );
++    connect( m_presetCombo, SIGNAL(activated(int)), this, SLOT(slotFormatPresetSelected(int)) );
+     connect( m_presetCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotFormatPresetSelected(int)) );
+ }
+ 
+ void
+-FilenameLayoutWidget::slotUpdatePresetButton()
+-{
+-    QString comboScheme = m_presetCombo->itemData( m_presetCombo->currentIndex() ).  toString();
+-    m_updatePresetButton->setEnabled( comboScheme != getParsableScheme() );
+-}
+-
+-void
+-FilenameLayoutWidget::slotSaveFormatList()
++FilenameLayoutWidget::saveFormatList() const
+ {
+-    if( !m_formatListModified )
+-        return;
++    DEBUG_BLOCK
+ 
+-    QStringList presets;
++    QStringList presets_raw;
+     int n = m_presetCombo->count();
+-    int current_idx = m_presetCombo->currentIndex();
+ 
+     for( int i = 0; i < n; ++i )
+     {
+-        QString item;
+-        if( i == current_idx )
+-            item = "%1#DELIM#%2#DELIM#selected";
+-        else
+-            item = "%1#DELIM#%2";
+-
++        QString item = "%1#DELIM#%2";
+         QString scheme = m_presetCombo->itemData( i ).toString();
+         QString label = m_presetCombo->itemText( i );
+         item = item.arg( label, scheme );
+-        presets.append( item );
++        presets_raw.append( item );
+     }
+ 
+-   Amarok::config( m_configCategory ).writeEntry( QString::fromLatin1( "Format Presets" ), presets );
++   debug() << "--- saving presets" << presets_raw;
++   AmarokConfig::setFormatPresets( presets_raw ); // Always use the one in OrganizeCollectionDialog
++   // Amarok::config( m_configCategory ).writeEntry( QString::fromLatin1( "Format Presets" ), presets_raw );
++}
++
++void
++FilenameLayoutWidget::slotUpdatePresetButton()
++{
++    QString comboScheme = m_presetCombo->itemData( m_presetCombo->currentIndex() ).toString();
++    m_updatePresetButton->setEnabled( comboScheme != getParsableScheme() );
+ }
+ 
+ void
+@@ -428,14 +429,15 @@ void
+ FilenameLayoutWidget::slotAddFormat()
+ {
+     bool ok = false;
+-    QString name = KInputDialog::getText( i18n( "New Format Preset" ), i18n( "Preset Name" ), i18n( "New Preset" ),  &ok, this );
++    QString name = KInputDialog::getText( i18n( "New Preset" ), i18n( "Preset Name" ), i18n( "New Preset" ), &ok, this );
+     if( !ok )
+         return; // user canceled.
+ 
+     QString format = getParsableScheme();
+-    m_presetCombo->insertItem(0, name, format);
+-    m_presetCombo->setCurrentIndex( 0 );
+-    m_formatListModified = true;
++    m_presetCombo->addItem( name, format );
++    m_presetCombo->setCurrentIndex( m_presetCombo->count() - 1 );
++
++    saveFormatList();
+ }
+ 
+ void
+@@ -443,7 +445,8 @@ FilenameLayoutWidget::slotRemoveFormat()
+ {
+     int idx = m_presetCombo->currentIndex();
+     m_presetCombo->removeItem( idx );
+-    m_formatListModified = true;
++
++    saveFormatList();
+ }
+ 
+ void
+@@ -453,5 +456,6 @@ FilenameLayoutWidget::slotUpdateFormat()
+     QString formatString = getParsableScheme();
+     m_presetCombo->setItemData( idx, formatString );
+     m_updatePresetButton->setEnabled( false );
+-    m_formatListModified = true;
++
++    saveFormatList();
+ }
+diff --git a/src/widgets/FilenameLayoutWidget.h b/src/widgets/FilenameLayoutWidget.h
+index 9fb2678..8f6e35a 100644
+--- a/src/widgets/FilenameLayoutWidget.h
++++ b/src/widgets/FilenameLayoutWidget.h
+@@ -70,7 +70,6 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+             , CollectionRoot
+         };
+ 
+-
+         explicit FilenameLayoutWidget( QWidget *parent = 0 );
+         virtual ~FilenameLayoutWidget() {}
+ 
+@@ -78,7 +77,6 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+ 
+         void setScheme( const QString &scheme );
+ 
+-
+     public slots:
+         virtual void onAccept();
+ 
+@@ -91,7 +89,6 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+ 
+         /* Updates the update preset button */
+         void slotUpdatePresetButton();
+-        void slotSaveFormatList();
+         void slotFormatPresetSelected( int );
+         void slotAddFormat();
+         void slotRemoveFormat();
+@@ -109,7 +106,6 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+         /** Fills the m_dropTarget according to the given string scheme. */
+         void inferScheme( const QString &scheme );
+ 
+-        bool m_formatListModified;
+         bool m_advancedMode;
+ 
+     protected:
+@@ -119,7 +115,10 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+         void populateConfiguration();
+ 
+         /** Populates the preset combo box */
+-        void populateFormatList();
++        void populateFormatList( const QString &custom );
++
++        /** Saves the preset combo box */
++        void saveFormatList() const;
+ 
+         virtual Token* createToken(qint64 value) const;
+ 
+@@ -145,7 +144,6 @@ class AMAROK_EXPORT FilenameLayoutWidget : public QWidget
+         QFrame *m_filenameLayout;
+         KLineEdit *m_filenameLayoutEdit;
+ 
+-
+         /** The name of the category used for storing the configuration */
+         QString m_configCategory;
+ };
+-- 
+2.9.3
+

diff --git a/0028-Fix-for-C-warnings-about-unused-variables-and-deprec.patch b/0028-Fix-for-C-warnings-about-unused-variables-and-deprec.patch
new file mode 100644
index 0000000..411f5a1
--- /dev/null
+++ b/0028-Fix-for-C-warnings-about-unused-variables-and-deprec.patch
@@ -0,0 +1,126 @@
+From 970e985d6100070aa105dd602da8c294687385ac Mon Sep 17 00:00:00 2001
+From: Stefano Pettini <stefano.pettini@gmail.com>
+Date: Fri, 17 Jun 2016 23:44:16 +0200
+Subject: [PATCH 28/47] Fix for C++ warnings about unused variables and
+ deprecated functions
+
+Thank you, Stefano!
+
+REVIEW: 127458
+---
+ src/configdialog/dialogs/DatabaseConfig.cpp                        | 2 --
+ src/core-impl/collections/db/sql/SqlScanResultProcessor.cpp        | 2 +-
+ .../storage/sql/mysqlserverstorage/MySqlServerStorageFactory.cpp   | 1 +
+ src/services/mp3tunes/harmonydaemon/Mp3tunesHarmonyDaemon.cpp      | 7 +++++--
+ src/services/mp3tunes/libmp3tunes/harmony.c                        | 4 ++--
+ src/statemanagement/DefaultApplicationController.cpp               | 2 ++
+ 6 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/src/configdialog/dialogs/DatabaseConfig.cpp b/src/configdialog/dialogs/DatabaseConfig.cpp
+index 1cb2d97..ff4f6c5 100644
+--- a/src/configdialog/dialogs/DatabaseConfig.cpp
++++ b/src/configdialog/dialogs/DatabaseConfig.cpp
+@@ -82,7 +82,6 @@ DatabaseConfig::testDatabaseConnection() //SLOT
+     factories = Plugins::PluginManager::instance()->factories( Plugins::PluginManager::Storage );
+ 
+     // try if they have a testSettings slot that we can call
+-    bool tested = false;
+     foreach( Plugins::PluginFactory* factory, factories )
+     {
+         bool callSucceeded = false;
+@@ -100,7 +99,6 @@ DatabaseConfig::testDatabaseConnection() //SLOT
+ 
+         if( callSucceeded )
+         {
+-            tested = true;
+             if( connectionErrors.isEmpty() )
+                 KMessageBox::messageBox( this, KMessageBox::Information,
+                                          i18n( "Amarok was able to establish a successful connection to the database." ),
+diff --git a/src/core-impl/collections/db/sql/SqlScanResultProcessor.cpp b/src/core-impl/collections/db/sql/SqlScanResultProcessor.cpp
+index 71589a0..367c02a 100644
+--- a/src/core-impl/collections/db/sql/SqlScanResultProcessor.cpp
++++ b/src/core-impl/collections/db/sql/SqlScanResultProcessor.cpp
+@@ -301,7 +301,7 @@ SqlScanResultProcessor::commitTrack( CollectionScanner::Track *track,
+     metaTrack->setType( track->filetype() );
+ 
+     if( m_type == GenericScanManager::FullScan ||
+-        !track->bpm() >= 0 )
++        track->bpm() >= 0 )
+         metaTrack->setBpm( track->bpm() );
+ 
+     if( m_type == GenericScanManager::FullScan ||
+diff --git a/src/core-impl/storage/sql/mysqlserverstorage/MySqlServerStorageFactory.cpp b/src/core-impl/storage/sql/mysqlserverstorage/MySqlServerStorageFactory.cpp
+index 5cdb693..6f9ee59 100644
+--- a/src/core-impl/storage/sql/mysqlserverstorage/MySqlServerStorageFactory.cpp
++++ b/src/core-impl/storage/sql/mysqlserverstorage/MySqlServerStorageFactory.cpp
+@@ -69,6 +69,7 @@ MySqlServerStorageFactory::testSettings( const QString &host, const QString &use
+ 
+     MySqlServerStorage* storage = new MySqlServerStorage();
+     bool initResult = storage->init( host, user, password, port, databaseName );
++    Q_UNUSED( initResult );
+ 
+     // we are just interested in the errors.
+     errors = storage->getLastErrors();
+diff --git a/src/services/mp3tunes/harmonydaemon/Mp3tunesHarmonyDaemon.cpp b/src/services/mp3tunes/harmonydaemon/Mp3tunesHarmonyDaemon.cpp
+index 5b09f07..d8ae295 100644
+--- a/src/services/mp3tunes/harmonydaemon/Mp3tunesHarmonyDaemon.cpp
++++ b/src/services/mp3tunes/harmonydaemon/Mp3tunesHarmonyDaemon.cpp
+@@ -155,8 +155,11 @@ Mp3tunesHarmonyDaemon::init()
+ {
+ 
+     qDebug()  << "Begin initing";
+-        /* g_type_init required for using the GObjects for Harmony. */
+-    g_type_init();
++
++#if !GLIB_CHECK_VERSION(2,36,0)
++    /* g_type_init required for using the GObjects in versions of glib older than 2.36. */
++    g_type_init ();
++#endif
+ 
+     m_harmony = mp3tunes_harmony_new();
+ 
+diff --git a/src/services/mp3tunes/libmp3tunes/harmony.c b/src/services/mp3tunes/libmp3tunes/harmony.c
+index ead0345..df00be2 100644
+--- a/src/services/mp3tunes/libmp3tunes/harmony.c
++++ b/src/services/mp3tunes/libmp3tunes/harmony.c
+@@ -643,7 +643,7 @@ gboolean mp3tunes_harmony_disconnect(MP3tunesHarmony *harmony, GError** err) {
+     gboolean success = close_connection(harmony);
+     harmony->connected = FALSE;
+     if (success == FALSE) {
+-        err = &harmony->error;
++        *err = harmony->error;
+         return success;
+     }
+     return success;
+@@ -658,7 +658,7 @@ gboolean mp3tunes_harmony_connect(MP3tunesHarmony* harmony, GError** err) {
+     success = open_connection(harmony);
+ 
+     if (success == FALSE) {
+-        err = &harmony->error;
++        *err = harmony->error;
+         mp3tunes_harmony_disconnect(harmony, err);
+         return success;
+     }
+diff --git a/src/statemanagement/DefaultApplicationController.cpp b/src/statemanagement/DefaultApplicationController.cpp
+index 5886789..acc4213 100644
+--- a/src/statemanagement/DefaultApplicationController.cpp
++++ b/src/statemanagement/DefaultApplicationController.cpp
+@@ -32,6 +32,7 @@ DefaultApplicationController::DefaultApplicationController( QObject *parent )
+     //there can be only one applicationcontroller
+     ApplicationController *oldController = Components::setApplicationController( this );
+     Q_ASSERT( !oldController );
++    Q_UNUSED( oldController );
+ }
+ 
+ DefaultApplicationController::~DefaultApplicationController()
+@@ -88,6 +89,7 @@ DefaultApplicationController::initEngineController()
+     Components::setEngineController( controller );
+     bool invoked = QMetaObject::invokeMethod( controller, "initializePhonon", Qt::DirectConnection );
+     Q_ASSERT( invoked );
++    Q_UNUSED( invoked );
+ }
+ 
+ void
+-- 
+2.9.3
+

diff --git a/0029-Fix-MPRIS2-DesktopEntry-value.patch b/0029-Fix-MPRIS2-DesktopEntry-value.patch
new file mode 100644
index 0000000..111b9fd
--- /dev/null
+++ b/0029-Fix-MPRIS2-DesktopEntry-value.patch
@@ -0,0 +1,45 @@
+From 9449ec56d1fd77a0bfa1f7134a2bf4f91ffd14d3 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Sat, 20 Aug 2016 13:09:02 +0200
+Subject: [PATCH 29/47] Fix MPRIS2 DesktopEntry value
+
+According to the MPRIS2 spec, the DesktopEntry value should be
+"the basename of the .desktop file" [1], not the desktop-file-id. So
+for amarok it should be "amarok" and not "kde4-amarok", regardless of
+where the desktop file is installed. This fixes displaying MPRIS
+controls in the Amarok taskbar tooltip in Plasma 5.7
+
+[1] https://specifications.freedesktop.org/mpris-spec/latest/Media_Player.html#Property:DesktopEntry
+
+Testing done by Antonio:
+
+Player controls are displayed again in the Amarok taskbar tooltip in Plasma 5.7.
+
+REVIEW: 128418
+BUG: 365275
+FIXED-IN: 2.9
+---
+ ChangeLog                        | 2 ++
+ src/dbus/mpris2/MediaPlayer2.cpp | 6 +-----
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/dbus/mpris2/MediaPlayer2.cpp b/src/dbus/mpris2/MediaPlayer2.cpp
+index cbe1a2a..a1d1bda 100644
+--- a/src/dbus/mpris2/MediaPlayer2.cpp
++++ b/src/dbus/mpris2/MediaPlayer2.cpp
+@@ -94,11 +94,7 @@ QString MediaPlayer2::Identity() const
+ 
+ QString MediaPlayer2::DesktopEntry() const
+ {
+-    // Amarok desktop file is installed in $prefix/share/applications/kde4/
+-    // rather than in $prefix/share/applications. The standard way to
+-    // represent this dir is with a "kde4-" prefix. See:
+-    // http://standards.freedesktop.org/menu-spec/1.0/go01.html#term-desktop-file-id
+-    return QLatin1String("kde4-amarok");
++    return QLatin1String("amarok");
+ }
+ 
+ QStringList MediaPlayer2::SupportedUriSchemes() const
+-- 
+2.9.3
+

diff --git a/0030-Fix-Collection-Browser-auto-expand-after-search-expa.patch b/0030-Fix-Collection-Browser-auto-expand-after-search-expa.patch
new file mode 100644
index 0000000..ae568bd
--- /dev/null
+++ b/0030-Fix-Collection-Browser-auto-expand-after-search-expa.patch
@@ -0,0 +1,130 @@
+From 9fb00e5a97574af3f0cb22d740da7e0cd0761d78 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Mat=C4=9Bj=20Laitl?= <matej@laitl.cz>
+Date: Mon, 17 Oct 2016 00:03:13 +0200
+Subject: [PATCH 30/47] Fix Collection Browser auto-expand after search
+ expanding too little
+
+Underlying model is asynchronous, we need to cope with that. Do it
+using a RAII self-destructing object AutoExpander.
+
+As a side-effect, Amarok no longer expands collection after start in
+split collection mode. If this is desired, we may expand them
+explicitly upon start.
+
+BUG: 335217
+FIXED-IN: 2.9
+CCBUG: 300557
+---
+ ChangeLog                           |  1 +
+ src/browsers/CollectionTreeView.cpp | 88 ++++++++++++++++++++++++++++---------
+ 2 files changed, 69 insertions(+), 20 deletions(-)
+
+diff --git a/src/browsers/CollectionTreeView.cpp b/src/browsers/CollectionTreeView.cpp
+index 816d2e1..4b96543 100644
+--- a/src/browsers/CollectionTreeView.cpp
++++ b/src/browsers/CollectionTreeView.cpp
+@@ -110,6 +110,72 @@ class DelayedScroller : public QObject
+         int m_topOffset;
+ };
+ 
++/**
++ * RAII class to auto-expand collection tree entries after filtering.
++ * AutoExpander auto-deletes itself once its job is over (or if it finds
++ * it is useless).
++ */
++class AutoExpander : public QObject
++{
++    Q_OBJECT
++
++    public:
++        AutoExpander( CollectionTreeView *treeView,
++                      CollectionTreeItemModelBase *treeModel,
++                      QAbstractItemModel *filterModel)
++            : QObject( treeView )
++            , m_treeView( treeView )
++            , m_filterModel( filterModel )
++        {
++            connect( filterModel, SIGNAL(destroyed(QObject*)), SLOT(deleteLater()) );
++            connect( treeModel, SIGNAL(allQueriesFinished(bool)), SLOT(slotExpandMore()) );
++
++            // start with the root index
++            m_indicesToCheck.enqueue( QModelIndex() );
++            slotExpandMore();
++        }
++
++    private slots:
++        void slotExpandMore()
++        {
++            const int maxChildrenToExpand = 3;
++
++            QQueue<QModelIndex> pendingIndices;
++            while( !m_indicesToCheck.isEmpty() )
++            {
++                QModelIndex current = m_indicesToCheck.dequeue();
++
++                if( m_filterModel->canFetchMore( current ) )
++                {
++                    m_filterModel->fetchMore( current );
++                    pendingIndices.enqueue( current );
++                    continue;
++                }
++
++                if( m_filterModel->rowCount( current ) <= maxChildrenToExpand )
++                {
++                    m_treeView->expand( current );
++                    for( int i = 0; i < m_filterModel->rowCount( current ); i++ )
++                        m_indicesToCheck.enqueue( m_filterModel->index( i, 0, current ) );
++                }
++            }
++
++            if( pendingIndices.isEmpty() )
++                // nothing left to do
++                deleteLater();
++            else
++                // process pending indices when queries finish
++                m_indicesToCheck.swap( pendingIndices );
++        }
++
++    private:
++        Q_DISABLE_COPY(AutoExpander)
++
++        CollectionTreeView *m_treeView;
++        QAbstractItemModel *m_filterModel;
++        QQueue<QModelIndex> m_indicesToCheck;
++};
++
+ CollectionTreeView::CollectionTreeView( QWidget *parent)
+     : Amarok::PrettyTreeView( parent )
+     , m_filterModel( 0 )
+@@ -708,26 +774,8 @@ CollectionTreeView::slotCheckAutoExpand( bool reallyExpand )
+     if( !m_filterModel || !reallyExpand )
+         return;
+ 
+-    // Cases where root is not collections but
+-    // for example magnatunes's plethora of genres, don't expand by default
+-    if( m_filterModel->rowCount() > 6 )
+-        return;
+-
+-    QModelIndexList indicesToCheck;
+-    for( int i = 0; i < m_filterModel->rowCount(); i++ ) //need something to start for'ing with
+-        indicesToCheck += m_filterModel->index( i, 0 ); //lowest level is fine for that
+-
+-    QModelIndex current;
+-    for( int j = 0; j < indicesToCheck.size(); j++)
+-    {
+-        current = indicesToCheck.at( j );
+-        if( m_filterModel->rowCount( current ) < 4 )
+-        { //don't expand if many results
+-            expand( current );
+-            for( int i = 0; i < m_filterModel->rowCount( current ); i++ )
+-                indicesToCheck += m_filterModel->index( i, 0, current );
+-        }
+-    }
++    // auto-deletes itself:
++    new AutoExpander( this, m_treeModel, m_filterModel );
+ }
+ 
+ void
+-- 
+2.9.3
+

diff --git a/0036-Fix-Bug-302299-Autoscrolling-Lyrics-are-scrolling-do.patch b/0036-Fix-Bug-302299-Autoscrolling-Lyrics-are-scrolling-do.patch
new file mode 100644
index 0000000..9049e5d
--- /dev/null
+++ b/0036-Fix-Bug-302299-Autoscrolling-Lyrics-are-scrolling-do.patch
@@ -0,0 +1,102 @@
+From 2a8cb3785e50ccb0d551442e3133ac1cc6c2e8f7 Mon Sep 17 00:00:00 2001
+From: Yash Ladia <yashladia1@gmail.com>
+Date: Sat, 4 Feb 2017 11:33:48 +0100
+Subject: [PATCH 36/47] Fix Bug 302299 - Autoscrolling Lyrics are scrolling
+ down if a song is rated via Context Browser's Current Track
+
+The bug was occuring since 'userAutoScrollOffset' and 'oldSliderPosition' were being reset when track metadata was changed. This should not happen.
+
+I split the function: 'void _trackDataChanged( Meta::TrackPtr )' into 'void _trackChanged( Meta::TrackPtr )' and 'void _trackMetadataChanged( Meta::TrackPtr )'
+
+REVIEW: 116641
+BUGS: 302299
+---
+ src/context/applets/lyrics/LyricsApplet.cpp | 18 +++++++++++++-----
+ src/context/applets/lyrics/LyricsApplet.h   |  4 +++-
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/src/context/applets/lyrics/LyricsApplet.cpp b/src/context/applets/lyrics/LyricsApplet.cpp
+index 829a166..896a042 100644
+--- a/src/context/applets/lyrics/LyricsApplet.cpp
++++ b/src/context/applets/lyrics/LyricsApplet.cpp
+@@ -1,6 +1,7 @@
+ /****************************************************************************************
+  * Copyright (c) 2007 Leo Franchi <lfranchi@gmail.com>                                  *
+  * Copyright (c) 2009 simon.esneault <simon.esneault@gmail.com>                         *
++ * Copyright (c) 2014 Yash Ladia <yashladia1@gmail.com>                                 *
+  *                                                                                      *
+  * This program is free software; you can redistribute it and/or modify it under        *
+  * the terms of the GNU General Public License as published by the Free Software        *
+@@ -80,7 +81,8 @@ public:
+     void _toggleAutoScroll();
+     void _suggestionChosen( const LyricsSuggestion &suggestion );
+     void _unsetCursor();
+-    void _trackDataChanged( Meta::TrackPtr );
++    void _trackChanged( Meta::TrackPtr );
++    void _trackMetadataChanged( Meta::TrackPtr );
+     void _trackPositionChanged( qint64 position, bool userSeek );
+ 
+     void _lyricsChangedMessageButtonPressed( const Plasma::MessageButton button );
+@@ -369,11 +371,17 @@ LyricsAppletPrivate::_unsetCursor()
+ }
+ 
+ void
+-LyricsAppletPrivate::_trackDataChanged( Meta::TrackPtr track )
++LyricsAppletPrivate::_trackChanged( Meta::TrackPtr track )
+ {
+     userAutoScrollOffset = 0;
+     oldSliderPosition = 0;
++    // meta data also changed, so to avoid code duplication
++    _trackMetadataChanged( track );
++}
+ 
++void
++LyricsAppletPrivate::_trackMetadataChanged( Meta::TrackPtr track )
++{
+     // Check if we previously had a track.
+     // If the lyrics currently shown in the browser (which
+     // additionally is in edit mode) are different from the
+@@ -512,15 +520,15 @@ LyricsApplet::init()
+ 
+     EngineController* engine = The::engineController();
+ 
+-    connect( engine, SIGNAL(trackChanged(Meta::TrackPtr)), this, SLOT(_trackDataChanged(Meta::TrackPtr)) );
+-    connect( engine, SIGNAL(trackMetadataChanged(Meta::TrackPtr)), this, SLOT(_trackDataChanged(Meta::TrackPtr)) );
++    connect( engine, SIGNAL(trackChanged(Meta::TrackPtr)), this, SLOT(_trackChanged(Meta::TrackPtr)) );
++    connect( engine, SIGNAL(trackMetadataChanged(Meta::TrackPtr)), this, SLOT(_trackMetadataChanged(Meta::TrackPtr)) );
+     connect( engine, SIGNAL(trackPositionChanged(qint64,bool)), this, SLOT(_trackPositionChanged(qint64,bool)) );
+     connect( d->suggestView, SIGNAL(selected(LyricsSuggestion)), SLOT(_suggestionChosen(LyricsSuggestion)) );
+     connect( dataEngine("amarok-lyrics"), SIGNAL(sourceAdded(QString)), this, SLOT(connectSource(QString)) );
+ 
+     // This is needed as a track might be playing when the lyrics applet
+     // is added to the ContextView.
+-    d->_trackDataChanged( engine->currentTrack() );
++    d->_trackChanged( engine->currentTrack() );
+     d->_trackPositionChanged( engine->trackPositionMs(), false );
+ 
+     d->determineActionIconsState();
+diff --git a/src/context/applets/lyrics/LyricsApplet.h b/src/context/applets/lyrics/LyricsApplet.h
+index 20c71d8..528a323 100644
+--- a/src/context/applets/lyrics/LyricsApplet.h
++++ b/src/context/applets/lyrics/LyricsApplet.h
+@@ -1,6 +1,7 @@
+ /****************************************************************************************
+  * Copyright (c) 2007 Leo Franchi <lfranchi@gmail.com>                                  *
+  * Copyright (c) 2009 simon.esneault <simon.esneault@gmail.com>                         *
++ * Copyright (c) 2014 Yash Ladia <yashladia1@gmail.com>                                 *
+  *                                                                                      *
+  * This program is free software; you can redistribute it and/or modify it under        *
+  * the terms of the GNU General Public License as published by the Free Software        *
+@@ -57,7 +58,8 @@ private:
+     Q_PRIVATE_SLOT( d_ptr, void _toggleAutoScroll() )
+     Q_PRIVATE_SLOT( d_ptr, void _suggestionChosen(LyricsSuggestion) )
+     Q_PRIVATE_SLOT( d_ptr, void _unsetCursor() )
+-    Q_PRIVATE_SLOT( d_ptr, void _trackDataChanged( Meta::TrackPtr ) )
++    Q_PRIVATE_SLOT( d_ptr, void _trackChanged( Meta::TrackPtr ) )
++    Q_PRIVATE_SLOT( d_ptr, void _trackMetadataChanged( Meta::TrackPtr ) )
+     Q_PRIVATE_SLOT( d_ptr, void _trackPositionChanged( qint64 position, bool userSeek ) )
+     Q_PRIVATE_SLOT( d_ptr, void _lyricsChangedMessageButtonPressed(const Plasma::MessageButton) )
+     Q_PRIVATE_SLOT( d_ptr, void _refetchMessageButtonPressed(const Plasma::MessageButton) )
+-- 
+2.9.3
+

diff --git a/0037-Fix-minor-typo.patch b/0037-Fix-minor-typo.patch
new file mode 100644
index 0000000..eb632dc
--- /dev/null
+++ b/0037-Fix-minor-typo.patch
@@ -0,0 +1,42 @@
+From 0feb6251925fe049c46ccf5153db4b467f3544fb Mon Sep 17 00:00:00 2001
+From: Robert Marshall <robert@capuchin.co.uk>
+Date: Sat, 4 Feb 2017 18:49:41 +0100
+Subject: [PATCH 37/47] Fix minor typo
+
+add the word 'specify' to text
+
+REVIEW: 123635
+---
+ src/playlistgenerator/constraints/PlaylistFileSizeEditWidget.ui | 2 +-
+ src/playlistgenerator/constraints/PlaylistLengthEditWidget.ui   | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/playlistgenerator/constraints/PlaylistFileSizeEditWidget.ui b/src/playlistgenerator/constraints/PlaylistFileSizeEditWidget.ui
+index fce5c54..40a9ab2 100644
+--- a/src/playlistgenerator/constraints/PlaylistFileSizeEditWidget.ui
++++ b/src/playlistgenerator/constraints/PlaylistFileSizeEditWidget.ui
+@@ -12,7 +12,7 @@
+    </rect>
+   </property>
+   <property name="whatsThis">
+-   <string>An editor for a Playlist Length constraint.  The user can the target number of tracks and whether the playlist contain fewer than, equal to, or more than that number of tracks; and the strictness with which the APG should match the target number of tracks.</string>
++   <string>An editor for a Playlist Length constraint.  The user can specify the target number of tracks and whether the playlist contain fewer than, equal to, or more than that number of tracks; and the strictness with which the APG should match the target number of tracks.</string>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+diff --git a/src/playlistgenerator/constraints/PlaylistLengthEditWidget.ui b/src/playlistgenerator/constraints/PlaylistLengthEditWidget.ui
+index f97697a..206c91f 100644
+--- a/src/playlistgenerator/constraints/PlaylistLengthEditWidget.ui
++++ b/src/playlistgenerator/constraints/PlaylistLengthEditWidget.ui
+@@ -12,7 +12,7 @@
+    </rect>
+   </property>
+   <property name="whatsThis">
+-   <string>An editor for a Playlist Length constraint.  The user can the target number of tracks and whether the playlist contain fewer than, equal to, or more than that number of tracks; and the strictness with which the APG should match the target number of tracks.</string>
++   <string>An editor for a Playlist Length constraint.  The user can specify the target number of tracks and whether the playlist contain fewer than, equal to, or more than that number of tracks; and the strictness with which the APG should match the target number of tracks.</string>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+-- 
+2.9.3
+

diff --git a/0038-Fix-amarok-build-with-LibOFA-using-ffmpeg-3.patch b/0038-Fix-amarok-build-with-LibOFA-using-ffmpeg-3.patch
new file mode 100644
index 0000000..49a74c8
--- /dev/null
+++ b/0038-Fix-amarok-build-with-LibOFA-using-ffmpeg-3.patch
@@ -0,0 +1,74 @@
+From 5535be8635d3f74ccc774ee28e0804d7aaeeec41 Mon Sep 17 00:00:00 2001
+From: Alexis BALLIER <aballier@gentoo.org>
+Date: Sun, 12 Feb 2017 17:42:50 +0100
+Subject: [PATCH 38/47] Fix amarok build with LibOFA using ffmpeg 3+
+
+Testing Done:
+https://bugs.gentoo.org/show_bug.cgi?id=601800
+
+REVIEW: 129626
+---
+ src/musicbrainz/MusicDNSAudioDecoder.cpp | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/musicbrainz/MusicDNSAudioDecoder.cpp b/src/musicbrainz/MusicDNSAudioDecoder.cpp
+index ea39a1b..43767d5 100644
+--- a/src/musicbrainz/MusicDNSAudioDecoder.cpp
++++ b/src/musicbrainz/MusicDNSAudioDecoder.cpp
+@@ -223,7 +223,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+             {
+                 if( !decodedFrame )
+                 {
+-                    decodedFrame = avcodec_alloc_frame();
++                    decodedFrame = av_frame_alloc();
+                     if( !decodedFrame )
+                     {
+                         warning() << "Unable to allocate enough memory to decode file.";
+@@ -231,7 +231,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+                         break;
+                     }
+                     else
+-                        avcodec_get_frame_defaults( decodedFrame );
++		         av_frame_unref( decodedFrame );
+                 }
+ 
+                 decoderRet = avcodec_decode_audio4( pCodecCtx, decodedFrame, &gotFrame, &avpkt );
+@@ -341,7 +341,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+             {
+                 if( !decodedFrame )
+                 {
+-                    decodedFrame = avcodec_alloc_frame();
++                    decodedFrame = av_frame_alloc();
+                     if( !decodedFrame )
+                     {
+                         warning() << "Unable to allocate enough memory to decode file.";
+@@ -349,7 +349,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+                         break;
+                     }
+                     else
+-                        avcodec_get_frame_defaults( decodedFrame );
++		         av_frame_unref( decodedFrame );
+                 }
+ 
+                 decoderRet = avcodec_decode_audio4( pCodecCtx, decodedFrame, &gotFrame, &avpkt );
+@@ -459,7 +459,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+             {
+                 if( !decodedFrame )
+                 {
+-                    decodedFrame = avcodec_alloc_frame();
++                    decodedFrame = av_frame_alloc();
+                     if( !decodedFrame )
+                     {
+                         warning() << "Unable to allocate enough memory to decode file.";
+@@ -467,7 +467,7 @@ MusicDNSAudioDecoder::decode( const QString &fileName, DecodedAudioData *data, c
+                         break;
+                     }
+                     else
+-                        avcodec_get_frame_defaults( decodedFrame );
++		         av_frame_unref( decodedFrame );
+                 }
+ 
+                 decoderRet = avcodec_decode_audio4( pCodecCtx, decodedFrame, &gotFrame, &avpkt );
+-- 
+2.9.3
+

diff --git a/0039-Fix-Gpodder-credential-service-without-kwallet.patch b/0039-Fix-Gpodder-credential-service-without-kwallet.patch
new file mode 100644
index 0000000..0f20daa
--- /dev/null
+++ b/0039-Fix-Gpodder-credential-service-without-kwallet.patch
@@ -0,0 +1,60 @@
+From 32de657700902551f600de836021361ef965bb36 Mon Sep 17 00:00:00 2001
+From: Giuseppe Silletti <sillettig@gmail.com>
+Date: Fri, 17 Feb 2017 11:14:39 +0100
+Subject: [PATCH 39/47] Fix Gpodder credential service without kwallet
+
+Before to fix this bug, the gpodder plugin had problems with saving username and password in plain text.
+
+There were two problems:
+
+1) A useless space for the variable m_ignoreWallet was saved in the config file
+2) The saving of the credential in plain text where made in the wrong way.
+Now it is called the function askAboutMissingKWallet(), that make the use see a dialog windows where is asked to save the credential in plain text.
+Credential are now saved in the textDialogYes slot.
+
+REVIEW: 122797
+---
+ src/services/gpodder/GpodderServiceConfig.cpp | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/src/services/gpodder/GpodderServiceConfig.cpp b/src/services/gpodder/GpodderServiceConfig.cpp
+index 9098d59..47ebd39 100644
+--- a/src/services/gpodder/GpodderServiceConfig.cpp
++++ b/src/services/gpodder/GpodderServiceConfig.cpp
+@@ -131,11 +131,6 @@ GpodderServiceConfig::save()
+         if( m_wallet->writePassword( "gpodder_password", m_password ) != 0 )
+             debug() << "Failed to save gpodder.net pw to kwallet!";
+     }
+-    else if( m_ignoreWallet )
+-    {
+-        config.writeEntry( "username", m_username );
+-        config.writeEntry( "password", m_password );
+-    }
+     else
+     {
+         if( m_enableProvider )
+@@ -212,7 +207,9 @@ GpodderServiceConfig::textDialogYes() //SLOT
+         KConfigGroup config = KGlobal::config()->group( configSectionName() );
+ 
+         m_ignoreWallet = true;
+-        config.writeEntry( "ignoreWallet ", m_ignoreWallet );
++        config.writeEntry( "ignoreWallet", m_ignoreWallet );
++        config.writeEntry( "username", m_username );
++        config.writeEntry( "password", m_password );
+ 
+         config.sync();
+     }
+@@ -228,7 +225,9 @@ GpodderServiceConfig::textDialogNo() //SLOT
+         KConfigGroup config = KGlobal::config()->group( configSectionName() );
+ 
+         m_ignoreWallet = false;
+-        config.writeEntry( "ignoreWallet ", m_ignoreWallet );
++        config.writeEntry( "ignoreWallet", m_ignoreWallet );
++        config.writeEntry( "username", QString() );
++        config.writeEntry( "password", QString() );
+ 
+         config.sync();
+     }
+-- 
+2.9.3
+

diff --git a/0041-Add-namespace-to-desktop-and-appdata-files.patch b/0041-Add-namespace-to-desktop-and-appdata-files.patch
new file mode 100644
index 0000000..c195b82
--- /dev/null
+++ b/0041-Add-namespace-to-desktop-and-appdata-files.patch
@@ -0,0 +1,77 @@
+From 22e0ac2baf0975a1dabbfa7892f8c52c38990235 Mon Sep 17 00:00:00 2001
+From: Luigi Toscano <luigi.toscano@tiscali.it>
+Date: Sun, 16 Oct 2016 16:11:27 +0200
+Subject: [PATCH 41/47] Add namespace to desktop and appdata files
+
+- add the organization namespace to the desktop and then appdata files,
+  according the specification;
+- use the new directory for metadata (metainfo) files.
+
+REVIEW: 129192
+---
+ src/CMakeLists.txt                                                  | 6 +++---
+ src/dbus/mpris2/MediaPlayer2.cpp                                    | 2 +-
+ src/{amarok.appdata.xml => org.kde.amarok.appdata.xml}              | 2 +-
+ src/{amarok.desktop => org.kde.amarok.desktop}                      | 0
+ ...{amarok_containers.desktop => org.kde.amarok_containers.desktop} | 0
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+ rename src/{amarok.appdata.xml => org.kde.amarok.appdata.xml} (99%)
+ rename src/{amarok.desktop => org.kde.amarok.desktop} (100%)
+ rename src/{amarok_containers.desktop => org.kde.amarok_containers.desktop} (100%)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 327ec10..827db36 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -948,9 +948,9 @@ install(TARGETS amarok ${INSTALL_TARGETS_DEFAULT_ARGS})
+ 
+ ########### install files ###############
+ 
+-install(PROGRAMS amarok.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+-install(PROGRAMS amarok_containers.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+-install(FILES amarok.appdata.xml DESTINATION ${SHARE_INSTALL_PREFIX}/appdata)
++install(PROGRAMS org.kde.amarok.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
++install(PROGRAMS org.kde.amarok_containers.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
++install(FILES org.kde.amarok.appdata.xml DESTINATION ${SHARE_INSTALL_PREFIX}/metainfo)
+ 
+ install(FILES amarok_plugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
+ install(FILES amarok_codecinstall.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
+diff --git a/src/dbus/mpris2/MediaPlayer2.cpp b/src/dbus/mpris2/MediaPlayer2.cpp
+index a1d1bda..1f00827 100644
+--- a/src/dbus/mpris2/MediaPlayer2.cpp
++++ b/src/dbus/mpris2/MediaPlayer2.cpp
+@@ -94,7 +94,7 @@ QString MediaPlayer2::Identity() const
+ 
+ QString MediaPlayer2::DesktopEntry() const
+ {
+-    return QLatin1String("amarok");
++    return QLatin1String("org.kde.amarok");
+ }
+ 
+ QStringList MediaPlayer2::SupportedUriSchemes() const
+diff --git a/src/amarok.appdata.xml b/src/org.kde.amarok.appdata.xml
+similarity index 99%
+rename from src/amarok.appdata.xml
+rename to src/org.kde.amarok.appdata.xml
+index 809e42c..ff06fc7 100644
+--- a/src/amarok.appdata.xml
++++ b/src/org.kde.amarok.appdata.xml
+@@ -1,6 +1,6 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <component type="desktop">
+-  <id>amarok.desktop</id>
++  <id>org.kde.amarok.desktop</id>
+   <metadata_license>CC0-1.0</metadata_license>
+   <name>Amarok</name>
+   <name xml:lang="ar">أماروك</name>
+diff --git a/src/amarok.desktop b/src/org.kde.amarok.desktop
+similarity index 100%
+rename from src/amarok.desktop
+rename to src/org.kde.amarok.desktop
+diff --git a/src/amarok_containers.desktop b/src/org.kde.amarok_containers.desktop
+similarity index 100%
+rename from src/amarok_containers.desktop
+rename to src/org.kde.amarok_containers.desktop
+-- 
+2.9.3
+

diff --git a/0043-Fix-appdata-add-the-required-summary-tag.patch b/0043-Fix-appdata-add-the-required-summary-tag.patch
new file mode 100644
index 0000000..e798f56
--- /dev/null
+++ b/0043-Fix-appdata-add-the-required-summary-tag.patch
@@ -0,0 +1,21 @@
+From 679d8454a72f48c267fe022749ca5f01e227324f Mon Sep 17 00:00:00 2001
+From: Luigi Toscano <luigi.toscano@tiscali.it>
+Date: Thu, 16 Mar 2017 23:03:55 +0100
+Subject: [PATCH 43/47] Fix appdata: add the required <summary/> tag
+
+<summary/> is required to pass the validation even in relaxed mode.
+---
+ src/org.kde.amarok.appdata.xml | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff -up amarok-2.8.90/src/org.kde.amarok.appdata.xml.0043 amarok-2.8.90/src/org.kde.amarok.appdata.xml
+--- amarok-2.8.90/src/org.kde.amarok.appdata.xml.0043	2017-04-03 11:44:49.369505851 -0500
++++ amarok-2.8.90/src/org.kde.amarok.appdata.xml	2017-04-03 11:45:32.915885079 -0500
+@@ -33,6 +33,7 @@
+   <name xml:lang="sv">Amarok</name>
+   <name xml:lang="uk">Amarok</name>
+   <name xml:lang="x-test">xxAmarokxx</name>
++  <summary>Audio Player</summary>
+   <description>
+     <p>Amarok is a free, versatile and powerful music player.</p>
+     <p xml:lang="ar">أماروك مشغّل موسيقى مجّانيّ، وقويّ متعدّد الاستعمالات.</p>

diff --git a/amarok-kdebug365275.patch b/amarok-kdebug365275.patch
deleted file mode 100644
index 05377cd..0000000
--- a/amarok-kdebug365275.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/src/dbus/mpris2/MediaPlayer2.cpp b/src/dbus/mpris2/MediaPlayer2.cpp
-index cbe1a2a..a1d1bda 100644
---- a/src/dbus/mpris2/MediaPlayer2.cpp
-+++ b/src/dbus/mpris2/MediaPlayer2.cpp
-@@ -94,11 +94,7 @@ QString MediaPlayer2::Identity() const
- 
- QString MediaPlayer2::DesktopEntry() const
- {
--    // Amarok desktop file is installed in $prefix/share/applications/kde4/
--    // rather than in $prefix/share/applications. The standard way to
--    // represent this dir is with a "kde4-" prefix. See:
--    // http://standards.freedesktop.org/menu-spec/1.0/go01.html#term-desktop-file-id
--    return QLatin1String("kde4-amarok");
-+    return QLatin1String("amarok");
- }
- 
- QStringList MediaPlayer2::SupportedUriSchemes() const

diff --git a/amarok.spec b/amarok.spec
index 559ede0..92e2fd0 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -8,7 +8,7 @@
 Name:    amarok
 Summary: Media player
 Version: 2.8.90
-Release: 10%{?dist}
+Release: 11%{?dist}
 
 # KDE e.V. may determine that future GPL versions are accepted
 License: GPLv2 or GPLv3
@@ -31,9 +31,6 @@ Patch1: amarok-2.8.0-no_kdewebkit.patch
 ## upstreamable patches
 # make mysql_found non-fatal
 Patch100: amarok-2.8.90-mysql_found.patch
-# fix mpris support, https://git.reviewboard.kde.org/r/128418/
-# https://bugs.kde.org/show_bug.cgi?id=365275
-Patch102: amarok-kdebug365275.patch
 
 ## upstream patches
 Patch3: 0003-Fix-TagLib-version-check.patch
@@ -50,6 +47,17 @@ Patch20: 0020-Wikipedia-applet-Remove-last-trace-of-no-SSL-possibi.patch
 Patch24: 0024-Substitute-deprecated-MySQL-option-myisam-recover.patch
 Patch25: 0025-Handle-numeric-fields-properly-in-filter-creation-di.patch
 Patch26: 0026-Use-transparent-background-for-lyrics-browser.patch
+Patch27: 0027-Organize-tracks-Guess-tags-presets-persisted-properl.patch
+Patch28: 0028-Fix-for-C-warnings-about-unused-variables-and-deprec.patch
+Patch29: 0029-Fix-MPRIS2-DesktopEntry-value.patch
+Patch30: 0030-Fix-Collection-Browser-auto-expand-after-search-expa.patch
+Patch36: 0036-Fix-Bug-302299-Autoscrolling-Lyrics-are-scrolling-do.patch
+Patch37: 0037-Fix-minor-typo.patch
+Patch38: 0038-Fix-amarok-build-with-LibOFA-using-ffmpeg-3.patch
+Patch39: 0039-Fix-Gpodder-credential-service-without-kwallet.patch
+Patch41: 0041-Add-namespace-to-desktop-and-appdata-files.patch
+Patch43: 0043-Fix-appdata-add-the-required-summary-tag.patch
+
 
 BuildRequires: curl-devel
 BuildRequires: desktop-file-utils
@@ -177,10 +185,18 @@ Requires: %{name} = %{version}-%{release}
 %patch24 -p1 -b .0024
 %patch25 -p1 -b .0025
 %patch26 -p1 -b .0026
-
+%patch27 -p1 -b .0027
+%patch28 -p1 -b .0028
+%patch29 -p1 -b .0029
+%patch30 -p1 -b .0030
+%patch36 -p1 -b .0036
+%patch37 -p1 -b .0037
+%patch38 -p1 -b .0038
+%patch39 -p1 -b .0039
+%patch41 -p1 -b .0041
+%patch43 -p1 -b .0043
 
 ## upstreamable
-%patch102 -p1 -b .kdebug365275
 
 
 %build
@@ -348,6 +364,9 @@ fi
 
 
 %changelog
+* Mon Apr 03 2017 Rex Dieter <rdieter@fedoraproject.org> - 2.8.90-11
+- pul in more upstream fixes
+
 * Thu Feb 23 2017 Rex Dieter <rdieter@fedoraproject.org> - 2.8.90-10
 - Recommends: audiocd-kio kio_mtp kio-upnp-ms
 

^ permalink raw reply related	[flat|nested] 2+ messages in thread
* [rpms/amarok] epel10.2: pul in more upstream fixes
@ 2026-07-06 18:32 Rex Dieter
  0 siblings, 0 replies; 2+ messages in thread
From: Rex Dieter @ 2026-07-06 18:32 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/amarok
Branch : epel10.2
Commit : a0e3121f7250091593bba175950da29e15c847c6
Author : Rex Dieter <rdieter@math.unl.edu>
Date   : 2017-07-13T10:14:25-05:00
Stats  : +2/-1 in 1 file(s)
URL    : https://src.fedoraproject.org/rpms/amarok/c/a0e3121f7250091593bba175950da29e15c847c6?branch=epel10.2

Log:
pul in more upstream fixes

---
diff --git a/amarok.spec b/amarok.spec
index e0a3f50..c2325ab 100644
--- a/amarok.spec
+++ b/amarok.spec
@@ -8,7 +8,7 @@
 Name:    amarok
 Summary: Media player
 Version: 2.8.90
-Release: 11%{?dist}
+Release: 12%{?dist}
 
 # KDE e.V. may determine that future GPL versions are accepted
 License: GPLv2 or GPLv3
@@ -71,6 +71,7 @@ BuildRequires: kdelibs4-webkit-devel
 %if 0%{?fedora} > 21
 BuildRequires: libappstream-glib
 %endif
+## FIXME/TODO: consider adjusting to explicitly use mariadb -- rex
 BuildRequires: mysql-devel
 BuildRequires: mysql-embedded-devel
 BuildRequires: perl-generators

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-06 18:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-06 18:32 [rpms/amarok] epel10.2: pul in more upstream fixes Rex Dieter
2026-07-06 18:32 Rex Dieter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox