public TweetListViewModel(Guid UniqueID, TweetListType tweetListType, Decimal TwitterAccountID, MetroTwitColumn Settings, string columntitle = null, string searchterm = null, string searchName = null, Decimal? existingSearchID = null, bool dontloadtweets = false, MetroTwitStatusBase originaltweet = null, Decimal InitialLastID = 0M)
 {
     TweetListViewModel tweetListViewModel = this;
     this.Settings = Settings;
     this.UniqueTweetListID = UniqueID != Guid.Empty ? UniqueID : Guid.NewGuid();
     this.RefreshCommand = new RelayCommand(new Action(this.RefreshExecute));
     this.FlushCommand = new RelayCommand<bool>(new Action<bool>(this.Flush));
     this.RemoveColumnCommand = new RelayCommand(new Action(this.RemoveColumn));
     this.ContentLinkCommand = new RelayCommand<string>(new Action<string>(this.ExecuteLink));
     this.LinkCommand = new RelayCommand(new Action(this.OpenLink));
     this.ProfileLinkCommand = new RelayCommand(new Action(this.ProfileLink));
     this.MarkasReadCommand = new RelayCommand(new Action(this.MarkasRead));
     this.FollowCommand = new RelayCommand(new Action(this.Follow));
     this.BlockCommand = new RelayCommand(new Action(this.Block));
     this.ReportSpamCommand = new RelayCommand(new Action(this.ReportSpam));
     this.MentionCommand = new RelayCommand(new Action(this.Mention));
     this.DirectMessageCommand = new RelayCommand(new Action(this.DirectMessage));
     this.CloseAdCommand = new RelayCommand(new Action(this.CloseAd));
     this.ColumnSettingsCommand = new RelayCommand(new Action(this.ColumnSettings));
     this.UnpauseColumnCommand = new RelayCommand(new Action(this.UnpauseColumn));
     this.SaveRemoveSearchCommand = new RelayCommand(new Action(this.SaveRemoveSearch));
     this.NoRetweetsCommand = new RelayCommand(new Action(this.NoRetweets));
     this.AddToListCommand = new RelayCommand(new Action(this.AddToList));
     this.ResetColumnWidthCommand = new RelayCommand(new Action(this.ResetColumnWidth));
     this.EnableNotifications = true;
     this.TweetType = tweetListType;
     this.TwitterAccountID = TwitterAccountID;
     this.IsPaused = false;
     this.ShowLoading = true;
     this.NameVisible = true;
     this.TweetPanelVisible = true;
     this.TitleBarVisible = true;
     this.FollowButtonIsEnabled = true;
     this.DisplayType = DisplayType.Tweets;
     this.ResetWidthVisibility = this.Settings.ColumnIsSetWidth;
     this.hideLoadLock = new object();
     this.Tweets = new SortableObservableCollection<MetroTwitStatusBase>(new List<MetroTwitStatusBase>());
     BindingOperations.EnableCollectionSynchronization((IEnumerable)this.Tweets, this._tweetsLock);
     switch (tweetListType)
     {
         case TweetListType.FriendsTimeline:
             this.TweetListName = "friends";
             break;
         case TweetListType.DirectMessages:
             this.TweetListName = "direct messages";
             break;
         case TweetListType.Search:
             this.SearchID = existingSearchID;
             if (searchterm == null)
                 return;
             this.SearchName = searchName;
             this.TwitterTerm = searchterm.Trim().Replace("\n", "");
             this.TweetListName = !string.IsNullOrEmpty(searchName) ? searchName : this.TwitterTerm;
             this.SearchDetailsVisible = true;
             this.SetSaveRemoveSearchButton();
             break;
         case TweetListType.UserTimeline:
             if (searchterm == null)
                 return;
             this.TwitterTerm = searchterm.Trim().Replace("\n", "").Replace("@", "");
             this.TweetListName = "@" + this.TwitterTerm;
             if (!dontloadtweets)
             {
                 this.ShowProfileLoading = true;
                 this.ProfileDetailsVisible = true;
                 if (App.AppState.Accounts[this.TwitterAccountID].IsSignedIn)
                     Users.ShowAsync(App.AppState.Accounts[this.TwitterAccountID].Tokens, this.TwitterTerm, MetroTwitTwitterizer.Options).ContinueWith(new Action<Task<TwitterResponse<User>>>(this.UserDetails));
                 break;
             }
             else
                 break;
         case TweetListType.List:
             if (searchterm == null)
                 return;
             this.TwitterTerm = searchterm.Trim();
             this.TweetListName = this.TwitterTerm;
             break;
         case TweetListType.MentionsMyTweetsRetweeted:
             SettingsData settingsData = SettingsData.Instance;
             this.TweetListName = "mentions";
             settingsData = (SettingsData)null;
             break;
         case TweetListType.MyTweets:
             this.TweetListName = "my tweets";
             break;
         case TweetListType.Favourites:
             this.TweetListName = "favourites";
             break;
         case TweetListType.Conversation:
             this.TweetListName = "tweet conversation";
             if (originaltweet != null)
             {
                 this.TwitterTerm = originaltweet.InReplyToScreenName;
                 originaltweet.TwitterAccountID = this.TwitterAccountID;
                 originaltweet.TweetType = TweetListType.Conversation;
                 originaltweet.ReplyToVisibility = Visibility.Collapsed;
                 this.AddTweet(originaltweet);
                 ++this.taskCount;
                 this.ShowContentPanel();
                 break;
             }
             else
                 break;
         case TweetListType.RetweetUsers:
             this.TweetListName = "retweeted by";
             this.TwitterTerm = searchterm;
             break;
     }
     if (!string.IsNullOrEmpty(columntitle))
         this.TweetListName = columntitle;
     if (!dontloadtweets)
     {
         Messenger.Default.Register<GenericMessage<object>>((object)this, (object)(((object)ViewModelMessages.RestUpdate).ToString() + this.UniqueTweetListID.ToString()), new Action<GenericMessage<object>>(this.RestUpdate));
         ++this.taskCount;
         Task.Run((Action)(() => TwitterREST.TwitterRest(tweetListViewModel.UniqueTweetListID, tweetListType, tweetListViewModel.TwitterAccountID, tweetListViewModel.TweetType != TweetListType.Conversation ? RefreshTypes.Normal : RefreshTypes.ForeverScroll, new Action(tweetListViewModel.ShowContentPanel), tweetListViewModel.TwitterTerm, originaltweet != null ? originaltweet.InReplyTo : new Decimal(0), InitialLastID, new Decimal(0), tweetListViewModel.ListRetweets)));
         Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.DeleteTweet), new Action<GenericMessage<object>>(this.DeleteTweet));
         Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.DeleteUserTweets), new Action<GenericMessage<object>>(this.DeleteUserTweets));
         Messenger.Default.Register<GenericMessage<KeyValuePair<Decimal, bool>>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.Blocked), new Action<GenericMessage<KeyValuePair<Decimal, bool>>>(this.Blocked));
         Messenger.Default.Register<GenericMessage<object>>((object)this, (object)ViewModelMessages.EnableReplyOptions, new Action<GenericMessage<object>>(this.EnableReplyOptions));
         if (tweetListType != TweetListType.DirectMessages)
         {
             if (tweetListType == TweetListType.FriendsTimeline || tweetListType == TweetListType.MyTweets || tweetListType == TweetListType.MentionsMyTweetsRetweeted || tweetListType == TweetListType.Conversation)
             {
                 Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.StreamingStatusReceived), new Action<GenericMessage<object>>(this.StreamingUpdate));
                 Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.StreamingStatusDeleted), new Action<GenericMessage<object>>(this.StreamingDelete));
             }
             Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.RemoveFavouriteTweet), new Action<GenericMessage<object>>(this.RemoveFavouriteTweet));
             Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.FavouriteTweet), new Action<GenericMessage<object>>(this.FavouriteTweet));
         }
         else
         {
             Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.StreamingDirectMessage), new Action<GenericMessage<object>>(this.StreamingDMUpdate));
             Messenger.Default.Register<GenericMessage<object>>((object)this, (object)this.MultiAccountifyToken((Enum)ViewModelMessages.StreamingDirectMessageDeleted), new Action<GenericMessage<object>>(this.StreamingDMDelete));
         }
     }
     if (this.DataContextInitialised != null)
         this.DataContextInitialised((object)this, EventArgs.Empty);
 }
 private void PinColumn(MetroTwitColumn column, TweetListViewModel newcolumn)
 {
     this.ColumnsToShow.Add(newcolumn);
     if (column.Index != this.ColumnsToShow.Count - 1)
         column.Index = this.ColumnsToShow.Count - 1;
     this.SetAddButtonsEnabled(column.ColumnType, false);
 }