public void PlayVoiceMail()
        {
            if (mCached == false)
            {   //Start Download
                if (mOwner.FileDownloadInProgress == false)
                {
                    mOwner.SetFileDownloadInProgress = true;
                    DownloadMail();
                }
            }
            else
            {
                //Move to archive if needed
                try
                {
                    if (mFileInfo.Location == InfoFile.LocationType.INBOX)
                    {
                        ArchiveLocal();

                        //Move to remote archive
                        if (mArchiveService == null)
                        {
                            mArchiveService = new MailService.ServiceWse();
                        }
                        mDownloadService.RequireMtom = true;
                        //Do and forget
                        mArchiveService.VoiceMail_ArchiveMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName);
                    }
                }
                catch
                {
                }
            }
        }
        public void DeleteVoiceMail()
        {
            //Delete locally
            mDeleted = true;
            try
            {
                if (File.Exists(FullPath))
                {
                    File.Delete(FullPath);
                }
                if (File.Exists(FullPath + ".xml"))
                {
                    File.Delete(FullPath + ".xml");
                }
            }
            catch
            {
            }

            //Delete Remotely
            this.Enabled = false;
            if (mDeleteService == null)
            {
                mDeleteService = new MailService.ServiceWse();
            }
            mDeleteService.RequireMtom = true;
            mDeleteService.VoiceMail_DeleteMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName, (MailService.LocationType)mFileInfo.Location);
            mDeleteService.VoiceMail_DeleteMessageCompleted += new Remwave.Client.MailService.VoiceMail_DeleteMessageCompletedEventHandler(mDeleteService_VoiceMail_DeleteMessageCompleted);

            mOwner.Purge(this);
        }
        void MailDownloadCompleted(MailService.MessageReturn message)
        {
            if (message.Error == MailService.ReturnStatus.Success)
            {
                if (message.CompressedFormat == MailService.CompressionType.None)
                {
                    try
                    {
                        String newFileName      = mOwner.BasePath + mFileInfo.Location.ToString() + @"\" + mFileInfo.FileName;
                        String newFileInfoName  = newFileName + ".xml";
                        String tempFileName     = Path.GetTempFileName();
                        String tempFileInfoName = Path.GetTempFileName();

                        File.WriteAllBytes(tempFileName, message.Bytes);

                        XmlSerializer ser = new XmlSerializer(typeof(InfoFile));
                        FileStream    fs  = File.OpenWrite(tempFileInfoName);
                        ser.Serialize(fs, mFileInfo);
                        fs.Close();

                        //Now move files
                        if (File.Exists(newFileName))
                        {
                            File.Delete(newFileName);
                        }
                        File.Move(tempFileName, newFileName);
                        if (File.Exists(newFileInfoName))
                        {
                            File.Delete(newFileInfoName);
                        }
                        File.Move(tempFileInfoName, newFileInfoName);

                        mCached = true;
                        ResetButtonDesign();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("MailDownloadCompleted :" + ex.Message);
                        //todo, maybe inform user??
                    }
                }
            }
            //Remove the service from ourself
            mDownloadService.VoiceMail_GetMessageCompleted -= new MailService.VoiceMail_GetMessageCompletedEventHandler(mailService_VoiceMail_GetMessageCompleted);
            mDownloadService         = null;
            this.progressBar.Enabled = false;
            this.progressBar.Visible = false;
            mDownloadInProgress      = false;
            if (Selected)
            {
                mOwner.SetFileDownloadInProgress = false;
                SelectControl();
            }
        }
        public void DownloadMail()
        {
            if (!mCached)
            {
                mOwner.SetFileDownloadInProgress = true;

                this.progressBar.StartWaiting();
                this.progressBar.Enabled = true;
                this.progressBar.Visible = true;

                if (mDownloadService == null)
                {
                    mDownloadService             = new MailService.ServiceWse();
                    mDownloadService.RequireMtom = true;
                    mDownloadService.VoiceMail_GetMessageCompleted += new MailService.VoiceMail_GetMessageCompletedEventHandler(mailService_VoiceMail_GetMessageCompleted);
                    mDownloadService.VoiceMail_GetMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName, (MailService.LocationType)mFileInfo.Location);
                    mDownloadInProgress = true;
                    SelectControl();
                }
            }
        }
        public void PlayVoiceMail()
        {
            if (mCached == false)
            {   //Start Download
                if (mOwner.FileDownloadInProgress == false)
                {
                    mOwner.SetFileDownloadInProgress = true;
                    DownloadMail();
                }
            }
            else
            {
                //Move to archive if needed
                try
                {
                    if (mFileInfo.Location == InfoFile.LocationType.INBOX)
                    {
                        ArchiveLocal();

                        //Move to remote archive
                        if (mArchiveService == null)
                            mArchiveService = new MailService.ServiceWse();
                        mDownloadService.RequireMtom = true;
                        //Do and forget
                        mArchiveService.VoiceMail_ArchiveMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName);
                    }
                }
                catch
                {
                }
            }
        }
        public void DeleteVoiceMail()
        {
            //Delete locally
            mDeleted = true;
            try
            {
                if(File.Exists(FullPath)) File.Delete(FullPath);
                if(File.Exists(FullPath + ".xml")) File.Delete(FullPath + ".xml");
            }
            catch
            {
            }

            //Delete Remotely
            this.Enabled = false;
            if (mDeleteService == null)
                mDeleteService = new MailService.ServiceWse();
            mDeleteService.RequireMtom = true;
            mDeleteService.VoiceMail_DeleteMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName, (MailService.LocationType)mFileInfo.Location);
            mDeleteService.VoiceMail_DeleteMessageCompleted += new Remwave.Client.MailService.VoiceMail_DeleteMessageCompletedEventHandler(mDeleteService_VoiceMail_DeleteMessageCompleted);

            mOwner.Purge(this);
        }
        void MailDownloadCompleted(MailService.MessageReturn message)
        {
            if (message.Error == MailService.ReturnStatus.Success)
            {
                if (message.CompressedFormat == MailService.CompressionType.None)
                {
                    try
                    {
                        String newFileName = mOwner.BasePath + mFileInfo.Location.ToString() + @"\" + mFileInfo.FileName;
                        String newFileInfoName = newFileName + ".xml";
                        String tempFileName = Path.GetTempFileName();
                        String tempFileInfoName = Path.GetTempFileName();

                        File.WriteAllBytes(tempFileName, message.Bytes);

                        XmlSerializer ser = new XmlSerializer(typeof(InfoFile));
                        FileStream fs = File.OpenWrite(tempFileInfoName);
                        ser.Serialize(fs, mFileInfo);
                        fs.Close();

                        //Now move files
                        if (File.Exists(newFileName)) File.Delete(newFileName);
                        File.Move(tempFileName, newFileName);
                        if (File.Exists(newFileInfoName)) File.Delete(newFileInfoName);
                        File.Move(tempFileInfoName, newFileInfoName);

                        mCached = true;
                        ResetButtonDesign();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("MailDownloadCompleted :" + ex.Message);
                        //todo, maybe inform user??
                    }
                }
            }
            //Remove the service from ourself
            mDownloadService.VoiceMail_GetMessageCompleted -= new MailService.VoiceMail_GetMessageCompletedEventHandler(mailService_VoiceMail_GetMessageCompleted);
            mDownloadService = null;
            this.progressBar.Enabled = false;
            this.progressBar.Visible = false;
            mDownloadInProgress = false;
            if (Selected) { 
                mOwner.SetFileDownloadInProgress = false;
                SelectControl();
            }
            
        }
        public void DownloadMail()
        {
            if (!mCached)
            {
                mOwner.SetFileDownloadInProgress = true;

                this.progressBar.StartWaiting();
                this.progressBar.Enabled = true;
                this.progressBar.Visible = true;

                if (mDownloadService == null)
                {
                    mDownloadService = new MailService.ServiceWse();
                    mDownloadService.RequireMtom = true;
                    mDownloadService.VoiceMail_GetMessageCompleted += new MailService.VoiceMail_GetMessageCompletedEventHandler(mailService_VoiceMail_GetMessageCompleted);
                    mDownloadService.VoiceMail_GetMessageAsync(mOwner.UserName, mOwner.Password, mFileInfo.FileName, (MailService.LocationType)mFileInfo.Location);
                    mDownloadInProgress = true;
                   SelectControl();
                }
            }
        }