diff options
| author | william341 <[email protected]> | 2017-05-28 12:37:00 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-28 12:37:00 -0700 |
| commit | 771c20cfb3a703e0f1550fdcf9eb07b78298c944 (patch) | |
| tree | 59cb532e15ebff313fdba2be264d78ec0033f407 /ShiftOS.WinForms/Applications/AddressBook.cs | |
| parent | 496b0cbf8659c99203f48210fd39c572400ae623 (diff) | |
| parent | c7ba7d733c756d196f98dd4533289a1ef4db715f (diff) | |
| download | shiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.tar.gz shiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.tar.bz2 shiftos_thereturn-771c20cfb3a703e0f1550fdcf9eb07b78298c944.zip | |
Merge pull request #1 from shiftos-game/master
welp, no longer a dev.
Diffstat (limited to 'ShiftOS.WinForms/Applications/AddressBook.cs')
| -rw-r--r-- | ShiftOS.WinForms/Applications/AddressBook.cs | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/ShiftOS.WinForms/Applications/AddressBook.cs b/ShiftOS.WinForms/Applications/AddressBook.cs new file mode 100644 index 0000000..9a4ce51 --- /dev/null +++ b/ShiftOS.WinForms/Applications/AddressBook.cs @@ -0,0 +1,179 @@ +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() + { + removeToolStripMenuItem.Visible = false; + if (!DirectoryExists(data_dir)) + CreateDirectory(data_dir); + tvcontacts.Nodes.RemoveByKey("userdefined"); + var userDefined = new TreeNode(); + userDefined.Name = "userdefined"; + userDefined.Text = "User-defined"; + tvcontacts.Click += (o, a) => + { + if (tvcontacts.SelectedNode == userDefined) + { + removeToolStripMenuItem.Visible = false; + } + }; + 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); + tvcontacts.Click += (o, a) => + { + if(tvcontacts.SelectedNode == node) + { + lbtitle.Text = contact.Name; + txtbody.Text = $@"Username: {contact.UserName} +System Name: {contact.SystemName} + +Description: +{contact.Description}"; + removeToolStripMenuItem.Visible = true; + SelectedContact = contact; + } + }; + } + catch { } + } + tvcontacts.Nodes.Add(userDefined); + userDefined.Expand(); + } + + public Contact SelectedContact = null; + + 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."); + } + }); + } + + private void AddressBook_Load(object sender, EventArgs e) + { + + } + + private void removeToolStripMenuItem_Click(object sender, EventArgs e) + { + if(SelectedContact != null) + { + string file = data_dir + "/" + SelectedContact.Name; + if (FileExists(file)) + { + Infobox.PromptYesNo("Remove contact", $"Are you sure you want to remove {SelectedContact.Name} from your Address Book?", (result) => + { + if (result == true) + { + Delete(file); + OnLoad(); + } + }); + } + } + } + } + + 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 + } +} |
