public MainWindow()
        {
            DataContext = this;
            InitializeComponent();
            Unloaded += MainWindow_Unloaded;

            // Check for internet connection
            CheckConnection();

            // Initialize login config window
            Config             = ConfigHandler.Load();
            _loginConfigWindow = GetLoginConfig();

            Repository = new MailRepository(Config.Address, Config.Password);
            if (!OfflineMode)
            {
                Repository.CheckCredentials();
            }

            SelectedMailList = Mails;

            MailRefreshTimer.Interval = new TimeSpan(0, 0, 5);
            MailRefreshTimer.Tick    += (obj, args) => RefreshMailListAsync();
            MailRefreshTimer.Start();

            // Setup commands
            SignInCommand               = new RelayCommand(ShowSignInWindow);
            SaveMailsToStorageCommand   = new RelayCommand(SaveMailsToStorage);
            LoadMailsFromStorageCommand = new RelayCommand(LoadMailsFromStorage);
            LoadMailsFromServerCommand  = new RelayCommand(LoadMailsFromServer, (o) => !IsRefreshing);
            SearchCommand               = new RelayCommand((obj) => Search(obj), (obj) => obj.ToString().Length > 3 || obj.ToString().Length == 0);
            ShowSendEmailWindowCommand  = new RelayCommand(ShowSendEmailWindow, (obj) => !OfflineMode);
        }
        private void SignIn(object passwordBox)
        {
            var pb      = passwordBox as PasswordBox;
            var newRepo = new MailRepository(Config.Address, pb.Password);

            if (newRepo.CheckCredentials())
            {
                Config.Password = pb.Password;
                Config.Save();
                Repository = newRepo;
                Close();
            }
            else
            {
                MessageBox.Show("The entered credentials are incorrect.");
            }
        }