mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-09 21:24:36 +00:00
De-IBAction-ified actions in ResultsWindow and fixed a few mis-connections in the main menu.
--HG-- branch : xibless
This commit is contained in:
parent
a2d73b216c
commit
abe9041a67
@ -170,7 +170,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
- (void)startScanning
|
||||
{
|
||||
[[self resultWindow] startDuplicateScan:nil];
|
||||
[[self resultWindow] startDuplicateScan];
|
||||
}
|
||||
|
||||
|
||||
|
@ -54,33 +54,33 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)adjustUIToLocalization;
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)changeOptions:(id)sender;
|
||||
- (IBAction)copyMarked:(id)sender;
|
||||
- (IBAction)trashMarked:(id)sender;
|
||||
- (IBAction)exportToXHTML:(id)sender;
|
||||
- (IBAction)filter:(id)sender;
|
||||
- (IBAction)focusOnFilterField:(id)sender;
|
||||
- (IBAction)ignoreSelected:(id)sender;
|
||||
- (IBAction)invokeCustomCommand:(id)sender;
|
||||
- (IBAction)markAll:(id)sender;
|
||||
- (IBAction)markInvert:(id)sender;
|
||||
- (IBAction)markNone:(id)sender;
|
||||
- (IBAction)markSelected:(id)sender;
|
||||
- (IBAction)moveMarked:(id)sender;
|
||||
- (IBAction)openClicked:(id)sender;
|
||||
- (IBAction)openSelected:(id)sender;
|
||||
- (IBAction)removeMarked:(id)sender;
|
||||
- (IBAction)removeSelected:(id)sender;
|
||||
- (IBAction)renameSelected:(id)sender;
|
||||
- (IBAction)reprioritizeResults:(id)sender;
|
||||
- (IBAction)resetColumnsToDefault:(id)sender;
|
||||
- (IBAction)revealSelected:(id)sender;
|
||||
- (IBAction)saveResults:(id)sender;
|
||||
- (IBAction)startDuplicateScan:(id)sender;
|
||||
- (IBAction)switchSelected:(id)sender;
|
||||
- (IBAction)toggleColumn:(id)sender;
|
||||
- (IBAction)toggleDelta:(id)sender;
|
||||
- (IBAction)toggleDetailsPanel:(id)sender;
|
||||
- (IBAction)togglePowerMarker:(id)sender;
|
||||
- (IBAction)toggleQuicklookPanel:(id)sender;
|
||||
- (void)changeOptions;
|
||||
- (void)copyMarked;
|
||||
- (void)trashMarked;
|
||||
- (void)exportToXHTML;
|
||||
- (void)filter;
|
||||
- (void)focusOnFilterField;
|
||||
- (void)ignoreSelected;
|
||||
- (void)invokeCustomCommand;
|
||||
- (void)markAll;
|
||||
- (void)markInvert;
|
||||
- (void)markNone;
|
||||
- (void)markSelected;
|
||||
- (void)moveMarked;
|
||||
- (void)openClicked;
|
||||
- (void)openSelected;
|
||||
- (void)removeMarked;
|
||||
- (void)removeSelected;
|
||||
- (void)renameSelected;
|
||||
- (void)reprioritizeResults;
|
||||
- (void)resetColumnsToDefault;
|
||||
- (void)revealSelected;
|
||||
- (void)saveResults;
|
||||
- (void)startDuplicateScan;
|
||||
- (void)switchSelected;
|
||||
- (void)toggleColumn:(id)sender;
|
||||
- (void)toggleDelta;
|
||||
- (void)toggleDetailsPanel;
|
||||
- (void)togglePowerMarker;
|
||||
- (void)toggleQuicklookPanel;
|
||||
@end
|
||||
|
@ -39,7 +39,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[self initResultColumns];
|
||||
[self fillColumnsMenu];
|
||||
[matches setTarget:self];
|
||||
[matches setDoubleAction:@selector(openClicked:)];
|
||||
[matches setDoubleAction:@selector(openClicked)];
|
||||
[self adjustUIToLocalization];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobStarted:) name:JobStarted object:nil];
|
||||
@ -79,7 +79,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
[[app columnsMenu] addItem:[NSMenuItem separatorItem]];
|
||||
NSMenuItem *mi = [[app columnsMenu] addItemWithTitle:TR(@"Reset to Default")
|
||||
action:@selector(resetColumnsToDefault:) keyEquivalent:@""];
|
||||
action:@selector(resetColumnsToDefault) keyEquivalent:@""];
|
||||
[mi setTarget:self];
|
||||
}
|
||||
|
||||
@ -120,21 +120,21 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
- (IBAction)changeOptions:(id)sender
|
||||
- (void)changeOptions
|
||||
{
|
||||
NSInteger seg = [optionsSwitch selectedSegment];
|
||||
if (seg == 0) {
|
||||
[self toggleDetailsPanel:sender];
|
||||
[self toggleDetailsPanel];
|
||||
}
|
||||
else if (seg == 1) {
|
||||
[self togglePowerMarker:sender];
|
||||
[self togglePowerMarker];
|
||||
}
|
||||
else if (seg == 2) {
|
||||
[self toggleDelta:sender];
|
||||
[self toggleDelta];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)copyMarked:(id)sender
|
||||
- (void)copyMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
@ -142,62 +142,62 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model copyMarked];
|
||||
}
|
||||
|
||||
- (IBAction)trashMarked:(id)sender
|
||||
- (void)trashMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
[model deleteMarked];
|
||||
}
|
||||
|
||||
- (IBAction)exportToXHTML:(id)sender
|
||||
- (void)exportToXHTML
|
||||
{
|
||||
NSString *exported = [model exportToXHTML];
|
||||
[[NSWorkspace sharedWorkspace] openFile:exported];
|
||||
}
|
||||
|
||||
- (IBAction)filter:(id)sender
|
||||
- (void)filter
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setEscapeFilterRegexp:!n2b([ud objectForKey:@"useRegexpFilter"])];
|
||||
[model applyFilter:[filterField stringValue]];
|
||||
}
|
||||
|
||||
- (IBAction)focusOnFilterField:(id)sender
|
||||
- (void)focusOnFilterField
|
||||
{
|
||||
[[self window] makeFirstResponder:filterField];
|
||||
}
|
||||
|
||||
- (IBAction)ignoreSelected:(id)sender
|
||||
- (void)ignoreSelected
|
||||
{
|
||||
[model addSelectedToIgnoreList];
|
||||
}
|
||||
|
||||
- (IBAction)invokeCustomCommand:(id)sender
|
||||
- (void)invokeCustomCommand
|
||||
{
|
||||
[model invokeCustomCommand];
|
||||
}
|
||||
|
||||
- (IBAction)markAll:(id)sender
|
||||
- (void)markAll
|
||||
{
|
||||
[model markAll];
|
||||
}
|
||||
|
||||
- (IBAction)markInvert:(id)sender
|
||||
- (void)markInvert
|
||||
{
|
||||
[model markInvert];
|
||||
}
|
||||
|
||||
- (IBAction)markNone:(id)sender
|
||||
- (void)markNone
|
||||
{
|
||||
[model markNone];
|
||||
}
|
||||
|
||||
- (IBAction)markSelected:(id)sender
|
||||
- (void)markSelected
|
||||
{
|
||||
[model toggleSelectedMark];
|
||||
}
|
||||
|
||||
- (IBAction)moveMarked:(id)sender
|
||||
- (void)moveMarked
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
[model setRemoveEmptyFolders:n2b([ud objectForKey:@"removeEmptyFolders"])];
|
||||
@ -205,7 +205,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model moveMarked];
|
||||
}
|
||||
|
||||
- (IBAction)openClicked:(id)sender
|
||||
- (void)openClicked
|
||||
{
|
||||
if ([matches clickedRow] < 0) {
|
||||
return;
|
||||
@ -214,29 +214,29 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model openSelected];
|
||||
}
|
||||
|
||||
- (IBAction)openSelected:(id)sender
|
||||
- (void)openSelected
|
||||
{
|
||||
[model openSelected];
|
||||
}
|
||||
|
||||
- (IBAction)removeMarked:(id)sender
|
||||
- (void)removeMarked
|
||||
{
|
||||
[model removeMarked];
|
||||
}
|
||||
|
||||
- (IBAction)removeSelected:(id)sender
|
||||
- (void)removeSelected
|
||||
{
|
||||
[model removeSelected];
|
||||
}
|
||||
|
||||
- (IBAction)renameSelected:(id)sender
|
||||
- (void)renameSelected
|
||||
{
|
||||
NSInteger col = [matches columnWithIdentifier:@"0"];
|
||||
NSInteger row = [matches selectedRow];
|
||||
[matches editColumn:col row:row withEvent:[NSApp currentEvent] select:YES];
|
||||
}
|
||||
|
||||
- (IBAction)reprioritizeResults:(id)sender
|
||||
- (void)reprioritizeResults
|
||||
{
|
||||
PrioritizeDialog *dlg = [[PrioritizeDialog alloc] initWithApp:model];
|
||||
NSInteger result = [NSApp runModalForWindow:[dlg window]];
|
||||
@ -247,17 +247,17 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[self window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
- (IBAction)resetColumnsToDefault:(id)sender
|
||||
- (void)resetColumnsToDefault
|
||||
{
|
||||
[[[table columns] model] resetToDefaults];
|
||||
}
|
||||
|
||||
- (IBAction)revealSelected:(id)sender
|
||||
- (void)revealSelected
|
||||
{
|
||||
[model revealSelected];
|
||||
}
|
||||
|
||||
- (IBAction)saveResults:(id)sender
|
||||
- (void)saveResults
|
||||
{
|
||||
NSSavePanel *sp = [NSSavePanel savePanel];
|
||||
[sp setCanCreateDirectories:YES];
|
||||
@ -269,7 +269,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)startDuplicateScan:(id)sender
|
||||
- (void)startDuplicateScan
|
||||
{
|
||||
if ([model resultsAreModified]) {
|
||||
if ([Dialogs askYesNo:TR(@"You have unsaved results, do you really want to continue?")] == NSAlertSecondButtonReturn) // NO
|
||||
@ -279,37 +279,37 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[model doScan];
|
||||
}
|
||||
|
||||
- (IBAction)switchSelected:(id)sender
|
||||
- (void)switchSelected
|
||||
{
|
||||
[model makeSelectedReference];
|
||||
}
|
||||
|
||||
- (IBAction)toggleColumn:(id)sender
|
||||
- (void)toggleColumn:(id)sender
|
||||
{
|
||||
NSMenuItem *mi = sender;
|
||||
BOOL checked = [[[table columns] model] toggleMenuItem:[mi tag]];
|
||||
[mi setState:checked ? NSOnState : NSOffState];
|
||||
}
|
||||
|
||||
- (IBAction)toggleDetailsPanel:(id)sender
|
||||
- (void)toggleDetailsPanel
|
||||
{
|
||||
[[app detailsPanel] toggleVisibility];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)toggleDelta:(id)sender
|
||||
- (void)toggleDelta
|
||||
{
|
||||
[table setDeltaValuesMode:![table deltaValuesMode]];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)togglePowerMarker:(id)sender
|
||||
- (void)togglePowerMarker
|
||||
{
|
||||
[table setPowerMarkerMode:![table powerMarkerMode]];
|
||||
[self updateOptionSegments];
|
||||
}
|
||||
|
||||
- (IBAction)toggleQuicklookPanel:(id)sender
|
||||
- (void)toggleQuicklookPanel
|
||||
{
|
||||
if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
|
||||
[[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
|
||||
|
@ -27,45 +27,45 @@ appMenu.addItem("Quit dupeGuru", Action(NSApp, 'terminate:'), 'cmd+q')
|
||||
|
||||
fileMenu.addItem("Load Results...", Action(None, 'loadResults'), 'cmd+o')
|
||||
owner.recentResultsMenu = fileMenu.addMenu("Load Recent Results")
|
||||
fileMenu.addItem("Save Results...", Action(None, 'saveResults:'), 'cmd+s')
|
||||
fileMenu.addItem("Export Results to XHTML", Action(None, 'exportToXHTML:'), 'cmd+shift+e')
|
||||
fileMenu.addItem("Save Results...", Action(None, 'saveResults'), 'cmd+s')
|
||||
fileMenu.addItem("Export Results to XHTML", Action(None, 'exportToXHTML'), 'cmd+shift+e')
|
||||
|
||||
editMenu.addItem("Mark All", Action(None, 'markAll:'), 'cmd+a')
|
||||
editMenu.addItem("Mark None", Action(None, 'markNone:'), 'cmd+shift+a')
|
||||
editMenu.addItem("Invert Marking", Action(None, 'markInvert:'), 'cmd+alt+a')
|
||||
editMenu.addItem("Mark Selected", Action(None, 'markSelected:'), 'ctrl+cmd+a')
|
||||
editMenu.addItem("Mark All", Action(None, 'markAll'), 'cmd+a')
|
||||
editMenu.addItem("Mark None", Action(None, 'markNone'), 'cmd+shift+a')
|
||||
editMenu.addItem("Invert Marking", Action(None, 'markInvert'), 'cmd+alt+a')
|
||||
editMenu.addItem("Mark Selected", Action(None, 'markSelected'), 'ctrl+cmd+a')
|
||||
editMenu.addSeparator()
|
||||
editMenu.addItem("Cut", Action(None, 'cut:'), 'cmd+x')
|
||||
editMenu.addItem("Copy", Action(None, 'copy:'), 'cmd+c')
|
||||
editMenu.addItem("Paste", Action(None, 'paste:'), 'cmd+v')
|
||||
editMenu.addSeparator()
|
||||
editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField:'), 'cmd+alt+f')
|
||||
editMenu.addItem("Filter Results...", Action(None, 'focusOnFilterField'), 'cmd+alt+f')
|
||||
|
||||
actionMenu.addItem("Start Duplicate Scan", Action(owner, 'startScanning'), 'cmd+d')
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked:'), 'cmd+t')
|
||||
actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked:'), 'cmd+m')
|
||||
actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked:'), 'cmd+alt+m')
|
||||
actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked:'), 'cmd+r')
|
||||
actionMenu.addItem("Re-Prioritize Results", Action(None, 'reprioritizeResults:'))
|
||||
actionMenu.addItem("Send Marked to Trash...", Action(None, 'trashMarked'), 'cmd+t')
|
||||
actionMenu.addItem("Move Marked to...", Action(None, 'moveMarked'), 'cmd+m')
|
||||
actionMenu.addItem("Copy Marked to...", Action(None, 'copyMarked'), 'cmd+alt+m')
|
||||
actionMenu.addItem("Remove Marked from Results", Action(None, 'removeMarked'), 'cmd+r')
|
||||
actionMenu.addItem("Re-Prioritize Results", Action(None, 'reprioritizeResults'))
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected:'), 'cmd+backspace')
|
||||
actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected:'), 'cmd+g')
|
||||
actionMenu.addItem("Make Selected Reference", Action(None, 'switchSelected:'), 'cmd+arrowup')
|
||||
actionMenu.addItem("Remove Selected from Results", Action(None, 'removeSelected'), 'cmd+backspace')
|
||||
actionMenu.addItem("Add Selected to Ignore List", Action(None, 'ignoreSelected'), 'cmd+g')
|
||||
actionMenu.addItem("Make Selected Reference", Action(None, 'switchSelected'), 'cmd+arrowup')
|
||||
actionMenu.addSeparator()
|
||||
actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected:'), 'cmd+return')
|
||||
actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected:'), 'cmd+alt+return')
|
||||
actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand:'), 'cmd+shift+c')
|
||||
actionMenu.addItem("Rename Selected", Action(None, 'renameSelected:'))
|
||||
actionMenu.addItem("Open Selected with Default Application", Action(None, 'openSelected'), 'cmd+return')
|
||||
actionMenu.addItem("Reveal Selected in Finder", Action(None, 'revealSelected'), 'cmd+alt+return')
|
||||
actionMenu.addItem("Invoke Custom Command", Action(None, 'invokeCustomCommand'), 'cmd+shift+c')
|
||||
actionMenu.addItem("Rename Selected", Action(None, 'renameSelected'))
|
||||
|
||||
modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker:'), 'cmd+1')
|
||||
modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta:'), 'cmd+2')
|
||||
modeMenu.addItem("Show Dupes Only", Action(None, 'togglePowerMarker'), 'cmd+1')
|
||||
modeMenu.addItem("Show Delta Values", Action(None, 'toggleDelta'), 'cmd+2')
|
||||
|
||||
windowMenu.addItem("Results Window", Action(owner, 'showResultWindow:'))
|
||||
windowMenu.addItem("Results Window", Action(owner, 'showResultWindow'))
|
||||
windowMenu.addItem("Folder Selection Window", Action(owner, 'showDirectoryWindow'))
|
||||
windowMenu.addItem("Ignore List", Action(owner, 'showIgnoreList'))
|
||||
windowMenu.addItem("Details Panel", Action(owner, 'toggleDetailsPanel'), 'cmd+i')
|
||||
windowMenu.addItem("Quick Look", Action(owner, 'toggleQuicklookPanel'), 'cmd+l')
|
||||
windowMenu.addItem("Details Panel", Action(None, 'toggleDetailsPanel'), 'cmd+i')
|
||||
windowMenu.addItem("Quick Look", Action(None, 'toggleQuicklookPanel'), 'cmd+l')
|
||||
windowMenu.addSeparator()
|
||||
windowMenu.addItem("Minimize", Action(None, 'performMinimize:'))
|
||||
windowMenu.addItem("Zoom", Action(None, 'performZoom:'))
|
||||
|
@ -26,7 +26,7 @@ item.image = 'NSActionTemplate'
|
||||
actionPopup.width = 44
|
||||
actionToolItem.view = actionPopup
|
||||
filterField = SearchField(None, "Filter")
|
||||
filterField.action = Action(owner, 'filter:')
|
||||
filterField.action = Action(owner, 'filter')
|
||||
filterField.sendsWholeSearchString = True
|
||||
filterToolItem.view = filterField
|
||||
filterToolItem.minSize = Size(80, 22)
|
||||
@ -35,7 +35,7 @@ quickLookButton = Button(None, "")
|
||||
quickLookButton.bezelStyle = const.NSTexturedRoundedBezelStyle
|
||||
quickLookButton.image = 'NSQuickLookTemplate'
|
||||
quickLookButton.width = 44
|
||||
quickLookButton.action = Action(owner, 'toggleQuicklookPanel:')
|
||||
quickLookButton.action = Action(owner, 'toggleQuicklookPanel')
|
||||
quicklookToolItem.view = quickLookButton
|
||||
optionsSegments = SegmentedControl(None)
|
||||
optionsSegments.segmentStyle = const.NSSegmentStyleCapsule
|
||||
@ -44,23 +44,23 @@ optionsSegments.font = Font(FontFamily.System, 11)
|
||||
optionsSegments.addSegment("Details", 57)
|
||||
optionsSegments.addSegment("Dupes Only", 82)
|
||||
optionsSegments.addSegment("Delta", 48)
|
||||
optionsSegments.action = Action(owner, 'changeOptions:')
|
||||
optionsSegments.action = Action(owner, 'changeOptions')
|
||||
optionsToolItem.view = optionsSegments
|
||||
|
||||
# Popuplate menus
|
||||
actionPopup.menu.addItem("Send Marked to Trash...", action=Action(owner, 'trashMarked:'))
|
||||
actionPopup.menu.addItem("Move Marked to...", action=Action(owner, 'moveMarked:'))
|
||||
actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'copyMarked:'))
|
||||
actionPopup.menu.addItem("Remove Marked from Results", action=Action(owner, 'removeMarked:'))
|
||||
actionPopup.menu.addItem("Send Marked to Trash...", action=Action(owner, 'trashMarked'))
|
||||
actionPopup.menu.addItem("Move Marked to...", action=Action(owner, 'moveMarked'))
|
||||
actionPopup.menu.addItem("Copy Marked to...", action=Action(owner, 'copyMarked'))
|
||||
actionPopup.menu.addItem("Remove Marked from Results", action=Action(owner, 'removeMarked'))
|
||||
actionPopup.menu.addSeparator()
|
||||
for menu in (actionPopup.menu, contextMenu):
|
||||
menu.addItem("Remove Selected from Results", action=Action(owner, 'removeSelected:'))
|
||||
menu.addItem("Add Selected to Ignore List", action=Action(owner, 'ignoreSelected:'))
|
||||
menu.addItem("Make Selected Reference", action=Action(owner, 'switchSelected:'))
|
||||
menu.addItem("Remove Selected from Results", action=Action(owner, 'removeSelected'))
|
||||
menu.addItem("Add Selected to Ignore List", action=Action(owner, 'ignoreSelected'))
|
||||
menu.addItem("Make Selected Reference", action=Action(owner, 'switchSelected'))
|
||||
menu.addSeparator()
|
||||
menu.addItem("Open Selected with Default Application", action=Action(owner, 'openSelected:'))
|
||||
menu.addItem("Reveal Selected in Finder", action=Action(owner, 'revealSelected:'))
|
||||
menu.addItem("Rename Selected", action=Action(owner, 'renameSelected:'))
|
||||
menu.addItem("Open Selected with Default Application", action=Action(owner, 'openSelected'))
|
||||
menu.addItem("Reveal Selected in Finder", action=Action(owner, 'revealSelected'))
|
||||
menu.addItem("Rename Selected", action=Action(owner, 'renameSelected'))
|
||||
|
||||
# Doing connections
|
||||
owner.filterField = filterField
|
||||
|
Loading…
x
Reference in New Issue
Block a user