コード例 #1
0
        protected override bool SetSettingItemValue(SettingBase setting, System.Reflection.PropertyInfo property)
        {
            if (property.Name == "RolesInOnline")
            {
                OnlineSettings temp = (OnlineSettings)setting;
                temp.RolesInOnline = OnlineSettings.RolesInOnline;
                return(true);
            }
            else if (property.Name == "DefaultOpen")
            {
                OnlineSettings temp = (OnlineSettings)setting;

                string name         = null;
                string checkedValue = _Request.Get("OnlineMemberShow", Method.Post, string.Empty);
                if (checkedValue == "ShowAll")
                {
                    name = "DefaultOpen1";
                }
                else if (checkedValue == "ShowMember")
                {
                    name = "DefaultOpen2";
                }
                if (name != null)
                {
                    temp.DefaultOpen = _Request.Get(name, Method.Post, "").ToLower() == "true";
                }
                return(true);
            }
            else
            {
                return(base.SetSettingItemValue(setting, property));
            }
        }
コード例 #2
0
        public CloudInteractions(SignalRMessage inboundMessage, SignalRMessage outgoingMessage,
                                 Settings settings, OnlineSettings onlineSettings)
        {
            //connection = new HubConnectionBuilder()
            //    .WithUrl("https://clipmanagerweb.azurewebsites.net/broadcast").Build();
            var baseUrl    = "https://clipboardmonitorlitefunctions.azurewebsites.net";
            var connection = new HubConnectionBuilder()
                             .WithUrl($"{baseUrl}/api")
                             .Build();

            _settings        = settings;
            _inboundMessage  = inboundMessage;
            _outgoingMessage = outgoingMessage;
            _onlineSettings  = onlineSettings;
            _function        = new ApiFunction(_onlineSettings);


            OnlineState.ConnectionLife = connection.State.ToString();
            if (_settings.OnlineMode)
            {
                StartListening();
            }
            _settings.PropertyChanged        += OnlineModeChanged;
            _outgoingMessage.PropertyChanged += NewMessageToSend;
        }
コード例 #3
0
 public OptionsForm(Settings settings, OnlineSettings onlineSettings, FormEvents buttonActions)
 {
     _formEvents     = buttonActions;
     _languageOnForm = new LanguageOnForm();
     _settings       = settings;
     _onlineSettings = onlineSettings;
     InitializeComponent();
     InitializeLanguage();
     InitializeProperties();
     BindButtonEvents();
 }
コード例 #4
0
 public FormEvents(ClipboardManager clipManager, NotifyIcon icon, Form form, Settings settings, HistoryFile history,
                   OnlineSettings onlineSettings)
 {
     exitFileWritten                    = false;
     ActiveForm                         = form;
     _clipboardManager                  = clipManager;
     NotificationIcon                   = icon;
     _settings                          = settings;
     _writeHistory                      = history;
     _settings.PropertyChanged         += ChangeIconStyle;
     _clipboardManager.PropertyChanged += ShowCopyNotification;
     _onlineSettings                    = onlineSettings;
     SetIconStyle();
     SetWindowStartupState();
 }
コード例 #5
0
 //At some point you could take a look at IoC Containers
 //It'll take off the responsibility from you to initialize everything in MainForm
 //And inject every required class.
 //You'll only need to register them in the IoC Container and then use them just like,
 //  in AspNetCore
 public MainForm()
 {
     InitializeComponent();
     _settingsHandler   = new SettingsHandler();
     _settings          = _settingsHandler.LoadSettingsFile() as Settings;
     _onlineSettings    = _settingsHandler.LoadSettingsFile(true) as OnlineSettings;
     _inboundMessage    = new SignalRMessage();
     _outgoingMessage   = new SignalRMessage();
     _clipboardManager  = new ClipboardManager(_inboundMessage, _outgoingMessage, _settings);
     _cloudInteractions = new CloudInteractions(_inboundMessage, _outgoingMessage, _settings, _onlineSettings);
     _writeHistoryFile  = new HistoryFile(_clipboardManager, _settings);
     _languageOnForm    = new LanguageOnForm();
     _formEvents        = new FormEvents(_clipboardManager, notificationIcon, this, _settings, _writeHistoryFile, _onlineSettings);
     _startWithWindows  = new LaunchOnStartup(_settings);
     _checkConnection   = new CheckStaticConnectionState(Label_Connection_DONOTMODIFY, timer_checkConnection);
     EnumSetLang();
     BindProperties();
     BindButtonActions();
 }
コード例 #6
0
        public ApiFunction(OnlineSettings settings)
        {
            _onlineSettings = settings;
            client          = new HttpClient();

            if (_onlineSettings.ApplicationId.Equals(Guid.Empty))
            {
                _onlineSettings.ApplicationId = Guid.NewGuid();
            }
            if (string.IsNullOrEmpty(_onlineSettings.GroupId))
            {
                _onlineSettings.GroupId = Guid.NewGuid().ToString();
            }
            if (_onlineSettings.Password == null)
            {
                _onlineSettings.Password = Guid.NewGuid().ToString();
            }

            _onlineSettings.PropertyChanged += SettingsChanged;
        }
コード例 #7
0
        public ApiFunction(OnlineSettings settings)
        {
            _onlineSettings = settings;
            client          = new HttpClient();

            //Those things shouldn't be generated during the runtime, but on the start of application
            if (_onlineSettings.ApplicationId.Equals(Guid.Empty))
            {
                _onlineSettings.ApplicationId = Guid.NewGuid();
            }
            if (string.IsNullOrEmpty(_onlineSettings.GroupId))
            {
                _onlineSettings.GroupId = Guid.NewGuid().ToString();
            }
            if (_onlineSettings.Password == null)
            {
                _onlineSettings.Password = Guid.NewGuid().ToString();
            }

            _onlineSettings.PropertyChanged += SettingsChanged;
        }
コード例 #8
0
        private void MainWindow_Load(object sender, EventArgs e)
        {
            if (Thread.CurrentThread.Name == null)
            {
                Thread.CurrentThread.Name = "UI";
            }

            Logger.Debug("Starting UI initialization");


            // Set version number
            var      version   = Assembly.GetExecutingAssembly().GetName().Version;
            DateTime buildDate = new DateTime(2000, 1, 1)
                                 .AddDays(version.Build)
                                 .AddSeconds(version.Revision * 2);

            statusLabel.Text = statusLabel.Text + $" - {version.Major}.{version.Minor}.{version.Build}.{version.Revision} from {buildDate.ToString("dd/MM/yyyy")}";


            var settingsService = _serviceProvider.Get <SettingsService>();

            ExceptionReporter.EnableLogUnhandledOnThread();
            SizeChanged += OnMinimizeWindow;


            // Chicken and the egg.. search controller needs browser, browser needs search controllers var.
            var databaseItemDao  = _serviceProvider.Get <IDatabaseItemDao>();
            var searchController = _serviceProvider.Get <SearchController>();

            searchController.JsIntegration.OnRequestSetItemAssociations += (s, evvv) => { (evvv as GetSetItemAssociationsEventArgs).Elements = databaseItemDao.GetItemSetAssociations(); };

            _cefBrowserHandler.InitializeChromium(searchController.JsIntegration, Browser_IsBrowserInitializedChanged, tabControl1);
            searchController.Browser = _cefBrowserHandler;
            searchController.JsIntegration.OnClipboard += SetItemsClipboard;
            searchController.JsIntegration.OnRequestFeatureRecommendation += (o, args) => {
                var features = settingsService.GetPersistent().FeaturesNotShown;
                (args as FeatureSuggestionArgs).Feature    = features.FirstOrDefault();
                (args as FeatureSuggestionArgs).HasFeature = features.Count > 0;
            };
            searchController.JsIntegration.OnSeenFeatureRecommendation += (o, args) => settingsService.GetPersistent().AddShownFeature((args as FeatureSuggestionArgs).Feature);

            var playerItemDao = _serviceProvider.Get <IPlayerItemDao>();
            var cacher        = _serviceProvider.Get <TransferStashServiceCache>();

            _parsingService.OnParseComplete += (o, args) => cacher.Refresh();


            var stashWriter           = new SafeTransferStashWriter(settingsService, _cefBrowserHandler);
            var transferStashService  = new TransferStashService(_serviceProvider.Get <IDatabaseItemStatDao>(), settingsService, stashWriter);
            var transferStashService2 = new TransferStashService2(playerItemDao, cacher, transferStashService, stashWriter, settingsService, _cefBrowserHandler);

            _serviceProvider.Add(transferStashService2);

            _transferStashWorker = new TransferStashWorker(transferStashService2, _userFeedbackService);

            _stashFileMonitor.OnStashModified += (_, __) => {
                StashEventArg args = __ as StashEventArg;
                _transferStashWorker.Queue(args?.Filename);

                // May not minimize, but
                _usageStatisticsReporter.ResetLastMinimized();
                _automaticUpdateChecker.ResetLastMinimized();
            };

            if (!_stashFileMonitor.StartMonitorStashfile(GlobalPaths.SavePath))
            {
                MessageBox.Show("Ooops!\nIt seems you are synchronizing your saves to steam cloud..\nThis tool is unfortunately not compatible.\n");
                _cefBrowserHandler.ShowHelp(HelpService.HelpType.CloudSavesEnabled);

                Logger.Warn("Shutting down IA, unable to monitor stash files.");

                if (!Debugger.IsAttached)
                {
                    Close();
                }
            }

            // Load the grim database
            var    grimDawnDetector = _serviceProvider.Get <GrimDawnDetector>();
            string gdPath           = grimDawnDetector.GetGrimLocation();

            if (!string.IsNullOrEmpty(gdPath))
            {
            }
            else
            {
                Logger.Warn("Could not find the Grim Dawn install location");
                statusLabel.Text = "Could not find the Grim Dawn install location";

                var timer = new System.Windows.Forms.Timer();
                timer.Tick    += TimerTickLookForGrimDawn;
                timer.Interval = 10000;
                timer.Start();
            }

            // Load recipes
            foreach (string file in GlobalPaths.FormulasFiles)
            {
                if (!string.IsNullOrEmpty(file))
                {
                    bool isHardcore = file.EndsWith("gsh");
                    Logger.InfoFormat("Reading recipes at \"{0}\", IsHardcore={1}", file, isHardcore);
                    _recipeParser.UpdateFormulas(file, isHardcore);
                }
            }


            var buddyItemDao         = _serviceProvider.Get <IBuddyItemDao>();
            var buddySubscriptionDao = _serviceProvider.Get <IBuddySubscriptionDao>();



            var databaseSettingDao = _serviceProvider.Get <IDatabaseSettingDao>();

            _authService = new AuthService(_cefBrowserHandler, new AuthenticationProvider(settingsService), playerItemDao);
            var backupSettings = new BackupSettings(playerItemDao, settingsService, _cefBrowserHandler);

            UIHelper.AddAndShow(backupSettings, backupPanel);

            // TODO: buttonLogin.Visible = !BlockedLogsDetection.DreamcrashBlocked();
            var onlineSettings = new OnlineSettings(playerItemDao, _authService, settingsService, _cefBrowserHandler, buddyItemDao, buddySubscriptionDao);

            UIHelper.AddAndShow(onlineSettings, onlinePanel);
            _cefBrowserHandler.OnAuthSuccess += (_, __) => onlineSettings.UpdateUi();


            UIHelper.AddAndShow(new ModsDatabaseConfig(DatabaseLoadedTrigger, playerItemDao, _parsingService, databaseSettingDao, grimDawnDetector, settingsService, _cefBrowserHandler), modsPanel);

            if (!BlockedLogsDetection.DreamcrashBlocked())
            {
                UIHelper.AddAndShow(new LoggingWindow(), panelLogging);
            }

            var itemTagDao    = _serviceProvider.Get <IItemTagDao>();
            var backupService = new BackupService(_authService, playerItemDao, settingsService);

            _charBackupService   = new CharacterBackupService(settingsService, _authService);
            _backupServiceWorker = new BackupServiceWorker(backupService, _charBackupService);
            searchController.JsIntegration.OnRequestBackedUpCharacterList += (_, args) => {
                RequestCharacterListEventArg a = args as RequestCharacterListEventArg;
                a.Characters = _charBackupService.ListBackedUpCharacters();
            };
            searchController.JsIntegration.OnRequestCharacterDownloadUrl += (_, args) => {
                RequestCharacterDownloadUrlEventArg a = args as RequestCharacterDownloadUrlEventArg;
                a.Url = _charBackupService.GetDownloadUrl(a.Character);
            };

            backupService.OnUploadComplete += (o, args) => _searchWindow.UpdateListView();
            searchController.OnSearch      += (o, args) => backupService.OnSearch();

            _searchWindow = new SplitSearchWindow(_cefBrowserHandler.BrowserControl, SetFeedback, playerItemDao, searchController, itemTagDao, settingsService);
            UIHelper.AddAndShow(_searchWindow, searchPanel);

            searchPanel.Height = searchPanel.Parent.Height;
            searchPanel.Width  = searchPanel.Parent.Width;

            transferStashService2.OnUpdate += (_, __) => { _searchWindow.UpdateListView(); };

            var languagePackPicker = new LanguagePackPicker(itemTagDao, playerItemDao, _parsingService, settingsService);


            var dm = new DarkMode(this);

            UIHelper.AddAndShow(
                new SettingsWindow(
                    _cefBrowserHandler,
                    _tooltipHelper,
                    ListviewUpdateTrigger,
                    playerItemDao,
                    _searchWindow.ModSelectionHandler.GetAvailableModSelection(),
                    transferStashService,
                    transferStashService2,
                    languagePackPicker,
                    settingsService,
                    grimDawnDetector,
                    dm
                    ),
                settingsPanel);

#if !DEBUG
            if (!BlockedLogsDetection.DreamcrashBlocked())   // Uses dreamcrash server
            {
                ThreadPool.QueueUserWorkItem(m => ExceptionReporter.ReportUsage());
                _automaticUpdateChecker.CheckForUpdates();
            }
#endif

            Shown += (_, __) => { StartInjector(); };
            _buddyItemsService = new BuddyItemsService(
                buddyItemDao,
                3 * 60 * 1000,
                settingsService,
                _authService,
                buddySubscriptionDao
                );

            // Start the backup task
            _backupBackgroundTask = new BackgroundTask(new FileBackup(playerItemDao, settingsService));

            LocalizationLoader.ApplyLanguage(Controls, RuntimeSettings.Language);
            new EasterEgg(settingsService).Activate(this);

            // Initialize the "stash packer" used to find item positions for transferring items ingame while the stash is open
            {
                _dynamicPacker.Initialize(8, 16);

                var transferFiles = GlobalPaths.TransferFiles;
                if (transferFiles.Count > 0)
                {
                    var file  = transferFiles.MaxBy(m => m.LastAccess);
                    var stash = TransferStashService.GetStash(file.Filename);
                    if (stash != null)
                    {
                        _dynamicPacker.Initialize(stash.Width, stash.Height);
                        if (stash.Tabs.Count >= 3)
                        {
                            foreach (var item in stash.Tabs[2].Items)
                            {
                                byte[] bx = BitConverter.GetBytes(item.XOffset);
                                uint   x  = (uint)BitConverter.ToSingle(bx, 0);

                                byte[] by = BitConverter.GetBytes(item.YOffset);
                                uint   y  = (uint)BitConverter.ToSingle(by, 0);

                                _dynamicPacker.Insert(item.BaseRecord, item.Seed, x, y);
                            }
                        }
                    }
                }
            }

            _messageProcessors.Add(new ItemPositionFinder(_dynamicPacker));
            _messageProcessors.Add(new PlayerPositionTracker(Debugger.IsAttached && false));
            _messageProcessors.Add(new StashStatusHandler());
            _messageProcessors.Add(new CloudDetectorProcessor(SetFeedback));
            _messageProcessors.Add(new GenericErrorHandler());


            RuntimeSettings.StashStatusChanged += GlobalSettings_StashStatusChanged;

            _transferController = new ItemTransferController(
                _cefBrowserHandler,
                SetFeedback,
                SetTooltipAtmouse,
                _searchWindow,
                playerItemDao,
                transferStashService,
                _serviceProvider.Get <ItemStatService>(),
                settingsService
                );
            Application.AddMessageFilter(new MousewheelMessageFilter());


            var titleTag = RuntimeSettings.Language.GetTag("iatag_ui_itemassistant");
            if (!string.IsNullOrEmpty(titleTag))
            {
                this.Text += $" - {titleTag}";
            }


            // Popup login diag
            if (_authService.CheckAuthentication() == AuthService.AccessStatus.Unauthorized && !settingsService.GetLocal().OptOutOfBackups)
            {
                if (!BlockedLogsDetection.DreamcrashBlocked())
                {
                    // Backup login wont work
                    var t = new System.Windows.Forms.Timer {
                        Interval = 100
                    };
                    t.Tick += (o, args) => {
                        if (_cefBrowserHandler.BrowserControl.CanExecuteJavascriptInMainFrame)
                        {
                            _authService.Authenticate();
                            t.Stop();
                        }
                    };
                    t.Start();
                }
            }


            searchController.JsIntegration.ItemTransferEvent += TransferItem;
            new WindowSizeManager(this, settingsService);


            // Suggest translation packs if available
            if (string.IsNullOrEmpty(settingsService.GetLocal().LocalizationFile) && !settingsService.GetLocal().HasSuggestedLanguageChange)
            {
                if (LocalizationLoader.HasSupportedTranslations(grimDawnDetector.GetGrimLocations()))
                {
                    Logger.Debug("A new language pack has been detected, informing end user..");
                    new LanguagePackPicker(itemTagDao, playerItemDao, _parsingService, settingsService).Show(grimDawnDetector.GetGrimLocations());

                    settingsService.GetLocal().HasSuggestedLanguageChange = true;
                }
            }


            if (settingsService.GetPersistent().DarkMode)
            {
                dm.Activate(); // Needs a lot more work before its ready, for example custom components uses Draw and does not respect coloring.
                _cefBrowserHandler.SetDarkMode(settingsService.GetPersistent().DarkMode);
            }

            Logger.Debug("UI initialization complete");
        }
コード例 #9
0
 public OnlineServer(VoidCallback onConnect, VoidCallback onDisconnect) : base(onConnect, onDisconnect)
 {
     onlineSettings = new OnlineSettings();
     udpThread      = new Thread(udpTask);
 }
コード例 #10
0
 public void Disconnect()
 {
     _authContext.TokenCache.Clear();
     OnlineSettings.Clear();
 }