diff options
65 files changed, 4998 insertions, 0 deletions
diff --git a/src/bin/tools/fprint/AUTHORS b/src/bin/tools/fprint/AUTHORS new file mode 100644 index 0000000000..905be8dc86 --- /dev/null +++ b/src/bin/tools/fprint/AUTHORS @@ -0,0 +1,2 @@ +Simon "jf_simon" Tischer simon@t-tischer.de +Marcel "bu5hm4n" Hollerbach diff --git a/src/bin/tools/fprint/data/desktop/enlightenment_fprint.desktop b/src/bin/tools/fprint/data/desktop/enlightenment_fprint.desktop new file mode 100644 index 0000000000..d992310aba --- /dev/null +++ b/src/bin/tools/fprint/data/desktop/enlightenment_fprint.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Fingerprint Password Settings +Name[de]=Fingerprint Passwort Einstellungen +Icon=enlightenment_fprint +Exec=enlightenment_fprint +Comment=Tool to set up or modify fingerprint authentication +GenericName=GUI for Fingerprint Authentication +Categories=Settings;DesktopSettings; +StartupWMClass=enlightenment_fprint diff --git a/src/bin/tools/fprint/data/desktop/enlightenment_fprint.png b/src/bin/tools/fprint/data/desktop/enlightenment_fprint.png Binary files differnew file mode 100644 index 0000000000..dbe7377e55 --- /dev/null +++ b/src/bin/tools/fprint/data/desktop/enlightenment_fprint.png diff --git a/src/bin/tools/fprint/data/desktop/meson.build b/src/bin/tools/fprint/data/desktop/meson.build new file mode 100644 index 0000000000..6078f8314d --- /dev/null +++ b/src/bin/tools/fprint/data/desktop/meson.build @@ -0,0 +1,6 @@ +install_data('enlightenment_fprint.desktop', + install_dir: join_paths(dir_data, 'applications') + ) +install_data('enlightenment_fprint.png', + install_dir: join_paths(dir_data, 'icons/hicolor/128x128/apps') + ) diff --git a/src/bin/tools/fprint/data/desktop/orig/enlightenment_fprint.svg b/src/bin/tools/fprint/data/desktop/orig/enlightenment_fprint.svg new file mode 100644 index 0000000000..e85537d213 --- /dev/null +++ b/src/bin/tools/fprint/data/desktop/orig/enlightenment_fprint.svg @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="e-fprint-gui.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1377" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-224.63902" + inkscape:cy="-27.03533" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <circle + r="137.70493" + cy="149.5" + cx="149.5" + id="path5067" + style="opacity:1;fill:none;fill-opacity:1;stroke:#d6a16a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ddc8a4;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#a0a0a0;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#b88c88;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="M 174.57024,37.517921 A 114.7541,114.7541 0 0 1 263.79781,159.72324 114.7541,114.7541 0 0 1 154.29906,264.1537 114.7541,114.7541 0 0 1 36.456328,169.23907" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="114.7541" + sodipodi:rx="114.7541" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#eb9422;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#a0a0a0;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#b88c88;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#eb9422;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="114.7541" + sodipodi:ry="114.7541" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 58.547846,79.527087 A 114.7541,114.7541 0 0 1 92.047558,50.163603" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/meson.build b/src/bin/tools/fprint/data/meson.build new file mode 100644 index 0000000000..4155fc3ef5 --- /dev/null +++ b/src/bin/tools/fprint/data/meson.build @@ -0,0 +1,2 @@ +subdir('desktop') +subdir('themes') diff --git a/src/bin/tools/fprint/data/themes/enlightenment_fprint.edc b/src/bin/tools/fprint/data/themes/enlightenment_fprint.edc new file mode 100644 index 0000000000..ea7f9fb461 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/enlightenment_fprint.edc @@ -0,0 +1,855 @@ +images { + image: "hands.png" COMP; + image: "left_hand.png" COMP; + image: "right_hand.png" COMP; +image: "fingerprint_icon-160.png" COMP; + set { name: "fingerprint_icon"; + image { image: "fingerprint_icon-160.png" COMP; size: 81 81 16000 16000; } + image { image: "fingerprint_icon-080.png" COMP; size: 41 41 80 80; } + image { image: "fingerprint_icon-040.png" COMP; size: 0 0 40 40; } + } +#define IM140(_name) \ + set { name: _name; \ + image { image: _name"-560.png" COMP; size: 281 281 16000 16000; } \ + image { image: _name"-280.png" COMP; size: 141 141 280 280; } \ + image { image: _name"-140.png" COMP; size: 0 0 140 140; } \ + } + IM140("1_0") + IM140("1_1") + IM140("1_1_failed") + IM140("1_2") + IM140("1_2_failed") + IM140("1_3") + IM140("1_3_failed") + IM140("1_4") + IM140("1_4_failed") + IM140("1_5") + IM140("1_5_failed") +} + +collections { + base_scale: 1.0; + group { "hands"; + parts { + // LEFT HAND + image { "hands"; + scale: 1; + desc { "default"; + min: 650 400; + max: 650 400; + image.normal: "hands.png"; + color_class: ":fg"; + } + } + image { "left-little-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (35/609) (125/375); + rel2.relative: (35/609) (125/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-little-finger"; + desc { "default"; + rel.to: "left-little-finger"; + } + } + image { "left-ring-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (92/609) (82/375); + rel2.relative: (92/609) (82/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-ring-finger"; + desc { "default"; + rel.to: "left-ring-finger"; + } + } + + image { "left-middle-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (150/609) (51/375); + rel2.relative: (150/609) (51/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-middle-finger"; + desc { "default"; + rel.to: "left-middle-finger"; + } + } + + image { "left-index-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (208/609) (75/375); + rel2.relative: (208/609) (75/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-index-finger"; + desc { "default"; + rel.to: "left-index-finger"; + } + } + + image { "left-thumb"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (265/609) (209/375); + rel2.relative: (265/609) (209/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-thumb"; + desc { "default"; + rel.to: "left-thumb"; + } + } + + // RIGHT HAND + image { "right-little-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (341/609) (209/375); + rel2.relative: (341/609) (209/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-little-finger"; + desc { "default"; + rel.to: "right-little-finger"; + } + } + image { "right-ring-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (399/609) (75/375); + rel2.relative: (399/609) (75/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-ring-finger"; + desc { "default"; + rel.to: "right-ring-finger"; + } + } + + image { "right-middle-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (458/609) (51/375); + rel2.relative: (458/609) (51/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-middle-finger"; + desc { "default"; + rel.to: "right-middle-finger"; + } + } + + image { "right-index-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (515/609) (82/375); + rel2.relative: (515/609) (82/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-index-finger"; + desc { "default"; + rel.to: "right-index-finger"; + } + } + + image { "right-thumb"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "hands"; + rel1.relative: (572/609) (125/375); + rel2.relative: (572/609) (125/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-thumb"; + desc { "default"; + rel.to: "right-thumb"; + } + } + } + programs { + program { signal: "enrolled_finger"; source: "*"; + script { + set_state(get_part_id(src), "enrolled", 0.0); + } + } + program { signal: "reset_finger"; source: "reset_finger"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.2; + target: "left-little-finger"; + target: "left-ring-finger"; + target: "left-middle-finger"; + target: "left-index-finger"; + target: "left-thumb"; + target: "right-little-finger"; + target: "right-ring-finger"; + target: "right-middle-finger"; + target: "right-index-finger"; + target: "right-thumb"; + } + } + } + + group { "right_hand"; + parts { + image { "right_hand"; + scale: 1; + desc { "default"; + min: 650 400; + max: 650 400; + image.normal: "right_hand.png"; + color_class: ":fg"; + } + } + image { "right-little-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "right_hand"; + rel1.relative: (422/609) (125/375); + rel2.relative: (422/609) (125/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-little-finger"; + desc { "default"; + rel.to: "right-little-finger"; + } + } + + image { "right-ring-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "right_hand"; + rel1.relative: (365/609) (82/375); + rel2.relative: (365/609) (82/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-ring-finger"; + desc { "default"; + rel.to: "right-ring-finger"; + } + } + + image { "right-middle-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "right_hand"; + rel1.relative: (307/609) (51/375); + rel2.relative: (307/609) (51/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-middle-finger"; + desc { "default"; + rel.to: "right-middle-finger"; + } + } + + image { "right-index-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "right_hand"; + rel1.relative: (250/609) (75/375); + rel2.relative: (250/609) (75/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-index-finger"; + desc { "default"; + rel.to: "right-index-finger"; + } + } + + image { "right-thumb"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "right_hand"; + rel1.relative: (192/609) (209/375); + rel2.relative: (192/609) (209/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_right-thumb"; + desc { "default"; + rel.to: "right-thumb"; + } + } + + // LIST SWALLOW + swallow {"swallow_hand_switch"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + rel1.to_y: "right_hand"; + rel1.relative: 0.6 0.0; + } + } + } + programs { + program { signal: "enrolled_finger"; source: "*"; + script { + set_state(get_part_id(src), "enrolled", 0.0); + } + } + program { signal: "reset_finger"; source: "reset_finger"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.2; + target: "right-little-finger"; + target: "right-ring-finger"; + target: "right-middle-finger"; + target: "right-index-finger"; + target: "right-thumb"; + } + } + } + + group { "left_hand"; + parts { + image { "left_hand"; + scale: 1; + desc { "default"; + min: 650 400; + max: 650 400; + image.normal: "left_hand.png"; + color_class: ":fg"; + } + } + image { "left-little-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "left_hand"; + rel1.relative: (186/609) (125/375); + rel2.relative: (186/609) (125/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-little-finger"; + desc { "default"; + rel.to: "left-little-finger"; + } + } + + image { "left-ring-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "left_hand"; + rel1.relative: (243/609) (82/375); + rel2.relative: (243/609) (82/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-ring-finger"; + desc { "default"; + rel.to: "left-ring-finger"; + } + } + + image { "left-middle-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "left_hand"; + rel1.relative: (300/609) (51/375); + rel2.relative: (300/609) (51/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-middle-finger"; + desc { "default"; + rel.to: "left-middle-finger"; + } + } + + image { "left-index-finger"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "left_hand"; + rel1.relative: (358/609) (75/375); + rel2.relative: (358/609) (75/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-index-finger"; + desc { "default"; + rel.to: "left-index-finger"; + } + } + + image { "left-thumb"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + image.normal: "fingerprint_icon"; + rel.to: "left_hand"; + rel1.relative: (416/609) (209/375); + rel2.relative: (416/609) (209/375); + color_class: ":bg-light"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_left-thumb"; + desc { "default"; + rel.to: "left-thumb"; + } + } + + // LIST SWALLOW + swallow {"swallow_hand_switch"; + scale: 1; + desc { "default"; + min: 40 40; + max: 40 40; + rel1.to_y: "left_hand"; + rel1.relative: 0.6 0.0; + } + } + } + programs { + program { signal: "enrolled_finger"; source: "*"; + script { + set_state(get_part_id(src), "enrolled", 0.0); + } + } + program { signal: "reset_finger"; source: "reset_finger"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.2; + target: "left-little-finger"; + target: "left-ring-finger"; + target: "left-middle-finger"; + target: "left-index-finger"; + target: "left-thumb"; + } + } + } + + group { "finger"; + parts { + swallow {"swallow_select-finger-left"; + scale: 1; + desc { "default"; + align: 0 0.5; + min: 140 140; + max: 140 140; + } + } + image { "fingerprint_icon"; + scale: 1; + desc { "default"; + align: 0.0 0.0; + min: 200 200; + max: 200 200; + image.normal: "1_0"; + rel1.to_x: "swallow_select-finger-left"; + rel1.relative: 1.0 0.0; + color_class: ":fg"; + } + desc { "enrolled"; + inherit: "default"; + color_class: ":success"; + } + } + swallow {"swallow_select-finger"; + scale: 1; + desc { "default"; + align: 0.0 0.0; + min: 200 200; + max: 200 200; + rel1.to_x: "swallow_select-finger-left"; + rel1.relative: 1.0 0.0; + } + } + + swallow {"swallow_select-finger-right"; + scale: 1; + desc { "default"; + align: 1.0 0.5; + min: 140 140; + max: 140 140; + rel1.to_x: "fingerprint_icon"; + rel1.relative: 1.0 0.0; + } + } + } + programs { + program { signal: "enrolled_finger"; source: "enrolled_finger"; + script { + set_state(get_part_id("fingerprint_icon"), "enrolled", 0.0); + } + } + program { signal: "not_enrolled_finger"; source: "not_enrolled_finger"; + script { + set_state(get_part_id("fingerprint_icon"), "default", 0.0); + } + } + } + } + + group { "enroll"; + parts { + image { "0"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + image.normal: "1_0"; + color_class: ":fg"; + } + desc { "failed"; + inherit: "default"; + color_class: ":success"; + } + } + image { "1"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + visible: 0; + image.normal: "1_1"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + visible: 1; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + visible: 1; + image.normal: "1_1_failed"; + color_class: ":selected-alt"; + } + } + image { "2"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + visible: 0; + image.normal: "1_2"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + visible: 1; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + visible: 1; + image.normal: "1_2_failed"; + color_class: ":selected-alt"; + } + } + image { "3"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + visible: 0; + image.normal: "1_3"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + visible: 1; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + visible: 1; + image.normal: "1_3_failed"; + color_class: ":selected-alt"; + } + } + image { "4"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + visible: 0; + image.normal: "1_4"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + visible: 1; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + visible: 1; + image.normal: "1_4_failed"; + color_class: ":selected-alt"; + } + } + image { "5"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + visible: 0; + image.normal: "1_5"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + visible: 1; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + visible: 1; + image.normal: "1_5_failed"; + color_class: ":selected-alt"; + } + } + } + programs { + program { signal: "success"; source: "*"; + script { + set_state(get_part_id(src), "success", 0.0); + } + } + program { signal: "failed"; source: "*"; + script { + set_state(get_part_id(src), "failed", 0.0); + } + } + program { signal: "enrolled__failed"; source: "enrolled__failed"; + action: STATE_SET "failed" 0.0; + transition: LINEAR 0.2; + target: "0"; + } + program { signal: "enrolled__failed"; source: "enrolled__failed"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.2; + target: "1"; + target: "2"; + target: "3"; + target: "4"; + target: "5"; + } + } + } + + group { "verify"; + parts { + image { "0"; + scale: 1; + desc { "default"; + min: 140 140; + max: 140 140; + image.normal: "1_0"; + color_class: ":fg"; + } + desc { "success"; + inherit: "default"; + color_class: ":success"; + } + desc { "failed"; + inherit: "default"; + color_class: ":selected-alt"; + } + } + } + programs { + program { signal: "success"; source: "success"; + action: STATE_SET "success" 0.0; + transition: LINEAR 0.2; + target: "0"; + after: "reset1"; + } + program { name: "reset1"; + action: STATE_SET "default" 0.0; + transition: ACCEL 4.0; + target: "0"; + } + program { signal: "failed"; source: "failed"; + transition: LINEAR 0.2; + action: STATE_SET "failed" 0.0; + target: "0"; + after: "reset"; + } + program { name: "reset"; + action: STATE_SET "default" 0.0; + transition: ACCEL 2.0; + target: "0"; + } + } + } + + group { "icon"; + parts { + image { "0"; + scale: 1; + desc { "default"; + image.normal: "1_0"; + color_class: ":success"; + } + } + } + } + +} diff --git a/src/bin/tools/fprint/data/themes/images/1_0-140.png b/src/bin/tools/fprint/data/themes/images/1_0-140.png Binary files differnew file mode 100644 index 0000000000..1197f2db5a --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_0-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_0-280.png b/src/bin/tools/fprint/data/themes/images/1_0-280.png Binary files differnew file mode 100644 index 0000000000..7b0b7c98f5 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_0-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_0-560.png b/src/bin/tools/fprint/data/themes/images/1_0-560.png Binary files differnew file mode 100644 index 0000000000..9f79a4e188 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_0-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1-140.png b/src/bin/tools/fprint/data/themes/images/1_1-140.png Binary files differnew file mode 100644 index 0000000000..71a0e1de9a --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1-280.png b/src/bin/tools/fprint/data/themes/images/1_1-280.png Binary files differnew file mode 100644 index 0000000000..9d6d832ada --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1-560.png b/src/bin/tools/fprint/data/themes/images/1_1-560.png Binary files differnew file mode 100644 index 0000000000..e149196f62 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1_failed-140.png b/src/bin/tools/fprint/data/themes/images/1_1_failed-140.png Binary files differnew file mode 100644 index 0000000000..6a0b86f0d3 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1_failed-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1_failed-280.png b/src/bin/tools/fprint/data/themes/images/1_1_failed-280.png Binary files differnew file mode 100644 index 0000000000..175c6a9ca0 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1_failed-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_1_failed-560.png b/src/bin/tools/fprint/data/themes/images/1_1_failed-560.png Binary files differnew file mode 100644 index 0000000000..d12cfbf669 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_1_failed-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2-140.png b/src/bin/tools/fprint/data/themes/images/1_2-140.png Binary files differnew file mode 100644 index 0000000000..91fd1c9982 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2-280.png b/src/bin/tools/fprint/data/themes/images/1_2-280.png Binary files differnew file mode 100644 index 0000000000..fd6ec1ff89 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2-560.png b/src/bin/tools/fprint/data/themes/images/1_2-560.png Binary files differnew file mode 100644 index 0000000000..78fbe414d5 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2_failed-140.png b/src/bin/tools/fprint/data/themes/images/1_2_failed-140.png Binary files differnew file mode 100644 index 0000000000..e0deefc5ad --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2_failed-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2_failed-280.png b/src/bin/tools/fprint/data/themes/images/1_2_failed-280.png Binary files differnew file mode 100644 index 0000000000..185bb655cc --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2_failed-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_2_failed-560.png b/src/bin/tools/fprint/data/themes/images/1_2_failed-560.png Binary files differnew file mode 100644 index 0000000000..882bb035e1 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_2_failed-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3-140.png b/src/bin/tools/fprint/data/themes/images/1_3-140.png Binary files differnew file mode 100644 index 0000000000..2d6909eb3c --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3-280.png b/src/bin/tools/fprint/data/themes/images/1_3-280.png Binary files differnew file mode 100644 index 0000000000..e0c33f6d76 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3-560.png b/src/bin/tools/fprint/data/themes/images/1_3-560.png Binary files differnew file mode 100644 index 0000000000..2c0da69f74 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3_failed-140.png b/src/bin/tools/fprint/data/themes/images/1_3_failed-140.png Binary files differnew file mode 100644 index 0000000000..c4395e0df1 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3_failed-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3_failed-280.png b/src/bin/tools/fprint/data/themes/images/1_3_failed-280.png Binary files differnew file mode 100644 index 0000000000..9fd0c59d9a --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3_failed-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_3_failed-560.png b/src/bin/tools/fprint/data/themes/images/1_3_failed-560.png Binary files differnew file mode 100644 index 0000000000..837ae95b53 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_3_failed-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4-140.png b/src/bin/tools/fprint/data/themes/images/1_4-140.png Binary files differnew file mode 100644 index 0000000000..3206e2e3b1 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4-280.png b/src/bin/tools/fprint/data/themes/images/1_4-280.png Binary files differnew file mode 100644 index 0000000000..32deb92f35 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4-560.png b/src/bin/tools/fprint/data/themes/images/1_4-560.png Binary files differnew file mode 100644 index 0000000000..f61e69e581 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4_failed-140.png b/src/bin/tools/fprint/data/themes/images/1_4_failed-140.png Binary files differnew file mode 100644 index 0000000000..efa20ef85d --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4_failed-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4_failed-280.png b/src/bin/tools/fprint/data/themes/images/1_4_failed-280.png Binary files differnew file mode 100644 index 0000000000..279f996280 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4_failed-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_4_failed-560.png b/src/bin/tools/fprint/data/themes/images/1_4_failed-560.png Binary files differnew file mode 100644 index 0000000000..e797223db2 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_4_failed-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5-140.png b/src/bin/tools/fprint/data/themes/images/1_5-140.png Binary files differnew file mode 100644 index 0000000000..5052de5c05 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5-280.png b/src/bin/tools/fprint/data/themes/images/1_5-280.png Binary files differnew file mode 100644 index 0000000000..22f02ad479 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5-560.png b/src/bin/tools/fprint/data/themes/images/1_5-560.png Binary files differnew file mode 100644 index 0000000000..1256f776b5 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5-560.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5_failed-140.png b/src/bin/tools/fprint/data/themes/images/1_5_failed-140.png Binary files differnew file mode 100644 index 0000000000..61f912a539 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5_failed-140.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5_failed-280.png b/src/bin/tools/fprint/data/themes/images/1_5_failed-280.png Binary files differnew file mode 100644 index 0000000000..e28bfd5281 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5_failed-280.png diff --git a/src/bin/tools/fprint/data/themes/images/1_5_failed-560.png b/src/bin/tools/fprint/data/themes/images/1_5_failed-560.png Binary files differnew file mode 100644 index 0000000000..6fcce5ee59 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/1_5_failed-560.png diff --git a/src/bin/tools/fprint/data/themes/images/fingerprint_icon-040.png b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-040.png Binary files differnew file mode 100644 index 0000000000..0a297585c7 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-040.png diff --git a/src/bin/tools/fprint/data/themes/images/fingerprint_icon-080.png b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-080.png Binary files differnew file mode 100644 index 0000000000..9198899953 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-080.png diff --git a/src/bin/tools/fprint/data/themes/images/fingerprint_icon-160.png b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-160.png Binary files differnew file mode 100644 index 0000000000..8ec961295e --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/fingerprint_icon-160.png diff --git a/src/bin/tools/fprint/data/themes/images/hands.png b/src/bin/tools/fprint/data/themes/images/hands.png Binary files differnew file mode 100644 index 0000000000..682a46b99d --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/hands.png diff --git a/src/bin/tools/fprint/data/themes/images/left_hand.png b/src/bin/tools/fprint/data/themes/images/left_hand.png Binary files differnew file mode 100644 index 0000000000..3e319c69e9 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/left_hand.png diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_0.svg b/src/bin/tools/fprint/data/themes/images/orig/1_0.svg new file mode 100644 index 0000000000..fa35c2471e --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_0.svg @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_0.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1377" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-88.970814" + inkscape:cy="-27.03533" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <circle + r="137.70493" + cy="149.5" + cx="149.5" + id="path5067" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="M 174.57024,37.517921 A 114.7541,114.7541 0 0 1 263.79781,159.72324 114.7541,114.7541 0 0 1 154.29906,264.1537 114.7541,114.7541 0 0 1 36.456328,169.23907" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="114.7541" + sodipodi:rx="114.7541" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#fefefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="114.7541" + sodipodi:ry="114.7541" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 58.547846,79.527087 A 114.7541,114.7541 0 0 1 92.047558,50.163603" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_1.svg b/src/bin/tools/fprint/data/themes/images/orig/1_1.svg new file mode 100644 index 0000000000..797a7e754a --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_1.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_1.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.4185125" + inkscape:cx="123.01619" + inkscape:cy="100.10487" + inkscape:window-x="242" + inkscape:window-y="493" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_1_failed.svg b/src/bin/tools/fprint/data/themes/images/orig/1_1_failed.svg new file mode 100644 index 0000000000..c2a262f5f4 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_1_failed.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_1_failed.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="15.238095" + inkscape:cy="97.327189" + inkscape:window-x="997" + inkscape:window-y="309" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#fffdfd;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fffdfd;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_2.svg b/src/bin/tools/fprint/data/themes/images/orig/1_2.svg new file mode 100644 index 0000000000..937e65bff9 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_2.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-187.28111" + inkscape:cy="206.45161" + inkscape:window-x="475" + inkscape:window-y="155" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_2_failed.svg b/src/bin/tools/fprint/data/themes/images/orig/1_2_failed.svg new file mode 100644 index 0000000000..4340f9945b --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_2_failed.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_2_failed.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-175.48387" + inkscape:cy="223.16436" + inkscape:window-x="173" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_3.svg b/src/bin/tools/fprint/data/themes/images/orig/1_3.svg new file mode 100644 index 0000000000..e229d7b546 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_3.svg @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_3.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-190.23041" + inkscape:cy="196.62058" + inkscape:window-x="740" + inkscape:window-y="375" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_3_failed.svg b/src/bin/tools/fprint/data/themes/images/orig/1_3_failed.svg new file mode 100644 index 0000000000..fde1e59581 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_3_failed.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_3_failed.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-206.94316" + inkscape:cy="174.00922" + inkscape:window-x="155" + inkscape:window-y="31" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_4.svg b/src/bin/tools/fprint/data/themes/images/orig/1_4.svg new file mode 100644 index 0000000000..e3d764c598 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_4.svg @@ -0,0 +1,198 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_4.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-222.67281" + inkscape:cy="228.07988" + inkscape:window-x="373" + inkscape:window-y="197" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="M 174.57024,37.517921 A 114.7541,114.7541 0 0 1 263.79781,159.72324 114.7541,114.7541 0 0 1 154.29906,264.1537 114.7541,114.7541 0 0 1 36.456328,169.23907" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="114.7541" + sodipodi:rx="114.7541" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="114.7541" + sodipodi:ry="114.7541" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 58.547846,79.527087 A 114.7541,114.7541 0 0 1 92.047558,50.163603" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_4_failed.svg b/src/bin/tools/fprint/data/themes/images/orig/1_4_failed.svg new file mode 100644 index 0000000000..bb8acbe49b --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_4_failed.svg @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_4_failed.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-209.89247" + inkscape:cy="234.9616" + inkscape:window-x="152" + inkscape:window-y="86" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <path + d="M 174.57024,37.517921 A 114.7541,114.7541 0 0 1 263.79781,159.72324 114.7541,114.7541 0 0 1 154.29906,264.1537 114.7541,114.7541 0 0 1 36.456328,169.23907" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="114.7541" + sodipodi:rx="114.7541" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#fffefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#fffefe;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="114.7541" + sodipodi:ry="114.7541" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 58.547846,79.527087 A 114.7541,114.7541 0 0 1 92.047558,50.163603" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_5.svg b/src/bin/tools/fprint/data/themes/images/orig/1_5.svg new file mode 100644 index 0000000000..0b8e3dc212 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_5.svg @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_5.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-214.80799" + inkscape:cy="172.04301" + inkscape:window-x="3323" + inkscape:window-y="375" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <circle + r="137.70493" + cy="149.5" + cx="149.5" + id="path5067" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 167.74799,163.41944 a 22.950819,22.950819 0 0 1 -29.67145,5.98646 22.950819,22.950819 0 0 1 -9.80104,-28.63865 22.950819,22.950819 0 0 1 27.11768,-13.44856" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="22.950819" + sodipodi:rx="22.950819" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="45.901638" + sodipodi:ry="45.901638" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 108.0919,169.30731 a 45.901638,45.901638 0 0 1 4.10371,-46.5532 45.901638,45.901638 0 0 1 42.77284,-18.82884 45.901638,45.901638 0 0 1 37.10434,28.4132" /> + <path + d="M 218.20943,153.9357 A 68.852463,68.852463 0 0 1 168.52477,215.6719 68.852463,68.852463 0 0 1 93.638113,189.75061 68.852463,68.852463 0 0 1 92.751343,110.5096" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="68.852463" + sodipodi:rx="68.852463" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="91.803276" + sodipodi:ry="91.803276" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 160.05499,240.69448 A 91.803276,91.803276 0 0 1 59.614585,168.16692 91.803276,91.803276 0 0 1 122.8707,61.643742" /> + <path + d="M 174.57024,37.517921 A 114.7541,114.7541 0 0 1 263.79781,159.72324 114.7541,114.7541 0 0 1 154.29906,264.1537 114.7541,114.7541 0 0 1 36.456328,169.23907" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="114.7541" + sodipodi:rx="114.7541" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 185.86798,177.5059 a 45.901638,45.901638 0 0 1 -43.60287,17.32198" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="45.901638" + sodipodi:rx="45.901638" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="68.852463" + sodipodi:ry="68.852463" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 165.26686,82.477109 a 68.852463,68.852463 0 0 1 40.3118,27.074851" /> + <path + d="M 206.44965,77.495984 A 91.803276,91.803276 0 0 1 230.78503,192.16832" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="91.803276" + sodipodi:rx="91.803276" + sodipodi:cy="149.5" + sodipodi:cx="149.5" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="149.5" + sodipodi:cy="149.5" + sodipodi:rx="114.7541" + sodipodi:ry="114.7541" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="M 58.547846,79.527087 A 114.7541,114.7541 0 0 1 92.047558,50.163603" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/1_5_failed.svg b/src/bin/tools/fprint/data/themes/images/orig/1_5_failed.svg new file mode 100644 index 0000000000..d040cc94f4 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/1_5_failed.svg @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="300" + height="300" + viewBox="0 0 300 300" + sodipodi:docname="1_5_failed.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/i-140.png" + inkscape:export-xdpi="44.799999" + inkscape:export-ydpi="44.799999" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1262" + inkscape:window-height="820" + id="namedview4" + showgrid="true" + inkscape:zoom="1.0171875" + inkscape:cx="-205.96006" + inkscape:cy="212.35023" + inkscape:window-x="3670" + inkscape:window-y="354" + inkscape:window-maximized="0" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <circle + r="137.70493" + cy="149.5" + cx="149.5" + id="path5067" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/orig/fingerprint_icon.svg b/src/bin/tools/fprint/data/themes/images/orig/fingerprint_icon.svg new file mode 100644 index 0000000000..c23d743df0 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/orig/fingerprint_icon.svg @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + version="1.1" + id="svg2" + width="80" + height="80" + viewBox="0 0 80 80" + sodipodi:docname="fingerprint_icon.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + inkscape:export-filename="/home/raster/C/th-efl/th/img/ic/fingerprint-040.png" + inkscape:export-xdpi="48" + inkscape:export-ydpi="48" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <mask + maskUnits="userSpaceOnUse" + id="mask947"> + <rect + style="opacity:1;fill:#a0a0a0;fill-opacity:1;stroke-width:3.96122;stroke-linecap:round;stroke-linejoin:round" + id="rect949" + width="60" + height="40" + x="10" + y="5" /> + </mask> + </defs> + <sodipodi:namedview + inkscape:document-rotation="0" + pagecolor="#404040" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1377" + id="namedview4" + showgrid="true" + inkscape:zoom="5.7540814" + inkscape:cx="37.451677" + inkscape:cy="36.930308" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="g10" + showguides="false" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-others="false" + inkscape:snap-nodes="true" + inkscape:pagecheckerboard="0"> + <inkscape:grid + type="xygrid" + id="grid837" /> + </sodipodi:namedview> + <g + inkscape:groupmode="layer" + inkscape:label="Image" + id="g10"> + <circle + r="30" + cy="40" + cx="40" + id="path5067" + style="opacity:1;fill:none;fill-opacity:1;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" /> + <path + d="m 43.975455,43.03245 a 5,5 0 0 1 -6.464136,1.304192 5,5 0 0 1 -2.135227,-6.239133 5,5 0 0 1 5.90778,-2.929866" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="4.9720722" + sodipodi:start="0.65163863" + sodipodi:ry="5" + sodipodi:rx="5" + sodipodi:cy="40" + sodipodi:cx="40" + sodipodi:type="arc" + id="path5069" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5071" + sodipodi:type="arc" + sodipodi:cx="40" + sodipodi:cy="40" + sodipodi:rx="10" + sodipodi:ry="10" + sodipodi:start="2.6954195" + sodipodi:end="5.9000004" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 30.978949,44.315165 a 10,10 0 0 1 0.894023,-10.141949 10,10 0 0 1 9.31837,-4.101998 10,10 0 0 1 8.083444,6.190019" /> + <path + d="M 54.96884,40.966349 A 15,15 0 0 1 44.144681,54.41602 15,15 0 0 1 27.83009,48.768881 15,15 0 0 1 27.6369,31.505662" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="3.7435892" + sodipodi:start="0.064467936" + sodipodi:ry="15" + sodipodi:rx="15" + sodipodi:cy="40" + sodipodi:cx="40" + sodipodi:type="arc" + id="path5073" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5075" + sodipodi:type="arc" + sodipodi:cx="40" + sodipodi:cy="40" + sodipodi:rx="20" + sodipodi:ry="20" + sodipodi:start="1.4555675" + sodipodi:end="4.4180899" + sodipodi:arc-type="arc" + d="M 42.29948,59.86737 A 20,20 0 0 1 20.41782,44.066721 20,20 0 0 1 34.198617,20.859886" /> + <path + d="M 45.46173,15.603904 A 25,25 0 0 1 64.900594,42.227205 25,25 0 0 1 41.04551,64.978129 25,25 0 0 1 15.372628,44.300298" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="2.968721" + sodipodi:start="4.9326345" + sodipodi:ry="25" + sodipodi:rx="25" + sodipodi:cy="40" + sodipodi:cx="40" + sodipodi:type="arc" + id="path5077" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + d="m 47.923024,46.101286 a 10,10 0 0 1 -9.499196,3.773717" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="1.7290736" + sodipodi:start="0.65622285" + sodipodi:ry="10" + sodipodi:rx="10" + sodipodi:cy="40" + sodipodi:cx="40" + sodipodi:type="arc" + id="path5079" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5081" + sodipodi:type="arc" + sodipodi:cx="40" + sodipodi:cy="40" + sodipodi:rx="15" + sodipodi:ry="15" + sodipodi:start="4.9434339" + sodipodi:end="5.6642139" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 43.434922,25.398585 a 15,15 0 0 1 8.782213,5.898449" /> + <path + d="m 52.406889,24.31341 a 20,20 0 0 1 5.301636,24.982189" + sodipodi:arc-type="arc" + sodipodi:end="0.48338606" + sodipodi:start="5.3815708" + sodipodi:ry="20" + sodipodi:rx="20" + sodipodi:cy="40" + sodipodi:cx="40" + sodipodi:type="arc" + id="path5083" + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:open="true" /> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5085" + sodipodi:type="arc" + sodipodi:cx="40" + sodipodi:cy="40" + sodipodi:rx="25" + sodipodi:ry="25" + sodipodi:start="3.7973554" + sodipodi:end="4.1880314" + sodipodi:open="true" + sodipodi:arc-type="arc" + d="m 20.185423,24.755901 a 25,25 0 0 1 7.298152,-6.397045" /> + </g> +</svg> diff --git a/src/bin/tools/fprint/data/themes/images/right_hand.png b/src/bin/tools/fprint/data/themes/images/right_hand.png Binary files differnew file mode 100644 index 0000000000..d2353958e0 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/images/right_hand.png diff --git a/src/bin/tools/fprint/data/themes/meson.build b/src/bin/tools/fprint/data/themes/meson.build new file mode 100644 index 0000000000..334d52bcc6 --- /dev/null +++ b/src/bin/tools/fprint/data/themes/meson.build @@ -0,0 +1,12 @@ +cmd = [ edje_cmd, + '-id', join_paths(meson.current_source_dir(), 'images'), + '@INPUT@', '@OUTPUT@' + ] +src = 'enlightenment_fprint' +custom_target(src + '.edj', + input : src + '.edc', + output : src + '.edj', + command : cmd, + install_dir: join_paths(dir_data, proj, 'themes'), + install : true + ) diff --git a/src/bin/tools/fprint/meson.build b/src/bin/tools/fprint/meson.build new file mode 100644 index 0000000000..27a3b2840e --- /dev/null +++ b/src/bin/tools/fprint/meson.build @@ -0,0 +1,112 @@ +##### project +#project('e-fprint-gui', 'c', +# version : '0.1', + # license : 'BSD 2 clause', +# default_options: [ 'c_std=gnu99' ], +# meson_version : '>= 0.40.0') +#base_url = 'https://github.com/jf-simon/e-fprint-gui' + +##### convenience variables for later +proj = meson.project_name() +ver = meson.project_version() +cfg = configuration_data() + +##### dependencies +efl_version = '>= 1.19.0' +elm = dependency('elementary', required: true, version: efl_version) +edje = dependency('edje', required: true, version: efl_version) +ecore = dependency('ecore', required: true, version: efl_version) +ecorex = dependency('ecore-x', required: true, version: efl_version) +depe = dependency('enlightenment', required: false) +#curl_dep = dependency('libcurl', version : '>= 7.35.0', required: true) + +##### check for windows dependency +#if build_machine.system() == 'windows' +# win = dependency('evil', version: efl_version) +#endif + +##### dir locations +#dir_prefix = get_option('prefix') +#dir_bin = join_paths(dir_prefix, get_option('bindir')) +#dir_lib = join_paths(dir_prefix, get_option('libdir')) +#dir_data = join_paths(dir_prefix, get_option('datadir')) +#dir_locale = join_paths(dir_prefix, get_option('localedir')) + +##### config.h +#cfg.set_quoted('PACKAGE' , proj) +#cfg.set_quoted('PACKAGE_NAME' , proj) +#cfg.set_quoted('PACKAGE_VERSION' , ver) +#cfg.set_quoted('PACKAGE_STRING' , proj + ' ' + ver) +#cfg.set_quoted('PACKAGE_URL' , base_url + proj) +#cfg.set_quoted('PACKAGE_BIN_DIR' , dir_bin) +#cfg.set_quoted('PACKAGE_LIB_DIR' , dir_lib) +#cfg.set_quoted('BINDIR' , dir_bin) +#cfg.set_quoted('DATADIR' , dir_data) +#cfg.set_quoted('PACKAGE_DATA_DIR' , join_paths(dir_data, proj)) +#cfg.set_quoted('LOCALEDIR' , dir_locale) + +#add_global_arguments('-DPACKAGE_BIN_DIR="@0@"'.format(dir_bin), language: 'c') +#add_global_arguments('-DPACKAGE_LIB_DIR="@0@"'.format(dir_lib), language: 'c') +#add_global_arguments('-DPACKAGE_DATA_DIR="@0@"'.format(join_paths(dir_data, proj)), language: 'c') + +##### get C compiler +#cc = meson.get_compiler('c') + +##### get edje command +#edje_cmd = join_paths(edje.get_pkgconfig_variable('prefix'), +# 'bin', 'edje_cc') + +##### Check for windows +#if build_machine.system() == 'windows' +# cfg.set ('_WIN32' , 1) +#endif +##### Check for arpa/inet and netinet/in.h +#if cc.has_header('arpa/inet.h') == true +# cfg.set ('HAVE_ARPA_INET_H' , 1) +#endif +#if cc.has_header('netinet/in.h') == true +# cfg.set ('HAVE_NETINET_IN_H' , 1) +#endif +#if exif.found() == true +# cfg.set ('HAVE_LIBEXIF' , 1) +#endif +#if depe.found() == true +# build_gadget = true +# cfg.set ('HAVE_E' , 1) +#endif +###### translations +#use_translations = false +#depnls = [] +#intl_lib = cc.find_library('intl', required: false) +#if intl_lib.found() +# cfg.set('HAVE_GETTEXT', 1) +# cfg.set('ENABLE_NLS', 1) +# depnls = [intl_lib] +# use_translations = true +#else +# gettext_code = ''' +# #include <libintl.h> +# int main(int argc, char *argv[]) { +# (void)ngettext("", "", 0); +# return 0; +# } +# ''' +# if cc.links(gettext_code) +# cfg.set('HAVE_GETTEXT', 1) +# cfg.set('ENABLE_NLS', 1) +# use_translations = true +# endif +#endif +#configure_file(output: 'config.h', configuration: cfg) + +#install_data('AUTHORS', +# install_dir: join_paths(dir_data, 'e-fprint-gui')) + +#if use_translations +# subdir('po') +#endif + +eldbus_codegen = find_program('eldbus-codegen') + +subdir('src') +subdir('data') diff --git a/src/bin/tools/fprint/src/device.xml b/src/bin/tools/fprint/src/device.xml new file mode 100644 index 0000000000..ebb4647a5b --- /dev/null +++ b/src/bin/tools/fprint/src/device.xml @@ -0,0 +1,644 @@ +<!DOCTYPE node PUBLIC +"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" [ +<!ENTITY ERROR_CLAIM_DEVICE "net.reactivated.Fprint.Error.ClaimDevice"> +<!ENTITY ERROR_ALREADY_IN_USE "net.reactivated.Fprint.Error.AlreadyInUse"> +<!ENTITY ERROR_INTERNAL "net.reactivated.Fprint.Error.Internal"> +<!ENTITY ERROR_PERMISSION_DENIED "net.reactivated.Fprint.Error.PermissionDenied"> +<!ENTITY ERROR_NO_ENROLLED_PRINTS "net.reactivated.Fprint.Error.NoEnrolledPrints"> +<!ENTITY ERROR_NO_ACTION_IN_PROGRESS "net.reactivated.Fprint.Error.NoActionInProgress"> +<!ENTITY ERROR_INVALID_FINGERNAME "net.reactivated.Fprint.Error.InvalidFingername"> +<!ENTITY ERROR_PRINTS_NOT_DELETED "net.reactivated.Fprint.Error.PrintsNotDeleted"> +<!ENTITY ERROR_PRINTS_NOT_DELETED_FROM_DEVICE "net.reactivated.Fprint.Error.PrintsNotDeletedFromDevice"> +]> + +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + <interface name="net.reactivated.Fprint.Device"> + <doc:doc> + <doc:title id="polkit-integration"> + PolicyKit integration + </doc:title> + <doc:para> + fprintd uses PolicyKit to check whether users are allowed to access fingerprint data, or the + fingerprint readers itself. + <doc:list> + <doc:item> + <doc:term>net.reactivated.fprint.device.verify</doc:term> + <doc:definition> + Whether the user is allowed to verify fingers against saved fingerprints. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>net.reactivated.fprint.device.enroll</doc:term> + <doc:definition> + Whether the user is allowed to enroll new fingerprints. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>net.reactivated.fprint.device.setusername</doc:term> + <doc:definition> + Whether the user is allowed to query, verify, or enroll fingerprints for users other than itself. + </doc:definition> + </doc:item> + </doc:list> + </doc:para> + + <doc:title id="usernames"> + Usernames + </doc:title> + <doc:para> + When a username argument is used for a method, a PolicyKit check is done on the + <doc:tt>net.reactivated.fprint.device.setusername</doc:tt> PolicyKit + action to see whether the user the client is running as is allowed to access data from other users. + </doc:para> + <doc:para> + By default, only root is allowed to access fingerprint data for users other than itself. For a normal user, + it is recommended that you use an empty string for the username, which will mean "the client the user is + running as". + </doc:para> + <doc:para> + See <doc:ref type="description" to="polkit-integration">PolicyKit integration</doc:ref>. + </doc:para> + + <doc:title id="fingerprint-names"> + Fingerprint names + </doc:title> + <doc:para> + When a finger name argument is used for a method, it refers to either a single finger, or + "any" finger. See the list of possible values below: + <doc:list> + <doc:item> + <doc:term>left-thumb</doc:term> + <doc:definition> + Left thumb + </doc:definition> + </doc:item> + <doc:item> + <doc:term>left-index-finger</doc:term> + <doc:definition> + Left index finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>left-middle-finger</doc:term> + <doc:definition> + Left middle finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>left-ring-finger</doc:term> + <doc:definition> + Left ring finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>left-little-finger</doc:term> + <doc:definition> + Left little finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>right-thumb</doc:term> + <doc:definition> + Right thumb + </doc:definition> + </doc:item> + <doc:item> + <doc:term>right-index-finger</doc:term> + <doc:definition> + Right index finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>right-middle-finger</doc:term> + <doc:definition> + Right middle finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>right-ring-finger</doc:term> + <doc:definition> + Right ring finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>right-little-finger</doc:term> + <doc:definition> + Right little finger + </doc:definition> + </doc:item> + <doc:item> + <doc:term>any</doc:term> + <doc:definition> + Any finger. This is only used for <doc:ref type="method" to="Device.VerifyStart">Device.VerifyStart</doc:ref> + (select the first finger with a fingerprint associated, or all the fingerprints available for the user when + the device supports it) and <doc:ref type="signal" to="Device::VerifyFingerSelected">Device::VerifyFingerSelected</doc:ref> + (any finger with an associated fingerprint can be used). + </doc:definition> + </doc:item> + </doc:list> + </doc:para> + + <doc:title id="verify-statuses"> + Verify Statuses + </doc:title> + <doc:para> + <doc:list> + Possible values for the result passed through <doc:ref type="signal" to="Device::VerifyResult">Device::VerifyResult</doc:ref> are: + <doc:item> + <doc:term>verify-no-match</doc:term> + <doc:definition> + The verification did not match, <doc:ref type="method" to="Device.VerifyStop">Device.VerifyStop</doc:ref> should now be called. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-match</doc:term> + <doc:definition> + The verification succeeded, <doc:ref type="method" to="Device.VerifyStop">Device.VerifyStop</doc:ref> should now be called. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-retry-scan</doc:term> + <doc:definition> + The user should retry scanning their finger, the verification is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-swipe-too-short</doc:term> + <doc:definition> + The user's swipe was too short. The user should retry scanning their finger, the verification is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-finger-not-centered</doc:term> + <doc:definition> + The user's finger was not centered on the reader. The user should retry scanning their finger, the verification is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-remove-and-retry</doc:term> + <doc:definition> + The user should remove their finger from the reader and retry scanning their finger, the verification is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-disconnected</doc:term> + <doc:definition> + The device was disconnected during the verification, no other actions should be taken, and you shouldn't use the device any more. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>verify-unknown-error</doc:term> + <doc:definition> + An unknown error occurred (usually a driver problem), <doc:ref type="method" to="Device.VerifyStop">Device.VerifyStop</doc:ref> should now be called. + </doc:definition> + </doc:item> + </doc:list> + </doc:para> + + <doc:title id="enroll-statuses"> + Enroll Statuses + </doc:title> + <doc:para> + <doc:list> + Possible values for the result passed through <doc:ref type="signal" to="Device::EnrollResult">Device::EnrollResult</doc:ref> are: + <doc:item> + <doc:term>enroll-completed</doc:term> + <doc:definition> + The enrollment successfully completed, <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref> should now be called. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-failed</doc:term> + <doc:definition> + The enrollment failed, <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref> should now be called. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-stage-passed</doc:term> + <doc:definition> + One stage of the enrollment passed, the enrollment is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-retry-scan</doc:term> + <doc:definition> + The user should retry scanning their finger, the enrollment is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-swipe-too-short</doc:term> + <doc:definition> + The user's swipe was too short. The user should retry scanning their finger, the enrollment is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-finger-not-centered</doc:term> + <doc:definition> + The user's finger was not centered on the reader. The user should retry scanning their finger, the enrollment is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-remove-and-retry</doc:term> + <doc:definition> + The user should remove their finger from the reader and retry scanning their finger, the enrollment is still ongoing. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-data-full</doc:term> + <doc:definition> + No further prints can be enrolled on this device, <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref> should now be called. + + <doc:ref type="method" to="DeleteEnrolledFinger">Delete other prints</doc:ref> from the device first to continue + (e.g. from other users). Note that old prints or prints from other operating systems may be deleted automatically + to resolve this error without any notification. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-duplicate</doc:term> + <doc:definition> + The print has already been enrolled, <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref> should now be called. + + The user should enroll a different finger, or delete the print that has been enrolled already. + This print may be enrolled for a different user. + Note that an old duplicate (e.g. from a previous install) will be automatically garbage collected and should not cause any issues. + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-disconnected</doc:term> + <doc:definition> + The device was disconnected during the enrollment, no other actions should be taken, and you shouldn't use the device any more. + + </doc:definition> + </doc:item> + <doc:item> + <doc:term>enroll-unknown-error</doc:term> + <doc:definition> + An unknown error occurred (usually a driver problem), <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref> should now be called. + + </doc:definition> + </doc:item> + </doc:list> + </doc:para> + </doc:doc> + + <!-- ************************************************************ --> + + <method name="ListEnrolledFingers"> + <arg type="s" name="username" direction="in"> + <doc:doc><doc:summary>The username for whom to list the enrolled fingerprints. See <doc:ref type="description" to="usernames">Usernames</doc:ref>.</doc:summary></doc:doc> + </arg> + <arg type="as" name="enrolled_fingers" direction="out"> + <doc:doc><doc:summary>An array of strings representing the enrolled fingerprints. See <doc:ref type="description" to="fingerprint-names">Fingerprint names</doc:ref>.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + List all the enrolled fingerprints for the chosen user. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_NO_ENROLLED_PRINTS;">if the chosen user doesn't have any fingerprints enrolled</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="DeleteEnrolledFingers"> + <arg type="s" name="username" direction="in"> + <doc:doc><doc:summary>The username for whom to delete the enrolled fingerprints. See <doc:ref type="description" to="usernames">Usernames</doc:ref>.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Delete all the enrolled fingerprints for the chosen user. + </doc:para> + <doc:para> + This call only exists for compatibility reasons, you should instead claim the device using + <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref> and then call + <doc:ref type="method" to="DeleteEnrolledFingers2">DeleteEnrolledFingers2</doc:ref> or + <doc:ref type="method" to="DeleteEnrolledFinger">DeleteEnrolledFinger</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_PRINTS_NOT_DELETED;">if the fingerprint is not deleted from fprintd storage</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="DeleteEnrolledFingers2"> + <doc:doc> + <doc:description> + <doc:para> + Delete all the enrolled fingerprints for the user currently claiming the device with <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_PRINTS_NOT_DELETED;">if the fingerprint is not deleted from fprintd storage</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="DeleteEnrolledFinger"> + <arg type="s" name="finger_name" direction="in"> + <doc:doc> + <doc:summary>A string representing the finger to delete. See + <doc:ref type="description" to="fingerprint-names">Fingerprint names</doc:ref>. + Note that "any" is not a valid finger name for this method.</doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Delete the enrolled fingerprint for the user currently claiming the device with <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + <doc:error name="&ERROR_INVALID_FINGERNAME;">if the finger name passed is invalid</doc:error> + <doc:error name="&ERROR_NO_ENROLLED_PRINTS;">if the chosen user doesn't have the requsted fingerprint enrolled</doc:error> + <doc:error name="&ERROR_PRINTS_NOT_DELETED;">if the fingerprint is not deleted from fprintd storage</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="Claim"> + <arg type="s" name="username" direction="in"> + <doc:doc><doc:summary>The username for whom to claim the device. See <doc:ref type="description" to="usernames">Usernames</doc:ref>.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Claim the device for the chosen user. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_ALREADY_IN_USE;">if the device is already claimed</doc:error> + <doc:error name="&ERROR_INTERNAL;">if the device couldn't be claimed</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="Release"> + <doc:doc> + <doc:description> + <doc:para> + Release a device claimed with <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="VerifyStart"> + <arg type="s" name="finger_name" direction="in"> + <doc:doc><doc:summary>A string representing the finger to verify. See <doc:ref type="description" to="fingerprint-names">Fingerprint names</doc:ref>.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Check the chosen finger against a saved fingerprint. You need to have claimed the device using + <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref>. The finger selected is sent to the front-end + using <doc:ref type="signal" to="Device::VerifyFingerSelected">Device::VerifyFingerSelected</doc:ref> and + verification status through <doc:ref type="signal" to="Device::VerifyStatus">Device::VerifyStatus</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + <doc:error name="&ERROR_ALREADY_IN_USE;">if the device was already being used</doc:error> + <doc:error name="&ERROR_NO_ENROLLED_PRINTS;">if there are no enrolled prints for the chosen user</doc:error> + <doc:error name="&ERROR_INTERNAL;">if there was an internal error</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="VerifyStop"> + <doc:doc> + <doc:description> + <doc:para> + Stop an on-going fingerprint verification started with <doc:ref type="method" to="Device.VerifyStart">Device.VerifyStart</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + <doc:error name="&ERROR_NO_ACTION_IN_PROGRESS;">if there was no ongoing verification</doc:error> + <doc:error name="&ERROR_INTERNAL;">if there was an internal error</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <signal name="VerifyFingerSelected"> + <arg type="s" name="finger_name"> + <doc:doc> + <doc:summary> + <doc:para> + A string representing the finger select to be verified. + </doc:para> + </doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:seealso> + <doc:ref type="description" to="fingerprint-names">Fingerprint names</doc:ref>. + </doc:seealso> + </doc:doc> + </signal> + + <!-- ************************************************************ --> + + <signal name="VerifyStatus"> + <arg type="s" name="result"> + <doc:doc> + <doc:summary> + A string representing the status of the verification. + </doc:summary> + </doc:doc> + </arg> + + <arg type="b" name="done"> + <doc:doc> + <doc:summary> + Whether the verification finished and can be stopped. + </doc:summary> + </doc:doc> + </arg> + + <doc:doc> + <doc:seealso> + <doc:ref type="description" to="verify-statuses">Verify Statuses</doc:ref> and <doc:ref type="method" to="Device.VerifyStop">Device.VerifyStop</doc:ref>. + </doc:seealso> + </doc:doc> + </signal> + + <!-- ************************************************************ --> + + <method name="EnrollStart"> + <arg type="s" name="finger_name" direction="in"> + <doc:doc><doc:summary>A string representing the finger to enroll. See + <doc:ref type="description" to="fingerprint-names">Fingerprint names</doc:ref>. + Note that "any" is not a valid finger name for this method.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Start enrollment for the selected finger. You need to have claimed the device using + <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref> before calling + this method. Enrollment status is sent through <doc:ref type="signal" to="Device::EnrollStatus">Device::EnrollStatus</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + <doc:error name="&ERROR_ALREADY_IN_USE;">if the device was already being used</doc:error> + <doc:error name="&ERROR_INVALID_FINGERNAME;">if the finger name passed is invalid</doc:error> + <doc:error name="&FINGER_ALREADY_ENROLLED;">if the finger has been already enrolled by the user</doc:error> + <doc:error name="&ERROR_INTERNAL;">if there was an internal error</doc:error> + </doc:errors> + + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="EnrollStop"> + <doc:doc> + <doc:description> + <doc:para> + Stop an on-going fingerprint enrollment started with <doc:ref type="method" to="Device.EnrollStart">Device.EnrollStart</doc:ref>. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_PERMISSION_DENIED;">if the caller lacks the appropriate PolicyKit authorization</doc:error> + <doc:error name="&ERROR_CLAIM_DEVICE;">if the device was not claimed</doc:error> + <doc:error name="&ERROR_NO_ACTION_IN_PROGRESS;">if there was no ongoing verification</doc:error> + <doc:error name="&ERROR_INTERNAL;">if there was an internal error</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <signal name="EnrollStatus"> + <arg type="s" name="result"> + <doc:doc> + <doc:summary> + A string representing the status of the enrollment. + </doc:summary> + </doc:doc> + </arg> + + <arg type="b" name="done"> + <doc:doc> + <doc:summary> + Whether the enrollment finished and can be stopped. + </doc:summary> + </doc:doc> + </arg> + + <doc:doc> + <doc:seealso> + <doc:ref type="description" to="enroll-statuses">Enrollment Statuses</doc:ref> and <doc:ref type="method" to="Device.EnrollStop">Device.EnrollStop</doc:ref>. + </doc:seealso> + </doc:doc> + </signal> + + <!-- ************************************************************ --> + + <property name="name" type="s" access="read"> + <doc:doc> + <doc:description> + <doc:para> + The product name of the device. + </doc:para> + </doc:description> + </doc:doc> + </property> + + <!-- ************************************************************ --> + + <property name="num-enroll-stages" type="i" access="read"> + <doc:doc> + <doc:description> + <doc:para> + The number of enrollment stages for the device. This is only available when the device has been claimed, otherwise it will be undefined (-1). + </doc:para> + <doc:seealso> + <doc:ref type="method" to="Device.Claim">Device.Claim</doc:ref> and <doc:ref type="method" to="Device.EnrollStart">Device.EnrollStart</doc:ref>. + </doc:seealso> + </doc:description> + </doc:doc> + </property> + + <!-- ************************************************************ --> + + <property name="scan-type" type="s" access="read"> + <doc:doc> + <doc:description> + <doc:para> + The scan type of the device, either "press" if you place your finger on the device, or "swipe" if you have to swipe your finger. + </doc:para> + </doc:description> + </doc:doc> + </property> + + <!-- ************************************************************ --> + + <property name="finger-present" type="b" access="read"> + <doc:doc> + <doc:description> + <doc:para> + Whether the finger is on sensor. + </doc:para> + </doc:description> + </doc:doc> + </property> + + <!-- ************************************************************ --> + + <property name="finger-needed" type="b" access="read"> + <doc:doc> + <doc:description> + <doc:para> + Whether the sensor is waiting for the finger. + </doc:para> + </doc:description> + </doc:doc> + </property> + + </interface> +</node> diff --git a/src/bin/tools/fprint/src/enlightenment_fprint.c b/src/bin/tools/fprint/src/enlightenment_fprint.c new file mode 100644 index 0000000000..806c8fccf5 --- /dev/null +++ b/src/bin/tools/fprint/src/enlightenment_fprint.c @@ -0,0 +1,1312 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" + +#endif + +/* NOTE: Respecting header order is important for portability. + * Always put system first, then EFL, then your public header, + * and finally your private one. */ + +#include <Ecore_Getopt.h> +#include <Elementary.h> +#include <Elementary_Cursor.h> +#include "eldbus_fprint_device.h" +#include "eldbus_fprint_manager.h" + +Eldbus_Connection *conn; +Eldbus_Proxy *new_proxy; +Eldbus_Proxy *new_proxy1; +Eldbus_Pending *p; +Eldbus_Pending *p1; + +Evas_Object *ly; +Evas_Object *ly_popup; +Evas_Object *win; +Evas_Object *lb_status; + +const char *default_device = NULL; +const char *device_type = NULL; +const char *currentuser; +const char *currentfinger; +double enroll_count = 0.0; +int enroll_num; +int step = 1; +double enroll_count_value; + +Eina_Value array; + +static void enrolled_fingers_cb(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error, Eina_Value *args); +static void _update_theme(void); +static void claim_device(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error); +static void _enroll_stopp_cb(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error); +static void _verify_stopp_cb(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error); + +const char* +_to_readable_fingername(void *data) +{ + const char *name; + Eina_Strbuf *buffer = eina_strbuf_new(); + + eina_strbuf_append(buffer, data); + eina_strbuf_replace_all(buffer, "-", " "); + eina_strbuf_replace(buffer, "right", "Right", 1); + eina_strbuf_replace(buffer, "left", "Left", 1); + name = eina_strbuf_string_get(buffer); + + return name; +} + +const char* +_to_fprint_fingername(const char *data) +{ + const char *name; + Eina_Strbuf *buffer = eina_strbuf_new(); + + eina_strbuf_append(buffer, data); + eina_strbuf_replace_all(buffer, " ", "-"); + eina_strbuf_replace(buffer, "Right", "right", 1); + eina_strbuf_replace(buffer, "Left", "left", 1); + name = eina_strbuf_string_get(buffer); + + return name; +} + +static void +_close_verify_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + fprint_device_enroll_stop_call(new_proxy1, _verify_stopp_cb, NULL); + + if (data) evas_object_del(data); + + edje_object_signal_emit(ly, "reset_finger", "reset_finger"); // for GROUP hands/left_hand/right/hand + edje_object_signal_emit(ly, "not_enrolled_finger", "not_enrolled_finger"); // for GROUP finger + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + _update_theme(); +} + +static void +_close_enroll_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + fprint_device_enroll_stop_call(new_proxy1, _enroll_stopp_cb, NULL); + + if (data) + { + evas_object_del(data); + data = NULL; + } + + edje_object_signal_emit(ly, "reset_finger", "reset_finger"); // for GROUP hands/left_hand/right/hand + edje_object_signal_emit(ly, "not_enrolled_finger", "not_enrolled_finger"); // for GROUP finger + // enrolled__failed + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + _update_theme(); +} + +static void +_dismiss_hover(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + Evas_Object *hv = data; + elm_hover_dismiss(hv); +} + +static void +_enroll_prop_get(void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED, Eldbus_Error_Info *error_info, int value) +{ + if (error_info) + { + printf("MESSAGE _enroll_prop_get: %s\n", error_info->message); + printf("ERROR _enroll_prop_get: %s\n", error_info->error); + //TODO: display the error + } + else + { + enroll_num = value; + enroll_count_value = 10 / (double)enroll_num; + } +} + +static void +_verify_start_cb(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + Evas_Object *popup; + + if (error) + { + printf("MESSAGE _verify_start_cb: %s\n", error->message); + printf("ERROR _verify_start_cb: %s\n", error->error); + //TODO: display the error + popup = data; + evas_object_del(popup); + popup = NULL; + } +} + +static void +_enroll_start_cb(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + Evas_Object *popup = data; + + if (error) + { + printf("MESSAGE _enroll_start_cb: %s\n", error->message); + printf("ERROR _enroll_start_cb: %s\n", error->error); + //TODO: display the error + if (popup) evas_object_del(popup); + popup = NULL; + } +} + +static void +_popup_verify_cb(void *data, Evas_Object *obj EINA_UNUSED) +{ + Evas_Object *popup, *box, *lb, *sep, *button; + char buf[PATH_MAX]; + char buf1[PATH_MAX]; + const char *fingername; + + fingername = _to_readable_fingername(data); + + popup = elm_popup_add(win); + elm_popup_scrollable_set(popup, EINA_FALSE); + + box = elm_box_add(popup); + evas_object_show(box); + + lb = elm_label_add(box); + elm_object_text_set(lb, "Verify:"); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + snprintf(buf, sizeof(buf), "<bigger>%s</bigger>", fingername); + + lb = elm_label_add(box); + elm_object_text_set(lb, buf); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + ly_popup = elm_layout_add(box); + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly_popup, buf, "verify"); + evas_object_size_hint_weight_set(ly_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ly_popup, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(ly_popup); + elm_box_pack_end(box, ly_popup); + + snprintf(buf1, sizeof(buf1), "please %s on device", device_type); + lb = elm_label_add(box); + elm_object_text_set(lb, buf1); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + sep = elm_separator_add(box); + elm_separator_horizontal_set(sep, EINA_TRUE); + evas_object_size_hint_weight_set(sep, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(sep, EVAS_HINT_FILL, 0.0); + evas_object_show(sep); + elm_box_pack_end(box, sep); + + lb_status = elm_label_add(box); + elm_object_text_set(lb_status, "<color=white>waiting for enroll</color>"); //TODO: swipe or press auslesen + evas_object_show(lb_status); + elm_box_pack_end(box, lb_status); + + sep = elm_separator_add(box); + elm_separator_horizontal_set(sep, EINA_TRUE); + evas_object_size_hint_weight_set(sep, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(sep, EVAS_HINT_FILL, 0.0); + evas_object_show(sep); + elm_box_pack_end(box, sep); + + button = elm_button_add(box); + elm_object_text_set(button, "close"); + evas_object_smart_callback_add(button, "clicked", _close_verify_popup, popup); + evas_object_show(button); + elm_box_pack_end(box, button); + + elm_object_content_set(popup, box); + + evas_object_show(popup); + + evas_object_smart_callback_add(popup, "block,clicked", _close_verify_popup, popup); + fprint_device_verify_start_call(new_proxy1, _verify_start_cb, NULL, data); +} + +static void +_popup_enroll_cb(void *data, Evas_Object *obj EINA_UNUSED) +{ + Evas_Object *popup, *box, *lb, *sep, *button; + char buf[PATH_MAX]; + char buf1[PATH_MAX]; + const char *fingername; + + fingername = _to_readable_fingername(data); + + popup = elm_popup_add(win); + elm_popup_scrollable_set(popup, EINA_FALSE); + evas_object_smart_callback_add(popup, "block,clicked", _close_enroll_popup, popup); + + box = elm_box_add(popup); + evas_object_show(box); + + lb = elm_label_add(box); + elm_object_text_set(lb, "Enroll:"); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + snprintf(buf, sizeof(buf), "<bigger>%s</bigger>", fingername); + + lb = elm_label_add(box); + elm_object_text_set(lb, buf); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + ly_popup = elm_layout_add(box); + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly_popup, buf, "enroll"); + evas_object_size_hint_weight_set(ly_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ly_popup, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(ly_popup); + elm_box_pack_end(box, ly_popup); + + snprintf(buf1, sizeof(buf1), "please %s on device", device_type); + lb = elm_label_add(box); + elm_object_text_set(lb, buf1); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + sep = elm_separator_add(box); + elm_separator_horizontal_set(sep, EINA_TRUE); + evas_object_size_hint_weight_set(sep, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(sep, EVAS_HINT_FILL, 0.0); + evas_object_show(sep); + elm_box_pack_end(box, sep); + + lb_status = elm_label_add(box); + elm_object_text_set(lb_status, "<color=white>waiting for enroll</color>"); //TODO: swipe or press auslesen + evas_object_show(lb_status); + elm_box_pack_end(box, lb_status); + + sep = elm_separator_add(box); + elm_separator_horizontal_set(sep, EINA_TRUE); + evas_object_size_hint_weight_set(sep, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(sep, EVAS_HINT_FILL, 0.0); + evas_object_show(sep); + elm_box_pack_end(box, sep); + + button = elm_button_add(box); + elm_object_text_set(button, "close"); + evas_object_smart_callback_add(button, "clicked", _close_enroll_popup, popup); + evas_object_show(button); + elm_box_pack_end(box, button); + + elm_object_content_set(popup, box); + + evas_object_show(popup); + + fprint_device_enroll_start_call(new_proxy1, _enroll_start_cb, popup, data); +} + +static void +delete_selected_finger(Eldbus_Proxy *proxy EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + if (error) + { + printf("MESSAGE delete_selected_finger: %s\n", error->message); + printf("ERROR delete_selected_finger: %s\n", error->error); + } + else + { + edje_object_signal_emit(ly, "reset_finger", "reset_finger"); // for GROUP hands/left_hand/right/hand + edje_object_signal_emit(ly, "not_enrolled_finger", "not_enrolled_finger"); // for GROUP finger + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + + _dismiss_hover(data, NULL, NULL); + _update_theme(); + } +} + +static void +delete_all_finger(Eldbus_Proxy *prox EINA_UNUSED, void *data, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + if (error) + { + printf("MESSAGE delete_all_finger: %s\n", error->message); + printf("ERROR delete_all_finger: %s\n", error->error); + } + else + { + edje_object_signal_emit(ly, "reset_finger", "reset_finger"); // for GROUP hands/left_hand/right/hand + edje_object_signal_emit(ly, "not_enrolled_finger", "not_enrolled_finger"); // for GROUP finger + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + + _dismiss_hover(data, NULL, NULL); + } +} + +static void +_verify_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + _popup_verify_cb(data, NULL); +} + +static void +_enroll_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + _popup_enroll_cb(data, NULL); +} + +static void +_delete_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + fprint_device_delete_enrolled_finger_call(new_proxy1, delete_selected_finger, NULL, data); +} + +static void +_delete_all_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + fprint_device_delete_enrolled_fingers2_call(new_proxy1, delete_all_finger, data); +} + +void +fingerprint_clicked_finger_mode(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *hv, *bt, *bx, *lb; + char buf[PATH_MAX]; + const char *layout; + const char *fingername; + const char *txt; + int i, found = 0; + + Evas_Object *left_list = evas_object_data_get(data, "left_list"); + Evas_Object *right_list = evas_object_data_get(data, "right_list"); + Elm_Object_Item *selected_item; + + selected_item = elm_list_selected_item_get(left_list); + + if (selected_item == NULL) + selected_item = elm_list_selected_item_get(right_list); + + if (selected_item == NULL) return; + + fingername = _to_fprint_fingername(elm_object_item_text_get(selected_item)); + + currentfinger = strdup(fingername); + + snprintf(buf, sizeof(buf), "<color=white>%s</color>", elm_object_item_text_get(selected_item)); + + hv = elm_hover_add(win); + bx = elm_box_add(win); + + elm_layout_file_get(ly, NULL, &layout); + + if (strcmp(layout, "finger") == 0) + elm_object_part_content_set(hv, "middle", bx); + else + elm_object_part_content_set(hv, "bottom", bx); + + evas_object_show(bx); + + lb = elm_label_add(bx); + elm_object_text_set(lb, buf); + evas_object_show(lb); + elm_box_pack_end(bx, lb); + + for (i = 0; i < (int)eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + + if (!strcmp(txt, fingername)) found = 1; + } + + if (found == 1) + { + bt = elm_button_add(win); + elm_object_text_set(bt, "verify"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _verify_cb, fingername); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + + bt = elm_button_add(win); + elm_object_text_set(bt, "delete"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _delete_selected_cb, fingername); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + else + { + bt = elm_button_add(win); + elm_object_text_set(bt, "enroll"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _enroll_cb, fingername); + + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + + if (eina_value_array_count(&array) != 0) + { + bt = elm_button_add(win); + elm_object_text_set(bt, "delete all"); + evas_object_smart_callback_add(bt, "clicked", _delete_all_cb, hv); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + + elm_hover_parent_set(hv, win); + elm_hover_target_set(hv, obj); + + evas_object_show(hv); +} + +void +fingerprint_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *hv, *bt, *bx, *lb; + char buf[PATH_MAX]; + const char *layout; + const char *fingername; + const char *txt; + int i, found = 0; + + currentfinger = data; + + printf("CURRENTFINGER: %s\n", currentfinger); + + fingername = _to_readable_fingername(data); + snprintf(buf, sizeof(buf), "<color=white>%s</color>", fingername); + + hv = elm_hover_add(win); + bx = elm_box_add(win); + + elm_layout_file_get(ly, NULL, &layout); + + if (strcmp(layout, "finger") == 0) + elm_object_part_content_set(hv, "middle", bx); + else + elm_object_part_content_set(hv, "bottom", bx); + + evas_object_show(bx); + + lb = elm_label_add(bx); + elm_object_text_set(lb, buf); + evas_object_show(lb); + elm_box_pack_end(bx, lb); + + for (i = 0; i < (int)eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + + if (!strcmp(txt, data)) found = 1; + } + + if (found == 1) + { + bt = elm_button_add(win); + elm_object_text_set(bt, "verify"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _verify_cb, data); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + + bt = elm_button_add(win); + elm_object_text_set(bt, "delete"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _delete_selected_cb, data); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + else + { + bt = elm_button_add(win); + elm_object_text_set(bt, "enroll"); + evas_object_smart_callback_add(bt, "clicked", _dismiss_hover, hv); + evas_object_smart_callback_add(bt, "clicked", _enroll_cb, data); + + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + + if (eina_value_array_count(&array) != 0) + { + bt = elm_button_add(win); + elm_object_text_set(bt, "delete all"); + evas_object_smart_callback_add(bt, "clicked", _delete_all_cb, hv); + elm_box_pack_end(bx, bt); + evas_object_show(bt); + } + + elm_hover_parent_set(hv, win); + elm_hover_target_set(hv, obj); + + evas_object_show(hv); +} + +static void +_switch_hand(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + char buf[PATH_MAX]; + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly, buf, data); + + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + _update_theme(); +} + +static void +_finger_mode_select(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + const char *txt, *fingername; + unsigned i; + const Eina_List *l, *items; + Elm_Object_Item *list_it, *selected_item; + + items = elm_list_items_get(data); + + EINA_LIST_FOREACH(items, l, list_it) + { + elm_list_item_selected_set(list_it, EINA_FALSE); + } + + selected_item = elm_list_selected_item_get(obj); + + printf("FINGERNAME LIST FPRINT FINGERNAME1: %s\n", elm_object_item_text_get(selected_item)); + + fingername = _to_fprint_fingername(elm_object_item_text_get(selected_item)); + + printf("FINGERNAME LIST FPRINT FINGERNAME: %s\n", fingername); + + for (i = 0; i < eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + + printf("\t%s:%s\n", txt, fingername); + + if (!strcmp(txt, fingername)) + { + edje_object_signal_emit(ly, "enrolled_finger", "enrolled_finger"); + break; + } + edje_object_signal_emit(ly, "not_enrolled_finger", "not_enrolled_finger"); + } +} + +static void +_update_theme(void) +{ + Evas_Object *swallow_button, *right_list = NULL, *left_list, *leftright_list, *icon = NULL; + char buf[PATH_MAX]; + + // ALL 10 FINGERS + // LEFT + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "left-little-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_left-little-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "left-ring-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_left-ring-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "left-middle-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_left-middle-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "left-index-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_left-index-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "left-thumb"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_left-thumb", swallow_button); + + // RIGHT + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "right-little-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_right-little-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "right-ring-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_right-ring-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "right-middle-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_right-middle-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "right-index-finger"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_right-index-finger", swallow_button); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked, "right-thumb"); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_right-thumb", swallow_button); + + // SWITCH LEFT/RIGHT HAND + leftright_list = elm_list_add(win); + elm_list_multi_select_set(leftright_list, EINA_FALSE); + elm_list_select_mode_set(leftright_list, ELM_OBJECT_SELECT_MODE_ALWAYS); + evas_object_size_hint_weight_set(leftright_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + elm_list_mode_set(leftright_list, ELM_LIST_EXPAND); + elm_list_item_append(leftright_list, "Left Hand", NULL, NULL, _switch_hand, "left_hand"); + elm_list_item_append(leftright_list, "Right Hand", NULL, NULL, _switch_hand, "right_hand"); + evas_object_show(leftright_list); + elm_object_part_content_set(ly, "swallow_hand_switch", leftright_list); + + // ONE FINGER + left_list = elm_list_add(win); + elm_list_multi_select_set(left_list, EINA_FALSE); + elm_list_select_mode_set(left_list, ELM_OBJECT_SELECT_MODE_ALWAYS); + evas_object_size_hint_weight_set(left_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_list_mode_set(left_list, ELM_LIST_EXPAND); + + right_list = elm_list_add(win); + elm_list_multi_select_set(right_list, EINA_FALSE); + elm_list_select_mode_set(right_list, ELM_OBJECT_SELECT_MODE_ALWAYS); + evas_object_size_hint_weight_set(right_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_list_mode_set(right_list, ELM_LIST_EXPAND); + + //// + Eina_List *left_hand_list = NULL; + Eina_List *right_hand_list = NULL; + Eina_List *l; + const char *fingername; + unsigned i = 0; + int found; + const char *txt; + const char *list_item; + + elm_list_clear(right_list); + elm_list_clear(left_list); + + if (!eina_list_count(left_hand_list) || (eina_list_count(left_hand_list) == 0)) + { + left_hand_list = eina_list_append(left_hand_list, "Left little finger"); + left_hand_list = eina_list_append(left_hand_list, "Left ring finger"); + left_hand_list = eina_list_append(left_hand_list, "Left middle finger"); + left_hand_list = eina_list_append(left_hand_list, "Left index finger"); + left_hand_list = eina_list_append(left_hand_list, "Left thumb"); + } + + if (!eina_list_count(right_hand_list) || (eina_list_count(right_hand_list) == 0)) + { + right_hand_list = eina_list_append(right_hand_list, "Right little finger"); + right_hand_list = eina_list_append(right_hand_list, "Right ring finger"); + right_hand_list = eina_list_append(right_hand_list, "Right middle finger"); + right_hand_list = eina_list_append(right_hand_list, "Right index finger"); + right_hand_list = eina_list_append(right_hand_list, "Right thumb"); + } + + + EINA_LIST_FOREACH(left_hand_list, l, list_item) + { + icon = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_image_file_set(icon, buf, "icon"); + evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(20), ELM_SCALE_SIZE(20)); + evas_object_size_hint_max_set(icon, ELM_SCALE_SIZE(20), ELM_SCALE_SIZE(20)); + evas_object_show(icon); + + printf("LEFT LIST ITEM:\n"); + found = 0; + fingername = _to_fprint_fingername(list_item); + + for (i = 0; i < eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + + if (!strcmp(txt, fingername)) + { + printf("LEFT LIST ITEM: %s\n",fingername); + elm_list_item_append(left_list, fingername, icon, NULL, _finger_mode_select, right_list); + found = 1; + } + } + + if (found != 1) + elm_list_item_append(left_list, fingername, NULL, NULL, _finger_mode_select, right_list); + } + + EINA_LIST_FOREACH(right_hand_list, l, list_item) + { + icon = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_image_file_set(icon, buf, "icon"); + evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(20), ELM_SCALE_SIZE(20)); + evas_object_size_hint_max_set(icon, ELM_SCALE_SIZE(20), ELM_SCALE_SIZE(20)); + evas_object_show(icon); + + printf("RIGHT LIST ITEM:\n"); + found = 0; + fingername = _to_fprint_fingername(list_item); + for (i = 0; i < eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + + if (!strcmp(txt, fingername)) + { + printf("RIGHT LIST ITEM: %s\n",fingername); + elm_list_item_append(right_list, fingername, icon, NULL, _finger_mode_select, left_list); + found = 1; + } + } + if (found != 1) + elm_list_item_append(right_list, fingername, NULL, NULL, _finger_mode_select, left_list); + } + + elm_list_go(left_list); + evas_object_show(left_list); + elm_object_part_content_set(ly, "swallow_select-finger-left", left_list); + + elm_list_go(right_list); + evas_object_show(right_list); + elm_object_part_content_set(ly, "swallow_select-finger-right", right_list); + + swallow_button = elm_button_add(win); + elm_object_style_set(swallow_button, "blank"); + + evas_object_data_set(swallow_button, "left_list", left_list); + evas_object_data_set(swallow_button, "right_list", right_list); + + evas_object_smart_callback_add(swallow_button, "clicked", fingerprint_clicked_finger_mode, swallow_button); + evas_object_show(swallow_button); + elm_object_part_content_set(ly, "swallow_select-finger", swallow_button); +} + +static void +_select_mode(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + char buf[PATH_MAX]; + + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly, buf, data); + + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + _update_theme(); +} + +/* +static void +get_devices(Eldbus_Proxy *proxy, void *data, Eldbus_Pending *pending, Eldbus_Error_Info *error, Eina_Value *args) +{ + if (error) + printf("ERROR: %s\n", error->error); + if (error) + printf("MESSAGE: %s\n", error->message); +}*/ + +static void +get_default_device(Eldbus_Proxy *proxy EINA_UNUSED, void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error, const char *device) +{ + printf("DEFAULT: %s\n", device); + + if (device) + default_device = strdup(device); + + printf("DDEFAULT: %s\n", default_device); + if (error) + printf("ERROR get_default_device: %s\n", error->error); + if (error) + printf("MESSAGE get_default_device: %s\n", error->message); +} + +static void +enrolled_fingers_cb(Eldbus_Proxy *proxy EINA_UNUSED, void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error EINA_UNUSED, Eina_Value *args) +{ + const char *txt; + unsigned i; + + eina_value_flush(&array); + if (error) + { + printf("ERROR enrolled_fingers_cb: %s\n", error->error); + printf("MESSAGE enrolled_fingers_cb: %s\n", error->message); + } + else + { + eina_value_struct_value_get(args, "arg0", &array); + for (i = 0; i < eina_value_array_count(&array); i++) + { + eina_value_array_get(&array, i, &txt); + edje_object_signal_emit(ly, "enrolled_finger", txt); + } + } +} + +static void +get_device_proberties(void *data, Eldbus_Pending *pending EINA_UNUSED, const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED, Eldbus_Error_Info *error_info EINA_UNUSED, const char *value) +{ + char buf[PATH_MAX]; + Evas_Object *lb = data; + + if (value) + { + printf("NAME: %s\n", value); + snprintf(buf, sizeof(buf), "Device Name: <color=white>%s</color>", value); + elm_object_text_set(lb, buf); + } + else + elm_object_text_set(lb, "NO DEVICE"); +} + +static void +get_device_type(void *data, Eldbus_Pending *pending EINA_UNUSED, const char *propname EINA_UNUSED, Eldbus_Proxy *proxy EINA_UNUSED, Eldbus_Error_Info *error_info EINA_UNUSED, const char *value) +{ + char buf[PATH_MAX]; + Evas_Object *lb1 = data; + + if (value) + { + device_type = strdup(value); + printf("Type: %s\n", device_type); + snprintf(buf, sizeof(buf), "Device Type: <color=white>%s</color>", device_type); + elm_object_text_set(lb1, buf); + } +} + +static void +retry_claim_device(void* data, Evas_Object* o EINA_UNUSED, void* event EINA_UNUSED) +{ + Evas_Object *notify = data; + + if (notify) evas_object_del(notify); + + fprint_device_claim_call(new_proxy1, claim_device, NULL, currentuser); +} + +static void +claim_device(Eldbus_Proxy *proxy EINA_UNUSED, void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + if (error) + { + printf("ERROR claim_device: %s\n", error->error); + printf("MESSAGE claim_device: %s\n", error->message); + + Evas_Object *notify, *bx, *bxv, *o; + + notify = elm_notify_add(win); + + bx = elm_box_add(notify); + + o = elm_label_add(bx); + elm_object_text_set(o, "Could not claim device<br>Please cancel all other fprint sessions<br>and press retry<br>"); + evas_object_show(o); + elm_box_pack_end(bx, o); + + bxv = elm_box_add(notify); + o = elm_button_add(bxv); + elm_object_text_set(o, "retry"); + evas_object_smart_callback_add(o, "clicked", retry_claim_device, notify); + evas_object_show(o); + elm_box_pack_end(bxv, o); + + evas_object_show(bxv); + + elm_box_pack_end(bx, bxv); + + evas_object_show(bx); + elm_object_content_set(notify, bx); + evas_object_show(notify); + } +} + +static void +_enroll_stopp_cb(Eldbus_Proxy *proxy EINA_UNUSED, void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + if (error) + { + printf("MESSAGE _enroll_stopp_cb: %s\n", error->message); + printf("ERROR _enroll_stopp_cb: %s\n", error->error); + } +} + +static void +_verify_stopp_cb(Eldbus_Proxy *proxy EINA_UNUSED, void *data EINA_UNUSED, Eldbus_Pending *pending EINA_UNUSED, Eldbus_Error_Info *error) +{ + if (error) + { + printf("MESSAGE _verify_stopp_cb: %s\n", error->message); + printf("ERROR _verify_stopp_cb: %s\n", error->error); + } +} + +static void +_restart_verify(void) +{ + fprint_device_verify_start_call(new_proxy1, _verify_start_cb, NULL, currentfinger); +} + +static void +_verify_status(void *data EINA_UNUSED, const Eldbus_Message *msg) +{ + char buf[PATH_MAX]; + const char *status; + + printf("C-FINGER VERFIY STATUS: %s\n", currentfinger); + + EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL)); + + if (!eldbus_message_arguments_get(msg, "s", &status)) + { + fprintf(stderr, "Error: could not get entry contents\n"); + return; + } + + if (!strcmp(status, "verify-match")) + { + snprintf(buf, sizeof(buf), "<color=green>%s</color>", status); + elm_object_text_set(lb_status, buf);//FIXME lb_status ist nicht mehr vorhanden wenn über block,clicked das popup gelöscht worden ist. + + edje_object_signal_emit(ly_popup, "success", "success"); + + const char *layout; + elm_layout_file_get(ly_popup, NULL, &layout); + + fprint_device_verify_stop_call(new_proxy1, _verify_stopp_cb, NULL); + + _restart_verify(); + } + else if (!strcmp(status, "verify-retry-scan")) + { + snprintf(buf, sizeof(buf), "<color=white>%s</color>", status); + elm_object_text_set(lb_status, buf); + } + else if (!strcmp(status, "verify-swipe-too-short")) + { + snprintf(buf, sizeof(buf), "<color=white>%s</color>", status); + elm_object_text_set(lb_status, buf); + } + else if (!strcmp(status, "verify-finger-not-centered")) + { + snprintf(buf, sizeof(buf), "<color=white>%s</color>", status); + elm_object_text_set(lb_status, buf); + } + else if (!strcmp(status, "verify-remove-and-retry")) + { + snprintf(buf, sizeof(buf), "<color=white>%s</color>", status); + elm_object_text_set(lb_status, buf); + } + else if (!strcmp(status, "verify-disconnected")) + { + snprintf(buf, sizeof(buf), "<color=red>%s</color>", status); + elm_object_text_set(lb_status, buf); + + edje_object_signal_emit(ly_popup, "failed", "failed");// FIXME ly_popup ist nicht mehr vorhanden wenn über block,clicked das popup gelöscht worden ist. + + fprint_device_verify_stop_call(new_proxy1, _verify_stopp_cb, NULL); + _restart_verify(); + } + else if (!strcmp(status, "verify-no-match")) + { + snprintf(buf, sizeof(buf), "<color=red>%s</color><br>retry", status); + elm_object_text_set(lb_status, buf); + + edje_object_signal_emit(ly_popup, "failed", "failed"); + + fprint_device_verify_stop_call(new_proxy1, _verify_stopp_cb, NULL); + _restart_verify(); + } + else + { + elm_object_text_set(lb_status, "<color=red>unknown error</color>"); + + edje_object_signal_emit(ly_popup, "failed", "failed"); + + fprint_device_verify_stop_call(new_proxy1, _verify_stopp_cb, NULL); + } +} + +static void +_enroll_status(void *data EINA_UNUSED, const Eldbus_Message *msg) +{ + //TODO: Theme an die Anzahl der verlangten enrolls anpassen. Theme = 5, + + const char *status; + char buf[PATH_MAX]; + char buf1[PATH_MAX]; + EINA_SAFETY_ON_TRUE_RETURN(eldbus_message_error_get(msg, NULL, NULL)); + + if (!eldbus_message_arguments_get(msg, "s", &status)) + { + fprintf(stderr, "Error: could not get entry contents\n"); + return; + } + + snprintf(buf1, sizeof(buf1), "%i", step); + + if (!strcmp(status, "enroll-stage-passed")) + { + snprintf(buf, sizeof(buf), "<color=green>Enroll %i of %i<br>%s</color>", step, enroll_num, status); + elm_object_text_set(lb_status, buf); //FIXME lb_status ist nicht mehr vorhanden wenn über block,clicked das popup gelöscht worden ist. + + enroll_count = enroll_count + enroll_count_value; + + if (enroll_count <= 4) + edje_object_signal_emit(ly_popup, "success", "1"); + else if (enroll_count >= 4 && (enroll_count <= 6)) + edje_object_signal_emit(ly_popup, "success", "2"); + else if (enroll_count >= 6 && (enroll_count <= 8)) + edje_object_signal_emit(ly_popup, "success", "3"); + else if (enroll_count >= 8 && (enroll_count <= 10)) + edje_object_signal_emit(ly_popup, "success", "4"); + else if (enroll_count >= 10) + edje_object_signal_emit(ly_popup, "success", "5"); + + const char *layout; + elm_layout_file_get(ly_popup, NULL, &layout); + printf("LAYOUT %s\n", layout); + + step++; + } + else if (!strcmp(status, "enroll-completed")) + { + snprintf(buf, sizeof(buf), "<color=green>Enroll %i of %i<br>%s</color>", step, enroll_num, status); + elm_object_text_set(lb_status, buf); + + edje_object_signal_emit(ly_popup, "success", "5"); + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, currentuser); + enroll_count = 1; + step = 1; + } + else if (!strcmp(status, "enroll-swipe-too-short") || !strcmp(status, "enroll-retry-scan") || !strcmp(status, "enroll-finger-not-centered") || !strcmp(status, "enroll-remove-and-retry") || !strcmp(status, "enroll-remove-and-retry")) + { + snprintf(buf, sizeof(buf), "<color=red>Enroll %i of %i<br>%s</color>", step, enroll_num, status); + elm_object_text_set(lb_status, buf); + + if (enroll_count <= 4) + edje_object_signal_emit(ly_popup, "failed", "1"); + else if (enroll_count >= 4 && (enroll_count <= 6)) + edje_object_signal_emit(ly_popup, "failed", "2"); + else if (enroll_count >= 6 && (enroll_count <= 8)) + edje_object_signal_emit(ly_popup, "failed", "3"); + else if (enroll_count >= 8 && (enroll_count <= 10)) + edje_object_signal_emit(ly_popup, "failed", "4"); + else if (enroll_count >= 10) + edje_object_signal_emit(ly_popup, "failed", "5"); + } + else if (!strcmp(status, "enroll-failed")) + { + elm_object_text_set(lb_status, "<color=red>enroll failed</color>"); + + edje_object_signal_emit(ly_popup, "failed", buf1); // FIXME ly_popup ist nicht mehr vorhanden wenn über block,clicked das popup gelöscht worden ist. + step = 1; + + fprint_device_enroll_stop_call(new_proxy1, _enroll_stopp_cb, NULL); + } + else if (!strcmp(status, "enroll-disconnected")) + { + elm_object_text_set(lb_status, "<color=red>enroll disconnected</color>"); + + edje_object_signal_emit(ly_popup, "enrolled__failed", "enrolled__failed"); + enroll_count = 1; + step = 1; + + fprint_device_enroll_stop_call(new_proxy1, _enroll_stopp_cb, NULL); + } + else if (!strcmp(status, "enroll-data-full")) + { + elm_object_text_set(lb_status, "<color=red>enroll.data full<br> No further prints can be enrolled on this device</color>"); + + edje_object_signal_emit(ly_popup, "enrolled__failed", "enrolled__failed"); + step = 1; + + fprint_device_enroll_stop_call(new_proxy1, _enroll_stopp_cb, NULL); + } + else + { + elm_object_text_set(lb_status, "<color=red>unknown error</color>"); + + edje_object_signal_emit(ly_popup, "enrolled__failed", "enrolled__failed"); + enroll_count = 1; + step = 1; + fprint_device_enroll_stop_call(new_proxy1, _enroll_stopp_cb, NULL); + } +} + +int +e_auth_shutdown(void) +{ + if (conn) eldbus_connection_unref(conn); + conn = NULL; + return 1; +} + +EAPI_MAIN int +elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) +{ + Evas_Object *box, *lb, *lb1, *lb2, *h_box, *panel, *hv, *p_box, *sep; + char buf[PATH_MAX]; + char buf1[PATH_MAX]; + + eina_value_array_setup(&array, EINA_VALUE_TYPE_STRING, 1); + + elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR); + elm_app_compile_lib_dir_set(PACKAGE_LIB_DIR); + elm_app_compile_data_dir_set(PACKAGE_DATA_DIR); + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + + eldbus_init(); + + conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM); + if (!conn) + { + fprintf(stderr, "Error: could not get system bus\n"); + return EXIT_FAILURE; + } + + currentuser = getenv("USER"); + currentfinger = ""; + ly_popup = NULL; + lb_status = NULL; + + new_proxy = fprint_manager_proxy_get(conn, "net.reactivated.Fprint", "/net/reactivated/Fprint/Manager"); + + p1 = fprint_manager_get_default_device_call(new_proxy, get_default_device, NULL); + default_device = "/net/reactivated/Fprint/Device/0"; //FIXME wenn ich default_device über die funkion hole ist die variable nicht gefüllt für fprint_device_proxy_get //FIXME + printf("DEFAULT DEVICE %s\n\n", default_device); + + new_proxy1 = fprint_device_proxy_get(conn, "net.reactivated.Fprint", default_device); + + fprint_device_claim_call(new_proxy1, claim_device, NULL, ""); + + eldbus_signal_handler_add(conn, "net.reactivated.Fprint", default_device, "net.reactivated.Fprint.Device", "EnrollStatus", _enroll_status, NULL); + eldbus_signal_handler_add(conn, "net.reactivated.Fprint", default_device, "net.reactivated.Fprint.Device", "VerifyStatus", _verify_status, NULL); + +// p = fprint_manager_get_devices_call(new_proxy, get_devices, NULL); + + fprint_device_list_enrolled_fingers_call(new_proxy1, enrolled_fingers_cb, NULL, ""); + + fprint_device_num_enroll_stages_propget(new_proxy1, _enroll_prop_get, NULL); //NUM enroll states needed + printf("NUM enroll states: %i\n", enroll_num); + + // set app informations + elm_app_info_set(elm_main, "enlightenment", "COPYING"); + + win = elm_win_util_standard_add("main", "Fingerprint Password Settings"); + elm_win_title_set(win, "Fingerprint Password Settings"); + elm_win_autodel_set(win, EINA_TRUE); + + box = elm_box_add(win); + evas_object_show(box); + + h_box = elm_box_add(win); + elm_box_homogeneous_set(h_box, EINA_TRUE); + elm_box_horizontal_set(h_box, EINA_TRUE); + + lb = elm_label_add(win); + elm_object_text_set(lb, "Choose finger and click on fingerprint to select action"); + evas_object_show(lb); + elm_box_pack_end(box, lb); + + ly = elm_layout_add(h_box); + snprintf(buf, sizeof(buf), "%s/themes/enlightenment_fprint.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly, buf, "right_hand"); + evas_object_show(ly); + + _update_theme(); + + elm_box_pack_end(h_box, ly); + + evas_object_show(h_box); + + elm_box_pack_end(box, h_box); + + h_box = elm_box_add(win); + elm_box_homogeneous_set(h_box, EINA_TRUE); + elm_box_horizontal_set(h_box, EINA_TRUE); + evas_object_size_hint_align_set( h_box, EVAS_HINT_FILL, EVAS_HINT_FILL); + + hv = elm_hoversel_add(h_box); + elm_object_text_set(hv, "One hand"); + elm_hoversel_auto_update_set(hv, EINA_TRUE); + elm_hoversel_hover_parent_set(hv, win); + elm_hoversel_item_add(hv, "One hand", NULL, ELM_ICON_NONE, _select_mode, "right_hand"); + elm_hoversel_item_add(hv, "Both hands", NULL, ELM_ICON_NONE, _select_mode, "hands"); + elm_hoversel_item_add(hv, "One finger", NULL, ELM_ICON_NONE, _select_mode, "finger"); + evas_object_show(hv); + elm_box_pack_end(h_box, hv); + + evas_object_show(h_box); + + elm_box_pack_end(box, h_box); + + panel = elm_panel_add(box); + elm_panel_orient_set(panel, ELM_PANEL_ORIENT_BOTTOM); + evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, 0); + evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(panel); + + p_box = elm_box_add(panel); + elm_box_horizontal_set(p_box, EINA_TRUE); + evas_object_size_hint_align_set(p_box, EVAS_HINT_FILL, EVAS_HINT_FILL); + + lb = elm_label_add(panel); + fprint_device_name_propget(new_proxy1, get_device_proberties, lb); // DEVICE NAME + evas_object_show(lb); + elm_box_pack_end(p_box, lb); + + sep = elm_separator_add(panel); + elm_separator_horizontal_set(sep, EINA_FALSE); + evas_object_show(sep); + elm_box_pack_end(p_box, sep); + + lb1 = elm_label_add(panel); + fprint_device_scan_type_propget(new_proxy1, get_device_type, lb1); // DEVICE TYPE + evas_object_show(lb1); + elm_box_pack_end(p_box, lb1); + + sep = elm_separator_add(panel); + elm_separator_horizontal_set(sep, EINA_FALSE); + evas_object_show(sep); + elm_box_pack_end(p_box, sep); + + snprintf(buf1, sizeof(buf1), "User: <hilight>%s</>", currentuser); + + lb2 = elm_label_add(panel); + elm_object_text_set(lb2, buf1); + evas_object_show(lb2); + elm_box_pack_end(p_box, lb2); + + elm_object_content_set(panel, p_box); + + elm_box_pack_end(box, panel); + + elm_win_resize_object_add(win, box); + evas_object_show(win); + + elm_run(); + + if (conn) eldbus_connection_unref(conn); + conn = NULL; + + return 0; +} +ELM_MAIN() diff --git a/src/bin/tools/fprint/src/manager.xml b/src/bin/tools/fprint/src/manager.xml new file mode 100644 index 0000000000..e51ced925c --- /dev/null +++ b/src/bin/tools/fprint/src/manager.xml @@ -0,0 +1,47 @@ +<!DOCTYPE node PUBLIC +"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" [ +<!ENTITY ERROR_NO_SUCH_DEVICE "net.reactivated.Fprint.Error.NoSuchDevice"> +]> +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + <interface name="net.reactivated.Fprint.Manager"> + + <!-- ************************************************************ --> + + <method name="GetDevices"> + <arg type="ao" name="devices" direction="out"> + <doc:doc><doc:summary>An array of object paths for devices.</doc:summary></doc:doc> + </arg> + + <doc:doc> + <doc:description> + <doc:para> + Enumerate all the fingerprint readers attached to the system. If there are + no devices available, an empty array is returned. + </doc:para> + </doc:description> + </doc:doc> + </method> + + <!-- ************************************************************ --> + + <method name="GetDefaultDevice"> + <arg type="o" name="device" direction="out"> + <doc:doc><doc:summary>The object path for the default device.</doc:summary></doc:doc> + </arg> + + <doc:doc> + <doc:description> + <doc:para> + Returns the default fingerprint reader device. + </doc:para> + </doc:description> + + <doc:errors> + <doc:error name="&ERROR_NO_SUCH_DEVICE;">if the device does not exist</doc:error> + </doc:errors> + </doc:doc> + </method> + + </interface> +</node> diff --git a/src/bin/tools/fprint/src/meson.build b/src/bin/tools/fprint/src/meson.build new file mode 100644 index 0000000000..b80de92312 --- /dev/null +++ b/src/bin/tools/fprint/src/meson.build @@ -0,0 +1,27 @@ +inc = include_directories('../../../../..') +deps = [ + dep_elementary +] + +xml_codegen_result = [] + +foreach file : ['device', 'manager'] + xml_codegen_result += custom_target('dbus_codegen_'+file, + input: file+'.xml', + output: ['eldbus_fprint_' + file + '.h', 'eldbus_fprint_' + file + '.c'], + command: [eldbus_codegen, '-O', meson.current_build_dir(), '@INPUT@'], + ) +endforeach + + +src = [ + 'enlightenment_fprint.c', +] + +executable('enlightenment_fprint', + src + xml_codegen_result, + include_directories: inc, + dependencies : deps, + gui_app : true, + install_dir : join_paths(dir_bin), + install : true) diff --git a/src/bin/tools/meson.build b/src/bin/tools/meson.build index 767cc22749..041e8c4eb0 100644 --- a/src/bin/tools/meson.build +++ b/src/bin/tools/meson.build @@ -3,3 +3,4 @@ subdir('filemanager') subdir('open') subdir('askpass') subdir('remote') +subdir('fprint') |