Hi again,

attached a new version of the "softlock" patch which applies against
current cvs.

Maybe somebody find it useful too.

Bye,
Thomas


Am Samstag, den 17.03.2007, 13:43 +0100 schrieb Stark, Thomas:
> Hi,
> 
> attached a little patch which delays the password input after the
> screensaver timeout locks your screen. I found it helpful when I didn't
> create any input event awhile and the timed out screensaver force me to
> enter my password while sitting in front of the computer.
> 
> The patch only applies correctly after applying the "desklock config
> dialog fix" I send before.
> 
> Bye,
> Thomas
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________ enlightenment-devel mailing 
> list enlightenment-devel@lists.sourceforge.net 
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
-- 
 Stark, Thomas <[EMAIL PROTECTED]>
diff -Nur cvs/e17/apps/e/src/bin/e_config.c build/e17/apps/e/src/bin/e_config.c
--- cvs/e17/apps/e/src/bin/e_config.c	2007-04-15 12:12:40.000000000 +0200
+++ build/e17/apps/e/src/bin/e_config.c	2007-04-21 14:18:25.000000000 +0200
@@ -490,6 +490,7 @@
    E_CONFIG_VAL(D, T, desklock_autolock_screensaver, INT);
    E_CONFIG_VAL(D, T, desklock_autolock_idle, INT);
    E_CONFIG_VAL(D, T, desklock_autolock_idle_timeout, DOUBLE);
+   E_CONFIG_VAL(D, T, desklock_softlock_timeout, DOUBLE);
    E_CONFIG_VAL(D, T, desklock_use_custom_desklock, INT);
    E_CONFIG_VAL(D, T, desklock_custom_desklock_cmd, STR);
    E_CONFIG_VAL(D, T, display_res_restore, INT);
@@ -1386,6 +1387,10 @@
    e_config->border_fix_on_shelf_toggle = 0;
    IFCFGEND;
    
+   IFCFG(0x0117);
+   e_config->desklock_softlock_timeout = 0;
+   IFCFGEND;
+
    e_config->config_version = E_CONFIG_FILE_VERSION;   
      
 #if 0 /* example of new config */
@@ -1474,6 +1479,7 @@
    E_CONFIG_LIMIT(e_config->desklock_autolock_screensaver, 0, 1);
    E_CONFIG_LIMIT(e_config->desklock_autolock_idle, 0, 1);
    E_CONFIG_LIMIT(e_config->desklock_autolock_idle_timeout, 1.0, 5400.0);
+   E_CONFIG_LIMIT(e_config->desklock_softlock_timeout, 0, 60);
    E_CONFIG_LIMIT(e_config->desklock_use_custom_desklock, 0, 1);
    E_CONFIG_LIMIT(e_config->display_res_restore, 0, 1);
    E_CONFIG_LIMIT(e_config->display_res_width, 1, 8192);
diff -Nur cvs/e17/apps/e/src/bin/e_config.h build/e17/apps/e/src/bin/e_config.h
--- cvs/e17/apps/e/src/bin/e_config.h	2007-04-15 12:12:40.000000000 +0200
+++ build/e17/apps/e/src/bin/e_config.h	2007-04-21 14:18:25.000000000 +0200
@@ -54,7 +54,7 @@
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need to be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0116
+#define E_CONFIG_FILE_GENERATION 0x0117
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT      0
@@ -233,6 +233,7 @@
    int         desklock_autolock_screensaver; // GUI
    int         desklock_autolock_idle; // GUI
    double      desklock_autolock_idle_timeout; // GUI
+   double      desklock_softlock_timeout; // GUI
    int         desklock_use_custom_desklock; // GUI
    const char *desklock_custom_desklock_cmd; // GUI
    
diff -Nur cvs/e17/apps/e/src/bin/e_desklock.c build/e17/apps/e/src/bin/e_desklock.c
--- cvs/e17/apps/e/src/bin/e_desklock.c	2007-04-21 14:16:25.000000000 +0200
+++ build/e17/apps/e/src/bin/e_desklock.c	2007-04-21 14:18:25.000000000 +0200
@@ -60,7 +60,9 @@
 static Ecore_Exe *_e_custom_desklock_exe = NULL;
 static Ecore_Event_Handler *_e_custom_desklock_exe_handler = NULL;
 static Ecore_Timer *_e_desklock_idle_timer = NULL;
+static Ecore_Timer *_e_desklock_softlock_timer = NULL;
 static int _e_desklock_user_idle = 0;
+static int _e_desklock_softlock_enabled = 0;
 
 /***********************************************************************/
 
@@ -71,6 +73,7 @@
 static int _e_desklock_cb_mouse_move(void *data, int type, void *event);
 static int _e_desklock_cb_custom_desklock_exit(void *data, int type, void *event);
 static int _e_desklock_cb_idle_timer(void *data);
+static int _e_desklock_cb_softlock_timer(void *data);
 
 static void _e_desklock_passwd_update();
 static void _e_desklock_backspace();
@@ -104,6 +107,17 @@
 EAPI int
 e_desklock_shutdown(void)
 {
+   if (_e_desklock_idle_timer)
+     {
+        ecore_timer_del(_e_desklock_idle_timer);
+        _e_desklock_idle_timer = NULL;
+     }
+   if (_e_desklock_softlock_timer)
+     {
+        ecore_timer_del(_e_desklock_softlock_timer);
+        _e_desklock_softlock_timer = NULL;
+     }
+
    e_desklock_hide();
    if (e_config->desklock_background)
      e_filereg_deregister(e_config->desklock_background);
@@ -112,6 +126,26 @@
 }
 
 EAPI int
+e_desklock_softlock_show(void)
+{
+   if (_e_desklock_softlock_timer)
+     {
+        ecore_timer_del(_e_desklock_softlock_timer);
+        _e_desklock_softlock_timer = NULL;
+     }
+
+   if (e_config->desklock_softlock_timeout > 0)
+     {
+        _e_desklock_softlock_timer = ecore_timer_add(e_config->desklock_softlock_timeout, _e_desklock_cb_softlock_timer, NULL);
+        _e_desklock_softlock_enabled = 1;
+     }
+   else
+     _e_desklock_softlock_enabled = 0;
+
+   return e_desklock_show();
+}
+
+EAPI int
 e_desklock_show(void)
 {
    Evas_List		  *managers, *l, *l2, *l3;
@@ -353,6 +387,8 @@
 {
    E_Desklock_Popup_Data *edp;
    
+   _e_desklock_softlock_enabled = 0;
+
    if ((!edd) && (!_e_custom_desklock_exe)) return;
 
    if (e_config->desklock_use_custom_desklock)
@@ -403,6 +439,17 @@
    ev = event;
    if (ev->win != edd->elock_wnd || edd->state == E_DESKLOCK_STATE_CHECKING) return 1;
 
+   if (_e_desklock_softlock_enabled)
+     {
+        if (_e_desklock_softlock_timer)
+          {
+             ecore_timer_del(_e_desklock_softlock_timer);
+             _e_desklock_softlock_timer = NULL;
+          }
+        e_desklock_hide();
+        return 1;
+     }
+
    if (!strcmp(ev->keysymbol, "Escape"))
      ;
    else if (!strcmp(ev->keysymbol, "KP_Enter"))
@@ -863,3 +910,11 @@
    /* Make sure our timer persists. */
    return 1;
 }
+
+static int
+_e_desklock_cb_softlock_timer(void *data)
+{
+   _e_desklock_softlock_enabled = 0;
+
+   return 1;
+}
diff -Nur cvs/e17/apps/e/src/bin/e_desklock.h build/e17/apps/e/src/bin/e_desklock.h
--- cvs/e17/apps/e/src/bin/e_desklock.h	2006-04-18 05:14:29.000000000 +0200
+++ build/e17/apps/e/src/bin/e_desklock.h	2007-04-21 14:18:25.000000000 +0200
@@ -7,6 +7,7 @@
 EAPI int e_desklock_shutdown(void);
 
 EAPI int e_desklock_show(void);
+EAPI int e_desklock_softlock_show(void);
 EAPI void e_desklock_hide(void);
 
 #endif
diff -Nur cvs/e17/apps/e/src/bin/e_int_config_desklock.c build/e17/apps/e/src/bin/e_int_config_desklock.c
--- cvs/e17/apps/e/src/bin/e_int_config_desklock.c	2007-04-01 18:34:23.000000000 +0200
+++ build/e17/apps/e/src/bin/e_int_config_desklock.c	2007-04-21 14:18:25.000000000 +0200
@@ -45,6 +45,7 @@
    char *bg;
    int custom_lock;
    char *custom_lock_cmd;
+   double softlock_time;
    int login_zone;
    int zone;
 };
@@ -104,6 +105,7 @@
    cfdata->auto_lock = e_config->desklock_autolock_idle;
    cfdata->screensaver_lock = e_config->desklock_autolock_screensaver;
    cfdata->idle_time = e_config->desklock_autolock_idle_timeout / 60;
+   cfdata->softlock_time = e_config->desklock_softlock_timeout;
    if (e_config->desklock_login_box_zone >= 0) 
      {
 	cfdata->login_zone = 0;
@@ -156,6 +158,12 @@
    ow = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
 			    &(cfdata->idle_time), NULL, 100);
    e_widget_framelist_object_append(of, ow);
+   ow = e_widget_label_add(evas, _("Prompt for password when time exceeded"));
+   e_widget_disabled_set(ow, !cfdata->use_xscreensaver);
+   e_widget_framelist_object_append(of, ow);
+   ow = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), 0.0, 60.0, 1.0, 0,
+			    &(cfdata->softlock_time), NULL, 100);
+   e_widget_framelist_object_append(of, ow);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
    return o;
 }
@@ -166,6 +174,7 @@
    e_config->desklock_autolock_idle = cfdata->auto_lock;
    e_config->desklock_autolock_screensaver = cfdata->screensaver_lock;
    e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60;
+   e_config->desklock_softlock_timeout = cfdata->softlock_time;
    e_config_save_queue();
    return 1;
 }
@@ -342,6 +351,7 @@
    e_config->desklock_autolock_idle = cfdata->auto_lock;
    e_config->desklock_autolock_screensaver = cfdata->screensaver_lock;
    e_config->desklock_autolock_idle_timeout = cfdata->idle_time * 60;
+   e_config->desklock_softlock_timeout = cfdata->softlock_time;
 
    if (cfdata->bg) 
      {
diff -Nur cvs/e17/apps/e/src/bin/e_manager.c build/e17/apps/e/src/bin/e_manager.c
--- cvs/e17/apps/e/src/bin/e_manager.c	2007-04-06 20:36:45.000000000 +0200
+++ build/e17/apps/e/src/bin/e_manager.c	2007-04-21 14:18:25.000000000 +0200
@@ -752,7 +752,7 @@
    if (e->on)
      {
 	if (e_config->desklock_autolock_screensaver)
-	  e_desklock_show();
+	  e_desklock_softlock_show();
      }
    return 1;
 }
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to