protected override bool ConfirmImport()
 {
     if (data == null)
     {
         data = new ItunesImportData();
         var dialog = new ItunesImportDialog();
         if (!HandleImportDialog(dialog, delegate { data.library_uri = dialog.LibraryUri; }))
         {
             data = null;
             return(false);
         }
     }
     return(true);
 }
        private bool HandleImportDialog(ItunesImportDialog dialog, ImportDialogHandler code)
        {
            try {
                if (dialog.Run() == (int)ResponseType.Ok)
                {
                    if (code != null)
                    {
                        code(dialog);
                    }
                    data.get_ratings   = dialog.Ratings;
                    data.get_stats     = dialog.Stats;
                    data.get_playlists = dialog.Playliststs;
                }
                else
                {
                    return(false);
                }
            } finally {
                dialog.Destroy();
                dialog.Dispose();
            }

            if (String.IsNullOrEmpty(data.library_uri))
            {
                return(false);
            }

            // Make sure the library version is supported (version 1.1)
            string message = null;
            bool   prompt  = false;

            using (var xml_reader = new XmlTextReader(data.library_uri))
            {
                xml_reader.ReadToFollowing("key");
                do
                {
                    xml_reader.Read();
                    string key = xml_reader.ReadContentAsString();
                    if (key == "Major Version" || key == "Minor Version")
                    {
                        xml_reader.Read();
                        xml_reader.Read();
                        if (xml_reader.ReadContentAsString() != "1")
                        {
                            message = Catalog.GetString(
                                "Banshee is not familiar with this version of the iTunes library format." +
                                " Importing may or may not work as expected, or at all. Would you like to attempt to import anyway?");
                            prompt = true;
                            break;
                        }
                    }
                } while (xml_reader.ReadToNextSibling("key"));
            }

            if (prompt)
            {
                bool proceed = false;
                using (var message_dialog = new MessageDialog(null, 0, MessageType.Question, ButtonsType.YesNo, message)) {
                    if (message_dialog.Run() == (int)ResponseType.Yes)
                    {
                        proceed = true;
                    }
                    message_dialog.Destroy();
                }
                if (!proceed)
                {
                    LogError(data.library_uri, "Unsupported version");
                    return(false);
                }
            }

            return(true);
        }
        private bool HandleImportDialog (ItunesImportDialog dialog, ImportDialogHandler code)
        {
            try {
                if (dialog.Run () == (int)ResponseType.Ok) {
                    if(code != null) {
                        code (dialog);
                    }
                    data.get_ratings = dialog.Ratings;
                    data.get_stats = dialog.Stats;
                    data.get_playlists = dialog.Playliststs;
                } else {
                    return false;
                }
            } finally {
                dialog.Destroy ();
                dialog.Dispose ();
            }

            if (String.IsNullOrEmpty (data.library_uri)) {
                return false;
            }

            // Make sure the library version is supported (version 1.1)
            string message = null;
            bool prompt = false;
            using (var xml_reader = new XmlTextReader (data.library_uri))
            {
                xml_reader.ReadToFollowing ("key");
                do {
                    xml_reader.Read ();
                    string key = xml_reader.ReadContentAsString ();
                    if (key == "Major Version" || key == "Minor Version") {
                        xml_reader.Read ();
                        xml_reader.Read ();
                        if(xml_reader.ReadContentAsString () != "1") {
                            message = Catalog.GetString (
                                "Banshee is not familiar with this version of the iTunes library format." +
                                " Importing may or may not work as expected, or at all. Would you like to attempt to import anyway?");
                            prompt = true;
                            break;
                        }
                    }
                } while (xml_reader.ReadToNextSibling ("key"));
            }

            if (prompt) {
                bool proceed = false;
                using (var message_dialog = new MessageDialog (null, 0, MessageType.Question, ButtonsType.YesNo, message)) {
                    if (message_dialog.Run () == (int)ResponseType.Yes) {
                        proceed = true;
                    }
                    message_dialog.Destroy ();
                }
                if (!proceed) {
                    LogError (data.library_uri, "Unsupported version");
                    return false;
                }
            }

            return true;
        }
 protected override bool ConfirmImport ()
 {
     if (data == null) {
         data = new ItunesImportData ();
         var dialog = new ItunesImportDialog ();
         if (!HandleImportDialog (dialog, delegate { data.library_uri = dialog.LibraryUri; })) {
             data = null;
             return false;
         }
     }
     return true;
 }