Hello,
The recommended best practice for the privacy statement dialog includes a
checkbox, that can be checked by the user, to not make the dialog appear on
subsequent runs. There doesn't seem to be any checkbox or similar in the
public S60 3rd Ed. SDK. Does anyone have any recommendations on other
controls that might be appropriate, or do we have to implement our own
checkbox?
I know the checkbox isn't a requirement, but it's not nice if the user has
to be exposed to that dialog everytime he/she starts the app. I suppose it
wouldn't be okay to just include something like "This dialog will not be
shown again"?
It would be very helpful if Symbian/Nokia/UIQ published example code for a
privacy statement dialog...
Linus
>
> I know the checkbox isn't a requirement, but it's not nice if the user has
> to be exposed to that dialog everytime he/she starts the app. I suppose it
> wouldn't be okay to just include something like "This dialog will not be
> shown again"?
Hi Linus,
just got our symbian signed today.
We use such a second dialog, so it seems to be ok 😉
--
Tobias
www.OutBank.de
"Tobias Stoeger" <[email protected]> wrote in message
news:PDXYcmTZGHA.2860@extapps30...[color=green]
>>
>> I know the checkbox isn't a requirement, but it's not nice if the user
>> has to be exposed to that dialog everytime he/she starts the app. I
>> suppose it wouldn't be okay to just include something like "This dialog
>> will not be shown again"?
> Hi Linus,
> just got our symbian signed today.
> We use such a second dialog, so it seems to be ok 😉[/color]
Okay. 😊 Which test house was that?
Linus
> Okay. 😊 Which test house was that?
MphasiS
--
Tobias
www.OutBank.de
Hi Tobias,
What kind of dialog is used? CAknMessageQueryDialog?
Regards
wah
"Tobias Stoeger" <[email protected]> wrote in message
news:PDXYcmTZGHA.2860@extapps30...[color=green]
>>
>> I know the checkbox isn't a requirement, but it's not nice if the user
>> has to be exposed to that dialog everytime he/she starts the app. I
>> suppose it wouldn't be okay to just include something like "This dialog
>> will not be shown again"?
> Hi Linus,
> just got our symbian signed today.
> We use such a second dialog, so it seems to be ok 😉
> --
> Tobias
> www.OutBank.de[/color]
We use one CAknMessageQueryDialog for the message itself
(*.l01)
#define qtn_privacystatement_dialog_title "Information"<0x0001>"For your
information"
#define qtn_privacystatement_dialog_text "This application will make use
of the following features of your phone:\n- Making a connection to the
Internet\nIf you have any questions or concerns, please contact us at
[email][email protected][/email]"
(*.rss)
RESOURCE TBUF r_privacystatement_dialog_title
{
buf = qtn_privacystatement_dialog_title;
}
RESOURCE TBUF r_privacystatement_dialog_text
{
buf = qtn_privacystatement_dialog_text;
}
RESOURCE DIALOG r_privacystatement_dialog
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
items=
{
DLG_LINE
{
type = EAknCtPopupHeadingPane;
id = EAknMessageQueryHeaderId;
control = AVKON_HEADING
{
};
},
DLG_LINE
{
type = EAknCtMessageQuery;
id = EAknMessageQueryContentId;
control = AVKON_MESSAGE_QUERY
{
};
}
};
}
....and one CAknQueryDialog for the yes-no-question
(*.l01)
#define qtn_donotshowthisdialoganymore_question "Do not show me the last
information again."
(*.rss)
RESOURCE TBUF r_donotshowthisdialoganymore_question
{
buf = qtn_donotshowthisdialoganymore_question;
}
RESOURCE DIALOG r_general_confirmation_query
{
flags = EGeneralQueryFlags;
buttons = R_AVKON_SOFTKEYS_YES_NO;
items =
{
DLG_LINE
{
type = EAknCtQuery;
id = EGeneralQuery;
control = AVKON_CONFIRMATION_QUERY
{
layout = EConfirmationQueryLayout;
};
}
};
}
void CGuiAppUi::TestSymbianSignedCon02L()
{
RFs fs;
User::LeaveIfError(fs.Connect());
CleanupClosePushL(fs);
_LIT(KMyTempFileName,"privacystatement.cfg"😉;
TFileName tFile(KMyTempFileName);
#ifdef __OS91__
// In OS91 we cannot write to the app path ... must go to private folder
fs.PrivatePath(tFile);
#ifdef __WINS__
tFile.Insert(0,_L("c:"😉);
#else
tFile.Insert(0,
CEikonEnv::Static()->EikAppUi()->Application()->AppFullName().Left(2)
);
#endif
//Create the folder
_LOG_TDesC("Try to create private app dir: %S",tFile);
TInt err = fs.MkDirAll(tFile);
if (err!=KErrNone && err!=KErrAlreadyExists)
{
_LOG_TInt("Failed creating private app dir: %d",err);
}
tFile.Append( KMyTempFileName );
#else
CompleteWithAppPath( tFile );
#ifdef __WINS__
tFile[0] = TChar( 'C' ); // The App. is in Drive Z on emulator !
#endif
#endifif (!BaflUtils::FileExists(fs,tFile))
{
//Bring up that fxxxxx dialog
CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog();
CleanupStack::PushL(dlg); //put dlg on CS
HBufC* noteTitle = StringLoader::LoadLC(
R_PRIVACYSTATEMENT_DIALOG_TITLE
);
HBufC* message = StringLoader::LoadLC(
R_PRIVACYSTATEMENT_DIALOG_TEXT
);
dlg->SetHeaderTextL(*noteTitle);
dlg->SetMessageTextL(*message);
CleanupStack::PopAndDestroy(message); //remove noteText from CS
CleanupStack::PopAndDestroy(noteTitle); //remove noteText from CS
CleanupStack::Pop(dlg); //remove dlg from CS
dlg->ExecuteLD(R_PRIVACYSTATEMENT_DIALOG);
HBufC* prompt = StringLoader::LoadLC(
R_DONOTSHOWTHISDIALOGANYMORE_QUESTION ); //put prompt on CS
CAknQueryDialog* dlgQuery = CAknQueryDialog::NewL();
CleanupStack::PushL(dlgQuery); //put dlg on CS
dlgQuery->SetPromptL(*prompt);
CleanupStack::Pop(dlgQuery); //remove dlg from CS
CleanupStack::PopAndDestroy(prompt); //remove prompt from CS
if (dlgQuery->ExecuteLD(R_GENERAL_CONFIRMATION_QUERY))
{
RFile ff;
TInt ret = ff.Create( fs,tFile,EFileWrite);
if( ret != KErrNone)
{
_LOG_L8("Warning - Cannot create privacystatement file"😉;
}
ff.Close();
}
}
CleanupStack::PopAndDestroy(&fs);//...and close
}
--
Tobias
www.OutBank.de