public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Rex Dieter <rdieter@math.unl.edu>
To: git-commits@fedoraproject.org
Subject: [rpms/amarok] epel10.2: pul in more upstream fixes
Date: Mon, 06 Jul 2026 18:32:10 GMT [thread overview]
Message-ID: <178336273082.1.4164471961710083574.rpms-amarok-631dbbb88c7f@fedoraproject.org> (raw)
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
next reply other threads:[~2026-07-06 18:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-06 18:32 Rex Dieter [this message]
2026-07-06 18:32 [rpms/amarok] epel10.2: pul in more upstream fixes Rex Dieter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178336273082.1.4164471961710083574.rpms-amarok-631dbbb88c7f@fedoraproject.org \
--to=rdieter@math.unl.edu \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox