Added list of servers in QRCode generate window to select.tags/2.5.3
@@ -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; | |||
@@ -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> |