244 lines
7.0 KiB
C++
244 lines
7.0 KiB
C++
/***************************************************************************
|
|
menu_list_all_wanpipes.cpp - description
|
|
-------------------
|
|
begin : Tue Apr 13 2004
|
|
copyright : (C) 2004 by David Rokhvarg
|
|
email : davidr@sangoma.com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "menu_list_all_wanpipes.h"
|
|
#include "text_box.h"
|
|
#include "text_box_yes_no.h"
|
|
#include "conf_file_reader.h"
|
|
#include "menu_new_device_configuration.h"
|
|
|
|
char* create_new_configuration_file_help_str =
|
|
"Create a new Configuration File\n"
|
|
"-------------------------------\n"
|
|
"Creates a new wanpipe#.conf file from\n"
|
|
"scratch.\n"
|
|
"OR\n"
|
|
"Erase contents of existing Configuration File\n"
|
|
"and create new configuration from scratch.\n";
|
|
|
|
|
|
void* global_conf_file_reader_ptr;
|
|
|
|
#define DBG_MENU_LIST_ALL_WANPIPES 1
|
|
|
|
char* conf_file_exist_str = " - exist ";
|
|
char* conf_file_not_exist_str = " - does not exist ";
|
|
|
|
char* warning_confirm_overwriting_of_existing_conf_file_str =
|
|
"Warning\n"
|
|
"-------\n"
|
|
"Are you sure you want overwrite existing\n"
|
|
"configuration file?\n";
|
|
|
|
menu_list_all_wanpipes::menu_list_all_wanpipes(IN char * lxdialog_path)
|
|
{
|
|
Debug(DBG_MENU_LIST_ALL_WANPIPES,
|
|
("menu_list_all_wanpipes::menu_list_all_wanpipes()\n"));
|
|
|
|
snprintf(this->lxdialog_path, MAX_PATH_LENGTH, "%s", lxdialog_path);
|
|
}
|
|
|
|
menu_list_all_wanpipes::~menu_list_all_wanpipes()
|
|
{
|
|
Debug(DBG_MENU_LIST_ALL_WANPIPES,
|
|
("menu_list_all_wanpipes::~menu_list_all_wanpipes()\n"));
|
|
}
|
|
|
|
int menu_list_all_wanpipes::run(OUT int * selection_index)
|
|
{
|
|
int existing_wanpipes_counter;
|
|
FILE * file;
|
|
string menu_str;
|
|
int rc;
|
|
int num_of_visible_items;
|
|
int exit_dialog;
|
|
char file_exist;
|
|
int wanpipe_number;
|
|
|
|
//help text box
|
|
text_box tb;
|
|
|
|
again:
|
|
|
|
rc = YES;
|
|
exit_dialog = NO;
|
|
existing_wanpipes_counter = 0;
|
|
menu_str = " ";
|
|
|
|
for(int i = 1; i <= MAX_NUMBER_OF_WANPIPES; i++){
|
|
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH, "%swanpipe%d.conf",
|
|
wanpipe_cfg_dir, i);
|
|
|
|
file_exist = check_file_exist(conf_file_path, &file);
|
|
|
|
//create the tag
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH, " \"%d\" ", i);
|
|
//insert tag into the menu string
|
|
menu_str += conf_file_path;
|
|
|
|
existing_wanpipes_counter++;
|
|
|
|
if(file_exist == YES){
|
|
//create the menu item
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH, " \"wanpipe%d.conf\t%s\" ", i,
|
|
conf_file_exist_str);
|
|
}else{
|
|
//create the menu item
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH, " \"wanpipe%d.conf\t%s\" ", i,
|
|
conf_file_not_exist_str);
|
|
}
|
|
|
|
//insert item into the menu string
|
|
menu_str += conf_file_path;
|
|
}
|
|
|
|
Debug(DBG_MENU_LIST_ALL_WANPIPES, ("\nmenu_str:%s\n", menu_str.c_str()));
|
|
|
|
//adjust number of items in the menu depending on number of dlcis
|
|
num_of_visible_items = existing_wanpipes_counter;
|
|
//8 items looks best
|
|
if(num_of_visible_items > 8){
|
|
num_of_visible_items = 8;
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//create the explanation text for the menu
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH,
|
|
"Please select Wanpipe configuration file you wish to create or edit.\n\n");
|
|
snprintf(&conf_file_path[strlen(conf_file_path)], MAX_PATH_LENGTH, "%s%s",
|
|
"------------------------------------------\n",
|
|
"Use arrows to navigate through the options.");
|
|
//MENUINSTR_EXIT);
|
|
|
|
if(set_configuration( YES,//indicates to call V2 of the function
|
|
MENU_BOX_SELECT,
|
|
lxdialog_path,
|
|
"NEW WANPIPE CONFIGURATION FILE SELECTION",
|
|
WANCFG_PROGRAM_NAME,
|
|
conf_file_path,
|
|
MENU_HEIGTH, MENU_WIDTH,
|
|
num_of_visible_items,
|
|
(char*)menu_str.c_str()
|
|
) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
if(show(selection_index) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case MENU_BOX_BUTTON_SELECT:
|
|
Debug(DBG_MENU_LIST_ALL_WANPIPES, ("file selected for editing: wanpipe%s\n",
|
|
get_lxdialog_output_string()));
|
|
|
|
//set the value for the caller
|
|
wanpipe_number = atoi(get_lxdialog_output_string());
|
|
|
|
snprintf(conf_file_path, MAX_PATH_LENGTH, "%swanpipe%d.conf",
|
|
wanpipe_cfg_dir, wanpipe_number);
|
|
|
|
file_exist = check_file_exist(conf_file_path, &file);
|
|
if(file_exist == YES){
|
|
yes_no_question( selection_index,
|
|
lxdialog_path,
|
|
NO_PROTOCOL_NEEDED,
|
|
warning_confirm_overwriting_of_existing_conf_file_str);
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case YES_NO_TEXT_BOX_BUTTON_YES:
|
|
if(create_new_configuration_file(wanpipe_number) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}else{
|
|
|
|
|
|
}
|
|
break;
|
|
|
|
case YES_NO_TEXT_BOX_BUTTON_NO:
|
|
//do nothing
|
|
break;
|
|
}
|
|
}else{
|
|
if(create_new_configuration_file(wanpipe_number) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_HELP:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED,
|
|
create_new_configuration_file_help_str);
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_EXIT:
|
|
//exit the dialog
|
|
exit_dialog = YES;
|
|
break;
|
|
}
|
|
|
|
if(exit_dialog == NO){
|
|
goto again;
|
|
}
|
|
|
|
cleanup:
|
|
return rc;
|
|
}
|
|
|
|
int menu_list_all_wanpipes::create_new_configuration_file(int wanpipe_number)
|
|
{
|
|
int rc = YES;
|
|
int selection_index;
|
|
//help text box
|
|
text_box tb;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//allocate object which will be used to hold temporary configuration.
|
|
global_conf_file_reader_ptr = cfr_tmp = new conf_file_reader(wanpipe_number);
|
|
if(cfr_tmp->init() != 0){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//set configuration for the new protocol
|
|
{
|
|
menu_new_device_configuration new_dev(lxdialog_path, &cfr_tmp);
|
|
if(new_dev.run(&selection_index) == NO){
|
|
Debug(DBG_MENU_LIST_ALL_WANPIPES,
|
|
("2. menu_list_existing_wanpipes.run() - failed!!\n"));
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
cleanup:
|
|
if(cfr_tmp != NULL){
|
|
delete cfr_tmp;
|
|
global_conf_file_reader_ptr = cfr_tmp = NULL;
|
|
}
|
|
return rc;
|
|
}
|
|
|