summaryrefslogtreecommitdiff
path: root/VKPC/PlaylistTableView.m
blob: ca41641603a98a16548462aa2504c78f34f2d10d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//
//  PlaylistTableView.m
//  VKPC
//
//  Created by Eugene on 12/1/13.
//  Copyright (c) 2013-2014 Eugene Z. All rights reserved.
//

#import "PlaylistTableView.h"
#import "Global.h"
#import "PlaylistTableRowView.h"
#import "PlaylistTableController.h"

static const int kRowHeight = 51;

@implementation PlaylistTableView {
    NSInteger pressedRow;
}

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
        [self.enclosingScrollView setDrawsBackground:NO];
        [self.enclosingScrollView setBorderType:NSNoBorder];
        [self setHeaderView:nil];
        [self setBackgroundColor:[NSColor clearColor]];
        
        pressedRow = -1;
    }
    return self;
}

- (BOOL)isOpaque {
    return NO;
}

- (void)drawRect:(NSRect)dirtyRect {
	[super drawRect:dirtyRect];
}

//- (BOOL)wantsLayer {
//    return YES;
//}

- (void)mouseDown:(NSEvent *)theEvent {
    NSPoint point = [self convertPoint:[theEvent locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:point];
    
    if (row != -1) {
        pressedRow = row;
        PlaylistTableRowView *rowView = [self rowViewAtRow:row makeIfNecessary:NO];
        rowView.mouseInside = YES;
        [rowView setTrackSelected:YES];
    }
}

- (void)mouseUp:(NSEvent *)theEvent {
    NSPoint point = [self convertPoint:[theEvent locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:point];
    
    if (row != -1 && (int)row == pressedRow) {
        PlaylistTableRowView *rowView = [self rowViewAtRow:row makeIfNecessary:NO];
        [rowView setTrackSelected:NO];
        
        [_controller selectedRowAtIndex:(int)row];
    }
}

- (int)getContentSize {
    return kRowHeight * (int)[self numberOfRows];
}

@end