1. robot launcher
void VappLauncherSettingProvider::getLauncherIfAny(
VappLauncherId &id,
VfxObject *parentObj) const
{
VappLauncherNativeFactory *factory;
factory = VFX_OBJ_GET_INSTANCE(VappLauncherNativeFactory);
VfxS32 totalNum = factory->getTotalNum();
VFX_ASSERT(totalNum > 0);
VappLauncherId **allId = VappLauncherId::newArray(totalNum, parentObj);
factory->getAllId(allId, totalNum);
id.assignWith(*(allId[2])); //default is 0, 1: fruit launcher, 2: robot launcher. 请改为2
VappLauncherId::deleteArray(allId, totalNum);
}
2. wallpaper的设置,由于需求描述里,home和screenlock的wallpapler设置不一样。所以需要引入一个参数来区别。
请给函数 VappWallpaperSettingProvider::getFallbackWallpaperId增加一个传参,并且它是有默认值的, 其声明如下:
static void getFallbackWallpaperId(
VappWallpaperId &id, // [OUT] the fallback id
VappWallpaperSrcEnum src = VAPP_WALLPAPER_SRC_HOMESCREEN
);
其实现修改成如下形式:
void VappWallpaperSettingProvider::getFallbackWallpaperId(VappWallpaperId &id, VappWallpaperSrcEnum src)
{
// restore to theme wallpaper as default
#if defined(__COSMOS_MMI_PACKAGE__) && defined(MMI_WP_THEME_NUM)
// id.assignWith(VAPP_WALLPAPER_FACTORY_IMAGE,
// MMI_WP_THEME_NUM IMG_ID_WP_THEME_START : IMG_ID_PHNSET_WP_START);
if (src == VAPP_WALLPAPER_SRC_HOMESCREEN)
id.assignWith(VAPP_WALLPAPER_FACTORY_NATIVE, 12); // 12代表桃花的那套wallpaper,这个数字可能有出入,要根据贵司的工程里的资源来决定。
else if (src == VAPP_WALLPAPER_SRC_LOCK)
id.assignWith(VAPP_WALLPAPER_FACTORY_VIDEO, VDO_ID_SYS_MP4_02); //VDO_ID_SYS_MP4_02代表第2张擦玻璃
video wallpaper
#else
id.assignWith(VAPP_WALLPAPER_FACTORY_IMAGE,
IMG_ID_PHNSET_WP_START);
#endif
}
3. 在调用这个函数的地方补上增加的传参
请将函数VappWallpaperSettingProvider::getDefaultWallpaper中调用getFallbackWallpaperId的地方增加传参。如下形式:
VappWallpaperId VappWallpaperSettingProvider::getDefaultWallpaper(
const VappWallpaperSrcEnum src,
VfxObject *parentObj) const
{
MMI_TRACE(TRACE_GROUP_3, TRC_VAPP_WALLPAPER_SETTING_GET_DEFAULT_WALLPAPER);
VfxWString archiveFilename;
getSystemArchiveFilename(src, archiveFilename);
VfxArchive *ar = createArchive(
src,
archiveFilename,
VappArchiveFileSource::SOURCE_MODE_READ,
parentObj);
VappWallpaperId id;
if (!ar)
{
// revert to default setting
getFallbackWallpaperId(id, src); //加src
}
else
{
id.decodeFromArchive(ar);
VFX_OBJ_CLOSE(ar);
// if under USB Mass Storage mode,
// use fallback wallpaper instead of file-based wallpaper
if(m_mscMode)
{
const VfxBool isFileBased = VappWallpaperKit::isFileBasedWallpaper(id);
if(isFileBased)
{
getFallbackWallpaperId(id, src); //加src
}
}
}
return id;
}
在函数VappWallpaperKit::createWallpaperWithoutSetup里调用getFallbackWallpaperId的地方补上传参。
VappWallpaper* VappWallpaperKit::createWallpaperWithoutSetup(VfxObject *parentObj, VappWallpaperSrcEnumsrc)
{
VappWallpaper *wallpaper = NULL;
// Use wallpaper ID to create wallpaper
VappWallpaperSettingProvider *setting = VFX_OBJ_GET_INSTANCE(VappWallpaperSettingProvider);
VappWallpaperKit *wallpaperKit = NULL;
VFX_OBJ_CREATE(wallpaperKit, VappWallpaperKit, parentObj);
wallpaper = wallpaperKit->create(setting->getDefaultWallpaper(src, parentObj), parentObj);
if(NULL == wallpaper)
{
VappWallpaperId fallbackId;
setting->getFallbackWallpaperId(fallbackId, src); //加src
wallpaper = wallpaperKit->create(fallbackId, parentObj);
}
VFX_OBJ_CLOSE(wallpaperKit);
return wallpaper;
}
4. 在文件vapp_wallpaper_setting_method.cpp 和vapp_wallpaper_mav.cpp中包含头文件vapp_wallpaper_def.h
5. screen lock 设置。修改函数VappScreenLockSettingProvider::getScreenLockIfAny里的数据
void VappScreenLockSettingProvider::getScreenLockIfAny(
VappScreenLockId &id,
VfxObject *parentObj) const
{
#if defined(__COSMOS_3D_V10__) && defined(__MMI_VUI_SCREEN_LOCK_STEAM__)
//
// On 3D project, choose the steam screen lock by default.
//
id.assignWith(VAPP_SCREEN_LOCK_SRC_NATIVE, VAPP_SCREEN_LOCK_TYPE_STEAM);
#else
//
// Otherwise, choose the first native screen lock by default.
//
VappScreenLockNativeFactory *factory;
factory = VFX_OBJ_GET_INSTANCE(VappScreenLockNativeFactory);
VfxS32 totalNum = factory->getTotalNum();
VFX_ASSERT(totalNum > 0);
VappScreenLockId **allId = VappScreenLockId::newArray(totalNum, parentObj);
factory->getAllId(allId, totalNum);
id.assignWith(*(allId[3])); //default 0, 改成3表示第4种拉链锁屏。
VappScreenLockId::deleteArray(allId, totalNum);
#endif /* defined(__COSMOS_3D_V10__) && defined(__MMI_VUI_SCREEN_LOCK_STEAM__) */
}
其他的默认设置搭配方式是类似的,同理可修改相对应的地方。
void VappLauncherSettingProvider::getLauncherIfAny(
VappLauncherId &id,
VfxObject *parentObj) const
{
VappLauncherNativeFactory *factory;
factory = VFX_OBJ_GET_INSTANCE(VappLauncherNativeFactory);
VfxS32 totalNum = factory->getTotalNum();
VFX_ASSERT(totalNum > 0);
VappLauncherId **allId = VappLauncherId::newArray(totalNum, parentObj);
factory->getAllId(allId, totalNum);
id.assignWith(*(allId[2])); //default is 0, 1: fruit launcher, 2: robot launcher. 请改为2
VappLauncherId::deleteArray(allId, totalNum);
}
2. wallpaper的设置,由于需求描述里,home和screenlock的wallpapler设置不一样。所以需要引入一个参数来区别。
请给函数 VappWallpaperSettingProvider::getFallbackWallpaperId增加一个传参,并且它是有默认值的, 其声明如下:
static void getFallbackWallpaperId(
VappWallpaperId &id, // [OUT] the fallback id
VappWallpaperSrcEnum src = VAPP_WALLPAPER_SRC_HOMESCREEN
);
其实现修改成如下形式:
void VappWallpaperSettingProvider::getFallbackWallpaperId(VappWallpaperId &id, VappWallpaperSrcEnum src)
{
// restore to theme wallpaper as default
#if defined(__COSMOS_MMI_PACKAGE__) && defined(MMI_WP_THEME_NUM)
// id.assignWith(VAPP_WALLPAPER_FACTORY_IMAGE,
// MMI_WP_THEME_NUM IMG_ID_WP_THEME_START : IMG_ID_PHNSET_WP_START);
if (src == VAPP_WALLPAPER_SRC_HOMESCREEN)
id.assignWith(VAPP_WALLPAPER_FACTORY_NATIVE, 12); // 12代表桃花的那套wallpaper,这个数字可能有出入,要根据贵司的工程里的资源来决定。
else if (src == VAPP_WALLPAPER_SRC_LOCK)
id.assignWith(VAPP_WALLPAPER_FACTORY_VIDEO, VDO_ID_SYS_MP4_02); //VDO_ID_SYS_MP4_02代表第2张擦玻璃
video wallpaper
#else
id.assignWith(VAPP_WALLPAPER_FACTORY_IMAGE,
IMG_ID_PHNSET_WP_START);
#endif
}
3. 在调用这个函数的地方补上增加的传参
请将函数VappWallpaperSettingProvider::getDefaultWallpaper中调用getFallbackWallpaperId的地方增加传参。如下形式:
VappWallpaperId VappWallpaperSettingProvider::getDefaultWallpaper(
const VappWallpaperSrcEnum src,
VfxObject *parentObj) const
{
MMI_TRACE(TRACE_GROUP_3, TRC_VAPP_WALLPAPER_SETTING_GET_DEFAULT_WALLPAPER);
VfxWString archiveFilename;
getSystemArchiveFilename(src, archiveFilename);
VfxArchive *ar = createArchive(
src,
archiveFilename,
VappArchiveFileSource::SOURCE_MODE_READ,
parentObj);
VappWallpaperId id;
if (!ar)
{
// revert to default setting
getFallbackWallpaperId(id, src); //加src
}
else
{
id.decodeFromArchive(ar);
VFX_OBJ_CLOSE(ar);
// if under USB Mass Storage mode,
// use fallback wallpaper instead of file-based wallpaper
if(m_mscMode)
{
const VfxBool isFileBased = VappWallpaperKit::isFileBasedWallpaper(id);
if(isFileBased)
{
getFallbackWallpaperId(id, src); //加src
}
}
}
return id;
}
在函数VappWallpaperKit::createWallpaperWithoutSetup里调用getFallbackWallpaperId的地方补上传参。
VappWallpaper* VappWallpaperKit::createWallpaperWithoutSetup(VfxObject *parentObj, VappWallpaperSrcEnumsrc)
{
VappWallpaper *wallpaper = NULL;
// Use wallpaper ID to create wallpaper
VappWallpaperSettingProvider *setting = VFX_OBJ_GET_INSTANCE(VappWallpaperSettingProvider);
VappWallpaperKit *wallpaperKit = NULL;
VFX_OBJ_CREATE(wallpaperKit, VappWallpaperKit, parentObj);
wallpaper = wallpaperKit->create(setting->getDefaultWallpaper(src, parentObj), parentObj);
if(NULL == wallpaper)
{
VappWallpaperId fallbackId;
setting->getFallbackWallpaperId(fallbackId, src); //加src
wallpaper = wallpaperKit->create(fallbackId, parentObj);
}
VFX_OBJ_CLOSE(wallpaperKit);
return wallpaper;
}
4. 在文件vapp_wallpaper_setting_method.cpp 和vapp_wallpaper_mav.cpp中包含头文件vapp_wallpaper_def.h
5. screen lock 设置。修改函数VappScreenLockSettingProvider::getScreenLockIfAny里的数据
void VappScreenLockSettingProvider::getScreenLockIfAny(
VappScreenLockId &id,
VfxObject *parentObj) const
{
#if defined(__COSMOS_3D_V10__) && defined(__MMI_VUI_SCREEN_LOCK_STEAM__)
//
// On 3D project, choose the steam screen lock by default.
//
id.assignWith(VAPP_SCREEN_LOCK_SRC_NATIVE, VAPP_SCREEN_LOCK_TYPE_STEAM);
#else
//
// Otherwise, choose the first native screen lock by default.
//
VappScreenLockNativeFactory *factory;
factory = VFX_OBJ_GET_INSTANCE(VappScreenLockNativeFactory);
VfxS32 totalNum = factory->getTotalNum();
VFX_ASSERT(totalNum > 0);
VappScreenLockId **allId = VappScreenLockId::newArray(totalNum, parentObj);
factory->getAllId(allId, totalNum);
id.assignWith(*(allId[3])); //default 0, 改成3表示第4种拉链锁屏。
VappScreenLockId::deleteArray(allId, totalNum);
#endif /* defined(__COSMOS_3D_V10__) && defined(__MMI_VUI_SCREEN_LOCK_STEAM__) */
}
其他的默认设置搭配方式是类似的,同理可修改相对应的地方。