strawberry-audio-player-win.../src/core/metatypes.cpp

174 lines
6.5 KiB
C++
Raw Normal View History

2018-02-27 18:06:05 +01:00
/*
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
2021-03-20 21:14:47 +01:00
* Copyright 2018-2021, Jonas Kvinge <jonas@jkvinge.net>
2018-02-27 18:06:05 +01:00
*
* Strawberry 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 Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Strawberry is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Strawberry. If not, see <http://www.gnu.org/licenses/>.
2018-08-09 18:39:44 +02:00
*
2018-02-27 18:06:05 +01:00
*/
#include "config.h"
#include "metatypes.h"
#ifdef HAVE_GSTREAMER
# include <gst/gstbuffer.h>
# include <gst/gstelement.h>
#endif
2020-02-08 03:40:30 +01:00
#include <QDataStream>
#include <QAbstractSocket>
2018-02-27 18:06:05 +01:00
#include <QMetaType>
2019-03-25 19:52:46 +01:00
#include <QFileInfo>
#include <QList>
2020-08-01 03:32:25 +02:00
#include <QVector>
#include <QMap>
#include <QByteArray>
#include <QUrl>
#include <QImage>
#include <QNetworkReply>
2020-07-18 06:02:54 +02:00
#include <QItemSelection>
#ifdef HAVE_DBUS
# include <QDBusMetaType>
# include <QDBusArgument>
#endif
2018-02-27 18:06:05 +01:00
#include "song.h"
2018-02-27 18:06:05 +01:00
#include "engine/enginebase.h"
2023-04-22 19:13:42 +02:00
#include "engine/enginemetadata.h"
2018-02-27 18:06:05 +01:00
#ifdef HAVE_GSTREAMER
# include "engine/gstenginepipeline.h"
#endif
#include "collection/collectiondirectory.h"
#include "playlist/playlistitem.h"
#include "playlist/playlistsequence.h"
#include "covermanager/albumcoverloaderresult.h"
2018-02-27 18:06:05 +01:00
#include "covermanager/albumcoverfetcher.h"
#include "covermanager/coversearchstatistics.h"
#include "equalizer/equalizer.h"
2018-02-27 18:06:05 +01:00
#ifdef HAVE_DBUS
# include "mpris2.h"
# include "osd/osddbus.h"
# include "dbus/metatypes.h"
2018-02-27 18:06:05 +01:00
#endif
2020-04-13 06:30:40 +02:00
#include "internet/internetsearchview.h"
2018-08-09 18:10:03 +02:00
#include "smartplaylists/playlistgenerator_fwd.h"
2021-07-11 01:02:53 +02:00
#include "radios/radiochannel.h"
2021-01-24 20:04:29 +01:00
#include "widgets/collapsibleinfopane.h"
2021-07-11 01:02:53 +02:00
#ifdef HAVE_LIBMTP
2022-03-22 21:09:05 +01:00
# include "device/mtpconnection.h"
#endif
2023-02-18 14:09:27 +01:00
#include "settings/playlistsettingspage.h"
#include "smartplaylists/smartplaylistsearchterm.h"
#include "smartplaylists/smartplaylistsitem.h"
2018-02-27 18:06:05 +01:00
void RegisterMetaTypes() {
2018-02-27 18:06:05 +01:00
qRegisterMetaType<const char*>("const char*");
qRegisterMetaType<QList<int>>("QList<int>");
2020-08-01 03:32:25 +02:00
qRegisterMetaType<QVector<int>>("QVector<int>");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<QList<QUrl>>("QList<QUrl>");
qRegisterMetaType<QFileInfo>("QFileInfo");
qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState");
qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
qRegisterMetaType<QNetworkReply**>("QNetworkReply**");
2020-07-18 06:02:54 +02:00
qRegisterMetaType<QItemSelection>("QItemSelection");
2020-08-26 22:36:09 +02:00
qRegisterMetaType<QMap<int, Qt::Alignment>>("ColumnAlignmentMap");
qRegisterMetaType<QMap<int, int>>("ColumnAlignmentIntMap");
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
2020-07-18 18:18:34 +02:00
qRegisterMetaTypeStreamOperators<QMap<int, Qt::Alignment>>("ColumnAlignmentMap");
2020-07-26 15:05:00 +02:00
qRegisterMetaTypeStreamOperators<QMap<int, int>>("ColumnAlignmentIntMap");
#endif
qRegisterMetaType<Song>("Song");
qRegisterMetaType<SongList>("SongList");
qRegisterMetaType<SongMap>("SongMap");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<Song::Source>("Song::Source");
qRegisterMetaType<Song::FileType>("Song::FileType");
2023-04-22 19:13:42 +02:00
qRegisterMetaType<EngineBase::Type>("EngineBase::Type");
qRegisterMetaType<EngineBase::State>("EngineBase::State");
qRegisterMetaType<EngineBase::TrackChangeFlags>("EngineBase::TrackChangeFlags");
2018-02-27 18:06:05 +01:00
qRegisterMetaType<EngineBase::OutputDetails>("EngineBase::OutputDetails");
2023-04-22 19:13:42 +02:00
qRegisterMetaType<EngineMetadata>("EngineMetadata");
2018-02-27 18:06:05 +01:00
#ifdef HAVE_GSTREAMER
qRegisterMetaType<GstBuffer*>("GstBuffer*");
qRegisterMetaType<GstElement*>("GstElement*");
qRegisterMetaType<GstState>("GstState");
2018-02-27 18:06:05 +01:00
qRegisterMetaType<GstEnginePipeline*>("GstEnginePipeline*");
#endif
2023-02-18 14:09:27 +01:00
qRegisterMetaType<CollectionDirectory>("CollectionDirectory");
qRegisterMetaType<CollectionDirectoryList>("CollectionDirectoryList");
qRegisterMetaType<CollectionSubdirectory>("CollectionSubdirectory");
qRegisterMetaType<CollectionSubdirectoryList>("CollectionSubdirectoryList");
qRegisterMetaType<CollectionModel::Grouping>("CollectionModel::Grouping");
2018-02-27 18:06:05 +01:00
qRegisterMetaType<PlaylistItemPtr>("PlaylistItemPtr");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<PlaylistItemPtrList>("PlaylistItemPtrList");
2018-02-27 18:06:05 +01:00
qRegisterMetaType<PlaylistSequence::RepeatMode>("PlaylistSequence::RepeatMode");
qRegisterMetaType<PlaylistSequence::ShuffleMode>("PlaylistSequence::ShuffleMode");
qRegisterMetaType<AlbumCoverLoaderResult>("AlbumCoverLoaderResult");
qRegisterMetaType<AlbumCoverLoaderResult::Type>("AlbumCoverLoaderResult::Type");
qRegisterMetaType<CoverProviderSearchResult>("CoverProviderSearchResult");
qRegisterMetaType<CoverProviderSearchResults>("CoverProviderSearchResults");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<CoverSearchStatistics>("CoverSearchStatistics");
qRegisterMetaType<Equalizer::Params>("Equalizer::Params");
2023-02-18 14:09:27 +01:00
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
2018-02-27 18:06:05 +01:00
qRegisterMetaTypeStreamOperators<Equalizer::Params>("Equalizer::Params");
#endif
2023-02-18 14:09:27 +01:00
2018-02-27 18:06:05 +01:00
#ifdef HAVE_DBUS
2023-02-18 14:09:27 +01:00
qDBusRegisterMetaType<QByteArrayList>();
qDBusRegisterMetaType<QImage>();
2018-02-27 18:06:05 +01:00
qDBusRegisterMetaType<TrackMetadata>();
2020-04-23 21:08:28 +02:00
qDBusRegisterMetaType<Track_Ids>();
2018-02-27 18:06:05 +01:00
qDBusRegisterMetaType<MprisPlaylist>();
qDBusRegisterMetaType<MprisPlaylistList>();
qDBusRegisterMetaType<MaybePlaylist>();
2018-02-27 18:06:05 +01:00
qDBusRegisterMetaType<InterfacesAndProperties>();
qDBusRegisterMetaType<ManagedObjectList>();
#endif
2020-04-13 06:30:40 +02:00
qRegisterMetaType<InternetSearchView::Result>("InternetSearchView::Result");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<InternetSearchView::ResultList>("InternetSearchView::ResultList");
2018-10-14 00:08:33 +02:00
2023-02-18 14:09:27 +01:00
qRegisterMetaType<RadioChannel>("RadioChannel");
2021-07-11 01:02:53 +02:00
qRegisterMetaType<RadioChannelList>("RadioChannelList");
2021-01-24 20:04:29 +01:00
qRegisterMetaType<CollapsibleInfoPane::Data>("CollapsibleInfoPane::Data");
#ifdef HAVE_LIBMTP
qRegisterMetaType<MtpConnection*>("MtpConnection*");
#endif
2023-02-18 14:09:27 +01:00
qRegisterMetaType<PlaylistSettingsPage::PathType>("PlaylistSettingsPage::PathType");
qRegisterMetaType<PlaylistGeneratorPtr>("PlaylistGeneratorPtr");
qRegisterMetaType<SmartPlaylistSearchTerm::Field>("SmartPlaylistSearchTerm::Field");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<SmartPlaylistSearchTerm::Operator>("SmartPlaylistSearchTerm::Operator");
qRegisterMetaType<SmartPlaylistSearchTerm::OperatorList>("SmartPlaylistSearchTerm::OperatorList");
qRegisterMetaType<SmartPlaylistSearchTerm::Type>("SmartPlaylistSearchTerm::Type");
qRegisterMetaType<SmartPlaylistSearchTerm::DateType>("SmartPlaylistSearchTerm::DateType");
2023-02-18 14:09:27 +01:00
qRegisterMetaType<SmartPlaylistsItem::Type>("SmartPlaylistsItem::Type");
2018-02-27 18:06:05 +01:00
}