malcontent-control: Move the app restrictions into a separate dialogue
Rather than having a scrollable listbox within a scrollable list of widgets, move the listbox out to a separate dialogue. This involves separating out all the code to query the apps, to get and to set the app filter, from `MctUserControls` out into the new `MctRestrictApplicationsSelector`. Most of it is unchanged, aside from its interaction with the filter: the filter is now provided to the widget by the calling code, rather than being queried by the widget itself. The widget’s status can be queried into an `MctAppFilterBuilder`, rather than being used to set the app filter directly. This commit redesigns the appearance of the relevant widgets in the main window so that they follow the new list-box-like visual design. A following commit will apply similar changes to the other widgest in the main screen. Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
parent
93d18ed2a9
commit
bffab0942f
12 changed files with 1550 additions and 529 deletions
|
@ -18,9 +18,6 @@
|
|||
<attributes>
|
||||
<attribute name="weight" value="bold" />
|
||||
</attributes>
|
||||
<accessibility>
|
||||
<relation target="listbox" type="label-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">0</property>
|
||||
|
@ -29,22 +26,187 @@
|
|||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<object class="GtkFrame">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.0</property>
|
||||
<property name="label" translatable="yes">Prevent this user from opening some apps by turning them off below.</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="mnemonic-widget">listbox</property>
|
||||
<attributes>
|
||||
<attribute name="scale" value="0.83333" />
|
||||
</attributes>
|
||||
<accessibility>
|
||||
<relation target="listbox" type="description-for"/>
|
||||
</accessibility>
|
||||
<style>
|
||||
<class name="dim-label" />
|
||||
</style>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="selection_mode">none</property>
|
||||
<property name="activate_on_single_click">False</property>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="activatable">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-left">12</property>
|
||||
<property name="margin-right">12</property>
|
||||
<property name="margin-top">8</property>
|
||||
<property name="margin-bottom">8</property>
|
||||
<property name="row-spacing">4</property>
|
||||
<property name="column-spacing">4</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="allow_web_browsers_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Block _Web Browsers</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">allow_web_browsers_switch</property>
|
||||
<accessibility>
|
||||
<relation target="allow_web_browsers_switch" type="label-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="allow_web_browsers_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Prevents the user from running web browsers, but limited web content may still be available in other applications</property>
|
||||
<attributes>
|
||||
<attribute name="scale" value="0.88"/>
|
||||
</attributes>
|
||||
<style>
|
||||
<class name="dim-label" />
|
||||
</style>
|
||||
<accessibility>
|
||||
<relation target="allow_web_browsers_switch" type="description-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="allow_web_browsers_switch">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<signal name="notify::active" handler="on_allow_web_browsers_switch_active_changed_cb" object="MctUserControls" swapped="no" />
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">0</property>
|
||||
<property name="height">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="activatable">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin-left">12</property>
|
||||
<property name="margin-right">12</property>
|
||||
<property name="margin-top">8</property>
|
||||
<property name="margin-bottom">8</property>
|
||||
<property name="row-spacing">4</property>
|
||||
<property name="column-spacing">4</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="restrict_applications_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">_Restrict Applications</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">restrict_applications_button</property>
|
||||
<accessibility>
|
||||
<relation target="restrict_applications_button" type="label-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="restrict_applications_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Prevents particular applications from being used</property>
|
||||
<attributes>
|
||||
<attribute name="scale" value="0.88"/>
|
||||
</attributes>
|
||||
<style>
|
||||
<class name="dim-label" />
|
||||
</style>
|
||||
<accessibility>
|
||||
<relation target="restrict_applications_button" type="description-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="restrict_applications_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="relief">none</property>
|
||||
<signal name="clicked" handler="on_restrict_applications_button_clicked_cb" object="MctUserControls" swapped="no" />
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon-name">pan-end-symbolic</property>
|
||||
<property name="icon-size">4</property><!-- GTK_ICON_SIZE_BUTTON -->
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">0</property>
|
||||
<property name="height">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">1</property>
|
||||
|
@ -52,115 +214,6 @@
|
|||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="hscrollbar-policy">never</property>
|
||||
<property name="min-content-height">100</property>
|
||||
<property name="max-content-height">400</property>
|
||||
<property name="propagate-natural-height">True</property>
|
||||
<property name="shadow-type">etched-in</property>
|
||||
|
||||
<!-- Restricted Apps Listbox -->
|
||||
<child>
|
||||
<object class="GtkListBox" id="listbox">
|
||||
<property name="visible">True</property>
|
||||
<property name="selection-mode">none</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<!-- Restricted Web Browsers -->
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.0</property>
|
||||
<property name="label" translatable="yes">Restrict Web Browsers</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold" />
|
||||
</attributes>
|
||||
<accessibility>
|
||||
<relation target="allow_web_browsers_switch" type="label-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">3</property>
|
||||
<property name="left-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.0</property>
|
||||
<property name="label" translatable="yes">Prevent this user from running web browsers by turning them off below. Note that if the computer is connected to the internet, limited web content may still be available in other applications.</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="max-width-chars">55</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="mnemonic-widget">allow_web_browsers_switch</property>
|
||||
<attributes>
|
||||
<attribute name="scale" value="0.83333" />
|
||||
</attributes>
|
||||
<accessibility>
|
||||
<relation target="allow_web_browsers_switch" type="description-for"/>
|
||||
</accessibility>
|
||||
<style>
|
||||
<class name="dim-label" />
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">4</property>
|
||||
<property name="left-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">12</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkLabel" id="browsers_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">1.0</property>
|
||||
<property name="label" translatable="yes">Web _Browsers</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="mnemonic-widget">allow_web_browsers_switch</property>
|
||||
<style>
|
||||
<class name="dim-label" />
|
||||
</style>
|
||||
<accessibility>
|
||||
<relation target="allow_web_browsers_switch" type="label-for"/>
|
||||
</accessibility>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkSwitch" id="allow_web_browsers_switch">
|
||||
<property name="visible">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="halign">start</property>
|
||||
<signal name="notify::active" handler="on_allow_web_browsers_switch_active_changed_cb" object="MctUserControls" swapped="no" />
|
||||
</object>
|
||||
</child>
|
||||
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">5</property>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<!-- App Center Restrictions -->
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
|
@ -173,7 +226,7 @@
|
|||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">6</property>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="left-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
@ -211,7 +264,7 @@
|
|||
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">7</property>
|
||||
<property name="top-attach">3</property>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
|
@ -250,7 +303,7 @@
|
|||
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">8</property>
|
||||
<property name="top-attach">4</property>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
|
@ -291,7 +344,7 @@
|
|||
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top-attach">9</property>
|
||||
<property name="top-attach">5</property>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
|
@ -318,10 +371,22 @@
|
|||
<object class="GtkSizeGroup">
|
||||
<property name="mode">horizontal</property>
|
||||
<widgets>
|
||||
<widget name="browsers_label" />
|
||||
<widget name="allow_web_browsers_label" />
|
||||
<widget name="allow_web_browsers_description" />
|
||||
<widget name="restrict_applications_label" />
|
||||
<widget name="restrict_applications_description" />
|
||||
<widget name="app_restriction_label" />
|
||||
<widget name="user_installation_label" />
|
||||
<widget name="system_installation_label" />
|
||||
</widgets>
|
||||
</object>
|
||||
|
||||
<object class="MctRestrictApplicationsDialog" id="restrict_applications_dialog">
|
||||
<property name="visible">False</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="destroy-with-parent">True</property>
|
||||
<property name="use-header-bar">1</property>
|
||||
<signal name="delete-event" handler="on_restrict_applications_dialog_delete_event_cb" />
|
||||
<signal name="response" handler="on_restrict_applications_dialog_response_cb" />
|
||||
</object>
|
||||
</interface>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue