Skip to content

Commit 0b44850

Browse files
committed
added eqMac2 legacy preset import and sorting presets by name
1 parent ce684e5 commit 0b44850

8 files changed

Lines changed: 106 additions & 11 deletions

File tree

native/app/Source/Audio/Effects/Equalizers/Advanced/AdvancedEqualizerDataBus.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,15 @@ class AdvancedEqualizerDataBus: DataBus {
155155
return nil
156156
}
157157

158+
self.on(.GET, "/presets/import-legacy/available") { data, _ in
159+
return "Yes"
160+
}
161+
158162
self.on(.GET, "/presets/import-legacy") { data, _ in
159-
// TODO: Implement
163+
let presets = eqMac2.get10BandPresets()
164+
for preset in presets {
165+
_ = AdvancedEqualizer.createPreset(name: preset.name, gains: preset.gains)
166+
}
160167
return "Imported"
161168
}
162169

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//
2+
// eqMac2.swift
3+
// eqMac
4+
//
5+
// Created by Romans Kisils on 20/06/2020.
6+
// Copyright © 2020 Romans Kisils. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
class eqMac2 {
13+
14+
static var defaults: Dictionary<String, Any>? {
15+
return UserDefaults(suiteName: "com.bitgapp.eqMac2")?.dictionaryRepresentation()
16+
}
17+
18+
static func get10BandPresets () -> [AdvancedEqualizerPreset] {
19+
if defaults != nil, let presets = defaults!["kStoragePresets"] as? Dictionary<String, Dictionary<String, Any>> {
20+
var result: [AdvancedEqualizerPreset] = []
21+
for (name, preset) in presets {
22+
if let gains = preset["gains"] as? [Double] {
23+
if gains.count == 10 {
24+
result.append(AdvancedEqualizerPreset(
25+
id: UUID().uuidString,
26+
name: name,
27+
isDefault: false,
28+
gains: AdvancedEqualizerPresetGains(
29+
global: 0,
30+
bands: gains.map { Utilities.mapValue(value: $0, inMin: -1, inMax: 1, outMin: -24, outMax: 24) }
31+
)
32+
))
33+
}
34+
}
35+
}
36+
return result
37+
}
38+
return []
39+
}
40+
}

native/app/eqMac.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
E0C5629320A39651000902ED /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C5629220A39651000902ED /* Bridge.swift */; };
9191
E0C5629920A75BAD000902ED /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C5629820A75BAD000902ED /* Storage.swift */; };
9292
E0C8F78621D3B6590023B1E5 /* UIDataBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C8F78521D3B6590023B1E5 /* UIDataBus.swift */; };
93+
E0D1A0DA249E191700BBC742 /* eqMac2.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0D1A0D9249E191700BBC742 /* eqMac2.swift */; };
9394
E0D5F88722DD20F800499250 /* SettingsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0D5F88622DD20F800499250 /* SettingsState.swift */; };
9495
E0DDF3FA2188390300B37E77 /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0DDF3F92188390300B37E77 /* Alert.swift */; };
9596
E0E2CFF72104EA7A002DC989 /* Equalizers.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0E2CFF62104EA7A002DC989 /* Equalizers.swift */; };
@@ -214,6 +215,7 @@
214215
E0C5629220A39651000902ED /* Bridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bridge.swift; sourceTree = "<group>"; };
215216
E0C5629820A75BAD000902ED /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; };
216217
E0C8F78521D3B6590023B1E5 /* UIDataBus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDataBus.swift; sourceTree = "<group>"; };
218+
E0D1A0D9249E191700BBC742 /* eqMac2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = eqMac2.swift; sourceTree = "<group>"; };
217219
E0D5F88622DD20F800499250 /* SettingsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsState.swift; sourceTree = "<group>"; };
218220
E0DDF3F92188390300B37E77 /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = "<group>"; };
219221
E0DDF3FC2189021300B37E77 /* install_driver.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_driver.sh; sourceTree = "<group>"; };
@@ -418,6 +420,7 @@
418420
E02FF91722C8E87D0051342A /* Time.swift */,
419421
E0ECA88923B7F816002AFBF0 /* ExceptionCatcher.h */,
420422
E0AAD9D9249C109000D58099 /* SwiftyPing.swift */,
423+
E0D1A0D9249E191700BBC742 /* eqMac2.swift */,
421424
);
422425
path = Helpers;
423426
sourceTree = "<group>";
@@ -875,6 +878,7 @@
875878
E021BCE722313F1E004921FF /* SettingsDataBus.swift in Sources */,
876879
E00C595923BBB8B000C7B8B6 /* RingBufferTimeBounds.swift in Sources */,
877880
E017A0091FF055B50019BBF1 /* User.swift in Sources */,
881+
E0D1A0DA249E191700BBC742 /* eqMac2.swift in Sources */,
878882
E0E8B62F20EEB6A900DE905C /* EffectsState.swift in Sources */,
879883
E0D5F88722DD20F800499250 /* SettingsState.swift in Sources */,
880884
E01B1BB9235E454500CC58E5 /* InputSource.swift in Sources */,

ui/src/app/sections/effects/equalizers/advanced-equalizer/advanced-equalizer.component.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,16 @@ export class AdvancedEqualizerComponent extends EqualizerComponent implements On
4141
}
4242
], [
4343
this.ShowDefaultPresetsCheckbox
44-
// {
45-
// key: 'import-legacy-presets',
46-
// type: 'button',
47-
// label: 'Import eqMac2 Presets',
48-
// action: () => {}
49-
// }
5044
]]
5145
private _presets: AdvancedEqualizerPreset[]
5246
@Output() presetsChange = new EventEmitter<AdvancedEqualizerPreset[]>()
5347
set presets (newPresets: AdvancedEqualizerPreset[]) {
54-
this._presets = newPresets
48+
this._presets =
49+
[
50+
newPresets.find(p => p.id === 'manual'),
51+
newPresets.find(p => p.id === 'flat'),
52+
...newPresets.filter(p => !['manual', 'flat'].includes(p.id)).sort((a, b) => a.name > b.name ? 1 : -1)
53+
]
5554
this.presetsChange.emit(this.presets)
5655
}
5756
get presets () { return this._presets }
@@ -105,7 +104,10 @@ export class AdvancedEqualizerComponent extends EqualizerComponent implements On
105104
private transition: TransitionService,
106105
private change: ChangeDetectorRef,
107106
private app: ApplicationService
108-
) { super() }
107+
) {
108+
super()
109+
this.getImportLegacyAvailable()
110+
}
109111

110112
async ngOnInit () {
111113
await this.sync()
@@ -119,6 +121,23 @@ export class AdvancedEqualizerComponent extends EqualizerComponent implements On
119121
])
120122
}
121123

124+
private async getImportLegacyAvailable () {
125+
if (await this.service.getImportLegacyAvailable()) {
126+
this.settings[1].push(
127+
{
128+
key: 'import-legacy-presets',
129+
type: 'button',
130+
label: 'Import eqMac2 Presets',
131+
action: async () => {
132+
await this.service.importLegacy()
133+
if (this.settingsDialog) {
134+
this.settingsDialog.close()
135+
}
136+
}
137+
}
138+
)
139+
}
140+
}
122141
private async syncPresets () {
123142
const [ presets, selectedPreset ] = await Promise.all([
124143
this.service.getPresets(),

ui/src/app/sections/effects/equalizers/advanced-equalizer/advanced-equalizer.service.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ export class AdvancedEqualizerService extends EqualizersService {
4747
return this.request({ method: 'DELETE', endpoint: `/presets`, data: { ...preset } })
4848
}
4949

50+
async getImportLegacyAvailable () {
51+
return new Promise(async (resolve) => {
52+
setTimeout(() => resolve(false), 1000)
53+
try {
54+
await this.request({ method: 'GET', endpoint: '/presets/import-legacy/available' })
55+
resolve(true)
56+
} catch (err) {
57+
resolve(false)
58+
}
59+
})
60+
}
61+
62+
async importLegacy () {
63+
return this.request({ method: 'GET', endpoint: '/presets/import-legacy' })
64+
}
65+
5066
importPresets () {
5167
return this.request({ method: 'GET', endpoint: '/presets/import' })
5268
}

ui/src/app/sections/effects/equalizers/basic-equalizer/basic-equalizer.component.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,12 @@ export class BasicEqualizerComponent extends EqualizerComponent implements OnIni
2727
private _presets: BasicEqualizerPreset[]
2828
@Output() presetsChange = new EventEmitter<BasicEqualizerPreset[]>()
2929
set presets (newPresets: BasicEqualizerPreset[]) {
30-
this._presets = newPresets
30+
this._presets =
31+
[
32+
newPresets.find(p => p.id === 'manual'),
33+
newPresets.find(p => p.id === 'flat'),
34+
...newPresets.filter(p => !['manual', 'flat'].includes(p.id)).sort((a, b) => a.name > b.name ? 1 : -1)
35+
]
3136
this.presetsChange.emit(this.presets)
3237
}
3338
get presets () { return this._presets }

ui/src/app/sections/effects/equalizers/equalizer.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { Option, Options } from 'src/app/components/options/options.component'
22
import { EqualizerPreset } from './presets/equalizer-presets.component'
33
import { Input } from '@angular/core'
4+
import { MatDialogRef } from '@angular/material'
5+
import { OptionsDialogComponent } from '../../../components/options-dialog/options-dialog.component'
46

57
export abstract class EqualizerComponent {
68
@Input() animationDuration = 500
79
@Input() animationFps = 30
8-
10+
@Input() settingsDialog: MatDialogRef<OptionsDialogComponent, any>
911
abstract settings: Options
1012
abstract async sync ()
1113
async selected () {

ui/src/app/sections/effects/equalizers/equalizers.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@
5454
[enabled]="enabled" class="equalizer"
5555
(presetsChange)="presets = $event" (selectedPresetChange)="selectedPreset = $event"
5656
[animationDuration]="animationDuration" [animationFps]="animationFps"
57+
[settingsDialog]="settingsDialog"
5758
></eqm-basic-equalizer>
5859
<eqm-advanced-equalizer #advancedEqualizer *eqmCarouselItem="'Advanced'"
5960
[enabled]="enabled" class="equalizer"
6061
(presetsChange)="presets = $event" (selectedPresetChange)="selectedPreset = $event"
6162
[animationDuration]="animationDuration" [animationFps]="animationFps"
63+
[settingsDialog]="settingsDialog"
6264
></eqm-advanced-equalizer>
6365
</eqm-carousel>

0 commit comments

Comments
 (0)