Showing posts with label maemo ui development. Show all posts
Showing posts with label maemo ui development. Show all posts

Maemo ui Application Notification

continued from previous article click here for previous article
Application Notifications

Once the updating process is completed, whether it was successful or not, some sort of feedback needs to be provided to the user. This can be done in several different ways, of course, but for this demonstration, I will opt again for using a Notification. Notification Example 1.1 is what the user will see if the updating process is successful. Notification Example 2 is what will happen if the user’s internet connection is lost (or some other circumstance causes Facebook to reject the status update). Notification Example 3 occurs if the user’s login is incorrect or has not yet been entered in the Settings.

Notification Example 1.1:


Notice again how I’ve used the same UI and have just overlaid it with the Confirmation note.


At this point, when the user clicks OK, the Notification will disappear and the current view will be returned to the main UI.


There are two additional methods of providing positive application feedback to the user while still remaining in the realm of “most excellent” maemo UI design.


Notification Example 1.2:


Notification Example 1.2 utilizes a similar method to 1.1, but provides a little more detail and one additional option for the user.


Now, the user can tap OK and be returned to the main UI (if they’d like to update their status again). Or, they can tap Close to exit the application (of course, tapping Close will trigger a Confirmation note).

Notification Example 1.3:

Notification Example 1.3 is subtler than the previous examples but still serves its purpose well by using an Confirmation Banner.



If you use this method, remember to code enough time for the Banner to be displayed on the screen so that the user can read what it says.


Notification Example 2:



In this example, tapping OK and Close will function the same as before. But, as you’ll see, I’ve added a third button called, “Retry.” This button will allow the user to attempt to send their updated status to Facebook again. When Retry is tapped, the Notification should disappear (showing the user the main UI again) and the Progress Banner should be displayed while Facebook Status Updater attempts to contact the Facebook API again. If it succeeds, the Confirmation note in Notification Example 1.1 should be triggered. If it doesn’t, then this Notification should reappear.

Article is not complete full article follow this link

maemo ui development -about window

continued from previous article click here for previous article
About “Window”


The About Menu can be very simple (text only) or it can be complex (text, graphics, hyperlinks, et cetera). Earlier, I talked about creating a Splash screen to use as your About screen. Below is an example that I created for the Facebook Status Updater application (the blue email/hyperlinks can actually trigger Email and Web Browser!):



Note: Of course, the user must have a way to get back to the main UI, which is why the Return button has been added to the About screen.



Close Options


The Close option is self-explanatory. It will close the current application. It should act the same way as the Close button in the upper-right of the screen in Normal mode. Closing an application can’t be undone so adding a Confirmation note is always helpful. This should be included for the Main Menu Close option as well as the Close button in the upper-right of the screen. It can say something as simple as:


“Are you sure you want to close this application? Yes/No”



Note: When applications are open, the Application Switcher displays a “double-arrow” icon. Tapping this displays a menu containing all of the open applications. Next to each application is another Close [x] button. This should act in a similar manner to the Close functions described above.


Full Screen Mode vs. Normal Mode


When in Full Screen mode, the “normal” Hildon UI options function a differently than in Normal mode. This can be used to the developer’s advantage. Full Screen-only applications operate on different terms than windowed applications and don’t always require every function to be available to the user. In this case, the developer must determine what options are required and how to best convey that information to the user.


First, the Main Menu cannot be triggered by tapping on the Title Area (as the title is hidden in this mode), but it can be triggered by pressing the Menu Key (the hardware button on the left side of the Internet Tablet, pictured). The Menu Key will trigger the same Main Menu that is accessed by tapping the Title Area.


Second, in Full Screen mode, the Close/Minimize buttons are not available on the UI. This requires some thought as to how one might make these functions available within an application. Usually, it is accomplished by placing an Exit button somewhere within the application’s Application Area (whether it be a text or a graphic).


In my experience, it is wise to allow users to switch any application to and from Normal and Full Screen modes. But, this feature can, and should, be left up to the developer’s discretion. If you choose to create a Full Screen-only application, make sure the user has every means of returning to their Home Screen (i.e., the Hildon desktop). If you choose to allow your application to be viewed in Normal mode, remember to include all of the Main Menu functions as described above.


Close & Minimize Buttons


The Close and Minimize buttons may seem self-evident, but there are a number of applications that don’t use them in the correct way. One, for instance is GPE Calendar. In order for GPE Calendar to function properly (i.e., so that event alarms set within GPE Calendar will work), the Close button actually only minimizes GPE Calendar. In order to close the application, one must go to the Main Menu and select Close from the menu. While the reason for this is clear, the functionality is very confusing. In making decisions such as this, developers must consider the standards before they implement functionality that is completely different than users expect. GPE Calendar does have a Minimize button at the upper-right of the screen (as all applications do when in Normal mode), so why not allow the user to utilize the tools that they are familiar with?


Application Area


The Application Area is virtually left up to the developer’s discretion concerning the design of the application. Although, there are a couple of things to keep in mind:


*

Decide whether menu items (whether on-screen menus triggered by a word or graphic or “tap-and-hold,” Context Sensitive menus) might be better suited under the Main Menu.
*

If the application can only run in Full Screen mode, try to design a menu paradigm that’s similar to what one might find in the Main Menu in a Normal mode application.
*

Closing a Full Screen mode application isn’t always easy to decipher. Create a clear method for users to close the application. When users do attempt to close the application, trigger a Confirmation note if at all possible.
*

Whenever there are text entry fields, try to design them so that the virtual keyboard does not cover them when triggered.
*

Try to fit your content into the Application Area (whether in Normal or Full Screen mode) without the need for scroll bars.




Note: There are plenty of other pieces of advice that could be offered here. Mainly, don’t be haphazard: design on a grid, keep it simple, take pride in your application.


Application Development


At this point, I’m going to begin the step-by-step process of developing my first fictitious application, Facebook Status Updater. I will attempt to go through each of the sections that I’ve already described in further detail, outlining why I make certain decisions and some alternate ideas to think about when creating your own applications.


Facebook Status Updater


The Facebook Status Updater application is pretty straight-forward in terms of a UI. Honestly, I don’t know how difficult it would be to program a maemo application that communicates with the Facebook API (although, I assume it wouldn’t be too hard), so I’ll leave that subject for those who are more code-savvy than myself.


The application’s functions are simple:


*

Must prompt user to set their Facebook username (in this case, the user’s email address) and password
*

Must store user’s username and password
*

Must provide a text entry field for typing the current status
*

Must have a way to send the status to Facebook
*

Must confirm that Facebook has received or rejected the new status


But, first things first... We need an icon!


This icon will serve as the means for launching the application from the Hildon desktop. It is their link to a graphical environment that should not be tainted by anything as evasive as xterm or the like.


I have decided that when the user launches the Facebook Status Updater application, it should go straight to the application rather than displaying a Splash screen (which can be reserved for the About screen as discussed earlier). I’ve also deemed it unnecessary to use a Toolbar at the bottom of my UI. So, what does the Facebook Status Updater UI look like?


First, I need to decide where to direct the user when Facebook Status Updater is launched for the first time. At this point, since the user hasn’t entered their Facebook login info, there are a few different routes I could take:


1.

Terrible: Let the user figure it out on their own. There will be a Settings option under the Main Menu after all.
2.

Bad: Display an error Notification when the application starts (“Login failed! No login information.”)
3.

Better: Display an error with a solution (“Login failed! Please enter your login information in the Settings.”)


4. The “right” way: Trigger the Settings window right away!




Note: Be descriptive when creating Dialog boxes. Notice that I have called this box, “Facebook Login.” Always try to let the user know exactly what they are doing.


At this point, the user can enter their information (the populated text above has just been entered for the purpose of this document), tap OK and be on their way. If the user taps Cancel, then the application will stay open, but they won’t be able to do anything other than go to the Settings option and enter their information (or close the application, of course). If they attempt to send and data to Facebook, an error message will be triggered (explained below).


If they cancel the Settings and close the application, then, upon their return, this Dialog box will appear again. But, if the user enters the information and taps OK, this Dialog box should not appear again when the application is relaunched — the user should be delivered directly to the main UI.



Note: This is an appropriate place to bring up some concepts about text entry fields within maemo applications:


*

By default, tapping on a text entry field will trigger the virtual keyboard with Shift activated (i.e., the first letter typed will be capitalized). If you’re creating a text entry field where the usual user entry might be lower case, then code your application to respond that way.
*

If you create a text entry field that can only accept numbers, then code your application to trigger the virtual keyboard in number-entry mode.
*

If the text entry field is for passwords, be sure to use the recommended procedures for obfuscating the password with asterisks.
*

If the virtual keyboard covers any of the text entry fields within an application, code the application to shift the text entry fields up when the virtual keyboard is triggered.

Main UI


Once the user’s information is set and they tap OK, then the Settings Dialog box will disappear and they will be allowed access to the main UI:


Notice that this screen is exactly like the previous screen, except that the Dialog box is not present. It is, in fact, the same screen. All I did prior to this was make the Dialog box appear over the main UI. (It is not always necessary to design your Dialog boxes into the UI (as you will see in the description of the Flickr Uploadr application, but for this example I thought it would work well.)


Now, the user can enter their current status in the text entry field, and tap Update so that the information will be sent and posted to their Facebook profile. This should trigger the Hildon Progress Banner in the upper-right of the screen:



Note: I’d like to interject that any application that requires the user to wait should trigger some sort of progress indicator that lets them know that the application is processing. In my opinion, a standard should be set as to what style of progress indicator is used within all maemo applications. Since the style shown above is what all “official” maemo applications use, I would vote that it be the one that developers should use within their application development (rather than an animated progress bar, et cetera). Also, this style of progress indicator disallows the user from tapping the Application Area, until it goes away, so it serves a functional purpose as well.

For next follow this link

maemo ui development -main menu

Continues from previous article click here for previous

Main Menu (Normal Mode)


Applications usually have two modes of on-screen existence: “Normal” (windowed) and “Full Screen.” When an application is running in Normal mode, the user is presented with a standard Hildon interface containing a (Main) Menu, an Application Area, (possibly) a Toolbar, and, in the upper-right corner of the screen, Minimize and Close buttons. (Full Screen mode will be explained in more detail later.)


This graphic displays the various areas available within all applications:



An application’s Application Area is the primary area of screen real estate where application content is delivered. Applications may or may not contain a Toolbar, based on the requirements of the application.


An application’s Main Menu is triggered by tapping on the Title Area in the upper-left of the screen, or by pressing the Menu button on the side of the Internet Tablet (more explanation of this button follows). This menu can contain all sorts of functions and options for use within an application, but there are a few items that should always be included in order to remain consistent within the maemo development platform:


*

Edit

o

Cut
o

Copy
o

Paste
o

Select All
*

View
o

Full Screen
*

Tools
o

Settings
o

Help
o

About
*

Close


Items can be added to the Main Menu and its submenus, but these functions (even if grayed-out and unusable) should remain in every application’s Main Menu. This may seem a little redundant, but users expect certain, consistent options when using applications. In many cases, when standardized options are not available, it can disorient a user. When an option is included, but grayed-out, it will inherently communicate to the user that they cannot use that particular function within the current application.


Edit Menu


Sometimes (especially concerning games), the Edit menu will have no use. In this case, the options under “Edit” should be grayed-out and inactive. But, whenever user-definable Settings are available — when the Settings window is opened — the Edit options should become active and allow the user to use the functions within any editable text field.


In the case where a Dialog box is required instead of an embedded window within the application’s Application Area the Edit Menu may not be applicable (Dialog boxes usually block access to the Main Menu), then activating the Edit Menu options is not required. Dialog boxes are very well described in the maemo SDK documentation and developers should follow those guidelines when adding a Dialog box to their applications.


View Menu


The View Menu is needed if an application can toggle between Normal and Full Screen modes. If an application can only be run in Normal mode, then the “Full Screen” option should be grayed out and inactive.


Tools Menu


Among other things, the Tools menus should contain a Settings option, a Help option, and an About option.


Settings “Window”


Settings can trigger an embedded preferences window that fills the Application Area of the application, or a Dialog box that pops up and covers the application in the background. An application’s settings are specific to that application, so be sure to refer to the maemo SDK documentation about things like required buttons, State Saving, et cetera. If an application does not require any settings, the Settings option should still trigger a window to open. This window should contain a message akin to:


“This application does not require any settings.”


Help “Window”


Like the Settings screen, Help is usually application-specific. My advice it to include help text in an application no matter how simple you think the application is to use. There will always be someone with questions, and the Help section is a great place to head off some potentially annoying email correspondence. The Help section can be very simple and even just contain a hyperlink to a help page somewhere on the internet. But, the more effort you put into a good Help section, the better users will enjoy using the application. If you still feel that a Help section is not required, my advice is to trigger a window that says:


“Help is not available for this application.”

click the link to next ui development window

maemo ui development splash screens

Continued from previous article click here for previous

Splash screens are screens that appear while an application is launching. These usually contain the name of the application (as text or graphic logo), the application’s developer’s name (whether it be a person, people, or a company), and the version number of the application. Of course, Splash screens can contain any number of informative items that the developer wishes to convey to the user while the application is launching.


On a handheld platform, where speed is imperative, Splash screens are not always desired. In fact, I would caution all developers in using a splash screen, as most users prefer faster loading applications over eye-pleasing graphics. Still, I recommend creating a Splash screen of some sort for your applications so that they can be used as About screens (described later).

Next is mode to select click the link to mode selection