コード例 #1
0
ファイル: ManageForum.cs プロジェクト: cixonline/cixreader
        public ManageForum(DirForum forum)
        {
            InitializeComponent();
            _forum = forum;

            _general = new ManageForumGeneral(forum);
            _moderators = new ManageModerators(forum);
            _participants = new ManageParticipants(forum);
        }
コード例 #2
0
 private void OnParticipantsUpdated(DirForum forum)
 {
     Platform.UIThread(this, delegate
     {
         UserList = _forum.Participants();
         AddList = new List<string>(_forum.AddedParticipants);
         RemoveList = new List<string>(_forum.RemovedParticipants);
         UpdateList();
     });
 }
コード例 #3
0
ファイル: Participants.cs プロジェクト: cixonline/cixreader
        public Participants(MainForm mainForm, string forumName)
        {
            InitializeComponent();

            CIX.DirectoryCollection.ForumUpdated += OnForumUpdated;
            CIX.DirectoryCollection.ParticipantsUpdated += OnParticipantsUpdated;

            _forum = CIX.DirectoryCollection.ForumByName(forumName);
            _mainForm = mainForm;
            _showMugshots = false;

            if (_forum == null)
            {
                CIX.DirectoryCollection.RefreshForum(forumName);
            }
        }
コード例 #4
0
 /// <summary>
 /// Notify that a forum details has been updated.
 /// </summary>
 /// <param name="dirForum">The forum for which the list was updated</param>
 internal void NotifyForumUpdated(DirForum dirForum)
 {
     if (ForumUpdated != null)
     {
         ForumUpdated(dirForum);
     }
 }
コード例 #5
0
        /// <summary>
        /// Refresh the details of the forum, including title and description.
        /// </summary>
        /// <param name="forumName">The forum name</param>
        public void RefreshForum(string forumName)
        {
            Thread t = new Thread(() =>
            {
                if (CIX.Online)
                {
                    DirForum forum = null;
                    try
                    {
                        string encodedForumName = FolderCollection.EncodeForumName(forumName);
                        LogFile.WriteLine("Updating directory for {0}", forumName);

                        HttpWebRequest wrGeturl = APIRequest.Get("forums/" + encodedForumName + "/details", APIRequest.APIFormat.XML);
                        Stream objStream = APIRequest.ReadResponse(wrGeturl);
                        if (objStream != null)
                        {
                            using (XmlReader reader = XmlReader.Create(objStream))
                            {
                                XmlSerializer serializer = new XmlSerializer(typeof(ForumDetails));
                                ForumDetails forumDetails = (ForumDetails)serializer.Deserialize(reader);

                                bool isNewForum = false;

                                forum = ForumByName(forumDetails.Name);
                                if (forum == null)
                                {
                                    forum = new DirForum();
                                    isNewForum = true;
                                }
                                forum.Name = forumDetails.Name;
                                forum.Title = forumDetails.Title;
                                forum.Desc = forumDetails.Description;
                                forum.Cat = forumDetails.Category;
                                forum.Sub = forumDetails.SubCategory;
                                forum.Recent = forumDetails.Recent;
                                forum.Type = forumDetails.Type;

                                lock (CIX.DBLock)
                                {
                                    if (isNewForum)
                                    {
                                        CIX.DB.Insert(forum);
                                        _allForums[forum.ID] = forum;
                                    }
                                    else
                                    {
                                        CIX.DB.Update(forum);
                                    }
                                }

                                LogFile.WriteLine("Directory for {0} updated", forum.Name);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        CIX.ReportServerExceptions("DirectoryCollection.RefreshForum", e);
                    }
                    NotifyForumUpdated(forum);
                }
            });
            t.Start();
        }
コード例 #6
0
ファイル: JoinForum.cs プロジェクト: cixonline/cixreader
        private void JoinForum_Load(object sender, EventArgs e)
        {
            CIX.DirectoryCollection.ForumUpdated += OnForumUpdated;

            statusField.Text = Resources.JoinForumStatusText;

            _forum = CIX.DirectoryCollection.ForumByName(_forumName);
            if (_forum != null && !string.IsNullOrEmpty(_forum.Desc))
            {
                RefreshForum(_forum);
            }
            else
            {
                if (_forum != null)
                {
                    forumTitle.Text = _forum.Title;
                }
                forumName.Text = _forumName;
                forumImage.Image = CategoryFolder.IconForCategory("CIX");
                CIX.DirectoryCollection.RefreshForum(_forumName);
            }
            ResizeForm();
        }
コード例 #7
0
ファイル: JoinForum.cs プロジェクト: cixonline/cixreader
        private void RefreshForum(DirForum forum)
        {
            if (forum != null)
            {
                forumName.Text = forum.Name;
                forumImage.Image = CategoryFolder.IconForCategory(forum.Cat);
                forumTitle.Text = forum.Title;

                string descText = string.Format("<font face=\"Arial\" size=\"11px\"><div style=\"color:rgb({0});\">{1}</div></font>", UI.ToString(SystemColors.ControlText), forum.Desc);
                descText = descText.Replace("\n", "<br/>");
                forumDescription.Text = descText;

                if (forum.IsClosed)
                {
                    statusField.Text = Resources.JoinClosedForum;
                    joinButton.Text = Resources.RequestAdmittance;
                }

                ResizeForm();
            }
        }
コード例 #8
0
ファイル: JoinForum.cs プロジェクト: cixonline/cixreader
        /// <summary>
        /// Callback after the forum details are refreshed from the server, whether or not they
        /// succeed. The e.Forum parameter is null if the forum doesn't exist.
        /// </summary>
        private void OnForumUpdated(DirForum forum)
        {
            Platform.UIThread(this, delegate
            {
                _forum = forum;
                if (_forum != null)
                {
                    RefreshForum(_forum);
                }
                else
                {
                    forumName.Text = _forumName;
                    forumImage.Image = CategoryFolder.IconForCategory("CIX");
                    statusField.Text = Resources.JoinNoSuchForum;
                    cancelButton.Text = Resources.Close;
                    joinButton.Visible = false;
                    joinButton.Enabled = false;

                    ResizeForm();
                }
            });
        }
コード例 #9
0
 private void OnModeratorsUpdated(DirForum forum)
 {
     Platform.UIThread(this, delegate
     {
         UserList = _forum.Moderators();
         AddList = new List<string>(_forum.AddedModerators);
         RemoveList = new List<string>(_forum.RemovedModerators);
         UpdateList();
     });
 }
コード例 #10
0
ファイル: FoldersTree.cs プロジェクト: cixonline/cixreader
 /// <summary>
 /// Invoke the forum management dialog.
 /// </summary>
 public void ManageForum(DirForum forum)
 {
     ManageForum manageForumWindow = new ManageForum(forum);
     manageForumWindow.ShowDialog();
 }
コード例 #11
0
 public ManageForumGeneral(DirForum forum)
 {
     InitializeComponent();
     _forum = forum;
 }
コード例 #12
0
 public ManageParticipants(DirForum forum)
 {
     InitializeComponent();
     _forum = forum;
 }
コード例 #13
0
ファイル: ForumView.cs プロジェクト: cixonline/cixreader
        /// <summary>
        /// Update the list of moderators
        /// </summary>
        private void OnModeratorsUpdated(DirForum forum)
        {
            Platform.UIThread(this, delegate
            {
                if (forum == _thisForum && frmCanvas.Items.Count > 1)
                {
                    ForumPage forumFolderItem = (ForumPage) frmCanvas.Items[0];
                    forumFolderItem.Forum = _thisForum;
                    forumFolderItem.InvalidateItem();

                    ProfileGroupItem moderatorsItem = (ProfileGroupItem) frmCanvas.Items[1];
                    moderatorsItem.Items = new StringCollection();
                    if (_thisForum != null)
                    {
                        moderatorsItem.Items.AddRange(_thisForum.Moderators());
                    }
                    moderatorsItem.InvalidateItem();
                }
            });
        }
コード例 #14
0
ファイル: ForumView.cs プロジェクト: cixonline/cixreader
        /// <summary>
        /// Event invoked when a forum's details are refreshed from the server.
        /// </summary>
        private void OnDirForumUpdated(DirForum forum)
        {
            if (forum == null || forum.Name != _currentFolder.Name)
            {
                return;
            }

            Platform.UIThread(this, delegate
            {
                _thisForum = forum;

                if (frmCanvas.Items.Count > 0)
                {
                    ForumPage forumFolderItem = (ForumPage) frmCanvas.Items[0];
                    forumFolderItem.Forum = _thisForum;
                    forumFolderItem.InvalidateItem();
                }
            });
        }
コード例 #15
0
ファイル: ForumView.cs プロジェクト: cixonline/cixreader
        /// <summary>
        /// Display the page for the specified forum.
        /// </summary>
        public override bool ViewFromFolder(FolderBase folder, Address address, FolderOptions flags)
        {
            if (folder is TopicFolder)
            {
                _currentFolder = folder as TopicFolder;
                _thisForum = CIX.DirectoryCollection.ForumByName(_currentFolder.Name);

                FoldersTree.SetTopicName(folder.Name);

                CIX.DirectoryCollection.RefreshForum(folder.Name);

                FillCanvas();
            }
            return true;
        }
コード例 #16
0
 /// <summary>
 /// Notify that the moderator list has been updated.
 /// </summary>
 /// <param name="dirForum">The forum for which the list was updated</param>
 internal void NotifyModeratorsUpdated(DirForum dirForum)
 {
     if (ModeratorsUpdated != null)
     {
         ModeratorsUpdated(dirForum);
     }
 }
コード例 #17
0
 /// <summary>
 /// Notify that the participants list has been updated.
 /// </summary>
 /// <param name="dirForum">The forum for which the list was updated</param>
 internal void NotifyParticipantsUpdated(DirForum dirForum)
 {
     if (ParticipantsUpdated != null)
     {
         ParticipantsUpdated(dirForum);
     }
 }
コード例 #18
0
ファイル: Participants.cs プロジェクト: cixonline/cixreader
 /// <summary>
 /// Callback after the forum details are refreshed from the server, whether or not they
 /// succeed. The e.Forum parameter is null if the forum doesn't exist.
 /// </summary>
 private void OnForumUpdated(DirForum forum)
 {
     if (forum != null)
     {
         _forum = forum;
         LoadList();
     }
 }
コード例 #19
0
ファイル: Participants.cs プロジェクト: cixonline/cixreader
 private void OnParticipantsUpdated(DirForum forum)
 {
     Platform.UIThread(this, delegate
     {
         if (forum == _forum)
         {
             LoadList();
         }
     });
 }
コード例 #20
0
 public ManageModerators(DirForum forum)
 {
     InitializeComponent();
     _forum = forum;
 }