1 // =====================================================================
2 //
3 // status.cxx
4 //
5 // Author(s):
6 //	Dave Freese, W1HKJ Copyright (C) 2010
7 //  Robert Stiles, KK5VD Copyright (C) 2013
8 //
9 // This file is part of FLAMP.
10 //
11 // This is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation; either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This software is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 //
24 // =====================================================================
25 
26 
27 #include <iostream>
28 #include <fstream>
29 #include <string>
30 
31 #include <FL/Fl_Preferences.H>
32 
33 #include "status.h"
34 #include "config.h"
35 #include "flamp.h"
36 #include "flamp_dialog.h"
37 #include "file_io.h"
38 
39 status progStatus = {
40 	50,				// int mainX;
41 	50,				// int mainY;
42 
43 	"",				// my_call
44 	"",				// my_info
45 	"127.0.0.1",	// fldigi socket address
46 	"7322",			// fldigi socket port
47 	"127.0.0.1",	// fldigi xmlrpc socket address
48 	"7362",			// fldigi xmlrpc socket port
49 
50 	// User Assigned addr/ports not saved.
51 	"",				// User assigned fldigi socket address
52 	"",				// User assigned fldigi socket port
53 	"",				// User assigned fldigi xmlrpc socket address
54 	"",				// User assigned fldigi xmlrpc socket port
55 
56 	true,			// use_compression
57 	BASE256,		// encoder
58 	"base256",      // encoder string name
59 	1,				// selected_mode
60 	64,				// blocksize
61 	1,				// repeatNN
62 	1,				// repeat_header
63 
64 	false,			// bool sync_mode_flamp_fldigi;
65 	false,			// bool sync_mode_fldigi_flamp;
66 	false,			// bool fldigi_xmt_mode_change;
67 
68 	1,				// int repeat_every;
69 	false,			// bool repeat_at_times;
70 	"",				// string repeat_times;
71 	false,			// bool repeat_at_times;
72 
73 	false, 			// bool use_txrx_interval;
74 	3.0, 			// int  tx_interval_minutes;
75 	10, 			// int  rx_interval_seconds;
76 
77 	false, 			// bool use_header_modem;
78 	1,				// int  header_selected_mode;
79 	false,          // bool disable_header_modem_on_block_fills;
80 
81 	0,				// int  use_tx_on_report;
82 
83 	false,			// bool clear_tosend_on_tx_blocks;
84 
85 	false,          // bool enable_delete_warning;
86 
87 	false,          // bool enable_tx_unproto
88 	false,          // bool enable_unproto_markers
89 
90 	false,          // bool queue_fills_only
91 
92 	false,          // bool auto_load_queue
93 
94 	false,          // bool load_from_tx_folder
95 
96 	"",				// string auto_load_queue_path
97 
98 	false,          // bool hamcast_mode_cycle
99 
100 	false,          // bool hamcast_mode_enable_1
101 	1,              // int hamcast_mode_selection_1
102 
103 	false,          // bool hamcast_mode_enable_2
104 	1,              // int hamcast_mode_selection_2
105 
106 	false,          // bool hamcast_mode_enable_3
107 	1,              // int hamcast_mode_selection_3
108 
109 	false,          // bool hamcast_mode_enable_4
110 	1,              // int hamcast_mode_selection_4
111 
112 	true,          // bool auto_rx_save
113 	true,          // bool auto_rx_save_local_time
114 };
115 
116 extern std::string selected_encoder_string;
117 
118 /** ********************************************************
119  *
120  ***********************************************************/
saveLastState()121 void status::saveLastState()
122 {
123 	Fl_Preferences FLAMPpref(flampHomeDir.c_str(), "w1hkj.com",  PACKAGE_NAME);
124 
125 	int mX = main_window->x();
126 	int mY = main_window->y();
127 	if (mX >= 0 && mX >= 0) {
128 		mainX = mX;
129 		mainY = mY;
130 	}
131 
132 	FLAMPpref.set("version", PACKAGE_VERSION);
133 	FLAMPpref.set("mainx", mX);
134 	FLAMPpref.set("mainy", mY);
135 
136 	my_call = txt_tx_mycall->value();
137 	my_info = txt_tx_myinfo->value();
138 
139 	FLAMPpref.set("mycall", my_call.c_str());
140 	FLAMPpref.set("myinfo", my_info.c_str());
141 	FLAMPpref.set("socket_address", socket_addr.c_str());
142 	FLAMPpref.set("socket_port", socket_port.c_str());
143 	FLAMPpref.set("xmlrpc_address", xmlrpc_addr.c_str());
144 	FLAMPpref.set("xmlrpc_port", xmlrpc_port.c_str());
145 	FLAMPpref.set("blocksize", blocksize);
146 	FLAMPpref.set("repeatNN", repeatNN);
147 	FLAMPpref.set("repeat_header", repeat_header);
148 	FLAMPpref.set("selected_mode", selected_mode);
149 	FLAMPpref.set("compression", use_compression);
150 	FLAMPpref.set("encoder", encoder);
151 	FLAMPpref.set("encoder_string", encoder_string.c_str());
152 	FLAMPpref.set("sync_mode_flamp_fldigi", sync_mode_flamp_fldigi);
153 	FLAMPpref.set("sync_mode_fldigi_flamp", sync_mode_fldigi_flamp);
154 	FLAMPpref.set("fldigi_xmt_mode_change", fldigi_xmt_mode_change);
155 
156 	FLAMPpref.set("repeat_every", repeat_every);
157 	FLAMPpref.set("repeat_at_times", repeat_at_times);
158 	FLAMPpref.set("repeat_times", repeat_times.c_str());
159 
160 	FLAMPpref.set("repeat_forever", repeat_forever);
161 
162 	FLAMPpref.set("use_repeater_interval", use_txrx_interval);
163 	FLAMPpref.set("repeater_tx_minutes", tx_interval_minutes);
164 	FLAMPpref.set("repeater_rx_seconds", rx_interval_seconds);
165 
166 	FLAMPpref.set("disable_header_modem_on_block_fills", disable_header_modem_on_block_fills);
167 	FLAMPpref.set("use_header_modem", use_header_modem);
168 	FLAMPpref.set("header_selected_mode", header_selected_mode);
169 
170 	FLAMPpref.set("use_tx_on_report", use_tx_on_report);
171 
172 	FLAMPpref.set("clear_tosend_on_tx_blocks", clear_tosend_on_tx_blocks);
173 
174 	FLAMPpref.set("enable_delete_warning", enable_delete_warning);
175 
176 	FLAMPpref.set("enable_tx_unproto", enable_tx_unproto);
177 	FLAMPpref.set("enable_unproto_markers", enable_unproto_markers);
178 
179 	FLAMPpref.set("queue_fills_only", queue_fills_only);
180 
181 	FLAMPpref.set("auto_load_queue", auto_load_queue);
182 	FLAMPpref.set("load_from_tx_folder", load_from_tx_folder);
183 
184 	FLAMPpref.set("auto_load_queue_path", auto_load_queue_path.c_str());
185 
186 	FLAMPpref.set("hamcast_mode_cycle", hamcast_mode_cycle);
187 
188 	FLAMPpref.set("hamcast_mode_enable_1", hamcast_mode_enable_1);
189 	FLAMPpref.set("hamcast_mode_selection_1", hamcast_mode_selection_1);
190 
191 	FLAMPpref.set("hamcast_mode_enable_2", hamcast_mode_enable_2);
192 	FLAMPpref.set("hamcast_mode_selection_2", hamcast_mode_selection_2);
193 
194 	FLAMPpref.set("hamcast_mode_enable_3", hamcast_mode_enable_3);
195 	FLAMPpref.set("hamcast_mode_selection_3", hamcast_mode_selection_3);
196 
197 	FLAMPpref.set("hamcast_mode_enable_4", hamcast_mode_enable_4);
198 	FLAMPpref.set("hamcast_mode_selection_4", hamcast_mode_selection_4);
199 
200 	FLAMPpref.set("auto_rx_save", auto_rx_save);
201 	FLAMPpref.set("auto_rx_save_local_time", auto_rx_save_local_time);
202 
203 }
204 
205 /** ********************************************************
206  *
207  ***********************************************************/
loadLastState()208 void status::loadLastState()
209 {
210 	Fl_Preferences FLAMPpref(flampHomeDir.c_str(), "w1hkj.com", PACKAGE_NAME);
211 
212 	if (FLAMPpref.entryExists("version")) {
213 		char *defbuffer;
214 
215 		FLAMPpref.get("mainx", mainX, mainX);
216 		FLAMPpref.get("mainy", mainY, mainY);
217 
218 		FLAMPpref.get("mycall", defbuffer, "");
219 		my_call = defbuffer; free(defbuffer);
220 
221 		FLAMPpref.get("myinfo", defbuffer, "");
222 		my_info = defbuffer; free(defbuffer);
223 
224 		FLAMPpref.get("socket_address", defbuffer, socket_addr.c_str());
225 		socket_addr = defbuffer; free(defbuffer);
226 		FLAMPpref.get("socket_port", defbuffer, socket_port.c_str());
227 		socket_port = defbuffer; free(defbuffer);
228 
229 		FLAMPpref.get("xmlrpc_address", defbuffer, xmlrpc_addr.c_str());
230 		xmlrpc_addr = defbuffer; free(defbuffer);
231 		FLAMPpref.get("xmlrpc_port", defbuffer, xmlrpc_port.c_str());
232 		xmlrpc_port = defbuffer; free(defbuffer);
233 
234 		FLAMPpref.get("blocksize", blocksize, blocksize);
235 		FLAMPpref.get("repeatNN", repeatNN, repeatNN);
236 		FLAMPpref.get("repeat_header", repeat_header, repeat_header);
237 
238 		FLAMPpref.get("selected_mode", selected_mode, selected_mode);
239 
240 		int i = 0;
241 		FLAMPpref.get("compression", i, use_compression);
242 		use_compression = i;
243 
244 		FLAMPpref.get("sync_mode_flamp_fldigi", i, sync_mode_flamp_fldigi);
245 		sync_mode_flamp_fldigi = i;
246 
247 		FLAMPpref.get("sync_mode_fldigi_flamp", i, sync_mode_fldigi_flamp);
248 		sync_mode_fldigi_flamp = i;
249 
250 
251 		FLAMPpref.get("fldigi_xmt_mode_change", i, fldigi_xmt_mode_change);
252 		fldigi_xmt_mode_change = i;
253 
254 		FLAMPpref.get("encoder", encoder, encoder);
255 		FLAMPpref.get("encoder_string", defbuffer, encoder_string.c_str());
256 		encoder_string = defbuffer; free(defbuffer);
257 
258 		FLAMPpref.get("repeat_every", repeat_every, repeat_every);
259 		FLAMPpref.get("repeat_at_times", i, repeat_at_times);
260 		repeat_at_times = i;
261 
262 		FLAMPpref.get("repeat_times", defbuffer, repeat_times.c_str());
263 		repeat_times = defbuffer; free(defbuffer);
264 
265 		FLAMPpref.get("repeat_forever", i, repeat_forever);
266 		repeat_forever = i;
267 
268 		FLAMPpref.get("use_repeater_interval", i, use_txrx_interval);
269 		use_txrx_interval = (bool) i;
270 
271 		FLAMPpref.get("repeater_tx_minutes", tx_interval_minutes, tx_interval_minutes);
272 
273 		FLAMPpref.get("repeater_rx_seconds", i, rx_interval_seconds);
274 		rx_interval_seconds = i;
275 
276 		FLAMPpref.get("disable_header_modem_on_block_fills", i, disable_header_modem_on_block_fills);
277 		disable_header_modem_on_block_fills = (bool) i;
278 
279 		FLAMPpref.get("use_header_modem", i, use_header_modem);
280 		use_header_modem = (bool) i;
281 
282 		FLAMPpref.get("header_selected_mode", i, header_selected_mode);
283 		header_selected_mode = i;
284 
285 		FLAMPpref.get("use_tx_on_report", i, use_tx_on_report);
286 		use_tx_on_report = i;
287 
288 		FLAMPpref.get("clear_tosend_on_tx_blocks", i, clear_tosend_on_tx_blocks);
289 		clear_tosend_on_tx_blocks = (bool) i;
290 
291 		FLAMPpref.get("enable_delete_warning", i, enable_delete_warning);
292 		enable_delete_warning = (bool) i;
293 
294 		FLAMPpref.get("enable_tx_unproto", i, enable_tx_unproto);
295 		enable_tx_unproto = (bool) i;
296 
297 		FLAMPpref.get("enable_unproto_markers", i, enable_unproto_markers);
298 		enable_unproto_markers = (bool) i;
299 
300 		FLAMPpref.get("queue_fills_only", i, queue_fills_only);
301 		queue_fills_only = (bool) i;
302 
303 		FLAMPpref.get("auto_load_queue", i, auto_load_queue);
304 		auto_load_queue = (bool) i;
305 
306 		FLAMPpref.get("load_from_tx_folder", i, load_from_tx_folder);
307 		load_from_tx_folder = (bool) i;
308 
309 		FLAMPpref.get("auto_load_queue_path", defbuffer, "");
310 		auto_load_queue_path.assign(defbuffer);
311 		free(defbuffer);
312 
313 		FLAMPpref.get("hamcast_mode_cycle", i, hamcast_mode_cycle);
314 		hamcast_mode_cycle = (bool) i;
315 
316 		FLAMPpref.get("hamcast_mode_enable_1", i, hamcast_mode_enable_1);
317 		hamcast_mode_enable_1 = (bool) i;
318 
319 		FLAMPpref.get("hamcast_mode_selection_1", i, hamcast_mode_selection_1);
320 		hamcast_mode_selection_1 = i;
321 
322 		FLAMPpref.get("hamcast_mode_enable_2", i, hamcast_mode_enable_2);
323 		hamcast_mode_enable_2 = (bool) i;
324 
325 		FLAMPpref.get("hamcast_mode_selection_2", i, hamcast_mode_selection_2);
326 		hamcast_mode_selection_2 = i;
327 
328 		FLAMPpref.get("hamcast_mode_enable_3", i, hamcast_mode_enable_3);
329 		hamcast_mode_enable_3 = (bool) i;
330 
331 		FLAMPpref.get("hamcast_mode_selection_3", i, hamcast_mode_selection_3);
332 		hamcast_mode_selection_3 = i;
333 
334 		FLAMPpref.get("hamcast_mode_enable_4", i, hamcast_mode_enable_4);
335 		hamcast_mode_enable_4 = (bool) i;
336 
337 		FLAMPpref.get("hamcast_mode_selection_4", i, hamcast_mode_selection_4);
338 		hamcast_mode_selection_4 = i;
339 
340 		FLAMPpref.get("auto_rx_save", i, auto_rx_save);
341 		auto_rx_save = (bool) i;
342 
343 		FLAMPpref.get("auto_rx_save_local_time", i, auto_rx_save_local_time);
344 		auto_rx_save_local_time = (bool) i;
345 
346 		if(auto_load_queue_path.size() < 1)
347 			auto_load_queue = false;
348 
349 		if(enable_tx_unproto) {
350 			use_header_modem = false;
351 		}
352 	}
353 }
354