Changeset 62

Show
Ignore:
Timestamp:
10/09/07 10:10:22 (1 year ago)
Author:
cmccurdy
Message:

implemented proper account name handling, as per ticket #7

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/account_dialog.c

    r61 r62  
    163163        double bal = (double)atof(gtk_entry_get_text(GTK_ENTRY(balance_entry))); 
    164164 
     165        char a_name[101]; 
     166        strcpy( a_name, name ); 
     167        double a_bal; 
     168        int a_id = -1; 
     169        get_account_by_name( a_name, &a_id, &a_bal ); 
     170        if ( a_id > -1 ) 
     171        { 
     172            GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 
     173                    GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, 
     174                    GTK_BUTTONS_CLOSE, "An account with the name '%s' already \ 
     175exists. Please use a different name.", name ); 
     176            gtk_dialog_run( GTK_DIALOG(error) ); 
     177            gtk_widget_destroy(error); 
     178            continue; 
     179        } 
     180 
    165181        int id = new_account(name, bal); 
    166182        if ( id == -1 ) 
    167183        { 
    168             char a_name[101]; 
    169             strcpy( a_name, name ); 
    170             double a_bal; 
    171             int a_id; 
    172             get_account_by_name( a_name, &a_id, &a_bal ); 
    173             if ( &a_id == NULL ) 
    174             { 
    175                 GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 
    176                         GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,  
    177                         GTK_BUTTONS_CLOSE, "Unknown error creating account" ); 
    178                 gtk_dialog_run( GTK_DIALOG(error) ); 
    179                 gtk_widget_destroy(error); 
    180                 keep_going = false; 
    181                 gtk_widget_destroy(dialog); 
    182                 if ( account_list_empty() ) 
    183                     launch_new_account_dialog(); 
    184             } 
    185             else 
    186             { 
    187                 GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 
    188                         GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, 
    189                         GTK_BUTTONS_CLOSE, "An account with the name '%s' already \ 
    190 exists. Please use a different name.", name ); 
    191                 gtk_dialog_run( GTK_DIALOG(error) ); 
    192                 gtk_widget_destroy(error); 
    193                 continue; 
    194             } 
     184            gtk_widget_destroy(dialog); 
     185            keep_going = false; 
     186            continue; 
    195187        } 
    196188 
     
    205197    int id = get_cur_acct_id(); 
    206198    GtkWidget *dialog = account_dialog_edit( GTK_WINDOW(data), id ); 
    207     if ( gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT ) 
    208     { 
     199 
     200    bool keep_going = true; 
     201    while (keep_going) 
     202    { 
     203        if ( gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT ) 
     204        { 
     205            gtk_widget_hide(dialog); 
     206            if ( !account_list_empty() ) 
     207            { 
     208                gtk_widget_destroy(dialog); 
     209                keep_going = false; 
     210            } 
     211            continue; 
     212        } 
     213 
    209214        char *name = (char *)gtk_entry_get_text(GTK_ENTRY(name_entry)); 
    210215        if ( strlen(name) < 1 ) 
    211216        { 
    212217            gtk_widget_destroy(dialog); 
    213             return; 
    214         } 
     218            keep_going = false; 
     219            continue; 
     220        } 
     221 
     222        char a_name[101]; 
     223        strcpy( a_name, name ); 
     224        double a_bal; 
     225        int a_id = -1; 
     226        get_account_by_name( a_name, &a_id, &a_bal ); 
     227        if ( a_id > -1 && a_id != id ) 
     228        { 
     229            GtkWidget *error = gtk_message_dialog_new( GTK_WINDOW(dialog), 
     230                    GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, 
     231                    GTK_BUTTONS_CLOSE, "An account with the name '%s' already \ 
     232exists. Please use a different name.", name ); 
     233            gtk_dialog_run( GTK_DIALOG(error) ); 
     234            gtk_widget_destroy(error); 
     235            continue; 
     236        } 
     237 
    215238        double bal = atof(gtk_entry_get_text(GTK_ENTRY(balance_entry))); 
    216239 
     
    221244        get_account_posted_balance(id); 
    222245        calculate_running_balance(false); 
    223     } 
    224  
    225     gtk_widget_destroy(dialog); 
     246 
     247        keep_going = false; 
     248        gtk_widget_destroy(dialog); 
     249    } 
    226250} 
    227251