예제 #1
0
파일: StatusMuter.cs 프로젝트: ichttt/Twice
        private static bool CheckMute(MuteEntry entry, Status status)
        {
            char[] typeIndicators = { '#', ':', '@' };
            string value          = entry.Filter;

            char typeIndicator = value[0];

            if (typeIndicators.Contains(typeIndicator))
            {
                value = value.Substring(1);
            }

            StringComparer comp = entry.CaseSensitive
                                ? StringComparer.Ordinal
                                : StringComparer.OrdinalIgnoreCase;

            switch (typeIndicator)
            {
            case '#':
                return(status.Entities.HashTagEntities.Any(h => comp.Compare(h.Tag, value) == 0));

            case ':':
                return(comp.Compare(new TweetSource(status.Source).Name, value) == 0);

            case '@':
                return(status.Entities.UserMentionEntities.Any(m => comp.Compare(m.ScreenName, value) == 0));

            default:
                return(!entry.CaseSensitive
                                        ? status.Text.ToLower().Contains(value.ToLower())
                                        : status.Text.Contains(value));
            }
        }
예제 #2
0
        public void NotifyPropertyChangedIsImplementedCorrectly()
        {
            // Arrange
            var obj    = new MuteEntry();
            var tester = new PropertyChangedTester(obj);

            // Act
            tester.Test();

            // Assert
            tester.Verify();
        }
예제 #3
0
 private static bool AddMute(MuteEntry muteEntry)
 {
     lock (MuteCacheLock)
     {
         if (ObservableMuteCache.Contains(muteEntry))
         {
             return(false);
         }
         ObservableMuteCache.Add(muteEntry);
         return(true);
     }
 }
예제 #4
0
        private void btnUnmute_Click(object sender, EventArgs e)
        {
            MuteEntry me = client.Self.MuteList.Find(mle => mle.Type == MuteType.Resident && mle.ID == agentID);

            if (me != null)
            {
                client.Self.RemoveMuteListEntry(me.ID, me.Name);
            }
            else
            {
                client.Self.RemoveMuteListEntry(agentID, instance.Names.GetLegacyName(agentID));
            }
        }
예제 #5
0
        private void EditData_Saved(object sender, MuteEditArgs e)
        {
            Entries.Remove(SelectedEntry);

            var entry = new MuteEntry
            {
                Filter        = EditData.Filter,
                EndDate       = null,
                CaseSensitive = EditData.CaseSensitive
            };

            if (EditData.HasEndDate)
            {
                entry.EndDate = EditData.EndDate;
            }

            Entries.Add(entry);

            EditData.Cancelled -= EditData_Cancelled;
            EditData.Saved     -= EditData_Saved;
            EditData            = null;
        }
예제 #6
0
        public override CmdResult ExecuteRequest(CmdRequest pargs)
        {
            string verb = pargs.CmdName;

            string[] args = pargs.tokens;
            var      chat = TheBotClient.Self;
            string   arg1 = "show";

            if (args.Length > 0)
            {
                arg1 = args[0].ToLower();
            }

            var cmld = chat.MuteList.Copy();

            if (arg1 == "show" || arg1 == "list" || arg1 == "request")
            {
                if (arg1 == "request")
                {
                    chat.RequestMuteList();
                }
                int nfound = 0;
                foreach (var mm in cmld)
                {
                    AddSuccess("Mutelist Item: " + mm.Key + " is " + Helpers.StructToString(mm.Value));
                    nfound++;
                }
                return(Success(verb + " found: " + nfound + " object/agent(s)"));
            }

            lock (cmld)
            {
                cmld.Clear();
            }
            bool unmute = verb.ToLower().StartsWith("u");

            if (arg1 == "all")
            {
                if (unmute)
                {
                    int nfound = 0;

                    foreach (var mm in cmld)
                    {
                        MuteEntry me = mm.Value;
                        chat.UpdateMuteListEntry(me.Type, me.ID, me.Name, MuteFlags.All);
                        chat.RemoveMuteListEntry(me.ID, me.Name);
                        AddSuccess("Unmuted " + Helpers.StructToString(me) + ".");
                        nfound++;
                    }
                    chat.RequestMuteList();
                    return(Success(verb + " found: " + nfound + " object/agent(s)"));
                }
                if (args.Length == 1)
                {
                    args = new[] { "dist", "30" }
                }
                ;
            }

            object    value;
            MuteFlags mf = MuteFlags.All;
            int       argsUsed;

            if (TryEnumParse(typeof(MuteFlags), args, 0, out argsUsed, out value))
            {
                mf = (MuteFlags)value;
            }
            if (!unmute)
            {
                // invert the flags
                mf = (MuteFlags)((int)MuteFlags.All - (int)mf);
            }
            // if flags found
            if (argsUsed > 0)
            {
                args = Parser.SplitOff(args, argsUsed);
            }
            string           muteName = ((MuteFlags)((int)MuteFlags.All - (int)mf)).ToString();
            List <SimObject> PS       = WorldSystem.GetPrimitives(args, out argsUsed);

            if (!IsEmpty(PS))
            {
                int nfound = 0;
                foreach (var prim in PS)
                {
                    UUID     id = prim.ID;
                    MuteType mt = MuteType.Object;
                    if (prim is SimAvatar)
                    {
                        mt = MuteType.Resident;
                    }
                    if (mf == MuteFlags.All)
                    {
                        chat.RemoveMuteListEntry(id, null);
                    }
                    else
                    {
                        chat.UpdateMuteListEntry(mt, id, null, mf);
                    }

                    nfound++;
                    AddSuccess(verb + " " + muteName + " " + prim + " " + id + ".");
                }
                if (nfound > 0)
                {
                    chat.RequestMuteList();
                    return(Success(verb + " " + muteName + ": " + nfound + " object/agent(s)"));
                }
            }
            return(Failure("I don't know who " + pargs.str + " is."));
        }
    }
예제 #7
0
        private void button2_Click(object sender, EventArgs e)
        {
            MuteEntry entry = (MuteEntry)lvMutes.SelectedItems[0].Tag;

            instance.Client.Self.RemoveMuteListEntry(entry.ID, entry.Name);
        }