diff --git a/include/relapp.cpp b/include/relapp.cpp index 9cf3ff981..e2ae38d54 100755 --- a/include/relapp.cpp +++ b/include/relapp.cpp @@ -829,8 +829,14 @@ bool TRelation_application::main_loop() _mask->set_mode(NO_MODE); if (autoins_caller().not_empty() && _recins >= 0) - { - TMessage msg(autoins_caller(), _lnflag ? MSG_LN : MSG_AI, format("%ld", _recins)); + { + TString message(MSG_LN); + if (_edflag) + message = MSG_ED; + else + if (_lnflag) + message = MSG_LN; + TMessage msg(autoins_caller(), message, format("%ld", _recins)); msg.send(); } @@ -908,6 +914,52 @@ bool TRelation_application::filter() } } + mail.restart(); + msg = mail.next_s(MSG_ED); + if (msg) + { + TToken_string body(msg->body()); + const int key = body.get_int(); + + _autoins_caller = msg->from(); + _lnflag = TRUE; + _edflag = TRUE; + + TAssoc_array field_values; + const char * s; + TString80 t; + + while((s = body.get()) != NULL) + { + t = s; + const int u = t.find('='); + + CHECKS(u > 0, "Invalid edit message ", (const char *) body); + if (u > 0) + { + const TString v(t.mid(u + 1)); + + t.cut(u); + field_values.add(t, v); + } + } + + for (int i = 0; i < _mask->fields(); i++) + { + TMask_field& f = _mask->fld(i); + const TFieldref * field = f.field(); + + if (field && f.in_key(key)) + { + const TString16 field_name(field->name()); + const TString * v = (const TString *) field_values.objptr(field_name); + + if (v) + _fixed.add(format("%d=%s", f.dlg(), (const char*)*v)); + } + } + } + return TRUE; }