summaryrefslogtreecommitdiff
authordrw <drw>2005-05-06 21:54:49 (UTC)
committer drw <drw>2005-05-06 21:54:49 (UTC)
commit852f6cf4ff1c4010f998ee8cd68936e38001f032 (patch) (unidiff)
treef12269677f7a84dfe0c6b9aaa6db9875d3d8b8c4
parent1a4c6fd2efdb11c2bddc77126e509b5a47665715 (diff)
downloadopie-852f6cf4ff1c4010f998ee8cd68936e38001f032.zip
opie-852f6cf4ff1c4010f998ee8cd68936e38001f032.tar.gz
opie-852f6cf4ff1c4010f998ee8cd68936e38001f032.tar.bz2
Opie-fy ZSafe UI: clean up menus, use proper toolbar, use shared pics where possible and use OResource for image loading
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/main.cpp12
-rw-r--r--noncore/apps/zsafe/opie-zsafe.control2
-rw-r--r--noncore/apps/zsafe/pics/zsafe/copy.xpm124
-rw-r--r--noncore/apps/zsafe/pics/zsafe/cut.xpm89
-rw-r--r--noncore/apps/zsafe/pics/zsafe/edit.xpm108
-rw-r--r--noncore/apps/zsafe/pics/zsafe/editdelete.xpm95
-rw-r--r--noncore/apps/zsafe/pics/zsafe/find.xpm130
-rw-r--r--noncore/apps/zsafe/pics/zsafe/folder_open.xpm103
-rw-r--r--noncore/apps/zsafe/pics/zsafe/help_icon.xpm119
-rw-r--r--noncore/apps/zsafe/pics/zsafe/new.xpm115
-rw-r--r--noncore/apps/zsafe/pics/zsafe/pass.xpm20
-rw-r--r--noncore/apps/zsafe/pics/zsafe/paste.xpm159
-rw-r--r--noncore/apps/zsafe/pics/zsafe/quit_icon.xpm120
-rw-r--r--noncore/apps/zsafe/pics/zsafe/save.xpm117
-rw-r--r--noncore/apps/zsafe/pics/zsafe/trash.xpm127
-rw-r--r--noncore/apps/zsafe/pics/zsafe/zsafe.pngbin1427 -> 0 bytes
-rw-r--r--noncore/apps/zsafe/pics/zsafe/zsafe.xpm306
-rw-r--r--noncore/apps/zsafe/zsafe.cpp247
-rw-r--r--noncore/apps/zsafe/zsafe.h15
19 files changed, 80 insertions, 1928 deletions
diff --git a/noncore/apps/zsafe/main.cpp b/noncore/apps/zsafe/main.cpp
index 6dfd455..3d818f9 100644
--- a/noncore/apps/zsafe/main.cpp
+++ b/noncore/apps/zsafe/main.cpp
@@ -1,31 +1,19 @@
1/* 1/*
2** Author: Carsten Schneider <CarstenSchneider@t-online.de> 2** Author: Carsten Schneider <CarstenSchneider@t-online.de>
3** 3**
4** $Id$ 4** $Id$
5** 5**
6** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html 6** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html
7*/ 7*/
8 8
9 9
10#include "zsafe.h" 10#include "zsafe.h"
11 11
12/* OPIE */ 12/* OPIE */
13#include <opie2/odebug.h> 13#include <opie2/odebug.h>
14 14
15/* QT */ 15/* QT */
16#include <opie2/oapplicationfactory.h> 16#include <opie2/oapplicationfactory.h>
17 17
18void suspend (int signum)
19{
20 printf ("Suspend signal %d received\n", signum);
21}
22
23void resume (int signum)
24{
25 printf ("Resume signal %d received\n", signum);
26 zs->resume(signum);
27}
28
29
30OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<ZSafe> ) 18OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<ZSafe> )
31 19
diff --git a/noncore/apps/zsafe/opie-zsafe.control b/noncore/apps/zsafe/opie-zsafe.control
index 6288fac..a00818f 100644
--- a/noncore/apps/zsafe/opie-zsafe.control
+++ b/noncore/apps/zsafe/opie-zsafe.control
@@ -1,9 +1,9 @@
1Package: opie-zsafe 1Package: opie-zsafe
2Files: bin/zsafe apps/Applications/zsafe.desktop pics/zsafe/*.png 2Files: bin/zsafe apps/Applications/zsafe.desktop pics/zsafe/*.png
3Priority: optional 3Priority: optional
4Section: opie/applications 4Section: opie/applications
5Version: $QPE_VERSION$EXTRAVERSION 5Version: $QPE_VERSION$EXTRAVERSION
6Architecture: arm 6Architecture: arm
7Depends: task-opie-minimal, libopieui2 7Depends: task-opie-minimal, libopiecore2, libopieui2
8Maintainer: Carsten Schneider <zcarsten@gmx.net> 8Maintainer: Carsten Schneider <zcarsten@gmx.net>
9Description: This is a password manager program for Opie. 9Description: This is a password manager program for Opie.
diff --git a/noncore/apps/zsafe/pics/zsafe/copy.xpm b/noncore/apps/zsafe/pics/zsafe/copy.xpm
deleted file mode 100644
index 03a143f..0000000
--- a/noncore/apps/zsafe/pics/zsafe/copy.xpm
+++ b/dev/null
@@ -1,124 +0,0 @@
1/* XPM */
2static char * copy_xpm[] = {
3"14 14 107 2",
4 " c None",
5 ". c #C9D1DA",
6 "+ c #CED5DD",
7 "@ c #D0D8DF",
8 "# c #CED6DE",
9 "$ c #A6B3C3",
10 "% c #8B9BB1",
11 "& c #C4CDD7",
12 "* c #E0E5EA",
13 "= c #E3E7EC",
14 "- c #D7DEE4",
15 "; c #D7DDE4",
16 "> c #ADBAC8",
17 ", c #9EADBD",
18 "' c #8394AB",
19 ") c #E2E6EB",
20 "! c #E6EAED",
21 "~ c #DDE3E8",
22 "{ c #C9D2DA",
23 "] c #B9C4CF",
24 "^ c #94A3B5",
25 "/ c #A0A2B0",
26 "( c #C0BBC6",
27 "_ c #D8DEE4",
28 ": c #EAEEF0",
29 "< c #DBE1E6",
30 "[ c #D5DCE2",
31 "} c #C0C9D4",
32 "| c #AFBAC7",
33 "1 c #9EA1AF",
34 "2 c #BEBAC2",
35 "3 c #D2CDD9",
36 "4 c #B2AABA",
37 "5 c #D0D7DF",
38 "6 c #E8ECEF",
39 "7 c #CED6DD",
40 "8 c #C3CCD6",
41 "9 c #C1C9D4",
42 "0 c #C0CAD3",
43 "a c #99A1AF",
44 "b c #B9B6BD",
45 "c c #C5BECB",
46 "d c #B2A7BB",
47 "e c #9C92A5",
48 "f c #CDD4DD",
49 "g c #E7ECEF",
50 "h c #DCE2E7",
51 "i c #CBD3DB",
52 "j c #C6CFD9",
53 "k c #C7D0D8",
54 "l c #9FA8B7",
55 "m c #B2B0B9",
56 "n c #CBC5CF",
57 "o c #CFC7D6",
58 "p c #B5ABBE",
59 "q c #DEE3E8",
60 "r c #CDD5DD",
61 "s c #CAD2DB",
62 "t c #C7CFD9",
63 "u c #D2D8E0",
64 "v c #AFB8C5",
65 "w c #A6A7B1",
66 "x c #BEB9C4",
67 "y c #D7D1DE",
68 "z c #BBB2C4",
69 "A c #DBE1E7",
70 "B c #DAE0E6",
71 "C c #D2D9E0",
72 "D c #C5CCD7",
73 "E c #A1ABBB",
74 "F c #9C9FAD",
75 "G c #B4AFBA",
76 "H c #D5D0DC",
77 "I c #BDB4C5",
78 "J c #CBD3DC",
79 "K c #D5DBE2",
80 "L c #C6CED8",
81 "M c #B3BBC8",
82 "N c #A5ADBA",
83 "O c #9EA5B4",
84 "P c #A9ABB9",
85 "Q c #B5B2BE",
86 "R c #D9D4DF",
87 "S c #BEB6C6",
88 "T c #9CA9BC",
89 "U c #B0B2C0",
90 "V c #C9C9D0",
91 "W c #C9C5CE",
92 "X c #D1CCD6",
93 "Y c #D5D0DB",
94 "Z c #D8D2DE",
95 "` c #E0DBE6",
96 " .c #BFB6C7",
97 "..c #DBD6E0",
98 "+.c #F2F1F4",
99 "@.c #E9E6ED",
100 "#.c #E9E5ED",
101 "$.c #E8E3EC",
102 "%.c #E5E1EA",
103 "&.c #E8E4ED",
104 "*.c #C0B8C8",
105 "=.c #BDB5C6",
106 "-.c #C6BFCC",
107 ";.c #C3BBCA",
108 ">.c #C2BAC9",
109 ",.c #C1B8C8",
110 "'.c #B0A6B9",
111" ",
112" . + @ # $ % ",
113"& * = - ; > , ' ",
114" ) ! - ~ { ] ^ / ( ",
115" _ : < [ . } | 1 2 3 4 ",
116" 5 6 < 7 8 9 0 a b c d e ",
117" f g h i . j k l m n o p ",
118" q q r s t u v w x y z ",
119" _ ! A B C D E F G H I ",
120" J K L M N O P Q ( R S ",
121" T U V W X Y Z ` . ",
122" ..+.@.#.$.%.&.*. ",
123" =.-.;.>.>.,.*.'. ",
124" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/cut.xpm b/noncore/apps/zsafe/pics/zsafe/cut.xpm
deleted file mode 100644
index cecd174..0000000
--- a/noncore/apps/zsafe/pics/zsafe/cut.xpm
+++ b/dev/null
@@ -1,89 +0,0 @@
1/* XPM */
2static char * cut_xpm[] = {
3"14 14 72 1",
4 " c None",
5 ".c #FDD900",
6 "+c #FBE601",
7 "@c #DD8000",
8 "#c #FDDC00",
9 "$c #EDDB02",
10 "%c #CFC305",
11 "&c #EE9600",
12 "*c #FEE600",
13 "=c #C9A607",
14 "-c #897905",
15 ";c #EC9300",
16 ">c #FCDA00",
17 ",c #DAB905",
18 "'c #AC9A06",
19 ")c #917000",
20 "!c #DFC503",
21 "~c #D5B606",
22 "{c #CF8B04",
23 "]c #F1C201",
24 "^c #EADA03",
25 "/c #F39900",
26 "(c #DCB502",
27 "_c #BBA105",
28 ":c #AD9705",
29 "<c #E49301",
30 "[c #D9961E",
31 "}c #FBB509",
32 "|c #ED8B0A",
33 "1c #DDBB05",
34 "2c #C3B204",
35 "3c #E3D400",
36 "4c #F09E00",
37 "5c #7EA5CE",
38 "6c #C5CFDB",
39 "7c #7393B6",
40 "8c #D07C09",
41 "9c #F7AF00",
42 "0c #F2A300",
43 "ac #B16200",
44 "bc #C7E5F5",
45 "cc #89C0E7",
46 "dc #BCD8FA",
47 "ec #4798E4",
48 "fc #35201A",
49 "gc #862F00",
50 "hc #702A00",
51 "ic #C1E0F3",
52 "jc #A0D3F6",
53 "kc #5CA0DD",
54 "lc #BED8FA",
55 "mc #4899E6",
56 "nc #AFD3ED",
57 "oc #A1D3F6",
58 "pc #3E80BF",
59 "qc #3578B9",
60 "rc #BFD8F8",
61 "sc #4E99E1",
62 "tc #81B6E7",
63 "uc #4385C4",
64 "vc #4479A8",
65 "wc #C1D9F8",
66 "xc #4F99E1",
67 "yc #367DC6",
68 "zc #4B86BB",
69 "Ac #BED9F9",
70 "Bc #5E9CD6",
71 "Cc #5592C8",
72 "Dc #60A6EE",
73 "Ec #2F5475",
74 "Fc #1D7DD3",
75 "Gc #11579E",
76" .+@ ",
77" #$%& ",
78" *=-; ",
79" >,';)!~{ ",
80" ]^/(_:< ",
81" [}|1234 ",
82" 567890a ",
83" bcdefgh ",
84" ijklm ",
85" nopqrs ",
86" tu vwx ",
87" y zAB ",
88" CDE ",
89" FG "};
diff --git a/noncore/apps/zsafe/pics/zsafe/edit.xpm b/noncore/apps/zsafe/pics/zsafe/edit.xpm
deleted file mode 100644
index 50fba51..0000000
--- a/noncore/apps/zsafe/pics/zsafe/edit.xpm
+++ b/dev/null
@@ -1,108 +0,0 @@
1/* XPM */
2static char * edit_xpm[] = {
3"14 14 91 1",
4 " c None",
5 ".c #D6DFED",
6 "+c #E5EAF4",
7 "@c #E3EAF4",
8 "#c #DAE3F2",
9 "$c #C5CEDC",
10 "%c #E4EAF4",
11 "&c #FFFFFF",
12 "*c #FBFEFF",
13 "=c #EDF3FD",
14 "-c #E5CE80",
15 ";c #F8CF69",
16 ">c #EBB785",
17 ",c #FEFFFF",
18 "'c #F3F1ED",
19 ")c #F8D625",
20 "!c #FEB006",
21 "~c #E99141",
22 "{c #F8E59F",
23 "]c #FDCD09",
24 "^c #FC9E10",
25 "/c #C49277",
26 "(c #9DADC9",
27 "_c #FEFAF3",
28 ":c #FCDB44",
29 "<c #FEC219",
30 "[c #EF9234",
31 "}c #C1BFCC",
32 "|c #A7B6D0",
33 "1c #FDEDBB",
34 "2c #FDD82E",
35 "3c #FEB832",
36 "4c #DAA27B",
37 "5c #CCD8EB",
38 "6c #AFBED6",
39 "7c #FEFDFB",
40 "8c #FBE072",
41 "9c #FED342",
42 "0c #F6A845",
43 "ac #D7D0D7",
44 "bc #D6E0F1",
45 "cc #B6C3D9",
46 "dc #F7EED3",
47 "ec #FDE35E",
48 "fc #FECD5C",
49 "gc #E4B184",
50 "hc #E1E9F7",
51 "ic #DCE4F3",
52 "jc #B5C1D7",
53 "kc #FCFEFF",
54 "lc #F7DEAD",
55 "mc #FEE483",
56 "nc #F6C471",
57 "oc #DECDC9",
58 "pc #D7DEEC",
59 "qc #CDD4E5",
60 "rc #AAB5CB",
61 "sc #FBFFFF",
62 "tc #ECD3B7",
63 "uc #F7DFC0",
64 "vc #D6BAA9",
65 "wc #D3D7E4",
66 "xc #CFD6E5",
67 "yc #CCD3E3",
68 "zc #ABB6CC",
69 "Ac #FAFEFF",
70 "Bc #C8B7AF",
71 "Cc #C2AEA9",
72 "Dc #D7DCE6",
73 "Ec #D4DAE7",
74 "Fc #D0D7E6",
75 "Gc #D1D8E7",
76 "Hc #B5C0D6",
77 "Ic #F9FEFF",
78 "Jc #ECE9EB",
79 "Kc #EAF0F7",
80 "Lc #E6ECF6",
81 "Mc #E0E6F3",
82 "Nc #E2E9F6",
83 "Oc #E2EAF8",
84 "Pc #BECADF",
85 "Qc #CDD7E6",
86 "Rc #D8DEE7",
87 "Sc #D4DDE7",
88 "Tc #D2DBE7",
89 "Uc #D0D9E7",
90 "Vc #CED7E6",
91 "Wc #CAD4E5",
92 "Xc #C6D1E3",
93 "Yc #C4CFE2",
94 "Zc #ACB9D1",
95".+++@#$ ",
96"%&&&*=-;> ",
97"%&&&,')!~ ",
98"%&&&&{]^/( ",
99"%&&&_:<[}| ",
100"%&&&123456 ",
101"%&&7890abc ",
102"%&&defghij ",
103"%&klmnopqr ",
104"%&stuvwxyz ",
105"%&ABCDEFGH ",
106"%,IJKLMNOP ",
107"QRSTUVWXYZ ",
108" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/editdelete.xpm b/noncore/apps/zsafe/pics/zsafe/editdelete.xpm
deleted file mode 100644
index 675b4eb..0000000
--- a/noncore/apps/zsafe/pics/zsafe/editdelete.xpm
+++ b/dev/null
@@ -1,95 +0,0 @@
1/* XPM */
2static char * editdelete_xpm[] = {
3"14 14 78 1",
4 " c None",
5 ".c #000000",
6 "+c #201313",
7 "@c #764747",
8 "#c #795353",
9 "$c #150D0D",
10 "%c #261818",
11 "&c #8B5F5F",
12 "*c #E08383",
13 "=c #7E3F3F",
14 "-c #946C6C",
15 ";c #E79696",
16 ">c #824141",
17 ",c #764848",
18 "'c #D37171",
19 ")c #CF6767",
20 "!c #783C3C",
21 "~c #020101",
22 "{c #040303",
23 "]c #E89B9B",
24 "^c #CA6969",
25 "/c #944A4A",
26 "(c #412121",
27 "_c #7F3F3F",
28 ":c #CF6868",
29 "<c #CD6666",
30 "[c #D46C6C",
31 "}c #683838",
32 "|c #795757",
33 "1c #E99A9A",
34 "2c #8A4444",
35 "3c #3D1E1E",
36 "4c #763B3B",
37 "5c #D46D6D",
38 "6c #CD6969",
39 "7c #D77878",
40 "8c #DB8383",
41 "9c #C76868",
42 "0c #8F4646",
43 "ac #3B1D1D",
44 "bc #683737",
45 "cc #D77777",
46 "dc #D06C6C",
47 "ec #CE6666",
48 "fc #AB5555",
49 "gc #361B1B",
50 "hc #785858",
51 "ic #DB8282",
52 "jc #CE6767",
53 "kc #C86363",
54 "lc #B95C5C",
55 "mc #572C2C",
56 "nc #926B6B",
57 "oc #EA9B9B",
58 "pc #C86868",
59 "qc #AB5454",
60 "rc #C86464",
61 "sc #C66363",
62 "tc #723939",
63 "uc #956C6C",
64 "vc #C76363",
65 "wc #D06868",
66 "xc #CA6565",
67 "yc #713939",
68 "zc #785050",
69 "Ac #E79595",
70 "Bc #3C1E1E",
71 "Cc #743A3A",
72 "Dc #BD5E5E",
73 "Ec #A15151",
74 "Fc #4E2727",
75 "Gc #884444",
76 "Hc #964A4A",
77 "Ic #3D1F1F",
78 "Jc #713838",
79 "Kc #A25050",
80 "Lc #542929",
81 "Mc #4B2525",
82" . . ",
83" +@. .#$ ",
84" %&*=. .-;>. ",
85".,*')!~{-]^/(~",
86" ._:<[}|1^23. ",
87" .4567890a. ",
88" .bcdefg. ",
89" .hijklm. ",
90" .nopqlrst. ",
91" .u]^0gmvwxy. ",
92".zA^2B.~CxDEF.",
93" .GHI. .JKL. ",
94" .(. .M. ",
95" . . "};
diff --git a/noncore/apps/zsafe/pics/zsafe/find.xpm b/noncore/apps/zsafe/pics/zsafe/find.xpm
deleted file mode 100644
index 9d67a41..0000000
--- a/noncore/apps/zsafe/pics/zsafe/find.xpm
+++ b/dev/null
@@ -1,130 +0,0 @@
1/* XPM */
2static char * find_xpm[] = {
3"14 14 113 2",
4 " c None",
5 ". c #A5B4CE",
6 "+ c #A0BFDF",
7 "@ c #A8CAE7",
8 "# c #A6C7E3",
9 "$ c #AABED6",
10 "% c #6A849D",
11 "& c #95AFD1",
12 "* c #96CCF2",
13 "= c #A8E0FA",
14 "- c #ACE4FB",
15 "; c #A9E1FB",
16 "> c #ABE2FA",
17 ", c #AACADF",
18 "' c #9DB3C5",
19 ") c #87A0B5",
20 "! c #748CA3",
21 "~ c #8E9EBD",
22 "{ c #93CAF1",
23 "] c #B5ECFC",
24 "^ c #CCFAFE",
25 "/ c #BFF1FD",
26 "( c #B8EEFC",
27 "_ c #B4EBFC",
28 ": c #BDF1FC",
29 "< c #A8C1D2",
30 "[ c #728FA8",
31 "} c #53728F",
32 "| c #6B849C",
33 "1 c #88A7CC",
34 "2 c #A4DDFA",
35 "3 c #C8F8FE",
36 "4 c #E8FFFF",
37 "5 c #CDF5FE",
38 "6 c #CCF9FE",
39 "7 c #CAFCFE",
40 "8 c #CCFDFF",
41 "9 c #BCE2E9",
42 "0 c #4F6E8B",
43 "a c #3C5A79",
44 "b c #76899F",
45 "c c #8EB0D2",
46 "d c #A8E1FB",
47 "e c #B6EBFC",
48 "f c #C8F3FD",
49 "g c #CAF9FE",
50 "h c #DBFFFF",
51 "i c #DAFFFF",
52 "j c #DCFFFF",
53 "k c #CEEEF1",
54 "l c #809FC4",
55 "m c #A7E0FA",
56 "n c #B1E8FB",
57 "o c #C4F5FE",
58 "p c #D7FEFF",
59 "q c #DEFFFF",
60 "r c #E7FFFF",
61 "s c #EBFFFF",
62 "t c #CCE0E7",
63 "u c #6A7DA1",
64 "v c #A4DBF6",
65 "w c #ACE5FB",
66 "x c #C0F5FD",
67 "y c #D4FFFF",
68 "z c #E2FFFF",
69 "A c #F0FFFF",
70 "B c #F7FEFF",
71 "C c #AEB7C6",
72 "D c #7C99BA",
73 "E c #B1E6F7",
74 "F c #C1F5FE",
75 "G c #D2FFFF",
76 "H c #E0FFFF",
77 "I c #ECFEFE",
78 "J c #C6CED8",
79 "K c #898AA2",
80 "L c #768CAA",
81 "M c #A0C4D5",
82 "N c #B7DCE4",
83 "O c #B9D4DD",
84 "P c #9EABBC",
85 "Q c #8789A1",
86 "R c #A7A5B2",
87 "S c #C89F68",
88 "T c #CF8A23",
89 "U c #B48549",
90 "V c #EFD28D",
91 "W c #ECB34D",
92 "X c #C37F21",
93 "Y c #8197AC",
94 "Z c #617C97",
95 "` c #CCA153",
96 " .c #F8E19E",
97 "..c #EAB24E",
98 "+.c #B77622",
99 "@.c #A4B9CA",
100 "#.c #7592AB",
101 "$.c #7A93AA",
102 "%.c #C29851",
103 "&.c #F8DF9B",
104 "*.c #E9B351",
105 "=.c #A26825",
106 "-.c #7592AA",
107 ";.c #51708D",
108 ">.c #405E7D",
109 ",.c #879DB1",
110 "'.c #BB9353",
111 ").c #E2C586",
112 "!.c #977964",
113 "~.c #7D94AA",
114 "{.c #3D5C7A",
115 "].c #5D758E",
116 "^.c #87644D",
117" . + @ # $ % ",
118" & * = - ; > , ' ) ! ",
119"~ { ] ^ / ( _ : < [ } | ",
120"1 2 3 4 5 6 7 8 9 0 a b ",
121"c d e f g h i j k ",
122"l m n o p q r s t ",
123"u v w x y z A B C ",
124" D E F G H I J K ",
125" L M N O P Q R S T ",
126" U V W X ",
127" Y Z ` ...+. ",
128"@.#.$. %.&.*.=.",
129"-.;.>.,. '.).!.",
130"~.{.]. ^. "};
diff --git a/noncore/apps/zsafe/pics/zsafe/folder_open.xpm b/noncore/apps/zsafe/pics/zsafe/folder_open.xpm
deleted file mode 100644
index 10b4d6c..0000000
--- a/noncore/apps/zsafe/pics/zsafe/folder_open.xpm
+++ b/dev/null
@@ -1,103 +0,0 @@
1/* XPM */
2static char * folder_open_xpm[] = {
3"14 14 86 1",
4 " c None",
5 ".c #E9EAF3",
6 "+c #DCDFEE",
7 "@c #EDEEF5",
8 "#c #ECECF4",
9 "$c #EAEAF3",
10 "%c #879ED4",
11 "&c #A2CAF6",
12 "*c #F1F2F7",
13 "=c #F2F2F8",
14 "-c #E6E6F0",
15 ";c #CFD4EA",
16 ">c #5880D6",
17 ",c #D1E6FC",
18 "'c #CFE4FF",
19 ")c #C3DAF8",
20 "!c #EFF2F7",
21 "~c #F8F8FB",
22 "{c #F3F2F7",
23 "]c #C2D1EB",
24 "^c #9FBCE8",
25 "/c #6FA2EA",
26 "(c #5197F1",
27 "_c #0045C7",
28 ":c #C3DFFB",
29 "<c #CAE1FF",
30 "[c #E0E6EE",
31 "}c #FEFEFE",
32 "|c #C1D5EE",
33 "1c #9BC6F7",
34 "2c #65A7F8",
35 "3c #5A9FF7",
36 "4c #3E7DE3",
37 "5c #002DB1",
38 "6c #ABD1F7",
39 "7c #C4DEFF",
40 "8c #BACDEA",
41 "9c #CEE3F6",
42 "0c #B2D4F3",
43 "ac #9FCBF7",
44 "bc #75B3FA",
45 "cc #589CF6",
46 "dc #3E78E2",
47 "ec #0C39BE",
48 "fc #002CAE",
49 "gc #C1DCFF",
50 "hc #9EC8F8",
51 "ic #C5E4F8",
52 "jc #AED9FD",
53 "kc #87BEFA",
54 "lc #5996F1",
55 "mc #336FE3",
56 "nc #2054CF",
57 "oc #6279C5",
58 "pc #5E71B0",
59 "qc #AFD0FA",
60 "rc #91C2F8",
61 "sc #ABD4F8",
62 "tc #98C9FA",
63 "uc #6FA8F4",
64 "vc #518BEB",
65 "wc #7596DB",
66 "xc #B2B6CF",
67 "yc #B4B4C6",
68 "zc #4C63A8",
69 "Ac #97BFF1",
70 "Bc #8BBEF7",
71 "Cc #94C9FE",
72 "Dc #7EB6F6",
73 "Ec #9DBDEE",
74 "Fc #CBD0E0",
75 "Gc #CBCBD8",
76 "Hc #9BA4C4",
77 "Ic #4A63A7",
78 "Jc #91C1F6",
79 "Kc #BBDCFC",
80 "Lc #E0E7F1",
81 "Mc #E3E2E9",
82 "Nc #B9C1D7",
83 "Oc #6178B6",
84 "Pc #9FC5F0",
85 "Qc #FAFAFB",
86 "Rc #DAE0EC",
87 "Sc #7C99CC",
88 "Tc #82AFE6",
89 "Uc #9CBCE4",
90" ",
91" .+ ",
92" @#$% ",
93" & *=#-; > ",
94" ,')!~{]^/(_ ",
95" :<[}~|12345 ",
96" 67890abcdef ",
97" ghijklmnop ",
98" qrstuvwxyz ",
99" ABCDEFGHI ",
100" JKLMNO ",
101" PQRS ",
102" TU ",
103" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/help_icon.xpm b/noncore/apps/zsafe/pics/zsafe/help_icon.xpm
deleted file mode 100644
index 58e6312..0000000
--- a/noncore/apps/zsafe/pics/zsafe/help_icon.xpm
+++ b/dev/null
@@ -1,119 +0,0 @@
1/* XPM */
2static char * help_icon_xpm[] = {
3"14 14 102 2",
4 " c None",
5 ". c #FBC4AC",
6 "+ c #FBBA9E",
7 "@ c #FEA391",
8 "# c #FDEAE2",
9 "$ c #FDFAF9",
10 "% c #FDFDFD",
11 "& c #FFBEBC",
12 "* c #FE8473",
13 "= c #F64A1B",
14 "- c #FF9687",
15 "; c #FFB7B6",
16 "> c #FDEFEF",
17 ", c #FCFCFC",
18 "' c #FBFBFB",
19 ") c #FBF5F5",
20 "! c #FDCDCD",
21 "~ c #FECCCC",
22 "{ c #FFB2AF",
23 "] c #EE502D",
24 "^ c #FE8F7C",
25 "/ c #FFABAA",
26 "( c #FEBFBF",
27 "_ c #F9B6B5",
28 ": c #EEC9BA",
29 "< c #DAA28A",
30 "[ c #DD7D62",
31 "} c #EF604C",
32 "| c #F7A9A8",
33 "1 c #FDBFBF",
34 "2 c #FEA9A7",
35 "3 c #D25735",
36 "4 c #FF877F",
37 "5 c #FEAAAA",
38 "6 c #F79696",
39 "7 c #E0533A",
40 "8 c #E13A19",
41 "9 c #F4BBBA",
42 "0 c #FBF2F2",
43 "a c #ECC4B8",
44 "b c #FDDCDB",
45 "c c #FAC5C5",
46 "d c #ED7061",
47 "e c #E5B9AA",
48 "f c #F8F8F8",
49 "g c #F9F4F2",
50 "h c #FBC3AB",
51 "i c #F6F6F6",
52 "j c #D9A189",
53 "k c #D7947E",
54 "l c #F5F5F5",
55 "m c #FAFAFA",
56 "n c #AE6A5A",
57 "o c #F4F4F4",
58 "p c #DC9C82",
59 "q c #D28470",
60 "r c #F3F0F0",
61 "s c #F9F9F9",
62 "t c #A66558",
63 "u c #FAF5F3",
64 "v c #F4F3F3",
65 "w c #E9917E",
66 "x c #D02C21",
67 "y c #EE6868",
68 "z c #F68988",
69 "A c #FBAF9E",
70 "B c #F76D6D",
71 "C c #E83838",
72 "D c #DB2908",
73 "E c #C11C08",
74 "F c #E03837",
75 "G c #F14040",
76 "H c #DB2622",
77 "I c #F6390B",
78 "J c #FC2926",
79 "K c #F12B2B",
80 "L c #E22525",
81 "M c #DA5748",
82 "N c #D6937D",
83 "O c #D2917D",
84 "P c #D69C91",
85 "Q c #DC2B2B",
86 "R c #EA2B2B",
87 "S c #F32726",
88 "T c #900D05",
89 "U c #ED2A06",
90 "V c #F91614",
91 "W c #F01616",
92 "X c #EDAAAA",
93 "Y c #ECECEC",
94 "Z c #EFEEEE",
95 "` c #EF7979",
96 " .c #F11514",
97 "..c #A80D06",
98 "+.c #D22301",
99 "@.c #EB1407",
100 "#.c #F5E0DF",
101 "$.c #F3EFEE",
102 "%.c #D8A6A1",
103 "&.c #900C04",
104 "*.c #AE6959",
105 "=.c #A66658",
106" . + ",
107" @ # $ % % & * = ",
108" - ; > , ' ) ! ~ { ] ",
109" ^ / ( _ : < [ } | 1 2 3 ",
110" 4 5 6 7 8 9 0 a ",
111" b c d e f g ",
112"h ' i j k l m n ",
113"+ m o p q r s t ",
114" u v w x y z ",
115" A B C D E F G H ",
116" I J K L M N O P Q R S T ",
117" U V W X Y Y Z ` ... ",
118" +.@.#.i i $.%.&. ",
119" *.=. "};
diff --git a/noncore/apps/zsafe/pics/zsafe/new.xpm b/noncore/apps/zsafe/pics/zsafe/new.xpm
deleted file mode 100644
index d5f7e25..0000000
--- a/noncore/apps/zsafe/pics/zsafe/new.xpm
+++ b/dev/null
@@ -1,115 +0,0 @@
1/* XPM */
2static char * new_xpm[] = {
3"14 14 98 2",
4 " c None",
5 ". c #CBD5E6",
6 "+ c #E1E6EF",
7 "@ c #E0E6EF",
8 "# c #DBE2EE",
9 "$ c #D1DAE9",
10 "% c #BCC7DC",
11 "& c #D9E1EE",
12 "* c #FFFFFF",
13 "= c #FDFFFF",
14 "- c #F2F7FE",
15 "; c #E4EAF5",
16 "> c #C8D2E4",
17 ", c #D3DCEB",
18 "' c #FEFFFF",
19 ") c #F7FAFF",
20 "! c #EAEEF8",
21 "~ c #CDD6E7",
22 "{ c #EAEEF5",
23 "] c #CCD5E5",
24 "^ c #F9FCFF",
25 "/ c #EDF2FB",
26 "( c #D9E1EF",
27 "_ c #B6C2D6",
28 ": c #A3B2CB",
29 "< c #94A5C0",
30 "[ c #FAFDFF",
31 "} c #F0F4FB",
32 "| c #EAC99F",
33 "1 c #C7C9D0",
34 "2 c #B7C4DA",
35 "3 c #A1B0CA",
36 "4 c #F8FBFF",
37 "5 c #ECE6E2",
38 "6 c #F7C05D",
39 "7 c #D2AE82",
40 "8 c #C2CDE0",
41 "9 c #AAB8CF",
42 "0 c #E9EFF8",
43 "a c #E8C9A0",
44 "b c #FDEA5A",
45 "c c #EABA5D",
46 "d c #CACED8",
47 "e c #B1BDD3",
48 "f c #FFFAF3",
49 "g c #FEE0AF",
50 "h c #F5D39F",
51 "i c #F1CA86",
52 "j c #F7CB5D",
53 "k c #FFFE4C",
54 "l c #FAE75A",
55 "m c #E1AE69",
56 "n c #CBA57C",
57 "o c #FFFAF2",
58 "p c #F9C671",
59 "q c #FEDF57",
60 "r c #FFF24A",
61 "s c #FFF643",
62 "t c #FFF838",
63 "u c #FFF83D",
64 "v c #FEF247",
65 "w c #FBE248",
66 "x c #E19226",
67 "y c #FEFEFF",
68 "z c #F2F1F0",
69 "A c #F0C47A",
70 "B c #FBCF23",
71 "C c #FFE324",
72 "D c #FDD426",
73 "E c #D6932B",
74 "F c #FDFEFF",
75 "G c #F1F5FD",
76 "H c #ECF0F6",
77 "I c #F3AB31",
78 "J c #FFCC10",
79 "K c #FFCB10",
80 "L c #F6AD11",
81 "M c #AC8C77",
82 "N c #FAFCFE",
83 "O c #EFF4FC",
84 "P c #ECE9E9",
85 "Q c #F6A113",
86 "R c #FDA902",
87 "S c #F2960B",
88 "T c #F8A403",
89 "U c #FAA402",
90 "V c #B2805C",
91 "W c #C3CEE0",
92 "X c #D1D8E3",
93 "Y c #CAD3E1",
94 "Z c #D1BEB1",
95 "` c #EE8208",
96 " .c #C77D33",
97 "..c #AF9A8F",
98 "+.c #B98B69",
99 "@.c #DA7614",
100 "#.c #B96730",
101 "$.c #983C0A",
102" . + + @ # $ % ",
103" & * * = - ; > , ",
104" & * * ' ) ! ~ { ] ",
105" & * * * ^ / ( _ : < ",
106" & * * * [ } | 1 2 3 ",
107" & * * ' 4 5 6 7 8 9 ",
108" & * ' [ 0 a b c d e ",
109" & f g h i j k l m n ",
110" & o p q r s t u v w x ",
111" & y z A B C C C D E ",
112" & F G H I J K J L M ",
113" & N O P Q R S T U V ",
114" W X Y Z ` ...+.@.#. ",
115" $. "};
diff --git a/noncore/apps/zsafe/pics/zsafe/pass.xpm b/noncore/apps/zsafe/pics/zsafe/pass.xpm
deleted file mode 100644
index 512c262..0000000
--- a/noncore/apps/zsafe/pics/zsafe/pass.xpm
+++ b/dev/null
@@ -1,20 +0,0 @@
1/* XPM */
2static char * pass_xpm[] = {
3"16 14 3 1",
4 " c None",
5 ".c #000000",
6 "+c #FFFF00",
7" ",
8" ",
9" ..... . ",
10" .+++. .+. ",
11" .+++. .+++. ",
12" .+++. .+++++. ",
13" .+++..+++++++.",
14"...+++....+++...",
15".+++++++..+++. ",
16" .+++++. .+++. ",
17" .+++. .+++. ",
18" .+. .+++. ",
19" . .+++. ",
20" ..... "};
diff --git a/noncore/apps/zsafe/pics/zsafe/paste.xpm b/noncore/apps/zsafe/pics/zsafe/paste.xpm
deleted file mode 100644
index 546366f..0000000
--- a/noncore/apps/zsafe/pics/zsafe/paste.xpm
+++ b/dev/null
@@ -1,159 +0,0 @@
1/* XPM */
2static char * paste_xpm[] = {
3"14 14 142 2",
4 " c None",
5 ". c #96A0AC",
6 "+ c #9BB0D4",
7 "@ c #5E7095",
8 "# c #EFBE61",
9 "$ c #F2D797",
10 "% c #EDCF86",
11 "& c #BAAF8F",
12 "* c #A7B4C7",
13 "= c #C9D6EB",
14 "- c #C0D1EB",
15 "; c #7E8289",
16 "> c #C39033",
17 ", c #D58C1D",
18 "' c #7E440B",
19 ") c #F0C470",
20 "! c #F5F0D4",
21 "~ c #DDD6B5",
22 "{ c #8695A8",
23 "] c #7285A7",
24 "^ c #7786A1",
25 "/ c #7A879C",
26 "( c #69748E",
27 "_ c #946339",
28 ": c #F67202",
29 "< c #A44102",
30 "[ c #F0C36E",
31 "} c #F4EBCC",
32 "| c #ECDCAF",
33 "1 c #CDC29B",
34 "2 c #C1B486",
35 "3 c #C3A86B",
36 "4 c #B8924A",
37 "5 c #B17B31",
38 "6 c #C66C1C",
39 "7 c #DE6610",
40 "8 c #944311",
41 "9 c #F3E7C5",
42 "0 c #F4E1AA",
43 "a c #F7DF9B",
44 "b c #F8D781",
45 "c c #F7C353",
46 "d c #CFA555",
47 "e c #B8B7AC",
48 "f c #C2B1AA",
49 "g c #B7AAAC",
50 "h c #9BA0B2",
51 "i c #55739A",
52 "j c #F3E3B5",
53 "k c #F3D893",
54 "l c #F3D485",
55 "m c #F4C663",
56 "n c #F3AA27",
57 "o c #BC9656",
58 "p c #C5E2FF",
59 "q c #BFDAFB",
60 "r c #ADCFFC",
61 "s c #A9CCFD",
62 "t c #6EABF2",
63 "u c #2061A8",
64 "v c #F0C36D",
65 "w c #F3E2AD",
66 "x c #F3D890",
67 "y c #F3CC73",
68 "z c #F4B63E",
69 "A c #F3A216",
70 "B c #BC9859",
71 "C c #CDE6FE",
72 "D c #C8DFFB",
73 "E c #BAD6FB",
74 "F c #A8CCFB",
75 "G c #5DA3F8",
76 "H c #218AF6",
77 "I c #F3E0AF",
78 "J c #F3D181",
79 "K c #F3C056",
80 "L c #F4B539",
81 "M c #F2AB22",
82 "N c #BC9C60",
83 "O c #CCE5FE",
84 "P c #C7DEFB",
85 "Q c #B8D5FB",
86 "R c #BBD5FD",
87 "S c #ABCAFE",
88 "T c #6CB0FF",
89 "U c #F3DDA7",
90 "V c #F3C564",
91 "W c #F3BC4C",
92 "X c #F4B63C",
93 "Y c #F3AC26",
94 "Z c #BC9E63",
95 "` c #CAE4FF",
96 " .c #BCD7FB",
97 "..c #A4C8FB",
98 "+.c #92BBFB",
99 "@.c #8EB7FB",
100 "#.c #72B3FE",
101 "$.c #F3D99A",
102 "%.c #F3BD50",
103 "&.c #F3BA45",
104 "*.c #F4B53B",
105 "=.c #F3AC25",
106 "-.c #BC9D63",
107 ";.c #CAE5FF",
108 ">.c #BBD6FB",
109 ",.c #A1C5FB",
110 "'.c #99C1FB",
111 ").c #9CC1FC",
112 "!.c #7CB9FE",
113 "~.c #F5C870",
114 "{.c #F8DC9B",
115 "].c #F8C65C",
116 "^.c #F8C252",
117 "/.c #F8BE49",
118 "(.c #F7B534",
119 "_.c #BFA46C",
120 ":.c #CBE4FF",
121 "<.c #B7D3FB",
122 "[.c #A4C6FB",
123 "}.c #A0C4FB",
124 "|.c #A2C4FC",
125 "1.c #80BDFF",
126 "2.c #B08749",
127 "3.c #B78958",
128 "4.c #B48041",
129 "5.c #B47D3A",
130 "6.c #B47C36",
131 "7.c #B3742B",
132 "8.c #927D68",
133 "9.c #C4E7FF",
134 "0.c #C1DEFE",
135 "a.c #B4D6FE",
136 "b.c #AED3FE",
137 "c.c #AED2FE",
138 "d.c #7DC1FF",
139 "e.c #303341",
140 "f.c #3A7CBA",
141 "g.c #3C78B3",
142 "h.c #3975B3",
143 "i.c #3774B3",
144 "j.c #3674B3",
145 "k.c #2570B9",
146" . + @ ",
147"# $ % & * = - ; > , ' ",
148") ! ~ { ] ^ / ( _ : < ",
149"[ } | 1 2 3 4 5 6 7 8 ",
150"[ 9 0 a b c d e f g h i ",
151"[ j k l m n o p q r s t u ",
152"v w x y z A B C D E F G H ",
153"v I J K L M N O P Q R S T ",
154"[ U V W X Y Z ` ...+.@.#. ",
155"v $.%.&.*.=.-.;.>.,.'.).!. ",
156"~.{.].^./.(._.:.<.[.}.|.1. ",
157"2.3.4.5.6.7.8.9.0.a.b.c.d. ",
158" e.f.g.h.i.j.k. ",
159" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/quit_icon.xpm b/noncore/apps/zsafe/pics/zsafe/quit_icon.xpm
deleted file mode 100644
index 5e1b983..0000000
--- a/noncore/apps/zsafe/pics/zsafe/quit_icon.xpm
+++ b/dev/null
@@ -1,120 +0,0 @@
1/* XPM */
2static char * quit_icon_xpm[] = {
3"14 14 103 2",
4 " c None",
5 ". c #C50000",
6 "+ c #C20000",
7 "@ c #CB0000",
8 "# c #D51313",
9 "$ c #E44A4A",
10 "% c #ED6F6F",
11 "& c #EC7070",
12 "* c #E05050",
13 "= c #C91A1A",
14 "- c #B30000",
15 "; c #CD0000",
16 "> c #E53B3B",
17 ", c #FBB1B1",
18 "' c #FFD6D6",
19 ") c #FFD9D9",
20 "! c #FFD7D7",
21 "~ c #FBBCBC",
22 "{ c #DB4C4C",
23 "] c #B00000",
24 "^ c #CA0000",
25 "/ c #E52F2F",
26 "( c #FEADAD",
27 "_ c #FFBDBD",
28 ": c #FFB3B3",
29 "< c #FEB1B1",
30 "[ c #D84343",
31 "} c #A60000",
32 "| c #D50808",
33 "1 c #FB7272",
34 "2 c #FFBCBC",
35 "3 c #FFFFFF",
36 "4 c #FFE7E7",
37 "5 c #FF9B9B",
38 "6 c #FFBBBB",
39 "7 c #FA7171",
40 "8 c #B90C0C",
41 "9 c #E41B1B",
42 "0 c #FF6464",
43 "a c #FF7474",
44 "b c #FFE0E0",
45 "c c #FCC6C6",
46 "d c #F63535",
47 "e c #F30E0E",
48 "f c #D00202",
49 "g c #EC1C1C",
50 "h c #FF3F3F",
51 "i c #FF5252",
52 "j c #FFD2D2",
53 "k c #F31C1C",
54 "l c #F20000",
55 "m c #DC0000",
56 "n c #9B0000",
57 "o c #C10000",
58 "p c #EC0A0A",
59 "q c #FF1616",
60 "r c #FF3131",
61 "s c #FFCECE",
62 "t c #F41C1C",
63 "u c #F40000",
64 "v c #970000",
65 "w c #E10000",
66 "x c #FE0101",
67 "y c #FE1B1B",
68 "z c #FFC5C5",
69 "A c #FFC6C6",
70 "B c #FDC4C4",
71 "C c #FA1A1A",
72 "D c #FA0000",
73 "E c #CF0000",
74 "F c #CB0202",
75 "G c #FC0909",
76 "H c #FF6D6D",
77 "I c #FFC8C8",
78 "J c #FF2525",
79 "K c #FB0909",
80 "L c #AE0202",
81 "M c #B30101",
82 "N c #DE1313",
83 "O c #FF2828",
84 "P c #FF7E7E",
85 "Q c #FF3A3A",
86 "R c #FF2323",
87 "S c #FE2828",
88 "T c #D01313",
89 "U c #8E0101",
90 "V c #B00404",
91 "W c #DB2121",
92 "X c #FC3B3B",
93 "Y c #FF3D3D",
94 "Z c #FB3B3B",
95 "` c #D02121",
96 " .c #930404",
97 "..c #A50202",
98 "+.c #BB1616",
99 "@.c #D73131",
100 "#.c #E63F3F",
101 "$.c #E53F3F",
102 "%.c #D33131",
103 "&.c #AF1616",
104 "*.c #8E0202",
105 "=.c #9B0505",
106 "-.c #970505",
107" . + ",
108" @ # $ % & * = - ",
109" ; > , ' ) ) ! ~ { ] ",
110" ^ / ( ' _ : : _ ' < [ } ",
111" | 1 2 3 4 5 5 4 3 6 7 8 ",
112" 9 0 a ) 3 b b 3 c d e f ",
113". g h h i j 3 3 c k l l m n ",
114"o p q q r s 3 3 c t u u m v ",
115" w x y z 3 A A 3 B C D E ",
116" F G H 3 I J J I 3 H K L ",
117" M N O P Q R R Q P S T U ",
118" V W X Y Y Y Y Z ` . ",
119" ..+.@.#.$.%.&.*. ",
120" =.-. "};
diff --git a/noncore/apps/zsafe/pics/zsafe/save.xpm b/noncore/apps/zsafe/pics/zsafe/save.xpm
deleted file mode 100644
index f7e5cf3..0000000
--- a/noncore/apps/zsafe/pics/zsafe/save.xpm
+++ b/dev/null
@@ -1,117 +0,0 @@
1/* XPM */
2static char * save_xpm[] = {
3"14 14 100 2",
4 " c None",
5 ". c #788F79",
6 "+ c #36B43E",
7 "@ c #52A357",
8 "# c #5E5E5E",
9 "$ c #949494",
10 "% c #9D9E9D",
11 "& c #E9F8E9",
12 "* c #E6F4E6",
13 "= c #E6F5E6",
14 "- c #E5F4E5",
15 "; c #E4F3E4",
16 "> c #C3CBC3",
17 ", c #595959",
18 "' c #8F8F8F",
19 ") c #999999",
20 "! c #FAFAFA",
21 "~ c #F6F6F6",
22 "{ c #F5F5F5",
23 "] c #F4F4F4",
24 "^ c #F2F2F2",
25 "/ c #EEEEEE",
26 "( c #EAEAEA",
27 "_ c #BEBEBE",
28 ": c #575757",
29 "< c #8E8E8E",
30 "[ c #9B9B9B",
31 "} c #F8F8F8",
32 "| c #F3F3F3",
33 "1 c #F1F1F1",
34 "2 c #EBEBEB",
35 "3 c #E5E5E5",
36 "4 c #DFDFDF",
37 "5 c #DBDBDB",
38 "6 c #AEAEAE",
39 "7 c #4D4D4D",
40 "8 c #9D9D9D",
41 "9 c #E7E7E7",
42 "0 c #E1E1E1",
43 "a c #DADADA",
44 "b c #D4D4D4",
45 "c c #CECECE",
46 "d c #C9C9C9",
47 "e c #484848",
48 "f c #909090",
49 "g c #8C8C8C",
50 "h c #C4C4C4",
51 "i c #BDBDBD",
52 "j c #B5B5B5",
53 "k c #AFAFAF",
54 "l c #AAAAAA",
55 "m c #A4A4A4",
56 "n c #9C9C9C",
57 "o c #797979",
58 "p c #444444",
59 "q c #7D7D7D",
60 "r c #767676",
61 "s c #6E6E6E",
62 "t c #656565",
63 "u c #5D5D5D",
64 "v c #5C5C5C",
65 "w c #585858",
66 "x c #515151",
67 "y c #3B3B3B",
68 "z c #888888",
69 "A c #737373",
70 "B c #C2C2C2",
71 "C c #C7C7C7",
72 "D c #ABABAB",
73 "E c #606060",
74 "F c #353535",
75 "G c #828282",
76 "H c #6D6D6D",
77 "I c #D9D9D9",
78 "J c #A9A9A9",
79 "K c #BFBFBF",
80 "L c #B3B3B3",
81 "M c #424242",
82 "N c #313131",
83 "O c #7E7E7E",
84 "P c #6B6B6B",
85 "Q c #747474",
86 "R c #979797",
87 "S c #A0A0A0",
88 "T c #9E9E9E",
89 "U c #A2A2A2",
90 "V c #404040",
91 "W c #2F2F2F",
92 "X c #636363",
93 "Y c #B0B0B0",
94 "Z c #929292",
95 "` c #B8B8B8",
96 " .c #3C3C3C",
97 "..c #252525",
98 "+.c #191919",
99 "@.c #1F1F1F",
100 "#.c #292929",
101 "$.c #282828",
102 "%.c #1A1A1A",
103 "&.c #101010",
104" ",
105" . + + + + + + + @ # ",
106" $ % & * = = = - ; > , ",
107" ' ) ! ~ { ] ^ / ( _ : ",
108" < [ } | 1 2 3 4 5 6 7 ",
109" ' 8 ^ 9 0 a b c d [ e ",
110" f g h i j k l m n o p ",
111" ' q r s t u v v w x y ",
112" z A h B C C B D E e F ",
113" G H I o J K L 8 : M N ",
114" O P C Q R S T U : V W ",
115" X Y Z < [ J ` , ... ",
116" +.@.#.#.#.#.$.%.&. ",
117" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/trash.xpm b/noncore/apps/zsafe/pics/zsafe/trash.xpm
deleted file mode 100644
index df85d02..0000000
--- a/noncore/apps/zsafe/pics/zsafe/trash.xpm
+++ b/dev/null
@@ -1,127 +0,0 @@
1/* XPM */
2static char * trash_xpm[] = {
3"14 14 110 2",
4 " c None",
5 ". c #BEBEBD",
6 "+ c #B2B2B2",
7 "@ c #A5A5A6",
8 "# c #979797",
9 "$ c #8B8B8C",
10 "% c #DCDDDD",
11 "& c #D4D4D4",
12 "* c #C2C3C3",
13 "= c #B4B5B4",
14 "- c #A5A5A5",
15 "; c #969698",
16 "> c #8C8C8D",
17 ", c #7D7E7E",
18 "' c #717071",
19 ") c #C8C8C8",
20 "! c #EAEAEA",
21 "~ c #C3C4C3",
22 "{ c #B9BABA",
23 "] c #AFAFB0",
24 "^ c #A2A2A2",
25 "/ c #959495",
26 "( c #8C8C8C",
27 "_ c #7B7C7C",
28 ": c #676767",
29 "< c #535353",
30 "[ c #ABACAC",
31 "} c #DBDBDA",
32 "| c #D1D1D1",
33 "1 c #C5C5C5",
34 "2 c #B5B5B5",
35 "3 c #A3A3A4",
36 "4 c #9A999A",
37 "5 c #848484",
38 "6 c #626262",
39 "7 c #474747",
40 "8 c #A4A5A5",
41 "9 c #C2C2C2",
42 "0 c #C6C6C5",
43 "a c #BBBBBB",
44 "b c #AEAEAE",
45 "c c #9D9D9D",
46 "d c #939393",
47 "e c #7B7B7C",
48 "f c #595959",
49 "g c #494949",
50 "h c #A1A1A1",
51 "i c #B6B6B6",
52 "j c #A9AAA9",
53 "k c #9B9B9B",
54 "l c #7F7F7F",
55 "m c #686868",
56 "n c #4E4E4E",
57 "o c #4B4A4B",
58 "p c #BEBEBE",
59 "q c #EDEDED",
60 "r c #CFCFCF",
61 "s c #ABABAB",
62 "t c #A0A0A0",
63 "u c #939394",
64 "v c #888889",
65 "w c #696969",
66 "x c #4D4D4D",
67 "y c #484848",
68 "z c #C0C0C0",
69 "A c #ECECEC",
70 "B c #CDCDCD",
71 "C c #AAAAAA",
72 "D c #9F9F9F",
73 "E c #929393",
74 "F c #8A8A8A",
75 "G c #7A7A7A",
76 "H c #5E5E5E",
77 "I c #BCBCBC",
78 "J c #E0E0E0",
79 "K c #C6C6C6",
80 "L c #A9A9A9",
81 "M c #9E9E9D",
82 "N c #909190",
83 "O c #868687",
84 "P c #757575",
85 "Q c #5C5C5C",
86 "R c #B9B9B9",
87 "S c #A8A8A8",
88 "T c #8F8F8E",
89 "U c #707070",
90 "V c #575757",
91 "W c #C9C9C9",
92 "X c #BABABA",
93 "Y c #A7A8A8",
94 "Z c #9C9C9C",
95 "` c #8E8D8C",
96 " .c #828281",
97 "..c #6C6C6C",
98 "+.c #525252",
99 "@.c #3C3C3C",
100 "#.c #BBBABB",
101 "$.c #A7A7A7",
102 "%.c #9A9A9A",
103 "&.c #8B8B8B",
104 "*.c #7E7E7E",
105 "=.c #4C4C4C",
106 "-.c #302F2F",
107 ";.c #ACACAC",
108 ">.c #A3A3A3",
109 ",.c #979798",
110 "'.c #868686",
111 ").c #777777",
112 "!.c #3E3E3E",
113 "~.c #212121",
114" . + @ # $ ",
115" % & * = - ; > , ' ",
116") ! ~ { ] ^ / ( _ : < ",
117"[ } | | 1 2 3 4 5 6 7 ",
118"8 9 1 0 a b c d e f g ",
119" h i 2 j k $ l m n o ",
120" p q r s t u v w x y ",
121" z A B C D E F G H g ",
122" I J K L M N O P Q n ",
123" R & z S c T 5 U V g ",
124" i W X Y Z ` ...+.@. ",
125" + #.+ $.%.&.*.: =.-. ",
126" ;.$.L >.,.'.).f !.~. ",
127" "};
diff --git a/noncore/apps/zsafe/pics/zsafe/zsafe.png b/noncore/apps/zsafe/pics/zsafe/zsafe.png
deleted file mode 100644
index 34f5170..0000000
--- a/noncore/apps/zsafe/pics/zsafe/zsafe.png
+++ b/dev/null
Binary files differ
diff --git a/noncore/apps/zsafe/pics/zsafe/zsafe.xpm b/noncore/apps/zsafe/pics/zsafe/zsafe.xpm
deleted file mode 100644
index 75a2551..0000000
--- a/noncore/apps/zsafe/pics/zsafe/zsafe.xpm
+++ b/dev/null
@@ -1,306 +0,0 @@
1/* XPM */
2static char * zsafe_xpm[] = {
3"32 32 271 2",
4 " c None",
5 ". c #8E8EA9",
6 "+ c #8F8FA9",
7 "@ c #8C8CA7",
8 "# c #8B8BA6",
9 "$ c #AEAEC1",
10 "% c #CACAD6",
11 "& c #DEDEE5",
12 "* c #DBDBE2",
13 "= c #CDCDD7",
14 "- c #A9A9BC",
15 "; c #8D8DA8",
16 "> c #83839C",
17 ", c #8686A2",
18 "' c #A4A4B9",
19 ") c #EEEEF1",
20 "! c #FEFEFE",
21 "~ c #FFFFFF",
22 "{ c #FDFDFD",
23 "] c #E4E4E8",
24 "^ c #9F9FB4",
25 "/ c #82829D",
26 "( c #80809D",
27 "_ c #B0B0C2",
28 ": c #FBFBFB",
29 "< c #F3F3F3",
30 "[ c #EDEDED",
31 "} c #EBEBEB",
32 "| c #ECECEC",
33 "1 c #F6F6F6",
34 "2 c #FAFAFA",
35 "3 c #A9A9BB",
36 "4 c #7B7B97",
37 "5 c #7A7A98",
38 "6 c #9B9BB1",
39 "7 c #F2F2F2",
40 "8 c #D3D3D9",
41 "9 c #B6B6C4",
42 "0 c #AEAEBD",
43 "a c #CACAD0",
44 "b c #D9D9D9",
45 "c c #E5E5E5",
46 "d c #FCFCFC",
47 "e c #9898AC",
48 "f c #6B6B85",
49 "g c #777795",
50 "h c #ECECEF",
51 "i c #F0F0F0",
52 "j c #E3E3E5",
53 "k c #9292A9",
54 "l c #757592",
55 "m c #666680",
56 "n c #676780",
57 "o c #72728F",
58 "p c #8888A1",
59 "q c #C0C0C5",
60 "r c #DADADA",
61 "s c #E5E5E6",
62 "t c #7B7B98",
63 "u c #6F6F8E",
64 "v c #A3A3B6",
65 "w c #F4F4F4",
66 "x c #E9E9E9",
67 "y c #8787A0",
68 "z c #60607B",
69 "A c #5E5E78",
70 "B c #767693",
71 "C c #C3C3C5",
72 "D c #E2E2E2",
73 "E c #9696AA",
74 "F c #6A6A89",
75 "G c #E8E8E8",
76 "H c #B7B7C3",
77 "I c #656583",
78 "J c #636380",
79 "K c #8C8CA0",
80 "L c #C4C4C4",
81 "M c #BFBFC9",
82 "N c #626280",
83 "O c #666686",
84 "P c #EFEFF1",
85 "Q c #F5F5F5",
86 "R c #E3E3E3",
87 "S c #85859D",
88 "T c #46465C",
89 "U c #6B6B8A",
90 "V c #BCBCBC",
91 "W c #EEEEEE",
92 "X c #DFDFE1",
93 "Y c #606082",
94 "Z c #F8F8F8",
95 "` c #DEDEDE",
96 " .c #7F7F98",
97 "..c #B7B7B7",
98 "+.c #5B5B7D",
99 "@.c #EAEAEA",
100 "#.c #7A7A93",
101 "$.c #B6B6B6",
102 "%.c #D7D7D7",
103 "&.c #E7E7E7",
104 "*.c #555578",
105 "=.c #D5D5D5",
106 "-.c #75758F",
107 ";.c #D3D3D3",
108 ">.c #E1E1E1",
109 ",.c #545477",
110 "'.c #E4E4E4",
111 ").c #DDDDDD",
112 "!.c #D0D0D0",
113 "~.c #73738D",
114 "{.c #CFCFCF",
115 "].c #DBDBDB",
116 "^.c #D7922A",
117 "/.c #977451",
118 "(.c #DCB985",
119 "_.c #D9B682",
120 ":.c #D3B07C",
121 "<.c #A6835B",
122 "[.c #A67632",
123 "}.c #C08326",
124 "|.c #CF8C29",
125 "1.c #D18E29",
126 "2.c #C8A571",
127 "3.c #D3B07B",
128 "4.c #D8B581",
129 "5.c #B17823",
130 "6.c #CB892A",
131 "7.c #D08C2A",
132 "8.c #DDAA48",
133 "9.c #EAC766",
134 "0.c #BD7F27",
135 "a.c #C1802A",
136 "b.c #E5C76C",
137 "c.c #FFFD99",
138 "d.c #FFFC75",
139 "e.c #FFFC6F",
140 "f.c #E5C760",
141 "g.c #B27529",
142 "h.c #ECD880",
143 "i.c #FFF242",
144 "j.c #FFF23C",
145 "k.c #FFE635",
146 "l.c #ECA41E",
147 "m.c #A46928",
148 "n.c #E8CF65",
149 "o.c #FFEA37",
150 "p.c #FFB81C",
151 "q.c #E89A1A",
152 "r.c #955E28",
153 "s.c #E5C863",
154 "t.c #FFE233",
155 "u.c #FFDF31",
156 "v.c #FFB51B",
157 "w.c #FFA814",
158 "x.c #E59418",
159 "y.c #875327",
160 "z.c #E1C161",
161 "A.c #FFDA2E",
162 "B.c #FFD42B",
163 "C.c #FFB319",
164 "D.c #FFA713",
165 "E.c #FFA412",
166 "F.c #E18E16",
167 "G.c #784726",
168 "H.c #DDBA5E",
169 "I.c #FFD12A",
170 "J.c #FFC523",
171 "K.c #FFAB15",
172 "L.c #FFA613",
173 "M.c #FFA311",
174 "N.c #FFA110",
175 "O.c #DD8814",
176 "P.c #744426",
177 "Q.c #DCB65C",
178 "R.c #FFC926",
179 "S.c #FFC624",
180 "T.c #FFB41A",
181 "U.c #FFA512",
182 "V.c #FFA211",
183 "W.c #FF9F0F",
184 "X.c #FF9D0E",
185 "Y.c #DC8513",
186 "Z.c #DCB15A",
187 "`.c #FFC121",
188 " +c #FFBF20",
189 ".+c #FFBE1F",
190 "++c #FFBD1F",
191 "@+c #FFB91D",
192 "#+c #FFA914",
193 "$+c #FF9E0E",
194 "%+c #FF9C0D",
195 "&+c #FF990C",
196 "*+c #DC8211",
197 "=+c #DCAD58",
198 "-+c #FFB81D",
199 ";+c #FFBC1F",
200 ">+c #FFBC1E",
201 ",+c #FFBA1D",
202 "'+c #FFB71C",
203 ")+c #FFB51A",
204 "!+c #FFB219",
205 "~+c #FFAF18",
206 "{+c #FFAD16",
207 "]+c #FFAA15",
208 "^+c #FFA813",
209 "/+c #FFA00F",
210 "(+c #FF9A0C",
211 "_+c #FF980B",
212 ":+c #FF950A",
213 "<+c #DC7F10",
214 "[+c #DCA955",
215 "}+c #FFB118",
216 "|+c #FFBB1E",
217 "1+c #FFB61B",
218 "2+c #FFB31A",
219 "3+c #FFAE17",
220 "4+c #FFAC16",
221 "5+c #FFA411",
222 "6+c #FF970A",
223 "7+c #FF9409",
224 "8+c #FF9108",
225 "9+c #DC7C0E",
226 "0+c #DCA553",
227 "a+c #FFB018",
228 "b+c #FF9B0D",
229 "c+c #FF9308",
230 "d+c #FF9007",
231 "e+c #FF8D06",
232 "f+c #DC790D",
233 "g+c #DCAC57",
234 "h+c #FFB119",
235 "i+c #FF970B",
236 "j+c #FF9208",
237 "k+c #FF8F06",
238 "l+c #FF8C05",
239 "m+c #FF8A04",
240 "n+c #DC760B",
241 "o+c #C29759",
242 "p+c #FFBE31",
243 "q+c #FF960A",
244 "r+c #FF9309",
245 "s+c #FF8E06",
246 "t+c #FF8B04",
247 "u+c #FF8803",
248 "v+c #FF8602",
249 "w+c #C26912",
250 "x+c #714225",
251 "y+c #9F713F",
252 "z+c #BA7E27",
253 "A+c #BA7A1F",
254 "B+c #BA781E",
255 "C+c #BA771D",
256 "D+c #BA761D",
257 "E+c #BA741C",
258 "F+c #BA731B",
259 "G+c #BA721B",
260 "H+c #BA711A",
261 "I+c #BA6F19",
262 "J+c #BA6E19",
263 "K+c #BA6D18",
264 "L+c #BA6B17",
265 "M+c #BA6A16",
266 "N+c #BA6916",
267 "O+c #BA6715",
268 "P+c #BA6614",
269 "Q+c #BA6514",
270 "R+c #9F581A",
271 "S+c #6A3E23",
272 "T+c #653B21",
273 "U+c #6B3F23",
274 "V+c #5B351E",
275" ",
276" . + . @ ",
277" # @ $ % & * = - ; > ",
278" , ' ) ! ~ ~ ~ ~ { ] ^ / ",
279" ( _ ! ~ : < [ } | 1 ~ 2 3 4 ",
280" 5 6 ! ! 7 } 8 9 0 a b c d d e f ",
281" g h ! i j k l m n o p q r ~ s t ",
282" u v ~ w x y z A B C D ~ E z ",
283" F = ! G H I J K L ~ M N ",
284" O P Q R S T U V W X O ",
285" Y Z i ` . Y ..r | Y ",
286" +.7 @.r #. +.$.%.&.+. ",
287" *.} R =.-. *.$.;.>.*. ",
288" ,.'.).!.~. ,.$.{.].,. ",
289" ^./.(._.:.<.[.}.|.1.1.1.1.1./.2.3.4./.5. ",
290" 6.7.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.7.0. ",
291" a.b.c.d.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.f.a. ",
292" g.h.i.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.k.l.g. ",
293" m.n.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.k.p.q.m. ",
294" r.s.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.v.w.x.r. ",
295" y.z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.B.C.D.E.F.y. ",
296" G.H.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.J.K.L.M.N.O.G. ",
297" P.Q.R.R.R.R.R.R.R.R.R.R.R.R.R.S.T.D.U.V.W.X.Y.P. ",
298" P.Z.`.`.`.`.`.`. + +.+++++@+T.#+L.M.N.$+%+&+*+P. ",
299" P.=+-+-+;+++>+,+'+)+!+~+{+]+^+U.V./+X.(+_+:+<+P. ",
300" P.[+}+++.+|+@+1+2+}+3+4+#+L.5+N.W.%+&+6+7+8+9+P. ",
301" P.0+|+++,+p.v.!+a+{+]+w.U.M./+X.b+_+:+c+d+e+f+P. ",
302" P.g+>+@+1+T.h+3+4+#+D.E.N.W.%+&+i+7+j+k+l+m+n+P. ",
303" P.o+p+v.!+a+{+K.w.U.M./+$+b+_+q+r+d+s+t+u+v+w+P. ",
304" x+P.y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+P.S+ ",
305" T+U+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+V+ ",
306" "};
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index 2b182f9..f70f863 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -1,820 +1,774 @@
1/**************************************************************************** 1/****************************************************************************
2** 2**
3** Created: Sat Apr 6 17:57:45 2002 3** Created: Sat Apr 6 17:57:45 2002
4** 4**
5** Author: Carsten Schneider <CarstenSchneider@t-online.de> 5** Author: Carsten Schneider <CarstenSchneider@t-online.de>
6** 6**
7** $Id$ 7** $Id$
8** 8**
9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html 9** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html
10** 10**
11** 11**
12****************************************************************************/ 12****************************************************************************/
13#include "zsafe.h" 13#include "zsafe.h"
14#include "newdialog.h" 14#include "newdialog.h"
15#include "searchdialog.h" 15#include "searchdialog.h"
16#include "categorydialog.h" 16#include "categorydialog.h"
17#include "passworddialog.h" 17#include "passworddialog.h"
18#include "infoform.h" 18#include "infoform.h"
19#include "zlistview.h" 19#include "zlistview.h"
20#include "shadedlistitem.h" 20#include "shadedlistitem.h"
21 21
22#include <opie2/oresource.h>
22#include <opie2/ofiledialog.h> 23#include <opie2/ofiledialog.h>
23#include <opie2/odebug.h> 24#include <opie2/odebug.h>
24using namespace Opie::Core; 25using namespace Opie::Core;
25using namespace Opie::Ui; 26using namespace Opie::Ui;
26 27
27#include <qclipboard.h> 28#include <qclipboard.h>
28 29
29#include <sys/types.h> 30#include <sys/types.h>
30#include <sys/stat.h> 31#include <sys/stat.h>
31#include <fcntl.h> 32#include <fcntl.h>
32#include <stdlib.h> 33#include <stdlib.h>
33#include <unistd.h> 34#include <unistd.h>
34#include <string.h> 35#include <string.h>
35#include <errno.h> 36#include <errno.h>
36 37
37#include <qmenubar.h> 38#include <qmenubar.h>
38#include <qpopupmenu.h> 39#include <qpopupmenu.h>
39 40
40#include <qfile.h> 41#include <qfile.h>
41#include <qpe/fileselector.h> 42#include <qpe/applnk.h>
42#include <qpe/global.h> 43#include <qpe/global.h>
43#include <qpe/qpeapplication.h> 44#include <qpe/qpeapplication.h>
44#include <qpe/resource.h>
45#include <qpe/config.h> 45#include <qpe/config.h>
46 46
47#include <qaction.h>
47#include <qtimer.h> 48#include <qtimer.h>
48#include <qlayout.h> 49#include <qlayout.h>
49#include <qmessagebox.h> 50#include <qmessagebox.h>
50#include <qfile.h> 51#include <qfile.h>
51#include <qtextstream.h> 52#include <qtextstream.h>
52#include <qheader.h> 53#include <qheader.h>
53#include <qlistview.h> 54#include <qlistview.h>
54#include <qtoolbutton.h>
55#include <qvariant.h> 55#include <qvariant.h>
56#include <qtooltip.h> 56#include <qtooltip.h>
57#include <qwhatsthis.h> 57#include <qwhatsthis.h>
58#include <qimage.h> 58#include <qimage.h>
59#include <qpixmap.h> 59#include <qpixmap.h>
60#include <qlineedit.h> 60#include <qlineedit.h>
61#include <qmultilineedit.h> 61#include <qmultilineedit.h>
62#include <qregexp.h> 62#include <qregexp.h>
63#include <qdir.h> 63#include <qdir.h>
64#include <qtextbrowser.h> 64#include <qtextbrowser.h>
65#include <qlabel.h> 65#include <qlabel.h>
66#include <qcombobox.h> 66#include <qcombobox.h>
67#include <qtoolbar.h>
67 68
68#include "krc2.h" 69#include "krc2.h"
69 70
70#include "wait.h" 71#include "wait.h"
71 72
72int DeskW, DeskH;
73QApplication *appl;
74ZSafe *zs;
75
76const QString APP_KEY = ""; 73const QString APP_KEY = "";
77 74
78// include xmp images 75// include xmp images
79#include "pics/zsafe/copy.xpm"
80#include "pics/zsafe/cut.xpm"
81#include "pics/zsafe/edit.xpm"
82#include "pics/zsafe/editdelete.xpm"
83#include "pics/zsafe/find.xpm"
84#include "pics/zsafe/folder_open.xpm"
85#include "pics/zsafe/help_icon.xpm"
86#include "pics/zsafe/new.xpm"
87#include "pics/zsafe/paste.xpm"
88#include "pics/zsafe/quit_icon.xpm"
89#include "pics/zsafe/save.xpm"
90#include "pics/zsafe/trash.xpm"
91#include "pics/zsafe/expand.xpm" 76#include "pics/zsafe/expand.xpm"
92#include "pics/zsafe/export.xpm" 77#include "pics/zsafe/export.xpm"
93#include "pics/zsafe/import.xpm" 78#include "pics/zsafe/import.xpm"
94#include "pics/zsafe/zsafe.xpm"
95 79
96static const char* const bank_cards_data[] = { 80static const char* const bank_cards_data[] = {
97"14 14 16 1", 81"14 14 16 1",
98". c None", 82". c None",
99"# c #000000", 83"# c #000000",
100"b c #0000de", 84"b c #0000de",
101"a c #0000e6", 85"a c #0000e6",
102"j c #41de83", 86"j c #41de83",
103"k c #4acecd", 87"k c #4acecd",
104"h c #4aced5", 88"h c #4aced5",
105"g c #5a40cd", 89"g c #5a40cd",
106"d c #5a44d5", 90"d c #5a44d5",
107"l c #9440d5", 91"l c #9440d5",
108"m c #b4ce4a", 92"m c #b4ce4a",
109"n c #cd4883", 93"n c #cd4883",
110"e c #d5ae10", 94"e c #d5ae10",
111"f c #de3ce6", 95"f c #de3ce6",
112"i c #e640e6", 96"i c #e640e6",
113"c c #ffffff", 97"c c #ffffff",
114"..............", 98"..............",
115".###########..", 99".###########..",
116".#ababababa#..", 100".#ababababa#..",
117".#babbbabbb#..", 101".#babbbabbb#..",
118".#ccccccccc#..", 102".#ccccccccc#..",
119".#cdcefcghc#..", 103".#cdcefcghc#..",
120".#ccccccccc#..", 104".#ccccccccc#..",
121".#cicjkclic#..", 105".#cicjkclic#..",
122".#ccccccccc#..", 106".#ccccccccc#..",
123".#cmchlcnec#..", 107".#cmchlcnec#..",
124".#ccccccccc#..", 108".#ccccccccc#..",
125".###########..", 109".###########..",
126"..............", 110"..............",
127".............."}; 111".............."};
128 112
129 113
130static const char* const passwords_data[] = { 114static const char* const passwords_data[] = {
131"16 16 20 1", 115"16 16 20 1",
132". c None", 116". c None",
133"# c #000000", 117"# c #000000",
134"r c #000083", 118"r c #000083",
135"p c #0000c5", 119"p c #0000c5",
136"q c #0000ff", 120"q c #0000ff",
137"n c #008100", 121"n c #008100",
138"l c #00c200", 122"l c #00c200",
139"m c #00ff00", 123"m c #00ff00",
140"j c #838100", 124"j c #838100",
141"a c #c55900", 125"a c #c55900",
142"h c #c5c200", 126"h c #c5c200",
143"o c #c5c2ff", 127"o c #c5c2ff",
144"k c #c5ffc5", 128"k c #c5ffc5",
145"f c #ff0000", 129"f c #ff0000",
146"d c #ff8100", 130"d c #ff8100",
147"b c #ffaa5a", 131"b c #ffaa5a",
148"e c #ffc2c5", 132"e c #ffc2c5",
149"c c #ffdeac", 133"c c #ffdeac",
150"i c #ffff00", 134"i c #ffff00",
151"g c #ffffc5", 135"g c #ffffc5",
152"............###.", 136"............###.",
153"...........#abb#", 137"...........#abb#",
154"..........#cbab#", 138"..........#cbab#",
155".........#cbdd#.", 139".........#cbdd#.",
156"######..#cbdd#..", 140"######..#cbdd#..",
157"#eeff#..#add#...", 141"#eeff#..#add#...",
158"#eeff#######....", 142"#eeff#######....",
159"#ccdbdd#........", 143"#ccdbdd#........",
160"#dddbdd###......", 144"#dddbdd###......",
161"#gghihhjj#......", 145"#gghihhjj#......",
162"#hhhihhjj###....", 146"#hhhihhjj###....",
163"#kklmllnnnn#....", 147"#kklmllnnnn#....",
164"#lllmllnnnn#....", 148"#lllmllnnnn#....",
165"#oopqpprprr#....", 149"#oopqpprprr#....",
166"#oopqpprprr#....", 150"#oopqpprprr#....",
167"############...."}; 151"############...."};
168 152
169static const char* const software_data[] = { 153static const char* const software_data[] = {
170"16 16 5 1", 154"16 16 5 1",
171". c None", 155". c None",
172"# c #000000", 156"# c #000000",
173"b c #838183", 157"b c #838183",
174"c c #c5ffff", 158"c c #c5ffff",
175"a c #ffffff", 159"a c #ffffff",
176"................", 160"................",
177".##############.", 161".##############.",
178"#aaaaaaaaaaaaaa#", 162"#aaaaaaaaaaaaaa#",
179"#abbbbbbbbbbbbb#", 163"#abbbbbbbbbbbbb#",
180"#ab##########ab#", 164"#ab##########ab#",
181"#ab#c########ab#", 165"#ab#c########ab#",
182"#ab#c#c######ab#", 166"#ab#c#c######ab#",
183"#ab##########ab#", 167"#ab##########ab#",
184"#ab##########ab#", 168"#ab##########ab#",
185"#ab##########ab#", 169"#ab##########ab#",
186"#ab##########ab#", 170"#ab##########ab#",
187"#ab##########ab#", 171"#ab##########ab#",
188"#aaaaaaaaaaaaab#", 172"#aaaaaaaaaaaaab#",
189"#bbbbbbbbbbbbbb#", 173"#bbbbbbbbbbbbbb#",
190".##############.", 174".##############.",
191"................"}; 175"................"};
192 176
193static const char* const general_data[] = { 177static const char* const general_data[] = {
194"14 14 98 2", 178"14 14 98 2",
195"Qt c None", 179"Qt c None",
196".k c #000000", 180".k c #000000",
197"#x c #080808", 181"#x c #080808",
198"#F c #101008", 182"#F c #101008",
199"#q c #101010", 183"#q c #101010",
200"#i c #101410", 184"#i c #101410",
201"## c #101810", 185"## c #101810",
202".m c #181818", 186".m c #181818",
203".3 c #181c18", 187".3 c #181c18",
204".I c #182018", 188".I c #182018",
205".T c #202420", 189".T c #202420",
206"#D c #202820", 190"#D c #202820",
207"#y c #292c29", 191"#y c #292c29",
208".c c #293029", 192".c c #293029",
209".d c #313031", 193".d c #313031",
210"#E c #313429", 194"#E c #313429",
211"#r c #313831", 195"#r c #313831",
212".j c #393c31", 196".j c #393c31",
213"#j c #394039", 197"#j c #394039",
214"#C c #414841", 198"#C c #414841",
215".w c #4a554a", 199".w c #4a554a",
216".a c #4a594a", 200".a c #4a594a",
217".# c #525052", 201".# c #525052",
218".l c #52594a", 202".l c #52594a",
219"#f c #525952", 203"#f c #525952",
220"#v c #525d52", 204"#v c #525d52",
221".O c #5a4c4a", 205".O c #5a4c4a",
222".9 c #5a595a", 206".9 c #5a595a",
223".A c #5a5d52", 207".A c #5a5d52",
224".B c #624c52", 208".B c #624c52",
225".0 c #625552", 209".0 c #625552",
226"#o c #626562", 210"#o c #626562",
227".R c #626962", 211".R c #626962",
228"#. c #626d5a", 212"#. c #626d5a",
229"#p c #626d62", 213"#p c #626d62",
230".2 c #627162", 214".2 c #627162",
231"#h c #6a6d62", 215"#h c #6a6d62",
232"#z c #6a7562", 216"#z c #6a7562",
233"#w c #6a756a", 217"#w c #6a756a",
234".C c #73656a", 218".C c #73656a",
235".P c #73696a", 219".P c #73696a",
236"#a c #737d6a", 220"#a c #737d6a",
237".U c #738573", 221".U c #738573",
238".E c #7b817b", 222".E c #7b817b",
239"#B c #7b857b", 223"#B c #7b857b",
240"#s c #7b897b", 224"#s c #7b897b",
241"#n c #7b917b", 225"#n c #7b917b",
242".b c #838d83", 226".b c #838d83",
243".7 c #839583", 227".7 c #839583",
244".n c #8b7d7b", 228".n c #8b7d7b",
245"#g c #8b8583", 229"#g c #8b8583",
246".g c #8b858b", 230".g c #8b858b",
247".r c #8b898b", 231".r c #8b898b",
248".s c #8b8d8b", 232".s c #8b8d8b",
249".i c #8b9183", 233".i c #8b9183",
250".8 c #8b918b", 234".8 c #8b918b",
251"#A c #8b9d8b", 235"#A c #8b9d8b",
252".S c #8ba183", 236".S c #8ba183",
253".Z c #94918b", 237".Z c #94918b",
254".N c #949994", 238".N c #949994",
255".F c #949d94", 239".F c #949d94",
256".x c #94a18b", 240".x c #94a18b",
257".v c #94a194", 241".v c #94a194",
258".Y c #94aa94", 242".Y c #94aa94",
259".h c #9c999c", 243".h c #9c999c",
260".Q c #9ca19c", 244".Q c #9ca19c",
261"#u c #9ca59c", 245"#u c #9ca59c",
262".H c #9caa9c", 246".H c #9caa9c",
263"#e c #9cb29c", 247"#e c #9cb29c",
264"#m c #a4b29c", 248"#m c #a4b29c",
265"#t c #a4b2a4", 249"#t c #a4b2a4",
266".M c #a4b69c", 250".M c #a4b69c",
267"#l c #a4b6a4", 251"#l c #a4b6a4",
268".z c #a4baa4", 252".z c #a4baa4",
269".f c #aca5ac", 253".f c #aca5ac",
270".q c #acaaac", 254".q c #acaaac",
271"#d c #acbeac", 255"#d c #acbeac",
272".6 c #acc2ac", 256".6 c #acc2ac",
273".o c #b4b2b4", 257".o c #b4b2b4",
274".t c #b4beb4", 258".t c #b4beb4",
275"#k c #b4c2ac", 259"#k c #b4c2ac",
276".5 c #b4cab4", 260".5 c #b4cab4",
277".D c #bdb6bd", 261".D c #bdb6bd",
278".G c #bdc6b4", 262".G c #bdc6b4",
279"#c c #bdceb4", 263"#c c #bdceb4",
280".X c #bdd2bd", 264".X c #bdd2bd",
281".4 c #bdd6bd", 265".4 c #bdd6bd",
282".1 c #c5bec5", 266".1 c #c5bec5",
283".e c #c5c2c5", 267".e c #c5c2c5",
284".u c #c5cac5", 268".u c #c5cac5",
285"#b c #c5d6c5", 269"#b c #c5d6c5",
286".J c #c5dec5", 270".J c #c5dec5",
287".p c #cdcacd", 271".p c #cdcacd",
288".W c #cddecd", 272".W c #cddecd",
289".L c #cde2cd", 273".L c #cde2cd",
290".K c #d5eacd", 274".K c #d5eacd",
291".V c #d5ead5", 275".V c #d5ead5",
292".y c #d5eed5", 276".y c #d5eed5",
293"QtQtQtQtQtQtQtQtQtQtQtQtQtQt", 277"QtQtQtQtQtQtQtQtQtQtQtQtQtQt",
294"QtQtQt.#.a.b.cQtQtQtQtQtQtQt", 278"QtQtQt.#.a.b.cQtQtQtQtQtQtQt",
295"QtQt.d.e.f.g.h.i.c.j.dQt.kQt", 279"QtQt.d.e.f.g.h.i.c.j.dQt.kQt",
296".a.l.m.n.o.p.q.r.s.t.u.v.wQt", 280".a.l.m.n.o.p.q.r.s.t.u.v.wQt",
297".x.y.z.A.B.C.D.p.q.E.F.G.H.I", 281".x.y.z.A.B.C.D.p.q.E.F.G.H.I",
298".I.J.K.L.M.N.O.P.o.p.Q.R.S.T", 282".I.J.K.L.M.N.O.P.o.p.Q.R.S.T",
299"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3", 283"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3",
300"Qt.3.X.W.4.X.5.6.7.8.9.s#.##", 284"Qt.3.X.W.4.X.5.6.7.8.9.s#.##",
301"QtQt#a.X#b#c.5.6#d#e#f#g#h#i", 285"QtQt#a.X#b#c.5.6#d#e#f#g#h#i",
302"QtQtQt#j.7#k.6#d#l#m#n#o#p#q", 286"QtQtQt#j.7#k.6#d#l#m#n#o#p#q",
303"QtQtQtQt.k#r#s#m#t.H#u#v#w#x", 287"QtQtQtQt.k#r#s#m#t.H#u#v#w#x",
304"QtQtQtQtQtQt.k#y#z.v#A#B#C#x", 288"QtQtQtQtQtQt.k#y#z.v#A#B#C#x",
305"QtQtQtQtQtQtQtQt.k#D.w#s#E.k", 289"QtQtQtQtQtQtQtQt.k#D.w#s#E.k",
306"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"}; 290"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"};
307 291
308// exit ZSafe and clear the clipboard for security reasons 292// exit ZSafe and clear the clipboard for security reasons
309 void ZSafe::exitZs (int ec) 293 void ZSafe::exitZs (int ec)
310 { 294 {
311 QClipboard *cb = QApplication::clipboard(); 295 QClipboard *cb = QApplication::clipboard();
312 cb->clear(); 296 cb->clear();
313 297
314 exit (ec); 298 exit (ec);
315 } 299 }
316 300
317 301
318// save the configuration into the file 302// save the configuration into the file
319 void ZSafe::saveConf () 303 void ZSafe::saveConf ()
320 { 304 {
321 if (conf) 305 if (conf)
322 { 306 {
323 delete conf; 307 delete conf;
324 308
325 conf = new Config ("zsafe"); 309 conf = new Config ("zsafe");
326 conf->setGroup ("zsafe"); 310 conf->setGroup ("zsafe");
327 } 311 }
328 } 312 }
329 313
330 314
331/* 315/*
332 * Constructs a ZSafe which is a child of 'parent', with the 316 * Constructs a ZSafe which is a child of 'parent', with the
333 * name 'name' and widget flags set to 'f' 317 * name 'name' and widget flags set to 'f'
334 * 318 *
335 * The dialog will by default be modeless, unless you set 'modal' to 319 * The dialog will by default be modeless, unless you set 'modal' to
336 * TRUE to construct a modal dialog. 320 * TRUE to construct a modal dialog.
337 */ 321 */
338ZSafe::ZSafe( QWidget* parent, const char* name, WFlags fl ) 322ZSafe::ZSafe( QWidget* parent, const char* name, WFlags fl )
339 : QWidget( parent, name, fl), 323 : QMainWindow( parent, name, fl),
340 Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l) 324 ListView(0l)
341{ 325{
342 zs = this;
343 appl = qApp;
344 DeskW = qApp->desktop()->width();
345 DeskH = qApp->desktop()->height();
346
347 IsCut = false; 326 IsCut = false;
348 IsCopy = false; 327 IsCopy = false;
349 modified = false; 328 modified = false;
350 showpwd = false; 329 showpwd = false;
351 330
352 // set the config file 331 // set the config file
353 cfgFile=QDir::homeDirPath(); 332 cfgFile=QDir::homeDirPath();
354 cfgFile += "/.zsafe.cfg"; 333 cfgFile += "/.zsafe.cfg";
355 // set the icon path 334 // set the icon path
356 335
357 QString qpeDir = QPEApplication::qpeDir(); 336 QString qpeDir = QPEApplication::qpeDir();
358 337
359 conf = new Config ("zsafe"); 338 conf = new Config ("zsafe");
360 conf->setGroup ("zsafePrefs"); 339 conf->setGroup ("zsafePrefs");
361 340
362 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0); 341 expandTree = conf->readNumEntry(APP_KEY+"expandTree", 0);
363 conf->setGroup ("zsafe"); 342 conf->setGroup ("zsafe");
364 343
365 QPixmap copy_img((const char**) copy_xpm); 344 QPixmap new_img = Opie::Core::OResource::loadPixmap( "new", Opie::Core::OResource::SmallIcon );
366 QPixmap cut_img((const char**) cut_xpm); 345 QPixmap edit_img = Opie::Core::OResource::loadPixmap( "edit", Opie::Core::OResource::SmallIcon );
367 QPixmap edit_img((const char**) edit_xpm); 346 QPixmap trash_img = Opie::Core::OResource::loadPixmap( "trash", Opie::Core::OResource::SmallIcon );
368 QPixmap editdelete_img((const char**) editdelete_xpm); 347 QPixmap copy_img = Opie::Core::OResource::loadPixmap( "copy", Opie::Core::OResource::SmallIcon );
369 QPixmap find_img((const char**) find_xpm); 348 QPixmap cut_img = Opie::Core::OResource::loadPixmap( "cut", Opie::Core::OResource::SmallIcon );
370 QPixmap folder_open_img((const char**) folder_open_xpm); 349 QPixmap editdelete_img = Opie::Core::OResource::loadPixmap( "editdelete", Opie::Core::OResource::SmallIcon );
371 QPixmap help_icon_img((const char**) help_icon_xpm); 350 QPixmap folder_open_img = Opie::Core::OResource::loadPixmap( "folder_open", Opie::Core::OResource::SmallIcon );
372 QPixmap new_img((const char**) new_xpm); 351 QPixmap help_icon_img = Opie::Core::OResource::loadPixmap( "help_icon", Opie::Core::OResource::SmallIcon );
373 QPixmap paste_img((const char**) paste_xpm); 352 QPixmap paste_img = Opie::Core::OResource::loadPixmap( "paste", Opie::Core::OResource::SmallIcon );
374 QPixmap quit_icon_img((const char**) quit_icon_xpm); 353 QPixmap save_img = Opie::Core::OResource::loadPixmap( "save", Opie::Core::OResource::SmallIcon );
375 QPixmap save_img((const char**) save_xpm);
376 QPixmap trash_img((const char**) trash_xpm);
377 QPixmap expand_img((const char**) expand_xpm); 354 QPixmap expand_img((const char**) expand_xpm);
378 QPixmap export_img((const char**) export_xpm); 355 QPixmap export_img((const char**) export_xpm);
379 QPixmap import_img((const char**) import_xpm); 356 QPixmap import_img((const char**) import_xpm);
380 357
381 QPixmap bank_cards( ( const char** ) bank_cards_data ); 358 QPixmap bank_cards( ( const char** ) bank_cards_data );
382 QPixmap passwords( ( const char** ) passwords_data ); 359 QPixmap passwords( ( const char** ) passwords_data );
383 QPixmap software( ( const char** ) software_data ); 360 QPixmap software( ( const char** ) software_data );
384 QPixmap general( ( const char** ) general_data ); 361 QPixmap general( ( const char** ) general_data );
385 QPixmap image0( ( const char** ) zsafe_xpm ); 362 QPixmap image0 = Opie::Core::OResource::loadPixmap( "zsafe/zsafe", Opie::Core::OResource::SmallIcon );
386 363
387 if ( !name ) 364 if ( !name )
388 setName( "ZSafe" ); 365 setName( "ZSafe" );
389 366
390 setCaption( tr( "ZSafe" ) ); 367 setCaption( tr( "ZSafe" ) );
391 QString zsafeAppDirPath = QDir::homeDirPath() + "/Documents/application/zsafe"; 368 QString zsafeAppDirPath = QDir::homeDirPath() + "/Documents/application/zsafe";
392 369
393 filename = conf->readEntry(APP_KEY+"document"); 370 filename = conf->readEntry(APP_KEY+"document");
394 if ( !QFileInfo(filename).exists() || !QDir(zsafeAppDirPath).exists() ) 371 if ( !QFileInfo(filename).exists() || !QDir(zsafeAppDirPath).exists() )
395 { 372 {
396 // check if the directory application exists, if not 373 // check if the directory application exists, if not
397 // create it 374 // create it
398 QString d1(QDir::homeDirPath() + "/Documents/application"); 375 QString d1(QDir::homeDirPath() + "/Documents/application");
399 QDir pd1(d1); 376 QDir pd1(d1);
400 if (!pd1.exists()) 377 if (!pd1.exists())
401 { 378 {
402 QDir pd2(QDir::homeDirPath() + "/Documents"); 379 QDir pd2(QDir::homeDirPath() + "/Documents");
403 if (!pd2.exists()) { 380 if (!pd2.exists()) {
404 QDir pd3(QDir::homeDirPath()); 381 QDir pd3(QDir::homeDirPath());
405 if (!pd3.mkdir("Documents", FALSE)) { 382 if (!pd3.mkdir("Documents", FALSE)) {
406 } 383 }
407 } 384 }
408 385
409 if (!pd2.mkdir("application", FALSE)) 386 if (!pd2.mkdir("application", FALSE))
410 { 387 {
411 QMessageBox::critical( 0, tr("ZSafe"), 388 QMessageBox::critical( 0, tr("ZSafe"),
412 tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d1)); 389 tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d1));
413 exitZs (1); 390 exitZs (1);
414 } 391 }
415 } 392 }
416 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe"); 393 QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
417 QDir pd2(d2); 394 QDir pd2(d2);
418 if (!pd2.exists()) 395 if (!pd2.exists())
419 { 396 {
420 if (!pd1.mkdir("zsafe", FALSE)) 397 if (!pd1.mkdir("zsafe", FALSE))
421 { 398 {
422 QMessageBox::critical( 0, tr("ZSafe"), 399 QMessageBox::critical( 0, tr("ZSafe"),
423 tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d2)); 400 tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d2));
424 exitZs (1); 401 exitZs (1);
425 } 402 }
426 } 403 }
427 404
428 filename = zsafeAppDirPath + "/passwords.zsf"; 405 filename = zsafeAppDirPath + "/passwords.zsf";
429 406
430 // save the current filename to the config file 407 // save the current filename to the config file
431 conf->writeEntry(APP_KEY+"document", filename); 408 conf->writeEntry(APP_KEY+"document", filename);
432 saveConf(); 409 saveConf();
433 } 410 }
434 //if (filename == "INVALIDPWD") 411 //if (filename == "INVALIDPWD")
435 //filename = ""; 412 //filename = "";
436 413
437 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 414 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
438 this->setCaption(tr("ZSafe: ") + ti); 415 this->setCaption(tr("ZSafe: ") + ti);
439 416
440 selectedItem = NULL; 417 selectedItem = NULL;
441 lastSearchedCategory = NULL; 418 lastSearchedCategory = NULL;
442 lastSearchedItem = NULL; 419 lastSearchedItem = NULL;
443 lastSearchedName = ""; 420 lastSearchedName = "";
444 lastSearchedUsername = ""; 421 lastSearchedUsername = "";
445 lastSearchedComment = ""; 422 lastSearchedComment = "";
446 423
447 infoForm = new InfoForm(this, "show_info", TRUE); 424 infoForm = new InfoForm(this, "show_info", TRUE);
448 categoryDialog = NULL; 425 categoryDialog = NULL;
449 infoForm->setIcon( image0); 426 infoForm->setIcon( image0);
450 427
428 // Create menu and tool bar dock
429 setToolBarsMovable( false );
430 QToolBar *dock = new QToolBar( this );
431 dock->setHorizontalStretchable( true );
432
451 // add a menu bar 433 // add a menu bar
452 QMenuBar *menu = new QMenuBar( this ); 434 QMenuBar *menu = new QMenuBar( dock );
435 menu->setMargin( 0 );
436
437 // Add a toolbar
438 QToolBar *toolbar = new QToolBar( this );
453 439
454 // add file menu 440 // add file menu
455 // QPopupMenu *file = new QPopupMenu( this ); 441 // QPopupMenu *file = new QPopupMenu( this );
456 file = new QPopupMenu( this ); 442 file = new QPopupMenu( this );
457 443
458 file->insertItem( new_img, tr("&New document"), this, SLOT(newDocument()) ); 444 // File menu
459 file->insertItem( folder_open_img, tr("&Open document"), this, SLOT(loadDocument()) ); 445 file->insertItem( new_img, tr("New document"), this, SLOT(newDocument()) );
460 file->insertItem( save_img, tr("&Save document as .."), this, SLOT(saveDocumentAs()) ); 446 file->insertItem( folder_open_img, tr("Open document"), this, SLOT(loadDocument()) );
447 file->insertItem( save_img, tr("Save document as"), this, SLOT(saveDocumentAs()) );
461 file->insertSeparator(); 448 file->insertSeparator();
462 449
463 file->insertItem( save_img, tr("&Save document"), this, SLOT(saveDocumentWithoutPwd()) ); 450 file->insertItem( save_img, tr("Save document"), this, SLOT(saveDocumentWithoutPwd()) );
464 file->insertItem( save_img, tr("S&ave document with new Password"), this, 451 file->insertItem( save_img, tr("Save document with new Password"), this,
465 SLOT(saveDocumentWithPwd()) ); 452 SLOT(saveDocumentWithPwd()) );
466 file->insertSeparator(); 453 file->insertSeparator();
467 file->insertItem( export_img, tr("&Export text file"), this, SLOT(writeAllEntries()) ); 454 file->insertItem( export_img, tr("Export text file"), this, SLOT(writeAllEntries()) );
468 file->insertItem( import_img, tr("&Import text file"), this, SLOT(readAllEntries()) ); 455 file->insertItem( import_img, tr("Import text file"), this, SLOT(readAllEntries()) );
469 file->insertItem( trash_img, tr("&Remove text file"), this, SLOT(removeAsciiFile()) ); 456 file->insertItem( trash_img, tr("Remove text file"), this, SLOT(removeAsciiFile()) );
470 file->insertSeparator(); 457 file->insertSeparator();
471 file->insertItem( expand_img, tr("&Open entries expanded"), this, 458 file->insertItem( expand_img, tr("Open entries expanded"), this,
472 SLOT(setExpandFlag()), 0, 'o'); 459 SLOT(setExpandFlag()), 0, 'o');
473 file->setItemChecked('o', expandTree); 460 file->setItemChecked('o', expandTree);
474 file->insertSeparator(); 461 menu->insertItem( tr("File"), file );
475 file->insertItem( quit_icon_img, tr("E&xit"), this, SLOT(quitMe()) );
476 menu->insertItem( tr("&File"), file );
477 462
463 // Category menu
478 QPopupMenu *cat = new QPopupMenu( this ); 464 QPopupMenu *cat = new QPopupMenu( this );
479 cat->insertItem( new_img, tr("&New"), this, SLOT(addCategory()) ); 465 cat->insertItem( new_img, tr("New"), this, SLOT(addCategory()) );
480 cat->insertItem( edit_img, tr("&Edit"), this, SLOT(editCategory()) ); 466 cat->insertItem( edit_img, tr("Edit"), this, SLOT(editCategory()) );
481 cat->insertItem( trash_img, tr("&Delete"), this, SLOT(delCategory()) ); 467 cat->insertItem( trash_img, tr("Delete"), this, SLOT(delCategory()) );
482 menu->insertItem( tr("&Category"), cat ); 468 menu->insertItem( tr("Category"), cat );
483 469
470 // Entry menu
484 QPopupMenu *it = new QPopupMenu( this ); 471 QPopupMenu *it = new QPopupMenu( this );
485 it->insertItem( cut_img, tr("&Cut"), this, SLOT(cutItem()) ); 472 it->insertItem( cut_img, tr("Cut"), this, SLOT(cutItem()) );
486 it->insertItem( copy_img, tr("C&opy"), this, SLOT(copyItem()) ); 473 it->insertItem( copy_img, tr("Copy"), this, SLOT(copyItem()) );
487 it->insertItem( paste_img, tr("&Paste"), this, SLOT(pasteItem()) ); 474 it->insertItem( paste_img, tr("Paste"), this, SLOT(pasteItem()) );
488 it->insertSeparator(); 475 it->insertSeparator();
489 it->insertItem( new_img, tr("&New"), this, SLOT(newPwd()) );
490 it->insertItem( edit_img, tr("&Edit"), this, SLOT(editPwd()) );
491 it->insertItem( trash_img, tr("&Delete"), this, SLOT(deletePwd()) );
492 it->insertItem( find_img, tr("&Search"), this, SLOT(findPwd()) );
493 menu->insertItem( tr("&Entry"), it );
494
495 QPopupMenu *help = new QPopupMenu( this );
496 help->insertItem( help_icon_img, tr("&About"), this, SLOT(about()) );
497 menu->insertItem( tr("&Help"), help );
498
499 // toolbar icons
500
501 New = new QToolButton( menu, "New" );
502 New->setGeometry( QRect( DeskW-84, 2, 20, 20 ) );
503 New->setMouseTracking( TRUE );
504 New->setText( "" );
505 New->setPixmap( new_img );
506 QToolTip::add( New, tr( "New entry" ) );
507
508 Edit = new QToolButton( menu, "Edit" );
509 Edit->setGeometry( QRect( DeskW-64, 2, 20, 20 ) );
510 Edit->setText( "" );
511 Edit->setPixmap( edit_img );
512 QToolTip::add( Edit, tr( "Edit category or entry" ) );
513
514 Delete = new QToolButton( menu, "Delete" );
515 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
516 Delete->setText( "" );
517 Delete->setPixmap( trash_img );
518 QToolTip::add( Delete, tr( "Delete category or entry" ) );
519
520 Find = new QToolButton( menu, "Find" );
521 Find->setGeometry( QRect( DeskW-24, 2, 20, 20 ) );
522 Find->setText( "" );
523 Find->setPixmap( find_img );
524 QToolTip::add( Find, tr( "Find entry" ) );
525
526/*
527 QBoxLayout * h = new QHBoxLayout( this );
528 h->addWidget (menu);
529 h->addWidget (New);
530 h->addWidget (Edit);
531 h->addWidget (Delete);
532 h->addWidget (Find);
533*/
534 476
477 QAction *a = new QAction( tr( "New" ), new_img, QString::null, 0, this, 0 );
478 connect( a, SIGNAL(activated()), this, SLOT(newPwd()) );
479 a->addTo( it );
480 a->addTo( toolbar );
481 a = new QAction( tr( "Edit" ), edit_img, QString::null, 0, this, 0 );
482 connect( a, SIGNAL(activated()), this, SLOT(editPwd()) );
483 a->addTo( it );
484 a->addTo( toolbar );
485 a = new QAction( tr( "Delete" ), trash_img, QString::null, 0, this, 0 );
486 connect( a, SIGNAL(activated()), this, SLOT(deletePwd()) );
487 a->addTo( it );
488 a->addTo( toolbar );
489 a = new QAction( tr( "Search" ), Opie::Core::OResource::loadPixmap( "find", Opie::Core::OResource::SmallIcon ),
490 QString::null, 0, this, 0 );
491 connect( a, SIGNAL(activated()), this, SLOT(findPwd()) );
492 a->addTo( it );
493 a->addTo( toolbar );
494 menu->insertItem( tr("Entry"), it );
495
496 // Add main view
535 ListView = new ZListView( this, "ListView" ); 497 ListView = new ZListView( this, "ListView" );
536 ListView->addColumn( tr( "Name" ) ); 498 ListView->addColumn( tr( "Name" ) );
537 ListView->addColumn( tr( "Field 2" ) ); 499 ListView->addColumn( tr( "Field 2" ) );
538 ListView->addColumn( tr( "Field 3" ) ); 500 ListView->addColumn( tr( "Field 3" ) );
539 ListView->addColumn( tr( "Comment" ) ); 501 ListView->addColumn( tr( "Comment" ) );
540 ListView->addColumn( tr( "Field 4" ) ); 502 ListView->addColumn( tr( "Field 4" ) );
541 ListView->addColumn( tr( "Field 5" ) ); 503 ListView->addColumn( tr( "Field 5" ) );
542 ListView->setAllColumnsShowFocus(TRUE); 504 ListView->setAllColumnsShowFocus(TRUE);
543 505
544 ListView->setResizePolicy(QScrollView::AutoOneFit); 506 ListView->setResizePolicy(QScrollView::AutoOneFit);
545 // ListView->setGeometry( QRect( 0, 22, 507 setCentralWidget( ListView );
546 // this->width(), this->height() - 30 ) );
547 // ListView->setMaximumSize( QSize( 440, 290 ) );
548 // ListView->setVScrollBarMode( QListView::Auto );
549 508
550 QBoxLayout * l = new QVBoxLayout( this ); 509 QBoxLayout * l = new QVBoxLayout( this );
551 l->addWidget (menu); 510 l->addWidget (menu);
552 l->addWidget (ListView); 511 l->addWidget (ListView);
553 512
554 // start a timer (100 ms) to load the default document 513 // start a timer (100 ms) to load the default document
555 docuTimer.start( 100, true ); 514 docuTimer.start( 100, true );
556 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) ); 515 connect( &docuTimer, SIGNAL(timeout()), SLOT( slotLoadDocu() ) );
557 raiseFlag = true; 516 raiseFlag = true;
558 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) ); 517 connect( &raiseTimer, SIGNAL(timeout()), SLOT( slotRaiseTimer() ) );
559 518
560 // signals and slots connections for QTollButton
561 connect( New, SIGNAL( clicked() ), this, SLOT( newPwd() ) );
562 connect( Edit, SIGNAL( clicked() ), this, SLOT( editPwd() ) );
563 connect( Delete, SIGNAL( clicked() ), this, SLOT( deletePwd() ) );
564 connect( Find, SIGNAL( clicked() ), this, SLOT( findPwd() ) );
565 // signals and slots connections for QListView 519 // signals and slots connections for QListView
566 connect( ListView, SIGNAL( selectionChanged(QListViewItem*) ), 520 connect( ListView, SIGNAL( selectionChanged(QListViewItem*) ),
567 this, SLOT( listViewSelected(QListViewItem*) ) ); 521 this, SLOT( listViewSelected(QListViewItem*) ) );
568 connect( ListView, SIGNAL( doubleClicked(QListViewItem*) ), 522 connect( ListView, SIGNAL( doubleClicked(QListViewItem*) ),
569 this, SLOT( showInfo(QListViewItem*) ) ); 523 this, SLOT( showInfo(QListViewItem*) ) );
570 connect( ListView, SIGNAL( returnPressed(QListViewItem*) ), 524 connect( ListView, SIGNAL( returnPressed(QListViewItem*) ),
571 this, SLOT( showInfo(QListViewItem*) ) ); 525 this, SLOT( showInfo(QListViewItem*) ) );
572 526
573 QPEApplication::setStylusOperation( ListView->viewport(),QPEApplication::RightOnHold); 527 QPEApplication::setStylusOperation( ListView->viewport(),QPEApplication::RightOnHold);
574 connect( ListView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 528 connect( ListView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
575 this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) ); 529 this,SLOT( ListPressed(int, QListViewItem *, const QPoint&, int)) );
576 530
577 this->setIcon( image0); 531 this->setIcon( image0);
578} 532}
579 533
580const QColor *ZSafe::evenRowColor = &Qt::white; 534const QColor *ZSafe::evenRowColor = &Qt::white;
581// const QColor *ZSafe::oddRowColor = &Qt::lightGray; 535// const QColor *ZSafe::oddRowColor = &Qt::lightGray;
582const QColor *ZSafe::oddRowColor = new QColor(216,240,255); 536const QColor *ZSafe::oddRowColor = new QColor(216,240,255);
583 537
584/* 538/*
585 * Destroys the object and frees any allocated resources 539 * Destroys the object and frees any allocated resources
586 */ 540 */
587ZSafe::~ZSafe() 541ZSafe::~ZSafe()
588{ 542{
589 // no need to delete child widgets, Qt does it all for us 543 // no need to delete child widgets, Qt does it all for us
590 quitMe(); 544 quitMe();
591} 545}
592 546
593// load the default document 547// load the default document
594void ZSafe::slotLoadDocu() 548void ZSafe::slotLoadDocu()
595{ 549{
596 openDocument (filename); 550 openDocument (filename);
597} 551}
598 552
599void ZSafe::deletePwd() 553void ZSafe::deletePwd()
600{ 554{
601 555
602 if (!selectedItem) 556 if (!selectedItem)
603 return; 557 return;
604 if (!isCategory(selectedItem)) 558 if (!isCategory(selectedItem))
605 { 559 {
606 switch( QMessageBox::information( this, tr("ZSafe"), 560 switch( QMessageBox::information( this, tr("ZSafe"),
607 tr("Do you want to delete?"), 561 tr("Do you want to delete?"),
608 tr("&Delete"), tr("D&on't Delete"), 562 tr("&Delete"), tr("D&on't Delete"),
609 0 // Enter == button 0 563 0 // Enter == button 0
610 ) ) { // Escape == button 2 564 ) ) { // Escape == button 2
611 case 0: // Delete clicked, Alt-S or Enter pressed. 565 case 0: // Delete clicked, Alt-S or Enter pressed.
612 // Delete 566 // Delete
613 modified = true; 567 modified = true;
614 selectedItem->parent()->takeItem(selectedItem); 568 selectedItem->parent()->takeItem(selectedItem);
615 selectedItem = NULL; 569 selectedItem = NULL;
616 break; 570 break;
617 case 1: // Don't delete 571 case 1: // Don't delete
618 break; 572 break;
619 } 573 }
620 } 574 }
621 else 575 else
622 { 576 {
623 delCategory(); 577 delCategory();
624 } 578 }
625} 579}
626 580
627void ZSafe::editPwd() 581void ZSafe::editPwd()
628{ 582{
629 if (!selectedItem) 583 if (!selectedItem)
630 return; 584 return;
631 if (!isCategory(selectedItem)) 585 if (!isCategory(selectedItem))
632 { 586 {
633 // open the 'New Entry' dialog 587 // open the 'New Entry' dialog
634 NewDialog *dialog = new NewDialog(this, "edit_entry", TRUE); 588 NewDialog *dialog = new NewDialog(this, "edit_entry", TRUE);
635 589
636 // set the labels 590 // set the labels
637 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 591 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
638 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 592 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
639 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 593 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
640 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 594 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
641 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 595 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
642 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 596 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
643 597
644 // set the fields 598 // set the fields
645 dialog->NameField->setText(selectedItem->text (0)); 599 dialog->NameField->setText(selectedItem->text (0));
646 dialog->UsernameField->setText(selectedItem->text (1)); 600 dialog->UsernameField->setText(selectedItem->text (1));
647 dialog->PasswordField->setText(selectedItem->text (2)); 601 dialog->PasswordField->setText(selectedItem->text (2));
648 QString comment = selectedItem->text (3); 602 QString comment = selectedItem->text (3);
649 comment.replace (QRegExp("<br>"), "\n"); 603 comment.replace (QRegExp("<br>"), "\n");
650 dialog->Field5->setText(selectedItem->text (4)); 604 dialog->Field5->setText(selectedItem->text (4));
651 dialog->Field6->setText(selectedItem->text (5)); 605 dialog->Field6->setText(selectedItem->text (5));
652 dialog->CommentField->insertLine(comment); 606 dialog->CommentField->insertLine(comment);
653 dialog->CommentField->setCursorPosition(0,0); 607 dialog->CommentField->setCursorPosition(0,0);
654 608
655 QDialog::DialogCode result = (QDialog::DialogCode) QPEApplication::execDialog( dialog ); 609 QDialog::DialogCode result = (QDialog::DialogCode) QPEApplication::execDialog( dialog );
656 if (result == QDialog::Accepted) 610 if (result == QDialog::Accepted)
657 { 611 {
658 modified = true; 612 modified = true;
659 // edit the selected item 613 // edit the selected item
660 QString name = dialog->NameField->text(); 614 QString name = dialog->NameField->text();
661 selectedItem->setText (0, tr (name)); 615 selectedItem->setText (0, tr (name));
662 QString user = dialog->UsernameField->text(); 616 QString user = dialog->UsernameField->text();
663 selectedItem->setText (1, tr (user)); 617 selectedItem->setText (1, tr (user));
664 QString pwd = dialog->PasswordField->text(); 618 QString pwd = dialog->PasswordField->text();
665 selectedItem->setText (2, tr (pwd)); 619 selectedItem->setText (2, tr (pwd));
666 QString comment = dialog->CommentField->text(); 620 QString comment = dialog->CommentField->text();
667 comment.replace (QRegExp("\n"), "<br>"); 621 comment.replace (QRegExp("\n"), "<br>");
668 selectedItem->setText (3, tr (comment)); 622 selectedItem->setText (3, tr (comment));
669 QString f5 = dialog->Field5->text(); 623 QString f5 = dialog->Field5->text();
670 selectedItem->setText (4, tr (f5)); 624 selectedItem->setText (4, tr (f5));
671 QString f6 = dialog->Field6->text(); 625 QString f6 = dialog->Field6->text();
672 selectedItem->setText (5, tr (f6)); 626 selectedItem->setText (5, tr (f6));
673 } 627 }
674 628
675 delete dialog; 629 delete dialog;
676 } 630 }
677 else 631 else
678 { 632 {
679 editCategory(); 633 editCategory();
680 } 634 }
681} 635}
682 636
683void ZSafe::newPwd() 637void ZSafe::newPwd()
684{ 638{
685 if (!selectedItem) 639 if (!selectedItem)
686 return; 640 return;
687 qWarning("new item"); 641 qWarning("new item");
688 if (!isCategory(selectedItem)) 642 if (!isCategory(selectedItem))
689 selectedItem = selectedItem->parent(); 643 selectedItem = selectedItem->parent();
690 644
691 if (isCategory(selectedItem)) 645 if (isCategory(selectedItem))
692 { 646 {
693 QString cat = selectedItem->text(0); 647 QString cat = selectedItem->text(0);
694 qWarning(cat); 648 qWarning(cat);
695 // open the 'New Entry' dialog 649 // open the 'New Entry' dialog
696 NewDialog *dialog = new NewDialog(this, "new_entry", TRUE); 650 NewDialog *dialog = new NewDialog(this, "new_entry", TRUE);
697 // set the labels 651 // set the labels
698 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 652 dialog->Name->setText(getFieldLabel (selectedItem, "1", tr("Name")));
699 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 653 dialog->Username->setText(getFieldLabel (selectedItem, "2", tr("Username")));
700 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 654 dialog->Password->setText(getFieldLabel (selectedItem, "3", tr("Password")));
701 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 655 dialog->Comment->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
702 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); 656 dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4")));
703 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); 657 dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5")));
704retype: 658retype:
705 659
706#ifdef Q_WS_QWS 660#ifdef Q_WS_QWS
707 QDialog::DialogCode result = (QDialog::DialogCode) QPEApplication::execDialog( dialog ); 661 QDialog::DialogCode result = (QDialog::DialogCode) QPEApplication::execDialog( dialog );
708#endif 662#endif
709 if (result == QDialog::Accepted) 663 if (result == QDialog::Accepted)
710 { 664 {
711 665
712 QString name = dialog->NameField->text(); 666 QString name = dialog->NameField->text();
713 if (cat == name) 667 if (cat == name)
714 { 668 {
715 QMessageBox::critical( 0, tr("ZSafe"), 669 QMessageBox::critical( 0, tr("ZSafe"),
716 tr("Entry name must be different\nfrom the category name.") ); 670 tr("Entry name must be different\nfrom the category name.") );
717 goto retype; // it's not a good programming style :-) 671 goto retype; // it's not a good programming style :-)
718 } 672 }
719 673
720 modified = true; 674 modified = true;
721 // add the new item 675 // add the new item
722 QListViewItem *i = new ShadedListItem (0, selectedItem); 676 QListViewItem *i = new ShadedListItem (0, selectedItem);
723 i->setOpen (TRUE); 677 i->setOpen (TRUE);
724 678
725 i->setText (0, tr (name)); 679 i->setText (0, tr (name));
726 QString user = dialog->UsernameField->text(); 680 QString user = dialog->UsernameField->text();
727 i->setText (1, tr (user)); 681 i->setText (1, tr (user));
728 QString pwd = dialog->PasswordField->text(); 682 QString pwd = dialog->PasswordField->text();
729 i->setText (2, tr (pwd)); 683 i->setText (2, tr (pwd));
730 QString comment = dialog->CommentField->text(); 684 QString comment = dialog->CommentField->text();
731 comment.replace (QRegExp("\n"), "<br>"); 685 comment.replace (QRegExp("\n"), "<br>");
732 i->setText (3, tr (comment)); 686 i->setText (3, tr (comment));
733 QString f5 = dialog->Field5->text(); 687 QString f5 = dialog->Field5->text();
734 i->setText (4, tr (f5)); 688 i->setText (4, tr (f5));
735 QString f6 = dialog->Field6->text(); 689 QString f6 = dialog->Field6->text();
736 i->setText (5, tr (f6)); 690 i->setText (5, tr (f6));
737 } 691 }
738 692
739 delete dialog; 693 delete dialog;
740 } 694 }
741} 695}
742 696
743void ZSafe::findPwd() 697void ZSafe::findPwd()
744{ 698{
745 699
746 // open the 'Search' dialog 700 // open the 'Search' dialog
747 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE); 701 SearchDialog *dialog = new SearchDialog(this, tr("Search"), TRUE);
748 702
749 if (lastSearchedName) 703 if (lastSearchedName)
750 dialog->NameField->setText(lastSearchedName); 704 dialog->NameField->setText(lastSearchedName);
751 else 705 else
752 dialog->NameField->setText(""); 706 dialog->NameField->setText("");
753 if (lastSearchedUsername) 707 if (lastSearchedUsername)
754 dialog->UsernameField->setText(lastSearchedUsername); 708 dialog->UsernameField->setText(lastSearchedUsername);
755 else 709 else
756 dialog->UsernameField->setText(""); 710 dialog->UsernameField->setText("");
757 if (lastSearchedComment) 711 if (lastSearchedComment)
758 dialog->CommentField->setText(lastSearchedComment); 712 dialog->CommentField->setText(lastSearchedComment);
759 else 713 else
760 dialog->CommentField->setText(""); 714 dialog->CommentField->setText("");
761 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec(); 715 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec();
762 716
763 QString name; 717 QString name;
764 QString username; 718 QString username;
765 QString comment; 719 QString comment;
766 if (result == QDialog::Accepted) 720 if (result == QDialog::Accepted)
767 { 721 {
768 name = dialog->NameField->text(); 722 name = dialog->NameField->text();
769 username = dialog->UsernameField->text(); 723 username = dialog->UsernameField->text();
770 comment = dialog->CommentField->text(); 724 comment = dialog->CommentField->text();
771 } 725 }
772 else 726 else
773 { 727 {
774 delete dialog; 728 delete dialog;
775 return; 729 return;
776 } 730 }
777 731
778 if (!name.isEmpty() && name != lastSearchedName || 732 if (!name.isEmpty() && name != lastSearchedName ||
779 lastSearchedName.isEmpty() && !name.isEmpty()) 733 lastSearchedName.isEmpty() && !name.isEmpty())
780 { 734 {
781 // set search at the beginning if a new name is given 735 // set search at the beginning if a new name is given
782 lastSearchedCategory = NULL; 736 lastSearchedCategory = NULL;
783 lastSearchedItem = NULL; 737 lastSearchedItem = NULL;
784 } 738 }
785 lastSearchedName = name; 739 lastSearchedName = name;
786 if (!username.isEmpty() && username != lastSearchedUsername || 740 if (!username.isEmpty() && username != lastSearchedUsername ||
787 lastSearchedUsername.isEmpty() && !username.isEmpty()) 741 lastSearchedUsername.isEmpty() && !username.isEmpty())
788 { 742 {
789 // set search at the beginning if a new name is given 743 // set search at the beginning if a new name is given
790 lastSearchedCategory = NULL; 744 lastSearchedCategory = NULL;
791 lastSearchedItem = NULL; 745 lastSearchedItem = NULL;
792 } 746 }
793 lastSearchedUsername = username; 747 lastSearchedUsername = username;
794 if (!comment.isEmpty() && comment != lastSearchedComment || 748 if (!comment.isEmpty() && comment != lastSearchedComment ||
795 lastSearchedComment.isEmpty() && !comment.isEmpty()) 749 lastSearchedComment.isEmpty() && !comment.isEmpty())
796 { 750 {
797 // set search at the beginning if a new name is given 751 // set search at the beginning if a new name is given
798 lastSearchedCategory = NULL; 752 lastSearchedCategory = NULL;
799 lastSearchedItem = NULL; 753 lastSearchedItem = NULL;
800 } 754 }
801 lastSearchedComment = comment; 755 lastSearchedComment = comment;
802 756
803 ListView->clearSelection(); 757 ListView->clearSelection();
804 758
805 bool found=FALSE; 759 bool found=FALSE;
806 // step through all categories 760 // step through all categories
807 QListViewItem *i; 761 QListViewItem *i;
808 if (lastSearchedCategory) 762 if (lastSearchedCategory)
809 i = lastSearchedCategory; 763 i = lastSearchedCategory;
810 else 764 else
811 i = ListView->firstChild(); 765 i = ListView->firstChild();
812 for (; 766 for (;
813 i != NULL; 767 i != NULL;
814 i = i->nextSibling()) 768 i = i->nextSibling())
815 { 769 {
816 i->setSelected(FALSE); 770 i->setSelected(FALSE);
817 771
818 // step through all subitems 772 // step through all subitems
819 QListViewItem *si; 773 QListViewItem *si;
820 if (lastSearchedItem) 774 if (lastSearchedItem)
@@ -1857,1460 +1811,1411 @@ int ZSafe::loadInit(const char* _filename, const char *password)
1857 if (count2 == 0) { 1811 if (count2 == 0) {
1858 return PWERR_DATA; 1812 return PWERR_DATA;
1859 } 1813 }
1860 count += count2; 1814 count += count2;
1861 } /* while (count < 8) */ 1815 } /* while (count < 8) */
1862 1816
1863 size += 8; 1817 size += 8;
1864 for (count2 = 0; count2 < 8; count2 += 2) { 1818 for (count2 = 0; count2 < 8; count2 += 2) {
1865 count3 = count2 >> 1; 1819 count3 = count2 >> 1;
1866 ciphertext[count3] = charbuf[count2] << 8; 1820 ciphertext[count3] = charbuf[count2] << 8;
1867 ciphertext[count3] += charbuf[count2 + 1]; 1821 ciphertext[count3] += charbuf[count2 + 1];
1868 1822
1869 plaintext[count3] = ciphertext[count3] ^ iv[count3]; 1823 plaintext[count3] = ciphertext[count3] ^ iv[count3];
1870 iv[count3] = plaintext[count3]; 1824 iv[count3] = plaintext[count3];
1871 } /* for (count2) */ 1825 } /* for (count2) */
1872 1826
1873 krc2->rc2_decrypt (plaintext); 1827 krc2->rc2_decrypt (plaintext);
1874 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8); 1828 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8);
1875 bufferIndex += 8; 1829 bufferIndex += 8;
1876 buffer[bufferIndex + 1] = '\0'; 1830 buffer[bufferIndex + 1] = '\0';
1877 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */ 1831 } /* while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) */
1878 size -= buffer[size - 1]; 1832 size -= buffer[size - 1];
1879 lastcount = 0; 1833 lastcount = 0;
1880 1834
1881 /* This will point to the starting index */ 1835 /* This will point to the starting index */
1882 bufferIndex = 0; 1836 bufferIndex = 0;
1883 return PWERR_GOOD; 1837 return PWERR_GOOD;
1884} 1838}
1885 1839
1886int ZSafe::loadEntry(char *entry[FIELD_SIZE]) 1840int ZSafe::loadEntry(char *entry[FIELD_SIZE])
1887{ 1841{
1888 /* Strip off PKCS 5 padding 1842 /* Strip off PKCS 5 padding
1889 * Should check to make sure it's good here 1843 * Should check to make sure it's good here
1890 */ 1844 */
1891 int count, count1=0; 1845 int count, count1=0;
1892 1846
1893 for (count = lastcount; count < size; count++) { 1847 for (count = lastcount; count < size; count++) {
1894 if ((unsigned char) (buffer[count]) == 255) { 1848 if ((unsigned char) (buffer[count]) == 255) {
1895 if (buffer[bufferIndex] == '\0') { 1849 if (buffer[bufferIndex] == '\0') {
1896 bufferIndex++; 1850 bufferIndex++;
1897 } 1851 }
1898 entry[count1] = (char *) malloc (count - bufferIndex + 1); 1852 entry[count1] = (char *) malloc (count - bufferIndex + 1);
1899 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex); 1853 memcpy (entry[count1], (unsigned char *) (buffer + bufferIndex), count - bufferIndex);
1900 entry[count1][count - bufferIndex] = '\0'; 1854 entry[count1][count - bufferIndex] = '\0';
1901 count++; 1855 count++;
1902 bufferIndex = count; 1856 bufferIndex = count;
1903 count1++; 1857 count1++;
1904 if (count1 == FIELD_SIZE) { 1858 if (count1 == FIELD_SIZE) {
1905 lastcount = count; 1859 lastcount = count;
1906 return 1; 1860 return 1;
1907 } 1861 }
1908 } /* if ((unsigned char) (buffer[count]) == 255) */ 1862 } /* if ((unsigned char) (buffer[count]) == 255) */
1909 } /* for (count = 0; count < size; count++) */ 1863 } /* for (count = 0; count < size; count++) */
1910 1864
1911 return 2; 1865 return 2;
1912} 1866}
1913 1867
1914int ZSafe::loadFinalize(void) 1868int ZSafe::loadFinalize(void)
1915{ 1869{
1916 fclose (fd); 1870 fclose (fd);
1917 if (buffer) free(buffer); 1871 if (buffer) free(buffer);
1918 return PWERR_GOOD; 1872 return PWERR_GOOD;
1919} 1873}
1920 1874
1921bool ZSafe::saveDocument(const char* _filename, 1875bool ZSafe::saveDocument(const char* _filename,
1922 bool withPwd, 1876 bool withPwd,
1923 const char* ) 1877 const char* )
1924{ 1878{
1925 if (filename.isEmpty()) 1879 if (filename.isEmpty())
1926 { 1880 {
1927 QMessageBox::critical( 0, tr("ZSafe"), 1881 QMessageBox::critical( 0, tr("ZSafe"),
1928 tr("No document defined.\nYou have to create a new document")); 1882 tr("No document defined.\nYou have to create a new document"));
1929 return false; 1883 return false;
1930 } 1884 }
1931 1885
1932 // if (m_password.isEmpty()) 1886 // if (m_password.isEmpty())
1933 // withPwd = true; // the document must be saved with a valid password 1887 // withPwd = true; // the document must be saved with a valid password
1934 if (withPwd) 1888 if (withPwd)
1935 { 1889 {
1936 bool pwdOk = FALSE; 1890 bool pwdOk = FALSE;
1937 while (!pwdOk) 1891 while (!pwdOk)
1938 { 1892 {
1939 getDocPassword(tr("Enter Password")); 1893 getDocPassword(tr("Enter Password"));
1940 if (m_password.isEmpty()) 1894 if (m_password.isEmpty())
1941 { 1895 {
1942 1896
1943 QMessageBox::critical( 0, tr("ZSafe"), 1897 QMessageBox::critical( 0, tr("ZSafe"),
1944 tr("Password is empty.\nPlease enter again.")); 1898 tr("Password is empty.\nPlease enter again."));
1945 continue; 1899 continue;
1946 } 1900 }
1947 1901
1948 QString firstPasswd = m_password; 1902 QString firstPasswd = m_password;
1949 1903
1950 getDocPassword(tr("Reenter Password")); 1904 getDocPassword(tr("Reenter Password"));
1951 if (m_password.isEmpty()) 1905 if (m_password.isEmpty())
1952 { 1906 {
1953 QMessageBox::critical( 0, tr("ZSafe"), 1907 QMessageBox::critical( 0, tr("ZSafe"),
1954 tr("Password is empty.\nPlease enter again.")); 1908 tr("Password is empty.\nPlease enter again."));
1955 continue; 1909 continue;
1956 } 1910 }
1957 if (firstPasswd != m_password) 1911 if (firstPasswd != m_password)
1958 { 1912 {
1959 1913
1960 QMessageBox::critical( 0, tr("ZSafe"), 1914 QMessageBox::critical( 0, tr("ZSafe"),
1961 tr("Passwords must be identical.\nPlease enter again.")); 1915 tr("Passwords must be identical.\nPlease enter again."));
1962 continue; 1916 continue;
1963 } 1917 }
1964 pwdOk = TRUE; 1918 pwdOk = TRUE;
1965 modified = false; 1919 modified = false;
1966 } 1920 }
1967 } 1921 }
1968 else if (modified) 1922 else if (modified)
1969 { 1923 {
1970 QString fns(_filename); 1924 QString fns(_filename);
1971 fns = fns.right (fns.length() - fns.findRev ('/') - 1); 1925 fns = fns.right (fns.length() - fns.findRev ('/') - 1);
1972 switch( QMessageBox::information( this, tr("ZSafe"), 1926 switch( QMessageBox::information( this, tr("ZSafe"),
1973 tr("Do you want to save ") + fns + tr("\nbefore continuing?"), 1927 tr("Do you want to save ") + fns + tr("\nbefore continuing?"),
1974 tr("&Save"), 1928 tr("&Save"),
1975 tr("&Don't Save"), 1929 tr("&Don't Save"),
1976 0 // Enter == button 0 1930 0 // Enter == button 0
1977 ) ) 1931 ) )
1978 { // Escape == button 2 1932 { // Escape == button 2
1979 case 0: // Save clicked, Alt-S or Enter pressed. 1933 case 0: // Save clicked, Alt-S or Enter pressed.
1980 modified = false; 1934 modified = false;
1981 break; 1935 break;
1982 case 1: // Don't Save clicked or Alt-D pressed 1936 case 1: // Don't Save clicked or Alt-D pressed
1983 modified = false; 1937 modified = false;
1984 return true; 1938 return true;
1985 } 1939 }
1986 } 1940 }
1987 modified = false; 1941 modified = false;
1988 1942
1989 if (m_password.isEmpty()) 1943 if (m_password.isEmpty())
1990 return false; 1944 return false;
1991 1945
1992 int retval = saveInit(_filename, m_password); 1946 int retval = saveInit(_filename, m_password);
1993 // int retval = saveInit(_filename, "test"); 1947 // int retval = saveInit(_filename, "test");
1994 if (retval != PWERR_GOOD) { 1948 if (retval != PWERR_GOOD) {
1995 return false; 1949 return false;
1996 } 1950 }
1997 1951
1998 char* entry[FIELD_SIZE]; 1952 char* entry[FIELD_SIZE];
1999 1953
2000 // save the validation entry 1954 // save the validation entry
2001 { 1955 {
2002 int i=0; 1956 int i=0;
2003 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1); 1957 entry[i] = (char*)malloc(strlen("ZSAFECATEGORY")+1);
2004 strcpy(entry[i++], "ZSAFECATEGORY"); 1958 strcpy(entry[i++], "ZSAFECATEGORY");
2005 entry[i] = (char*)malloc(strlen("name")+1); 1959 entry[i] = (char*)malloc(strlen("name")+1);
2006 strcpy(entry[i++], "name"); 1960 strcpy(entry[i++], "name");
2007 entry[i] = (char*)malloc(strlen("username")+1); 1961 entry[i] = (char*)malloc(strlen("username")+1);
2008 strcpy(entry[i++], "username"); 1962 strcpy(entry[i++], "username");
2009 entry[i] = (char*)malloc(strlen("password")+1); 1963 entry[i] = (char*)malloc(strlen("password")+1);
2010 strcpy(entry[i++], "password"); 1964 strcpy(entry[i++], "password");
2011 entry[i] = (char*)malloc(strlen("comment")+1); 1965 entry[i] = (char*)malloc(strlen("comment")+1);
2012 strcpy(entry[i++], "comment"); 1966 strcpy(entry[i++], "comment");
2013 1967
2014 entry[i] = (char*)malloc(strlen("field5")+1); 1968 entry[i] = (char*)malloc(strlen("field5")+1);
2015 strcpy(entry[i++], "field5"); 1969 strcpy(entry[i++], "field5");
2016 entry[i] = (char*)malloc(strlen("field6")+1); 1970 entry[i] = (char*)malloc(strlen("field6")+1);
2017 strcpy(entry[i++], "field6"); 1971 strcpy(entry[i++], "field6");
2018 1972
2019 retval = saveEntry(entry); 1973 retval = saveEntry(entry);
2020 for (int z=0; z<i; z++) free(entry[z]); 1974 for (int z=0; z<i; z++) free(entry[z]);
2021 if (retval == PWERR_DATA) { 1975 if (retval == PWERR_DATA) {
2022#ifndef NO_OPIE 1976#ifndef NO_OPIE
2023 owarn << "1: Error writing file, contents not saved" << oendl; 1977 owarn << "1: Error writing file, contents not saved" << oendl;
2024#else 1978#else
2025 qWarning("1: Error writing file, contents not saved"); 1979 qWarning("1: Error writing file, contents not saved");
2026#endif 1980#endif
2027 saveFinalize(); 1981 saveFinalize();
2028 return false; 1982 return false;
2029 } 1983 }
2030// #ifndef Q_WS_WIN 1984// #ifndef Q_WS_WIN
2031 conf->writeEntry(APP_KEY+"valzsafe", 1); 1985 conf->writeEntry(APP_KEY+"valzsafe", 1);
2032// #endif 1986// #endif
2033 saveConf(); 1987 saveConf();
2034 } 1988 }
2035 1989
2036 QListViewItem *i; 1990 QListViewItem *i;
2037 // step through all categories 1991 // step through all categories
2038 for (i = ListView->firstChild(); 1992 for (i = ListView->firstChild();
2039 i != NULL; 1993 i != NULL;
2040 i = i->nextSibling()) 1994 i = i->nextSibling())
2041 { 1995 {
2042 // step through all subitems 1996 // step through all subitems
2043 QListViewItem *si; 1997 QListViewItem *si;
2044 for (si = i->firstChild(); 1998 for (si = i->firstChild();
2045 si != NULL; 1999 si != NULL;
2046 si = si->nextSibling()) 2000 si = si->nextSibling())
2047 { 2001 {
2048 int j=0; 2002 int j=0;
2049 entry[j] = (char*)malloc(strlen(i->text(0).utf8())+1); 2003 entry[j] = (char*)malloc(strlen(i->text(0).utf8())+1);
2050 strcpy(entry[j++], i->text(0).utf8()); 2004 strcpy(entry[j++], i->text(0).utf8());
2051 entry[j] = (char*)malloc(strlen(si->text(0).utf8())+1); 2005 entry[j] = (char*)malloc(strlen(si->text(0).utf8())+1);
2052 strcpy(entry[j++], si->text(0).utf8()); 2006 strcpy(entry[j++], si->text(0).utf8());
2053 entry[j] = (char*)malloc(strlen(si->text(1).utf8())+1); 2007 entry[j] = (char*)malloc(strlen(si->text(1).utf8())+1);
2054 strcpy(entry[j++], si->text(1).utf8()); 2008 strcpy(entry[j++], si->text(1).utf8());
2055 entry[j] = (char*)malloc(strlen(si->text(2).utf8())+1); 2009 entry[j] = (char*)malloc(strlen(si->text(2).utf8())+1);
2056 strcpy(entry[j++], si->text(2).utf8()); 2010 strcpy(entry[j++], si->text(2).utf8());
2057 entry[j] = (char*)malloc(strlen(si->text(3).utf8())+1); 2011 entry[j] = (char*)malloc(strlen(si->text(3).utf8())+1);
2058 strcpy(entry[j++], si->text(3).utf8()); 2012 strcpy(entry[j++], si->text(3).utf8());
2059 entry[j] = (char*)malloc(strlen(si->text(4).utf8())+1); 2013 entry[j] = (char*)malloc(strlen(si->text(4).utf8())+1);
2060 strcpy(entry[j++], si->text(4).utf8()); 2014 strcpy(entry[j++], si->text(4).utf8());
2061 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1); 2015 entry[j] = (char*)malloc(strlen(si->text(5).utf8())+1);
2062 strcpy(entry[j++], si->text(5).utf8()); 2016 strcpy(entry[j++], si->text(5).utf8());
2063 2017
2064 retval = saveEntry(entry); 2018 retval = saveEntry(entry);
2065 for (int z=0; z<j; z++) 2019 for (int z=0; z<j; z++)
2066 { 2020 {
2067 free(entry[z]); 2021 free(entry[z]);
2068 } 2022 }
2069 if (retval == PWERR_DATA) { 2023 if (retval == PWERR_DATA) {
2070#ifndef NO_OPIE 2024#ifndef NO_OPIE
2071 owarn << "1: Error writing file, contents not saved" << oendl; 2025 owarn << "1: Error writing file, contents not saved" << oendl;
2072#else 2026#else
2073 qWarning("1: Error writing file, contents not saved"); 2027 qWarning("1: Error writing file, contents not saved");
2074#endif 2028#endif
2075 saveFinalize(); 2029 saveFinalize();
2076 return false; 2030 return false;
2077 } 2031 }
2078 2032
2079 } 2033 }
2080 } 2034 }
2081 2035
2082 if (saveFinalize() == PWERR_DATA) { 2036 if (saveFinalize() == PWERR_DATA) {
2083#ifndef NO_OPIE 2037#ifndef NO_OPIE
2084 owarn << "2: Error writing file, contents not saved" << oendl; 2038 owarn << "2: Error writing file, contents not saved" << oendl;
2085#else 2039#else
2086 qWarning("2: Error writing file, contents not saved"); 2040 qWarning("2: Error writing file, contents not saved");
2087#endif 2041#endif
2088 return false; 2042 return false;
2089 } else { 2043 } else {
2090#ifndef DESKTOP 2044#ifndef DESKTOP
2091 Global::statusMessage (tr("Password file saved.")); 2045 Global::statusMessage (tr("Password file saved."));
2092#endif 2046#endif
2093 modified = false; 2047 modified = false;
2094 return true; 2048 return true;
2095 } 2049 }
2096} 2050}
2097 2051
2098PasswordForm *newPwdDialog; 2052PasswordForm *newPwdDialog;
2099bool newPwdDialogResult = false; 2053bool newPwdDialogResult = false;
2100void ZSafe::setPasswordDialogDone() 2054void ZSafe::setPasswordDialogDone()
2101{ 2055{
2102 newPwdDialogResult = true; 2056 newPwdDialogResult = true;
2103 newPwdDialog->close(); 2057 newPwdDialog->close();
2104} 2058}
2105 2059
2106void ZSafe::getDocPassword(QString title) 2060void ZSafe::getDocPassword(QString title)
2107{ 2061{
2108 // open the 'Password' dialog 2062 // open the 'Password' dialog
2109 PasswordForm *dialog = new PasswordForm(this, title, TRUE); 2063 PasswordForm *dialog = new PasswordForm(this, title, TRUE);
2110 newPwdDialog = dialog; 2064 newPwdDialog = dialog;
2111 newPwdDialogResult = false; 2065 newPwdDialogResult = false;
2112 2066
2113 QPixmap image0( ( const char** ) zsafe_xpm ); 2067// QPixmap image0 = Opie::Core::OResource::loadPixmap( "zsafe/zsafe", Opie::Core::OResource::SmallIcon );
2114 dialog->setIcon( image0); 2068 // dialog->setIcon( image0);
2115 2069
2116 connect( dialog->PasswordField, SIGNAL( returnPressed() ), 2070 connect( dialog->PasswordField, SIGNAL( returnPressed() ),
2117 this, SLOT( setPasswordDialogDone() ) ); 2071 this, SLOT( setPasswordDialogDone() ) );
2118 2072
2119 // CS: !!! 2073 // CS: !!!
2120 // int pos = filename.findRev ('/'); 2074 // int pos = filename.findRev ('/');
2121 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 2075 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
2122 dialog->setCaption(ti); 2076 dialog->setCaption(ti);
2123 // dialog->setCaption(title); 2077 // dialog->setCaption(title);
2124 2078
2125 dialog->PasswordField->setFocus(); 2079 dialog->PasswordField->setFocus();
2126 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec(); 2080 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec();
2127 2081
2128 QString password; 2082 QString password;
2129 if (result == QDialog::Accepted || newPwdDialogResult) 2083 if (result == QDialog::Accepted || newPwdDialogResult)
2130 { 2084 {
2131 m_password = dialog->PasswordField->text(); 2085 m_password = dialog->PasswordField->text();
2132 } 2086 }
2133 else 2087 else
2134 { 2088 {
2135 exitZs (1); 2089 exitZs (1);
2136 } 2090 }
2137} 2091}
2138 2092
2139int ZSafe::saveInit(const char *_filename, const char *password) 2093int ZSafe::saveInit(const char *_filename, const char *password)
2140{ 2094{
2141 char key[128]; 2095 char key[128];
2142 unsigned int j = 0; 2096 unsigned int j = 0;
2143 unsigned int keylength; 2097 unsigned int keylength;
2144 // int val; 2098 // int val;
2145 int count2; 2099 int count2;
2146 Krc2* krc2 = new Krc2(); 2100 Krc2* krc2 = new Krc2();
2147 2101
2148 /* first we should check the permissions of the filename */ 2102 /* first we should check the permissions of the filename */
2149/* 2103/*
2150 if (QFile::exists(_filename)) { 2104 if (QFile::exists(_filename)) {
2151 val = checkFile(_filename); 2105 val = checkFile(_filename);
2152 if (val != PWERR_GOOD) 2106 if (val != PWERR_GOOD)
2153 return val; 2107 return val;
2154 } else 2108 } else
2155 { 2109 {
2156 val = creat (_filename, (S_IRUSR | S_IWUSR)); 2110 val = creat (_filename, (S_IRUSR | S_IWUSR));
2157 if (val == -1) 2111 if (val == -1)
2158 return PWERR_OPEN; 2112 return PWERR_OPEN;
2159 else 2113 else
2160 close(val); 2114 close(val);
2161 } 2115 }
2162*/ 2116*/
2163 QFileInfo f (_filename); 2117 QFileInfo f (_filename);
2164 save_buffer_length = f.size(); 2118 save_buffer_length = f.size();
2165 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024; 2119 save_buffer_length = ((save_buffer_length / 1024)+1) * 1024;
2166 2120
2167 fd = fopen (_filename, "wb"); 2121 fd = fopen (_filename, "wb");
2168 if (fd == NULL) 2122 if (fd == NULL)
2169 return PWERR_OPEN; 2123 return PWERR_OPEN;
2170 2124
2171 buffer = (char*)malloc(save_buffer_length); 2125 buffer = (char*)malloc(save_buffer_length);
2172 2126
2173 /* make the key ready */ 2127 /* make the key ready */
2174 for (j = 0; password[j] != '\0'; j++) { 2128 for (j = 0; password[j] != '\0'; j++) {
2175 key[j] = password[j]; 2129 key[j] = password[j];
2176 } 2130 }
2177 keylength = j; 2131 keylength = j;
2178 krc2->rc2_expandkey (key, keylength, 128); 2132 krc2->rc2_expandkey (key, keylength, 128);
2179 2133
2180 /* First, we make the IV */ 2134 /* First, we make the IV */
2181 for (count2 = 0; count2 < 4; count2++) { 2135 for (count2 = 0; count2 < 4; count2++) {
2182 iv[count2] = rand (); 2136 iv[count2] = rand ();
2183 putc ((unsigned char) (iv[count2] >> 8), fd); 2137 putc ((unsigned char) (iv[count2] >> 8), fd);
2184 putc ((unsigned char) (iv[count2] & 0xff), fd); 2138 putc ((unsigned char) (iv[count2] & 0xff), fd);
2185 } 2139 }
2186 2140
2187 bufferIndex = 0; 2141 bufferIndex = 0;
2188 return PWERR_GOOD; 2142 return PWERR_GOOD;
2189} 2143}
2190 2144
2191 2145
2192int ZSafe::saveEntry(char *entry[FIELD_SIZE]) 2146int ZSafe::saveEntry(char *entry[FIELD_SIZE])
2193{ 2147{
2194 char *text1; 2148 char *text1;
2195 int count2, count3; 2149 int count2, count3;
2196 unsigned short ciphertext[4]; 2150 unsigned short ciphertext[4];
2197 Krc2* krc2 = new Krc2(); 2151 Krc2* krc2 = new Krc2();
2198 2152
2199 buffer = (char*)memset(buffer, '\0', save_buffer_length); 2153 buffer = (char*)memset(buffer, '\0', save_buffer_length);
2200 2154
2201 for (count2 = 0; count2 < FIELD_SIZE; count2++) { 2155 for (count2 = 0; count2 < FIELD_SIZE; count2++) {
2202 text1 = entry[count2]; 2156 text1 = entry[count2];
2203 if (strlen (text1) == 0) { 2157 if (strlen (text1) == 0) {
2204 strncat(buffer, " ", strlen(" ")); 2158 strncat(buffer, " ", strlen(" "));
2205 } else { 2159 } else {
2206 strncat(buffer, text1, strlen(text1)); 2160 strncat(buffer, text1, strlen(text1));
2207 } 2161 }
2208 /* Use 255 as the marker. \n is too tough to test for */ 2162 /* Use 255 as the marker. \n is too tough to test for */
2209 buffer[strlen (buffer)] = 255; 2163 buffer[strlen (buffer)] = 255;
2210 } /*for (count2 = 0; count2 < 5; count2++)*/ 2164 } /*for (count2 = 0; count2 < 5; count2++)*/
2211 count2 = 0; 2165 count2 = 0;
2212 /* I'm using CBC mode and encrypting the data straight from top down. 2166 /* I'm using CBC mode and encrypting the data straight from top down.
2213 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually. 2167 * At the bottom, encrypted, I will append an MD5 hash of the file, eventually.
2214 * PKCS 5 padding (explained at the code section 2168 * PKCS 5 padding (explained at the code section
2215 */ 2169 */
2216 while (count2 < (int)strlen (buffer)) { 2170 while (count2 < (int)strlen (buffer)) {
2217#ifndef WORDS_BIGENDIAN 2171#ifndef WORDS_BIGENDIAN
2218 plaintext[bufferIndex] = buffer[count2 + 1] << 8; 2172 plaintext[bufferIndex] = buffer[count2 + 1] << 8;
2219 plaintext[bufferIndex] += buffer[count2] & 0xff; 2173 plaintext[bufferIndex] += buffer[count2] & 0xff;
2220#endif 2174#endif
2221#ifdef WORDS_BIGENDIAN 2175#ifdef WORDS_BIGENDIAN
2222 plaintext[bufferIndex] = buffer[count2] << 8; 2176 plaintext[bufferIndex] = buffer[count2] << 8;
2223 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff; 2177 plaintext[bufferIndex] += buffer[count2 + 1] & 0xff;
2224#endif 2178#endif
2225 bufferIndex++; 2179 bufferIndex++;
2226 if (bufferIndex == 4) { 2180 if (bufferIndex == 4) {
2227 krc2->rc2_encrypt (plaintext); 2181 krc2->rc2_encrypt (plaintext);
2228 2182
2229 for (count3 = 0; count3 < 4; count3++) { 2183 for (count3 = 0; count3 < 4; count3++) {
2230 ciphertext[count3] = iv[count3] ^ plaintext[count3]; 2184 ciphertext[count3] = iv[count3] ^ plaintext[count3];
2231 2185
2232 /* Now store the ciphertext as the iv */ 2186 /* Now store the ciphertext as the iv */
2233 iv[count3] = plaintext[count3]; 2187 iv[count3] = plaintext[count3];
2234 2188
2235 /* reset the buffer index */ 2189 /* reset the buffer index */
2236 bufferIndex = 0; 2190 bufferIndex = 0;
2237 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA; 2191 if (putc ((unsigned char) (ciphertext[count3] >> 8), fd) == EOF) return PWERR_DATA;
2238 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA; 2192 if (putc ((unsigned char) (ciphertext[count3] & 0xff), fd) == EOF) return PWERR_DATA;
2239 } /*for (count3 = 0; count3 < 5; count3++)*/ 2193 } /*for (count3 = 0; count3 < 5; count3++)*/
2240 } /*if (bufferIndex == 5)*/ 2194 } /*if (bufferIndex == 5)*/
2241 /* increment a short, not a byte */ 2195 /* increment a short, not a byte */
2242 count2 += 2; 2196 count2 += 2;
2243 } /*while (count2 < strlen (buffer))*/ 2197 } /*while (count2 < strlen (buffer))*/
2244 int ret = PWERR_GOOD; 2198 int ret = PWERR_GOOD;
2245 return ret; 2199 return ret;
2246} 2200}
2247 2201
2248int ZSafe::saveFinalize(void) 2202int ZSafe::saveFinalize(void)
2249{ 2203{
2250 int count1, retval = PWERR_GOOD; 2204 int count1, retval = PWERR_GOOD;
2251 unsigned short ciphertext[4]; 2205 unsigned short ciphertext[4];
2252 Krc2* krc2 = new Krc2(); 2206 Krc2* krc2 = new Krc2();
2253 2207
2254 /* Tack on the PKCS 5 padding 2208 /* Tack on the PKCS 5 padding
2255 * How it works is we fill up the last n bytes with the value n 2209 * How it works is we fill up the last n bytes with the value n
2256 * 2210 *
2257 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left 2211 * So, if we have, say, 13 bytes, 8 of which are used, we have 5 left
2258 * over, leaving us 3 short, so we fill it in with 3's. 2212 * over, leaving us 3 short, so we fill it in with 3's.
2259 * 2213 *
2260 * If we come out even, we fill it with 8 8s 2214 * If we come out even, we fill it with 8 8s
2261 * 2215 *
2262 * um, except that in this instance we are using 4 shorts instead of 8 bytes. 2216 * um, except that in this instance we are using 4 shorts instead of 8 bytes.
2263 * so, half everything 2217 * so, half everything
2264 */ 2218 */
2265 for (count1 = bufferIndex; count1 < 4; count1++) { 2219 for (count1 = bufferIndex; count1 < 4; count1++) {
2266 plaintext[count1] = (4 - bufferIndex); 2220 plaintext[count1] = (4 - bufferIndex);
2267 } 2221 }
2268 krc2->rc2_encrypt (plaintext); 2222 krc2->rc2_encrypt (plaintext);
2269 for (count1 = 0; count1 < 4; count1++) { 2223 for (count1 = 0; count1 < 4; count1++) {
2270 ciphertext[count1] = iv[count1] ^ plaintext[count1]; 2224 ciphertext[count1] = iv[count1] ^ plaintext[count1];
2271 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA; 2225 if (putc ((unsigned char) (ciphertext[count1] >> 8), fd) == EOF) retval = PWERR_DATA;
2272 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA; 2226 if (putc ((unsigned char) (ciphertext[count1] & 0xff), fd) == EOF) retval = PWERR_DATA;
2273 } 2227 }
2274 2228
2275 fclose (fd); 2229 fclose (fd);
2276 free(buffer); 2230 free(buffer);
2277 return retval; 2231 return retval;
2278} 2232}
2279 2233
2280void ZSafe::quitMe () 2234void ZSafe::quitMe ()
2281{ 2235{
2282 if (modified) 2236 if (modified)
2283 { 2237 {
2284 switch( QMessageBox::information( this, tr("ZSafe"), 2238 switch( QMessageBox::information( this, tr("ZSafe"),
2285 tr("Do you want to save\nbefore exiting?"), 2239 tr("Do you want to save\nbefore exiting?"),
2286 tr("&Save"), 2240 tr("&Save"),
2287 tr("S&ave with\nnew\npassword"), 2241 tr("S&ave with\nnew\npassword"),
2288 tr("&Don't Save"), 2242 tr("&Don't Save"),
2289 0 // Enter == button 0 2243 0 // Enter == button 0
2290 ) ) 2244 ) )
2291 { // Escape == button 2 2245 { // Escape == button 2
2292 case 0: // Save clicked, Alt-S or Enter pressed. 2246 case 0: // Save clicked, Alt-S or Enter pressed.
2293 // save 2247 // save
2294 modified = false; 2248 modified = false;
2295 saveDocument(filename, FALSE); 2249 saveDocument(filename, FALSE);
2296 exitZs (1); 2250 exitZs (1);
2297 break; 2251 break;
2298 case 1: // 2252 case 1: //
2299 // Save with new password 2253 // Save with new password
2300 modified = false; 2254 modified = false;
2301 saveDocument(filename, TRUE); 2255 saveDocument(filename, TRUE);
2302 exitZs (1); 2256 exitZs (1);
2303 break; 2257 break;
2304 case 2: // Don't Save clicked or Alt-D pressed 2258 case 2: // Don't Save clicked or Alt-D pressed
2305 // don't save but exitZs 2259 // don't save but exitZs
2306 exitZs (1); 2260 exitZs (1);
2307 break; 2261 break;
2308 } 2262 }
2309 } 2263 }
2310 exitZs (1); 2264 exitZs (1);
2311 2265
2312} 2266}
2313 2267
2314void ZSafe::categoryFieldActivated( const QString& category) 2268void ZSafe::categoryFieldActivated( const QString& category)
2315{ 2269{
2316 if (categoryDialog) 2270 if (categoryDialog)
2317 setCategoryDialogFields(categoryDialog, category); 2271 setCategoryDialogFields(categoryDialog, category);
2318} 2272}
2319 2273
2320void ZSafe::addCategory() 2274void ZSafe::addCategory()
2321{ 2275{
2322 if (filename.isEmpty()) 2276 if (filename.isEmpty())
2323 { 2277 {
2324 QMessageBox::critical( 0, tr("ZSafe"), 2278 QMessageBox::critical( 0, tr("ZSafe"),
2325 tr("No document defined.\nYou have to create a new document")); 2279 tr("No document defined.\nYou have to create a new document"));
2326 return; 2280 return;
2327 } 2281 }
2328 else 2282 else
2329 { 2283 {
2330 // open the 'Category' dialog 2284 // open the 'Category' dialog
2331 bool initIcons = false; 2285 bool initIcons = false;
2332 // open the 'Category' dialog 2286 // open the 'Category' dialog
2333 CategoryDialog *dialog; 2287 CategoryDialog *dialog;
2334 if (categoryDialog) 2288 if (categoryDialog)
2335 { 2289 {
2336 dialog = categoryDialog; 2290 dialog = categoryDialog;
2337 } 2291 }
2338 else 2292 else
2339 { 2293 {
2340 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE); 2294 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE);
2341 dialog = categoryDialog; 2295 dialog = categoryDialog;
2342 connect( dialog->CategoryField, 2296 connect( dialog->CategoryField,
2343 SIGNAL( activated(const QString&)), 2297 SIGNAL( activated(const QString&)),
2344 this, SLOT( categoryFieldActivated(const QString&) ) ); 2298 this, SLOT( categoryFieldActivated(const QString&) ) );
2345 initIcons = true; 2299 initIcons = true;
2346 } 2300 }
2347 2301
2348 // read all categories from the config file and store 2302 // read all categories from the config file and store
2349 // into a list 2303 // into a list
2350 QFile f (cfgFile); 2304 QFile f (cfgFile);
2351 QStringList list; 2305 QStringList list;
2352 if ( f.open(IO_ReadOnly) ) { // file opened successfully 2306 if ( f.open(IO_ReadOnly) ) { // file opened successfully
2353 QTextStream t( &f ); // use a text stream 2307 QTextStream t( &f ); // use a text stream
2354 QString s; 2308 QString s;
2355 while ( !t.eof() ) { // until end of file... 2309 while ( !t.eof() ) { // until end of file...
2356 s = t.readLine(); // line of text excluding '\n' 2310 s = t.readLine(); // line of text excluding '\n'
2357 list.append(s); 2311 list.append(s);
2358 } 2312 }
2359 f.close(); 2313 f.close();
2360 } 2314 }
2361 QStringList::Iterator it = list.begin(); 2315 QStringList::Iterator it = list.begin();
2362 QString categ; 2316 QString categ;
2363 QString firstCategory; 2317 QString firstCategory;
2364 dialog->CategoryField->clear(); // remove all items 2318 dialog->CategoryField->clear(); // remove all items
2365 while( it != list.end() ) 2319 while( it != list.end() )
2366 { 2320 {
2367 QString *cat = new QString (*it); 2321 QString *cat = new QString (*it);
2368 if (cat->contains("-field1", FALSE)) 2322 if (cat->contains("-field1", FALSE))
2369 { 2323 {
2370 int pos = cat->find ("-field1"); 2324 int pos = cat->find ("-field1");
2371 cat->truncate(pos); 2325 cat->truncate(pos);
2372 categ = *cat; 2326 categ = *cat;
2373 if (!categ.isEmpty()) 2327 if (!categ.isEmpty())
2374 { 2328 {
2375 dialog->CategoryField->insertItem (categ, -1); 2329 dialog->CategoryField->insertItem (categ, -1);
2376 if (firstCategory.isEmpty()) 2330 if (firstCategory.isEmpty())
2377 firstCategory = categ; 2331 firstCategory = categ;
2378 } 2332 }
2379 } 2333 }
2380 ++it; 2334 ++it;
2381 } 2335 }
2382 2336
2383 2337
2384 if (firstCategory.isEmpty()) 2338 if (firstCategory.isEmpty())
2385 setCategoryDialogFields(dialog); 2339 setCategoryDialogFields(dialog);
2386 else 2340 else
2387 setCategoryDialogFields(dialog, firstCategory); 2341 setCategoryDialogFields(dialog, firstCategory);
2388 2342
2389 // CategoryDialog *dialog = new CategoryDialog(this, "Category", TRUE); 2343 // CategoryDialog *dialog = new CategoryDialog(this, "Category", TRUE);
2390 2344
2391 if (initIcons) 2345 if (initIcons)
2392 { 2346 {
2393 Wait waitDialog(this, tr("Wait dialog")); 2347 Wait waitDialog(this, tr("Wait dialog"));
2394 waitDialog.waitLabel->setText(tr("Gathering icons...")); 2348 waitDialog.waitLabel->setText(tr("Gathering icons..."));
2395 waitDialog.show(); 2349 waitDialog.show();
2396 qApp->processEvents(); 2350 qApp->processEvents();
2397 2351
2398 QDir d(QPEApplication::qpeDir() + "pics/"); 2352 QDir d(QPEApplication::qpeDir() + "pics/");
2399 d.setFilter( QDir::Files); 2353 d.setFilter( QDir::Files);
2400 2354
2401 const QFileInfoList *list = d.entryInfoList(); 2355 const QFileInfoList *list = d.entryInfoList();
2402 QFileInfoListIterator it( *list ); // create list iterator 2356 QFileInfoListIterator it( *list ); // create list iterator
2403 QFileInfo *fi; // pointer for traversing 2357 QFileInfo *fi; // pointer for traversing
2404 2358
2405 dialog->IconField->insertItem("predefined"); 2359 dialog->IconField->insertItem("predefined");
2406 while ( (fi=it.current()) ) { // for each file... 2360 while ( (fi=it.current()) ) { // for each file...
2407 QString fileName = fi->fileName(); 2361 QString fileName = fi->fileName();
2408 if(fileName.right(4) == ".png"){ 2362 if(fileName.right(4) == ".png"){
2409 fileName = fileName.mid(0,fileName.length()-4); 2363 fileName = fileName.mid(0,fileName.length()-4);
2410 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 2364 QPixmap imageOfFile(Opie::Core::OResource::loadPixmap(fileName,Opie::Core::OResource::SmallIcon));
2411 QImage foo = imageOfFile.convertToImage();
2412 foo = foo.smoothScale(16,16);
2413 imageOfFile.convertFromImage(foo);
2414 dialog->IconField->insertItem(imageOfFile,fileName); 2365 dialog->IconField->insertItem(imageOfFile,fileName);
2415 } 2366 }
2416 ++it; 2367 ++it;
2417 } 2368 }
2418 waitDialog.hide(); 2369 waitDialog.hide();
2419 } 2370 }
2420 2371
2421 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec(); 2372 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec();
2422 QString category; 2373 QString category;
2423 QString icon; 2374 QString icon;
2424 QString fullIconPath; 2375 QString fullIconPath;
2425 QPixmap *pix; 2376 QPixmap *pix;
2426 if (result == QDialog::Accepted) 2377 if (result == QDialog::Accepted)
2427 { 2378 {
2428 modified = true; 2379 modified = true;
2429 category = dialog->CategoryField->currentText(); 2380 category = dialog->CategoryField->currentText();
2430 icon = dialog->IconField->currentText()+".png"; 2381 icon = dialog->IconField->currentText()+".png";
2431 2382
2432 QListViewItem *li = new ShadedListItem( 1, ListView ); 2383 QListViewItem *li = new ShadedListItem( 1, ListView );
2433 Category *c1 = new Category(); 2384 Category *c1 = new Category();
2434 c1->setCategoryName(category); 2385 c1->setCategoryName(category);
2435 2386
2436 // if (!icon.isEmpty() && !icon.isNull()) 2387 // if (!icon.isEmpty() && !icon.isNull())
2437 if (icon != "predefined.png") 2388 if (icon != "predefined.png")
2438 { 2389 {
2439 // build the full path 2390 // build the full path
2440 fullIconPath = iconPath + icon; 2391 fullIconPath = iconPath + icon;
2441 pix = new QPixmap (fullIconPath); 2392 pix = new QPixmap (fullIconPath);
2442 // pix->resize(14, 14); 2393 // pix->resize(14, 14);
2443 if (!pix->isNull()) 2394 if (!pix->isNull())
2444 { 2395 {
2445 // save the full pixmap name into the config file 2396 // save the full pixmap name into the config file
2446// #ifndef Q_WS_WIN 2397// #ifndef Q_WS_WIN
2447 conf->writeEntry(APP_KEY+category, icon); 2398 conf->writeEntry(APP_KEY+category, icon);
2448// #endif 2399// #endif
2449 saveConf(); 2400 saveConf();
2450 QImage img = pix->convertToImage(); 2401 QImage img = pix->convertToImage();
2451 pix->convertFromImage(img.smoothScale(14,14)); 2402 pix->convertFromImage(img.smoothScale(14,14));
2452 c1->setIcon (*pix); 2403 c1->setIcon (*pix);
2453 c1->setIconName(icon); 2404 c1->setIconName(icon);
2454 } 2405 }
2455 else 2406 else
2456 { 2407 {
2457 QPixmap folder( ( const char** ) general_data ); 2408 QPixmap folder( ( const char** ) general_data );
2458 c1->setIcon (folder); 2409 c1->setIcon (folder);
2459 } 2410 }
2460 } 2411 }
2461 else 2412 else
2462 { 2413 {
2463 c1->setIcon (*getPredefinedIcon(category)); 2414 c1->setIcon (*getPredefinedIcon(category));
2464 } 2415 }
2465 2416
2466 c1->setListItem (li); 2417 c1->setListItem (li);
2467 c1->initListItem(); 2418 c1->initListItem();
2468 categories.insert (c1->getCategoryName(), c1); 2419 categories.insert (c1->getCategoryName(), c1);
2469 2420
2470 saveCategoryDialogFields(dialog); 2421 saveCategoryDialogFields(dialog);
2471 } 2422 }
2472 else 2423 else
2473 { 2424 {
2474 // delete dialog; 2425 // delete dialog;
2475 dialog->hide(); 2426 dialog->hide();
2476 return; 2427 return;
2477 } 2428 }
2478 2429
2479 } 2430 }
2480 2431
2481} 2432}
2482 2433
2483void ZSafe::delCategory() 2434void ZSafe::delCategory()
2484{ 2435{
2485 if (!selectedItem) 2436 if (!selectedItem)
2486 return; 2437 return;
2487 if (isCategory(selectedItem)) 2438 if (isCategory(selectedItem))
2488 { 2439 {
2489 switch( QMessageBox::information( this, tr("ZSafe"), 2440 switch( QMessageBox::information( this, tr("ZSafe"),
2490 tr("Do you want to delete?"), 2441 tr("Do you want to delete?"),
2491 tr("&Delete"), tr("D&on't Delete"), 2442 tr("&Delete"), tr("D&on't Delete"),
2492 0 // Enter == button 0 2443 0 // Enter == button 0
2493 ) ) { // Escape == button 2 2444 ) ) { // Escape == button 2
2494 case 0: // Delete clicked, Alt-S or Enter pressed. 2445 case 0: // Delete clicked, Alt-S or Enter pressed.
2495 // Delete from the category list 2446 // Delete from the category list
2496 modified = true; 2447 modified = true;
2497 categories.remove (selectedItem->text(0)); 2448 categories.remove (selectedItem->text(0));
2498// #ifndef Q_WS_WIN 2449// #ifndef Q_WS_WIN
2499 conf->removeEntry (selectedItem->text(0)); 2450 conf->removeEntry (selectedItem->text(0));
2500// #endif 2451// #endif
2501 saveConf(); 2452 saveConf();
2502 2453
2503 // Delete the selected item and all subitems 2454 // Delete the selected item and all subitems
2504 // step through all subitems 2455 // step through all subitems
2505 QListViewItem *si; 2456 QListViewItem *si;
2506 for (si = selectedItem->firstChild(); 2457 for (si = selectedItem->firstChild();
2507 si != NULL; ) 2458 si != NULL; )
2508 { 2459 {
2509 QListViewItem *_si = si; 2460 QListViewItem *_si = si;
2510 si = si->nextSibling(); 2461 si = si->nextSibling();
2511 selectedItem->takeItem(_si); // remove from view list 2462 selectedItem->takeItem(_si); // remove from view list
2512 if (_si) delete _si; 2463 if (_si) delete _si;
2513 } 2464 }
2514 ListView->takeItem(selectedItem); 2465 ListView->takeItem(selectedItem);
2515 delete selectedItem; 2466 delete selectedItem;
2516 2467
2517 selectedItem = NULL; 2468 selectedItem = NULL;
2518 break; 2469 break;
2519 case 1: // Don't delete 2470 case 1: // Don't delete
2520 break; 2471 break;
2521 } 2472 }
2522 2473
2523 } 2474 }
2524} 2475}
2525 2476
2526void ZSafe::setCategoryDialogFields(CategoryDialog *dialog) 2477void ZSafe::setCategoryDialogFields(CategoryDialog *dialog)
2527{ 2478{
2528 if (!dialog) 2479 if (!dialog)
2529 return; 2480 return;
2530 2481
2531 QString icon; 2482 QString icon;
2532 if (selectedItem) 2483 if (selectedItem)
2533 { 2484 {
2534 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name"))); 2485 dialog->Field1->setText(getFieldLabel (selectedItem, "1", tr("Name")));
2535 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username"))); 2486 dialog->Field2->setText(getFieldLabel (selectedItem, "2", tr("Username")));
2536 dialog->Field3->setText(getFieldLabel (selectedItem, "3", tr("Password"))); 2487 dialog->Field3->setText(getFieldLabel (selectedItem, "3", tr("Password")));
2537 dialog->Field4->setText(getFieldLabel (selectedItem, "4", tr("Comment"))); 2488 dialog->Field4->setText(getFieldLabel (selectedItem, "4", tr("Comment")));
2538 dialog->Field5->setText(getFieldLabel (selectedItem, "5", tr("Field 4"))); 2489 dialog->Field5->setText(getFieldLabel (selectedItem, "5", tr("Field 4")));
2539 dialog->Field6->setText(getFieldLabel (selectedItem, "6", tr("Field 5"))); 2490 dialog->Field6->setText(getFieldLabel (selectedItem, "6", tr("Field 5")));
2540 2491
2541 Category *cat= categories.find (selectedItem->text(0)); 2492 Category *cat= categories.find (selectedItem->text(0));
2542 if (cat) 2493 if (cat)
2543 { 2494 {
2544 icon = cat->getIconName(); 2495 icon = cat->getIconName();
2545 } 2496 }
2546 else 2497 else
2547 icon = conf->readEntry(APP_KEY+selectedItem->text(0)); 2498 icon = conf->readEntry(APP_KEY+selectedItem->text(0));
2548 } 2499 }
2549 else 2500 else
2550 { 2501 {
2551 dialog->Field1->setText(tr("Name")); 2502 dialog->Field1->setText(tr("Name"));
2552 dialog->Field2->setText(tr("Username")); 2503 dialog->Field2->setText(tr("Username"));
2553 dialog->Field3->setText(tr("Password")); 2504 dialog->Field3->setText(tr("Password"));
2554 dialog->Field4->setText(tr("Comment")); 2505 dialog->Field4->setText(tr("Comment"));
2555 dialog->Field5->setText(tr("Field 4")); 2506 dialog->Field5->setText(tr("Field 4"));
2556 dialog->Field6->setText(tr("Field 5")); 2507 dialog->Field6->setText(tr("Field 5"));
2557 } 2508 }
2558 2509
2559 QDir d(QPEApplication::qpeDir() + "pics/"); 2510 QDir d(QPEApplication::qpeDir() + "pics/");
2560 d.setFilter( QDir::Files); 2511 d.setFilter( QDir::Files);
2561 2512
2562 const QFileInfoList *list = d.entryInfoList(); 2513 const QFileInfoList *list = d.entryInfoList();
2563 int i=0; 2514 int i=0;
2564 QFileInfoListIterator it( *list ); // create list iterator 2515 QFileInfoListIterator it( *list ); // create list iterator
2565 QFileInfo *fi; // pointer for traversing 2516 QFileInfo *fi; // pointer for traversing
2566 if (icon.isEmpty() || icon.isNull()) 2517 if (icon.isEmpty() || icon.isNull())
2567 { 2518 {
2568 dialog->IconField->setCurrentItem(0); 2519 dialog->IconField->setCurrentItem(0);
2569 } 2520 }
2570 else 2521 else
2571 { 2522 {
2572 while ( (fi=it.current()) ) 2523 while ( (fi=it.current()) )
2573 { // for each file... 2524 { // for each file...
2574 QString fileName = fi->fileName(); 2525 QString fileName = fi->fileName();
2575 if(fileName.right(4) == ".png") 2526 if(fileName.right(4) == ".png")
2576 { 2527 {
2577 fileName = fileName.mid(0,fileName.length()-4); 2528 fileName = fileName.mid(0,fileName.length()-4);
2578 2529
2579 if(fileName+".png"==icon) 2530 if(fileName+".png"==icon)
2580 { 2531 {
2581 dialog->IconField->setCurrentItem(i+1); 2532 dialog->IconField->setCurrentItem(i+1);
2582 break; 2533 break;
2583 } 2534 }
2584 ++i; 2535 ++i;
2585 } 2536 }
2586 ++it; 2537 ++it;
2587 } 2538 }
2588 } 2539 }
2589} 2540}
2590 2541
2591void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category) 2542void ZSafe::setCategoryDialogFields(CategoryDialog *dialog, QString category)
2592{ 2543{
2593 if (!dialog) 2544 if (!dialog)
2594 return; 2545 return;
2595 2546
2596 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name"))); 2547 dialog->Field1->setText(getFieldLabel (category, "1", tr("Name")));
2597 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username"))); 2548 dialog->Field2->setText(getFieldLabel (category, "2", tr("Username")));
2598 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password"))); 2549 dialog->Field3->setText(getFieldLabel (category, "3", tr("Password")));
2599 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment"))); 2550 dialog->Field4->setText(getFieldLabel (category, "4", tr("Comment")));
2600 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4"))); 2551 dialog->Field5->setText(getFieldLabel (category, "5", tr("Field 4")));
2601 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5"))); 2552 dialog->Field6->setText(getFieldLabel (category, "6", tr("Field 5")));
2602 2553
2603 QString icon; 2554 QString icon;
2604 Category *cat= categories.find (category); 2555 Category *cat= categories.find (category);
2605 if (cat) 2556 if (cat)
2606 { 2557 {
2607 icon = cat->getIconName(); 2558 icon = cat->getIconName();
2608 } 2559 }
2609 else 2560 else
2610 icon = conf->readEntry(APP_KEY+category); 2561 icon = conf->readEntry(APP_KEY+category);
2611 2562
2612 QDir d(QPEApplication::qpeDir() + "pics/"); 2563 QDir d(QPEApplication::qpeDir() + "pics/");
2613 d.setFilter( QDir::Files); 2564 d.setFilter( QDir::Files);
2614 2565
2615 const QFileInfoList *list = d.entryInfoList(); 2566 const QFileInfoList *list = d.entryInfoList();
2616 int i=0; 2567 int i=0;
2617 QFileInfoListIterator it( *list ); // create list iterator 2568 QFileInfoListIterator it( *list ); // create list iterator
2618 QFileInfo *fi; // pointer for traversing 2569 QFileInfo *fi; // pointer for traversing
2619 if (icon.isEmpty() || icon.isNull()) 2570 if (icon.isEmpty() || icon.isNull())
2620 { 2571 {
2621 dialog->IconField->setCurrentItem(0); 2572 dialog->IconField->setCurrentItem(0);
2622 } 2573 }
2623 else 2574 else
2624 { 2575 {
2625 while ( (fi=it.current()) ) 2576 while ( (fi=it.current()) )
2626 { // for each file... 2577 { // for each file...
2627 QString fileName = fi->fileName(); 2578 QString fileName = fi->fileName();
2628 if(fileName.right(4) == ".png") 2579 if(fileName.right(4) == ".png")
2629 { 2580 {
2630 fileName = fileName.mid(0,fileName.length()-4); 2581 fileName = fileName.mid(0,fileName.length()-4);
2631 2582
2632 if(fileName+".png"==icon) 2583 if(fileName+".png"==icon)
2633 { 2584 {
2634 dialog->IconField->setCurrentItem(i+1); 2585 dialog->IconField->setCurrentItem(i+1);
2635 break; 2586 break;
2636 } 2587 }
2637 ++i; 2588 ++i;
2638 } 2589 }
2639 ++it; 2590 ++it;
2640 } 2591 }
2641 } 2592 }
2642} 2593}
2643 2594
2644void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog) 2595void ZSafe::saveCategoryDialogFields(CategoryDialog *dialog)
2645{ 2596{
2646 QString app_key = APP_KEY; 2597 QString app_key = APP_KEY;
2647 conf->setGroup( "fieldDefs" ); 2598 conf->setGroup( "fieldDefs" );
2648 QString category = dialog->CategoryField->currentText(); 2599 QString category = dialog->CategoryField->currentText();
2649// #ifndef Q_WS_WIN 2600// #ifndef Q_WS_WIN
2650 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text()); 2601 conf->writeEntry(app_key+category+"-field1", dialog->Field1->text());
2651 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text()); 2602 conf->writeEntry(app_key+category+"-field2", dialog->Field2->text());
2652 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text()); 2603 conf->writeEntry(app_key+category+"-field3", dialog->Field3->text());
2653 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text()); 2604 conf->writeEntry(app_key+category+"-field4", dialog->Field4->text());
2654 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text()); 2605 conf->writeEntry(app_key+category+"-field5", dialog->Field5->text());
2655 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text()); 2606 conf->writeEntry(app_key+category+"-field6", dialog->Field6->text());
2656// #endif 2607// #endif
2657 saveConf(); 2608 saveConf();
2658 conf->setGroup ("zsafe"); 2609 conf->setGroup ("zsafe");
2659} 2610}
2660 2611
2661void ZSafe::editCategory() 2612void ZSafe::editCategory()
2662{ 2613{
2663 if (!selectedItem) 2614 if (!selectedItem)
2664 return; 2615 return;
2665 if (isCategory(selectedItem)) 2616 if (isCategory(selectedItem))
2666 { 2617 {
2667 QString category = selectedItem->text(0); 2618 QString category = selectedItem->text(0);
2668 bool initIcons = false; 2619 bool initIcons = false;
2669 // open the 'Category' dialog 2620 // open the 'Category' dialog
2670 CategoryDialog *dialog; 2621 CategoryDialog *dialog;
2671 if (categoryDialog) 2622 if (categoryDialog)
2672 { 2623 {
2673 dialog = categoryDialog; 2624 dialog = categoryDialog;
2674 } 2625 }
2675 else 2626 else
2676 { 2627 {
2677 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE); 2628 categoryDialog = new CategoryDialog(this, tr("Category"), TRUE);
2678 dialog = categoryDialog; 2629 dialog = categoryDialog;
2679 connect( dialog->CategoryField, 2630 connect( dialog->CategoryField,
2680 SIGNAL( activated(const QString&)), 2631 SIGNAL( activated(const QString&)),
2681 this, SLOT( categoryFieldActivated(const QString&) ) ); 2632 this, SLOT( categoryFieldActivated(const QString&) ) );
2682 initIcons = true; 2633 initIcons = true;
2683 } 2634 }
2684 setCategoryDialogFields(dialog); 2635 setCategoryDialogFields(dialog);
2685 2636
2686 // read all categories from the config file and store 2637 // read all categories from the config file and store
2687 // into a list 2638 // into a list
2688 QFile f (cfgFile); 2639 QFile f (cfgFile);
2689 QStringList list; 2640 QStringList list;
2690 if ( f.open(IO_ReadOnly) ) { // file opened successfully 2641 if ( f.open(IO_ReadOnly) ) { // file opened successfully
2691 QTextStream t( &f ); // use a text stream 2642 QTextStream t( &f ); // use a text stream
2692 QString s; 2643 QString s;
2693 while ( !t.eof() ) { // until end of file... 2644 while ( !t.eof() ) { // until end of file...
2694 s = t.readLine(); // line of text excluding '\n' 2645 s = t.readLine(); // line of text excluding '\n'
2695 list.append(s); 2646 list.append(s);
2696 } 2647 }
2697 f.close(); 2648 f.close();
2698 } 2649 }
2699 QStringList::Iterator it = list.begin(); 2650 QStringList::Iterator it = list.begin();
2700 QString categ; 2651 QString categ;
2701 dialog->CategoryField->clear(); // remove all items 2652 dialog->CategoryField->clear(); // remove all items
2702 int i=0; 2653 int i=0;
2703 bool foundCategory = false; 2654 bool foundCategory = false;
2704 while( it != list.end() ) 2655 while( it != list.end() )
2705 { 2656 {
2706 QString *cat = new QString (*it); 2657 QString *cat = new QString (*it);
2707 if (cat->contains("-field1", FALSE)) 2658 if (cat->contains("-field1", FALSE))
2708 { 2659 {
2709 int pos = cat->find ("-field1"); 2660 int pos = cat->find ("-field1");
2710 cat->truncate(pos); 2661 cat->truncate(pos);
2711 categ = *cat; 2662 categ = *cat;
2712 if (!categ.isEmpty()) 2663 if (!categ.isEmpty())
2713 { 2664 {
2714 dialog->CategoryField->insertItem (categ, i); 2665 dialog->CategoryField->insertItem (categ, i);
2715 if (category.compare(categ) == 0) 2666 if (category.compare(categ) == 0)
2716 { 2667 {
2717 dialog->CategoryField->setCurrentItem(i); 2668 dialog->CategoryField->setCurrentItem(i);
2718 foundCategory = true; 2669 foundCategory = true;
2719 } 2670 }
2720 i++; 2671 i++;
2721 } 2672 }
2722 } 2673 }
2723 ++it; 2674 ++it;
2724 } 2675 }
2725 if (!foundCategory) 2676 if (!foundCategory)
2726 { 2677 {
2727 dialog->CategoryField->insertItem (category, i); 2678 dialog->CategoryField->insertItem (category, i);
2728 dialog->CategoryField->setCurrentItem(i); 2679 dialog->CategoryField->setCurrentItem(i);
2729 } 2680 }
2730 2681
2731 QString icon; 2682 QString icon;
2732 Category *cat= categories.find (selectedItem->text(0)); 2683 Category *cat= categories.find (selectedItem->text(0));
2733 if (cat) 2684 if (cat)
2734 { 2685 {
2735 icon = cat->getIconName(); 2686 icon = cat->getIconName();
2736 } 2687 }
2737 2688
2738 if (initIcons) 2689 if (initIcons)
2739 { 2690 {
2740 2691
2741 Wait waitDialog(this, tr("Wait dialog")); 2692 Wait waitDialog(this, tr("Wait dialog"));
2742 waitDialog.waitLabel->setText(tr("Gathering icons...")); 2693 waitDialog.waitLabel->setText(tr("Gathering icons..."));
2743 waitDialog.show(); 2694 waitDialog.show();
2744 qApp->processEvents(); 2695 qApp->processEvents();
2745 2696
2746 QDir d(QPEApplication::qpeDir() + "pics/"); 2697 QDir d(QPEApplication::qpeDir() + "pics/");
2747 d.setFilter( QDir::Files); 2698 d.setFilter( QDir::Files);
2748 2699
2749 const QFileInfoList *list = d.entryInfoList(); 2700 const QFileInfoList *list = d.entryInfoList();
2750 int i=0; 2701 int i=0;
2751 QFileInfoListIterator it( *list ); // create list iterator 2702 QFileInfoListIterator it( *list ); // create list iterator
2752 QFileInfo *fi; // pointer for traversing 2703 QFileInfo *fi; // pointer for traversing
2753 if (icon.isEmpty() || icon.isNull()) 2704 if (icon.isEmpty() || icon.isNull())
2754 { 2705 {
2755 dialog->IconField->setCurrentItem(0); 2706 dialog->IconField->setCurrentItem(0);
2756 } 2707 }
2757 2708
2758 dialog->IconField->insertItem("predefined"); 2709 dialog->IconField->insertItem("predefined");
2759 while ( (fi=it.current()) ) { // for each file... 2710 while ( (fi=it.current()) ) { // for each file...
2760 QString fileName = fi->fileName(); 2711 QString fileName = fi->fileName();
2761 if(fileName.right(4) == ".png") 2712 if(fileName.right(4) == ".png")
2762 { 2713 {
2763 fileName = fileName.mid(0,fileName.length()-4); 2714 fileName = fileName.mid(0,fileName.length()-4);
2764 QPixmap imageOfFile(Resource::loadPixmap(fileName)); 2715 QPixmap imageOfFile(Opie::Core::OResource::loadPixmap(fileName,Opie::Core::OResource::SmallIcon));
2765 QImage foo = imageOfFile.convertToImage();
2766 foo = foo.smoothScale(16,16);
2767 imageOfFile.convertFromImage(foo);
2768 dialog->IconField->insertItem(imageOfFile,fileName); 2716 dialog->IconField->insertItem(imageOfFile,fileName);
2769 if(fileName+".png"==icon) 2717 if(fileName+".png"==icon)
2770 dialog->IconField->setCurrentItem(i+1); 2718 dialog->IconField->setCurrentItem(i+1);
2771 ++i; 2719 ++i;
2772 } 2720 }
2773 ++it; 2721 ++it;
2774 } 2722 }
2775 waitDialog.hide(); 2723 waitDialog.hide();
2776 } 2724 }
2777 else 2725 else
2778 { 2726 {
2779 QDir d(QPEApplication::qpeDir() + "pics/"); 2727 QDir d(QPEApplication::qpeDir() + "pics/");
2780 d.setFilter( QDir::Files); 2728 d.setFilter( QDir::Files);
2781 2729
2782 const QFileInfoList *list = d.entryInfoList(); 2730 const QFileInfoList *list = d.entryInfoList();
2783 int i=0; 2731 int i=0;
2784 QFileInfoListIterator it( *list ); // create list iterator 2732 QFileInfoListIterator it( *list ); // create list iterator
2785 QFileInfo *fi; // pointer for traversing 2733 QFileInfo *fi; // pointer for traversing
2786 if (icon.isEmpty() || icon.isNull()) 2734 if (icon.isEmpty() || icon.isNull())
2787 { 2735 {
2788 dialog->IconField->setCurrentItem(0); 2736 dialog->IconField->setCurrentItem(0);
2789 } 2737 }
2790 else 2738 else
2791 { 2739 {
2792 2740
2793 while ( (fi=it.current()) ) 2741 while ( (fi=it.current()) )
2794 { // for each file... 2742 { // for each file...
2795 QString fileName = fi->fileName(); 2743 QString fileName = fi->fileName();
2796 if(fileName.right(4) == ".png") 2744 if(fileName.right(4) == ".png")
2797 { 2745 {
2798 fileName = fileName.mid(0,fileName.length()-4); 2746 fileName = fileName.mid(0,fileName.length()-4);
2799 2747
2800 2748
2801 if(fileName+".png"==icon) 2749 if(fileName+".png"==icon)
2802 { 2750 {
2803 dialog->IconField->setCurrentItem(i+1); 2751 dialog->IconField->setCurrentItem(i+1);
2804 break; 2752 break;
2805 } 2753 }
2806 ++i; 2754 ++i;
2807 } 2755 }
2808 ++it; 2756 ++it;
2809 } 2757 }
2810 } 2758 }
2811 } 2759 }
2812 2760
2813 // dialog->show(); 2761 // dialog->show();
2814 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec(); 2762 QDialog::DialogCode result = (QDialog::DialogCode) dialog->exec();
2815 2763
2816 QString fullIconPath; 2764 QString fullIconPath;
2817 QPixmap *pix; 2765 QPixmap *pix;
2818 if (result == QDialog::Accepted) 2766 if (result == QDialog::Accepted)
2819 { 2767 {
2820 modified = true; 2768 modified = true;
2821 if (category != dialog->CategoryField->currentText()) 2769 if (category != dialog->CategoryField->currentText())
2822 { 2770 {
2823 categories.remove (category); 2771 categories.remove (category);
2824// #ifndef Q_WS_WIN 2772// #ifndef Q_WS_WIN
2825 conf->removeEntry(category); 2773 conf->removeEntry(category);
2826// #endif 2774// #endif
2827 saveConf(); 2775 saveConf();
2828 } 2776 }
2829 2777
2830 category = dialog->CategoryField->currentText(); 2778 category = dialog->CategoryField->currentText();
2831 icon = dialog->IconField->currentText()+".png"; 2779 icon = dialog->IconField->currentText()+".png";
2832 2780
2833 if (cat) 2781 if (cat)
2834 { 2782 {
2835 // if (!icon.isEmpty() && !icon.isNull()) 2783 // if (!icon.isEmpty() && !icon.isNull())
2836 if (icon != "predefined.png") 2784 if (icon != "predefined.png")
2837 { 2785 {
2838 // build the full path 2786 // build the full path
2839 fullIconPath = iconPath + icon; 2787 fullIconPath = iconPath + icon;
2840 pix = new QPixmap (fullIconPath); 2788 pix = new QPixmap (fullIconPath);
2841 if (!pix->isNull()) 2789 if (!pix->isNull())
2842 { 2790 {
2843 // save the full pixmap name into the config file 2791 // save the full pixmap name into the config file
2844// #ifndef Q_WS_WIN 2792// #ifndef Q_WS_WIN
2845 conf->writeEntry(APP_KEY+category, icon); 2793 conf->writeEntry(APP_KEY+category, icon);
2846// #endif 2794// #endif
2847 saveConf(); 2795 saveConf();
2848 QImage img = pix->convertToImage(); 2796 QImage img = pix->convertToImage();
2849 pix->convertFromImage(img.smoothScale(14,14)); 2797 pix->convertFromImage(img.smoothScale(14,14));
2850 cat->setIconName (icon); 2798 cat->setIconName (icon);
2851 cat->setIcon (*pix); 2799 cat->setIcon (*pix);
2852 } 2800 }
2853 } 2801 }
2854 else 2802 else
2855 { 2803 {
2856// #ifndef Q_WS_WIN 2804// #ifndef Q_WS_WIN
2857 conf->removeEntry (category); 2805 conf->removeEntry (category);
2858// #endif 2806// #endif
2859 saveConf(); 2807 saveConf();
2860 cat->setIcon (*getPredefinedIcon(category)); 2808 cat->setIcon (*getPredefinedIcon(category));
2861 } 2809 }
2862 2810
2863 // change the category name of the selected category 2811 // change the category name of the selected category
2864 QListViewItem *catItem = cat->getListItem(); 2812 QListViewItem *catItem = cat->getListItem();
2865 if (catItem) 2813 if (catItem)
2866 { 2814 {
2867 catItem->setText( 0, tr( category ) ); 2815 catItem->setText( 0, tr( category ) );
2868 cat->setCategoryName (tr(category)); 2816 cat->setCategoryName (tr(category));
2869 2817
2870 cat->initListItem(); 2818 cat->initListItem();
2871 categories.insert (category, cat); 2819 categories.insert (category, cat);
2872 } 2820 }
2873 } 2821 }
2874 saveCategoryDialogFields(dialog); 2822 saveCategoryDialogFields(dialog);
2875 } 2823 }
2876 else 2824 else
2877 { 2825 {
2878 // delete dialog; 2826 // delete dialog;
2879 dialog->hide(); 2827 dialog->hide();
2880 return; 2828 return;
2881 } 2829 }
2882 2830
2883 } 2831 }
2884} 2832}
2885 2833
2886void ZSafe::cutItem() 2834void ZSafe::cutItem()
2887{ 2835{
2888 if (!selectedItem) 2836 if (!selectedItem)
2889 return; 2837 return;
2890 if (!isCategory(selectedItem)) 2838 if (!isCategory(selectedItem))
2891 { 2839 {
2892 IsCut = true; 2840 IsCut = true;
2893 copiedItem = selectedItem; 2841 copiedItem = selectedItem;
2894 } 2842 }
2895} 2843}
2896 2844
2897void ZSafe::copyItem() 2845void ZSafe::copyItem()
2898{ 2846{
2899 if (!selectedItem) 2847 if (!selectedItem)
2900 return; 2848 return;
2901 if (!isCategory(selectedItem)) 2849 if (!isCategory(selectedItem))
2902 { 2850 {
2903 IsCopy = true; 2851 IsCopy = true;
2904 copiedItem = selectedItem; 2852 copiedItem = selectedItem;
2905 } 2853 }
2906} 2854}
2907 2855
2908// paste item into category 2856// paste item into category
2909void ZSafe::pasteItem() 2857void ZSafe::pasteItem()
2910{ 2858{
2911 if (!selectedItem) 2859 if (!selectedItem)
2912 return; 2860 return;
2913 if (isCategory(selectedItem)) 2861 if (isCategory(selectedItem))
2914 { 2862 {
2915 modified = true; 2863 modified = true;
2916 if (IsCut) 2864 if (IsCut)
2917 { 2865 {
2918 if (copiedItem) 2866 if (copiedItem)
2919 { 2867 {
2920 // add the new item 2868 // add the new item
2921 QListViewItem *i = new ShadedListItem (0, selectedItem); 2869 QListViewItem *i = new ShadedListItem (0, selectedItem);
2922 // i->setOpen (TRUE); 2870 // i->setOpen (TRUE);
2923 i->setText (0, copiedItem->text(0)); 2871 i->setText (0, copiedItem->text(0));
2924 i->setText (1, copiedItem->text(1)); 2872 i->setText (1, copiedItem->text(1));
2925 i->setText (2, copiedItem->text(2)); 2873 i->setText (2, copiedItem->text(2));
2926 i->setText (3, copiedItem->text(3)); 2874 i->setText (3, copiedItem->text(3));
2927 i->setText (4, copiedItem->text(4)); 2875 i->setText (4, copiedItem->text(4));
2928 i->setText (5, copiedItem->text(5)); 2876 i->setText (5, copiedItem->text(5));
2929 selectedItem->setOpen( TRUE ); 2877 selectedItem->setOpen( TRUE );
2930 2878
2931 // remove the cutted item 2879 // remove the cutted item
2932 copiedItem->parent()->takeItem(copiedItem); 2880 copiedItem->parent()->takeItem(copiedItem);
2933 selectedItem = NULL; 2881 selectedItem = NULL;
2934 } 2882 }
2935 } 2883 }
2936 else if (IsCopy) 2884 else if (IsCopy)
2937 { 2885 {
2938 if (copiedItem) 2886 if (copiedItem)
2939 { 2887 {
2940 // add the new item 2888 // add the new item
2941 QListViewItem *i = new ShadedListItem (0, selectedItem); 2889 QListViewItem *i = new ShadedListItem (0, selectedItem);
2942 // i->setOpen (TRUE); 2890 // i->setOpen (TRUE);
2943 i->setText (0, copiedItem->text(0)); 2891 i->setText (0, copiedItem->text(0));
2944 i->setText (1, copiedItem->text(1)); 2892 i->setText (1, copiedItem->text(1));
2945 i->setText (2, copiedItem->text(2)); 2893 i->setText (2, copiedItem->text(2));
2946 i->setText (3, copiedItem->text(3)); 2894 i->setText (3, copiedItem->text(3));
2947 i->setText (4, copiedItem->text(4)); 2895 i->setText (4, copiedItem->text(4));
2948 i->setText (5, copiedItem->text(5)); 2896 i->setText (5, copiedItem->text(5));
2949 selectedItem->setOpen( TRUE ); 2897 selectedItem->setOpen( TRUE );
2950 } 2898 }
2951 } 2899 }
2952 } 2900 }
2953 IsCut = false; 2901 IsCut = false;
2954 IsCopy = false; 2902 IsCopy = false;
2955} 2903}
2956 2904
2957void ZSafe::newDocument() 2905void ZSafe::newDocument()
2958{ 2906{
2959 2907
2960 // open the file dialog 2908 // open the file dialog
2961 QString newFile = zsaveDialog(); 2909 QString newFile = zsaveDialog();
2962 2910
2963 // open the new document 2911 // open the new document
2964 if (newFile && newFile.length() > 0 ) 2912 if (newFile && newFile.length() > 0 )
2965 { 2913 {
2966 // save the previous opened document 2914 // save the previous opened document
2967 if (!filename.isEmpty()) 2915 if (!filename.isEmpty())
2968 saveDocument(filename, FALSE); 2916 saveDocument(filename, FALSE);
2969 2917
2970 modified = true; 2918 modified = true;
2971 2919
2972 // clear the password list 2920 // clear the password list
2973 QListViewItem *i; 2921 QListViewItem *i;
2974 QListViewItem *c = NULL; 2922 QListViewItem *c = NULL;
2975 // step through all categories 2923 // step through all categories
2976 for (i = ListView->firstChild(); 2924 for (i = ListView->firstChild();
2977 i != NULL; 2925 i != NULL;
2978 i = i->nextSibling()) 2926 i = i->nextSibling())
2979 { 2927 {
2980 if (c) delete c; // delete the previous category 2928 if (c) delete c; // delete the previous category
2981 2929
2982 c = i; 2930 c = i;
2983 // step through all subitems 2931 // step through all subitems
2984 QListViewItem *si; 2932 QListViewItem *si;
2985 for (si = i->firstChild(); 2933 for (si = i->firstChild();
2986 si != NULL; ) 2934 si != NULL; )
2987 { 2935 {
2988 QListViewItem *_si = si; 2936 QListViewItem *_si = si;
2989 si = si->nextSibling(); 2937 si = si->nextSibling();
2990 i->takeItem(_si); // remove from view list 2938 i->takeItem(_si); // remove from view list
2991 if (_si) delete _si; 2939 if (_si) delete _si;
2992 } 2940 }
2993 } 2941 }
2994 if (c) delete c; // delete the previous category 2942 if (c) delete c; // delete the previous category
2995 categories.clear(); 2943 categories.clear();
2996 2944
2997 // m_password = ""; 2945 // m_password = "";
2998 selectedItem = NULL; 2946 selectedItem = NULL;
2999 2947
3000 filename = newFile; 2948 filename = newFile;
3001 2949
3002 // save the current filename to the config file 2950 // save the current filename to the config file
3003 conf->setGroup("zsafe"); 2951 conf->setGroup("zsafe");
3004 conf->writeEntry(APP_KEY+"document", filename); 2952 conf->writeEntry(APP_KEY+"document", filename);
3005 saveConf(); 2953 saveConf();
3006 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 2954 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3007 this->setCaption(tr("ZSafe: ") + ti); 2955 this->setCaption(tr("ZSafe: ") + ti);
3008 2956
3009 // openDocument(filename); 2957 // openDocument(filename);
3010 2958
3011 QMessageBox::information( this, tr("ZSafe"), 2959 QMessageBox::information( this, tr("ZSafe"),
3012 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 2960 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3013 2961
3014 saveDocumentWithPwd(); 2962 saveDocumentWithPwd();
3015 } 2963 }
3016} 2964}
3017 2965
3018void ZSafe::loadDocument() 2966void ZSafe::loadDocument()
3019{ 2967{
3020 2968
3021 // open the file dialog 2969 // open the file dialog
3022 QMap<QString, QStringList> mimeTypes; 2970 QMap<QString, QStringList> mimeTypes;
3023 mimeTypes.insert(tr("All"), QStringList() ); 2971 mimeTypes.insert(tr("All"), QStringList() );
3024 mimeTypes.insert(tr("ZSafe"), "zsafe/*" ); 2972 mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
3025 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL, 2973 QString newFile = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
3026 QDir::homeDirPath() + "/Documents/application/zsafe", 2974 QDir::homeDirPath() + "/Documents/application/zsafe",
3027 QString::null, 2975 QString::null,
3028 mimeTypes, 2976 mimeTypes,
3029 this, 2977 this,
3030 tr ("Open ZSafe document")); 2978 tr ("Open ZSafe document"));
3031 2979
3032 // open the new document 2980 // open the new document
3033 if (newFile && newFile.length() > 0 ) 2981 if (newFile && newFile.length() > 0 )
3034 { 2982 {
3035 // save the previous opened document 2983 // save the previous opened document
3036 if (!filename.isEmpty()) 2984 if (!filename.isEmpty())
3037 saveDocument(filename, FALSE); 2985 saveDocument(filename, FALSE);
3038 2986
3039 // clear the password list 2987 // clear the password list
3040 QListViewItem *i; 2988 QListViewItem *i;
3041 QListViewItem *c = NULL; 2989 QListViewItem *c = NULL;
3042 // step through all categories 2990 // step through all categories
3043 for (i = ListView->firstChild(); 2991 for (i = ListView->firstChild();
3044 i != NULL; 2992 i != NULL;
3045 i = i->nextSibling()) 2993 i = i->nextSibling())
3046 { 2994 {
3047 if (c) delete c; // delete the previous category 2995 if (c) delete c; // delete the previous category
3048 2996
3049 c = i; 2997 c = i;
3050 // step through all subitems 2998 // step through all subitems
3051 QListViewItem *si; 2999 QListViewItem *si;
3052 for (si = i->firstChild(); 3000 for (si = i->firstChild();
3053 si != NULL; ) 3001 si != NULL; )
3054 { 3002 {
3055 QListViewItem *_si = si; 3003 QListViewItem *_si = si;
3056 si = si->nextSibling(); 3004 si = si->nextSibling();
3057 i->takeItem(_si); // remove from view list 3005 i->takeItem(_si); // remove from view list
3058 if (_si) delete _si; 3006 if (_si) delete _si;
3059 } 3007 }
3060 } 3008 }
3061 if (c) delete c; // delete the previous category 3009 if (c) delete c; // delete the previous category
3062 categories.clear(); 3010 categories.clear();
3063 m_password = ""; 3011 m_password = "";
3064 selectedItem = NULL; 3012 selectedItem = NULL;
3065 filename = newFile; 3013 filename = newFile;
3066 3014
3067 // save the current filename to the config file 3015 // save the current filename to the config file
3068 conf->setGroup("zsafe"); 3016 conf->setGroup("zsafe");
3069 conf->writeEntry(APP_KEY+"document", filename); 3017 conf->writeEntry(APP_KEY+"document", filename);
3070 saveConf(); 3018 saveConf();
3071 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3019 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3072 this->setCaption(tr("ZSafe: ") + ti); 3020 this->setCaption(tr("ZSafe: ") + ti);
3073 3021
3074 openDocument(filename); 3022 openDocument(filename);
3075 } 3023 }
3076} 3024}
3077 3025
3078void ZSafe::saveDocumentAs() 3026void ZSafe::saveDocumentAs()
3079{ 3027{
3080 3028
3081QString newFile = zsaveDialog(); 3029QString newFile = zsaveDialog();
3082 // open the new document 3030 // open the new document
3083 if (newFile && newFile.length() > 0 ) 3031 if (newFile && newFile.length() > 0 )
3084 { 3032 {
3085 // save the previous opened document 3033 // save the previous opened document
3086 if (!filename.isEmpty()) 3034 if (!filename.isEmpty())
3087 saveDocument(filename, FALSE); 3035 saveDocument(filename, FALSE);
3088 3036
3089 selectedItem = NULL; 3037 selectedItem = NULL;
3090 filename = newFile; 3038 filename = newFile;
3091 3039
3092 // save the current filename to the config file 3040 // save the current filename to the config file
3093 conf->setGroup("zsafe"); 3041 conf->setGroup("zsafe");
3094 conf->writeEntry(APP_KEY+"document", filename); 3042 conf->writeEntry(APP_KEY+"document", filename);
3095 saveConf(); 3043 saveConf();
3096 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3044 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3097 this->setCaption(tr("ZSafe: ") + ti); 3045 this->setCaption(tr("ZSafe: ") + ti);
3098 3046
3099 QMessageBox::information( this, tr("ZSafe"), 3047 QMessageBox::information( this, tr("ZSafe"),
3100 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0); 3048 tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
3101 3049
3102 saveDocumentWithPwd(); 3050 saveDocumentWithPwd();
3103 } 3051 }
3104} 3052}
3105 3053
3106void ZSafe::saveDocumentWithoutPwd() 3054void ZSafe::saveDocumentWithoutPwd()
3107{ 3055{
3108 saveDocument(filename, FALSE); 3056 saveDocument(filename, FALSE);
3109} 3057}
3110 3058
3111void ZSafe::saveDocumentWithPwd() 3059void ZSafe::saveDocumentWithPwd()
3112{ 3060{
3113 saveDocument(filename, TRUE); 3061 saveDocument(filename, TRUE);
3114} 3062}
3115 3063
3116void ZSafe::about()
3117{
3118 QString info;
3119 info = tr("<html><body><div align=""center"">"
3120 "<b>"
3121 "Zaurus Password Manager<br>"
3122 "ZSafe version 2.1.2<br>"
3123 "</b>"
3124 "by Carsten Schneider<br>"
3125 "zcarsten@gmx.net<br>"
3126 "http://z-soft.z-portal.info/zsafe"
3127 "<br>"
3128 "Translations by Robert Ernst<br>"
3129 "robert.ernst@linux-solutions.at<br>"
3130 "<br></div>"
3131 "</body></html>");
3132
3133 // QMessageBox::information( this, tr("ZSafe"), info, tr("&OK"), 0);
3134
3135 QMessageBox mb( this, tr("ZSafe"));
3136 mb.setText (info);
3137 mb.setButtonText (QMessageBox::Ok, tr ("&OK"));
3138 QPixmap zsafe_img((const char**) zsafe_xpm);
3139 mb.setIconPixmap (zsafe_img);
3140 mb.exec();
3141}
3142
3143void ZSafe::setExpandFlag() 3064void ZSafe::setExpandFlag()
3144{ 3065{
3145 expandTree = !expandTree; 3066 expandTree = !expandTree;
3146 file->setItemChecked('o', expandTree); 3067 file->setItemChecked('o', expandTree);
3147 conf->setGroup ("zsafePrefs"); 3068 conf->setGroup ("zsafePrefs");
3148// #ifndef Q_WS_WIN 3069// #ifndef Q_WS_WIN
3149 conf->writeEntry (APP_KEY+"expandTree", expandTree); 3070 conf->writeEntry (APP_KEY+"expandTree", expandTree);
3150// #endif 3071// #endif
3151 saveConf(); 3072 saveConf();
3152 3073
3153} 3074}
3154 3075
3155void ZSafe::paintEvent( QPaintEvent * ) 3076void ZSafe::paintEvent( QPaintEvent * )
3156{ 3077{
3157 if (raiseFlag) 3078 if (raiseFlag)
3158 { 3079 {
3159 raiseFlag = false; 3080 raiseFlag = false;
3160 raiseTimer.start (1, true); 3081 raiseTimer.start (1, true);
3161 if (infoForm->isVisible()) 3082 if (infoForm->isVisible())
3162 infoForm->raise(); 3083 infoForm->raise();
3163 } 3084 }
3164} 3085}
3165 3086
3166void ZSafe::resizeEvent ( QResizeEvent * )
3167{
3168 // owarn << "resizeEvent" << oendl;
3169 DeskW = appl->desktop()->width();
3170 DeskH = appl->desktop()->height();
3171
3172 if (New)
3173 New->setGeometry ( QRect( DeskW-84, 2, 20, 20 ) );
3174 if (Edit)
3175 Edit->setGeometry ( QRect( DeskW-64, 2, 20, 20 ) );
3176 if (Delete)
3177 Delete->setGeometry( QRect( DeskW-44, 2, 20, 20 ) );
3178 if (Find)
3179 Find->setGeometry ( QRect( DeskW-24, 2, 20, 20 ) );
3180}
3181
3182void ZSafe::slotRaiseTimer() 3087void ZSafe::slotRaiseTimer()
3183{ 3088{
3184 if (infoForm->isVisible()) 3089 if (infoForm->isVisible())
3185 infoForm->raise(); 3090 infoForm->raise();
3186 raiseFlag = true; 3091 raiseFlag = true;
3187} 3092}
3188 3093
3189QPixmap * ZSafe::getPredefinedIcon(QString category) 3094QPixmap * ZSafe::getPredefinedIcon(QString category)
3190{ 3095{
3191 QPixmap *pm; 3096 QPixmap *pm;
3192 if (category == "Bank cards") 3097 if (category == "Bank cards")
3193 pm = new QPixmap((const char**)bank_cards_data); 3098 pm = new QPixmap((const char**)bank_cards_data);
3194 else if (category == "Passwords") 3099 else if (category == "Passwords")
3195 pm = new QPixmap((const char**)passwords_data); 3100 pm = new QPixmap((const char**)passwords_data);
3196 else if (category == "Software") 3101 else if (category == "Software")
3197 pm = new QPixmap((const char**)software_data); 3102 pm = new QPixmap((const char**)software_data);
3198 else if (category == "General") 3103 else if (category == "General")
3199 pm = new QPixmap((const char**)general_data); 3104 pm = new QPixmap((const char**)general_data);
3200 else 3105 else
3201 pm = new QPixmap((const char**)general_data); 3106 pm = new QPixmap((const char**)general_data);
3202 return pm; 3107 return pm;
3203} 3108}
3204 3109
3205void ZSafe::setDocument(const QString& fileref) 3110void ZSafe::setDocument(const QString& fileref)
3206{ 3111{
3207 // stop the timer to prevent loading of the default document 3112 // stop the timer to prevent loading of the default document
3208 docuTimer.stop(); 3113 docuTimer.stop();
3209 3114
3210 DocLnk link(fileref); 3115 DocLnk link(fileref);
3211 if ( link.isValid() ) 3116 if ( link.isValid() )
3212 { 3117 {
3213 // if (filename != link.file()) 3118 // if (filename != link.file())
3214 // saveDocument(filename, FALSE); 3119 // saveDocument(filename, FALSE);
3215 filename = link.file(); 3120 filename = link.file();
3216 } 3121 }
3217 else 3122 else
3218 { 3123 {
3219 // if (filename != fileref) 3124 // if (filename != fileref)
3220 // saveDocument(filename, FALSE); 3125 // saveDocument(filename, FALSE);
3221 filename = fileref; 3126 filename = fileref;
3222 } 3127 }
3223 // save the current filename to the config file 3128 // save the current filename to the config file
3224 conf->setGroup("zsafe"); 3129 conf->setGroup("zsafe");
3225 conf->writeEntry(APP_KEY+"document", filename); 3130 conf->writeEntry(APP_KEY+"document", filename);
3226 saveConf(); 3131 saveConf();
3227 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1); 3132 QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
3228 this->setCaption(tr("ZSafe: ") + ti); 3133 this->setCaption(tr("ZSafe: ") + ti);
3229 3134
3230 // clear the password list 3135 // clear the password list
3231 QListViewItem *i; 3136 QListViewItem *i;
3232 QListViewItem *c = NULL; 3137 QListViewItem *c = NULL;
3233 // step through all categories 3138 // step through all categories
3234 for (i = ListView->firstChild(); 3139 for (i = ListView->firstChild();
3235 i != NULL; 3140 i != NULL;
3236 i = i->nextSibling()) 3141 i = i->nextSibling())
3237 { 3142 {
3238 if (c) delete c; // delete the previous category 3143 if (c) delete c; // delete the previous category
3239 3144
3240 c = i; 3145 c = i;
3241 // step through all subitems 3146 // step through all subitems
3242 QListViewItem *si; 3147 QListViewItem *si;
3243 for (si = i->firstChild(); 3148 for (si = i->firstChild();
3244 si != NULL; ) 3149 si != NULL; )
3245 { 3150 {
3246 QListViewItem *_si = si; 3151 QListViewItem *_si = si;
3247 si = si->nextSibling(); 3152 si = si->nextSibling();
3248 i->takeItem(_si); // remove from view list 3153 i->takeItem(_si); // remove from view list
3249 if (_si) delete _si; 3154 if (_si) delete _si;
3250 } 3155 }
3251 } 3156 }
3252 if (c) delete c; // delete the previous category 3157 if (c) delete c; // delete the previous category
3253 categories.clear(); 3158 categories.clear();
3254 3159
3255 m_password = ""; 3160 m_password = "";
3256 selectedItem = NULL; 3161 selectedItem = NULL;
3257 3162
3258 openDocument(filename); 3163 openDocument(filename);
3259} 3164}
3260 3165
3261 3166
3262void ZSafe::ListPressed(int mouse, QListViewItem *item, const QPoint&, int column) { 3167void ZSafe::ListPressed(int mouse, QListViewItem *item, const QPoint&, int column) {
3263 if(item ==0) return; 3168 if(item ==0) return;
3264 switch (mouse) { 3169 switch (mouse) {
3265 case 1: 3170 case 1:
3266 break; 3171 break;
3267 case 2: 3172 case 2:
3268 { 3173 {
3269 QClipboard *cb = QApplication::clipboard(); 3174 QClipboard *cb = QApplication::clipboard();
3270 3175
3271 QIconSet copy_img((const char**) copy_xpm); 3176 QIconSet copy_img = Opie::Core::OResource::loadPixmap( "copy", Opie::Core::OResource::SmallIcon );
3272 QIconSet edit_img((const char**) edit_xpm); 3177 QIconSet edit_img = Opie::Core::OResource::loadPixmap( "edit", Opie::Core::OResource::SmallIcon );
3273 QPixmap folder_open_img((const char**) folder_open_xpm); 3178 QPixmap folder_open_img = Opie::Core::OResource::loadPixmap( "folder_open", Opie::Core::OResource::SmallIcon );
3274 QPixmap editdelete_img((const char**) editdelete_xpm); 3179 QPixmap editdelete_img = Opie::Core::OResource::loadPixmap( "editdelete", Opie::Core::OResource::SmallIcon );
3275 3180
3276 QPopupMenu *m = new QPopupMenu(this); 3181 QPopupMenu *m = new QPopupMenu(this);
3277 int copyItem = m->insertItem( copy_img, tr( "Copy to Clipboard" )); 3182 int copyItem = m->insertItem( copy_img, tr( "Copy to Clipboard" ));
3278 int editItem = m->insertItem(edit_img, tr( "Edit" )); 3183 int editItem = m->insertItem(edit_img, tr( "Edit" ));
3279 int showItem = m->insertItem(folder_open_img, tr( "Show Info" )); 3184 int showItem = m->insertItem(folder_open_img, tr( "Show Info" ));
3280 int cancelItem = m->insertItem( editdelete_img, tr( "Cancel" )); 3185 int cancelItem = m->insertItem( editdelete_img, tr( "Cancel" ));
3281 m->setFocus(); 3186 m->setFocus();
3282 int me=m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y() ) ) ; 3187 int me=m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y() ) ) ;
3283 if(me == copyItem) { 3188 if(me == copyItem) {
3284 copyClip( item->text(column) ) ; 3189 copyClip( item->text(column) ) ;
3285 } else if (me == cancelItem) { 3190 } else if (me == cancelItem) {
3286 cb->clear(); 3191 cb->clear();
3287 } else if (me == editItem) { 3192 } else if (me == editItem) {
3288 editPwd(); 3193 editPwd();
3289 } else if (me == showItem) { 3194 } else if (me == showItem) {
3290 showInfo(item); 3195 showInfo(item);
3291 } 3196 }
3292 } 3197 }
3293 break; 3198 break;
3294 }; 3199 };
3295} 3200}
3296 3201
3297void ZSafe::copyClip( const QString &text) { 3202void ZSafe::copyClip( const QString &text) {
3298 QClipboard *cb = QApplication::clipboard(); 3203 QClipboard *cb = QApplication::clipboard();
3299 cb->setText( text); 3204 cb->setText( text);
3300} 3205}
3301 3206
3302 3207
3303QString ZSafe::zsaveDialog() { 3208QString ZSafe::zsaveDialog() {
3304 3209
3305 QString fn; 3210 QString fn;
3306 QMap<QString, QStringList> mimeTypes; 3211 QMap<QString, QStringList> mimeTypes;
3307 mimeTypes.insert(tr("All"), QStringList() ); 3212 mimeTypes.insert(tr("All"), QStringList() );
3308 mimeTypes.insert(tr("Text"), "text/*" ); 3213 mimeTypes.insert(tr("Text"), "text/*" );
3309 fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL, 3214 fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
3310 QDir::homeDirPath() + "/Documents/application/zsafe", 3215 QDir::homeDirPath() + "/Documents/application/zsafe",
3311 QString::null, 3216 QString::null,
3312 mimeTypes, 3217 mimeTypes,
3313 this, 3218 this,
3314 tr ("Export text file")); 3219 tr ("Export text file"));
3315 return fn; 3220 return fn;
3316} 3221}
diff --git a/noncore/apps/zsafe/zsafe.h b/noncore/apps/zsafe/zsafe.h
index 3d812f8..0be579c 100644
--- a/noncore/apps/zsafe/zsafe.h
+++ b/noncore/apps/zsafe/zsafe.h
@@ -1,204 +1,195 @@
1/**************************************************************************** 1/****************************************************************************
2** Form interface generated from reading ui file 'zsafe.ui' 2** Form interface generated from reading ui file 'zsafe.ui'
3** 3**
4** Created: Sat Apr 6 17:57:42 2002 4** Created: Sat Apr 6 17:57:42 2002
5** 5**
6** Author: Carsten Schneider <CarstenSchneider@t-online.de> 6** Author: Carsten Schneider <CarstenSchneider@t-online.de>
7** 7**
8** $Id$ 8** $Id$
9** 9**
10** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html 10** Homepage: http://home.t-online.de/home/CarstenSchneider/zsafe/index.html
11** 11**
12** WARNING! All changes made in this file will be lost! 12** WARNING! All changes made in this file will be lost!
13****************************************************************************/ 13****************************************************************************/
14#ifndef ZSAFE_H 14#ifndef ZSAFE_H
15#define ZSAFE_H 15#define ZSAFE_H
16 16
17#include <stdio.h> 17#include <stdio.h>
18 18
19#include "infoform.h" 19#include "infoform.h"
20#include "categorylist.h" 20#include "categorylist.h"
21#include "shadedlistitem.h" 21#include "shadedlistitem.h"
22 22
23#include <qmainwindow.h>
24
23#include <qvariant.h> 25#include <qvariant.h>
24#include <qdialog.h> 26#include <qdialog.h>
25#include <qwidgetstack.h> 27#include <qwidgetstack.h>
26#include <qtimer.h> 28#include <qtimer.h>
27 29
28class QVBoxLayout; 30class QVBoxLayout;
29class QHBoxLayout; 31class QHBoxLayout;
30class QGridLayout; 32class QGridLayout;
31class ZListView; 33class ZListView;
32class QListViewItem; 34class QListViewItem;
33class QToolButton; 35class QToolButton;
34class QTextBrowser; 36class QTextBrowser;
35class QPopupMenu; 37class QPopupMenu;
36#ifdef DESKTOP 38#ifdef DESKTOP
37// #ifndef WIN32 39// #ifndef WIN32
38class QSettings; 40class QSettings;
39// #endif 41// #endif
40#else 42#else
41class Config; 43class Config;
42#endif 44#endif
43class CategoryDialog; 45class CategoryDialog;
44class QPixmap; 46class QPixmap;
45 47
46// number of fields for one entry 48// number of fields for one entry
47#define FIELD_SIZE 7 49#define FIELD_SIZE 7
48 50
49class ZSafe : public QWidget 51class ZSafe : public QMainWindow
50{ 52{
51 Q_OBJECT 53 Q_OBJECT
52 54
53protected: 55protected:
54 void paintEvent( QPaintEvent * e ); 56 void paintEvent( QPaintEvent * e );
55 void resizeEvent ( QResizeEvent * );
56 57
57 bool raiseFlag; 58 bool raiseFlag;
58 QTimer raiseTimer; 59 QTimer raiseTimer;
59 60
60public: 61public:
61 ZSafe( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 62 ZSafe( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
62 ~ZSafe(); 63 ~ZSafe();
63 static QString appName() { return QString::fromLatin1( QUICKAPP_NAME ); } 64 static QString appName() { return QString::fromLatin1( QUICKAPP_NAME ); }
64 65
65 static const QColor *evenRowColor; 66 static const QColor *evenRowColor;
66 static const QColor *oddRowColor; 67 static const QColor *oddRowColor;
67 68
68 QToolButton* Edit;
69 QToolButton* Delete;
70 QToolButton* Find;
71 QToolButton* New;
72 ZListView* ListView; 69 ZListView* ListView;
73 70
74 QString cfgFile; 71 QString cfgFile;
75 QString iconPath; 72 QString iconPath;
76 73
77 InfoForm *infoForm; 74 InfoForm *infoForm;
78 CategoryDialog *categoryDialog; 75 CategoryDialog *categoryDialog;
79 76
80 QListViewItem *selectedItem; // current selected item 77 QListViewItem *selectedItem; // current selected item
81 QListViewItem *copiedItem; // copied item 78 QListViewItem *copiedItem; // copied item
82 bool IsCopy; 79 bool IsCopy;
83 bool IsCut; 80 bool IsCut;
84 bool modified; // true if database is modified 81 bool modified; // true if database is modified
85 bool showpwd; // show PWD Dialog 82 bool showpwd; // show PWD Dialog
86 83
87 QListViewItem *lastSearchedCategory; 84 QListViewItem *lastSearchedCategory;
88 QListViewItem *lastSearchedItem; 85 QListViewItem *lastSearchedItem;
89 QString lastSearchedName; 86 QString lastSearchedName;
90 QString lastSearchedUsername; 87 QString lastSearchedUsername;
91 QString lastSearchedComment; 88 QString lastSearchedComment;
92 89
93 90
94 CategoryList categories; // list of categories 91 CategoryList categories; // list of categories
95 92
96 bool isCategory(QListViewItem *_item); 93 bool isCategory(QListViewItem *_item);
97 void getDocPassword(QString title); 94 void getDocPassword(QString title);
98 QString filename; 95 QString filename;
99 96
100 enum { 97 enum {
101 PWERR_GOOD, // success 98 PWERR_GOOD, // success
102 PWERR_OPEN, // can't open filedescriptor / can't create file 99 PWERR_OPEN, // can't open filedescriptor / can't create file
103 PWERR_PERM, // permissions are bad 100 PWERR_PERM, // permissions are bad
104 PWERR_SYML, // is a symlink 101 PWERR_SYML, // is a symlink
105 PWERR_STAT, // can't get file status 102 PWERR_STAT, // can't get file status
106 PWERR_DATA // can't read correct data 103 PWERR_DATA // can't read correct data
107 }; 104 };
108 105
109 long load_buffer_length; 106 long load_buffer_length;
110 long save_buffer_length; 107 long save_buffer_length;
111 108
112 /** password for the file */ 109 /** password for the file */
113 QString m_password; 110 QString m_password;
114 /** globals needed for file loading */ 111 /** globals needed for file loading */
115 int lastcount, size; 112 int lastcount, size;
116 /** these three are needed in all save functions and initialized in save _init() */ 113 /** these three are needed in all save functions and initialized in save _init() */
117 FILE *fd; 114 FILE *fd;
118 unsigned short iv[4]; 115 unsigned short iv[4];
119 char *buffer; 116 char *buffer;
120 /** these two are global because save_entry() and save_finalize() both n eed them */ 117 /** these two are global because save_entry() and save_finalize() both n eed them */
121 int bufferIndex; 118 int bufferIndex;
122 unsigned short plaintext[4]; 119 unsigned short plaintext[4];
123 120
124#ifdef DESKTOP 121#ifdef DESKTOP
125// #ifndef WIN32 122// #ifndef WIN32
126 QSettings *conf; 123 QSettings *conf;
127// #endif 124// #endif
128#else 125#else
129 Config *conf; 126 Config *conf;
130#endif 127#endif
131 bool expandTree; 128 bool expandTree;
132 QPopupMenu *file; 129 QPopupMenu *file;
133 130
134 QTimer docuTimer; 131 QTimer docuTimer;
135 132
136 133
137 bool openDocument(const char* filename, const char* format=0); 134 bool openDocument(const char* filename, const char* format=0);
138 int loadInit(const char* filename, const char *password); 135 int loadInit(const char* filename, const char *password);
139 int loadEntry(char *entry[4]); 136 int loadEntry(char *entry[4]);
140 int loadFinalize(void); 137 int loadFinalize(void);
141 bool saveDocument(const char* filename, bool withPwd, const char* format=0); 138 bool saveDocument(const char* filename, bool withPwd, const char* format=0);
142 int saveInit(const char *filename, const char *password); 139 int saveInit(const char *filename, const char *password);
143 int saveEntry(char *entry[4]); 140 int saveEntry(char *entry[4]);
144 int saveFinalize(void); 141 int saveFinalize(void);
145 void saveConf(); 142 void saveConf();
146 QPixmap * getPredefinedIcon(QString category); 143 QPixmap * getPredefinedIcon(QString category);
147 QString getFieldLabel (QListViewItem *_item, QString field, QString def); 144 QString getFieldLabel (QListViewItem *_item, QString field, QString def);
148 QString getFieldLabel (QString category, QString field, QString def); 145 QString getFieldLabel (QString category, QString field, QString def);
149 void setCategoryDialogFields(CategoryDialog *dialog); 146 void setCategoryDialogFields(CategoryDialog *dialog);
150 void setCategoryDialogFields(CategoryDialog *dialog, QString category); 147 void setCategoryDialogFields(CategoryDialog *dialog, QString category);
151 void saveCategoryDialogFields(CategoryDialog *dialog); 148 void saveCategoryDialogFields(CategoryDialog *dialog);
152 149
153 150
154 void resume(int signum); 151 void resume(int signum);
155 void exitZs (int ec); 152 void exitZs (int ec);
156 153
157 QString zsaveDialog(); 154 QString zsaveDialog();
158 155
159public slots: 156public slots:
160 virtual void deletePwd(); 157 virtual void deletePwd();
161 virtual void editPwd(); 158 virtual void editPwd();
162 virtual void newPwd(); 159 virtual void newPwd();
163 virtual void findPwd(); 160 virtual void findPwd();
164 virtual void quitMe(); 161 virtual void quitMe();
165 virtual void listViewSelected( QListViewItem *_item); 162 virtual void listViewSelected( QListViewItem *_item);
166 virtual void showInfo( QListViewItem *_item); 163 virtual void showInfo( QListViewItem *_item);
167 virtual void writeAllEntries(); 164 virtual void writeAllEntries();
168 virtual void readAllEntries(); 165 virtual void readAllEntries();
169 virtual void removeAsciiFile(); 166 virtual void removeAsciiFile();
170 virtual void setPasswordDialogDone(); 167 virtual void setPasswordDialogDone();
171 168
172 virtual void addCategory(); 169 virtual void addCategory();
173 virtual void delCategory(); 170 virtual void delCategory();
174 virtual void editCategory(); 171 virtual void editCategory();
175 virtual void cutItem(); 172 virtual void cutItem();
176 virtual void copyItem(); 173 virtual void copyItem();
177 virtual void pasteItem(); 174 virtual void pasteItem();
178 175
179 virtual void newDocument(); 176 virtual void newDocument();
180 virtual void loadDocument(); 177 virtual void loadDocument();
181 virtual void saveDocumentAs(); 178 virtual void saveDocumentAs();
182 virtual void saveDocumentWithoutPwd(); 179 virtual void saveDocumentWithoutPwd();
183 virtual void saveDocumentWithPwd(); 180 virtual void saveDocumentWithPwd();
184 virtual void about();
185 virtual void setExpandFlag(); 181 virtual void setExpandFlag();
186 182
187 virtual void categoryFieldActivated( const QString& str); 183 virtual void categoryFieldActivated( const QString& str);
188 184
189 virtual void ListPressed(int, QListViewItem *, const QPoint&, int); 185 virtual void ListPressed(int, QListViewItem *, const QPoint&, int);
190 virtual void copyClip( const QString &text); 186 virtual void copyClip( const QString &text);
191 187
192private slots: 188private slots:
193 void setDocument(const QString& fileref); 189 void setDocument(const QString& fileref);
194 void slotLoadDocu(); 190 void slotLoadDocu();
195 void slotRaiseTimer(); 191 void slotRaiseTimer();
196 192
197}; 193};
198 194
199
200extern ZSafe *zs;
201extern QApplication *appl;
202extern int DeskW;
203extern int DeskH;
204#endif // ZSAFE_H 195#endif // ZSAFE_H