void CDefaultNumbersPopupList::DisplaySelection()
{
	CALLSTACKITEM_N(_CL("CDefaultNumbersPopupList"), _CL("DisplaySelection"));


	CPbkSelectFieldDlg * dlg = new CPbkSelectFieldDlg;
	CleanupStack::PushL(dlg);

	CPbkFieldArray& fields = aItem->CardFields(); //original
	CPbkFieldArray * to_display = new CPbkFieldArray(); // with selected
	CleanupStack::PushL(to_display);

	TInt idx = iListbox->CurrentItemIndex();
	TInt focus = -1;
	
	switch (idx)
	{
		case 0: //default phone
		{
			for( int i=0; i<fields.Count();i++ )
			{ 
				if ( (fields.At(i)).FieldInfo().IsPhoneNumberField() )
				{
					to_display->AppendL(fields.At(i));
					if ( (fields.At(i)).DefaultPhoneNumberField() )
					{
						focus = (to_display->Count() -1);
					}
				}
			}
			TPbkContactItemField * field = dlg->ExecuteLD(*to_display, R_SELECT_NONE_CBA,KNullDesC,focus );
			if (!field)
			{
				aItem->RemoveDefaultPhoneNumberField();
			}
			else
			{
				aItem->SetDefaultPhoneNumberFieldL(field);
			}
			break;
		}
		case 1: // default sms
		{
			for( int i=0; i<fields.Count();i++ )
			{ 
				if ( (fields.At(i)).FieldInfo().IsPhoneNumberField() )
				{
					to_display->AppendL(fields.At(i));
					if ( (fields.At(i)).DefaultSmsField() )
					{
						focus = (to_display->Count() -1);
					}
				}
			}
			TPbkContactItemField * field = dlg->ExecuteLD(*to_display, R_SELECT_NONE_CBA,KNullDesC,focus );
			if (!field)
			{
				aItem->RemoveDefaultSmsField();
			}
			else
			{
				aItem->SetDefaultSmsFieldL(field);
			}
			break;
		}
		case 2: //default mms
		{
			for( int i=0; i<fields.Count();i++ )
			{ 
				if ( (fields.At(i)).FieldInfo().IsMmsField() )
				{
					to_display->AppendL(fields.At(i));
					if ( (fields.At(i)).DefaultMmsField() )
					{
						focus = (to_display->Count() -1);
					}
				}
			}
			TPbkContactItemField * field = dlg->ExecuteLD(*to_display, R_SELECT_NONE_CBA,KNullDesC,focus );
			if (!field)
			{
				aItem->RemoveDefaultMmsField();
			}
			else
			{
				aItem->SetDefaultMmsFieldL(field);
			}
			break;
		}
		case 3: // default email
		{
			for( int i=0; i<fields.Count();i++ )
			{ 
				if ( (fields.At(i)).FieldInfo().IsMmsField() && !(fields.At(i)).FieldInfo().IsPhoneNumberField() )
				{
					to_display->AppendL(fields.At(i));
					if ( (fields.At(i)).DefaultEmailField() )
					{
						focus = (to_display->Count() -1);
					}
				}
			}
			TPbkContactItemField * field = dlg->ExecuteLD(*to_display, R_SELECT_NONE_CBA,KNullDesC, focus );
			if (!field)
			{
				aItem->RemoveDefaultEmailField();
			}
			else
			{
				aItem->SetDefaultEmailFieldL(field);
			}
			
			break;
		}
		default:
			break;
	}
	CleanupStack::PopAndDestroy(); //to_display
	CleanupStack::Pop(); // dlg
	Refresh();
}
예제 #2
0
TBool CProfileListDialog::OkToExitL(TInt aButtonId) {

    TBool okToExit = EFalse;   
    CEikTextListBox *lbox = ((CEikTextListBox*)Control(EProfileListDlgProfileList));

    // Buffers for current and new file names and a name
    HBufC *fileNameBuf = HBufC::NewLC(KMaxFileName);
    TPtr fileName = fileNameBuf->Des();
    HBufC *nameBuf = HBufC::NewLC(KMaxFileName);
    TPtr name = nameBuf->Des();
    
    switch ( aButtonId ) {
        case ECmdProfileListConnect: {
            // Connect to the selected profile
            TInt sel = lbox->CurrentItemIndex();
            if ( sel == KDefaultProfileIndex ) {
                iProfileFile = iDefaultProfileFile;
            } else {
                iProfileFile = iProfileDirectory;
                iProfileFile.Append((*iProfileArray)[sel]);
            }
            okToExit = ETrue;
            break;
        }
            
        case ECmdProfileListEdit: {
            // Edit the selected profile
            TInt sel = lbox->CurrentItemIndex();
            if ( sel == KDefaultProfileIndex ) {
                name = KDefaultProfileName;
                fileName = iDefaultProfileFile;
            } else {
                name = (*iProfileArray)[sel];
                fileName = iProfileDirectory;
                fileName.Append(name);
            }

            // Edit settings
            iPutty->ReadConfigFileL(fileName);
            Config *cfg = iPutty->GetConfig();
            CSettingsDialog *dlg = new (ELeave)
                CSettingsDialog(name, (sel == KDefaultProfileIndex), cfg,
                                iPutty);
            switch ( dlg->ExecuteLD(R_SETTINGS_DIALOG) ) {
                case EEikBidOk:
                    // Handle rename first
                    if ( (sel != KDefaultProfileIndex) &&
                         (name.Compare((*iProfileArray)[sel]) != 0) ) {
                        MakeNameLegal(name);
                        // Delete current file so that we can rename to a file
                        // that maps to the same name (e.g. changes in case)
                        User::LeaveIfError(
                            CEikonEnv::Static()->FsSession().Delete(fileName));
                        MakeNameUniqueL(name);
                        fileName = iProfileDirectory;
                        fileName.Append(name);
                        
                        // Update profile list and listbox
                        iProfileArray->Delete(sel);
                        iProfileArray->InsertL(sel, name);
                        lbox->DrawNow();
                    }
                    // Just write, the name can be an old one or a renamed one
                    iPutty->WriteConfigFileL(fileName);
                    break;

                case ECmdSettingsDelete:
                    if ( sel != KDefaultProfileIndex ) {
                        // Remove the profile from the list and update
                        // listbox
                        iProfileArray->Delete(sel);
                        lbox->HandleItemRemovalL();
                        if ( sel >= iProfileArray->Count() ) {
                            sel = iProfileArray->Count() - 1;
                        }
                        lbox->SetCurrentItemIndexAndDraw(sel);

                        // Delete profile file
                        User::LeaveIfError(
                            CEikonEnv::Static()->FsSession().Delete(fileName));
                    }
                    break;

                default:
                    break;
            }
            okToExit = EFalse;
            break;
        }
            
        case ECmdProfileListNew: {
            // New profile -- start with defaults, but with a new name
            iPutty->ReadConfigFileL(iDefaultProfileFile);
            Config *cfg = iPutty->GetConfig();
            name = KNewProfileName;
            MakeNameUniqueL(name);

            CSettingsDialog *dlg = new (ELeave)
                CSettingsDialog(name, EFalse, cfg, iPutty);
            if ( dlg->ExecuteLD(R_SETTINGS_DIALOG) == EEikBidOk ) {
                // Finalize name
                MakeNameLegal(name);
                MakeNameUniqueL(name);
                fileName = iProfileDirectory;
                fileName.Append(name);
                
                // Update the listbox
                iProfileArray->AppendL(name);
                lbox->HandleItemAdditionL();
                lbox->SetCurrentItemIndexAndDraw(iProfileArray->Count() - 1);

                // Write out new settings
                iPutty->WriteConfigFileL(fileName);
            }
            okToExit = EFalse;
            break;
        }

        case ECmdProfileListClose:
            okToExit = ETrue;
            break;
        
        default:
            User::Invariant();
    }

    CleanupStack::PopAndDestroy(2); //fileNameBuf, nameBuf
    return okToExit;
}
void CPhotoListView::GetFolder()
{
	TInt PopValue;	
	//TBuf<150> msg;
	TInt count=0;	
	
	CDesCArray* items = iPhotosAppUi->GetFolderList();	
    CDesCArray* foldernames = iPhotosAppUi->ReturnText();

	if (items == NULL)
	{
		Count = 0;
		items = new (ELeave) CDesCArrayFlat(1);
		items->AppendL(foldernames->MdcaPoint(0));
	}
	else
	{
		Count = items->MdcaCount();	
		items->AppendL(foldernames->MdcaPoint(0));
	}
	foldernames->Reset();

	CEikTextListBox* list = new( ELeave ) CAknSinglePopupMenuStyleListBox;
    CleanupStack::PushL( list );

    CAknPopupList* popupList = CAknPopupList::NewL(
       list,
       R_AVKON_SOFTKEYS_SELECT_CANCEL,
       AknPopupLayouts::EMenuWindow);

    CleanupStack::PushL( popupList );
    
    popupList->SetMaximumHeight(2);

    list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
    list->CreateScrollBarFrameL( ETrue );
    list->ScrollBarFrame()->SetScrollBarVisibilityL(
		   CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );

    CTextListBoxModel* model = list->Model();
    model->SetItemTextArray( items );
    model->SetOwnershipType( ELbmOwnsItemArray );
	
	count = GetPhotoCount();

//	TInt price;
//	TLex lex(iPhotosAppUi->iCharge);
//	lex.Val(price);
//	count = count * price;

//	TBuf<30> temp;
//	temp.AppendNum(count);	

//	msg.Copy(_L("Charge "));
//	msg.Append(temp);
//	msg.Append(_L(" pesos"));

	//msg.Copy(_L("Select Album:"));
	//msg.Copy(*(iEikonEnv->AllocReadResourceL(R_IMAGES_SELECT_ALBUM)));
	
	/*count = count / 3;
	temp.Copy(_L(""));
	temp.AppendNum(count);

	path = iPhotosAppUi->ImageFolderPath();
	if(path == 0 || path == 1)			
		msg.Append(_L(" Photos)"));
	else if(path == 2 || path == 3)
		msg.Append(_L(" Videos)"));*/

	popupList->SetTitleL(*(iEikonEnv->AllocReadResourceL(R_IMAGES_SELECT_ALBUM)));

	PopValue = popupList->ExecuteLD();		
	
	if(PopValue==0)
	{
		iFolderStatus=-1;
	}
	else if(PopValue==1)
	{
		PopValue=list->CurrentItemIndex();		
		iFolderStatus=PopValue;		
		TPtrC ptr1(items->MdcaPoint(PopValue));
		comment.Copy(ptr1);		
	}
	
	items->Reset();
	CleanupStack::Pop(); // popupList
    CleanupStack::PopAndDestroy(); // list	

}