/// <summary>
        /// called when online sync is disabled
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItem_Unchecked_1(object sender, RoutedEventArgs e)
        {
            MenuItem item = sender as MenuItem;
            bool     x    = item.IsChecked;

            uploadCloud.IsEnabled   = false;
            downloadCloud.IsEnabled = false;
            XmlDataLayer.SetConfigEntry("authentication", "not_done");
            XmlDataLayer.SetConfigEntry("sync_online", "disabled");
        }
 /// <summary>
 /// called when downloads are enabled
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void downloadCloud_Checked_1(object sender, RoutedEventArgs e)
 {
     if (XmlDataLayer.GetConfigEntry("sync_online") == "enabled")
     {
         abortDownloadDriveThread();
         XmlDataLayer.SetConfigEntry("download_cloud", "enabled");
         Thread newThread = new Thread(() => GoogleDriveSync.UploadDownloadNewFiles());
         newThread.Start();
     }
 }
        /// <summary>
        /// Main function which authenticates and creates threads for uploads and downloads if they are enabled
        /// </summary>
        /// <param name="createThreads"></param>
        public static void UploadDownloadNewFiles(bool createThreads = true)
        {
            if (authProgress)
            {
                return;
            }
            authProgress = true;
            DriveService service = getDriveService();

            if (service == null)
            {
                Thread.Sleep(5 * 60 * 1000);
                UploadDownloadNewFiles();
                return;
            }
            File file2 = null, tempFile = null;

            try
            {
                About  ab     = service.About.Get().Fetch();
                string rootId = ab.RootFolderId;

                file2    = makeDirectoryIfNotExists(service, "PCTrack", rootId);
                tempFile = makeDirectoryIfNotExists(service, "Temp", file2.Id);
            }
            catch (Exception)
            {
                XmlDataLayer.SetConfigEntry("authentication", "not_done");
                Thread.Sleep(5 * 60 * 1000);
                UploadDownloadNewFiles();
                return;
            }
            XmlDataLayer.SetConfigEntry("authentication", "done");

            if (createThreads)
            {
                try
                {
                    if (XmlDataLayer.GetConfigEntry("download_cloud") == "enabled")
                    {
                        downloadThread = new Thread(() => DownloadTempFiles(service, tempFile.Id));
                        downloadThread.Start();
                    }
                    if (XmlDataLayer.GetConfigEntry("upload_cloud") == "enabled")
                    {
                        uploadThread = new Thread(() => UploadTempFiles(service, tempFile.Id));
                        uploadThread.Start();
                    }
                }
                catch (Exception)
                {
                }
            }
            authProgress = false;
        }
        /// <summary>
        /// called when online sync is enabled
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItem_Checked_1(object sender, RoutedEventArgs e)
        {
            MenuItem menuItem = sender as MenuItem;

            XmlDataLayer.SetConfigEntry("sync_online", "enabled");
            string pcId = XmlDataLayer.GetConfigEntry("pc_id");

            if (pcId == null)
            {
                Random rnd = new Random();
                int    id  = rnd.Next(0, 1000000);
                XmlDataLayer.SetConfigEntry("pc_id", id.ToString());
            }
            uploadCloud.IsEnabled   = true;
            downloadCloud.IsEnabled = true;
            if (XmlDataLayer.GetConfigEntry("upload_cloud") == "enabled")
            {
                uploadCloud.IsChecked = true;
            }
            else
            {
                uploadCloud.IsChecked = false;
            }
            if (XmlDataLayer.GetConfigEntry("download_cloud") == "enabled")
            {
                downloadCloud.IsChecked = true;
            }
            else
            {
                downloadCloud.IsChecked = false;
            }
            Thread newThread = new Thread(() => GoogleDriveSync.UploadDownloadNewFiles());

            newThread.Start();
            MenuItem item = sender as MenuItem;
            bool     x    = item.IsChecked;
        }
 /// <summary>
 /// called when downloads are disabled
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void downloadCloud_Unchecked_1(object sender, RoutedEventArgs e)
 {
     XmlDataLayer.SetConfigEntry("download_cloud", "disabled");
     abortDownloadDriveThread();
 }