Added a plug-in to lock and unlock the screen automatically

This commit is contained in:
Pierre Pronchery 2011-08-17 00:34:28 +00:00
parent 4df6693d36
commit d2d122f632
7 changed files with 128 additions and 20 deletions

View File

@ -99,6 +99,7 @@ dist:
$(PACKAGE)-$(VERSION)/src/plugins/debug.c \
$(PACKAGE)-$(VERSION)/src/plugins/engineering.c \
$(PACKAGE)-$(VERSION)/src/plugins/gprs.c \
$(PACKAGE)-$(VERSION)/src/plugins/locker.c \
$(PACKAGE)-$(VERSION)/src/plugins/openmoko.c \
$(PACKAGE)-$(VERSION)/src/plugins/oss.c \
$(PACKAGE)-$(VERSION)/src/plugins/panel.c \

View File

@ -47,7 +47,6 @@ typedef enum _PhoneEncoding
typedef enum _PhoneEventType
{
PHONE_EVENT_TYPE_CALLING, /* char const * number */
PHONE_EVENT_TYPE_KEY_TONE,
PHONE_EVENT_TYPE_MODEM_EVENT, /* ModemEvent * event */
PHONE_EVENT_TYPE_NOTIFICATION_OFF,
@ -74,13 +73,6 @@ typedef union _PhoneEvent
{
PhoneEventType type;
/* PHONE_EVENT_TYPE_CALLING */
struct
{
PhoneEventType type;
char const * number;
} calling;
/* PHONE_EVENT_TYPE_MODEM_EVENT */
struct
{

View File

@ -2955,7 +2955,6 @@ void phone_write_send(Phone * phone)
/* phone_call_number */
static int _phone_call_number(Phone * phone, char const * number)
{
PhoneEvent event;
GtkTreeIter iter;
time_t date;
struct tm t;
@ -2963,11 +2962,6 @@ static int _phone_call_number(Phone * phone, char const * number)
if(number == NULL)
return -1;
memset(&event, 0, sizeof(event));
event.type = PHONE_EVENT_TYPE_CALLING;
event.calling.number = number;
if(phone_event(phone, &event) != 0)
return -1;
modem_request_type(phone->modem, MODEM_REQUEST_CALL,
MODEM_CALL_TYPE_VOICE, number, 0);
phone_show_call(phone, TRUE, PHONE_CALL_OUTGOING, "", number);

View File

@ -1,5 +1,5 @@
SUBDIRS = 16x16 24x24 32x32 48x48
TARGETS = blacklist.so debug.so engineering.so gprs.so openmoko.so oss.so panel.so profiles.so smscrypt.so
TARGETS = blacklist.so debug.so engineering.so gprs.so locker.so openmoko.so oss.so panel.so profiles.so smscrypt.so
PREFIX = /usr/local
DESTDIR =
LIBDIR = $(PREFIX)/lib
@ -50,6 +50,13 @@ gprs_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
gprs.so: $(gprs_OBJS)
$(LD) -o gprs.so $(gprs_OBJS) $(gprs_LDFLAGS)
locker_OBJS = locker.o
locker_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
locker_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
locker.so: $(locker_OBJS)
$(LD) -o locker.so $(locker_OBJS) $(locker_LDFLAGS)
openmoko_OBJS = openmoko.o
openmoko_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I../modems $(CFLAGSF) $(CFLAGS) `pkg-config --cflags alsa`
openmoko_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs alsa`
@ -94,9 +101,12 @@ debug.o: debug.c ../../include/Phone.h
engineering.o: engineering.c ../../include/Phone.h
$(CC) $(engineering_CFLAGS) -c engineering.c
gprs.o: gprs.c
gprs.o: gprs.c ../../include/Phone.h
$(CC) $(gprs_CFLAGS) -c gprs.c
locker.o: locker.c ../../include/Phone.h
$(CC) $(locker_CFLAGS) -c locker.c
openmoko.o: openmoko.c ../../include/Phone.h
$(CC) $(openmoko_CFLAGS) -c openmoko.c
@ -114,11 +124,11 @@ smscrypt.o: smscrypt.c ../../include/Phone.h
clean:
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done
$(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS)
$(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(locker_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS)
distclean:
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done
$(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS)
$(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(locker_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS)
$(RM) -- $(TARGETS)
install: $(TARGETS)
@ -132,6 +142,8 @@ install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/plugins
$(INSTALL) -m 0644 -- gprs.so $(DESTDIR)$(LIBDIR)/Phone/plugins/gprs.so
$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/plugins
$(INSTALL) -m 0644 -- locker.so $(DESTDIR)$(LIBDIR)/Phone/plugins/locker.so
$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/plugins
$(INSTALL) -m 0644 -- openmoko.so $(DESTDIR)$(LIBDIR)/Phone/plugins/openmoko.so
$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/plugins
$(INSTALL) -m 0644 -- panel.so $(DESTDIR)$(LIBDIR)/Phone/plugins/panel.so
@ -146,6 +158,7 @@ uninstall:
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/debug.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/engineering.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/gprs.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/locker.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/openmoko.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/panel.so
$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/plugins/profiles.so

View File

@ -59,7 +59,6 @@ static struct
static DebugPhoneEvents _debug_phone_events[] =
{
{ PHONE_EVENT_TYPE_CALLING, "CALLING" },
{ PHONE_EVENT_TYPE_KEY_TONE, "KEY_TONE" },
{ PHONE_EVENT_TYPE_MODEM_EVENT, "MODEM_EVENT" },
{ PHONE_EVENT_TYPE_NOTIFICATION_OFF, "NOTIFICATION_OFF" },

98
src/plugins/locker.c Normal file
View File

@ -0,0 +1,98 @@
/* $Id$ */
/* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Phone */
/* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <string.h>
#include <Desktop/Locker.h>
#include "Phone.h"
/* Locker */
/* private */
/* prototypes */
/* plug-in */
static int _locker_event(PhonePlugin * plugin, PhoneEvent * event);
/* useful */
static int _locker_action(LockerAction action);
/* public */
/* variables */
PhonePlugin plugin =
{
NULL,
"Locker",
NULL,
NULL,
NULL,
_locker_event,
NULL,
NULL
};
/* private */
/* functions */
/* locker_event */
static int _event_modem(ModemEvent * event);
static int _locker_event(PhonePlugin * plugin, PhoneEvent * event)
{
switch(event->type)
{
case PHONE_EVENT_TYPE_MODEM_EVENT:
return _event_modem(event->modem_event.event);
case PHONE_EVENT_TYPE_SUSPEND:
return _locker_action(LOCKER_ACTION_LOCK);
default: /* not relevant */
break;
}
return 0;
}
static int _event_modem(ModemEvent * event)
{
switch(event->call.direction)
{
case MODEM_CALL_DIRECTION_INCOMING:
return _locker_action(LOCKER_ACTION_UNLOCK);
default: /* not relevant */
break;
}
return 0;
}
/* useful */
/* locker_action */
static int _locker_action(LockerAction action)
{
GdkEvent event;
GdkEventClient * client = &event.client;
memset(&event, 0, sizeof(event));
client->type = GDK_CLIENT_EVENT;
client->window = NULL;
client->send_event = TRUE;
client->message_type = gdk_atom_intern(LOCKER_CLIENT_MESSAGE, FALSE);
client->data_format = 8;
client->data.b[0] = LOCKER_MESSAGE_ACTION;
client->data.b[1] = action;
client->data.b[2] = TRUE;
gdk_event_send_clientmessage_toall(&event);
return 0;
}

View File

@ -1,5 +1,5 @@
subdirs=16x16,24x24,32x32,48x48
targets=blacklist,debug,engineering,gprs,openmoko,oss,panel,profiles,smscrypt
targets=blacklist,debug,engineering,gprs,locker,openmoko,oss,panel,profiles,smscrypt
cppflags_force=-I ../../include
cppflags=
cflags_force=-W `pkg-config --cflags libSystem gtk+-2.0`
@ -35,6 +35,17 @@ type=plugin
sources=gprs.c
install=$(LIBDIR)/Phone/plugins
[gprs.c]
depends=../../include/Phone.h
[locker]
type=plugin
sources=locker.c
install=$(LIBDIR)/Phone/plugins
[locker.c]
depends=../../include/Phone.h
[openmoko]
type=plugin
sources=openmoko.c