Commit | Line | Data |
---|---|---|
f04d8b1c NR |
1 | package be.nikiroo.jvcard.tui.panes; |
2 | ||
3 | import java.awt.Image; | |
4 | import java.util.Base64; | |
25232463 | 5 | import java.util.LinkedList; |
f04d8b1c NR |
6 | import java.util.List; |
7 | ||
8 | import javax.swing.ImageIcon; | |
9 | ||
10 | import be.nikiroo.jvcard.Contact; | |
11 | import be.nikiroo.jvcard.Data; | |
12 | import be.nikiroo.jvcard.TypeInfo; | |
25232463 NR |
13 | import be.nikiroo.jvcard.i18n.Trans; |
14 | import be.nikiroo.jvcard.tui.ImageTextControl; | |
f04d8b1c NR |
15 | import be.nikiroo.jvcard.tui.KeyAction; |
16 | import be.nikiroo.jvcard.tui.KeyAction.DataType; | |
25232463 | 17 | import be.nikiroo.jvcard.tui.KeyAction.Mode; |
f04d8b1c NR |
18 | |
19 | import com.googlecode.lanterna.TerminalSize; | |
20 | import com.googlecode.lanterna.gui2.BorderLayout; | |
21 | import com.googlecode.lanterna.gui2.Panel; | |
25232463 | 22 | import com.googlecode.lanterna.input.KeyType; |
f04d8b1c NR |
23 | |
24 | public class ContactDetails extends MainContent { | |
25 | private Contact contact; | |
25232463 | 26 | private ImageTextControl txt; |
f04d8b1c NR |
27 | |
28 | public ContactDetails(Contact contact) { | |
29 | this.contact = contact; | |
30 | ||
31 | BorderLayout blayout = new BorderLayout(); | |
32 | setLayoutManager(blayout); | |
33 | ||
34 | Panel top = new Panel(); | |
35 | if (contact != null) { | |
36 | Data photo = contact.getPreferredData("PHOTO"); | |
37 | if (photo != null) { | |
38 | TypeInfo encoding = null; | |
39 | TypeInfo type = null; | |
40 | for (TypeInfo info : photo.getTypes()) { | |
41 | if (info.getName() != null) { | |
42 | if (info.getName().equalsIgnoreCase("ENCODING")) | |
43 | encoding = info; | |
44 | if (info.getName().equalsIgnoreCase("TYPE")) | |
45 | type = info; | |
46 | } | |
47 | } | |
48 | ||
49 | if (encoding != null && encoding.getValue() != null | |
50 | && encoding.getValue().equalsIgnoreCase("b")) { | |
51 | ||
52 | Image img = new ImageIcon(Base64.getDecoder().decode( | |
53 | photo.getValue())).getImage(); | |
54 | ||
55 | TerminalSize size = new TerminalSize(40, 20); | |
25232463 | 56 | size = new TerminalSize(100, 50); |
f04d8b1c | 57 | |
25232463 NR |
58 | txt = new ImageTextControl(img, size); |
59 | top.addComponent(txt); | |
f04d8b1c NR |
60 | } |
61 | } | |
62 | } | |
63 | ||
64 | addComponent(top, BorderLayout.Location.TOP); | |
65 | } | |
25232463 NR |
66 | |
67 | @Override | |
68 | public DataType getDataType() { | |
69 | return DataType.DATA; | |
70 | } | |
71 | ||
72 | @Override | |
73 | public List<KeyAction> getKeyBindings() { | |
74 | List<KeyAction> actions = new LinkedList<KeyAction>(); | |
75 | ||
76 | // TODO | |
77 | actions.add(new KeyAction(Mode.NONE, KeyType.Tab, | |
78 | Trans.StringId.KEY_ACTION_SWITCH_FORMAT) { | |
79 | @Override | |
80 | public boolean onAction() { | |
81 | if (txt != null) { | |
82 | txt.switchMode(); | |
83 | } | |
84 | ||
85 | return false; | |
86 | } | |
87 | }); | |
88 | actions.add(new KeyAction(Mode.NONE, 'i', | |
89 | Trans.StringId.DUMMY) { | |
90 | @Override | |
91 | public boolean onAction() { | |
92 | if (txt != null) { | |
93 | txt.invertColor(); | |
94 | } | |
95 | ||
96 | return false; | |
97 | } | |
98 | }); | |
99 | ||
100 | return actions; | |
101 | } | |
f04d8b1c | 102 | } |