maemo hildon-desktop(2)

 

 

maemo hildon-desktop(2)

老版本的源码地址  http://repository.maemo.org/

首先看一下 desktop 类型

struct _HDDesktopPrivate
{
  gchar                 *config_file;
  GnomeVFSMonitorHandle *system_conf_monitor;
  GnomeVFSMonitorHandle *user_conf_monitor;
  GHashTable            *containers;
  GHashTable            *notifications;
  GQueue                *dialog_queue;
  GObject               *pm;
  GtkTreeModel          *nm;
#ifdef HAVE_LIBOSSO
  osso_context_t  *osso_context;
#endif
#ifdef HAVE_SAFE_MODE
  gboolean               safe_mode;
#endif
};

 

类初试化

static void
hd_desktop_class_init (HDDesktopClass *class)
{
  GObjectClass *g_object_class = (GObjectClass *) class;
 
  g_object_class->finalize = hd_desktop_finalize;
 
  g_type_class_add_private (g_object_class, sizeof (HDDesktopPrivate));
}

设置了资源释放函数


实例初试化

hd_desktop_init

#define HD_DESKTOP_CONFIG_FILE         "desktop.conf"
#define HD_DESKTOP_CONFIG_USER_PATH    ".osso/hildon-desktop/"

首先从用户自定义的配置文件中读取配置信息

如下例

[Tasknavigator]
X-Type=panel_box
X-Position-X=0
X-Position-Y=0
X-Size-Width=165
X-Size-Height=40
X-Orientation=top
X-UI-Policy=libtasknavigatorpolicy.so
X-Is-Ordered=1
X-Config-File=tasknavigator.conf
X-Plugin-Dir=/usr/share/applications/hildon-navigator

[Home]
X-Type=home
X-Is-Ordered=0
X-Load-New-Plugins=1
X-Config-File=home.conf
X-Plugin-Dir=/usr/share/applications/hildon-home

[Statusbar]
X-Type=panel_expandable
X-Position-X=400
X-Position-Y=0
X-Size-Width=320
X-Size-Height=40
X-Orientation=top
X-UI-Policy=libstatusbarpolicy.so
X-Is-Ordered=1
X-Load-New-Plugins=1
X-Config-File=statusbar.conf
X-Plugin-Dir=/usr/share/applications/hildon-status-bar


接着查看环境变量中是否有 HILDON_DESKTOP_CONFIG_FILE 存在

如果有还要从这个环境变量中读取值

如果支持osso,还需要初试化osso_context

创建了插件管理类

在插件管理类中又创建了一个加载管理类


接着创建通知管理类

设置了一些信号处理函数

启动过程中加载容器是一个很重要的步骤。

hd_desktop_load_containers

加载过程中需要重新解析配置文件

解析
 
X-Is-Ordered

X-Load-New-Plugins

X-UI-Policy

如果有UI策略,还需要创建一个UI策略对象

X-Config-File

有3中典型的插件

1  navigator

2 statusbar

3 homeItem

其中homeitem和statusbar 各种扩展的一种类型,以so文件的方式

被hildon-desktop加载,而navigator直接调用的可执行文件

举个例子

可以扩充Home Item ,实现一组菜单栏显示

你可能感兴趣的:(object,File,Class,Maemo,notifications,containers)