aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/plugin/generalconfig/autoaway/Preferences.java
blob: bee52df5262247c45546458121c63380bd5afbdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*
 * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Copyright @ 2015 Atlassian Pty Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.java.sip.communicator.plugin.generalconfig.autoaway;

import net.java.sip.communicator.plugin.generalconfig.*;
import org.jitsi.service.configuration.*;
import org.jitsi.service.resources.*;

import java.beans.*;

/**
 * Preferences for the Status Update
 *
 * @author Thomas Hofer
 *
 */
public final class Preferences
{
    /**
     * Property indicating whether status change on away is enabled.
     */
    private static final String ENABLE
        = "net.java.sip.communicator.plugin.statusupdate.enable";

    /**
     * Property indicating the time in minutes to consider a pc in idle state.
     */
    private static final String TIMER
        = "net.java.sip.communicator.plugin.statusupdate.timer";

    /**
     * The default value to be displayed and to be considered
     * for {@link Preferences#TIMER}.
     */
    public static final int DEFAULT_TIMER = 15;

    /**
     * Whether change status on away is enabled.
     * @return whether change status on away is enabled.
     */
    static boolean isEnabled()
    {
        // if enabled start
        String enabledDefault
            = GeneralConfigPluginActivator.getResources().getSettingsString(
                    Preferences.ENABLE);

        return
            GeneralConfigPluginActivator
                .getConfigurationService()
                    .getBoolean(
                            Preferences.ENABLE,
                            Boolean.parseBoolean(enabledDefault));
    }

    /**
     * Returns the time in minutes to consider a pc in idle state.
     * @return  the time in minutes to consider a pc in idle state.
     */
    static int getTimer()
    {
        ConfigurationService cfg
            = GeneralConfigPluginActivator.getConfigurationService();
        ResourceManagementService resources
            = GeneralConfigPluginActivator.getResources();

        String enabledDefault = resources.getSettingsString(Preferences.ENABLE);

        String timerDefaultStr = resources.getSettingsString(Preferences.TIMER);
        int timerDefault = DEFAULT_TIMER;

        if (timerDefaultStr != null)
        {
            try
            {
                timerDefault = Integer.parseInt(timerDefaultStr);
            }
            catch (NumberFormatException nfe)
            {
            }
        }

        return
            cfg.getBoolean(
                    Preferences.ENABLE,
                    Boolean.parseBoolean(enabledDefault))
                ? cfg.getInt(Preferences.TIMER, timerDefault)
                : 0;
    }

    /**
     * Save data in the configuration file
     * @param enabled is enabled
     * @param timer the time value to save
     */
    static void saveData(boolean enabled, String timer)
    {
        ConfigurationService cfg
            = GeneralConfigPluginActivator.getConfigurationService();

        cfg.setProperty(Preferences.ENABLE, Boolean.toString(enabled));
        cfg.setProperty(Preferences.TIMER, timer);
    }

    /**
     * Adds listener to detect property changes.
     * @param listener the listener to notify.
     */
    static void addEnableChangeListener(PropertyChangeListener listener)
    {
        // listens for changes in configuration enable/disable
        GeneralConfigPluginActivator
            .getConfigurationService()
                .addPropertyChangeListener(
                        ENABLE,
                        listener);
    }

    /**
     * Adds listener to detect timer property changes.
     * @param listener the listener to notify.
     */
    static void addTimerChangeListener(PropertyChangeListener listener)
    {
        // listens for changes in configuration enable/disable
        GeneralConfigPluginActivator
            .getConfigurationService()
                .addPropertyChangeListener(
                        TIMER,
                        listener);
    }
}