X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBQueueController.mm;h=bcc6adaf6ea76cf12d9e4c3566d9a3f41ade5886;hb=f35d39f9adca67471b72f3e47398855d51481f87;hp=39fb40ce0c5113a2f3b177be456d126b49c13fee;hpb=a5ff0fdf6d0b23caa365df343db6b8ff049a27c1;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 39fb40ce..bcc6adaf 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"]]; @@ -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)"]; } } @@ -1187,21 +1298,66 @@ 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]; + 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 2: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail2 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 3: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail3 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]; + } - [finalString appendString: @"Audio Track 4: " withAttributes:detailBoldAttr]; - [finalString appendString: audioDetail4 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; + NSEnumerator *enumerator = [[item objectForKey:@"SubtitleList"] objectEnumerator]; + id tempObject; + while (tempObject = [enumerator nextObject]) + { + /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups, + * we want to ignore it for display as well as encoding. + */ + if ([[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue] > 0) + { + /* remember that index 0 of Subtitles can contain "Foreign Audio Search*/ + [finalString appendString: @"Subtitle: " withAttributes:detailBoldAttr]; + [finalString appendString: [tempObject objectForKey:@"subtitleSourceTrackName"] withAttributes:detailAttr]; + if ([[tempObject objectForKey:@"subtitleTrackForced"] intValue] == 1) + { + [finalString appendString: @" - Forced Only" withAttributes:detailAttr]; + } + if ([[tempObject objectForKey:@"subtitleTrackBurned"] intValue] == 1) + { + [finalString appendString: @" - Burned In" withAttributes:detailAttr]; + } + if ([[tempObject objectForKey:@"subtitleTrackDefault"] intValue] == 1) + { + [finalString appendString: @" - Default" withAttributes:detailAttr]; + } + [finalString appendString:@"\n" withAttributes:detailAttr]; + } + i++; + } return finalString; }