Added list of servers in QRCode generate window to select.tags/2.5.3
@@ -228,6 +228,11 @@ namespace Shadowsocks.Controller | |||||
public string GetQRCodeForCurrentServer() | public string GetQRCodeForCurrentServer() | ||||
{ | { | ||||
Server server = GetCurrentServer(); | Server server = GetCurrentServer(); | ||||
return GetQRCode(server); | |||||
} | |||||
public static string GetQRCode(Server server) | |||||
{ | |||||
string parts = server.method + ":" + server.password + "@" + server.server + ":" + server.server_port; | string parts = server.method + ":" + server.password + "@" + server.server + ":" + server.server_port; | ||||
string base64 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(parts)); | string base64 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(parts)); | ||||
return "ss://" + base64; | return "ss://" + base64; | ||||
@@ -29,6 +29,7 @@ | |||||
private void InitializeComponent() | private void InitializeComponent() | ||||
{ | { | ||||
this.pictureBox1 = new System.Windows.Forms.PictureBox(); | this.pictureBox1 = new System.Windows.Forms.PictureBox(); | ||||
this.listBox1 = new System.Windows.Forms.ListBox(); | |||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); | ||||
this.SuspendLayout(); | this.SuspendLayout(); | ||||
// | // | ||||
@@ -42,6 +43,19 @@ | |||||
this.pictureBox1.TabIndex = 1; | this.pictureBox1.TabIndex = 1; | ||||
this.pictureBox1.TabStop = false; | this.pictureBox1.TabStop = false; | ||||
// | // | ||||
// listBox1 | |||||
// | |||||
this.listBox1.DisplayMember = "Value"; | |||||
this.listBox1.FormattingEnabled = true; | |||||
this.listBox1.ItemHeight = 12; | |||||
this.listBox1.Location = new System.Drawing.Point(224, 10); | |||||
this.listBox1.Name = "listBox1"; | |||||
this.listBox1.ScrollAlwaysVisible = true; | |||||
this.listBox1.Size = new System.Drawing.Size(227, 208); | |||||
this.listBox1.TabIndex = 2; | |||||
this.listBox1.ValueMember = "Key"; | |||||
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); | |||||
// | |||||
// QRCodeForm | // QRCodeForm | ||||
// | // | ||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); | ||||
@@ -49,7 +63,8 @@ | |||||
this.AutoSize = true; | this.AutoSize = true; | ||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; | ||||
this.BackColor = System.Drawing.Color.White; | this.BackColor = System.Drawing.Color.White; | ||||
this.ClientSize = new System.Drawing.Size(338, 274); | |||||
this.ClientSize = new System.Drawing.Size(457, 228); | |||||
this.Controls.Add(this.listBox1); | |||||
this.Controls.Add(this.pictureBox1); | this.Controls.Add(this.pictureBox1); | ||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; | ||||
this.MaximizeBox = false; | this.MaximizeBox = false; | ||||
@@ -67,5 +82,6 @@ | |||||
#endregion | #endregion | ||||
private System.Windows.Forms.PictureBox pictureBox1; | private System.Windows.Forms.PictureBox pictureBox1; | ||||
private System.Windows.Forms.ListBox listBox1; | |||||
} | } | ||||
} | } |
@@ -8,8 +8,10 @@ using System.Data; | |||||
using System.Drawing; | using System.Drawing; | ||||
using System.IO; | using System.IO; | ||||
using System.IO.Compression; | using System.IO.Compression; | ||||
using System.Linq; | |||||
using System.Text; | using System.Text; | ||||
using System.Windows.Forms; | using System.Windows.Forms; | ||||
using Shadowsocks.Model; | |||||
namespace Shadowsocks.View | namespace Shadowsocks.View | ||||
{ | { | ||||
@@ -30,8 +32,8 @@ namespace Shadowsocks.View | |||||
string qrText = ssconfig; | string qrText = ssconfig; | ||||
QRCode code = ZXing.QrCode.Internal.Encoder.encode(qrText, ErrorCorrectionLevel.M); | QRCode code = ZXing.QrCode.Internal.Encoder.encode(qrText, ErrorCorrectionLevel.M); | ||||
ByteMatrix m = code.Matrix; | ByteMatrix m = code.Matrix; | ||||
int blockSize = Math.Max(pictureBox1.Height / m.Height, 1); | |||||
Bitmap drawArea = new Bitmap((m.Width * blockSize), (m.Height * blockSize)); | |||||
int blockSize = Math.Max(pictureBox1.Height/m.Height, 1); | |||||
Bitmap drawArea = new Bitmap((m.Width*blockSize), (m.Height*blockSize)); | |||||
using (Graphics g = Graphics.FromImage(drawArea)) | using (Graphics g = Graphics.FromImage(drawArea)) | ||||
{ | { | ||||
g.Clear(Color.White); | g.Clear(Color.White); | ||||
@@ -43,7 +45,7 @@ namespace Shadowsocks.View | |||||
{ | { | ||||
if (m[row, col] != 0) | if (m[row, col] != 0) | ||||
{ | { | ||||
g.FillRectangle(b, blockSize * row, blockSize * col, blockSize, blockSize); | |||||
g.FillRectangle(b, blockSize*row, blockSize*col, blockSize, blockSize); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -54,7 +56,20 @@ namespace Shadowsocks.View | |||||
private void QRCodeForm_Load(object sender, EventArgs e) | private void QRCodeForm_Load(object sender, EventArgs e) | ||||
{ | { | ||||
GenQR(code); | |||||
var servers = Configuration.Load(); | |||||
var serverDatas = servers.configs.Select( | |||||
server => | |||||
new KeyValuePair<string, string>(ShadowsocksController.GetQRCode(server), server.FriendlyName()) | |||||
).ToList(); | |||||
listBox1.DataSource = serverDatas; | |||||
var selectIndex = serverDatas.FindIndex(serverData => serverData.Key.StartsWith(code)); | |||||
if (selectIndex >= 0) listBox1.SetSelected(selectIndex, true); | |||||
} | |||||
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) | |||||
{ | |||||
GenQR((sender as ListBox)?.SelectedValue.ToString()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -112,9 +112,9 @@ | |||||
<value>2.0</value> | <value>2.0</value> | ||||
</resheader> | </resheader> | ||||
<resheader name="reader"> | <resheader name="reader"> | ||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | </resheader> | ||||
<resheader name="writer"> | <resheader name="writer"> | ||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | </resheader> | ||||
</root> | </root> |