Commit f611e839 authored by David Fuhrmann's avatar David Fuhrmann

macosx: Add option to enable http server from simple prefs

In addition to the existing password field, add a checkbox to
enable the http module.
Refactor code to enable / disable modules.

closes #17914
parent 0f72f012
......@@ -68,9 +68,11 @@
<outlet property="intf_continueplaybackLabel" destination="3919" id="ZJO-qY-UCq"/>
<outlet property="intf_continueplaybackPopup" destination="3920" id="dZ3-SI-SCp"/>
<outlet property="intf_enableNotificationsCheckbox" destination="3564" id="IIA-ce-g61"/>
<outlet property="intf_enableluahttpCheckbox" destination="lpZ-9y-Vfn" id="ieR-ZH-mcd"/>
<outlet property="intf_languageLabel" destination="3892" id="klM-r2-XKf"/>
<outlet property="intf_languagePopup" destination="3900" id="USp-A1-Aut"/>
<outlet property="intf_last_updateLabel" destination="3560" id="9TG-0W-rqH"/>
<outlet property="intf_luahttpBox" destination="drh-ot-Vyn" id="YKi-8n-s8a"/>
<outlet property="intf_luahttppwdLabel" destination="3875" id="zl0-da-lHe"/>
<outlet property="intf_luahttppwdTextField" destination="3884" id="dxk-zl-ZLZ"/>
<outlet property="intf_mediakeysCheckbox" destination="3543" id="qh4-7b-Dff"/>
......@@ -246,11 +248,11 @@ Gw
</window>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="2311" userLabel="Interface">
<rect key="frame" x="0.0" y="0.0" width="570" height="571"/>
<rect key="frame" x="0.0" y="0.0" width="570" height="597"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<box title="General Settings" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="kup-aY-Wqq">
<rect key="frame" x="18" y="433" width="536" height="117"/>
<rect key="frame" x="18" y="459" width="536" height="117"/>
<view key="contentView" id="wFl-aV-3Hn">
<rect key="frame" x="1" y="1" width="534" height="101"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
......@@ -352,7 +354,7 @@ Gw
</constraints>
</box>
<box title="Privacy / Network Interaction" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="2318">
<rect key="frame" x="18" y="86" width="532" height="107"/>
<rect key="frame" x="18" y="112" width="532" height="107"/>
<view key="contentView" id="nnH-Tj-ON7">
<rect key="frame" x="1" y="1" width="530" height="91"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
......@@ -403,7 +405,7 @@ Gw
</constraints>
</box>
<box title="Playback control" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="CZP-ZN-k6p">
<rect key="frame" x="18" y="287" width="532" height="142"/>
<rect key="frame" x="18" y="313" width="532" height="142"/>
<view key="contentView" id="gj4-zO-E26">
<rect key="frame" x="1" y="1" width="530" height="126"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
......@@ -480,7 +482,7 @@ Gw
</constraints>
</box>
<box title="Playback behaviour" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="EKZ-iB-CMo">
<rect key="frame" x="18" y="197" width="532" height="86"/>
<rect key="frame" x="18" y="223" width="532" height="86"/>
<view key="contentView" id="BMS-wa-oJS">
<rect key="frame" x="1" y="1" width="530" height="70"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
......@@ -530,14 +532,14 @@ Gw
<constraint firstAttribute="height" constant="82" id="rRS-wr-FCF"/>
</constraints>
</box>
<box title="lua" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="drh-ot-Vyn">
<rect key="frame" x="16" y="15" width="536" height="64"/>
<box title="HTTP Server" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="drh-ot-Vyn">
<rect key="frame" x="16" y="16" width="536" height="89"/>
<view key="contentView" id="Who-VF-GbQ">
<rect key="frame" x="1" y="1" width="534" height="48"/>
<rect key="frame" x="1" y="1" width="534" height="73"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="3875">
<rect key="frame" x="18" y="16" width="63" height="17"/>
<rect key="frame" x="18" y="20" width="63" height="17"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Password" id="3876">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
......@@ -545,7 +547,7 @@ Gw
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3884" customClass="NSSecureTextField">
<rect key="frame" x="225" y="13" width="288" height="22"/>
<rect key="frame" x="225" y="17" width="288" height="22"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="3885">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
......@@ -556,15 +558,28 @@ Gw
<outlet property="delegate" destination="-2" id="CTK-cN-vZp"/>
</connections>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="lpZ-9y-Vfn">
<rect key="frame" x="14" y="47" width="187" height="18"/>
<buttonCell key="cell" type="check" title="Enable VLC HTTP interface" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Nby-oq-jkQ">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="interfaceSettingChanged:" target="-2" id="dVG-jB-ra3"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="3884" firstAttribute="leading" secondItem="3875" secondAttribute="trailing" constant="146" id="5vp-F0-WQz"/>
<constraint firstItem="3875" firstAttribute="centerY" secondItem="3884" secondAttribute="centerY" id="8EM-8N-p6j"/>
<constraint firstItem="3884" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3875" secondAttribute="trailing" constant="17" id="Fcc-mA-ItG"/>
<constraint firstItem="3884" firstAttribute="centerY" secondItem="Who-VF-GbQ" secondAttribute="centerY" id="iq0-gO-Orm"/>
<constraint firstItem="lpZ-9y-Vfn" firstAttribute="leading" secondItem="Who-VF-GbQ" secondAttribute="leading" constant="16" id="PWI-C5-4nk"/>
<constraint firstItem="lpZ-9y-Vfn" firstAttribute="top" secondItem="Who-VF-GbQ" secondAttribute="top" constant="10" id="VqA-8L-DMQ"/>
<constraint firstItem="3875" firstAttribute="top" secondItem="lpZ-9y-Vfn" secondAttribute="bottom" constant="12" id="g8b-hJ-m2Y"/>
</constraints>
</view>
<constraints>
<constraint firstAttribute="height" constant="60" id="Hpz-Ev-sCZ"/>
<constraint firstAttribute="height" constant="85" id="Hpz-Ev-sCZ"/>
<constraint firstAttribute="width" constant="530" id="yQf-88-Z0F"/>
</constraints>
</box>
......@@ -591,7 +606,7 @@ Gw
<constraint firstItem="3892" firstAttribute="leading" secondItem="3919" secondAttribute="leading" id="vfy-GO-DCp"/>
<constraint firstItem="kup-aY-Wqq" firstAttribute="leading" secondItem="2311" secondAttribute="leading" constant="21" id="xN8-XW-D0e"/>
</constraints>
<point key="canvasLocation" x="245" y="252.5"/>
<point key="canvasLocation" x="245" y="265.5"/>
</customView>
<customView id="2330" userLabel="Audio">
<rect key="frame" x="0.0" y="0.0" width="569" height="432"/>
......
......@@ -114,6 +114,7 @@
// intf pane - http interface box
@property (readwrite, weak) IBOutlet NSBox *intf_luahttpBox;
@property (readwrite, weak) IBOutlet NSButton *intf_enableluahttpCheckbox;
@property (readwrite, weak) IBOutlet NSTextField *intf_luahttppwdLabel;
@property (readwrite, weak) IBOutlet NSTextField *intf_luahttppwdTextField;
@property (readwrite, weak) IBOutlet NSView *intfView;
......
......@@ -324,6 +324,7 @@ create_toolbar_item(NSString *itemIdent, NSString *name, NSString *desc, NSStrin
[_intf_last_updateLabel setStringValue: @""];
[_intf_luahttpBox setTitle:_NS("HTTP web interface")];
[_intf_enableluahttpCheckbox setTitle: _NS("Enable HTTP web interface")];
[_intf_luahttppwdLabel setStringValue:_NS("Password")];
/* Subtitles and OSD */
......@@ -490,6 +491,36 @@ static inline const char * __config_GetLabel(vlc_object_t *p_this, const char *p
free(psz_tmp);
}
- (BOOL)hasModule:(NSString *)moduleName inConfig:(NSString *)config
{
char *value = config_GetPsz(p_intf, [config UTF8String]);
NSString *modules = toNSStr(value);
free(value);
return [[modules componentsSeparatedByString:@":"] containsObject:moduleName];
}
- (void)changeModule:(NSString *)moduleName inConfig:(NSString *)config enable:(BOOL)enable
{
char *value = config_GetPsz(p_intf, [config UTF8String]);
NSString *modules = toNSStr(value);
free(value);
NSMutableArray *components = [[modules componentsSeparatedByString:@":"] mutableCopy];
if (enable) {
if (![components containsObject:moduleName]) {
[components addObject:moduleName];
}
} else {
[components removeObject:moduleName];
}
// trim empty entries
[components removeObject:@""];
config_PutPsz(p_intf, [config UTF8String], [[components componentsJoinedByString:@":"] UTF8String]);
}
- (void)resetControls
{
module_config_t *p_item;
......@@ -539,12 +570,9 @@ static inline const char * __config_GetLabel(vlc_object_t *p_this, const char *p
[_intf_last_updateLabel setStringValue: _NS("No check was performed yet.")];
#endif
psz_tmp = config_GetPsz(p_intf, "control");
if (psz_tmp) {
[_intf_enableNotificationsCheckbox setState: (NSInteger)strstr(psz_tmp, "growl")];
free(psz_tmp);
} else
[_intf_enableNotificationsCheckbox setState: NSOffState];
BOOL growlEnabled = [self hasModule:@"growl" inConfig:@"control"];
[_intf_enableNotificationsCheckbox setState: growlEnabled ? NSOnState : NSOffState];
if (config_GetInt(p_intf, "macosx-interfacestyle")) {
[_intf_style_darkButtonCell setState: YES];
[_intf_style_brightButtonCell setState: NO];
......@@ -553,6 +581,10 @@ static inline const char * __config_GetLabel(vlc_object_t *p_this, const char *p
[_intf_style_brightButtonCell setState: YES];
}
BOOL httpEnabled = [self hasModule:@"http" inConfig:@"extraintf"];
[_intf_enableluahttpCheckbox setState: httpEnabled ? NSOnState : NSOffState];
_intf_luahttppwdTextField.enabled = httpEnabled;
[self setupField:_intf_luahttppwdTextField forOption: "http-password"];
/******************
......@@ -859,16 +891,11 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha
- (void)saveChangedSettings
{
NSString *tmpString;
NSRange tmpRange;
#define SaveIntList(object, name) save_int_list(p_intf, object, name)
#define SaveStringList(object, name) save_string_list(p_intf, object, name)
#define SaveModuleList(object, name) SaveStringList(object, name)
#define getString(name) [NSString stringWithFormat:@"%s", config_GetPsz(p_intf, name)]
/**********************
* interface settings *
**********************/
......@@ -887,26 +914,9 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha
config_PutInt(p_intf, "macosx-mediakeys", [_intf_mediakeysCheckbox state]);
config_PutInt(p_intf, "macosx-interfacestyle", [_intf_style_darkButtonCell state]);
if ([_intf_enableNotificationsCheckbox state] == NSOnState) {
tmpString = getString("control");
tmpRange = [tmpString rangeOfString:@"growl"];
if ([tmpString length] > 0 && tmpRange.location == NSNotFound)
{
tmpString = [tmpString stringByAppendingString: @":growl"];
config_PutPsz(p_intf, "control", [tmpString UTF8String]);
}
else
config_PutPsz(p_intf, "control", "growl");
} else {
tmpString = getString("control");
if (! [tmpString isEqualToString:@""])
{
tmpString = [tmpString stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@":growl"]];
tmpString = [tmpString stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"growl:"]];
tmpString = [tmpString stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"growl"]];
config_PutPsz(p_intf, "control", [tmpString UTF8String]);
}
}
[self changeModule:@"growl" inConfig:@"control" enable:[_intf_enableNotificationsCheckbox state] == NSOnState];
[self changeModule:@"http" inConfig:@"extraintf" enable:[_intf_enableluahttpCheckbox state] == NSOnState];
config_PutPsz(p_intf, "http-password", [[_intf_luahttppwdTextField stringValue] UTF8String]);
SaveIntList(_intf_pauseitunesPopup, "macosx-control-itunes");
......@@ -1109,6 +1119,10 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha
- (IBAction)interfaceSettingChanged:(id)sender
{
if (sender == _intf_enableluahttpCheckbox) {
_intf_luahttppwdTextField.enabled = [sender state] == NSOnState;
}
_intfSettingChanged = YES;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment