
Chapter 3 TouchFLO™ 3D 3.1 Using the TouchFLO 3D Home Screen TouchFLO™ 3D gives you touch control over your Windows Mobile-powered device . TouchFLO 3D provides a Home screen that allows finger-touch access to the most widely-used functions , such as People , Messages , Mail , Music , and Internet . The TouchFLO 3D Home screen has the following tabs : Home Music Messages Calendar Stock Settings People Mail Internet Photos and Videos Weather Displaying the TouchFLO 3D Home screen in landscape view The TouchFLO 3D Home screen tabs are always shown at the bottom of the screen when the Home screen is in portrait view . When you slide out the hardware keyboard , the Home screen automatically changes to landscape view and temporarily hides the tabs . Touch the Expand button ( ) at the bottom left side of the Home screen to display the tabs . 68 TouchFLO™ 3D Expand button Switching between the tabs of the Home screen To switch between the tabs , you can do any of the following : • • Touch or tap the desired tab . Press and hold your finger on the active tab , and then slide your finger right or left over the tabs . Release when you have selected the desired tab . TouchFLO™ 3D 69 • Swipe left across the screen to move to the next tab , and swipe right across the screen to move to the previous tab . • Tip When using the hardware keyboard , press the right key to move to the next tab , and press the left key to move to the previous tab . While on any other TouchFLO 3D tab , press the END key to return to the Home tab . Customizing the Home screen tabs You can move or hide the tabs on the Home screen , except for the Home tab . The Settings tab cannot be disabled and hidden also from the Home screen . 1. On the Home screen , slide your finger to the Settings tab , and then touch Customize Tabs . 2. To move a tab , touch and hold the icon before the tab name , and then drag it up or down the tabs list . Release the icon when you reach the desired location . 3. To hide a tab , clear the check box at the right of the tab name . 4. Touch Done . 70 TouchFLO™ 3D 3.2 Home The Home tab displays the current date , a flip-style clock , and an alarm icon that indicates whether the alarm is on or off . Missed calls and your upcoming calendar appointments are also shown on the Home tab . Open the Call History tab of the People screen and view the missed call information . Touch the clock to open the World Clock and change the date , time , and alarm clock settings . Swipe upward on the screen to display a smaller digital clock and view more appointments . To change back to the flip clock , swipe downward on the screen . Open the appointment details screen where you can view , edit , or delete the appointment . World Clock On the Home tab , tap the clock to open the World Clock tab ( ) and view the date and time . You can add , remove , or rearrange cities on the World Clock tab . Tip The World Clock tab can have up to 10 cities . TouchFLO™ 3D 71 Add another city . The date and time in selected cities . This is your local time . To change the local time to another city , select the button before the city name . Return to the Home tab . Remove or rearrange the cities , or adjust the local time . To change your local time , date and time zone 1. On the World Clock tab , touch Menu > Local Time Settings . 2. Adjust the time ( hour and minutes ) by tapping the up or down arrow buttons . 3. Touch Date , select the date , year , and month , and then touch Select . 4. Touch City . The Select Country screen then appears . 5. Flick your finger on the screen or use the Quick Scroll bar on the right of the screen to scroll through the country list . Touch the desired country to select it . 6. The Select City screen then appears . Flick your finger on the screen or use the Quick Scroll bar on the right of the screen to scroll through the city list . Touch the desired city to set your time zone . Tip You can also slowly scroll through the country or city list by dragging your finger upward on the screen , or enter the country or city name in the search box . 7. Tap Done . Note When you synchronize your device with your computer , the time on your device is updated with the time on your computer . 72 TouchFLO™ 3D Alarm Clock On the Home tab , tap the clock , and then touch the Alarm Clock tab ( open the Alarm Clock screen . You can set up to three alarms on this tab . Touch an alarm time to open the Set Alarm screen and set the time and days when to sound the alarm clock . ) to Touch the OFF/ON slider to turn an alarm on or off . To set an alarm 1. On the Alarm Clock screen , touch an alarm time . 2. On the Set Alarm screen , adjust the alarm time ( hour and minutes ) , then tap the day of the week for the alarm . Tip Select multiple days by tapping each desired day . Tap a selected day to exclude it from the alarm . 3. Enter the alarm description , select the alarm ring tone , then choose whether you want the device to vibrate when the alarm goes off . 4. Tap Done . 5. On the Alarm Clock screen , tap the OFF/ON slider to turn on the alarm . Note When an alarm goes off , you have the choice to Snooze or Dismiss the alarm . When you select Snooze , the alarm will sound again after 5 minutes . TouchFLO™ 3D 73 3.3 People On the People tab , you can add favorite contacts and quickly make calls or send text and e-mail messages to these contacts . From the People tab , you can also set up your own contact card , create new contacts , and easily view exchanged text , multimedia and e-mail messages with a contact . If contacts have their own Facebook account , you can view their Facebook updates and events right from the People tab . Note You need an active data or wireless network connection to the Internet to link to Facebook . See Chapter 8 for details on how to connect to the Internet . Setting up My Contact Card My Contact Card automatically opens the first time that you access the People tab . You can enter and save your contact information on My Contact Card so you can easily share and send it to your contacts . If you have a Facebook account , you can also sync your Facebook profile with My Contact Card so you can receive instant notifications everytime you or your Facebook friends change profiles or post events . 1. On the Home screen , slide your finger to the People tab . 2. When the My Contact Card screen appears , tap Next . Note Tap Skip if you prefer to set up My Contact Card later . You can open My Contact Card from the Settings tab of the TouchFLO 3D Home screen , or from the All tab of the People screen . See “ To view and search contacts on your device ” and “ Settings ” for details . 3. On the subsequent screen , choose how to add your photo to your contact card . You can use the Camera to take your photo , select a stored photo from your device or storage card , or if you have a Facebook account , login to your account and sync with your Facebook profile . Note When the Link Profile window opens , select or clear the Facebook information that you want to link , and then tap Done . 74 TouchFLO™ 3D 4. On the Detail Information screen , enter your information in the fields provided . You can scroll down the screen to view more fields . 5. When finished entering information , tap Next , and then tap Done on the subsequent screen to return to the People tab . Working with favorite contacts You need to have contacts already stored on your device before you can add them as favorite contacts on the People tab . If there are no existing contacts , create them first on your device . To create a new contact 1. On the People tab , touch All People . 2. The People screen then opens and displays the All tab ( create a new contact . ) . Touch New to 3. Enter the contact information in the fields provided and then tap Done or OK . Add the contact’s photo . You can link to the contact’s Facebook photo , select an existing photo in Album , or open Camera and take a photo of the contact . Touch a field to start entering information . Add another phone number . Save the contact . TouchFLO™ 3D 75 Tips • To link with the contact’s Facebook account , scroll down the New Contact Card screen and then tap Link in the Facebook section . For more information about Facebook , see “ Facebook updates and events ” in this chapter . • Tap More at the bottom of the New Contact Card screen to enter additional contact information from Windows Mobile’s Contacts program . See “ Contacts ” in Chapter 12 for details . To add favorite contacts You can add up to 15 favorite contacts on the People tab . Note SIM contacts cannot be added as favorite contacts . 1. On the People tab , touch one of the plus ( + ) icons , or touch Add Favorite . 2. On the Select a Contact screen , touch the name of the desired contact . Tip To create a new contact , touch New on top of the list . 3. Select a phone number or e-mail address to associate to the favorite contact . Note If there is no picture associated with the contact , the Album program opens and lets you take a photo of the contact or select an existing contact photo . For more information about Album , see Chapter 11. 4. To add another favorite contact , touch the small plus icon ( ) at the right side of the screen and repeat steps 2 and 3. 76 TouchFLO™ 3D To find a favorite contact Do any of the following : • • To flip through the contact pictures one at a time , swipe your finger upward or downward the screen . On the picture strip at the right side of the People tab : • • Touch the picture of the desired favorite contact ; or Press and hold on the currently selected contact picture at the right side of the screen , and then slide upward or downward the picture strip until the desired favorite contact is selected . Swiping upward/downward on the screen Tip Using the picture strip To remove the current favorite contact , touch Menu > Remove Favorite . TouchFLO™ 3D 77 To communicate with your favorite contact After selecting a favorite contact , do any of the following to communicate with that contact : • Touch the contact’s name , phone number , or e-mail address below the contact picture to call or send an e-mail message . For more information about making a call or composing and sending an e-mail message , see Chapter 2 and Chapter 6. Touch an icon below the contact name to communicate with the contact . Call the contact’s mobile phone . Call the contact’s work/office phone . Call the contact’s home phone . Compose and send an e-mail message . Compose and send a text message . • The icons shown depend on available contact information . For example , ( ) is shown if the contact information includes a home phone . • Touch the picture of the favorite contact on the center screen to open the Contact Details screen , and then choose how to communicate with the contact . See “ The Contact Details screen ” in this chapter for details . 78 TouchFLO™ 3D The People screen Touch All People on the People tab to display the People screen where you can view and manage all your contacts . The People screen has these tabs : All , Favorites , Updates and Events , and Call History . All Call History Favorites Updates and Events Note The way to switch between tabs on the People screen is just the same as the way you switch tabs on the main Home screen . See “ Switching between the tabs of the Home screen ” earlier in this chapter . Functions Lists all contacts on your device and on the SIM card . This tab lets you create , delete , or edit a contact , or save a contact to your SIM card using SIM Manager . Touch a contact to open the Contact Details screen . You can also use this tab to open or update My Contact Card . Tip If you imported SIM contacts to your device and duplicated contacts are displayed , tap Menu > View > Contacts to filter and display only contacts stored on your device . Shows the favorite contacts that you have added to the People tab . You can also add favorite contacts through this tab . Displays notifications when there are updates that occurred in Facebook . This tab also shows events of your stored contacts . See “ Facebook updates and events ” in this chapter for details . Lists all your dialed numbers , and received and missed calls . See “ Using Call History ” in Chapter 2. Tab All Favorites Updates and Events Call History TouchFLO™ 3D 79 To view and search contacts on your device On the People screen , touch the All tab to view all your contacts . Swipe upward or downward on the screen to scroll through your contacts . You can also use the search box or the Quick Scroll bar to search for contacts on your device . Tap to send your contact information as an attachment in a multimedia message . Show or hide the search box . Use the search box to search contacts on your device . Create a new contact . Touch to edit or update My Contact Card SIM card contact Touch to open the Contact Details screen . This icon appears when : • You receive a new text or e-mail message , or when you miss a call from the contact . Quick Scroll bar . Touch and hold , and then slide your finger downward . The Facebook status appears when you link the contact to his or her Facebook account . Add a new contact , delete contacts , filter • The contact has updated the contacts list , and more . Facebook profile or added Return to the People tab . events in Facebook . Note When you slide open the hardware keyboard and the screen switches to landscape view , the All tab automatically displays the search box . You can use the hardware keyboard to enter and search for a contact . 80 TouchFLO™ 3D The Contact Details screen When you touch a contact name in the All tab of the People screen or touch the picture of a favorite contact in the center screen of the People tab , the Contact Details screen opens . From this screen , you can view the contact’s details , exchange of messages and calls with the contact , and more . The Contact Details screen has these tabs : Details , Messages , Email , Updates and Events , and Call History . Details Email Call History Messages Updates and Events Note The way to switch between tabs on the Contact Details screen is just the same as the way you switch tabs on the main Home screen . See “ Switching between the tabs of the Home screen ” earlier in this chapter . Tab Details Functions Shows a contact’s details . From this tab , you can call or send a text or e-mail message to the contact , edit or delete the contact information , or save the contact to your SIM card . Messages Displays exchanged text and multimedia messages with the contact . You can also reply with a text message directly on this tab . Email Displays all received e-mail messages from the contact . Updates and Events Displays notifications when the contact has updates on his or her Facebook account . This tab also shows events of the contact . See “ Facebook updates and events ” in this chapter for details . Call History Lists all your incoming , outgoing , and missed calls to and from the contact . This tab also lets you call the contact . See “ Using Call History ” in Chapter 2 for details . TouchFLO™ 3D 81 Facebook updates and events If you and your stored contacts have Facebook accounts and you linked to Facebook when you were creating My Contact Card , you can easily check which of your contacts have updates that occurred in Facebook . The types of Facebook updates include changes in profile information and status as well as new photos added to the Facebook album . You can also easily check which contacts have events that occur on the current day . The types of events include the birthday and anniversary , if specified and stored on the contact details , as well as events that are created in Facebook . To check which contacts have Facebook updates and events You can check for Facebook updates and events of contacts from one convenient location , which is on the Updates and Events tab of the People screen . 1. On the Home screen , slide to the People tab and then tap All People . 2. Tap the Updates and Events tab ( ) . 3. If you haven’t linked your stored contacts to Facebook , the Updates and Events tab will show a Link Profiles option . Tap this option , choose which contacts you want to link to Facebook , and then tap Next . On the Link Profiles window , select or clear the Facebook information that you want to link , and then tap Done . 4. In the Updates list , when you tap a contact who has only one type of Facebook update , Opera Mobile opens and brings you to your Facebook site where you can view details of the contact’s Facebook update . When you tap a contact who has multiple Facebook updates , the Contact Details screen opens and displays the Updates and Events tab of this contact . See “ To check a single contact’s Facebook updates and events ” for details . 5. In the Events list , tap a contact to send a greeting via a text message to the contact or view the contact details . If an event is a Facebook event , tap it to open Opera Mobile and view information about that event . 82 TouchFLO™ 3D Indicates that you have an invitation for an event in Facebook . Tap Me to open Opera Mobile and access your Facebook site so you can choose to accept or decline the invitation . Displays you and the contacts who have updates in Facebook . Lists contacts who have events on the current day . Notes • To manually refresh and display the latest Facebook updates , tap Menu > Update Now . • To enable the Facebook updates to be refreshed automatically , tap Menu > Data Connection Setting and then select the Download data automatically . The refresh is not instant . Your device checks from Facebook in a fixed time period . To check a single contact’s Facebook updates and events To check only for a single contact’s Facebook updates and his or her events , access the Updates and Events tab from the Contact Details screen . 1. On the Home screen , slide to the People tab and then tap All People to open the People screen . 2. Tap a contact to open the Contact Details screen . 3. Tap the Updates and Events tab ( ) . 4. In the Updates list , tap a Facebook update to Opera Mobile and view details of that update . TouchFLO™ 3D 83 5. In the Events list , tap an event to send a greeting via a text message to the contact or view the contact details . If it is a Facebook event , tap it to access your Facebook site and view information about that event . To change your status in Facebook You can change your status in Facebook directly from your own contact card . 1. On the All tab of the People screen , tap Me to open your contact card . 2. Scroll to the bottom of the screen and then tap the button that displays your status . 3. Enter your new status and then tap OK . To log out from Facebook To log out from your Facebook account , open My Contact Card , scroll to the bottom of the screen , and then tap the message that says “ Tap to logout ” . 84 TouchFLO™ 3D To connect back to Facebook Do one of the following : • • • Open My Contact Card , scroll to the bottom of the screen , and then tap the message that says “ Login to my facebook ” . On the Updates and Events tab of the People screen , tap Link . On the Updates and Events tab of a single contact , tap Link Profiles . On the Facebook Login screen , enter the e-mail address and password that you use for your Facebook account . 3.4 Messages On the Messages tab , you can read text messages ( SMS ) as they arrive , and create a new text message . Touch the message to open the Messages tab of the Contact Details screen and view all received messages from the contact . Shows the number of unread text messages . Access all text messages in your inbox and other folders . Create a new text message . To flip through received text messages , swipe your finger upward/downward on the screen . Reply to the current message , delete the current message , and more . TouchFLO™ 3D 85 For more information about working with text messages , see “ Text Messages ” in Chapter 6. Making calls or sending e-mail directly from a text message While reading a text message on the Messages tab , you can directly call the sender of the text message . When you have opened a received text message , you can place a call to the phone number or send e-mail to the e-mail address that is contained in the message . For more information about directly making calls and sending e-mail while viewing text messages , see Chapter 6. 3.5 Mail The Mail tab is where you send and receive e-mail messages . Adding an Internet e-mail account On the Mail tab , use Mail Setup to easily add web-based e-mail accounts such as Yahoo ! Mail Plus , AOL , and more . 1. On the Home screen , slide to the Mail tab . 2. Touch New Account at the bottom-right of the screen . The Mail Setup screen appears . 3. Enter your e-mail address and password , then tap Next . 4. Enter your name and the account display name , then tap Next . Mail Setup then searches for the e-mail provider settings on your device . If the settings are not found on your device , you will be prompted to enter the e-mail account settings manually . Obtain the e-mail account settings from your e-mail provider . 86 TouchFLO™ 3D 5. Tap the Automatic Send/Receive time , and then choose how frequent you want e-mail messages to be automatically sent and downloaded on your device . 6. Select or clear an advanced setting according to your preference , and then tap Done . For more information about specifying e-mail server settings , creating and sending e-mail messages , and customizing e-mail settings , see “ E-mail ” in Chapter 6. Adding an Outlook e-mail account You can also set up and add an Outlook e-mail account on the Mail tab and view the same e-mail messages that you receive in Outlook on your computer or on the Exchange Server . Before you add an Outlook e-mail account , obtain the Exchange Server name , domain name , user name , and password from your network administrator . 1. On the Home screen , slide to the Mail tab . 2. Touch New Account at the bottom-right of the screen . Note If you have previously added an e-mail account on the Mail tab , touch Menu > Account > New Account . 3. On the Mail Setup screen , enter your e-mail address and password , select Exchange Email ( Outlook ) , and then tap Next . 4. Enter the domain name and server address , select the This server requires an encrypted ( SSL ) connection option , if needed , and then tap Next . 5. Clear the data that you want to exclude from synchronization , and then tap Done . Your device synchronizes with the Exchange Server and downloads your Outlook e-mail messages . Note If you include all Outlook data , your Outlook contacts , appointments , and tasks will also synchronize with your device . For more information about working with company e-mail , see Chapter 7. TouchFLO™ 3D 87 Checking and reading e-mail messages The icon on the Mail tab and the respective icons of your e-mail accounts show the number of newly received or unread e-mail messages . Select an e-mail account and then swipe your finger up or down on the center screen to browse through received e-mail messages . • To browse through received e-mail messages , swipe up or down on the envelope image . • Touch the e-mail on the screen to open and read the message . Access all e-mail messages of the currently selected account . After selecting an e-mail account , touch this icon to create and send a new e-mail message . To select an e-mail account : • Touch an e-mail account icon to view the e-mail messages in that account . Or , • Touch and hold the icon of the e-mail account that is currently displayed , then slide upward or downward until the desired e-mail account is selected . Create a new e-mail , add another e-mail account , send and receive e-mails , and more . For more information about creating and sending e-mail messages , see Chapters 6 and 7. Making calls directly from an e-mail message You can directly call the sender of the e-mail message that is currently shown on the Mail tab . When you have opened a received e-mail message , you can place a voice call or conference call to the other recipients of the e-mail . For more information about directly making voice calls and and conference calls while viewing e-mail messages , see Chapters 2 and 6. 88 TouchFLO™ 3D 3.6 Calendar The Calendar tab displays a monthly calendar and allows you to quickly create and view appointments . Indicates that you have appointments for that date . Today’s date . Touch a date to view or create appointments for that date . Switch to Day view so you can view or create appointments for the current day . To go to the next or previous month , swipe your finger upward/downward or touch the Up/Down arrow on the screen . From the menu , choose to create a new appointment for the current date , or go to the current date if it is not displayed on the screen . To create an appointment 1. On the Home screen , slide your finger to the Calendar tab . 2. If you are creating an appointment for the current date , touch Menu > New . Otherwise , touch another date on the calendar , and then touch New Appointment . 3. Enter a name for the appointment , then specify the location . 4. If there is a time frame for the appointment , set the start and end dates and times . If it is a special occasion such as a birthday or a whole-day event , set the All Day option to Yes . 5. When finished , tap OK to return to the Calendar tab . TouchFLO™ 3D 89 To view and manage your appointments On the Calendar tab , dates with appointments are indicated by a triangle ( the upper-right corner of the date box . 1. Touch a date on the calendar to switch to Day view . The screen displays all your appointments and the weather information for that day . Note The weather information appears only if you have set your local time to a city on the World Clock tab , and if the appointment date is within the 5-day forecast on the Weather tab . See “ Home ” and “ Weather ” in this chapter for details . ) at 2. Touch an appointment to view its details . On the appointment details screen , touch Menu to edit , send , or delete the appointment . 3. Touch OK to return to Day view . Tip Your upcoming appointments also appear on the Home tab . To use Windows Mobile Calendar You can also use the Windows Mobile Calendar program to create , view , and send appointments . To open the Calendar program , tap Start > All Programs > Calendar . For more information about using Windows Mobile Calendar , refer to the “ Help & How-To ” topics on the Windows Mobile web site . 90 TouchFLO™ 3D 3.7 Internet On the Internet tab , you can open Opera Mobile™ to browse the web , search information , and add push web pages . This tab also lets you enable Push Internet to update the contents of your push web pages before you browse them . Enter the information you want to search on the web , and tap . Browse the web using Opera Mobile . Add a push web page . View your web favorites ( bookmarks ) . Swipe upward to scroll down the screen and access more web favorites , if any . Remove a push web page , adjust the auto-update time for your push web pages and bookmarks , and more . To add a push web page You can add push web pages on the Internet tab for quick access . 1. On the Home screen , slide your finger to the Internet tab . 2. Tap Add a new push page . On the New Push Page screen , enter the push web page title and address ( URL ) , and then select the auto update time under Frequency . Tip You can also select a bookmark , and add it as a push web page . 3. Tap Save . TouchFLO™ 3D 91 To automatically update your push web pages Automatically update your push web pages to ensure that you browse the latest versions of your favorite web sites every time you access them from the Internet tab . The updated web sites are cached in the device memory so that they load faster in Opera Mobile . 1. On the Internet tab , touch Menu > Schedule Settings . 2. In the Day and Time section , select the day or days you want to auto update your push web pages , and then specify the update time . 3. Scroll down the screen to the Frequency section , then touch the update time below each of your push web pages to set the time interval for automatic updates . 4. Tap Done to return to the Internet tab . To configure Push Internet settings 1. On the Internet tab , touch Menu > Data Settings . 2. Touch the OFF/ON slider to enable or disable the following options : • Push Internet . Enable ( default ) or disable Push Internet . • Roaming . Enable this option if you want to update your push web pages and bookmarks even when you are roaming . Enabling this option may incur additional data charges . This option is disabled by default . 92 TouchFLO™ 3D 3.8 Stock The Stock tab allows you to add , view , and analyze stocks and stock market movements using updated financial information . You can add up to 14 stock quotes or stock market indexes on the Stock tab . Note Downloading stock or stock market information may incur additional fees from your wireless service provider . Contact your service provider for details . To add a stock or stock market quote 1. On the Home screen , slide your finger to the Stock tab , and then touch Add Stock . Note If the Stock tab is not empty , touch Menu > Add Stock to add another stock quote or stock market index . 2. On the Add Stock screen , enter the company name , stock market index , or ticker symbol in the search box , and then tap . Search the company or stock market . Add the stock/stock market to the Stock tab . Enter the company/stock market name or ticker symbol . Return to the Stock tab . Swipe upward to scroll down the screen and access more search results . 3. Tap the company name , stock market index , or ticker symbol to display it on the Stock tab . TouchFLO™ 3D 93 4. To add another stock quote or stock market index , touch Menu > Add Stock on the Stock tab , then repeat steps 2 to 4. To view stock quotes or stock market indexes The Stock tab lists all your stock quotes and stock market indexes including the current price or volume , and the change in price or volume from the previous trading day . The change in price or volume box indicates whether the stock or stock market has gained ( green ) or declined ( red ) . Open the Stock Details screen . Current trading price or volume Toggle between showing the change in points/price or percentage from the previous trading day . Touch the stock quote or stock market index name to view its intraday chart and other details . Touch to open the Stock Details screen . Shows the last time you updated the information . To view more stock quotes or stock market indexes , swipe your finger upward on the screen . Add , delete , or rearrange the stocks and stock market indexes . Return to the Stock tab . Download the latest stock/ stock market information . 94 TouchFLO™ 3D To set the stock or stock market information download 1. On the Stock tab , touch Menu > Settings . 2. You can choose from the following download options : • Download data automatically . When selected , stock and/or stock market index data is automatically downloaded from the Yahoo ! Finance web site at the interval you specified . You can also update information every time an ActiveSync connection is established . Clear this option if you prefer to manually download stock and/or stock market index information . • Download data when roaming . Select this option only if you want to automatically download stock and/or stock market index information when roaming . This may incur additional data charges . TouchFLO™ 3D 95 3.9 Photos and Videos The Photos and Videos tab lets you flip through your photos and video clips and view them in full screen . From this tab , you can also open Camera and capture pictures and record videos . Capture a photo . Touch the photo or video to view or play it in full screen . Record a video . To flip through photos and videos , swipe upward/downward on the screen . Open Album . ( See “ Viewing Photos and Videos Using Album ” in Chapter 11 for details . ) View the photos as a slideshow . If a video is selected , touch Play . The Photos and Videos tab displays pictures and video files from the current favorite album . By default , the Camera Shots album is set as the favorite album . This album stores the pictures and videos you captured using the device camera . 96 TouchFLO™ 3D To set an album as a Favorite 1. On the Photos and Videos tab , touch Album . 2. Touch Albums and then select one of the listed favorite albums . 3. Tap Menu > Set Album as Favorite and then tap OK on the confirmation screen . Tips • For more information about viewing in full screen , see “ Viewing photos ” and “ Playing videos ” in Chapter 11. The file formats that can be viewed on the Photos and Videos tab are the same as in Album . • To transfer media files from a computer and view them on the Photos and Videos tab , copy or synchronize them to a folder under \My Device ( the device memory ) or \Storage Card ( if a microSD card is installed ) . TouchFLO™ 3D 97 3.10 Music The Music tab allows you to visually browse through albums and music tracks and play music . The albums and music tracks that you see on the Music tab are from the Now Playing list of the Library . Go to the previous album or the previous track in the current album . Swipe upward/ downward on the screen to flip through albums or tracks in an album . Play or pause . Go to the next album or the next track in the current album . Set music playback to Repeat , turn Shuffle on or off , and more . Access the Library . Note Your device searches for all supported music files from the following locations : Device : \My Music ( including all subfolders ) \My Documents ( including all subfolders ) Storage Card : \Storage Card ( including all subfolders ) For information about supported music file formats , see “ Specifications ” in the Appendix . To play music On the Music tab , flip through albums and tracks to find the music you want to start listening to , and then touch the Play icon . 98 TouchFLO™ 3D To move forward or backward in the current music track Touch and hold on the thin bar below the album art to display the progress bar : Drag your finger right or left on the progress bar to move forward or backward in the current track . To set repeat and shuffle modes Touch Menu > Repeat and choose whether to repeat the current track , repeat all tracks in the current album or playlist , or not to repeat . To turn shuffle mode on or off , touch Menu > Shuffle and then select Shuffle On or Shuffle Off . The icons on the upper-right side of the Music tab show whether repeat and shuffle modes are enabled . Repeat [ One ] Repeat [ All ] Shuffle [ On ] To browse and play music in the Library The Library organizes music into categories , such as Now Playing , Artists , Albums , Genres , and All Songs . When you add more albums or music tracks to your device , go to the Library to locate and play the new albums or music tracks . 1. On the Music tab , touch Library to open the Library screen . 2. The tabs at the bottom of the Library screen correspond to the different categories . To browse music under a certain category , slide to the tab that corresponds to the desired category . 3. Keep tapping an item on a category tab ( for example , an artist ) until the music tracks display on the screen . 4. Tap a music track to play it . Note When you select a category in the Library such as Artists and play its music , the Now Playing list will be replaced with the music tracks from that category . TouchFLO™ 3D 99 To create and use a playlist 1. Select the desired music on the Music tab or the Library to play it . 2. On the Music tab , touch Menu > Add to Playlist . 3. Touch Create new playlist , enter the Playlist Name and then touch OK . 4. Touch Library , slide to the Playlists tab , then touch a playlist to open it . 5. Touch the plus icon , or touch Menu > Add Songs , then slide to the All Songs tab . 6. Select the check boxes of the music tracks you want to add to the playlist , or touch Menu > Select All to choose all tracks . 7. Touch OK to add the tracks to the playlist . 8. When finished adding songs , touch Back to return to the Playlists tab . 9. On the Playlists tab , touch a playlist to open it . 10. Touch the first track in the playlist to play it on the Music tab . After each track , the next one in the playlist will be played . Note Playlists are not automatically updated when music files have been deleted from the device memory or storage card . There are two types of playlists that can be shown on the Playlists tab : • • Custom playlists ( ) that are created on the Music tab . Windows Media® Player playlists ( ) that are in Windows Media® Player Mobile’s Library ( which is synchronized with Windows Media® Player on your computer ) . These playlists cannot be edited . Note If a Windows Media® Player playlist contains a combination of music , video and image files , only music files in the playlist are synchronized to your device and other media types are filtered out . 100 TouchFLO™ 3D 3.11 Weather The Weather tab shows you the current weather as well as weather information for the next four days of the week . The Weather tab can display weather information of your local city and/or weather in up to ten cities . Shows the last weather update . To view the weather in other cities , swipe your finger upward/downward on the screen . Add or delete a location , change the temperature to Celsius or Fahrenheit , and more . Download the latest weather information . Your device automatically connects to the Internet to download and display weather information . The current temperature , temperature range , type of weather ( sunny , cloudy , showers , or others ) , and the weather information for the next four days of the week are shown on the Weather tab . To add a city 1. On the Weather tab , touch Menu > Add Location . 2. The Select Country screen then appears . Flick your finger on the screen or use the Quick Scroll bar on the right of the screen to scroll through the country list . Touch the desired country to select it . TouchFLO™ 3D 101 3. The Select City screen then appears . Flick your finger on the screen or use the Quick Scroll bar on the right of the screen to scroll through the city list . Touch the desired city to select it . Tip You can also slowly scroll through the country or city list by dragging your finger upward on the screen , or enter the country or city name in the search box . To choose download options 1. On the Weather tab , touch Menu > Settings . 2. You can choose from the following options : • Download weather automatically . When this option is selected , weather information is automatically downloaded whenever you select the Weather tab , if the data has not been updated within the last three hours . Weather data is also downloaded every time an ActiveSync connection is established . Clear this option if you prefer to manually download weather information . • Download weather when roaming . Select this option only if you want to allow automatic download of weather data when roaming . This may incur additional data charges . 102 TouchFLO™ 3D 3.12 Settings The Settings tab gives you access to all the device settings . 1 2 3 4 5 6 7 Access all personal , system , and connection settings . 1 2 3 4 5 6 7 8 9 8 9 Adjust the Wi-Fi , and Bluetooth settings . Swipe your finger upward/downward on the screen to view more settings . Open ActiveSync and sync Outlook information . See Chapter 7 for details . Adjust the audio settings and sound profile . See “ Ringer settings ” in Chapter 13 for details . Change the Home tab wallpaper . Manage the communication features of your device . See “ Using Comm Manager ” in Chapter 13 for details . Move or hide the TouchFLO 3D tabs . See “ Customizing the Home Screen tabs ” earlier in this chapter . Set up My Contact Card . See “ Setting up My Contact Card ” in this chapter . Open Mail Setup and set up an Internet or Exchange Server e-mail account . See “ Mail ” earlier in this chapter . Enable or disable auto screen rotation or calibrate the device’s G-Sensor . Display the TouchFLO 3D information . 