Пример #1
0
        /// <summary>
        /// Starts retrieving documents from Google Docs.
        /// </summary>
        private void RetrieveDocuments()
        {
            // let's inform user that we are retrieving items (documents & folders)
            Status(StatusType.Retrieve, "Retrieving documents..");

            // disable menu options for changing the Google Account, for browsing Google Docs
            // and for saving while items are being retrieved
            menuGoogleAccount.Enabled = false;
            menuBrowse.Enabled        = false;
            menuSave.Enabled          = false;

            // run the backgroundworker for retrieving items
            BgWorkerGetAllItems.RunWorkerAsync();
        }
Пример #2
0
        private void MenuPreferencesClick(object sender, EventArgs e)
        {
            // make sure we are authenticated
            if (!NocsService.UserIsAuthenticated())
            {
                // user's not authenticated, let's ask for credentials to retrieve items
                var login = new Login();
                if (login.ShowDialog() == DialogResult.OK)
                {
                    RetrieveDocuments();
                }
                return;
            }

            var nocsPreferences = new Preferences();

            if (nocsPreferences.ShowDialog() == DialogResult.OK)
            {
                // let's notify listeners
                if (SettingsChanged != null)
                {
                    SettingsChanged();
                }
            }

            // if proxy is enabled after preferences were saved, and for some reason the Browsing isn't enabled and
            // no worker is busy, let's try to re-retrieve all items
            if (Settings.Default.UseProxy && !menuBrowse.Enabled && !BgWorkerStartService.IsBusy && !BgWorkerGetAllItems.IsBusy)
            {
                // make sure user was validated
                if (!string.IsNullOrEmpty(NocsService.Username) && !string.IsNullOrEmpty(NocsService.Password))
                {
                    // inform user that we are retrieving items (documents)
                    Status(StatusType.Retrieve, "Retrieving the list of documents..");

                    // disable menu options for changing the Google Account and for browsing Google Docs while items are being retrieved
                    menuGoogleAccount.Enabled = false;
                    menuBrowse.Enabled        = false;
                    menuSave.Enabled          = false;

                    // reset help variable
                    NocsService.AccountChanged = false;

                    // run the backgroundworker for retrieving items
                    BgWorkerGetAllItems.RunWorkerAsync();
                }
            }
        }
Пример #3
0
        private void BgWorkerStartService_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                Trace.WriteLine(DateTime.Now + " - Main: error while starting service: " + e.Error.Message);

                // there was an error during the operation -> show it to user
                Status(StatusType.Error, e.Error.Message);
                menuGoogleAccount.Enabled = true;
            }
            else
            {
                // next, retrieve items
                Status(StatusType.Retrieve, "Retrieving document list..");
                BgWorkerGetAllItems.RunWorkerAsync();
            }
        }
Пример #4
0
        private void MenuBrowseClick(object sender, EventArgs e)
        {
            // make sure we are authenticated
            if (!NocsService.UserIsAuthenticated())
            {
                // user's not authenticated, let's ask for credentials to retrieve items
                var login = new Login();
                if (login.ShowDialog() == DialogResult.OK)
                {
                    Status(StatusType.Retrieve, "Retrieving items...");
                    menuGoogleAccount.Enabled = false;
                    menuBrowse.Enabled        = false;
                    menuSave.Enabled          = false;
                    BgWorkerGetAllItems.RunWorkerAsync();
                }
                return;
            }

            var currentTab = tabs.SelectedTab as Noc;

            Browse nocsBrowse;

            // we will give the Browse-form the current selected documentId (from selected tab),
            // so the Browse-form can select it from its listBox on load
            // we'll also give Browse a reference to Synchronizer because AutoFetchAllEventFinished might fire
            if (currentTab != null && !currentTab.Document.IsDraft)
            {
                nocsBrowse = new Browse(ref _synchronizer, currentTab.Document.ResourceId);
            }
            else
            {
                nocsBrowse = new Browse(ref _synchronizer);
            }

            // Browse-form can tell us to add+load a document, or notify us of document renames/deletions
            nocsBrowse.AddDocumentToMainForm += BrowseAddDocumentToMainForm;
            nocsBrowse.DocumentRenamed       += BrowseDocumentRenamed;
            nocsBrowse.DocumentDeleted       += BrowseDocumentDeleted;

            nocsBrowse.ShowDialog();
        }
Пример #5
0
        private void MenuGoogleAccountClick(object sender, EventArgs e)
        {
            // let's first stop all processing
            _synchronizer.Stop();
            _autoFetchAllEntriesTimer.Stop();

            // let's then find out if any of the open tabs are unsaved
            foreach (Noc tab in tabs.TabPages)
            {
                if (tab.ContentHasChanged && NocsService.UserIsAuthenticated())
                {
                    // display a msg asking the user to save changes or abort
                    var result = MessageBox.Show("Do you want to save the changes to " + tab.Text + "?", "Nocs", MessageBoxButtons.YesNoCancel);

                    if (result == DialogResult.Yes)
                    {
                        // let's stop here if we're already saving the current tab
                        if (tab.SaveWorkerIsBusy())
                        {
                            // re-enable all processing
                            _synchronizer.Start();
                            _autoFetchAllEntriesTimer.Start();
                            return;
                        }

                        // if current file is not new, let's just save it
                        if (!tab.Document.IsDraft)
                        {
                            Status(StatusType.Save, "Saving...");
                            tab.Save();
                        }
                        else
                        {
                            // ask for a name
                            var saveResponse = SaveDialog.SaveDialogBox("Enter a name for your file:", "Save", "Untitled");

                            if (!string.IsNullOrEmpty(saveResponse.DocumentName))
                            {
                                Status(StatusType.Save, "Saving...");
                                tab.SaveAs(saveResponse);
                            }
                        }

                        // re-enable all processing
                        _synchronizer.Start();
                        _autoFetchAllEntriesTimer.Start();
                        return;
                    }

                    if (result == DialogResult.Cancel)
                    {
                        // re-enable all processing
                        _synchronizer.Start();
                        _autoFetchAllEntriesTimer.Start();
                        return;
                    }
                }
            }

            // we're past saving questions, let's show the Login dialog for changing Google account
            var login = new Login();

            login.ShowDialog();

            // let's check if user account was changed once the login window is closed
            if (NocsService.AccountChanged)
            {
                // inform the new user that we are retrieving items
                Status(StatusType.Retrieve, "Synchronizing with Google Docs...");

                // disable menu options for changing google account and opening documents while items are being retrieved
                menuGoogleAccount.Enabled = false;
                menuBrowse.Enabled        = false;
                menuSave.Enabled          = false;

                // reset helping variable
                NocsService.AccountChanged = false;

                // let's reset titlebar, clear tabs, etc.
                SetMainTitle(string.Empty);
                tabs.TabPages.Clear();

                // let's clear synchronizer queues
                _synchronizer.JobQueue.Clear();
                _synchronizer.ErrorQueue.Clear();

                // let's then create a new tab (Noc)
                AddNoc();

                // and finally let's run the backgroundworker to retrieve new items for this account
                BgWorkerGetAllItems.RunWorkerAsync(false);
            }

            // either way, let's re-enable timers
            _synchronizer.Start();
            _autoFetchAllEntriesTimer.Start();
        }