コード例 #1
0
 public FrmHubList(LiveClient client, DcProvider dcProvider)
 {
     Icon        = Resources.livedc;
     _client     = client;
     _dcProvider = dcProvider;
     InitializeComponent();
 }
コード例 #2
0
ファイル: DcStartItem.cs プロジェクト: ErtyHackward/livedc
        public DcStartItem(Magnet magnet, DcProvider provider)
        {
            Progress  = float.PositiveInfinity;
            Magnet    = magnet;
            _provider = provider;
            var existingItem = _provider.Engine.Share.SearchByTth(magnet.TTH);

            if (existingItem != null)
            {
                Closed = true;
                ShellHelper.Start(existingItem.Value.SystemPath);
                return;
            }

            if (_provider.HubManager.InitializationCompleted && !_provider.Engine.Active)
            {
                MessageBox.Show("Не удалось установить соединение ни с одним из хабов. Проверьте сетевое подключение.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Closed = true;
                return;
            }

            var item = _provider.Engine.DownloadManager.GetDownloadItem(magnet.TTH);

            if (_currentDownload != null && _currentDownload != item)
            {
                _provider.Engine.PauseDownload(_currentDownload);
            }

            if (item != null)
            {
                if (item.Priority == DownloadPriority.Pause)
                {
                    item.Priority = DownloadPriority.Normal;
                }

                _currentDownload = item;
                Closed           = true;
                ShellHelper.Start(Path.Combine(_provider.LiveClient.Drive.DriveRoot, _currentDownload.Magnet.FileName));
                return;
            }

            var cacheRoot = _provider.LiveClient.ReserveCacheSpace(magnet.Size);

            if (cacheRoot == null)
            {
                MessageBox.Show("Недостаточно свободного места на диске.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Closed = true;
                return;
            }

            _provider.LiveClient.History.AddItem(magnet);

            _currentDownload = _provider.Engine.DownloadFile(magnet, Path.Combine(cacheRoot, magnet.FileName));
            _currentDownload.LogSegmentEvents = true;

            new ThreadStart(FormThread).BeginInvoke(null, null);
        }
コード例 #3
0
        public DcHubManager(DcProvider provider, LiveClient client)
        {
            _provider = provider;
            _client   = client;

            _provider.Engine.Hubs.HubAdded       += HubsHubAdded;
            _provider.Engine.Hubs.HubRemoved     += HubsHubRemoved;
            _provider.Engine.ActiveStatusChanged += EngineActiveStatusChanged;

            if (!string.IsNullOrEmpty(Settings.Hubs))
            {
                var hubs = Settings.Hubs.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

                foreach (var hubAddress in hubs.Take(5))
                {
                    _allHubs.Add(hubAddress);
                    AddHub(hubAddress);
                }
            }
        }
コード例 #4
0
        public FrmSearch(LiveClient client, DcProvider dcProvider)
        {
            _client     = client;
            _dcProvider = dcProvider;
            InitializeComponent();

            _comparer = new SourceComparer();

            SourcesColumn.HeaderCell.SortGlyphDirection = SortOrder.Descending;

            NativeImageList.LargeExtensionImageLoaded += NativeImageListLargeExtensionImageLoaded;

            _dcProvider.Engine.SearchManager.SearchStarted += SearchManagerSearchStarted;
            _dcProvider.Engine.SearchManager.SearchResult  += SearchManagerSearchResult;

            if (!SearchProvidersLoaded)
            {
                LoadSearchProviders(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Plugins"));
            }

            IntPtr h = tabControl1.Handle;

            foreach (var webSearchProvider in _providers)
            {
                var tab       = new TabPage(webSearchProvider.TabTitle);
                var flowPanel = new FlowLayoutPanel();
                tab.Controls.Add(flowPanel);
                flowPanel.Dock       = DockStyle.Fill;
                flowPanel.Padding    = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);
                flowPanel.BackColor  = SystemColors.Window;
                flowPanel.AutoScroll = true;
                tab.Tag = webSearchProvider;
                tabControl1.TabPages.Insert(0, tab);
            }
            tabControl1.SelectTab(0);

            Disposed += FrmSearch_Disposed;
        }
コード例 #5
0
ファイル: LiveClient.cs プロジェクト: ErtyHackward/livedc
        public LiveClient()
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
            Application.ApplicationExit += ApplicationApplicationExit;

            InitializeComponent();

            Settings = new Settings();
            if (File.Exists(Settings.SettingsFilePath))
            {
                Settings.Load();
            }

            LogManager.LogManagerInstance             = new NLogManager();
            MonoTorrent.LogManager.LogManagerInstance = new TorrentNLogManager();

            logger.Info("------------------------------starting LiveDC {0}", Assembly.GetExecutingAssembly().GetName().Version);

            _copyData = new CopyData();
            _copyData.CreateHandle(new CreateParams());
            _copyData.Channels.Add("LIVEDC");
            _copyData.DataReceived += CopyDataDataReceived;

            _ao = AsyncOperationManager.CreateOperation(null);


            Utils.FileSizeFormatProvider.BinaryModifiers = new[] { " Б", " КБ", " МБ", " ГБ", " ТБ", " ПБ" };



            _providers.Add(_dcProvider = new DcProvider(Settings, this));
            _providers.Add(new TorrentProvider(this));

            _fsProviders.Add(_httpProvider = new HttpProvider(this));

            InitializeEngine();

            History = new LiveHistoryManager();
            History.Load();

            AutoUpdate = new AutoUpdateManager(this);
            AutoUpdate.CheckUpdate();

            if (!Settings.ShownGreetingsTooltip)
            {
                _icon.ShowBalloonTip(10000, "LiveDC", "Добро пожаловать! Нажмите здесь, чтобы увидеть текущий статус работы.", ToolTipIcon.Info);
                OpenStartPage();

                Settings.ShownGreetingsTooltip = true;
                Settings.Save();
            }
            else if (!Program.SilentMode)
            {
                OpenStartPage();
                _icon.ShowBalloonTip(10000, "LiveDC", "Клиент запущен.", ToolTipIcon.Info);
            }

            if (!string.IsNullOrEmpty(Program.StartMagnet))
            {
                StartFile(Magnet.Parse(Program.StartMagnet));
            }

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
        }