X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBQueueController.mm;h=580c9e623a656cefb5054e226e6db3c1c845a15b;hb=240cf3308bf21be4d1918a71a5510d07e7d6d85b;hp=a3e61ce299ac3fd60313878adad5cfa08fd91755;hpb=4a7c57d43ac03556597821bdc3469c00a319b7b7;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index a3e61ce2..580c9e62 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -749,6 +749,12 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; { if ([outlineView isItemExpanded: item]) { + /* Below is the original code to accommodate a live resize, + * however as stated in travistex's comments it's very buggy. + * For now I will leave it here ... commented out and use + * the code below to determine the row height based on each + * encodes optional parameters and how they are displayed. */ + // Short-circuit here if in a live resize primarily to fix a bug but also to // increase resposivness during a resize. There's a bug in NSTableView that // causes row heights to get messed up if you try to change them during a live @@ -756,8 +762,8 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; // height. The row heights will get fixed up after the resize because we have // implemented viewDidEndLiveResize to force all of them to be recalculated. // if ([outlineView inLiveResize] && [item lastDescriptionHeight] > 0) - // return [item lastDescriptionHeight]; - + // return [item lastDescriptionHeight]; + // CGFloat width = [[outlineView tableColumnWithIdentifier: @"desc"] width]; // Column width is NOT what is ultimately used. I can't quite figure out what // width to use for calculating text metrics. No matter how I tweak this value, @@ -765,14 +771,114 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; // of the row cell. In previous versions, which ran under Tiger, I was // reducing width by 47 pixles. // width -= 2; // (?) for intercell spacing - + // CGFloat height = [item heightOfDescriptionForWidth: width]; // return height; - return HB_ROW_HEIGHT_FULL_DESCRIPTION; + /* So, we know several rows of text that are in all queue items for display. + * These are the title line, Preset, Format, Destination, Picture, and Video Lines + */ + CGFloat rowHeightNonTitle = 15.0; + /* Add the title line height, then the non title line height for Preset, Format, Destination + * Picture and Video + */ + CGFloat itemHeightForDisplay = HB_ROW_HEIGHT_TITLE_ONLY + (rowHeightNonTitle * 5); + + /* get our item row number so we an use it to calc how many lines we have to display based + * on MP4 Options, Filter Options, X264 Options, Audio Tracks and Subtitles from our queue array */ + int itemRowNum = [outlineView rowForItem: item]; + NSMutableDictionary *queueItemToCheck = [outlineView itemAtRow: itemRowNum]; + + /* Check to see if we need to allow for mp4 opts */ + BOOL mp4OptsPresent = NO; + if ([[queueItemToCheck objectForKey:@"FileFormat"] isEqualToString: @"MP4 file"]) + { + + if( [[queueItemToCheck objectForKey:@"Mp4LargeFile"] intValue] == 1) + { + mp4OptsPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"Mp4HttpOptimize"] intValue] == 1) + { + mp4OptsPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"Mp4iPodCompatible"] intValue] == 1) + { + mp4OptsPresent = YES; + } + } + + if (mp4OptsPresent == YES) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see if we need to allow for the Picture Filters row */ + BOOL pictureFiltersPresent = NO; + if( [[queueItemToCheck objectForKey:@"PictureDetelecine"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"PictureDecomb"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"PictureDeinterlace"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"PictureDenoise"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"PictureDeblock"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + if( [[queueItemToCheck objectForKey:@"VideoGrayScale"] intValue] > 0) + { + pictureFiltersPresent = YES; + } + + if (pictureFiltersPresent == YES) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see if we need a line to display x264 options */ + if ([[queueItemToCheck objectForKey:@"VideoEncoder"] isEqualToString: @"H.264 (x264)"]) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* check to see how many audio track lines to allow for */ + if ([[queueItemToCheck objectForKey:@"Audio1Track"] intValue] > 0) + { + itemHeightForDisplay += rowHeightNonTitle; + } + if ([[queueItemToCheck objectForKey:@"Audio2Track"] intValue] > 0) + { + itemHeightForDisplay += rowHeightNonTitle; + } + if ([[queueItemToCheck objectForKey:@"Audio3Track"] intValue] > 0) + { + itemHeightForDisplay += rowHeightNonTitle; + } + if ([[queueItemToCheck objectForKey:@"Audio4Track"] intValue] > 0) + { + itemHeightForDisplay += rowHeightNonTitle; + } + + /* add in subtitle lines for each subtitle in the SubtitleList array */ + itemHeightForDisplay += rowHeightNonTitle * [[queueItemToCheck objectForKey:@"SubtitleList"] count]; + + return itemHeightForDisplay; + } else + { return HB_ROW_HEIGHT_TITLE_ONLY; + } } - (CGFloat) heightOfDescriptionForWidth:(CGFloat)width @@ -861,20 +967,25 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [NSString stringWithFormat:@"Chapter %d", [[item objectForKey:@"ChapterStart"] intValue]] : [NSString stringWithFormat:@"Chapters %d through %d", [[item objectForKey:@"ChapterStart"] intValue], [[item objectForKey:@"ChapterEnd"] intValue]]; - NSString * passesString; + NSString * passesString = @""; + /* check to see if our first subtitle track is Foreign Language Search, in which case there is an in depth scan */ + if ([item objectForKey:@"SubtitleList"] && [[[[item objectForKey:@"SubtitleList"] objectAtIndex:0] objectForKey:@"subtitleSourceTrackNum"] intValue] == 1) + { + passesString = [passesString stringByAppendingString:@"1 Foreign Language Search Pass - "]; + } if ([[item objectForKey:@"VideoTwoPass"] intValue] == 0) { - passesString = [NSString stringWithFormat:@"1 Video Pass"]; + passesString = [passesString stringByAppendingString:@"1 Video Pass"]; } else { if ([[item objectForKey:@"VideoTurboTwoPass"] intValue] == 1) { - passesString = [NSString stringWithFormat:@"2 Video Passes Turbo"]; + passesString = [passesString stringByAppendingString:@"2 Video Passes First Turbo"]; } else { - passesString = [NSString stringWithFormat:@"2 Video Passes"]; + passesString = [passesString stringByAppendingString:@"2 Video Passes"]; } } @@ -898,10 +1009,10 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; /* Third Line (Format Summary) */ NSString * audioCodecSummary = @""; /* Lets also get our audio track detail since we are going through the logic for use later */ - NSString * audioDetail1 = @"None"; - NSString * audioDetail2 = @"None"; - NSString * audioDetail3 = @"None"; - NSString * audioDetail4 = @"None"; + NSString * audioDetail1 = @""; + NSString * audioDetail2 = @""; + NSString * audioDetail3 = @""; + NSString * audioDetail4 = @""; if ([[item objectForKey:@"Audio1Track"] intValue] > 0) { audioCodecSummary = [NSString stringWithFormat:@"%@", [item objectForKey:@"Audio1Encoder"]]; @@ -912,7 +1023,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [item objectForKey:@"Audio1Samplerate"], [item objectForKey:@"Audio1Bitrate"]]; - if ([[item objectForKey:@"Audio1TrackDRCSlider"] floatValue] > 1.00) + if ([[item objectForKey:@"Audio1TrackDRCSlider"] floatValue] > 0.00) { audioDetail1 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail1,[item objectForKey:@"Audio1TrackDRCSlider"]]; } @@ -932,7 +1043,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [item objectForKey:@"Audio2Samplerate"], [item objectForKey:@"Audio2Bitrate"]]; - if ([[item objectForKey:@"Audio2TrackDRCSlider"] floatValue] > 1.00) + if ([[item objectForKey:@"Audio2TrackDRCSlider"] floatValue] > 0.00) { audioDetail2 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail2,[item objectForKey:@"Audio2TrackDRCSlider"]]; } @@ -952,7 +1063,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [item objectForKey:@"Audio3Samplerate"], [item objectForKey:@"Audio3Bitrate"]]; - if ([[item objectForKey:@"Audio3TrackDRCSlider"] floatValue] > 1.00) + if ([[item objectForKey:@"Audio3TrackDRCSlider"] floatValue] > 0.00) { audioDetail3 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail3,[item objectForKey:@"Audio3TrackDRCSlider"]]; } @@ -972,7 +1083,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; [item objectForKey:@"Audio4Samplerate"], [item objectForKey:@"Audio4Bitrate"]]; - if ([[item objectForKey:@"Audio4TrackDRCSlider"] floatValue] > 1.00) + if ([[item objectForKey:@"Audio4TrackDRCSlider"] floatValue] > 0.00) { audioDetail4 = [NSString stringWithFormat:@"%@, DRC: %@",audioDetail4,[item objectForKey:@"Audio4TrackDRCSlider"]]; } @@ -1049,12 +1160,12 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; if( [[item objectForKey:@"PictureDetelecine"] intValue] == 1) { pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Detelecine (Default)"]; + pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[item objectForKey:@"PictureDetelecineCustom"]]]; } else if( [[item objectForKey:@"PictureDetelecine"] intValue] == 2) { pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Detelecine (%@)",[item objectForKey:@"PictureDetelecineCustom"]]]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Detelecine (Default)"]; } if( [[item objectForKey:@"PictureDecombDeinterlace"] intValue] == 1) @@ -1065,12 +1176,12 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; if( [[item objectForKey:@"PictureDecomb"] intValue] == 1) { pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Default)"]; + pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[item objectForKey:@"PictureDecombCustom"]]]; } - if( [[item objectForKey:@"PictureDecomb"] intValue] == 2) + else if( [[item objectForKey:@"PictureDecomb"] intValue] == 2) { pictureFiltersPresent = YES; - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Decomb (%@)",[item objectForKey:@"PictureDecombCustom"]]]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Decomb (Default)"]; } } } @@ -1081,19 +1192,19 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; pictureFiltersPresent = YES; if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 1) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Fast)"]; + pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[item objectForKey:@"PictureDeinterlaceCustom"]]]; } else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 2) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slow)"]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Fast)"]; } else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 3) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slower)"]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slow)"]; } else if ([[item objectForKey:@"PictureDeinterlace"] intValue] == 4) { - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Deinterlace (%@)",[item objectForKey:@"PictureDeinterlaceCustom"]]]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Deinterlace (Slower)"]; } } @@ -1103,19 +1214,19 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; pictureFiltersPresent = YES; if ([[item objectForKey:@"PictureDenoise"] intValue] == 1) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Weak)"]; + pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[item objectForKey:@"PictureDenoiseCustom"]]]; } else if ([[item objectForKey:@"PictureDenoise"] intValue] == 2) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Medium)"]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Weak)"]; } else if ([[item objectForKey:@"PictureDenoise"] intValue] == 3) { - pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Strong)"]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Medium)"]; } else if ([[item objectForKey:@"PictureDenoise"] intValue] == 4) { - pictureFilters = [pictureFilters stringByAppendingString:[NSString stringWithFormat:@" - Denoise (%@)",[item objectForKey:@"PictureDenoiseCustom"]]]; + pictureFilters = [pictureFilters stringByAppendingString:@" - Denoise (Strong)"]; } } @@ -1189,22 +1300,33 @@ return ![(HBQueueOutlineView*)outlineView isDragging]; /* Seventh Line Audio Details*/ - [finalString appendString: @"Audio Track 1: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail1 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; - - [finalString appendString: @"Audio Track 2: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail2 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; + if ([audioDetail1 length] != 0) + { + [finalString appendString: @"Audio Track 1: " withAttributes:detailBoldAttr]; + [finalString appendString: audioDetail1 withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } - [finalString appendString: @"Audio Track 3: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail3 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; + if ([audioDetail2 length] != 0) + { + [finalString appendString: @"Audio Track 2: " withAttributes:detailBoldAttr]; + [finalString appendString: audioDetail2 withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } - [finalString appendString: @"Audio Track 4: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail4 withAttributes:detailAttr]; - [finalString appendString:@"\n" withAttributes:detailAttr]; + if ([audioDetail3 length] != 0) + { + [finalString appendString: @"Audio Track 3: " withAttributes:detailBoldAttr]; + [finalString appendString: audioDetail3 withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + if ([audioDetail4 length] != 0) + { + [finalString appendString: @"Audio Track 4: " withAttributes:detailBoldAttr]; + [finalString appendString: audioDetail4 withAttributes:detailAttr]; + [finalString appendString:@"\n" withAttributes:detailAttr]; + } /* Eighth Line Subtitle Details */ int i = 0;