~cairo-dock-team/cairo-dock-plug-ins/plug-ins

« back to all changes in this revision

Viewing changes to logout/src/applet-init.c

  • Committer: Matthieu Baerts
  • Date: 2014-10-19 00:26:10 UTC
  • Revision ID: matttbe@gmail.com-20141019002610-ulf26s9b4c4rw10r
We just switched from BZR to Git.
Follow us on Github: https://github.com/Cairo-Dock

Note: we will only use Github to manage our source code and all pull requests.
Please continue to report your bugs/ideas/messages on our forum or Launchpad! 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
* This file is a part of the Cairo-Dock project
3
 
*
4
 
* Copyright : (C) see the 'copyright' file.
5
 
* E-mail    : see the 'copyright' file.
6
 
*
7
 
* This program is free software; you can redistribute it and/or
8
 
* modify it under the terms of the GNU General Public License
9
 
* as published by the Free Software Foundation; either version 3
10
 
* of the License, or (at your option) any later version.
11
 
*
12
 
* This program is distributed in the hope that it will be useful,
13
 
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
* GNU General Public License for more details.
16
 
* You should have received a copy of the GNU General Public License
17
 
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 
*/
19
 
 
20
 
#include "stdlib.h"
21
 
 
22
 
#include "applet-struct.h"
23
 
#include "applet-config.h"
24
 
#include "applet-notifications.h"
25
 
#include "applet-reboot-required.h"
26
 
#include "applet-timer.h"
27
 
#include "applet-init.h"
28
 
 
29
 
CD_APPLET_DEFINE_BEGIN ("logout",
30
 
        2, 0, 0,
31
 
        CAIRO_DOCK_CATEGORY_APPLET_DESKTOP,
32
 
        N_("This applet lets you manage the current session. You can either:\n"
33
 
        "shut down, restart, hibernate, suspend, log out, lock the screen, switch to another user, or program an automatic shutdown\n"
34
 
        "It will also tell you if your system needs to be restarted.\n"
35
 
        "<b>Click</b> on the icon to pop the menu up.\n"
36
 
        "You can bind a <b>shortcut</b> to it, and also to lock the screen."),
37
 
        "Fabounet (Fabrice Rey)")
38
 
        CD_APPLET_DEFINE_COMMON_APPLET_INTERFACE
39
 
        CD_APPLET_REDEFINE_TITLE (N_("Log out"))
40
 
CD_APPLET_DEFINE_END
41
 
 
42
 
 
43
 
CD_APPLET_INIT_BEGIN
44
 
        if (myDesklet)
45
 
        {
46
 
                CD_APPLET_SET_DESKLET_RENDERER ("Simple");
47
 
        }
48
 
        
49
 
        CD_APPLET_SET_DEFAULT_IMAGE_ON_MY_ICON_IF_NONE;  // set the default icon if none is specified in conf.
50
 
        
51
 
        if (g_iDesktopEnv == CAIRO_DOCK_GNOME)  // on prend le controle de l'icone de la fenetre.
52
 
                CD_APPLET_MANAGE_APPLICATION ("gnome-session");  // x-session-manager before 2.28
53
 
        else if (g_iDesktopEnv == CAIRO_DOCK_XFCE)
54
 
                CD_APPLET_MANAGE_APPLICATION ("xfce4-session-logout");  // x-session-manager before 4.8
55
 
        else if (g_iDesktopEnv == CAIRO_DOCK_KDE)
56
 
                CD_APPLET_MANAGE_APPLICATION ("ksmserver");  /// pas du tout sur...
57
 
 
58
 
        myData.iDesiredIconSize = cairo_dock_search_icon_size (GTK_ICON_SIZE_MENU);
59
 
        
60
 
        //\_______________ On enregistre nos notifications.
61
 
        CD_APPLET_REGISTER_FOR_CLICK_EVENT;
62
 
        CD_APPLET_REGISTER_FOR_MIDDLE_CLICK_EVENT;
63
 
        CD_APPLET_REGISTER_FOR_BUILD_MENU_EVENT;
64
 
        
65
 
        // shortkey
66
 
        
67
 
        myData.pKeyBinding = CD_APPLET_BIND_KEY (myConfig.cShortkey,
68
 
                D_("Lock the screen"),
69
 
                "Configuration", "shortkey",
70
 
                (CDBindkeyHandler) cd_logout_on_keybinding_pull);
71
 
        myData.pKeyBinding2 = CD_APPLET_BIND_KEY (myConfig.cShortkey2,
72
 
                D_("Show the log-out menu"),
73
 
                "Configuration", "shortkey2",
74
 
                (CDBindkeyHandler) cd_logout_on_keybinding_pull2);
75
 
        
76
 
        //\_______________ On (re)lance l'eteignage programme.
77
 
        cd_logout_set_timer ();
78
 
        
79
 
        //\_______________ We monitor files in order to know if a reboot/logout is needed
80
 
        cairo_dock_fm_add_monitor_full (CD_REBOOT_NEEDED_FILE, FALSE, NULL, (CairoDockFMMonitorCallback) cd_logout_check_reboot_required, NULL);
81
 
        // maybe not very clean to directly use 'CD_REBOOT_NEEDED' but it's just to not use two new variables for this tiny enum ;)
82
 
        cd_logout_check_reboot_required_init ();
83
 
 
84
 
CD_APPLET_INIT_END
85
 
 
86
 
 
87
 
CD_APPLET_STOP_BEGIN
88
 
        //\_______________ On se desabonne de nos notifications.
89
 
        CD_APPLET_UNREGISTER_FOR_CLICK_EVENT;
90
 
        CD_APPLET_UNREGISTER_FOR_MIDDLE_CLICK_EVENT;
91
 
        CD_APPLET_UNREGISTER_FOR_BUILD_MENU_EVENT;
92
 
        
93
 
        gldi_object_unref (GLDI_OBJECT(myData.pKeyBinding));
94
 
        gldi_object_unref (GLDI_OBJECT(myData.pKeyBinding2));
95
 
 
96
 
        gchar *cNull = NULL;
97
 
        CD_APPLET_MANAGE_APPLICATION (cNull);  // on relache le controle de l'icone de la fenetre.
98
 
        
99
 
        gldi_task_discard (myData.pTask);
100
 
        
101
 
        if (myData.iSidTimer != 0)
102
 
                g_source_remove (myData.iSidTimer);
103
 
        
104
 
        cairo_dock_fm_remove_monitor_full (CD_REBOOT_NEEDED_FILE, FALSE, NULL);
105
 
CD_APPLET_STOP_END
106
 
 
107
 
 
108
 
CD_APPLET_RELOAD_BEGIN
109
 
        if (CD_APPLET_MY_CONFIG_CHANGED)
110
 
        {
111
 
                if (myDesklet && CD_APPLET_MY_CONTAINER_TYPE_CHANGED)  // we are now in a desklet, set a renderer.
112
 
                {
113
 
                        CD_APPLET_SET_DESKLET_RENDERER ("Simple");
114
 
                }
115
 
                
116
 
                CD_APPLET_SET_DEFAULT_IMAGE_ON_MY_ICON_IF_NONE;  // set the default icon if none is specified in conf.
117
 
 
118
 
                // the icon can be changed.
119
 
                cd_logout_check_reboot_required_init ();
120
 
                
121
 
                gldi_shortkey_rebind (myData.pKeyBinding, myConfig.cShortkey, NULL);
122
 
                gldi_shortkey_rebind (myData.pKeyBinding2, myConfig.cShortkey2, NULL);
123
 
        }
124
 
CD_APPLET_RELOAD_END