Sayonara Player
Connector.h
1/* Connector.h */
2
3/* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4 *
5 * This file is part of sayonara player
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef DatabaseConnector_H
22#define DatabaseConnector_H
23
24#include "Database/Base.h"
25
26#include "Utils/Singleton.h"
27#include "Utils/Pimpl.h"
28
29#define INDEX_SIZE 3
30
31namespace DB
32{
33 class LibraryDatabase;
34 class Bookmarks;
35 class Equalizer;
36 class Playlist;
37 class LibraryDatabase;
38 class Podcasts;
39 class Streams;
40 class VisualStyles;
41 class Settings;
42 class Library;
43 class Shortcuts;
44 class Covers;
45 class Session;
46 class SmartPlaylists;
47
48 using LibraryDatabases = QList<LibraryDatabase*>;
49
50 class Connector :
51 public Base
52 {
53 PIMPL(Connector)
54
55 protected:
56 bool updateAlbumCissearchFix();
57 bool updateArtistCissearchFix();
58 bool updateTrackCissearchFix();
59 bool updateLostArtists();
60 bool updateLostAlbums();
61
62 virtual bool applyFixes() override;
63
64 public:
65 Connector(const QString& sourceDirectory, const QString& targetDirectory, const QString& databseFilename);
66 ~Connector() override;
67
68 static Connector* instance();
69 static Connector*
70 instance_custom(QString sourceDirectory, QString targetDirectory, QString databseFilename);
71
72 LibraryDatabases libraryDatabases() const;
73 DB::LibraryDatabase* libraryDatabase(LibraryId libraryId, DbId databaseId);
74 DB::LibraryDatabase* registerLibraryDatabase(LibraryId libraryId);
75 void deleteLibraryDatabase(LibraryId libraryId);
76
77 DB::Bookmarks* bookmarkConnector();
78 DB::Equalizer* equalizerConnector();
79 DB::Playlist* playlistConnector();
80 DB::Podcasts* podcastConnector();
81 DB::Streams* streamConnector();
82 DB::VisualStyles* visualStyleConnector();
83 DB::Settings* settingsConnector();
84 DB::Shortcuts* shortcutConnector();
85 DB::Covers* coverConnector();
86 DB::Library* libraryConnector();
87 DB::Session* sessionConnector();
88 DB::SmartPlaylists* smartPlaylistsConnector();
89
90 static int highestDatabaseVersion();
91 int oldDatabaseVersion() const;
92 };
93}
94#endif // DatabaseConnector_H
The Bookmarks logic class.
Definition: Bookmarks.h:39
Definition: Base.h:35
Definition: Bookmarks.h:31
Definition: Connector.h:52
Definition: CoverConnector.h:37
Definition: Equalizer.h:31
Definition: LibraryDatabase.h:38
Definition: Library.h:40
Definition: Playlist.h:50
Definition: Podcasts.h:31
Definition: Session.h:35
Definition: Settings.h:33
Definition: Shortcuts.h:33
Definition: SmartPlaylists.h:40
Definition: Streams.h:32
Definition: VisualStyles.h:32
Definition: Equalizer.h:32
Definition: EngineUtils.h:33
The Settings class.
Definition: Settings.h:44
An interface class needed when implementing a library plugin.
Definition: LocalLibraryWatcher.h:31