mime/screenedge:: lazy load gsettings.

Change-Id: I37bcf419da514f8302cdc84dcdfdc716f658a4fc
This commit is contained in:
liliqiang 2015-06-03 14:40:54 +08:00
parent 845fcf87aa
commit a03ee07958
5 changed files with 39 additions and 18 deletions

View File

@ -10,6 +10,7 @@ import (
"pkg.linuxdeepin.com/lib/glib-2.0"
dutils "pkg.linuxdeepin.com/lib/utils"
"strings"
"sync"
)
type DefaultApps struct {
@ -39,11 +40,21 @@ const (
var (
_TerminalBlacklist = []string{"guake"}
_TerminalGSettings = gio.NewSettings(_TERMINAL_SCHEMA)
mimeWatcher *fsnotify.Watcher
)
var _TerminalGSettings = func() func() *gio.Settings {
var terminalGSettings *gio.Settings
var initTerminalGSettings sync.Once
return func() *gio.Settings {
initTerminalGSettings.Do(func() {
terminalGSettings = gio.NewSettings(_TERMINAL_SCHEMA)
})
return terminalGSettings
}
}()
func NewDAppInfo(gioApp *gio.AppInfo) AppInfo {
dappInfo := AppInfo{}
if gioApp == nil {
@ -87,7 +98,7 @@ func (dapp *DefaultApps) AppsListViaType(typeName string) []AppInfo {
func (dapp *DefaultApps) DefaultAppViaType(typeName string) AppInfo {
if typeName == "terminal" {
exec := _TerminalGSettings.GetString("exec")
exec := _TerminalGSettings().GetString("exec")
terminalApps := dapp.AppsListViaType(typeName)
for _, v := range terminalApps {
@ -110,7 +121,7 @@ func (dapp *DefaultApps) SetDefaultAppViaType(typeName, appID string) bool {
return false
}
if _TerminalGSettings.SetString("exec", appInfo.Exec) {
if _TerminalGSettings().SetString("exec", appInfo.Exec) {
gio.SettingsSync()
return true
}

View File

@ -55,7 +55,7 @@ func (dapp *DefaultApps) Reset() bool {
homeDir+"/"+MIME_CACHE_FILE, err)
return false
}
_TerminalGSettings.Reset("exec")
_TerminalGSettings().Reset("exec")
return true
}

View File

@ -32,15 +32,25 @@ import (
)
var (
dspObj *libdsp.Display
areaObj *libarea.XMouseArea
launchObj *launcher.Launcher
logger = log.NewLogger(ZONE_DEST)
zoneSettings = gio.NewSettings("com.deepin.dde.zone")
dspObj *libdsp.Display
areaObj *libarea.XMouseArea
launchObj *launcher.Launcher
logger = log.NewLogger(ZONE_DEST)
mutex = new(sync.Mutex)
edgeActionMap = make(map[string]string)
)
var zoneSettings = func() func() *gio.Settings {
var initZoneSettings sync.Once
var _zoneSettings *gio.Settings
return func() *gio.Settings {
initZoneSettings.Do(func() {
_zoneSettings = gio.NewSettings("com.deepin.dde.zone")
})
return _zoneSettings
}
}()
func (op *Manager) EnableZoneDetected(enable bool) {
if enable {
@ -58,7 +68,7 @@ func (op *Manager) SetTopLeft(value string) {
}
func (op *Manager) TopLeftAction() string {
return zoneSettings.GetString("left-up")
return zoneSettings().GetString("left-up")
}
func (op *Manager) SetBottomLeft(value string) {
@ -68,7 +78,7 @@ func (op *Manager) SetBottomLeft(value string) {
}
func (op *Manager) BottomLeftAction() string {
return zoneSettings.GetString("left-down")
return zoneSettings().GetString("left-down")
}
func (op *Manager) SetTopRight(value string) {
@ -78,7 +88,7 @@ func (op *Manager) SetTopRight(value string) {
}
func (op *Manager) TopRightAction() string {
return zoneSettings.GetString("right-up")
return zoneSettings().GetString("right-up")
}
func (op *Manager) SetBottomRight(value string) {
@ -88,7 +98,7 @@ func (op *Manager) SetBottomRight(value string) {
}
func (op *Manager) BottomRightAction() string {
return zoneSettings.GetString("right-down")
return zoneSettings().GetString("right-down")
}
func initDBusIFC() error {

View File

@ -43,7 +43,7 @@ func isAppInWhiteList(pid uint32) bool {
return false
}
whiteList := zoneSettings.GetStrv("white-list")
whiteList := zoneSettings().GetStrv("white-list")
for _, v := range whiteList {
if strings.Contains(string(contents), v) {
return true
@ -73,7 +73,7 @@ func isAppInBlackList() bool {
return false
}
blackList := zoneSettings.GetStrv("black-list")
blackList := zoneSettings().GetStrv("black-list")
for _, target := range blackList {
if strings.Contains(string(contents), target) {
return true

View File

@ -148,12 +148,12 @@ func isInArea(x, y int32, area areaRange) bool {
}
func getEdgeForCommand(cmd string) string {
keys := zoneSettings.ListKeys()
keys := zoneSettings().ListKeys()
for _, key := range keys {
switch key {
case "left-up", "left-down", "right-up", "right-down":
v := zoneSettings.GetString(key)
v := zoneSettings().GetString(key)
if v == cmd {
return key
}