~feng-kylin/unity8/OpenUrlInIndicator

« back to all changes in this revision

Viewing changes to Panel/Indicators/NetworkIndicatorWidget.qml

  • Committer: Tarmac
  • Author(s): Nick Dedekind, Launchpad Translations on behalf of unity-team
  • Date: 2013-07-11 19:50:27 UTC
  • mfrom: (2.5.114 indicators-client)
  • Revision ID: tarmac-20130711195027-yheu3w2oc42c1h7s
Moved indicators-client code into unity8. Fixes: https://bugs.launchpad.net/bugs/1191132, https://bugs.launchpad.net/bugs/1191822.

Approved by PS Jenkins bot, Michał Sawicz, Nicolas d'Offay.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2013 Canonical Ltd.
 
3
 *
 
4
 * This program is free software; you can redistribute it and/or modify
 
5
 * it under the terms of the GNU Lesser General Public License as published by
 
6
 * the Free Software Foundation; version 3.
 
7
 *
 
8
 * This program is distributed in the hope that it will be useful,
 
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
 * GNU Lesser General Public License for more details.
 
12
 *
 
13
 * You should have received a copy of the GNU Lesser General Public License
 
14
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
15
 *
 
16
 * Authors:
 
17
 *      Nick Dedekind <nick.dedekind@canonical.com>
 
18
 */
 
19
 
 
20
import QtQuick 2.0
 
21
import Ubuntu.Components 0.1
 
22
import Unity.Indicators 0.1 as Indicators
 
23
 
 
24
Indicators.IndicatorWidget {
 
25
    id: indicatorWidget
 
26
 
 
27
    width: networkIcon.width + units.gu(1)
 
28
 
 
29
    property int signalStrength: 0
 
30
    property int connectionState: Indicators.NetworkConnection.Initial
 
31
    rootMenuType: "com.canonical.indicator.root.network"
 
32
 
 
33
    // FIXME : Should us Ubuntu.Icon . results in low res images
 
34
    Image {
 
35
        id: networkIcon
 
36
        objectName: "itemImage"
 
37
        source: get_icon_for_signal(connectionState, signalStrength)
 
38
        visible: source != ""
 
39
        height: indicatorWidget.iconSize
 
40
        width: indicatorWidget.iconSize
 
41
        anchors.centerIn: parent
 
42
    }
 
43
 
 
44
    onActionStateChanged: {
 
45
        if (action == undefined || !action.valid) {
 
46
            return;
 
47
        }
 
48
 
 
49
        if (action.state == undefined) {
 
50
            connectionState = 0;
 
51
            return;
 
52
        }
 
53
 
 
54
        connectionState = action.state[Indicators.NetworkActionState.Connection];
 
55
        if (connectionState == Indicators.NetworkConnection.Activated) {
 
56
            signalStrength = action.state[Indicators.NetworkActionState.SignalStrength];
 
57
        }
 
58
    }
 
59
 
 
60
    NumberAnimation {
 
61
        id: activation_animation
 
62
        target: indicatorWidget
 
63
        property: "signalStrength"
 
64
        from: 0
 
65
        to: 100
 
66
        duration: 2500  // 5 states in 2.5 seconds
 
67
        loops: Animation.Infinite
 
68
    }
 
69
 
 
70
    states: [
 
71
        State {
 
72
            name: "unknown"
 
73
            when: connectionState < Indicators.NetworkConnection.Activating || connectionState > Indicators.NetworkConnection.Deactivating
 
74
            PropertyChanges { target: activation_animation; running: false }
 
75
        },
 
76
        State {
 
77
            name: "activating"
 
78
            when: connectionState == Indicators.NetworkConnection.Activating
 
79
            PropertyChanges { target: activation_animation; running: true }
 
80
        },
 
81
        State {
 
82
            name: "activated"
 
83
            when: connectionState == Indicators.NetworkConnection.Activated
 
84
            PropertyChanges { target: activation_animation; running: false }
 
85
        },
 
86
        State {
 
87
            name: "deactivating"
 
88
            when: connectionState == Indicators.NetworkConnection.Deactivating
 
89
            PropertyChanges { target: activation_animation; running: true }
 
90
        }
 
91
    ]
 
92
 
 
93
 
 
94
    function get_icon_for_signal(con_state, value) {
 
95
        if (con_state >= Indicators.NetworkConnection.Activating && con_state <= Indicators.NetworkConnection.Deactivating) {
 
96
            if (value == 0) {
 
97
                return "image://gicon/nm-signal-00";
 
98
            } else if (value <= 25) {
 
99
                return "image://gicon/nm-signal-25";
 
100
            } else if (value <= 50) {
 
101
                return "image://gicon/nm-signal-50";
 
102
            } else if (value <= 75) {
 
103
                return "image://gicon/nm-signal-75";
 
104
            }
 
105
            return "image://gicon/nm-signal-100";
 
106
        }
 
107
        return "image://gicon/wifi-none";
 
108
    }
 
109
}