ctb/include/menu.h File Reference

#include "filemodel.h"
#include "fileview.h"
Include dependency graph for ctb/include/menu.h:

Go to the source code of this file.

Defines

#define MENU_CONTENT   "ctb_menu_content"
#define MENU_CONTENT_MEDIA   "ctb_menu_content_media"
#define MENU_CONTENT_DELETE_MODE   "ctb_menu_delete_mode"
#define MENU_CONTENT_RECENT_MODE   "ctb_menu_recent_mode"

Functions

void menu_init ()
 Initialise popup menus for content browser.
void menu_set_text ()
 Initialise text items in popup menus for content browser.
void menu_show ()
 Set the context menu to show in the popup menu.
void menu_hide ()
void menu_select_view_type (ctb_viewtypes_t view_type)
 Set the specified option in the "View" group to selected.
void menu_update_view_mode (ctb_viewmodes_t view_mode)
void menu_select_sort_order (const ctb_sort_order_t sort_order)
 Set the specified option in the "Sort" group to selected.
void menu_set_current_is_media (const gboolean is_media)
 Specifies whether to show "special" menu for media or not.
void menu_set_category (const char *name)
void menu_on_goto_location (const gchar *location)
 Go to the specified location.
void menu_on_item_activated (const gchar *item, const gchar *group, const gchar *menu, const gchar *state)
 Handle a menu button that has been pressed by the user.

Define Documentation

#define MENU_CONTENT   "ctb_menu_content"

File Name : menu.h

Description: Control the popup menus of the content browser Copyright (C) 2008 iRex Technologies B.V. All rights reserved.

Definition at line 43 of file ctb/include/menu.h.

Referenced by filemodel_get_menu_content(), and menu_init().

#define MENU_CONTENT_DELETE_MODE   "ctb_menu_delete_mode"

Definition at line 45 of file ctb/include/menu.h.

Referenced by filemodel_get_menu_content(), and menu_init().

#define MENU_CONTENT_MEDIA   "ctb_menu_content_media"

Definition at line 44 of file ctb/include/menu.h.

Referenced by filemodel_get_menu_content(), and menu_init().

#define MENU_CONTENT_RECENT_MODE   "ctb_menu_recent_mode"

Definition at line 46 of file ctb/include/menu.h.

Referenced by filemodel_get_menu_content(), and menu_init().


Function Documentation

void menu_hide (  ) 

Definition at line 241 of file ctb/src/menu.c.

References filemodel_current_is_desktop(), ipc_menu_updates_finished(), and update_category().

Referenced by on_window_deactivated().

00242 {
00243     if (!filemodel_current_is_desktop()) {
00244         update_category();
00245         ipc_menu_updates_finished();
00246     }
00247 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_init (  ) 

Initialise popup menus for content browser.

---------------------------------------------------------------------------

Name : menu_init

Parameters:
-- 
Returns:
--

--------------------------------------------------------------------------

Definition at line 101 of file ctb/src/menu.c.

Referenced by main().

00102 {
00103     g_sort_item = g_string_new("");
00104 
00105     // add groups
00106     const char *group = GROUP_VIEWS;
00107     ipc_menu_add_group( group,                  "",    "folder"          );
00108     ipc_menu_add_item ( ITEM_VIEW_ICON,         group, "view_small"      );
00109 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00110     ipc_menu_add_item ( ITEM_VIEW_DETAIL,         group, "view_detail"     );
00111 #endif
00112     ipc_menu_add_item ( ITEM_VIEW_CONTENT,      group, "view_content"     );
00113 
00114     group = GROUP_SORT;                         
00115     ipc_menu_add_group( group,                  "",    "folder"          );                                                  
00116     ipc_menu_add_item ( ITEM_SORT_NAME,         group, "sort_name"       );
00117     ipc_menu_add_item ( ITEM_SORT_AUTHOR,       group, "sort_author"     );
00118 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00119     ipc_menu_add_item ( ITEM_SORT_TYPE,         group, "sort_type"       );
00120     ipc_menu_add_item ( ITEM_SORT_SIZE,         group, "sort_size"       );
00121 #endif
00122     ipc_menu_add_item ( ITEM_SORT_DATE_ADDED,   group, "sort_date_added" );
00123     ipc_menu_add_item ( ITEM_SORT_DATE_READ,    group, "sort_date_read" );
00124 
00125     group = GROUP_ACTIONS;
00126     ipc_menu_add_group( group,                  "",    "folder"          );
00127 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00128     ipc_menu_add_item ( ITEM_ACTION_SHORTCUT,   group, "create_shortcut" );
00129 #endif
00130     ipc_menu_add_item ( ITEM_ACTION_DELETE,     group, "delete"          );
00131 
00132     // add menus
00133     ipc_menu_add_menu(MENU_CONTENT_MEDIA,       GROUP_VIEWS,   GROUP_SORT,    GROUP_ACTIONS);
00134     ipc_menu_add_menu(MENU_CONTENT,             GROUP_VIEWS,   NULL,          NULL);
00135     ipc_menu_add_menu(MENU_CONTENT_DELETE_MODE, GROUP_ACTIONS, NULL,          NULL);
00136     ipc_menu_add_menu(MENU_CONTENT_RECENT_MODE, GROUP_VIEWS,   GROUP_ACTIONS, NULL);
00137 
00138     ipc_menu_set_item_state(BACK_TO_LIBRARY, SYSTEM_TOP, STATE_NORMAL);
00139 
00140     menu_set_text();
00141 }

Here is the caller graph for this function:

void menu_on_goto_location ( const gchar *  location  ) 

Go to the specified location.

---------------------------------------------------------------------------

Name : menu_on_goto_location

Parameters:
[in] location - location to display
Returns:
--

--------------------------------------------------------------------------

Definition at line 364 of file ctb/src/menu.c.

References ERRORPRINTF, fileview_show_desktop(), menu_show(), and START_TIMER.

Referenced by on_goto_location().

00365 {
00366     START_TIMER();
00367     g_assert( location  &&  location[0] != '\0' );
00368 
00369     if ( strcmp(location, "desktop") == 0 )
00370     {
00371         fileview_show_desktop();
00372         menu_show();
00373     }
00374     else
00375     {
00376         ERRORPRINTF("unknown location [%s]", location);
00377     }
00378 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_on_item_activated ( const gchar *  item,
const gchar *  group,
const gchar *  menu,
const gchar *  state 
)

Handle a menu button that has been pressed by the user.

---------------------------------------------------------------------------

Name : menu_on_item_activated

Parameters:
[in] item - item name of the activated item
[in] group - name of the parent group of the activated item
[in] menu - name of the current menu
[in] state - state of the item when activated
Returns:
--

--------------------------------------------------------------------------

Definition at line 381 of file ctb/src/menu.c.

Referenced by on_menu_item().

00385 {
00386     START_TIMER();
00387     gboolean ok = TRUE;
00388 
00389     LOGPRINTF("entry: item [%s] group [%s]", item, group);
00390 
00391     if ( strcmp(group, GROUP_VIEWS) == 0 )
00392     {
00393         if ( strcmp(state, STATE_NORMAL) == 0 )
00394         {
00395             ctb_viewtypes_t view_type = 0;
00396             if (strcmp(item, ITEM_VIEW_ICON) == 0 )
00397             {
00398                 view_type = CTB_ICONVIEW;
00399             }
00400             else if (strcmp(item, ITEM_VIEW_DETAIL) == 0 )
00401             {
00402                 view_type = CTB_LISTVIEW;
00403             }
00404             else if (strcmp(item, ITEM_VIEW_CONTENT) == 0 )
00405             {
00406                 view_type = CTB_CONTENTVIEW;
00407             }
00408             else
00409             {
00410                 WARNPRINTF("unexpected menu item [%s] in group [%s]", item, group);
00411                 ok = FALSE;
00412             }
00413 
00414             if (ok) fileview_set_view_type( view_type, TRUE );
00415         }
00416         else
00417         {
00418             WARNPRINTF("ignore state [%s] item [%s][%s]", state, item, group);
00419         }
00420     }
00421     else if ( strcmp(group, GROUP_SORT) == 0 )
00422     {
00423         ctb_sort_order_t sort_order = 0;
00424         if ( strcmp(state, STATE_NORMAL) == 0 )
00425         {
00426             if (      strcmp(item, ITEM_SORT_NAME  ) == 0 )
00427             {
00428                 sort_order = CTB_SORT_BY_NAME;
00429             }
00430 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00431             else if ( strcmp(item, ITEM_SORT_TYPE  ) == 0 )
00432             {
00433                 sort_order = CTB_SORT_BY_TYPE;
00434             }
00435             else if ( strcmp(item, ITEM_SORT_SIZE  ) == 0 )
00436             {
00437                 sort_order = CTB_SORT_BY_SIZE;
00438             }
00439 #endif
00440             else if ( strcmp(item, ITEM_SORT_DATE_ADDED  ) == 0 )
00441             {
00442                 sort_order = CTB_SORT_BY_DATE_ADDED;
00443             }
00444             else if ( strcmp(item, ITEM_SORT_DATE_READ  ) == 0 )
00445             {
00446                 sort_order = CTB_SORT_BY_DATE_READ;
00447             }
00448             else if ( strcmp(item, ITEM_SORT_AUTHOR) == 0 )
00449             {
00450                 sort_order = CTB_SORT_BY_AUTHOR;
00451             }
00452             else
00453             {
00454                 WARNPRINTF("unexpected menu item [%s] in group [%s]", item, group);
00455                 ok = FALSE;
00456             }
00457 
00458             if (ok)
00459             {
00460                 fileview_set_sort_order( sort_order );
00461             }
00462         }
00463         else
00464         {
00465             WARNPRINTF("ignore state [%s] item [%s][%s]", state, item, group);
00466         }
00467     }
00468     else if ( strcmp(group, GROUP_ACTIONS) == 0 )
00469     {
00470         if ( strcmp(state, STATE_NORMAL) == 0 )
00471         {
00472             if ( strcmp(item, ITEM_ACTION_DELETE    ) == 0 )
00473             {
00474                 fileview_toggle_delete_mode();
00475             }
00476 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00477             else if ( strcmp(item, ITEM_ACTION_SHORTCUT  ) == 0 )
00478             {
00479                 fileview_create_shortcut();
00480             }
00481 #endif
00482             else
00483             {
00484                 WARNPRINTF("unexpected menu item [%s] in group [%s]", item, group);
00485                 ok = FALSE;
00486             }
00487         }
00488         else
00489         {
00490             WARNPRINTF("ignore state [%s] item [%s][%s]", state, item, group);
00491         }
00492     }
00493     else
00494     {
00495         WARNPRINTF("unexpected menu group [%s]", group);
00496     }
00497     ipc_menu_updates_finished();
00498 }

Here is the caller graph for this function:

void menu_select_sort_order ( const ctb_sort_order_t  sort_order  ) 

Set the specified option in the "Sort" group to selected.

---------------------------------------------------------------------------

Name : menu_select_sort_order

Parameters:
[in] sort_order - currently active sorting order
Returns:
--

--------------------------------------------------------------------------

Definition at line 294 of file ctb/src/menu.c.

References CTB_SORT_BY_AUTHOR, CTB_SORT_BY_DATE_ADDED, CTB_SORT_BY_DATE_READ, CTB_SORT_BY_NAME, CTB_SORT_BY_SIZE, CTB_SORT_BY_TYPE, g_sort_item, GROUP_SORT, ipc_menu_set_item_state(), ITEM_SORT_AUTHOR, ITEM_SORT_DATE_ADDED, ITEM_SORT_DATE_READ, ITEM_SORT_NAME, LOGPRINTF, STATE_NORMAL, and STATE_SELECTED.

Referenced by set_sortorder().

00295 {
00296     LOGPRINTF("entry: sort_order [%d]", sort_order);
00297     g_assert(g_sort_item && g_sort_item->str);
00298 
00299     const char *item_new = NULL;
00300     switch (sort_order)
00301     {
00302         case CTB_SORT_BY_NAME:
00303             item_new = ITEM_SORT_NAME;
00304             break;
00305 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00306         case CTB_SORT_BY_TYPE:
00307             item_new = ITEM_SORT_TYPE;
00308             break;
00309         case CTB_SORT_BY_SIZE:
00310             item_new = ITEM_SORT_SIZE;
00311             break;
00312 #endif
00313         case CTB_SORT_BY_DATE_ADDED:
00314             item_new = ITEM_SORT_DATE_ADDED;
00315             break;
00316         case CTB_SORT_BY_DATE_READ:
00317             item_new =  ITEM_SORT_DATE_READ;
00318             break;
00319         case CTB_SORT_BY_AUTHOR:
00320             item_new = ITEM_SORT_AUTHOR;
00321             break;
00322         default:
00323             g_assert(0);
00324     }
00325 
00326     if ( strcmp(g_sort_item->str, item_new) != 0 )
00327     {
00328         if ( g_sort_item->str[0] )
00329         {
00330             ipc_menu_set_item_state ( g_sort_item->str, GROUP_SORT, STATE_NORMAL   );
00331         }
00332         ipc_menu_set_item_state ( item_new, GROUP_SORT, STATE_SELECTED );
00333 
00334         g_string_assign( g_sort_item, item_new );
00335     }
00336 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_select_view_type ( ctb_viewtypes_t  view_type  ) 

Set the specified option in the "View" group to selected.

---------------------------------------------------------------------------

Name : menu_select_view_type

Parameters:
[in] view_type - currently active view type
Returns:
--

--------------------------------------------------------------------------

Definition at line 250 of file ctb/src/menu.c.

References CTB_CONTENTVIEW, CTB_ICONVIEW, CTB_LISTVIEW, GROUP_VIEWS, ipc_menu_set_item_state(), ITEM_VIEW_CONTENT, ITEM_VIEW_DETAIL, ITEM_VIEW_ICON, LOGPRINTF, STATE_NORMAL, and STATE_SELECTED.

Referenced by fileview_set_view_type(), and main_set_view_type().

00251 {
00252     static const char *item_old = "";
00253     const char *item_new = "";
00254 
00255     LOGPRINTF("entry: view_type [%d]", view_type);
00256 
00257     switch (view_type)
00258     {
00259         case CTB_ICONVIEW:
00260             item_new = ITEM_VIEW_ICON;
00261             break;
00262         case CTB_LISTVIEW:
00263             item_new = ITEM_VIEW_DETAIL;
00264             break;
00265         case CTB_CONTENTVIEW:
00266             item_new = ITEM_VIEW_CONTENT;
00267             break;
00268         default:
00269             ;  // ignore: handled by assert at function entry
00270     }
00271 
00272     if ( strcmp(item_old, item_new) != 0 )
00273     {
00274         if ( item_old[0] != '\0' )
00275         {
00276             ipc_menu_set_item_state ( item_old, GROUP_VIEWS, STATE_NORMAL   );
00277         }
00278         ipc_menu_set_item_state ( item_new, GROUP_VIEWS, STATE_SELECTED );
00279 
00280         item_old = item_new;
00281     }
00282 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_set_category ( const char *  name  ) 

Definition at line 182 of file ctb/src/menu.c.

References g_category, and update_category().

Referenced by filemodel_set_viewmode2().

00183 {
00184     g_free(g_category);
00185     g_category = g_strdup(category);
00186     update_category();
00187 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_set_current_is_media ( const gboolean  is_media  ) 

Specifies whether to show "special" menu for media or not.

---------------------------------------------------------------------------

Name : menu_set_current_is_media

Parameters:
[in] is_desktop - whether or not to show the "media" menu
Returns:
--

--------------------------------------------------------------------------

Definition at line 339 of file ctb/src/menu.c.

References filemodel_get_menu_content(), GROUP_ACTIONS, GROUP_VIEWS, ipc_menu_set_item_state(), ipc_menu_show_menu(), ITEM_VIEW_DETAIL, STATE_DISABLED, and STATE_NORMAL.

Referenced by filemodel_chdir().

00340 {
00341     static gboolean prev_is_media = -1;
00342 
00343     if (prev_is_media != is_media)
00344     {
00345         prev_is_media = is_media;
00346 
00347 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00348         ipc_menu_set_item_state(ITEM_ACTION_SHORTCUT,
00349                                 GROUP_ACTIONS,
00350                                 is_media ? STATE_NORMAL : STATE_DISABLED);
00351         ipc_menu_set_item_state(ITEM_VIEW_DETAIL,
00352                                 GROUP_VIEWS,
00353                                 is_media ? STATE_NORMAL : STATE_DISABLED);
00354 #endif
00355         ipc_menu_show_menu(filemodel_get_menu_content());
00356     }
00357 }

Here is the call graph for this function:

Here is the caller graph for this function:

void menu_set_text (  ) 

Initialise text items in popup menus for content browser.

---------------------------------------------------------------------------

Name : menu_set_text

Parameters:
-- 
Returns:
--

--------------------------------------------------------------------------

Definition at line 191 of file ctb/src/menu.c.

Referenced by main_set_locale(), menu_init(), and on_locale().

00192 {
00193     const char *group;
00194 
00195     // set groups + items
00196     group = GROUP_VIEWS;
00197     ipc_menu_set_group_label( group,                         _("View")              );
00198 #if MACHINE_IS_DR800S || MACHINE_IS_DR800SG || MACHINE_IS_DR800SW
00199     ipc_menu_set_item_label ( ITEM_VIEW_ICON,         group, _("View as Covers")    );
00200 #elif MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00201     ipc_menu_set_item_label ( ITEM_VIEW_ICON,         group, _("View as Thumbnails"));
00202     ipc_menu_set_item_label ( ITEM_VIEW_DETAIL,       group, _("View as Details")   );
00203 #else
00204 #error Unhandled machine type
00205 #endif
00206     ipc_menu_set_item_label ( ITEM_VIEW_CONTENT,      group, _("View as List")      );
00207     //
00208     group = GROUP_SORT;
00209     ipc_menu_set_group_label( group,                         _("Sort by")           );
00210     ipc_menu_set_item_label ( ITEM_SORT_NAME,         group, _("Sort by Title")     );
00211     ipc_menu_set_item_label ( ITEM_SORT_AUTHOR,       group, _("Sort by Author")    );
00212 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00213     ipc_menu_set_item_label ( ITEM_SORT_TYPE,         group, _("Sort by Type")      );
00214     ipc_menu_set_item_label ( ITEM_SORT_SIZE,         group, _("Sort by Size")      );
00215 #endif
00216     ipc_menu_set_item_label ( ITEM_SORT_DATE_ADDED,   group, _("Sort by Date Added")  );
00217     ipc_menu_set_item_label ( ITEM_SORT_DATE_READ,    group, _("Sort by Recently Opened"));
00218     //
00219     group = GROUP_ACTIONS;
00220     ipc_menu_set_group_label( group,                         _("Actions")           );
00221 #if MACHINE_IS_DR1000S || MACHINE_IS_DR1000SW
00222     ipc_menu_set_item_label ( ITEM_ACTION_SHORTCUT,   group, _("Add Shortcut")      );
00223 #endif
00224 
00225     update_viewmode_text();
00226     update_category();
00227 }

Here is the caller graph for this function:

void menu_show (  ) 

Set the context menu to show in the popup menu.

---------------------------------------------------------------------------

Name : menu_show

Parameters:
-- 
Returns:
--

--------------------------------------------------------------------------

Definition at line 230 of file ctb/src/menu.c.

Referenced by menu_init(), menu_on_goto_location(), on_file_open(), and on_window_activated().

Here is the caller graph for this function:

void menu_update_view_mode ( ctb_viewmodes_t  view_mode  ) 

Definition at line 285 of file ctb/src/menu.c.

References filemodel_get_menu_content(), g_viewmode, ipc_menu_show_menu(), and update_viewmode_text().

Referenced by filemodel_set_viewmode().

00286 {
00287     g_viewmode = view_mode;
00288     update_viewmode_text();
00289     ipc_menu_show_menu(filemodel_get_menu_content());
00290 }

Here is the call graph for this function:

Here is the caller graph for this function:

Generated by  doxygen 1.6.2-20100208