aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Applications/AddressBook.cs
diff options
context:
space:
mode:
authorwilliam341 <[email protected]>2017-05-28 12:37:00 -0700
committerGitHub <[email protected]>2017-05-28 12:37:00 -0700
commit771c20cfb3a703e0f1550fdcf9eb07b78298c944 (patch)
tree59cb532e15ebff313fdba2be264d78ec0033f407 /ShiftOS.WinForms/Applications/AddressBook.cs
parent496b0cbf8659c99203f48210fd39c572400ae623 (diff)
parentc7ba7d733c756d196f98dd4533289a1ef4db715f (diff)
downloadshiftos_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.cs179
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
+ }
+}