Files
cantata/devices/deviceoptions.h
Craig Drummond b6bd94c236 Update (c) year
2022-01-08 21:24:07 +00:00

118 lines
3.7 KiB
C

/*
* Cantata
*
* Copyright (c) 2011-2022 Craig Drummond <craig.p.drummond@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 Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef DEVICE_OPTIONS_H
#define DEVICE_OPTIONS_H
#include <QString>
#include "config.h"
#ifdef ENABLE_DEVICES_SUPPORT
#include "encoders.h"
#endif
struct Song;
struct DeviceStorage {
DeviceStorage() : size(0), used(0) { }
qulonglong freeSpace() const { return size-used; }
qulonglong size;
qulonglong used;
QString description;
QString volumeIdentifier;
};
struct DeviceOptions {
enum TranscodeWhen {
TW_Always = 0,
TW_IfDifferent = 1,
TW_IfLossess = 2
};
static const QLatin1String constAlbumArtist;
static const QLatin1String constComposer;
static const QLatin1String constAlbumTitle;
static const QLatin1String constTrackArtist;
static const QLatin1String constTrackTitle;
static const QLatin1String constTrackArtistAndTitle;
static const QLatin1String constTrackNumber;
static const QLatin1String constCdNumber;
static const QLatin1String constGenre;
static const QLatin1String constYear;
static bool isConfigured(const QString &group, bool isMpd=false);
#ifdef ENABLE_DEVICES_SUPPORT
DeviceOptions(const QString &cvrName=QString());
#else
DeviceOptions();
#endif
void load(const QString &group, bool isMpd=false);
void save(const QString &group, bool isMpd=false, bool saveTrans=true, bool saveFileNameScheme=true) const;
bool operator==(const DeviceOptions &o) const {
return vfatSafe==o.vfatSafe && asciiOnly==o.asciiOnly && ignoreThe==o.ignoreThe &&
replaceSpaces==o.replaceSpaces && scheme==o.scheme
#ifdef ENABLE_DEVICES_SUPPORT
&& coverMaxSize==o.coverMaxSize && coverName==o.coverName && name==o.name
&& fixVariousArtists==o.fixVariousArtists && useCache==o.useCache &&
transcoderCodec==o.transcoderCodec && autoScan==o.autoScan && volumeId==o.volumeId &&
(transcoderCodec.isEmpty() ||
(transcoderValue==o.transcoderValue && transcoderWhen==o.transcoderWhen))
#endif
;
}
bool operator!=(const DeviceOptions &o) const { return !(*this==o); }
QString clean(const QString &str) const;
Song clean(const Song &s) const;
QString createFilename(const Song &s) const;
#ifdef ENABLE_DEVICES_SUPPORT
void checkCoverSize() {
if (0==coverMaxSize || coverMaxSize>400) {
coverMaxSize=0;
} else {
coverMaxSize=((unsigned int)(coverMaxSize/100))*100;
}
}
#endif
QString scheme;
bool vfatSafe;
bool asciiOnly;
bool ignoreThe;
bool replaceSpaces;
#ifdef ENABLE_DEVICES_SUPPORT
bool fixVariousArtists;
QString transcoderCodec;
int transcoderValue;
TranscodeWhen transcoderWhen;
bool useCache;
bool autoScan;
QString name;
QString coverName;
unsigned int coverMaxSize;
QString volumeId;
#endif
};
#endif