Phone nr prompt?

Login to reply to this topic.
Fri, 2004-11-19 14:22
Joined: 2004-09-06
Forum posts: 349
I wonder how to get a phone number prompt. I have tried the following:

Code:
DLG_LINE { //Mobile phone
  type = EEikCtNumberEditor;
  prompt = qtn_contact_form_phone_mobile;
  id = EAknExScrollerDlgLineNumberMobilePhone;
  itemflags = EEikDlgItemSeparatorAfter;
  control = NUMBER_EDITOR {
     max = 99999999999;
  };
}

However, the above does not store zero in the beginning and accepts only numbers in intervals. Phone numbers can also contain a '+' sign.

Thanks in advance,
Joachim

Fri, 2004-11-19 14:41
Joined: 2004-05-24
Forum posts: 982
Re: Phone nr prompt?
As a control use edwin (the type is already set to numeric mode in your example) and for +,*,p,w use numeric keymap

pirosl

Fri, 2004-11-19 15:40
Joined: 2004-09-06
Forum posts: 349
Phone nr prompt?
Thanks pirosl for your answer,

Could you give an example, since I'm not at all sure how to write it.

I found an example in a book that suggested something like below. However, this gives me a BAFL 15 panic (I have read what it means, but I still don't know where the error can be) when i do ExecuteLD on the resource. Maybe you can see what's wrong with the code below?
Code:
DLG_LINE { //Mobile phone
  type = EEikCtEdwin;
  prompt = qtn_contact_form_phone_mobile;
  id = EAknExScrollerDlgLineEdwinMobilePhone;
  itemflags = EEikDlgItemSeparatorAfter;
  control = AVKON_DATA_QUERY {
     layout = EPhoneLayout;
     control = EDWIN {};
  };
}

I also have

Code:
RESOURCE DIALOG r_contact_dialog
{
   flags = EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | EEikDialogFlagWait
         | EEikDialogFlagButtonsRight | EEikDialogFlagNoTitleBar
         | EEikDialogFlagCbaButtons /*| EEikDialogFlagModeless */;
   buttons = r_termapp_view2;
   form = r_contact_form;
}

RESOURCE FORM r_contact_form
{
   flags = EAknExScrollerInt0;
   items = {
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_first_name;
           id = EAknExScrollerDlgLineEdwinFirstName;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_last_name;
           id = EAknExScrollerDlgLineEdwinLastName;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_address;
           id = EAknExScrollerDlgLineEdwinAddress;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtNumberEditor;
           prompt = qtn_contact_form_postal_nr;
           id = EAknExScrollerDlgLineNumberPostnummer;
           control = NUMBER_EDITOR {
               min = EAknExScrollerInt0;
               max = EAknExScrollerInt10;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_city;
           id = EAknExScrollerDlgLineEdwinCity;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},

       DLG_LINE { //Mobile phone
type = EEikCtEdwin;
           prompt = qtn_contact_form_phone_mobile;
id = EAknExScrollerDlgLineEdwinMobilePhone;
           itemflags = EEikDlgItemSeparatorAfter;
           control = AVKON_DATA_QUERY {
layout = EPhoneLayout;
control = EDWIN {};
};
},
        };
}
Fri, 2004-11-19 15:54
Joined: 2004-05-24
Forum posts: 982
Phone nr prompt?
Code:
DLG_LINE { //Mobile phone
  type = EEikCtNumberEditor;
  prompt = qtn_contact_form_phone_mobile;
  id = EAknExScrollerDlgLineNumberMobilePhone;
           control = EDWIN {
               maxlength = some_value;
               width = some_value;
               lines = some_value;
        };
  };
}

this will be the dialog line in your resource file.

pirosl

Fri, 2004-11-19 15:56
Joined: 2004-09-06
Forum posts: 349
Phone nr prompt?
But a phone number shouldn't have a max or min value.

It also gives me a EIKON-DIALOG 0 panic.
Fri, 2004-11-19 16:02
Joined: 2004-05-24
Forum posts: 982
Phone nr prompt?
Quote from: joape382
But a phone number shouldn't have a max or min value.

Why to have a min or max value? what's the value for +449922222111341 or for 22111222pw2222 (which means dial to 22111222 make a pause and send 2222 as a dtmf sequence) for example?

pirosl

Fri, 2004-11-19 16:06
Joined: 2004-09-06
Forum posts: 349
Phone nr prompt?
Quote from: pirosl
Quote from: joape382
But a phone number shouldn't have a max or min value.

Why to have a min or max value? what's the value for +449922222111341 or for 22111222pw2222 (which means dial to 22111222 make a pause and send 2222 as a dtmf sequence) for example?

If I don't misunderstand you totally, I don't think you read carefully what I wrote:

But a phone number should NOT have a max or min value.

I also get a EIKON-DIALOG 0 panic.


Thanks
Fri, 2004-11-19 16:13
Joined: 2004-05-24
Forum posts: 982
Phone nr prompt?
Sorry, i missed smth there (my mistake Smiley)

Code:
DLG_LINE { //Mobile phone
  type = EAknCtIntegerEdwin;
  prompt = qtn_contact_form_phone_mobile;
  id = EAknExScrollerDlgLineNumberMobilePhone;
           control = EDWIN {
               maxlength = some_value;
               width = some_value;
               lines = some_value;
        };
  };
}

This will be the resource. maxlength refers to how many characters can you prompt there, whidh and lines are obvious

pirosl

Fri, 2004-11-19 16:17
Joined: 2004-09-06
Forum posts: 349
Phone nr prompt?
No, now I get BAFL 15 panic again  Sad
Fri, 2004-11-19 16:20
Joined: 2004-05-24
Forum posts: 982
Phone nr prompt?
Quote from: joape382
No, now I get BAFL 15 panic again  Sad

Can you provide the pice of code where you're creating your dialog/form?

pirosl

Fri, 2004-11-19 16:29
Joined: 2004-09-06
Forum posts: 349
Phone nr prompt?
Here it is:

Code:
#include <aknviewappui.h>
#include <avkon.hrh>
#include <TerminalApp.rsg>
#include "terminalapp.hrh"
#include "TermView2.h"
#include "TerminalAppContainer2.h"
#include "TerminalAppAppUi.h"
#include <eikbtgpc.h>
#include <TPbkContactItemField.h>
#include <aknmessagequerydialog.h>
#include <CPbkContactItem.h>
#include <EikMenub.h>
#include <BCardEng.h>
#include "CommonConstants.h"

CTerminalAppContactForm*
CTerminalAppContactForm::
NewL(CPbkContactItem* contactInfo, CTermView2* aView)
{
CTerminalAppContactForm* self = new (ELeave) CTerminalAppContactForm(contactInfo, aView);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop();
return self;
}

CTerminalAppContactForm::~CTerminalAppContactForm() {}
CTerminalAppContactForm::CTerminalAppContactForm(CPbkContactItem* contactInfo, CTermView2* aView)
: iContactInfo(contactInfo), iView(aView) {}

void CTerminalAppContactForm::ConstructL() { CAknForm::ConstructL(); }

void CTerminalAppContactForm::SetFormData()
{
if (ControlOrNull(EAknExScrollerDlgLineEdwinFirstName))
SetEdwinTextL(EAknExScrollerDlgLineEdwinFirstName,
&iContactInfo->FindField(EPbkFieldIdFirstName)->Text());

if (ControlOrNull(EAknExScrollerDlgLineEdwinLastName))
SetEdwinTextL(EAknExScrollerDlgLineEdwinLastName,
&iContactInfo->FindField(EPbkFieldIdLastName)->Text());

if (ControlOrNull(EAknExScrollerDlgLineEdwinAddress))
SetEdwinTextL(EAknExScrollerDlgLineEdwinAddress,
&iContactInfo->FindField(EPbkFieldIdStreetAddress)->Text());

if (ControlOrNull(EAknExScrollerDlgLineEdwinCity))
SetEdwinTextL(EAknExScrollerDlgLineEdwinCity,
&iContactInfo->FindField(EPbkFieldIdCity)->Text());

if (ControlOrNull(EAknExScrollerDlgLineEdwinMobilePhone)) {
TPbkContactItemField* fld = iContactInfo->FindField(EAknExScrollerDlgLineEdwinMobilePhone);

if (fld != NULL) { //The field is included in the response from the server
//Remove '+' sign
TBuf16<18> buf;
buf.Append(fld->Text());
TInt pos = buf.Find(gTerminalAppPlus());

if (pos != KErrNotFound)
buf.Replace(pos, 1, _L(""));

SetEdwinTextL(EAknExScrollerDlgLineEdwinMobilePhone, &buf);
}
}

if (ControlOrNull(EAknExScrollerDlgLineNumberHomePhone)) {
TPbkContactItemField* fld = iContactInfo->FindField(EAknExScrollerDlgLineNumberHomePhone);

if (fld != NULL) {
//Remove '+' sign
TBuf<180> buf;
buf.Append(fld->Text());
TInt pos = buf.Find(gTerminalAppPlus());

if (pos != KErrNotFound)
buf.Replace(pos, 1, _L(""));

//Translate to integer
TLex lex(buf);
TInt val;
lex.Val(val);
SetNumberEditorValue(EAknExScrollerDlgLineNumberHomePhone, val);
}
}

if (ControlOrNull(EAknExScrollerDlgLineNumberWorkPhone)) {
TPbkContactItemField* fld = iContactInfo->FindField(EAknExScrollerDlgLineNumberWorkPhone);

if (fld != NULL) {
//Remove '+' sign
TBuf<18> buf;
buf.Append(fld->Text());
TInt pos = buf.Find(gTerminalAppPlus());

if (pos != KErrNotFound)
buf.Replace(pos, 1, _L(""));

//Translate to integer
TLex lex(buf);
TInt val;
lex.Val(val);
SetNumberEditorValue(EAknExScrollerDlgLineNumberWorkPhone, val);
}
}
}

void CTerminalAppContactForm::PostLayoutDynInitL()
{
   CAknForm::PostLayoutDynInitL();
   SetFormData();
}

TBool CTerminalAppContactForm::QuerySaveChangesL()
{
   TBool isAnsYes(CAknForm::QuerySaveChangesL());
   return isAnsYes;
}

void CTerminalAppContactForm::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
{
   CAknForm::DynInitMenuPaneL(aResourceId, aMenuPane);

   if (aResourceId == R_AVKON_FORM_MENUPANE) {
       aMenuPane->SetItemDimmed(EAknFormCmdAdd, ETrue);
       aMenuPane->SetItemDimmed(EAknFormCmdLabel, ETrue);
}
}

TBool
CTerminalAppContactForm::
OkToExitL(TInt aButtonId)
{
switch (aButtonId) {
case EAknExScrollerCBACommnadNext:
{
CAknMessageQueryDialog* dlg =
CAknMessageQueryDialog::NewL(_L("Vill du spara i adressboken?"));
dlg->PrepareLC(R_DIALOG_POPUP_QUERY);
dlg->QueryHeading()->SetTextL(_L("Spara"));

if (dlg->RunLD()) //Save to address book if Yes
((CTerminalAppAppUi*) iView->GetAppUi())->pbkEngine->AddNewContactL(*iContactInfo);

break;
}
default:
return CAknForm::OkToExitL(aButtonId);
}

return ETrue;
}


void* CTermView2::GetAppUi() { return (CTerminalAppAppUi*) AppUi(); }

void CTermView2::ConstructL()
{
BaseConstructL();
EditMode = EFalse;
}

CTermView2::~CTermView2()
{
   if (iContainer) {
       AppUi()->RemoveFromViewStack(*this, iContainer);
delete iContainer;
   }
}

void CTermView2::HandleCommandL(TInt aCommand)
{
switch (aCommand) {
   default:
{
AppUi()->HandleCommandL(aCommand);
break;
}
   }
}

void CTermView2::HandleClientRectChange()
{
if (iContainer)
iContainer->SetRect(ClientRect());
}

void CTermView2::DoActivateL(const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
 const TDesC8& /*aCustomMessage*/)
{
   if (!iContainer) {
       iContainer = new (ELeave) CTerminalAppContainer2;
       iContainer->ConstructL(ClientRect());
       AppUi()->AddToStackL(*this, iContainer);
}

iContactForm = CTerminalAppContactForm::NewL(((CTerminalAppAppUi*) AppUi())->contact, this);
TInt retVal = iContactForm->ExecuteLD(R_CONTACT_DIALOG);

//Send the address to the Vykort application
TUid idiot = {1};
((CTerminalAppAppUi*) AppUi())->ActivateView(idiot);
}

void CTermView2::DoDeactivate()
{
   if (iContainer) {
       AppUi()->RemoveFromViewStack(*this, iContainer);
delete iContainer;
   iContainer = NULL;
}
}

void CTermView2::ChangeCbaL(TBool /*state*/)
{
CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
cba->DrawNow();
}

TBuf<10> CTermView2::GetTelNrFromView() { return ((CTerminalAppAppUi*) AppUi())->telNrFromView; }
void CTermView2::ReloadData() {}
TUid CTermView2::Id() const { return KViewId2; }

void CTermView2::ShowRetreivedAddress(CPbkContactItem* contactInfo)
{
   if (!iContainer) {
       iContainer = new (ELeave) CTerminalAppContainer2;
       iContainer->ConstructL(ClientRect());
       AppUi()->AddToStackL(*this, iContainer);
}
}

Code:
RESOURCE DIALOG r_contact_dialog
{
   flags = EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | EEikDialogFlagWait
         | EEikDialogFlagButtonsRight | EEikDialogFlagNoTitleBar
         | EEikDialogFlagCbaButtons /*| EEikDialogFlagModeless */;
   buttons = r_termapp_view2;
   form = r_contact_form;
}

RESOURCE FORM r_contact_form
{
   flags = EAknExScrollerInt0;
   items = {
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_first_name;
           id = EAknExScrollerDlgLineEdwinFirstName;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_last_name;
           id = EAknExScrollerDlgLineEdwinLastName;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_address;
           id = EAknExScrollerDlgLineEdwinAddress;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},
       DLG_LINE {
           type = EEikCtNumberEditor;
           prompt = qtn_contact_form_postal_nr;
           id = EAknExScrollerDlgLineNumberPostnummer;
           control = NUMBER_EDITOR {
               min = EAknExScrollerInt0;
               max = EAknExScrollerInt10;
};
},
       DLG_LINE {
           type = EEikCtEdwin;
           prompt = qtn_contact_form_city;
           id = EAknExScrollerDlgLineEdwinCity;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},

       DLG_LINE { //Mobile phone
  type = EAknCtIntegerEdwin;
prompt = qtn_contact_form_phone_mobile;
id = EAknExScrollerDlgLineEdwinMobilePhone;
           itemflags = EEikDlgItemSeparatorAfter;
           control = EDWIN {
               maxlength = EAknExScrollerInt256;
               width = EAknExScrollerInt6;
               lines = EAknExScrollerInt5;
};
},

//Don't bother about these - I will do with them as I do with EAknExScrollerDlgLineEdwinMobilePhone
       DLG_LINE { //Home phone
type = EEikCtNumberEditor;
           prompt = qtn_contact_form_phone_home;
id = EAknExScrollerDlgLineNumberHomePhone;
           itemflags = EEikDlgItemSeparatorAfter;
           control = NUMBER_EDITOR {
               max = 99999999999;
};
},
       DLG_LINE { //Home phone
type = EEikCtNumberEditor;
           prompt = qtn_contact_form_phone_work;
id = EAknExScrollerDlgLineNumberWorkPhone;
           itemflags = EEikDlgItemSeparatorAfter;
           control = NUMBER_EDITOR {
               max = 99999999999;
};
}
};
}
Tue, 2005-06-14 10:27
Joined: 2005-05-17
Forum posts: 31
Re: Phone nr prompt?
Hi,

have you resolved this? if you haven't try following, works for me:

        DLG_LINE {
            type = EEikCtEdwin;
            prompt = p_number;
            id = EAknFormEdwinNroId;
            itemflags = EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
            control = EDWIN {
                flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;
                width = EDWIN_WIDTH;
                lines = EDWIN_LINES;
                maxlength = EAknExFormEdwinNumberMaxLength;
                numeric_keymap = EAknEditorStandardNumberModeKeymap;
                allowed_input_modes = EAknEditorNumericInputMode;
                default_input_mode = EAknEditorNumericInputMode;
                max_view_height_in_lines = 5;
                base_line_delta = 21;
             };
        }

  • Login to reply to this topic.