Skip to content

Commit df67fda

Browse files
authored
Porting Level Bars Demo to Vala (#137)
1 parent 5b35f2f commit df67fda

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/Level Bars/main.vala

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#! /usr/bin/env -S vala workbench.vala --pkg gtk4
2+
3+
Gtk.PasswordEntry entry;
4+
Gtk.LevelBar bar_discrete;
5+
Gtk.Label label_strength;
6+
7+
public void main () {
8+
var bar_continuous = (Gtk.LevelBar) workbench.builder.get_object ("bar_continuous");
9+
10+
bar_continuous.add_offset_value ("full", 100);
11+
bar_continuous.add_offset_value ("half", 50);
12+
bar_continuous.add_offset_value ("low", 25);
13+
14+
bar_discrete = (Gtk.LevelBar) workbench.builder.get_object ("bar_discrete");
15+
16+
bar_discrete.add_offset_value ("very-weak", 1);
17+
bar_discrete.add_offset_value ("weak", 2);
18+
bar_discrete.add_offset_value ("moderate", 4);
19+
bar_discrete.add_offset_value ("strong", 6);
20+
21+
22+
entry = (Gtk.PasswordEntry) workbench.builder.get_object ("entry");
23+
24+
label_strength = (Gtk.Label) workbench.builder.get_object ("label_strength");
25+
26+
entry.notify["text"].connect (estimate_password_strength);
27+
}
28+
29+
// This is not a secure way to estimate password strength
30+
// Use appropriate solutions instead
31+
// such as https://github.com/dropbox/zxcvbn
32+
33+
public void estimate_password_strength () {
34+
var level = (int) Math.fmin (Math.ceil ((entry.text.length + 1) / 2), 6);
35+
36+
label_strength.css_classes = new string[0];
37+
38+
switch (level) {
39+
case 1:
40+
label_strength.label = "Very Weak";
41+
label_strength.add_css_class ("very-weak-label");
42+
break;
43+
case 2:
44+
label_strength.label = "Weak";
45+
label_strength.add_css_class ("weak-label");
46+
break;
47+
case 3:
48+
case 4:
49+
label_strength.label = "Moderate";
50+
label_strength.add_css_class ("moderate-label");
51+
break;
52+
case 5:
53+
case 6:
54+
label_strength.label = "Strong";
55+
label_strength.add_css_class ("strong-label");
56+
break;
57+
default:
58+
label_strength.label = "";
59+
label_strength.add_css_class ("");
60+
break;
61+
}
62+
63+
bar_discrete.value = level;
64+
}

0 commit comments

Comments
 (0)