Commit 0b9b7eab authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: privatise instance variables and resolve class dependencies on...

macosx: privatise instance variables and resolve class dependencies on internal implementation details
parent e5325d70
......@@ -26,9 +26,6 @@
#import <vlc_addons.h>
@interface VLCAddon : NSObject
{
addon_entry_t *p_addon_entry;
}
- (id)initWithAddon:(addon_entry_t *)p_entry;
......
......@@ -24,6 +24,12 @@
#import "AddonListDataSource.h"
#import "StringUtility.h"
@interface VLCAddon ()
{
addon_entry_t *p_addon_entry;
}
@end
@implementation VLCAddon
- (id)initWithAddon:(addon_entry_t *)p_entry
......
......@@ -21,7 +21,7 @@
#import <Cocoa/Cocoa.h>
@interface AddonsWindowController : NSWindowController <NSTableViewDataSource, NSTableViewDelegate>
@interface AddonsWindowController : NSWindowController
{
IBOutlet NSPopUpButton *_typeSwitcher;
IBOutlet NSButton *_localAddonsOnlyCheckbox;
......@@ -34,7 +34,6 @@
IBOutlet NSTextField *_version;
IBOutlet NSTextView *_description;
IBOutlet NSButton *_installButton;
}
- (IBAction)switchType:(id)sender;
......
......@@ -28,7 +28,7 @@
#import "MainWindow.h"
#import "AddonListDataSource.h"
@interface AddonsWindowController()
@interface AddonsWindowController() <NSTableViewDataSource, NSTableViewDelegate>
{
addons_manager_t *_manager;
NSMutableArray *_addons;
......
......@@ -28,9 +28,7 @@
/* generic */
IBOutlet id o_tableView;
IBOutlet id o_window;
intf_thread_t *p_intf;
IBOutlet id o_profile_pop;
BOOL b_genericAudioProfileInInteraction;
/* Equalizer */
IBOutlet id o_eq_view;
......@@ -102,8 +100,6 @@
IBOutlet id o_filter_normLevel_sld;
IBOutlet id o_filter_normLevel_lbl;
IBOutlet id o_filter_karaoke_ckb;
NSInteger i_old_profile_index;
}
/* generic */
......
......@@ -36,7 +36,12 @@
#import <math.h>
@interface VLCAudioEffects (Internal)
@interface VLCAudioEffects ()
{
intf_thread_t *p_intf;
BOOL b_genericAudioProfileInInteraction;
NSInteger i_old_profile_index;
}
- (void)resetProfileSelector;
- (void)updatePresetSelector;
- (void)setBandSliderValuesForPreset:(NSInteger)presetID;
......
......@@ -52,23 +52,11 @@
IBOutlet id o_time_fld;
IBOutlet id o_fullscreen_btn;
IBOutlet id o_resize_view;
NSImage * o_pause_img;
NSImage * o_pause_pressed_img;
NSImage * o_play_img;
NSImage * o_play_pressed_img;
NSTimeInterval last_fwd_event;
NSTimeInterval last_bwd_event;
BOOL just_triggered_next;
BOOL just_triggered_previous;
BOOL b_nativeFullscreenMode;
BOOL b_dark_interface;
}
@property (readonly) id bottomBarView;
@property (readonly) BOOL darkInterface;
@property (readonly) BOOL nativeFullscreenMode;
- (CGFloat)height;
- (void)toggleForwardBackwardMode:(BOOL)b_alt;
......@@ -80,7 +68,6 @@
- (IBAction)timeSliderAction:(id)sender;
- (IBAction)fullscreen:(id)sender;
- (void)updateTimeSlider;
- (void)drawFancyGradientEffectForTimeSlider;
- (void)updateControls;
......@@ -111,23 +98,6 @@
IBOutlet id o_volume_up_btn;
IBOutlet id o_effects_btn;
NSImage * o_repeat_img;
NSImage * o_repeat_pressed_img;
NSImage * o_repeat_all_img;
NSImage * o_repeat_all_pressed_img;
NSImage * o_repeat_one_img;
NSImage * o_repeat_one_pressed_img;
NSImage * o_shuffle_img;
NSImage * o_shuffle_pressed_img;
NSImage * o_shuffle_on_img;
NSImage * o_shuffle_on_pressed_img;
NSButton * o_prev_btn;
NSButton * o_next_btn;
BOOL b_show_jump_buttons;
BOOL b_show_playmode_buttons;
}
- (IBAction)stop:(id)sender;
......@@ -136,7 +106,6 @@
- (IBAction)volumeAction:(id)sender;
- (IBAction)effects:(id)sender;
- (void)setRepeatOne;
- (void)setRepeatAll;
- (void)setRepeatOff;
......
......@@ -36,18 +36,32 @@
* and in main window.
*****************************************************************************/
@interface VLCControlsBarCommon ()
{
NSImage * o_pause_img;
NSImage * o_pause_pressed_img;
NSImage * o_play_img;
NSImage * o_play_pressed_img;
NSTimeInterval last_fwd_event;
NSTimeInterval last_bwd_event;
BOOL just_triggered_next;
BOOL just_triggered_previous;
}
@end
@implementation VLCControlsBarCommon
@synthesize bottomBarView=o_bottombar_view;
- (void)awakeFromNib
{
b_dark_interface = config_GetInt(VLCIntf, "macosx-interfacestyle");
_darkInterface = config_GetInt(VLCIntf, "macosx-interfacestyle");
_nativeFullscreenMode = NO;
b_nativeFullscreenMode = NO;
#ifdef MAC_OS_X_VERSION_10_7
if (!OSX_SNOW_LEOPARD)
b_nativeFullscreenMode = var_InheritBool(VLCIntf, "macosx-nativefullscreenmode");
_nativeFullscreenMode = var_InheritBool(VLCIntf, "macosx-nativefullscreenmode");
#endif
[o_drop_view setDrawBorder: NO];
......@@ -72,7 +86,7 @@
[[o_fullscreen_btn cell] accessibilitySetOverrideValue:_NS("Click to enable fullscreen video playback.") forAttribute:NSAccessibilityDescriptionAttribute];
[[o_fullscreen_btn cell] accessibilitySetOverrideValue:[o_fullscreen_btn toolTip] forAttribute:NSAccessibilityTitleAttribute];
if (!b_dark_interface) {
if (!_darkInterface) {
[o_bottombar_view setImagesLeft: imageFromRes(@"bottom-background") middle: imageFromRes(@"bottom-background") right: imageFromRes(@"bottom-background")];
[o_bwd_btn setImage: imageFromRes(@"backward-3btns")];
......@@ -123,7 +137,7 @@
[o_time_fld setRemainingIdentifier:@"DisplayTimeAsTimeRemaining"];
// prepare time slider fance gradient view
if (!b_dark_interface) {
if (!_darkInterface) {
NSRect frame;
frame = [o_time_sld_fancygradient_view frame];
frame.size.height = frame.size.height - 1;
......@@ -145,7 +159,7 @@
// remove fullscreen button for lion fullscreen
if (b_nativeFullscreenMode) {
if (_nativeFullscreenMode) {
CGFloat f_width = [o_fullscreen_btn frame].size.width;
NSRect frame = [o_time_fld frame];
......@@ -441,7 +455,7 @@
- (void)setFullscreenState:(BOOL)b_fullscreen
{
if (!b_nativeFullscreenMode)
if (!self.nativeFullscreenMode)
[o_fullscreen_btn setState:b_fullscreen];
}
......@@ -454,11 +468,31 @@
* Holds all specific outlets, actions and code for the main window controls bar.
*****************************************************************************/
@interface VLCMainWindowControlsBar (Internal)
@interface VLCMainWindowControlsBar()
{
NSImage * o_repeat_img;
NSImage * o_repeat_pressed_img;
NSImage * o_repeat_all_img;
NSImage * o_repeat_all_pressed_img;
NSImage * o_repeat_one_img;
NSImage * o_repeat_one_pressed_img;
NSImage * o_shuffle_img;
NSImage * o_shuffle_pressed_img;
NSImage * o_shuffle_on_img;
NSImage * o_shuffle_on_pressed_img;
NSButton * o_prev_btn;
NSButton * o_next_btn;
BOOL b_show_jump_buttons;
BOOL b_show_playmode_buttons;
}
- (void)addJumpButtons:(BOOL)b_fast;
- (void)removeJumpButtons:(BOOL)b_fast;
- (void)addPlaymodeButtons:(BOOL)b_fast;
- (void)removePlaymodeButtons:(BOOL)b_fast;
@end
@implementation VLCMainWindowControlsBar
......@@ -467,7 +501,6 @@
{
[super awakeFromNib];
[o_stop_btn setToolTip: _NS("Stop")];
[[o_stop_btn cell] accessibilitySetOverrideValue:_NS("Click to stop playback.") forAttribute:NSAccessibilityDescriptionAttribute];
[[o_stop_btn cell] accessibilitySetOverrideValue:[o_stop_btn toolTip] forAttribute:NSAccessibilityTitleAttribute];
......@@ -498,7 +531,7 @@
[[o_effects_btn cell] accessibilitySetOverrideValue:_NS("Click to show an Audio Effects panel featuring an equalizer and further filters.") forAttribute:NSAccessibilityDescriptionAttribute];
[[o_effects_btn cell] accessibilitySetOverrideValue:[o_effects_btn toolTip] forAttribute:NSAccessibilityTitleAttribute];
if (!b_dark_interface) {
if (!self.darkInterface) {
[o_stop_btn setImage: imageFromRes(@"stop")];
[o_stop_btn setAlternateImage: imageFromRes(@"stop-pressed")];
......@@ -520,7 +553,7 @@
[o_volume_up_btn setImage: imageFromRes(@"volume-high")];
[o_volume_sld setUsesBrightArtwork: YES];
if (b_nativeFullscreenMode) {
if (self.nativeFullscreenMode) {
[o_effects_btn setImage: imageFromRes(@"effects-one-button")];
[o_effects_btn setAlternateImage: imageFromRes(@"effects-one-button-pressed")];
} else {
......@@ -552,7 +585,7 @@
[o_volume_up_btn setImage: imageFromRes(@"volume-high_dark")];
[o_volume_sld setUsesBrightArtwork: NO];
if (b_nativeFullscreenMode) {
if (self.nativeFullscreenMode) {
[o_effects_btn setImage: imageFromRes(@"effects-one-button_dark")];
[o_effects_btn setAlternateImage: imageFromRes(@"effects-one-button-pressed-dark")];
} else {
......@@ -574,7 +607,7 @@
[o_volume_up_btn setEnabled: b_mute];
// remove fullscreen button for lion fullscreen
if (b_nativeFullscreenMode) {
if (self.nativeFullscreenMode) {
NSRect frame;
// == [o_fullscreen_btn frame].size.width;
......@@ -645,7 +678,7 @@ else \
NSRect frame;
CGFloat f_space = [o_effects_btn frame].size.width;
// extra margin between button and volume up button
if (b_nativeFullscreenMode)
if (self.nativeFullscreenMode)
f_space += 2;
......@@ -664,8 +697,8 @@ else \
else
[[o_progress_view animator] setFrame: frame];
if (!b_nativeFullscreenMode) {
if (b_dark_interface) {
if (!self.nativeFullscreenMode) {
if (self.darkInterface) {
[o_fullscreen_btn setImage: imageFromRes(@"fullscreen-double-buttons_dark")];
[o_fullscreen_btn setAlternateImage: imageFromRes(@"fullscreen-double-buttons-pressed_dark")];
} else {
......@@ -695,7 +728,7 @@ else \
NSRect frame;
CGFloat f_space = [o_effects_btn frame].size.width;
// extra margin between button and volume up button
if (b_nativeFullscreenMode)
if (self.nativeFullscreenMode)
f_space += 2;
moveItem(o_volume_up_btn);
......@@ -713,8 +746,8 @@ else \
else
[[o_progress_view animator] setFrame: frame];
if (!b_nativeFullscreenMode) {
if (b_dark_interface) {
if (!self.nativeFullscreenMode) {
if (self.darkInterface) {
[[o_fullscreen_btn animator] setImage: imageFromRes(@"fullscreen-one-button_dark")];
[[o_fullscreen_btn animator] setAlternateImage: imageFromRes(@"fullscreen-one-button-pressed_dark")];
} else {
......@@ -763,7 +796,7 @@ else \
[[o_next_btn cell] accessibilitySetOverrideValue:_NS("Click to go to the next playlist item.") forAttribute:NSAccessibilityDescriptionAttribute];
[o_next_btn setEnabled: b_enabled];
if (b_dark_interface) {
if (self.darkInterface) {
[o_prev_btn setImage: imageFromRes(@"previous-6btns-dark")];
[o_prev_btn setAlternateImage: imageFromRes(@"previous-6btns-dark-pressed")];
[o_next_btn setImage: imageFromRes(@"next-6btns-dark")];
......@@ -811,7 +844,7 @@ else \
else
[[o_progress_view animator] setFrame: frame];
if (b_dark_interface) {
if (self.darkInterface) {
[[o_fwd_btn animator] setImage:imageFromRes(@"forward-6btns-dark")];
[[o_fwd_btn animator] setAlternateImage:imageFromRes(@"forward-6btns-dark-pressed")];
[[o_bwd_btn animator] setImage:imageFromRes(@"backward-6btns-dark")];
......@@ -891,7 +924,7 @@ else \
else
[[o_progress_view animator] setFrame: frame];
if (b_dark_interface) {
if (self.darkInterface) {
[[o_fwd_btn animator] setImage:imageFromRes(@"forward-3btns-dark")];
[[o_fwd_btn animator] setAlternateImage:imageFromRes(@"forward-3btns-dark-pressed")];
[[o_bwd_btn animator] setImage:imageFromRes(@"backward-3btns-dark")];
......@@ -923,7 +956,7 @@ else \
NSRect frame;
CGFloat f_space = [o_repeat_btn frame].size.width + [o_shuffle_btn frame].size.width - 6.;
if (b_dark_interface) {
if (self.darkInterface) {
[[o_playlist_btn animator] setImage:imageFromRes(@"playlist_dark")];
[[o_playlist_btn animator] setAlternateImage:imageFromRes(@"playlist-pressed_dark")];
} else {
......@@ -958,7 +991,7 @@ else \
[o_repeat_btn setHidden: YES];
[o_shuffle_btn setHidden: YES];
if (b_dark_interface) {
if (self.darkInterface) {
[[o_playlist_btn animator] setImage:imageFromRes(@"playlist-1btn-dark")];
[[o_playlist_btn animator] setAlternateImage:imageFromRes(@"playlist-1btn-dark-pressed")];
} else {
......
......@@ -116,17 +116,6 @@
IBOutlet id _stream_sdp_matrix;
IBOutlet id _stream_sdp_fld;
IBOutlet id _stream_sdp_browsefile_btn;
NSString * _MRL;
NSString * _outputDestination;
NSArray * _profileNames;
NSArray * _profileValueList;
NSArray * _videoCodecs;
NSArray * _audioCodecs;
NSArray * _subsCodecs;
NSMutableArray * _currentProfile;
BOOL b_streaming;
}
@property (readwrite, nonatomic, retain) NSString * MRL;
@property (readwrite, nonatomic, retain) NSString * outputDestination;
......
......@@ -44,7 +44,20 @@
#define ASF 12
/* 13-15 are present, but not set */
@interface VLCConvertAndSave (Internal)
@interface VLCConvertAndSave()
{
NSString * _MRL;
NSString * _outputDestination;
NSArray * _profileNames;
NSArray * _profileValueList;
NSArray * _videoCodecs;
NSArray * _audioCodecs;
NSArray * _subsCodecs;
NSMutableArray * _currentProfile;
BOOL b_streaming;
}
- (void)updateDropView;
- (void)updateOKButton;
- (void)resetCustomizationSheetBasedOnProfile:(NSString *)profileString;
......
......@@ -22,15 +22,9 @@
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <vlc_common.h>
#import <vlc_interface.h>
@interface VLCCoreInteraction : NSObject {
int i_currentPlaybackRate;
mtime_t timeA, timeB;
@interface VLCCoreInteraction : NSObject
float f_maxVolume;
}
+ (VLCCoreInteraction *)sharedInstance;
@property (readwrite) int volume;
@property (readonly, nonatomic) float maxVolume;
......@@ -85,4 +79,5 @@
- (void)setVideoFilterProperty: (const char *)psz_name forFilter: (const char *)psz_filter float: (float)f_value;
- (void)setVideoFilterProperty: (const char *)psz_name forFilter: (const char *)psz_filter string: (const char *)psz_value;
- (void)setVideoFilterProperty: (const char *)psz_name forFilter: (const char *)psz_filter boolean: (BOOL)b_value;
@end
......@@ -37,6 +37,14 @@
#import <vlc_modules.h>
#import <vlc_charset.h>
@interface VLCCoreInteraction ()
{
int i_currentPlaybackRate;
mtime_t timeA, timeB;
float f_maxVolume;
}
@end
@implementation VLCCoreInteraction
static VLCCoreInteraction *_o_sharedInstance = nil;
......
......@@ -37,9 +37,6 @@
* ExtensionsDialogProvider interface
*****************************************************************************/
@interface ExtensionsDialogProvider : NSObject <NSWindowDelegate>
{
intf_thread_t *p_intf;
}
+ (ExtensionsDialogProvider *)sharedInstance:(intf_thread_t *)_p_intf;
+ (void)killInstance;
......
......@@ -268,6 +268,12 @@ static int dialogCallback(vlc_object_t *p_this, const char *psz_variable,
}
}
@interface ExtensionsDialogProvider ()
{
intf_thread_t *p_intf;
}
@end
@implementation ExtensionsDialogProvider
static ExtensionsDialogProvider *_o_sharedInstance = nil;
......
......@@ -39,18 +39,6 @@
@end
@interface ExtensionsManager : NSObject
{
intf_thread_t *p_intf;
extensions_manager_t *p_extensions_manager;
ExtensionsDialogProvider *p_edp;
NSMutableDictionary *p_extDict;
BOOL b_unloading; ///< Work around threads + emit issues, see isUnloading
BOOL b_failed; ///< Flag set to true if we could not load the module
id <ExtensionsDelegate> delegate;
};
+ (ExtensionsManager *)getInstance:(intf_thread_t *)_p_intf;
......
......@@ -33,6 +33,21 @@
#define MENU_GET_ACTION(a) ((uint16_t)(((uint32_t)a) >> 16))
#define MENU_GET_EXTENSION(a) ((uint16_t)(((uint32_t)a) & 0xFFFF))
@interface ExtensionsManager()
{
intf_thread_t *p_intf;
extensions_manager_t *p_extensions_manager;
ExtensionsDialogProvider *p_edp;
NSMutableDictionary *p_extDict;
BOOL b_unloading; ///< Work around threads + emit issues, see isUnloading
BOOL b_failed; ///< Flag set to true if we could not load the module
id <ExtensionsDelegate> delegate;
}
@end
@implementation ExtensionsManager
static ExtensionsManager* instance = nil;
......
......@@ -30,22 +30,6 @@
@class VLCMain;
@interface InputManager : NSObject
{
intf_thread_t *p_intf;
VLCMain *o_main;
input_thread_t *p_current_input;
dispatch_queue_t informInputChangedQueue;
/* sleep management */
IOPMAssertionID systemSleepAssertionID;
IOPMAssertionID userActivityAssertionID;
/* iTunes/Spotify play/pause support */
BOOL b_has_itunes_paused;
BOOL b_has_spotify_paused;
NSTimer *o_itunes_play_timer;
}
- (id)initWithMain:(VLCMain *)o_mainObj;
......@@ -55,8 +39,6 @@
- (void)resumeItunesPlayback:(id)sender;
- (BOOL)hasInput;
@end
......@@ -131,6 +131,25 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var,
#pragma mark -
#pragma mark InputManager implementation
@interface InputManager()
{
intf_thread_t *p_intf;
VLCMain *o_main;
input_thread_t *p_current_input;
dispatch_queue_t informInputChangedQueue;
/* sleep management */
IOPMAssertionID systemSleepAssertionID;
IOPMAssertionID userActivityAssertionID;
/* iTunes/Spotify play/pause support */
BOOL b_has_itunes_paused;
BOOL b_has_spotify_paused;
NSTimer *o_itunes_play_timer;
}
@end
@implementation InputManager
- (id)initWithMain:(VLCMain *)o_mainObj
......
......@@ -22,14 +22,6 @@
*****************************************************************************/
#import <Foundation/Foundation.h>
#import <IOKit/IOKitLib.h>
enum {
kGetSensorReadingID = 0, // getSensorReading(int *, int *)
kGetLEDBrightnessID = 1, // getLEDBrightness(int, int *)
kSetLEDBrightnessID = 2, // setLEDBrightness(int, int, int *)
kSetLEDFadeID = 3 // setLEDFade(int, int, int, int *)
};
@interface KeyboardBacklight : NSObject
......
......@@ -22,6 +22,14 @@
*****************************************************************************/
#import "KeyboardBacklight.h"
#import <IOKit/IOKitLib.h>
enum {
kGetSensorReadingID = 0, // getSensorReading(int *, int *)
kGetLEDBrightnessID = 1, // getLEDBrightness(int, int *)
kSetLEDBrightnessID = 2, // setLEDBrightness(int, int, int *)
kSetLEDFadeID = 3 // setLEDFade(int, int, int, int *)
};
@implementation KeyboardBacklight {
io_connect_t dataPort;
......
......@@ -31,25 +31,6 @@
@interface VLCMainMenu : NSObject
{
intf_thread_t *p_intf;
BOOL b_mainMenu_setup;
BOOL b_nib_videoeffects_loaded;
BOOL b_nib_audioeffects_loaded;
BOOL b_nib_tracksynchro_loaded;
BOOL b_nib_bookmarks_loaded;
BOOL b_nib_convertandsave_loaded;
AboutWindowController *o_about;
HelpWindowController *o_helpWin;
id o_videoeffects; /* VLCVideoEffects */
id o_audioeffects; /* VLCAudioEffects */
id o_trackSynchronization; /* VLCTrackSynchronization */
id o_bookmarks; /* VLCBookmarks */
id o_convertandsave; /* VLCConvertAndSave */
AddonsWindowController *o_addonsController;
id o_extMgr; /* Extensions Manager */
/* main menu */
IBOutlet NSMenuItem * o_mi_about;
......@@ -226,10 +207,6 @@
IBOutlet NSMenuItem * o_vmi_mute;
IBOutlet NSMenuItem * o_vmi_fullscreen;
IBOutlet NSMenuItem * o_vmi_snapshot;
// information for playlist table columns menu
NSDictionary * o_ptc_translation_dict;
NSArray * o_ptc_menuorder;
}
+ (VLCMainMenu *)sharedInstance;
......
......@@ -53,6 +53,33 @@
#import <Sparkle/Sparkle.h>
#endif
@interface VLCMainMenu()
{
intf_thread_t *p_intf;
BOOL b_mainMenu_setup;
BOOL b_nib_videoeffects_loaded;
BOOL b_nib_audioeffects_loaded;
BOOL b_nib_tracksynchro_loaded;
BOOL b_nib_bookmarks_loaded;
BOOL b_nib_convertandsave_loaded;
AboutWindowController *o_about;
HelpWindowController *o_helpWin;
id o_videoeffects; /* VLCVideoEffects */
id o_audioeffects; /* VLCAudioEffects */
id o_trackSynchronization; /* VLCTrackSynchronization */
id o_bookmarks; /* VLCBookmarks */
id o_convertandsave; /* VLCConvertAndSave */
AddonsWindowController *o_addonsController;
id o_extMgr; /* Extensions Manager */
// information for playlist table columns menu
NSDictionary * o_ptc_translation_dict;
NSArray * o_ptc_menuorder;
}
@end
@implementation VLCMainMenu
static VLCMainMenu *_o_sharedInstance = nil;
......
......@@ -48,8 +48,8 @@ typedef enum {
psPlaylistItemChangedEvent
} VLCPlaylistStateEvent;
@interface VLCMainWindow : VLCVideoWindowCommon <PXSourceListDataSource, PXSourceListDelegate, NSWindowDelegate, NSAnimationDelegate, NSSplitViewDelegate> {
@interface VLCMainWindow : VLCVideoWindowCommon
{
IBOutlet id o_search_fld;
IBOutlet id o_playlist_table;
......@@ -66,8 +66,6 @@ typedef enum {
IBOutlet id o_dropzone_box;
IBOutlet id o_dropzone_img;
VLCFSPanel *o_fspanel;
IBOutlet id o_podcast_view;
IBOutlet id o_podcast_add_btn;
IBOutlet id o_podcast_remove_btn;
......@@ -83,26 +81,6 @@ typedef enum {
IBOutlet id o_podcast_unsubscribe_pop;
IBOutlet id o_podcast_unsubscribe_ok_btn;
IBOutlet id o_podcast_unsubscribe_cancel_btn;
BOOL b_nativeFullscreenMode;