예제 #1
0
 internal void Clean()
 {
     ReplyStatus              = null;
     Text                     = "";
     IsSensitive              = false;
     ContentWarningText       = "";
     ContentWarning.IsChecked = false;
     Medias.Clear();
     SelectedVisibilityIndex = 0;
     _draftId = -1;
 }
예제 #2
0
        public async Task OnLoad(object data)
        {
            bool loadImage = data as bool? ?? true;

            foreach (var acc in Accounts)
            {
                acc.UseChanged -= Acc_UseChanged;
            }

            Accounts = ContextList?.Contexts?.Select(c => new AccountEntry(c, loadImage)).ToList();
            if (Accounts == null)
            {
                LogTo.Warn("No accounts found");
                return;
            }

            foreach (var acc in Accounts)
            {
                acc.UseChanged += Acc_UseChanged;
            }

            var defAccount = Accounts.FirstOrDefault(a => a.IsDefault) ?? Accounts.First();

            defAccount.Use = true;

            if (PreSelectedAccounts.Any())
            {
                foreach (var acc in Accounts)
                {
                    acc.Use = PreSelectedAccounts.Contains(acc.Context.UserId);
                }
            }

            RaisePropertyChanged(nameof(Accounts));

            InitializeText();
            ConfirmationSet = false;

            Medias.Clear();
            AttachedMedias.Clear();

            KnownUserNames = (await Cache.GetKnownUsers().ConfigureAwait(false)).Select(u => u.UserName).ToList();
            RaisePropertyChanged(nameof(KnownUserNames));
            KnownHashtags = (await Cache.GetKnownHashtags().ConfigureAwait(false)).ToList();
            RaisePropertyChanged(nameof(KnownHashtags));

            ScheduleDate        = DateTime.Now;
            ScheduleTime        = DateTime.Now;
            DeletionDate        = DateTime.Now;
            DeletionTime        = DateTime.Now;
            IsTweetScheduled    = false;
            IsDeletionScheduled = false;
        }
예제 #3
0
        public void GenerateLibraryThread(object param)
        {
            lock (GenerateMutexLock)
            {
                if (GenerateMutex)
                {
                    return;
                }
                GenerateMutex = true;
            }
            lock (Medias)
                Medias.Clear();
            lock (Playlists)
                Playlists.Clear();
            lock (Paths)
                Paths.Clear();
            var playlistHandler = new ManualResetEvent(false);

            ThreadPool.QueueUserWorkItem(GenerateLibraryThreadPlaylist, playlistHandler);
            var tmps = new List <Tuple <String, String[], ManualResetEvent, ClickStyle, int> > {
                Tuple.Create(MusicPath, MediaItem.MusicExtensions, new ManualResetEvent(false), ClickStyle.MUSIC, 100),
                Tuple.Create(VideoPath, MediaItem.VideoExtensions, new ManualResetEvent(false), ClickStyle.VIDEO, 1),
                Tuple.Create(ImagePath, MediaItem.ImageExtensions, new ManualResetEvent(false), ClickStyle.IMAGE, 200),
            };

            foreach (var dir in ConfigFile.Instance.Data.BiblioFiles)
            {
                tmps.Add(Tuple.Create(dir, MediaItem.MusicExtensions, new ManualResetEvent(false), ClickStyle.MUSIC, 100));
                tmps.Add(Tuple.Create(dir, MediaItem.VideoExtensions, new ManualResetEvent(false), ClickStyle.VIDEO, 1));
                tmps.Add(Tuple.Create(dir, MediaItem.ImageExtensions, new ManualResetEvent(false), ClickStyle.IMAGE, 200));
            }
            foreach (var tmp in tmps)
            {
                ThreadPool.QueueUserWorkItem(GenerateLibraryThreadMedia, tmp);
            }
            playlistHandler.WaitOne();
            foreach (var tmp in tmps)
            {
                tmp.Item3.WaitOne();
            }
            lock (Paths)
                Paths.Clear();
            lock (GenerateMutexLock)
                GenerateMutex = false;
        }
예제 #4
0
 private void SetupCommands()
 {
     AddFiles.CanExecuteCommand = e => true;
     AddFiles.ExecuteCommand    = e => OnAddFileClicked();
     Convert.CanExecuteCommand  = e => Medias.Count != 0;
     Convert.ExecuteCommand     = e => { if (IsWorking)
                                         {
                                             tokenSource.Cancel();
                                         }
                                         else
                                         {
                                             OnConvert();
                                         } };
     Clear.CanExecuteCommand  = e => Medias.Count != 0;
     Clear.ExecuteCommand     = e => Medias.Clear();
     Remove.CanExecuteCommand = e => SelectedMediaIndex != -1 && Medias.Count != 0;
     Remove.ExecuteCommand    = e => MediasView.RemoveAt(SelectedMediaIndex);
 }
예제 #5
0
        public async Task OnLoad(object data)
        {
            foreach (var acc in Accounts)
            {
                acc.UseChanged -= Acc_UseChanged;
            }

            Accounts = ContextList.Contexts.Select(c => new AccountEntry(c)).ToList();
            foreach (var acc in Accounts)
            {
                acc.UseChanged += Acc_UseChanged;
            }

            var defAccount = Accounts.FirstOrDefault(a => a.IsDefault) ?? Accounts.First();

            defAccount.Use = true;

            if (PreSelectedAccounts.Any())
            {
                foreach (var acc in Accounts)
                {
                    acc.Use = PreSelectedAccounts.Contains(acc.Context.UserId);
                }
            }

            RaisePropertyChanged(nameof(Accounts));

            InitializeText();
            ConfirmationSet = false;

            Medias.Clear();
            AttachedMedias.Clear();

            KnownUserNames = (await Cache.GetKnownUsers().ConfigureAwait(false)).Select(u => u.UserName).ToList();
            RaisePropertyChanged(nameof(KnownUserNames));
            KnownHashtags = (await Cache.GetKnownHashtags().ConfigureAwait(false)).ToList();
            RaisePropertyChanged(nameof(KnownHashtags));
        }
예제 #6
0
        protected override void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    if (Packages != null)
                    {
                        if (Packages.Count > 0)
                        {
                            foreach (SelectablePackage package in Packages)
                            {
                                package.Dispose();
                            }
                        }
                        Packages.Clear();
                        Packages = null;
                    }
                    if (Dependencies != null)
                    {
                        Dependency.ClearLogics(Dependencies);
                        Dependencies = null;
                    }
                    // TODO: dispose managed state (managed objects)
                    if (ParentCategory != null)
                    {
                        ParentCategory = null;
                    }
                    if (Parent != null)
                    {
                        Parent = null;
                    }
                    if (TopParent != null)
                    {
                        TopParent = null;
                    }
                    if (UserFiles != null)
                    {
                        foreach (UserFile file in UserFiles)
                        {
                            file.FilesSaved.Clear();
                        }
                        UserFiles.Clear();
                        UserFiles = null;
                    }
                    if (Medias != null)
                    {
                        foreach (Media media in Medias)
                        {
                            media.SelectablePackageParent = null;
                        }
                        Medias.Clear();
                        Medias = null;
                    }
                    if (UIComponent != null)
                    {
                        UIComponent.Package = null;
                        UIComponent         = null;
                    }
                    if (ParentUIComponent != null)
                    {
                        ParentUIComponent.Package = null;
                        ParentUIComponent         = null;
                    }
                    if (TopParentUIComponent != null)
                    {
                        TopParentUIComponent.Package = null;
                        TopParentUIComponent         = null;
                    }
                    if (RelhaxWPFComboBoxList != null)
                    {
                        for (int i = 0; i < RelhaxWPFComboBoxList.Count(); i++)
                        {
                            if (RelhaxWPFComboBoxList[i] != null)
                            {
                                RelhaxWPFComboBoxList[i] = null;
                            }
                        }
                        RelhaxWPFComboBoxList = null;
                    }
                    if (ChildBorder != null)
                    {
                        ChildBorder = null;
                    }
                    if (ChildStackPanel != null)
                    {
                        ChildStackPanel = null;
                    }
                    if (ParentBorder != null)
                    {
                        ParentBorder = null;
                    }
                    if (ParentStackPanel != null)
                    {
                        ParentStackPanel = null;
                    }
                    if (ContentControl != null)
                    {
                        ContentControl = null;
                    }
                    if (ScrollViewer != null)
                    {
                        ScrollViewer = null;
                    }
                    if (TreeViewItem != null)
                    {
                        TreeViewItem = null;
                    }
                    if (TreeView != null)
                    {
                        TreeView = null;
                    }
                    if (TabIndex != null)
                    {
                        TabIndex = null;
                    }
                }

                // TODO: free unmanaged resources (unmanaged objects) and override finalizer
                // TODO: set large fields to null
                disposedValue = true;
            }

            base.Dispose(disposing);
        }