Merge pull request #256 from JeffreyZhang105/master
Added list of servers in QRCode generate window to select.
This commit is contained in:
@@ -228,6 +228,11 @@ namespace Shadowsocks.Controller
|
||||
public string GetQRCodeForCurrentServer()
|
||||
{
|
||||
Server server = GetCurrentServer();
|
||||
return GetQRCode(server);
|
||||
}
|
||||
|
||||
public static string GetQRCode(Server server)
|
||||
{
|
||||
string parts = server.method + ":" + server.password + "@" + server.server + ":" + server.server_port;
|
||||
string base64 = System.Convert.ToBase64String(Encoding.UTF8.GetBytes(parts));
|
||||
return "ss://" + base64;
|
||||
|
||||
+17
-1
@@ -29,6 +29,7 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -42,6 +43,19 @@
|
||||
this.pictureBox1.TabIndex = 1;
|
||||
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
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
@@ -49,7 +63,8 @@
|
||||
this.AutoSize = true;
|
||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
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.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
@@ -67,5 +82,6 @@
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
}
|
||||
}
|
||||
@@ -8,8 +8,10 @@ using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Shadowsocks.Model;
|
||||
|
||||
namespace Shadowsocks.View
|
||||
{
|
||||
@@ -30,8 +32,8 @@ namespace Shadowsocks.View
|
||||
string qrText = ssconfig;
|
||||
QRCode code = ZXing.QrCode.Internal.Encoder.encode(qrText, ErrorCorrectionLevel.M);
|
||||
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))
|
||||
{
|
||||
g.Clear(Color.White);
|
||||
@@ -43,7 +45,7 @@ namespace Shadowsocks.View
|
||||
{
|
||||
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)
|
||||
{
|
||||
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>
|
||||
</resheader>
|
||||
<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 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>
|
||||
</root>
|
||||
Reference in New Issue
Block a user