diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 96b91b07..501a6458 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -52,6 +52,7 @@ import { SubscriptionFileCardComponent } from './subscription/subscription-file-
import { SubscriptionInfoDialogComponent } from './dialogs/subscription-info-dialog/subscription-info-dialog.component';
import { SettingsComponent } from './settings/settings.component';
import { CheckOrSetPinDialogComponent } from './dialogs/check-or-set-pin-dialog/check-or-set-pin-dialog.component';
+import {MatChipsModule} from '@angular/material/chips';
import es from '@angular/common/locales/es';
import { AboutDialogComponent } from './dialogs/about-dialog/about-dialog.component';
@@ -141,6 +142,7 @@ export function isVisible({ event, element, scrollContainer, offset }: IsVisible
MatPaginatorModule,
MatSortModule,
MatTableModule,
+ MatChipsModule,
DragDropModule,
ClipboardModule,
VgCoreModule,
diff --git a/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html b/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html
index b86db126..1c0f1477 100644
--- a/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html
+++ b/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html
@@ -7,7 +7,18 @@
Simulated new args
-
+
+
+ {{arg}}
+ cancel
+
+
+
@@ -63,6 +74,6 @@
-
+
\ No newline at end of file
diff --git a/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.ts b/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.ts
index a5df6e2a..1ab2b8f7 100644
--- a/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.ts
+++ b/src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.ts
@@ -1,5 +1,7 @@
-import { Component, OnInit, Inject, Pipe, PipeTransform, NgModule } from '@angular/core';
+import { Component, OnInit, Inject, Pipe, PipeTransform } from '@angular/core';
+import { COMMA, ENTER } from '@angular/cdk/keycodes';
import { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';
+import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
import { FormControl } from '@angular/forms';
import { args, args_info } from './youtubedl_args';
import { Observable } from 'rxjs';
@@ -38,6 +40,14 @@ export class ArgModifierDialogComponent implements OnInit {
argsInfo = null;
filteredOptions: Observable;
+ // chip list
+ visible = true;
+ selectable = true;
+ removable = true;
+ addOnBlur = false;
+ args_array = null;
+ readonly separatorKeysCodes: number[] = [ENTER, COMMA];
+
static forRoot() {
return {
ngModule: ArgModifierDialogComponent,
@@ -51,6 +61,7 @@ export class ArgModifierDialogComponent implements OnInit {
ngOnInit(): void {
if (this.data) {
this.modified_args = this.data.initial_args;
+ this.generateArgsArray();
}
this.getAllPossibleArgs();
@@ -117,4 +128,35 @@ export class ArgModifierDialogComponent implements OnInit {
this.stateCtrl.setValue(arg_key);
}
+ // chip list functions
+
+ add(event) {
+ const input = event.input;
+ const arg = event.value;
+ this.args_array.push(arg);
+ if (this.modified_args.length > 0) {
+ this.modified_args += ',,'
+ }
+ this.modified_args += arg;
+ if (input) { input.value = ''; }
+ }
+
+ remove(arg_index) {
+ this.args_array.splice(arg_index, 1);
+ this.modified_args = this.args_array.join(',,');
+ }
+
+ generateArgsArray() {
+ if (this.modified_args.trim().length === 0) {
+ this.args_array = [];
+ return;
+ }
+ this.args_array = this.modified_args.split(',,');
+ }
+
+ drop(event: CdkDragDrop) {
+ moveItemInArray(this.args_array, event.previousIndex, event.currentIndex);
+ this.modified_args = this.args_array.join(',,');
+ }
+
}
diff --git a/src/app/main/main.component.ts b/src/app/main/main.component.ts
index 147c6793..c2297bc5 100644
--- a/src/app/main/main.component.ts
+++ b/src/app/main/main.component.ts
@@ -1131,8 +1131,8 @@ export class MainComponent implements OnInit {
}
});
dialogRef.afterClosed().subscribe(new_args => {
- if (new_args) {
- this.customArgs = new_args;
+ if (new_args !== null) {
+ this.customArgs = new_args;
}
});
}
diff --git a/src/app/settings/settings.component.ts b/src/app/settings/settings.component.ts
index bc0ec810..7420ba68 100644
--- a/src/app/settings/settings.component.ts
+++ b/src/app/settings/settings.component.ts
@@ -144,9 +144,9 @@ export class SettingsComponent implements OnInit {
}
});
dialogRef.afterClosed().subscribe(new_args => {
- if (new_args) {
+ if (new_args !== null) {
this.new_config['Downloader']['custom_args'] = new_args;
- }
+ }
});
}