コード例 #1
0
        private void OkDialogButton_Click(object sender, EventArgs e)
        {
            JsonObject request   = Requests.CreateBasicObject(ProtocolConstants.METHOD_TORRENTSET);
            JsonObject arguments = Requests.GetArgObject(request);

            arguments.Put(ProtocolConstants.KEY_IDS, Toolbox.ListViewSelectionToIdArray(selections));
            arguments.Put(ProtocolConstants.FIELD_SPEEDLIMITUPENABLED, uploadLimitEnableField.Checked ? 1 : 0);
            arguments.Put(ProtocolConstants.FIELD_UPLOADLIMITED, uploadLimitEnableField.Checked ? 1 : 0);
            arguments.Put(ProtocolConstants.FIELD_UPLOADLIMIT, uploadLimitField.Value);
            arguments.Put(ProtocolConstants.FIELD_SPEEDLIMITUP, uploadLimitField.Value);
            arguments.Put(ProtocolConstants.FIELD_SPEEDLIMITDOWNENABLED, downloadLimitEnableField.Checked ? 1 : 0);
            arguments.Put(ProtocolConstants.FIELD_DOWNLOADLIMITED, downloadLimitEnableField.Checked ? 1 : 0);
            arguments.Put(ProtocolConstants.FIELD_DOWNLOADLIMIT, downloadLimitField.Value);
            arguments.Put(ProtocolConstants.FIELD_SPEEDLIMITDOWN, downloadLimitField.Value);
            arguments.Put(ProtocolConstants.FIELD_PEERLIMIT, peerLimitValue.Value);
            if (seedRatioLimitValue.Enabled)
            {
                arguments.Put(ProtocolConstants.FIELD_SEEDRATIOLIMIT, seedRatioLimitValue.Value);
            }
            if (seedIdleLimitValue.Enabled)
            {
                arguments.Put(ProtocolConstants.FIELD_SEEDIDLELIMIT, seedIdleLimitValue.Value);
            }
            if (honorsSessionLimits.Enabled)
            {
                arguments.Put(ProtocolConstants.FIELD_HONORSSESSIONLIMITS, honorsSessionLimits.Checked);
            }
            if (seedRatioLimitedCheckBox.Enabled)
            {
                arguments.Put(ProtocolConstants.FIELD_SEEDRATIOMODE, (int)(2 - seedRatioLimitedCheckBox.CheckState));
            }
            if (seedIdleLimitedCheckBox.Enabled)
            {
                arguments.Put(ProtocolConstants.FIELD_SEEDIDLEMODE, (int)(2 - seedIdleLimitedCheckBox.CheckState));
            }
            if (bandwidthComboBox.Enabled)
            {
                int bandwidthPriority = 0;
                if (bandwidthComboBox.SelectedIndex == 0)
                {
                    bandwidthPriority = -1;
                }
                else if (bandwidthComboBox.SelectedIndex == 2)
                {
                    bandwidthPriority = 1;
                }
                arguments.Put(ProtocolConstants.FIELD_BANDWIDTHPRIORITY, bandwidthPriority);
            }

            Torrent   firstTorrent  = (Torrent)selections[0];
            JsonArray trackerRemove = new JsonArray();

            foreach (JsonObject tracker in firstTorrent.Trackers)
            {
                int id = Toolbox.ToInt(tracker[ProtocolConstants.FIELD_ID]);
                if (!trackersList.Items.Contains(id))
                {
                    trackerRemove.Add(id);
                }
            }
            JsonArray trackerReplace = new JsonArray();

            foreach (TrackerListItem t in trackersList.Items)
            {
                if (!t.Changed)
                {
                    continue;
                }
                trackerReplace.Add(t.Id);
                trackerReplace.Add(t.Announce);
            }
            JsonArray trackerAdd = new JsonArray();

            foreach (TrackerListItem t in trackersList.Items)
            {
                if (t.Id == -1)
                {
                    trackerAdd.Add(t.Announce);
                }
            }
            if (trackerRemove.Count > 0)
            {
                arguments.Put(ProtocolConstants.FIELD_TRACKER_REMOVE, trackerRemove);
            }
            if (trackerReplace.Count > 0)
            {
                arguments.Put(ProtocolConstants.FIELD_TRACKER_REPLACE, trackerReplace);
            }
            if (trackerAdd.Count > 0)
            {
                arguments.Put(ProtocolConstants.FIELD_TRACKER_ADD, trackerAdd);
            }
            Program.Form.SetupAction(CommandFactory.RequestAsync(request));
            this.Close();
        }
コード例 #2
0
 private void StatsDialog_Load(object sender, EventArgs e)
 {
     wc = CommandFactory.RequestAsync(Requests.SessionStats());
     SessionStatsTimer.Enabled = true;
 }