Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[mms-engine] GSettings backend for per-SIM settings
  • Loading branch information
monich committed May 13, 2014
1 parent 1a808b9 commit b2c043e
Show file tree
Hide file tree
Showing 13 changed files with 519 additions and 10 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -10,5 +10,6 @@ mms-lib/test/mms_lib_test.opt
mms-ofono/mms-ofono.pro.user
mms-handler-dbus/mms-handler-dbus.pro.user
mms-handler-dbus/test/mms_handler_dbus_server/test_mms_handler_dbus_server.pro.user
mms-settings-dconf/mms-settings-dconf.pro.user
mms-dump/mms_dump.ncb
mms-dump/mms_dump.opt
40 changes: 34 additions & 6 deletions mms-engine/Makefile
Expand Up @@ -4,6 +4,7 @@
.PHONY: mms_lib_debug_lib mms_lib_release_lib
.PHONY: mms_ofono_debug_lib mms_ofono_release_lib
.PHONY: mms_handler_debug_lib mms_handler_release_lib
.PHONY: mms_settings_debug_lib mms_settings_release_lib

#
# Pull in mms-lib configuration
Expand All @@ -15,7 +16,7 @@ include ../mms-lib/Config.mak
# Required packages
#

PKGS = gio-unix-2.0 gio-2.0 glib-2.0
PKGS = gio-unix-2.0 gio-2.0
LIB_PKGS = libwspcodec libsoup-2.4 $(RESIZE_PKG) $(PKGS)

#
Expand Down Expand Up @@ -72,6 +73,16 @@ MMS_HANDLER_BUILD_DIR = $(MMS_HANDLER_DIR)/build
MMS_HANDLER_DEBUG_LIB = $(MMS_HANDLER_BUILD_DIR)/debug/$(MMS_HANDLER_LIB)
MMS_HANDLER_RELEASE_LIB = $(MMS_HANDLER_BUILD_DIR)/release/$(MMS_HANDLER_LIB)

#
# mms-settings-dconf
#

MMS_SETTINGS_LIB = libmms-settings-dconf.a
MMS_SETTINGS_DIR = ../mms-settings-dconf
MMS_SETTINGS_BUILD_DIR = $(MMS_SETTINGS_DIR)/build
MMS_SETTINGS_DEBUG_LIB = $(MMS_SETTINGS_BUILD_DIR)/debug/$(MMS_SETTINGS_LIB)
MMS_SETTINGS_RELEASE_LIB = $(MMS_SETTINGS_BUILD_DIR)/release/$(MMS_SETTINGS_LIB)

#
# Tools and flags
#
Expand All @@ -85,7 +96,7 @@ RELEASE_DEFS =
WARN = -Wall
CFLAGS = -fPIC $(shell pkg-config --cflags $(PKGS)) -I. -I$(GEN_DIR) \
-I$(MMS_LIB_DIR)/include -I$(MMS_OFONO_DIR)/include \
-I$(MMS_HANDLER_DIR)/include -MMD
-I$(MMS_HANDLER_DIR)/include -I$(MMS_SETTINGS_DIR)/include -MMD

ifndef KEEP_SYMBOLS
KEEP_SYMBOLS = 0
Expand All @@ -107,11 +118,13 @@ LIBS = $(shell pkg-config --libs $(LIB_PKGS)) -lmagic -ljpeg $(RESIZE_LIBS)
DEBUG_LIBS = \
$(MMS_OFONO_DEBUG_LIB) \
$(MMS_HANDLER_DEBUG_LIB) \
$(MMS_SETTINGS_DEBUG_LIB) \
$(MMS_LIB_DEBUG_LIB) \
$(LIBS)
RELEASE_LIBS = \
$(MMS_OFONO_RELEASE_LIB) \
$(MMS_HANDLER_RELEASE_LIB) \
$(MMS_SETTINGS_RELEASE_LIB) \
$(MMS_LIB_RELEASE_LIB) \
$(LIBS)

Expand All @@ -135,19 +148,23 @@ GEN_FILES = $(GEN_SRC:%=$(GEN_DIR)/%)
DEBUG_DEPS = \
mms_lib_debug_lib \
mms_ofono_debug_lib \
mms_handler_debug_lib
mms_handler_debug_lib \
mms_settings_debug_lib
RELEASE_DEPS = \
mms_lib_release_lib \
mms_ofono_release_lib \
mms_handler_release_lib
mms_handler_release_lib \
mms_settings_release_lib
DEBUG_EXE_DEPS = \
$(MMS_LIB_DEBUG_LIB) \
$(MMS_OFONO_DEBUG_LIB) \
$(MMS_HANDLER_DEBUG_LIB)
$(MMS_HANDLER_DEBUG_LIB) \
$(MMS_SETTINGS_DEBUG_LIB)
RELEASE_EXE_DEPS = \
$(MMS_LIB_RELEASE_LIB) \
$(MMS_OFONO_RELEASE_LIB) \
$(MMS_HANDLER_RELEASE_LIB)
$(MMS_HANDLER_RELEASE_LIB) \
$(MMS_SETTINGS_RELEASE_LIB)
DEPS = $(DEBUG_OBJS:%.o=%.d) $(RELEASE_OBJS:%.o=%.d)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(DEPS)),)
Expand Down Expand Up @@ -178,6 +195,7 @@ cleaner: clean
make -C $(MMS_LIB_DIR) $(SUBMAKE_OPTS) clean
make -C $(MMS_OFONO_DIR) $(SUBMAKE_OPTS) clean
make -C $(MMS_HANDLER_DIR) $(SUBMAKE_OPTS) clean
make -C $(MMS_SETTINGS_DIR) $(SUBMAKE_OPTS) clean

$(GEN_DIR):
mkdir -p $@
Expand Down Expand Up @@ -206,6 +224,12 @@ mms_handler_debug_lib:
mms_handler_release_lib:
make -C $(MMS_HANDLER_DIR) $(SUBMAKE_OPTS) release

mms_settings_debug_lib:
make -C $(MMS_SETTINGS_DIR) $(SUBMAKE_OPTS) debug

mms_settings_release_lib:
make -C $(MMS_SETTINGS_DIR) $(SUBMAKE_OPTS) release

$(MMS_LIB_DEBUG_LIB): mms_lib_debug_lib

$(MMS_LIB_RELEASE_LIB): mms_lib_release_lib
Expand All @@ -218,6 +242,10 @@ $(MMS_HANDLER_DEBUG_LIB): mms_handler_debug_lib

$(MMS_HANDLER_RELEASE_LIB): mms_handler_release_lib

$(MMS_SETTINGS_DEBUG_LIB): mms_settings_debug_lib

$(MMS_SETTINGS_RELEASE_LIB): mms_settings_release_lib

$(GEN_DIR)/%.c: $(SPEC_DIR)/%.xml
gdbus-codegen --generate-c-code $(@:%.c=%) $<

Expand Down
4 changes: 4 additions & 0 deletions mms-engine/mms-engine.pro
Expand Up @@ -5,9 +5,11 @@ DBUS_INTERFACE_DIR = $$_PRO_FILE_PWD_
MMS_LIB_DIR = $$_PRO_FILE_PWD_/../mms-lib
MMS_OFONO_DIR = $$_PRO_FILE_PWD_/../mms-ofono
MMS_HANDLER_DIR = $$_PRO_FILE_PWD_/../mms-handler-dbus
MMS_SETTINGS_DIR = $$_PRO_FILE_PWD_/../mms-settings-dconf
INCLUDEPATH += $$MMS_OFONO_DIR/include
INCLUDEPATH += $$MMS_LIB_DIR/include
INCLUDEPATH += $$MMS_HANDLER_DIR/include
INCLUDEPATH += $$MMS_SETTINGS_DIR/include
QMAKE_CFLAGS += -Wno-unused

include(../mms-lib/mms-lib-config.pri)
Expand All @@ -34,11 +36,13 @@ CONFIG(debug, debug|release) {
LIBS += $$MMS_OFONO_DIR/build/debug/libmms-ofono.a
LIBS += $$MMS_HANDLER_DIR/build/debug/libmms-handler-dbus.a
LIBS += $$MMS_LIB_DIR/build/debug/libmms-lib.a
LIBS += $$MMS_SETTINGS_DIR/build/debug/libmms-settings-dconf.a
} else {
DESTDIR = $$_PRO_FILE_PWD_/build/release
LIBS += $$MMS_OFONO_DIR/build/release/libmms-ofono.a
LIBS += $$MMS_HANDLER_DIR/build/release/libmms-handler-dbus.a
LIBS += $$MMS_LIB_DIR/build/release/libmms-lib.a
LIBS += $$MMS_SETTINGS_DIR/build/release/libmms-settings-dconf.a
}

LIBS += -lmagic -ljpeg
Expand Down
6 changes: 5 additions & 1 deletion mms-engine/mms_engine.c
Expand Up @@ -18,6 +18,7 @@
#include "mms_lib_util.h"
#include "mms_ofono_connman.h"
#include "mms_handler_dbus.h"
#include "mms_settings_dconf.h"
#include "mms_log.h"

/* Generated code */
Expand Down Expand Up @@ -418,17 +419,20 @@ mms_engine_new(
if (cm) {
MMSEngine* mms = g_object_new(MMS_TYPE_ENGINE, NULL);
MMSHandler* handler = mms_handler_dbus_new();
MMSSettings* settings = mms_settings_default_new(config);
MMSSettings* settings = mms_settings_dconf_new(config);

if (flags & MMS_ENGINE_FLAG_OVERRIDE_USER_AGENT) {
settings->flags |= MMS_SETTINGS_FLAG_OVERRIDE_USER_AGENT;
g_free(settings->sim_defaults.user_agent);
settings->sim_defaults.data.user_agent =
settings->sim_defaults.user_agent = g_strdup(override->user_agent);
}
if (flags & MMS_ENGINE_FLAG_OVERRIDE_SIZE_LIMIT) {
settings->flags |= MMS_SETTINGS_FLAG_OVERRIDE_SIZE_LIMIT;
settings->sim_defaults.data.size_limit = override->size_limit;
}
if (flags & MMS_ENGINE_FLAG_OVERRIDE_MAX_PIXELS) {
settings->flags |= MMS_SETTINGS_FLAG_OVERRIDE_MAX_PIXELS;
settings->sim_defaults.data.max_pixels = override->max_pixels;
}

Expand Down
1 change: 1 addition & 0 deletions mms-lib/include/mms_lib_log.h
Expand Up @@ -19,6 +19,7 @@

#define MMS_LIB_LOG_MODULES(log) \
log(mms_dispatcher_log)\
log(mms_settings_log)\
log(mms_handler_log)\
log(mms_message_log)\
log(mms_attachment_log)\
Expand Down
14 changes: 14 additions & 0 deletions mms-lib/include/mms_settings.h
Expand Up @@ -45,6 +45,12 @@ struct mms_settings {
GObject object;
const MMSConfig* config;
MMSSettingsSimDataCopy sim_defaults;
unsigned int flags;

#define MMS_SETTINGS_FLAG_OVERRIDE_USER_AGENT (0x01)
#define MMS_SETTINGS_FLAG_OVERRIDE_SIZE_LIMIT (0x02)
#define MMS_SETTINGS_FLAG_OVERRIDE_MAX_PIXELS (0x04)
#define MMS_SETTINGS_FLAG_OVERRIDE_ALLOW_DR (0x08)
};

/* Class */
Expand Down Expand Up @@ -100,6 +106,14 @@ void
mms_settings_sim_data_copy_free(
MMSSettingsSimDataCopy* data);

void
mms_settings_sim_data_copy(
MMSSettingsSimDataCopy* dest,
const MMSSettingsSimData* src);

#define mms_settings_sim_data_reset(data) \
mms_settings_sim_data_copy(data,NULL)

#endif /* JOLLA_MMS_SETTINGS_H */

/*
Expand Down
5 changes: 2 additions & 3 deletions mms-lib/src/mms_settings.c
Expand Up @@ -46,7 +46,6 @@ mms_settings_sim_data_default(
data->allow_dr = MMS_SETTINGS_DEFAULT_ALLOW_DR;
}

static
void
mms_settings_sim_data_copy(
MMSSettingsSimDataCopy* dest,
Expand Down Expand Up @@ -79,7 +78,7 @@ mms_settings_sim_data_copy_free(
MMSSettingsSimDataCopy* copy)
{
if (copy) {
g_free(copy->user_agent);
mms_settings_sim_data_reset(copy);
g_free(copy);
}
}
Expand Down Expand Up @@ -130,7 +129,7 @@ mms_settings_finalize(
GObject* object)
{
MMSSettings* settings = MMS_SETTINGS(object);
g_free(settings->sim_defaults.user_agent);
mms_settings_sim_data_reset(&settings->sim_defaults);
G_OBJECT_CLASS(mms_settings_parent_class)->finalize(object);
}

Expand Down
107 changes: 107 additions & 0 deletions mms-settings-dconf/Makefile
@@ -0,0 +1,107 @@
# -*- Mode: makefile-gmake -*-

.PHONY: clean all debug release

# Required packages
PKGS = gio-2.0

#
# Default target
#

all: debug release

#
# Sources
#

SRC = mms_settings_dconf.c

#
# Directories
#

SRC_DIR = src
INCLUDE_DIR = include
BUILD_DIR = build
MMS_LIB_INCLUDE = ../mms-lib/include
DEBUG_BUILD_DIR = $(BUILD_DIR)/debug
RELEASE_BUILD_DIR = $(BUILD_DIR)/release

#
# Tools and flags
#

CC = $(CROSS_COMPILE)gcc
LD = $(CC)
ARFLAGS = rc
DEBUG_FLAGS = -g
RELEASE_FLAGS = -O2
DEBUG_DEFS = -DDEBUG
RELEASE_DEFS =
WARNINGS = -Wall
INCLUDES = -I$(SRC_DIR) -I$(INCLUDE_DIR) -I$(MMS_LIB_INCLUDE)
CFLAGS += $(WARNINGS) $(INCLUDES) $(shell pkg-config --cflags $(PKGS)) \
-fPIC -MMD

ifndef KEEP_SYMBOLS
KEEP_SYMBOLS = 0
endif

ifneq ($(KEEP_SYMBOLS),0)
RELEASE_FLAGS += -g
endif

DEBUG_CFLAGS = $(DEBUG_FLAGS) $(DEBUG_DEFS) $(CFLAGS)
RELEASE_CFLAGS = $(RELEASE_FLAGS) $(RELEASE_DEFS) $(CFLAGS)

#
# Files
#


DEBUG_OBJS = $(SRC:%.c=$(DEBUG_BUILD_DIR)/%.o)
RELEASE_OBJS = $(SRC:%.c=$(RELEASE_BUILD_DIR)/%.o)

#
# Dependencies
#

DEPS = $(DEBUG_OBJS:%.o=%.d) $(RELEASE_OBJS:%.o=%.d)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(DEPS)),)
-include $(DEPS)
endif
endif

#
# Rules
#
LIB = libmms-settings-dconf.a
DEBUG_LIB = $(DEBUG_BUILD_DIR)/$(LIB)
RELEASE_LIB = $(RELEASE_BUILD_DIR)/$(LIB)

debug: $(DEBUG_LIB)

release: $(RELEASE_LIB)

clean:
rm -fr $(BUILD_DIR) *~ $(SRC_DIR)/*~ $(INCLUDE_DIR)/*~

$(DEBUG_BUILD_DIR):
mkdir -p $@

$(RELEASE_BUILD_DIR):
mkdir -p $@

$(DEBUG_BUILD_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) -c $(WARN) $(DEBUG_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@

$(RELEASE_BUILD_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) -c $(WARN) $(RELEASE_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@

$(DEBUG_LIB): $(DEBUG_BUILD_DIR) $(DEBUG_OBJS)
$(AR) $(ARFLAGS) $@ $(DEBUG_OBJS)

$(RELEASE_LIB): $(RELEASE_BUILD_DIR) $(RELEASE_OBJS)
$(AR) $(ARFLAGS) $@ $(RELEASE_OBJS)
32 changes: 32 additions & 0 deletions mms-settings-dconf/include/mms_settings_dconf.h
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2014 Jolla Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/

#ifndef JOLLA_MMS_SETTINGS_DCONF_H
#define JOLLA_MMS_SETTINGS_DCONF_H

#include "mms_settings.h"

MMSSettings*
mms_settings_dconf_new(
const MMSConfig* config);

#endif /* JOLLA_MMS_SETTINGS_DCONF_H */

/*
* Local Variables:
* mode: C
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/

0 comments on commit b2c043e

Please sign in to comment.