Log In
New Account
Home My Page Project Cloud Code Snippets Project Openings modest
Summary Lists SCM Wiki

Modest Widgets

Modest widgets

Here we describe the common widgets in modest, and also some platform specific ones.

In code, the common widgets and windows are in folder src/widgets. Specific widgets for hildon2 platform are in src/hildon2. Specific widgets for moblin/gtk platform are in src/gtk folder (for modest 3.90/4.x series).

Common widgets.


We have the following comboboxes. These were used in maemo4/diablo, and are also used in gtk (modest 3.90 series).

The idea is showing a button that user can tap to choose one option among the availables.

We provide the following comboboxes:

  • ModestComboBox: generic combobox that shows options from a list of TnyPairs.
  • ModestCountryComboBox: country selection combobox (used in wizard).
  • ModestProviderComboBox: service provider selection combobox.
  • ModestSecureAuthComboBox: combobox for choosing an authentication method (i.e. none, plain text, cram md5).
  • ModestServerSecurityComboBox: combobox for choosing the security protocol (none, ssl, tls)
  • ModestRetrieveComboBox: combobox for retrieval type (headers, messages and attachments). Deprecated since Modest 3.x.
  • ModestLimitRetrieveComboBox: combobox for retrieval limit options. Deprecated since Modest 3.x.


This widget is a GtkTreeView showing the list of accounts available.

It supports two modes:

  • Picker mode: used for being shown as if it was a picker dialog. I.e. when user taps on "edit accounts". It hides the last updated column.
  • Normal mode: the one used in ModestAccountsWindow.

It stays listening to the account manager, to update on any change (being last updated, being the color hint for account with new messages, or being an account created or deleted).

It supports live search in hildon2.2 toolkit.


The ModestFolderView is a widget that represents:

  • The tree of folders for an account, or all accounts.
  • The list of mailboxes available in a multimailbox account.

This is used in:

  • ModestFolderWindow: shows the list of folders of an account or of a mailbox of an account.
  • Folder choose picker (defined in ModestPlatform). SHows the list of folders depending on the use case (i.e. possible parent folders for a new folder, target of move messages, etc).
  • ModestMailboxesWindow: shows the list of mailboxes of an account. It's done with a filter, as mailboxes are just folders from tinymail point of view.

The behavior of the folder view is set up with different methods:

  • One or more filters (ModestFolderViewFilter). I.e. this is used to show only mailboxes, or for hiding accounts and only showing folders.
  • A cell view style: compact (the one used now in all the views, shows items as a list, and not as a tree) or default (old ones, columns based, tree based).

It's based in TnyGtkFolderListStore, a GtkListStore provided by tinymail that implements TnyList interface, and monitors folders changes.

It support live search in hildon 2.2.


This widget represents the list of messages in a folder. It's based in TnyGtkHeaderList.

Provides two styles:

  • Two lines (the one used now): uses vbox and hbox cell renderers to create a compact representation of the rows.
  • details (deprecated): represents the data in columns.

The details of the rendering of rows implementation is in modest-header-view-render.ch?.

It supports:

  • Sorting using different criterias (currently deprecated as we only sort using date now).
  • Filtering using a complex smart filter. This is used in live search support, but can also be used in standard find toolbar search (as in Modest gtk 3.90.x series).
  • Live search in hildon 2.2
  • Show latest API. This allows to only load in the headers list store the latest N messages.

!ModestISearchView interface

This interface is used for any widget that supports incremental search. Examples are editor window and message viewer.


This widget represents a list of recipients. It's used only in expander mail header view (and then deprecated).


This is the widget used to edit a list of recipients. It's used in the message composer (ModestMsgEditWindow).

It's integrated with addressbook lookups. When an address comes from addressbook it's shown underlined, and keyboard navigation and mouse selection consider this as if it was a single character.

Addresses are shown one per line.

The main work in this widget is proper navigation with keyboard and mouse/finger/pointer events.

ModestSortCriteriumView interface

An interface for dialogs that allow to select a sort criterium.

ModestZoomable interface

Views that support zoom.

ModestMsgView interface: ModestGtkHtmlMsgView and ModestMozembedMsgView

The ModestMsgView is an interface that includes TnyMsgView interface. As this, it represents a full message with its headers, attachments and bodies.

The implementations available are:

  • Gtkhtml based (the one used currently in all targets)
  • Mozembed based, experimental, deprecated.
  • Webkit based. Experimental, in development for Modest 4.x series.

ModestMimePartView interface: ModestGtkHtmlMimePartView and ModestMozembedMimePartView

The ModestMimePartView is an interface that includes TnyMimePartView interface. This is used to represent the body of a message.

The implementations available are, again:

  • Gtkhtml based (the one used currently in all targets)
  • Mozembed based, experimental, deprecated.
  • Webkit based. Experimental, in development for Modest 4.x series.

ModestMailHeaderView interface: ModestCompactMailHeaderView and ModestExpanderMailHeaderView

The ModestMailHeaderView interface is used to represent the headers of the message. This includes:

  • Subject (not for compact mail header view, as it assumes it's shown in title.
  • Recipients (only From: in compact mail header view).
  • Attachments
  • Priority

There are two implementations:

  • Expander: the one used in Maemo 4 (Diablo). Deprecated.
  • Compact: the one used since Modest 3.x.


It represents one attachment. Supports fetching proper icon and size, with different methods.


Represents the list of attachmetns for a message. Each attachment is represented with a ModestAttachmentView.

It support selection, and direct activation on tapping, depending on the toolkit available.

ModestHboxCellRenderer and ModestVboxCellRenderer

These cell renderers are special ones that allow to create composite renderers with a vertical or horizontal layout, just as GtkHBox and GtkVBox composite GtkWidget?.


One of the pages in the wizard. This is here basically for allowing inheriting in plugins.

Hildon specific widgets


Pickers are specific domain children of HildonPickerButton object.

These are used in Maemo5 platform (hildon2.2 target).

We provide the following ones:

  • ModestCountryPicker: picker for choosing a country amont the ones supported.
  • ModestProviderPicker: picker for choosing a service provider from the ones available.
  • ModestSelectorPicker: generic picker that shows options from a list of TnyPairs.
  • ModestSecureAuthPicker: picker for choosing an authentication method (i.e. none, plain text, cram md5).
  • ModestServerSecurityPicker: picker for choosing the security protocol (none, ssl, tls)


This color button uses the calendar widgets button, if available.


A wrapper around WpTextView

Modest 3.90.x toolkit factory

From modest 3.90.x series, widgets instantiation has been refactored so that we could reuse as much as possible of common code, just using specific widgets depending on the toolkit used (hildon2.2 or gtk).

Pickers and comboboxes

Pickers and comboboxes are now accessed using toolkit factory as "selectors". The selector will be shown as picker in hildon2.2 or combobox in gtk.

Other important implementation bits in widgets

UI contants

The constants for UI (spacing, colors, path separators), are in src/widgets/modest-ui-constants.h. There it's separated depending on the platform (UI guidelines are different in gnome and hildon2, and hten, the spacings are also different.

Icon names

This include (included in each platform) has the icon names for each platform.

(last edited February 19, 2010) - Read Only [info] [diff])
FindPage by browsing or searching
5 best incoming links: ModestArchitecture (5), RecentChanges (5)
5 best outgoing links: ch (7)GtkWidget (2)
5 most popular nearby: ModestArchitecture (3989), RecentChanges (684), ch (290), GtkWidget (208)

Terms of Use    Privacy Policy    Contribution Guidelines    Feedback

Powered By GForge Collaborative Development Environment