1 #pragma once
2 
3 #include <QHash>
4 #include <QString>
5 #include <QVector>
6 
7 #include "proto/keys.pb.h"
8 #include "track/keys.h"
9 
10 class KeyFactory {
11   public:
12     static Keys loadKeysFromByteArray(const QString& keysVersion,
13                                       const QString& keysSubVersion,
14                                       QByteArray* keysSerialized);
15 
16     static Keys makeBasicKeys(mixxx::track::io::key::ChromaticKey global_key,
17                               mixxx::track::io::key::Source source);
18 
19     static Keys makeBasicKeysFromText(const QString& global_key_text,
20                                       mixxx::track::io::key::Source source);
21 
22     static QString getPreferredVersion();
23 
24     static QString getPreferredSubVersion(
25         const QHash<QString, QString>& extraVersionInfo);
26 
27     static Keys makePreferredKeys(
28         const KeyChangeList& key_changes,
29         const QHash<QString, QString>& extraVersionInfo,
30         const int iSampleRate, const int iTotalSamples);
31 };
32