diff --git a/DS4Control/Control.cs b/DS4Control/Control.cs
index adb194e..1140f3c 100644
--- a/DS4Control/Control.cs
+++ b/DS4Control/Control.cs
@@ -412,7 +412,7 @@ namespace DS4Control
DS4LightBar.updateLightBar(device, ind);
//DS4LightBar.defualtLight(device, ind);
- x360Bus.Parse(MappedState[ind], processingData[ind].Report, ind);
+ x360Bus.Parse(cState, processingData[ind].Report, ind);
// We push the translated Xinput state, and simultaneously we
// pull back any possible rumble data coming from Xinput consumers.
if (x360Bus.Report(processingData[ind].Report, processingData[ind].Rumble))
@@ -490,7 +490,7 @@ namespace DS4Control
}
}
}
- if (cState.TouchButton && pState.PS)
+ if (cState.Touch1 && pState.PS)
{
if (Global.getTouchSensitivity(deviceID) > 0 && touchreleased[deviceID])
{
diff --git a/DS4Control/Mapping.cs b/DS4Control/Mapping.cs
index 3f60a55..6a2c6e7 100644
--- a/DS4Control/Mapping.cs
+++ b/DS4Control/Mapping.cs
@@ -766,19 +766,11 @@ namespace DS4Control
break;
case X360Controls.LT:
if (MappedState.L2 == 0)
- {
MappedState.L2 = getByteMapping(customButton.Key, cState);
- L2 = true;
- }
break;
case X360Controls.RT:
- if (MappedState.L2 == 0 && MappedState.R2 == 0)
- {
+ if (MappedState.R2 == 0)
MappedState.R2 = getByteMapping(customButton.Key, cState);
- //if (MappedState.R2 == 255)
- //MessageBox.Show("225");
- R2 = true;
- }
break;
case X360Controls.LeftMouse:
if (getBoolMapping(customButton.Key, cState))
diff --git a/DS4Control/ScpUtil.cs b/DS4Control/ScpUtil.cs
index 224d4ad..ef9e387 100644
--- a/DS4Control/ScpUtil.cs
+++ b/DS4Control/ScpUtil.cs
@@ -7,6 +7,7 @@ using System.Reflection;
using System.Xml;
using System.Drawing;
using DS4Library;
+using System.Security.Principal;
namespace DS4Control
{
[Flags]
@@ -84,14 +85,36 @@ namespace DS4Control
static string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
public static string appdatapath;
- public static void SaveWhere()
+ public static void SaveWhere(string path)
{
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
- appdatapath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
- else
- appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool";
+ appdatapath = path;
m_Config.m_Profile = appdatapath + "\\Profiles.xml";
}
+ ///
+ /// Check if Admin Rights are needed to write in Appliplation Directory
+ ///
+ ///
+ public static bool AdminNeeded()
+ {
+ try
+ {
+ File.WriteAllText("test.txt", "test");
+ File.Delete("test.txt");
+ return false;
+ }
+ catch (UnauthorizedAccessException)
+ {
+ return true;
+ }
+ }
+
+ public static bool IsAdministrator()
+ {
+ var identity = WindowsIdentity.GetCurrent();
+ var principal = new WindowsPrincipal(identity);
+ return principal.IsInRole(WindowsBuiltInRole.Administrator);
+ }
+
public static event EventHandler ControllerStatusChange; // called when a controller is added/removed/battery or touchpad mode changes/etc.
public static void ControllerStatusChanged(object sender)
{
@@ -450,9 +473,9 @@ namespace DS4Control
{
m_Config.LoadProfile(device, appdatapath + @"\Profiles\" + name + ".xml");
}
- public static void Save()
+ public static bool Save()
{
- m_Config.Save();
+ return m_Config.Save();
}
public static void SaveProfile(int device, string propath, System.Windows.Forms.Control[] buttons)
@@ -1219,7 +1242,7 @@ namespace DS4Control
{
Boolean Saved = true;
- try
+ //try
{
XmlNode Node;
@@ -1253,9 +1276,10 @@ namespace DS4Control
XmlNode xmlNotifications = m_Xdoc.CreateNode(XmlNodeType.Element, "Notifications", null); xmlNotifications.InnerText = notifications.ToString(); Node.AppendChild(xmlNotifications);
m_Xdoc.AppendChild(Node);
- m_Xdoc.Save(m_Profile);
+ try { m_Xdoc.Save(m_Profile); }
+ catch (UnauthorizedAccessException) { Saved = false; }
}
- catch { Saved = false; }
+ //catch { Saved = false; }
return Saved;
}
diff --git a/DS4Tool/DS4Tool.csproj b/DS4Tool/DS4Tool.csproj
index 827e7b0..83d46d2 100644
--- a/DS4Tool/DS4Tool.csproj
+++ b/DS4Tool/DS4Tool.csproj
@@ -132,6 +132,12 @@
True
Resource.es.resx
+
+ Form
+
+
+ SaveWhere.cs
+
Form
@@ -175,6 +181,9 @@
ResXFileCodeGenerator
Resource.es.Designer.cs
+
+ SaveWhere.cs
+
ScpForm.cs
diff --git a/DS4Tool/Hotkeys.Designer.cs b/DS4Tool/Hotkeys.Designer.cs
index 949526b..d57e1e8 100644
--- a/DS4Tool/Hotkeys.Designer.cs
+++ b/DS4Tool/Hotkeys.Designer.cs
@@ -377,9 +377,9 @@
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 127);
this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(108, 13);
+ this.label1.Size = new System.Drawing.Size(116, 13);
this.label1.TabIndex = 0;
- this.label1.Text = "Click Touchpad + PS";
+ this.label1.Text = "Touch Touchpad + PS";
//
// label22
//
diff --git a/DS4Tool/SaveWhere.Designer.cs b/DS4Tool/SaveWhere.Designer.cs
new file mode 100644
index 0000000..b52950e
--- /dev/null
+++ b/DS4Tool/SaveWhere.Designer.cs
@@ -0,0 +1,150 @@
+namespace ScpServer
+{
+ partial class SaveWhere
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.bnAppdataFolder = new System.Windows.Forms.Button();
+ this.bnPrgmFolder = new System.Windows.Forms.Button();
+ this.lbPickWhere = new System.Windows.Forms.Label();
+ this.lbMultiSaves = new System.Windows.Forms.Label();
+ this.cBDeleteOther = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.ForeColor = System.Drawing.SystemColors.GrayText;
+ this.label4.Location = new System.Drawing.Point(206, 83);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(177, 39);
+ this.label4.TabIndex = 9;
+ this.label4.Text = "For those who prefer a regular install\r\nSettings saved at \r\n%appdata%/ds4tool";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.ForeColor = System.Drawing.SystemColors.GrayText;
+ this.label3.Location = new System.Drawing.Point(5, 83);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(195, 39);
+ this.label3.TabIndex = 10;
+ this.label3.Text = "For those who prefer a portable program\r\nNote: this option does not\r\n work if in " +
+ "an admin folder w/o UAC";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // bnAppdataFolder
+ //
+ this.bnAppdataFolder.Location = new System.Drawing.Point(222, 57);
+ this.bnAppdataFolder.Name = "bnAppdataFolder";
+ this.bnAppdataFolder.Size = new System.Drawing.Size(140, 23);
+ this.bnAppdataFolder.TabIndex = 7;
+ this.bnAppdataFolder.Text = "Appdata";
+ this.bnAppdataFolder.UseVisualStyleBackColor = true;
+ this.bnAppdataFolder.Click += new System.EventHandler(this.bnAppdataFolder_Click);
+ //
+ // bnPrgmFolder
+ //
+ this.bnPrgmFolder.Location = new System.Drawing.Point(32, 57);
+ this.bnPrgmFolder.Name = "bnPrgmFolder";
+ this.bnPrgmFolder.Size = new System.Drawing.Size(140, 23);
+ this.bnPrgmFolder.TabIndex = 8;
+ this.bnPrgmFolder.Text = "Program Folder";
+ this.bnPrgmFolder.UseVisualStyleBackColor = true;
+ this.bnPrgmFolder.Click += new System.EventHandler(this.bnPrgmFolder_Click);
+ //
+ // lbPickWhere
+ //
+ this.lbPickWhere.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lbPickWhere.Location = new System.Drawing.Point(1, 27);
+ this.lbPickWhere.Name = "lbPickWhere";
+ this.lbPickWhere.Size = new System.Drawing.Size(386, 27);
+ this.lbPickWhere.TabIndex = 10;
+ this.lbPickWhere.Text = "Pick where you want settings and profiles to be saved";
+ this.lbPickWhere.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // lbMultiSaves
+ //
+ this.lbMultiSaves.AutoSize = true;
+ this.lbMultiSaves.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.lbMultiSaves.Location = new System.Drawing.Point(9, 8);
+ this.lbMultiSaves.Name = "lbMultiSaves";
+ this.lbMultiSaves.Size = new System.Drawing.Size(159, 13);
+ this.lbMultiSaves.TabIndex = 10;
+ this.lbMultiSaves.Text = "Multiple save locations detected\r\n";
+ this.lbMultiSaves.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.lbMultiSaves.Visible = false;
+ //
+ // cBDeleteOther
+ //
+ this.cBDeleteOther.AutoSize = true;
+ this.cBDeleteOther.Location = new System.Drawing.Point(201, 7);
+ this.cBDeleteOther.Name = "cBDeleteOther";
+ this.cBDeleteOther.Size = new System.Drawing.Size(186, 17);
+ this.cBDeleteOther.TabIndex = 11;
+ this.cBDeleteOther.Text = "Don\'t Delete the other settings yet";
+ this.cBDeleteOther.UseVisualStyleBackColor = true;
+ this.cBDeleteOther.Visible = false;
+ //
+ // SaveWhere
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.ClientSize = new System.Drawing.Size(389, 128);
+ this.Controls.Add(this.cBDeleteOther);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.lbMultiSaves);
+ this.Controls.Add(this.lbPickWhere);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.bnAppdataFolder);
+ this.Controls.Add(this.bnPrgmFolder);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SaveWhere";
+ this.Text = "DS4Windows";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SaveWhere_FormClosing);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Button bnAppdataFolder;
+ private System.Windows.Forms.Button bnPrgmFolder;
+ private System.Windows.Forms.Label lbPickWhere;
+ private System.Windows.Forms.Label lbMultiSaves;
+ private System.Windows.Forms.CheckBox cBDeleteOther;
+ }
+}
\ No newline at end of file
diff --git a/DS4Tool/SaveWhere.cs b/DS4Tool/SaveWhere.cs
new file mode 100644
index 0000000..517731b
--- /dev/null
+++ b/DS4Tool/SaveWhere.cs
@@ -0,0 +1,101 @@
+using DS4Control;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Xml;
+
+namespace ScpServer
+{
+ public partial class SaveWhere : Form
+ {
+ private bool multisaves;
+ public SaveWhere(bool multisavespots)
+ {
+ InitializeComponent();
+ Icon = Properties.Resources.DS4;
+ multisaves = multisavespots;
+ lbMultiSaves.Visible = multisaves;
+ cBDeleteOther.Visible = multisaves;
+ if (multisaves)
+ lbPickWhere.Text += ", other location files will be deleted";
+ if (Global.AdminNeeded())
+ bnPrgmFolder.Enabled = false;
+ }
+
+ private void bnPrgmFolder_Click(object sender, EventArgs e)
+ {
+ Global.SaveWhere(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName);
+ if (multisaves && !cBDeleteOther.Checked)
+ {
+ try { Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool", true); }
+ catch { }
+ }
+ else if (!multisaves)
+ Save(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + "Profiles.xml");
+ Close();
+ }
+
+ private void bnAppdataFolder_Click(object sender, EventArgs e)
+ {
+
+ if (multisaves && !cBDeleteOther.Checked)
+ try
+ {
+ Directory.Delete("Profiles", true);
+ File.Delete("Profiles.xml");
+ File.Delete("Auto Profiles.xml");
+ }
+ catch (UnauthorizedAccessException) { MessageBox.Show("Cannot Delete old settings, please manaully delete", "DS4Windows"); }
+ else if (!multisaves)
+ Save(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml");
+ Global.SaveWhere(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool");
+ Close();
+ }
+
+ public bool Save(String path)
+ {
+ Boolean Saved = true;
+ XmlDocument m_Xdoc = new XmlDocument();
+ try
+ {
+ XmlNode Node;
+
+ m_Xdoc.RemoveAll();
+
+ Node = m_Xdoc.CreateXmlDeclaration("1.0", "utf-8", String.Empty);
+ m_Xdoc.AppendChild(Node);
+
+ Node = m_Xdoc.CreateComment(String.Format(" Profile Configuration Data. {0} ", DateTime.Now));
+ m_Xdoc.AppendChild(Node);
+
+ Node = m_Xdoc.CreateWhitespace("\r\n");
+ m_Xdoc.AppendChild(Node);
+
+ Node = m_Xdoc.CreateNode(XmlNodeType.Element, "Profile", null);
+
+ m_Xdoc.AppendChild(Node);
+
+ m_Xdoc.Save(path);
+ }
+ catch { Saved = false; }
+
+ return Saved;
+ }
+
+ private void SaveWhere_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (String.IsNullOrEmpty(Global.appdatapath))
+ if (MessageBox.Show("Close DS4Windows?\nA location must be picked to continue", "DS4Windows",
+ MessageBoxButtons.YesNo) == DialogResult.No)
+ e.Cancel = true;
+ }
+ }
+}
diff --git a/DS4Tool/SaveWhere.resx b/DS4Tool/SaveWhere.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DS4Tool/SaveWhere.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/DS4Tool/ScpForm.Designer.cs b/DS4Tool/ScpForm.Designer.cs
index aee0b61..c0873b7 100644
--- a/DS4Tool/ScpForm.Designer.cs
+++ b/DS4Tool/ScpForm.Designer.cs
@@ -121,8 +121,8 @@
this.lLBUpdate = new System.Windows.Forms.LinkLabel();
this.linkUninstall = new System.Windows.Forms.LinkLabel();
this.lLSetup = new System.Windows.Forms.LinkLabel();
- this.saveProfiles = new System.Windows.Forms.SaveFileDialog();
this.lLAppDataDelete = new System.Windows.Forms.LinkLabel();
+ this.saveProfiles = new System.Windows.Forms.SaveFileDialog();
this.pnlButton.SuspendLayout();
this.cMTaskbar.SuspendLayout();
this.tabMain.SuspendLayout();
@@ -410,7 +410,7 @@
this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 23.34039F));
this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.31077F));
this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 117F));
- this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F));
+ this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F));
this.tLPControllers.Controls.Add(this.pBStatus1, 1, 1);
this.tLPControllers.Controls.Add(this.lbPad1, 0, 1);
this.tLPControllers.Controls.Add(this.lbPad2, 0, 2);
@@ -452,7 +452,7 @@
this.pBStatus1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pBStatus1.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus1.Image")));
this.pBStatus1.InitialImage = global::ScpServer.Properties.Resources.BT;
- this.pBStatus1.Location = new System.Drawing.Point(369, 19);
+ this.pBStatus1.Location = new System.Drawing.Point(373, 19);
this.pBStatus1.Name = "pBStatus1";
this.pBStatus1.Size = new System.Drawing.Size(39, 20);
this.pBStatus1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
@@ -466,9 +466,9 @@
this.lbPad1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbPad1.Location = new System.Drawing.Point(3, 22);
this.lbPad1.Name = "lbPad1";
- this.lbPad1.Size = new System.Drawing.Size(123, 15);
+ this.lbPad1.Size = new System.Drawing.Size(70, 15);
this.lbPad1.TabIndex = 44;
- this.lbPad1.Text = "Pad 1 : Disconnected";
+ this.lbPad1.Text = "Controller 1";
//
// lbPad2
//
@@ -477,14 +477,14 @@
this.lbPad2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbPad2.Location = new System.Drawing.Point(3, 51);
this.lbPad2.Name = "lbPad2";
- this.lbPad2.Size = new System.Drawing.Size(123, 15);
+ this.lbPad2.Size = new System.Drawing.Size(70, 15);
this.lbPad2.TabIndex = 44;
- this.lbPad2.Text = "Pad 2 : Disconnected";
+ this.lbPad2.Text = "Controller 2";
//
// bnEditC3
//
this.bnEditC3.Anchor = System.Windows.Forms.AnchorStyles.Left;
- this.bnEditC3.Location = new System.Drawing.Point(737, 76);
+ this.bnEditC3.Location = new System.Drawing.Point(742, 76);
this.bnEditC3.Name = "bnEditC3";
this.bnEditC3.Size = new System.Drawing.Size(40, 23);
this.bnEditC3.TabIndex = 43;
@@ -496,7 +496,7 @@
// bnEditC4
//
this.bnEditC4.Anchor = System.Windows.Forms.AnchorStyles.Left;
- this.bnEditC4.Location = new System.Drawing.Point(737, 105);
+ this.bnEditC4.Location = new System.Drawing.Point(742, 105);
this.bnEditC4.Name = "bnEditC4";
this.bnEditC4.Size = new System.Drawing.Size(40, 23);
this.bnEditC4.TabIndex = 43;
@@ -512,9 +512,9 @@
this.lbPad3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbPad3.Location = new System.Drawing.Point(3, 80);
this.lbPad3.Name = "lbPad3";
- this.lbPad3.Size = new System.Drawing.Size(123, 15);
+ this.lbPad3.Size = new System.Drawing.Size(70, 15);
this.lbPad3.TabIndex = 44;
- this.lbPad3.Text = "Pad 3 : Disconnected";
+ this.lbPad3.Text = "Controller 3";
//
// lbPad4
//
@@ -523,16 +523,16 @@
this.lbPad4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbPad4.Location = new System.Drawing.Point(3, 109);
this.lbPad4.Name = "lbPad4";
- this.lbPad4.Size = new System.Drawing.Size(123, 15);
+ this.lbPad4.Size = new System.Drawing.Size(70, 15);
this.lbPad4.TabIndex = 44;
- this.lbPad4.Text = "Pad 4 : Disconnected";
+ this.lbPad4.Text = "Controller 4";
//
// cBController1
//
this.cBController1.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cBController1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cBController1.FormattingEnabled = true;
- this.cBController1.Location = new System.Drawing.Point(620, 19);
+ this.cBController1.Location = new System.Drawing.Point(625, 19);
this.cBController1.Name = "cBController1";
this.cBController1.Size = new System.Drawing.Size(111, 21);
this.cBController1.TabIndex = 42;
@@ -542,7 +542,7 @@
// bnEditC2
//
this.bnEditC2.Anchor = System.Windows.Forms.AnchorStyles.Left;
- this.bnEditC2.Location = new System.Drawing.Point(737, 47);
+ this.bnEditC2.Location = new System.Drawing.Point(742, 47);
this.bnEditC2.Name = "bnEditC2";
this.bnEditC2.Size = new System.Drawing.Size(40, 23);
this.bnEditC2.TabIndex = 43;
@@ -556,7 +556,7 @@
this.cBController2.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cBController2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cBController2.FormattingEnabled = true;
- this.cBController2.Location = new System.Drawing.Point(620, 48);
+ this.cBController2.Location = new System.Drawing.Point(625, 48);
this.cBController2.Name = "cBController2";
this.cBController2.Size = new System.Drawing.Size(111, 21);
this.cBController2.TabIndex = 42;
@@ -568,7 +568,7 @@
this.cBController3.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cBController3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cBController3.FormattingEnabled = true;
- this.cBController3.Location = new System.Drawing.Point(620, 77);
+ this.cBController3.Location = new System.Drawing.Point(625, 77);
this.cBController3.Name = "cBController3";
this.cBController3.Size = new System.Drawing.Size(111, 21);
this.cBController3.TabIndex = 42;
@@ -578,7 +578,7 @@
// bnEditC1
//
this.bnEditC1.Anchor = System.Windows.Forms.AnchorStyles.Left;
- this.bnEditC1.Location = new System.Drawing.Point(737, 18);
+ this.bnEditC1.Location = new System.Drawing.Point(742, 18);
this.bnEditC1.Name = "bnEditC1";
this.bnEditC1.Size = new System.Drawing.Size(40, 23);
this.bnEditC1.TabIndex = 43;
@@ -592,7 +592,7 @@
this.cBController4.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cBController4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cBController4.FormattingEnabled = true;
- this.cBController4.Location = new System.Drawing.Point(620, 106);
+ this.cBController4.Location = new System.Drawing.Point(625, 106);
this.cBController4.Name = "cBController4";
this.cBController4.Size = new System.Drawing.Size(111, 21);
this.cBController4.TabIndex = 42;
@@ -604,7 +604,7 @@
this.lBSelectedProfile.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBSelectedProfile.AutoSize = true;
this.lBSelectedProfile.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBSelectedProfile.Location = new System.Drawing.Point(621, 0);
+ this.lBSelectedProfile.Location = new System.Drawing.Point(626, 0);
this.lBSelectedProfile.Name = "lBSelectedProfile";
this.lBSelectedProfile.Size = new System.Drawing.Size(109, 15);
this.lBSelectedProfile.TabIndex = 45;
@@ -626,7 +626,7 @@
this.lBStatus.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBStatus.AutoSize = true;
this.lBStatus.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBStatus.Location = new System.Drawing.Point(365, 0);
+ this.lBStatus.Location = new System.Drawing.Point(369, 0);
this.lBStatus.Name = "lBStatus";
this.lBStatus.Size = new System.Drawing.Size(47, 15);
this.lBStatus.TabIndex = 45;
@@ -637,7 +637,7 @@
this.lBBattery.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBBattery.AutoSize = true;
this.lBBattery.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBBattery.Location = new System.Drawing.Point(513, 0);
+ this.lBBattery.Location = new System.Drawing.Point(518, 0);
this.lBBattery.Name = "lBBattery";
this.lBBattery.Size = new System.Drawing.Size(51, 15);
this.lBBattery.TabIndex = 45;
@@ -648,7 +648,7 @@
this.lBBatt1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBBatt1.AutoSize = true;
this.lBBatt1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBBatt1.Location = new System.Drawing.Point(519, 22);
+ this.lBBatt1.Location = new System.Drawing.Point(524, 22);
this.lBBatt1.Name = "lBBatt1";
this.lBBatt1.Size = new System.Drawing.Size(39, 15);
this.lBBatt1.TabIndex = 44;
@@ -659,7 +659,7 @@
this.lBBatt2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBBatt2.AutoSize = true;
this.lBBatt2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBBatt2.Location = new System.Drawing.Point(519, 51);
+ this.lBBatt2.Location = new System.Drawing.Point(524, 51);
this.lBBatt2.Name = "lBBatt2";
this.lBBatt2.Size = new System.Drawing.Size(39, 15);
this.lBBatt2.TabIndex = 44;
@@ -670,7 +670,7 @@
this.lBBatt3.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBBatt3.AutoSize = true;
this.lBBatt3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBBatt3.Location = new System.Drawing.Point(519, 80);
+ this.lBBatt3.Location = new System.Drawing.Point(524, 80);
this.lBBatt3.Name = "lBBatt3";
this.lBBatt3.Size = new System.Drawing.Size(39, 15);
this.lBBatt3.TabIndex = 44;
@@ -681,7 +681,7 @@
this.lBBatt4.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lBBatt4.AutoSize = true;
this.lBBatt4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lBBatt4.Location = new System.Drawing.Point(519, 109);
+ this.lBBatt4.Location = new System.Drawing.Point(524, 109);
this.lBBatt4.Name = "lBBatt4";
this.lBBatt4.Size = new System.Drawing.Size(39, 15);
this.lBBatt4.TabIndex = 44;
@@ -692,7 +692,7 @@
this.pBStatus2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pBStatus2.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus2.Image")));
this.pBStatus2.InitialImage = global::ScpServer.Properties.Resources.BT;
- this.pBStatus2.Location = new System.Drawing.Point(369, 48);
+ this.pBStatus2.Location = new System.Drawing.Point(373, 48);
this.pBStatus2.Name = "pBStatus2";
this.pBStatus2.Size = new System.Drawing.Size(39, 20);
this.pBStatus2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
@@ -704,7 +704,7 @@
this.pBStatus3.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pBStatus3.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus3.Image")));
this.pBStatus3.InitialImage = global::ScpServer.Properties.Resources.BT;
- this.pBStatus3.Location = new System.Drawing.Point(369, 77);
+ this.pBStatus3.Location = new System.Drawing.Point(373, 77);
this.pBStatus3.Name = "pBStatus3";
this.pBStatus3.Size = new System.Drawing.Size(39, 20);
this.pBStatus3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
@@ -716,7 +716,7 @@
this.pBStatus4.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pBStatus4.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus4.Image")));
this.pBStatus4.InitialImage = global::ScpServer.Properties.Resources.BT;
- this.pBStatus4.Location = new System.Drawing.Point(369, 106);
+ this.pBStatus4.Location = new System.Drawing.Point(373, 106);
this.pBStatus4.Name = "pBStatus4";
this.pBStatus4.Size = new System.Drawing.Size(39, 20);
this.pBStatus4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
@@ -1144,10 +1144,6 @@
this.lLSetup.Text = "Controller Setup";
this.lLSetup.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLSetup_LinkClicked);
//
- // saveProfiles
- //
- this.saveProfiles.Filter = "XML Files (*.xml)|*.xml";
- //
// lLAppDataDelete
//
this.lLAppDataDelete.AutoSize = true;
@@ -1160,6 +1156,10 @@
this.lLAppDataDelete.Visible = false;
this.lLAppDataDelete.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLAppDataDelete_LinkClicked);
//
+ // saveProfiles
+ //
+ this.saveProfiles.Filter = "XML Files (*.xml)|*.xml";
+ //
// ScpForm
//
this.AllowDrop = true;
diff --git a/DS4Tool/ScpForm.cs b/DS4Tool/ScpForm.cs
index cc46607..caeaf15 100644
--- a/DS4Tool/ScpForm.cs
+++ b/DS4Tool/ScpForm.cs
@@ -17,7 +17,7 @@ namespace ScpServer
{
public partial class ScpForm : Form
{
- double version = 10.2;
+ double version = 10.3;
private DS4Control.Control rootHub;
delegate void LogDebugDelegate(DateTime Time, String Data);
@@ -84,9 +84,10 @@ namespace ScpServer
//CheckDrivers();
SystemEvents.PowerModeChanged += OnPowerChange;
tSOptions.Visible = false;
- LoadP();
+ LoadP();
ToolTip tt = new ToolTip();
- tt.SetToolTip(linkUninstall, "To fully remove DS4Windows, You can delete the profiles by the link to the other side");
+ if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml"))
+ tt.SetToolTip(linkUninstall, "If removing DS4Windows, You can delete the settings following the profile folder link");
tt.SetToolTip(lLAppDataDelete, @"Delete Appdata\DS4Tool folder as it's no longer in use");
}
@@ -124,18 +125,23 @@ namespace ScpServer
protected void Form_Load(object sender, EventArgs e)
{
SetupArrays();
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
+ if (!File.Exists("Profiles.xml") && !File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Profiles.xml"))
{
- if (!File.Exists("Profiles.xml") &&
- File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Profiles.xml"))
- File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Profiles.xml",
- "Profiles.xml", false);
- if (!File.Exists("Auto Profiles.xml") &&
- File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Auto Profiles.xml"))
- File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Auto Profiles.xml",
- "Auto Profiles.xml", false);
+ new WelcomeDialog().ShowDialog();
+ new SaveWhere(false).ShowDialog();
}
+ else if (File.Exists("Profiles.xml") && File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml"))
+ new SaveWhere(true).ShowDialog();
+ else if (File.Exists("Profiles.xml"))
+ Global.SaveWhere(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName);
+ else if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml"))
+ Global.SaveWhere(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool");
+ if (String.IsNullOrEmpty(Global.appdatapath))
+ {
+ Close();
+ return;
+ }
Graphics g = this.CreateGraphics();
try
{
@@ -153,16 +159,43 @@ namespace ScpServer
Log.GuiLog += On_Debug;
Log.TrayIconLog += ShowNotification;
// tmrUpdate.Enabled = true; TODO remove tmrUpdate and leave tick()
- Global.SaveWhere();
- if (!File.Exists(Global.appdatapath + @"\Profiles.xml"))
- {
- WelcomeDialog wd = new WelcomeDialog();
- wd.ShowDialog();
- }
+
Directory.CreateDirectory(Global.appdatapath);
Global.Load();
Global.setVersion(version);
- Global.Save();
+ if (!Global.Save()) //if can't write to file
+ if (MessageBox.Show("Cannot write at current locataion\nCopy Settings to appdata?", "DS4Windows",
+ MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
+ {
+ try
+ {
+ Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ + "\\DS4Tool");
+ File.Copy("Profiles.xml", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ + "\\DS4Tool\\Profiles.xml");
+ File.Copy("Auto Profiles.xml", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ + "\\DS4Tool\\Auto Profiles.xml");
+ Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ + "\\DS4Tool\\Profiles");
+ foreach (string s in Directory.GetFiles("Profiles"))
+ {
+ File.Copy(s, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
+ + "\\DS4Tool\\Profiles\\" + Path.GetFileName(s));
+ }
+ }
+ catch { }
+ MessageBox.Show("Copy complete, please relaunch DS4Windows and remove settings from Program Directory", "DS4Windows");
+ Global.appdatapath = null;
+ Close();
+ return;
+ }
+ else
+ {
+ MessageBox.Show("DS4Windows cannot edit settings here, This will now close", "DS4Windows");
+ Global.appdatapath = null;
+ Close();
+ return;
+ }
foreach (ToolStripMenuItem t in shortcuts)
t.DropDownItemClicked += Profile_Changed_Menu;
hideDS4CheckBox.CheckedChanged -= hideDS4CheckBox_CheckedChanged;
@@ -179,15 +212,11 @@ namespace ScpServer
RegistryKey KeyLoc = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", false);
StartWindowsCheckBox.Checked = (KeyLoc.GetValue("DS4Tool") != null);
if (startMinimizedCheckBox.Checked)
- {
this.WindowState = FormWindowState.Minimized;
- //Form_Resize(sender, e);
- }
Form_Resize(sender, e);
RefreshProfiles();
for (int i = 0; i < 4; i++)
Global.LoadProfile(i);
-
Global.ControllerStatusChange += ControllerStatusChange;
ControllerStatusChanged();
if (btnStartStop.Enabled)
@@ -383,7 +412,7 @@ namespace ScpServer
}
Process p = new Process();
p.StartInfo.FileName = "DS4Updater.exe";
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
+ if (!Global.AdminNeeded())
p.StartInfo.Verb = "runas";
p.Start();
this.Close();
@@ -1042,28 +1071,7 @@ namespace ScpServer
e.Effect = DragDropEffects.None; // Unknown data, ignore it
}
- protected void Form_Close(object sender, FormClosingEventArgs e)
- {
- if (systemShutdown)
- // Reset the variable because the user might cancel the
- // shutdown.
- {
- systemShutdown = false;
- DS4LightBar.shuttingdown = true;
- }
- if (oldsize == new System.Drawing.Size(0, 0))
- {
- Global.setFormWidth(this.Width);
- Global.setFormHeight(this.Height);
- }
- else
- {
- Global.setFormWidth(oldsize.Width);
- Global.setFormHeight(oldsize.Height);
- }
- Global.Save();
- rootHub.Stop();
- }
+
private void tBProfile_TextChanged(object sender, EventArgs e)
{
@@ -1185,7 +1193,7 @@ namespace ScpServer
}
Process p = new Process();
p.StartInfo.FileName = "DS4Updater.exe";
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
+ if (Global.AdminNeeded())
p.StartInfo.Verb = "runas";
p.Start();
Close();
@@ -1245,6 +1253,32 @@ namespace ScpServer
lLAppDataDelete.Visible = false;
}
}
+
+ protected void Form_Close(object sender, FormClosingEventArgs e)
+ {
+ if (systemShutdown)
+ // Reset the variable because the user might cancel the
+ // shutdown.
+ {
+ systemShutdown = false;
+ DS4LightBar.shuttingdown = true;
+ }
+ if (oldsize == new System.Drawing.Size(0, 0))
+ {
+ Global.setFormWidth(this.Width);
+ Global.setFormHeight(this.Height);
+ }
+ else
+ {
+ Global.setFormWidth(oldsize.Width);
+ Global.setFormHeight(oldsize.Height);
+ }
+ if (!String.IsNullOrEmpty(Global.appdatapath))
+ {
+ Global.Save();
+ rootHub.Stop();
+ }
+ }
}
public class ThemeUtil
diff --git a/DS4Tool/ScpForm.resx b/DS4Tool/ScpForm.resx
index d76d63b..e62a17a 100644
--- a/DS4Tool/ScpForm.resx
+++ b/DS4Tool/ScpForm.resx
@@ -6302,12 +6302,6 @@
449, 17
-
- 891, 17
-
-
- 568, 17
-
iVBORw0KGgoAAAANSUhEUgAAACcAAAAUCAYAAAAOTSQ2AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
diff --git a/DS4Tool/WelcomeDialog.Designer.cs b/DS4Tool/WelcomeDialog.Designer.cs
index 558efae..0d1076a 100644
--- a/DS4Tool/WelcomeDialog.Designer.cs
+++ b/DS4Tool/WelcomeDialog.Designer.cs
@@ -99,7 +99,7 @@
this.labelBluetooth2.Size = new System.Drawing.Size(312, 64);
this.labelBluetooth2.TabIndex = 3;
this.labelBluetooth2.Text = "Once flashing go to your Bluetooth Settings\r\nand Connect to \"Wireless Controller\"" +
- "\r\n\r\nOnce paired, you\'re good to go. Have fun!";
+ "\r\n\r\nAfter paired, you\'re ready. Have fun!";
this.labelBluetooth2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// linkBluetoothSettings
@@ -133,7 +133,7 @@
//
// bnFinish
//
- this.bnFinish.Location = new System.Drawing.Point(123, 388);
+ this.bnFinish.Location = new System.Drawing.Point(117, 394);
this.bnFinish.Name = "bnFinish";
this.bnFinish.Size = new System.Drawing.Size(75, 23);
this.bnFinish.TabIndex = 0;
@@ -146,7 +146,7 @@
this.AcceptButton = this.bnFinish;
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.ClientSize = new System.Drawing.Size(315, 422);
+ this.ClientSize = new System.Drawing.Size(315, 421);
this.Controls.Add(this.linkBluetoothSettings);
this.Controls.Add(this.labelBluetooth);
this.Controls.Add(this.pictureBox1);
diff --git a/DS4Tool/WelcomeDialog.cs b/DS4Tool/WelcomeDialog.cs
index e2ddd38..f38a9d6 100644
--- a/DS4Tool/WelcomeDialog.cs
+++ b/DS4Tool/WelcomeDialog.cs
@@ -24,6 +24,7 @@ namespace ScpServer
{
InitializeComponent();
this.Icon = Properties.Resources.DS4;
+
}
private void bnFinish_Click(object sender, EventArgs e)
@@ -55,7 +56,7 @@ namespace ScpServer
string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
private void wb_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
+ if (!Global.AdminNeeded())
{
bnStep1.Text = "Opening Installer";
try
@@ -96,7 +97,7 @@ namespace ScpServer
private void timer_Tick(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("ScpDriver");
- if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows"))
+ if (!Global.AdminNeeded())
{
if (processes.Length < 1)
{
diff --git a/DS4Tool/WinProgs.cs b/DS4Tool/WinProgs.cs
index 99fdf70..d1cfdf1 100644
--- a/DS4Tool/WinProgs.cs
+++ b/DS4Tool/WinProgs.cs
@@ -46,10 +46,6 @@ namespace ScpServer
Create();
LoadP();
- /*RegistryKey regKey = Registry.CurrentUser;
- regKey = regKey.OpenSubKey(@"Software\Valve\Steam");
-
- if (regKey != null)*/
if (Directory.Exists(@"C:\Program Files (x86)\Steam\steamapps\common"))
steamgamesdir = @"C:\Program Files (x86)\Steam\steamapps\common";
else if (Directory.Exists(@"C:\Program Files\Steam\steamapps\common"))