2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: DtSetPref.C /main/2 1995/07/17 14:04:26 drk $ */
25 * (c) Copyright 1993, 1994 Hewlett-Packard Company *
26 * (c) Copyright 1993, 1994 International Business Machines Corp. *
27 * (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
28 * (c) Copyright 1993, 1994 Novell, Inc. *
31 #include "DtSetPref.h"
37 #include "Container.h"
38 #include "Application.h"
40 #include "dtprintinfomsg.h"
42 DtSetPref::DtSetPref(AnyUI *parent,
45 PreferenceCallback callback,
47 : Dialog(parent, name, MODELESS, false)
49 mainw = (DtMainW *) parent;
50 _has_been_posted = false;
51 _container = container;
53 _callback_data = callback_data;
55 // initialize previous values
56 _previous_style = container->IconView();
57 _previous_status_flag = true;
58 _previous_status_line = true;
59 _previous_show_only_mine = false;
60 _previous_show_details_label = true;
61 _previous_update_interval = 30;
63 view_group = new Group(this, MESSAGE(RepresentationL));
64 by_icon = new Button(view_group, MESSAGE(LargeIconL), TOGGLE_BUTTON,
66 by_smallIcon = new Button(view_group, MESSAGE(SmallIconL), TOGGLE_BUTTON,
68 by_name = new Button(view_group, MESSAGE(NameOnlyL), TOGGLE_BUTTON,
70 by_properties = new Button(view_group, MESSAGE(DetailsL), TOGGLE_BUTTON,
72 Container *form = new Container(view_group, "form", FORM);
73 show_labels = new Button(form, MESSAGE(ShowLabelsL), TOGGLE_BUTTON);
74 show_labels->Selected(true);
75 show_labels->Active(false);
76 show_labels->AttachTop();
77 show_labels->AttachBottom();
78 show_labels->AttachRight();
79 show_labels->AttachLeft(20);
81 show_jobs = new Group(this, MESSAGE(JobsToShowL));
82 only_mine = new Button(show_jobs, MESSAGE(OnlyMineL), TOGGLE_BUTTON);
83 everyones = new Button(show_jobs, MESSAGE(EveryoneL), TOGGLE_BUTTON);
84 everyones->Selected(true);
86 update_group = new Group(this, MESSAGE(UpdateIntervalL), FORM_BOX);
87 update_interval = new ScaleObj(update_group, MESSAGE(IntervalL),
88 30, 0, 5, 300, 5, HORIZONTAL_SCALE, true);
89 update_interval->AttachAll();
90 update_group->AttachRight();
91 update_group->AttachLeft();
92 update_group->AttachBottom();
94 status = new Group(this, MESSAGE(StatusL), CHECK_BOX);
95 status_flag = new Button(status, MESSAGE(ProblemFlagL), TOGGLE_BUTTON);
96 status_flag->Selected(true);
97 status_line = new Button(status, MESSAGE(InformationLineL), TOGGLE_BUTTON);
98 status_line->Selected(true);
100 status->AttachRight();
101 status->AttachLeft(view_group, 5);
102 status->AttachBottom(update_group, 5);
104 view_group->AttachBottom(update_group, 5);
105 show_jobs->AttachBottom(status, 5);
107 view_group->AttachLeft();
108 view_group->AttachTop();
109 show_jobs->AttachLeft(view_group, 5);
110 show_jobs->AttachRight();
111 show_jobs->AttachTop();
113 ok = new Button(this, MESSAGE(OKL), PUSH_BUTTON, OkCB, this);
114 apply = new Button(this, MESSAGE(ApplyL), PUSH_BUTTON, ApplyCB, this);
115 cancel = new Button(this, MESSAGE(CancelL), PUSH_BUTTON, CancelCB, this);
116 help = new Button(this, MESSAGE(HelpL), PUSH_BUTTON, HelpCB, this);
123 DtSetPref::~DtSetPref()
128 boolean DtSetPref::SetVisiblity(boolean flag)
130 Dialog::SetVisiblity(flag);
131 if (_has_been_posted == false)
133 _has_been_posted = true;
134 CancelButton(cancel);
139 void DtSetPref::ShowOnlyMyJobs(boolean value)
141 only_mine->Selected(value);
142 everyones->Selected(value ? false : true);
145 void DtSetPref::Representation(IconStyle value)
147 by_name->Selected(false);
148 by_icon->Selected(false);
149 by_smallIcon->Selected(false);
150 by_properties->Selected(false);
153 case NAME_ONLY: by_name->Selected(true); break;
154 case LARGE_ICON: by_icon->Selected(true); break;
155 case SMALL_ICON: by_smallIcon->Selected(true); break;
156 case DETAILS: by_properties->Selected(true); break;
158 show_labels->Active(by_properties->Selected());
161 void DtSetPref::Reset()
163 Representation(_previous_style);
164 status_flag->Selected(_previous_status_flag);
165 status_line->Selected(_previous_status_line);
166 (void)update_interval->Value();
167 update_interval->Value(_previous_update_interval);
168 ShowOnlyMyJobs(_previous_show_only_mine);
169 show_labels->Selected(_previous_show_details_label);
172 static void TurnOffHourGlass(BaseUI *obj, void *data)
174 ((DtMainW *)obj)->WorkingCursor(false);
175 ((Container *)data)->EndUpdate();
178 void DtSetPref::Apply()
181 boolean add_timeout = false;
183 if (by_name->Selected())
185 else if (by_icon->Selected())
187 else if (by_smallIcon->Selected())
189 else if (by_properties->Selected())
191 if (_previous_style != style)
193 if (mainw->PrinterAppMode() == PRINT_MANAGER)
195 mainw->WorkingCursor(true);
196 _container->BeginUpdate();
199 _container->IconView(style);
202 if (_previous_style == DETAILS)
203 (*_callback)(_callback_data, DETAILS_OFF, NULL);
204 else if (style == DETAILS)
205 (*_callback)(_callback_data, DETAILS_ON, NULL);
207 _previous_style = style;
210 if (_previous_show_details_label)
211 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_ON, NULL);
213 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_OFF, NULL);
217 if (_previous_status_flag != status_flag->Selected())
219 _previous_status_flag = status_flag->Selected();
222 if (_previous_status_flag)
223 (*_callback)(_callback_data, STATUS_FLAG_ON, NULL);
225 (*_callback)(_callback_data, STATUS_FLAG_OFF, NULL);
228 if (_previous_status_line != status_line->Selected())
230 _previous_status_line = status_line->Selected();
233 if (_previous_status_line)
234 (*_callback)(_callback_data, STATUS_LINE_ON, NULL);
236 (*_callback)(_callback_data, STATUS_LINE_OFF, NULL);
239 if (_previous_show_only_mine != only_mine->Selected())
241 if (mainw->PrinterAppMode() == PRINT_MANAGER)
243 mainw->WorkingCursor(true);
244 _container->BeginUpdate();
247 _previous_show_only_mine = only_mine->Selected();
250 if (_previous_show_only_mine)
251 (*_callback)(_callback_data, SHOW_ONLY_MINE_ON, NULL);
253 (*_callback)(_callback_data, SHOW_ONLY_MINE_OFF, NULL);
254 if (_previous_show_details_label)
255 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_ON, NULL);
257 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_OFF, NULL);
260 if (_previous_show_details_label != show_labels->Selected())
262 _previous_show_details_label = show_labels->Selected();
265 if (_previous_show_details_label)
266 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_ON, NULL);
268 (*_callback)(_callback_data, SHOW_DETAILS_LABEL_OFF, NULL);
271 if (update_interval->Value() != _previous_update_interval)
273 _previous_update_interval = update_interval->Value();
275 (*_callback)(_callback_data, UPDATE_INTERVAL_CHANGED,
276 (char *) _previous_update_interval);
279 mainw->findD->UpdateMatchAnyUser();
281 mainw->AddTimeOut(TurnOffHourGlass, _container, 1500);
284 void DtSetPref::OkCB(void *data)
286 DtSetPref *obj = (DtSetPref *) data;
292 void DtSetPref::Cancel()
298 void DtSetPref::CancelCB(void *data)
300 DtSetPref *obj = (DtSetPref *) data;
305 void DtSetPref::CloseCB()
310 void DtSetPref::ApplyCB(void *data)
312 DtSetPref *obj = (DtSetPref *) data;
317 void DtSetPref::HelpCB(void *data)
319 DtSetPref *obj = (DtSetPref *) data;
320 obj->HandleHelpRequest();
323 void DtSetPref::RepCB(void *data)
325 DtSetPref *obj = (DtSetPref *) data;
326 obj->show_labels->Active(obj->by_properties->Selected());
329 boolean DtSetPref::HandleHelpRequest()
331 mainw->DisplayHelp("SetOptionsDE");