1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
using static ShiftOS.Objects.ShiftFS.Utils;
using Newtonsoft.Json;
namespace ShiftOS.WinForms.Applications
{
[WinOpen("address_book")]
[AppscapeEntry("Address Book", "Add and edit your contacts within the digital society in an easy-to-use application.", 1024, 750, null, "Office")]
[DefaultTitle("Address Book")]
[Launcher("Address Book", false, null, "Office")]
public partial class AddressBook : UserControl, IShiftOSWindow
{
public AddressBook()
{
InitializeComponent();
}
string data_dir = Paths.GetPath("data") + "/address_book";
public void OnLoad()
{
if (!DirectoryExists(data_dir))
CreateDirectory(data_dir);
tvcontacts.Nodes.RemoveByKey("userdefined");
var userDefined = new TreeNode();
userDefined.Name = "userdefined";
userDefined.Text = "User-defined";
foreach(var f in GetFiles(data_dir))
{
try
{
var contact = JsonConvert.DeserializeObject<Contact>(ReadAllText(f));
var node = new TreeNode();
node.Text = contact.UserName + "@" + contact.SystemName;
node.Tag = contact;
userDefined.Nodes.Add(node);
}
catch { }
}
tvcontacts.Nodes.Add(userDefined);
userDefined.Expand();
}
public void OnSkinLoad()
{
}
public bool OnUnload()
{
return true;
}
public void OnUpgrade()
{
}
private void addContactToolStripMenuItem_Click(object sender, EventArgs e)
{
Infobox.PromptText("Add Contact", "What is the contact's name?", delegate(string name) {
if (name != "")
{
Infobox.PromptText("Add Contact", "What is the user's username?", delegate (string uname)
{
if (uname != "")
{
Infobox.PromptText("Add Contact", "What is the user's systemname?", delegate(string sysname)
{
if (sysname != "")
{
Infobox.PromptText("Add Contact", "How would you describe this user?", delegate (string desc)
{
if (desc != "")
{
Contact contact= new Contact();
contact.Name = name;
contact.UserName = uname;
contact.SystemName = sysname;
contact.Relationship = ContactRelationship.Acquaintance;
contact.IsStoryCharacter = false;
contact.Description = desc;
var contactJson = JsonConvert.SerializeObject(contact);
WriteAllText(data_dir + "/" + name, contactJson);
OnLoad(); // Reload to show changes
} else
{
Infobox.Show("Add Contact", "Description cannot be empty.");
}
});
} else
{
Infobox.Show("Add Contact", "System name cannot be empty.");
}
});
} else
{
Infobox.Show("Add Contact", "Username cannot be empty.");
}
});
} else
{
Infobox.Show("Add Contact", "Name cannot be empty.");
}
});
}
}
public class Contact
{
public string Name { get; set; }
public string UserName { get; set; }
public string SystemName { get; set; }
public ContactRelationship Relationship { get; set; }
public bool IsStoryCharacter { get; set; }
public string Description { get; set; }
}
public enum ContactRelationship
{
Acquaintance,
Friend,
Enemy
}
}
|