]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/about.m
Remove the deprecated vlc_atomic_t type.
[vlc] / modules / gui / macosx / about.m
index 3229dbfa56e5b6176848038484d165b81eaa9ca2..34447992e676e396e7ea4e717ede342f087adfc8 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * about.m: MacOS X About Panel
  *****************************************************************************
- * Copyright (C) 2001-2012 VLC authors and VideoLAN
+ * Copyright (C) 2001-2013 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Derk-Jan Hartman <thedj@users.sourceforge.net>
@@ -63,8 +63,8 @@ static VLAboutBox *_o_sharedInstance = nil;
 
 - (void) dealloc
 {
+    [o_authors release];
     [[NSNotificationCenter defaultCenter] removeObserver: self];
-    [o_color_backdrop release];
     [super dealloc];
 }
 
@@ -72,10 +72,6 @@ static VLAboutBox *_o_sharedInstance = nil;
 {
     if (!OSX_SNOW_LEOPARD)
         [o_about_window setCollectionBehavior: NSWindowCollectionBehaviorFullScreenAuxiliary];
-
-    /* add a colored backdrop to get a white window background */
-    o_color_backdrop = [[VLAboutColoredBackdrop alloc] initWithFrame: [[o_about_window contentView] frame]];
-    [[o_about_window contentView] addSubview: o_color_backdrop positioned: NSWindowBelow relativeTo: nil];
 }
 
 /*****************************************************************************
@@ -92,8 +88,20 @@ static VLAboutBox *_o_sharedInstance = nil;
         /* Setup the copyright field */
         [o_copyright_field setStringValue: [o_local_dict objectForKey:@"NSHumanReadableCopyright"]];
 
-        /* Set the box title */
+        /* l10n */
         [o_about_window setTitle: _NS("About VLC media player")];
+        NSDictionary *stringAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:NSUnderlineStyleSingle], NSUnderlineStyleAttributeName, [NSColor colorWithCalibratedRed:0. green:0.3411 blue:0.6824 alpha:1.], NSForegroundColorAttributeName, [NSFont systemFontOfSize:13], NSFontAttributeName, nil];
+        NSAttributedString *attrStr;
+        attrStr = [[NSAttributedString alloc] initWithString:_NS("Credits") attributes:stringAttributes];
+        [o_credits_btn setAttributedTitle:attrStr];
+        [attrStr release];
+        attrStr = [[NSAttributedString alloc] initWithString:_NS("License") attributes:stringAttributes];
+        [o_gpl_btn setAttributedTitle:attrStr];
+        [attrStr release];
+        attrStr = [[NSAttributedString alloc] initWithString:_NS("Authors") attributes:stringAttributes];
+        [o_authors_btn setAttributedTitle:attrStr];
+        [attrStr release];
+        [o_trademarks_txt setStringValue:_NS("VLC media player and VideoLAN are trademarks of the VideoLAN Association.")];
 
         /* setup the creator / revision field */
         NSString *compiler;
@@ -104,12 +112,12 @@ static VLAboutBox *_o_sharedInstance = nil;
 #else
         compiler = [NSString stringWithFormat:@"gcc %s", __VERSION__];
 #endif
-        [o_revision_field setStringValue: [NSString stringWithFormat: _NS("Compiled by %@ with %@"), [NSString stringWithUTF8String:VLC_CompileBy()], compiler]];
+        [o_revision_field setStringValue: [NSString stringWithFormat: _NS("Compiled by %s with %@"), VLC_CompileBy(), compiler]];
 
         /* Setup the nameversion field */
         [o_name_version_field setStringValue: [NSString stringWithFormat:@"Version %s (%s)", VERSION_MESSAGE, PLATFORM]];
 
-        NSMutableArray *tmpArray = [NSMutableArray arrayWithArray: [[NSString stringWithUTF8String: psz_authors]componentsSeparatedByString:@"\n\n"]];
+        NSMutableArray *tmpArray = [NSMutableArray arrayWithArray: [[NSString stringWithUTF8String:psz_authors] componentsSeparatedByString:@"\n\n"]];
         NSUInteger count = [tmpArray count];
         for (NSUInteger i = 0; i < count; i++) {
             [tmpArray replaceObjectAtIndex:i withObject:[[tmpArray objectAtIndex:i]stringByReplacingOccurrencesOfString:@"\n" withString:@", "]];
@@ -117,13 +125,26 @@ static VLAboutBox *_o_sharedInstance = nil;
             [tmpArray replaceObjectAtIndex:i withObject:[[tmpArray objectAtIndex:i]stringByReplacingOccurrencesOfString:@"-, " withString:@"-\n" options:0 range:NSRangeFromString(@"0 30")]];
             [tmpArray replaceObjectAtIndex:i withObject:[[tmpArray objectAtIndex:i]stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]]];
         }
-        NSString *authors = [tmpArray componentsJoinedByString:@"\n\n"];
-
-        /* setup the authors and thanks field */
-        [o_credits_textview setString: [NSString stringWithFormat: @"%@\n\n\n\n\n\n%@\n\n%@\n\n",
-                                        [_NS(INTF_ABOUT_MSG) stringByReplacingOccurrencesOfString:@"\n" withString:@" "],
-                                        authors,
-                                        [[NSString stringWithUTF8String: psz_thanks] stringByReplacingOccurrencesOfString:@"\n" withString:@" " options:0 range:NSRangeFromString(@"680 2")]]];
+        o_authors = [tmpArray componentsJoinedByString:@"\n\n"];
+        [o_authors retain];
+
+        /* setup join us! */
+        NSString *joinus = [NSString stringWithUTF8String:_(""
+                                                            "<p>VLC media player is a free and open source media player, encoder, and "
+                                                            "streamer made by the volunteers of the <a href=\"http://www.videolan.org/"
+                                                            "\"><span style=\" text-decoration: underline; color:#0057ae;\">VideoLAN</"
+                                                            "span></a> community.</p><p>VLC uses its internal codecs, works on "
+                                                            "essentially every popular platform, and can read almost all files, CDs, "
+                                                            "DVDs, network streams, capture cards and other media formats!</p><p><a href="
+                                                            "\"http://www.videolan.org/contribute/\"><span style=\" text-decoration: "
+                                                            "underline; color:#0057ae;\">Help and join us!</span></a>")];
+        NSAttributedString *joinus_readytorender = [[NSAttributedString alloc] initWithHTML:[joinus dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] options:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:NSUTF8StringEncoding] forKey:NSCharacterEncodingDocumentOption] documentAttributes:NULL];
+        [o_joinus_txt setAllowsEditingTextAttributes: YES];
+        [o_joinus_txt setSelectable: YES];
+        [o_joinus_txt setAttributedStringValue:joinus_readytorender];
+
+        [joinus_readytorender release];
+        [o_credits_textview setString: @""];
 
         /* Setup the window */
         [o_credits_textview setDrawsBackground: NO];
@@ -131,13 +152,33 @@ static VLAboutBox *_o_sharedInstance = nil;
         [o_about_window setExcludedFromWindowsMenu:YES];
         [o_about_window setMenu:nil];
         [o_about_window center];
-        [o_gpl_btn setTitle: _NS("License")];
+        [o_about_window setBackgroundColor: [NSColor colorWithCalibratedWhite:.96 alpha:1.]];
+
+        if (config_GetInt(VLCIntf, "macosx-icon-change")) {
+            /* After day 354 of the year, the usual VLC cone is replaced by another cone
+             * wearing a Father Xmas hat.
+             * Note: this icon doesn't represent an endorsement of The Coca-Cola Company.
+             */
+            NSCalendar *gregorian =
+            [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
+            NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]];
+            [gregorian release];
+
+            if (dayOfYear >= 354)
+                [o_icon_view setImage: [NSImage imageNamed:@"vlc-xmas"]];
+        }
 
         b_isSetUp = YES;
     }
 
     /* Show the window */
     b_restart = YES;
+    [o_credits_scrollview setHidden:YES];
+    [o_credits_textview setHidden:YES];
+    [o_joinus_txt setHidden:NO];
+    [o_copyright_field setHidden:NO];
+    [o_revision_field setHidden:NO];
+    [o_name_version_field setHidden:NO];
     [o_credits_textview scrollPoint:NSMakePoint(0, 0)];
     [o_about_window makeKeyAndOrderFront: nil];
 }
@@ -177,6 +218,7 @@ static VLAboutBox *_o_sharedInstance = nil;
         if (f_current >= f_end) {
             /* f_end may be wrong on first run, so don't trust it too much */
             if (f_end == [o_credits_textview bounds].size.height - [o_credits_scrollview bounds].size.height) {
+                sleep(2);
                 b_restart = YES;
                 [o_credits_textview scrollPoint:NSMakePoint(0, 0)];
             } else
@@ -185,17 +227,41 @@ static VLAboutBox *_o_sharedInstance = nil;
     }
 }
 
+- (IBAction)buttonAction:(id)sender
+{
+    [o_credits_scrollview setHidden:NO];
+    [o_credits_textview setHidden:NO];
+    [o_joinus_txt setHidden:YES];
+    [o_copyright_field setHidden:YES];
+    [o_revision_field setHidden:YES];
+    [o_name_version_field setHidden:YES];
+
+    if (sender == o_authors_btn)
+        [o_credits_textview setString:o_authors];
+    else if (sender == o_credits_btn)
+        [o_credits_textview setString:[[NSString stringWithUTF8String:psz_thanks] stringByReplacingOccurrencesOfString:@"\n" withString:@" " options:0 range:NSRangeFromString(@"680 2")]];
+    else
+        [o_credits_textview setString:[NSString stringWithUTF8String:psz_license]];
+
+    [o_credits_textview scrollPoint:NSMakePoint(0, 0)];
+    b_restart = YES;
+}
+
 /*****************************************************************************
 * VLC GPL Window, action called from the about window and the help menu
 *****************************************************************************/
 
-- (IBAction)showGPL:(id)sender
+- (void)showGPL
 {
-    [o_gpl_window setTitle: _NS("License")];
-    [o_gpl_field setString: [NSString stringWithUTF8String: psz_license]];
+    [self showAbout];
+    [o_credits_scrollview setHidden:NO];
+    [o_credits_textview setHidden:NO];
+    [o_joinus_txt setHidden:YES];
+
+    [o_credits_textview setString:[NSString stringWithUTF8String:psz_license]];
 
-    [o_gpl_window center];
-    [o_gpl_window makeKeyAndOrderFront: sender];
+    [o_credits_textview scrollPoint:NSMakePoint(0, 0)];
+    b_restart = YES;
 }
 
 /*****************************************************************************
@@ -229,12 +295,3 @@ static VLAboutBox *_o_sharedInstance = nil;
 }
 
 @end
-
-@implementation VLAboutColoredBackdrop
-
-- (void)drawRect:(NSRect)rect {
-    [[NSColor whiteColor] setFill];
-    NSRectFill(rect);
-}
-
-@end