📄 wsexampleappui.cpp
字号:
if( err == KErrNone )
{
dateTime = sunrise.DateTime();
timeString.Num( dateTime.Hour() );
timeString.Append( WSE_DDOT );
timeString.AppendNumFixedWidth( dateTime.Minute(), EDecimal,
KTimeNumWidth );
timeString.Append( WSE_DDOT );
timeString.AppendNumFixedWidth( dateTime.Second(), EDecimal,
KTimeNumWidth );
formatBuffer.Append( timeString );
}
else
{
formatBuffer.Append( WSE_ERROR2 );
}
cityInfo->AppendL( formatBuffer );
formatBuffer.Copy( WSE_CITYSUNSETTODAY );
if( err == KErrNone )
{
dateTime = sunset.DateTime();
timeString.Num( dateTime.Hour() );
timeString.Append( WSE_DDOT );
timeString.AppendNumFixedWidth( dateTime.Minute(), EDecimal,
KTimeNumWidth );
timeString.Append( WSE_DDOT );
timeString.AppendNumFixedWidth( dateTime.Second(), EDecimal,
KTimeNumWidth );
formatBuffer.Append( timeString );
}
else
{
formatBuffer.Append( WSE_ERROR2 );
}
cityInfo->AppendL( formatBuffer );
iAppDialog->SetListBoxTextL( cityInfo );
CleanupStack::PopAndDestroy( cityInfo );
}
// ---------------------------------------------------------
// CWSExampleAppUi::FillListBoxL()
// Fill main dialog listbox with country information
// ---------------------------------------------------------
void CWSExampleAppUi::FillListBoxL( TCountryData& aCountryData )
{
TBuf<KTextBufferLength> formatBuffer;
CDesC16ArrayFlat* countryInfo =
new (ELeave)CDesC16ArrayFlat( KArrayGranularity );
CleanupStack::PushL( countryInfo );
countryInfo->Reset();
formatBuffer.Copy( WSE_COUNTRYNAME2 );
formatBuffer.Append( aCountryData.iCountry );
countryInfo->AppendL( formatBuffer );
formatBuffer.Copy( WSE_CAPITAL );
formatBuffer.Append( aCountryData.iCapital );
countryInfo->AppendL( formatBuffer );
formatBuffer.Copy( WSE_INTERNATIONALDIALLINGPREFIX );
formatBuffer.Append( aCountryData.iIntlPref );
countryInfo->AppendL( formatBuffer );
formatBuffer.Copy( WSE_NATIONALDIALLINGCODE2 );
formatBuffer.Append( aCountryData.iNatCode );
countryInfo->AppendL( formatBuffer );
formatBuffer.Copy( WSE_NATIONALDIALLINGPREFIX );
formatBuffer.Append( aCountryData.iNatPref );
countryInfo->AppendL( formatBuffer );
iAppDialog->SetListBoxTextL( countryInfo );
CleanupStack::PopAndDestroy( countryInfo );
}
// ---------------------------------------------------------
// CWSExampleAppUi::CreateCityUIL()
// Ask all the information about new city and create
// the new city into world server database.
// ---------------------------------------------------------
void CWSExampleAppUi::CreateCityUIL()
{
TCityData newCity;
TPtrC text;
// new city name
text.Set(WSE_NEWCITYNAME);
if( QueryTextL( text, newCity.iCity) == EFalse )
{
return;
}
CDesC16ArrayFlat* countriesList =
new (ELeave)CDesC16ArrayFlat( KArrayGranularity );
CleanupStack::PushL( countriesList );
TBuf<KTextBufferLength> temp;
temp.Copy( WSE_EMPTY );
iWSConnection->ListCountriesL( temp, countriesList );
// choose country where this city is in
text.Set(WSE_CHOOSECOUNTRY);
if( AskPopupChoiseL( text, countriesList, newCity.iCountry ) == EFalse )
{
CleanupStack::PopAndDestroy( countriesList );
return;
}
CleanupStack::PopAndDestroy( countriesList );
// daylight saving zone
if( AskDLSZoneL( newCity.iDaylightSavingZone ) != KErrNone )
{
return;
}
// local area code
text.Set(WSE_LOCALAREACODE);
if( QueryTextL( text, newCity.iAreaCode ) == EFalse )
{
return;
}
// universal time offset for the city
text.Set(WSE_THEUTCOFFSET);
if( AskNumberL( text, newCity.iUniversalTimeOffset ) != KErrNone )
{
return;
}
// lattitude for the city
TInt latitude;
TInt longitude;
text.Set(WSE_LATITUDE);
if( AskNumberL( text, latitude ) != KErrNone )
{
return;
}
// longitude for the city
text.Set(WSE_LONGITUDE);
if( AskNumberL( text, longitude ) != KErrNone )
{
return;
}
newCity.iLatLong.SetMinutesL( latitude, longitude );
// attempt to create the city into world server database.
if( iWSConnection->AddCity( newCity ) == KErrNone )
{
TPtrC msg(WSE_ADDEDNEWCITY);
ShowInfoL( msg );
}
else
{
TPtrC msg(WSE_ERRORWHILEADDINGNEWCITY);
ShowInfoL( msg );
}
}
// ---------------------------------------------------------
// CWSExampleAppUi::DistanceUIL()
// Calculate distance between currently selected city and
// the city which is asked from user in this method.
// ---------------------------------------------------------
void CWSExampleAppUi::DistanceUIL()
{
TBuf<KTextBufferLength> placeName;
TPtrC text;
CDesC16ArrayFlat* citiesList =
new (ELeave)CDesC16ArrayFlat( KArrayGranularity );
CleanupStack::PushL( citiesList );
// ask for 2nd city name. first being as the current
// city showing in the dialog listbox
text.Set(WSE_2NDCITYNAME);
if( QueryTextL( text, placeName ) )
{
iWSConnection->ListCitiesL( placeName, citiesList );
if( citiesList->Count() == 0 )
{
TPtrC msg(WSE_NOMATCHINGCITYFOUND);
ShowInfoL( msg );
}
else
{
// more than one city found, ask user to choose
if( citiesList->Count() > 1 )
{
text.Set(WSE_2NDCITYNAME);
if( AskPopupChoiseL( text, citiesList, placeName ) )
{
// this is used to mark that a choise was made.
citiesList->Reset();
}
}
else
{
placeName.Copy( citiesList->operator[](0) );
}
if( citiesList->Count() <= 1 )
{
TInt distance;
TInt err;
err = iWSConnection->CalculateDistance( iCurrentCity.iCity,
placeName, distance );
if( err != KErrNone )
{
TPtrC msg(WSE_ERRORWHILECALCULATINGDISTANCE);
ShowInfoL( msg );
}
else
{
// Fill the listbox with the distance information
TBuf<KTextBufferLength> distanceText;
CDesC16ArrayFlat* distanceInfo =
new (ELeave)CDesC16ArrayFlat( KArrayGranularity );
CleanupStack::PushL( distanceInfo );
distanceText.Copy( WSE_FIRSTCITY );
distanceText.Append( iCurrentCity.iCity );
distanceInfo->AppendL( distanceText );
distanceText.Copy( WSE_SECONDCITY );
distanceText.Append( placeName );
distanceInfo->AppendL( distanceText );
distanceText.Copy( WSE_DISTANCEBETWEEN );
distanceText.AppendNum( distance );
if( iWSConnection->GetUnit() == EWldMiles )
{
distanceText.Append( WSE_MILES );
}
else
{
distanceText.Append( WSE_KILOMETERS );
}
distanceInfo->AppendL( distanceText );
iAppDialog->SetListBoxTextL( distanceInfo );
iShowing = EShowingNothing;
CleanupStack::PopAndDestroy( distanceInfo );
}
}
}
}
CleanupStack::PopAndDestroy( citiesList );
}
// ---------------------------------------------------------
// CWSExampleAppUi::CreateCountryUIL()
// Create new country and capital city for it into
// world server database.
// ---------------------------------------------------------
void CWSExampleAppUi::CreateCountryUIL()
{
TCountryData country;
TPtrC text;
// new country name
text.Set(WSE_COUNTRYNAME);
if( QueryTextL(text, country.iCountry) == EFalse )
{
return;
}
// international dialing prefix
text.Set(WSE_INTDIALINGPREFIX);
if( QueryTextL( text, country.iIntlPref) == EFalse )
{
return;
}
// National dialing code
text.Set(WSE_NATIONALDIALLINGCODE);
if( QueryTextL( text, country.iNatCode) == EFalse )
{
return;
}
// national dialing prefix
text.Set(WSE_NATDIALLINGPREFIX);
if( QueryTextL( text, country.iNatPref) == EFalse )
{
return;
}
// create the capital city
TCityData newCity;
// capital city name
text.Set(WSE_CAPITALCITYNAME);
if( QueryTextL( text, newCity.iCity) == EFalse )
{
return;
}
country.iCapital.Copy( newCity.iCity );
newCity.iCountry.Copy(country.iCountry);
// daylight saving zone
if( AskDLSZoneL( newCity.iDaylightSavingZone ) != KErrNone )
{
return;
}
// local area code for capital city
text.Set(WSE_LOCALAREACODE);
if( QueryTextL( text, newCity.iAreaCode) == EFalse )
{
return;
}
// universal time offset for capital city
text.Set(WSE_THEUTCOFFSET);
if( AskNumberL( text, newCity.iUniversalTimeOffset ) != KErrNone )
{
return;
}
// latitude for capital city
TInt latitude;
TInt longitude;
text.Set(WSE_LATITUDE);
if( AskNumberL( text, latitude ) != KErrNone )
{
return;
}
// longitude for capital city
text.Set(WSE_LONGITUDE);
if( AskNumberL( text, longitude ) != KErrNone )
{
return;
}
newCity.iLatLong.SetMinutesL( latitude, longitude );
// attempt to create the country and capital city
// into world server database.
if( iWSConnection->AddCountry( country, newCity ) == KErrNone )
{
TPtrC msg(WSE_ADDEDNEWCOUNTRY);
ShowInfoL( msg );
}
else
{
TPtrC msg(WSE_ERRORWHILEADDINGNEWCOUNTRY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -