Feature #1237
openФильтрация входящих сообщений
0%
Description
Задача сложно объяснимая, особенно в терминах текущей реализации плагина.
1. Потому сначала внесём условные определения.
1.1. Тег - параметр сообщения задаваемый пользователем и позволяющий группировать сообщения не зависимо от ленты к которой они принадлежат.
В текущей реализации тег есть только у ленты.
Предлагаю изначально наследовать тег сообщений от их ленты.
1.1.1. Желательно, чтобы теги можно было вкладывать один в другой. при этом иерархия("путь") полностью определяет тег. то есть, например IT/Linux и Linux - не один и тот же, а два различных тега, так же как тег IT/Linux не подразумевает наличия у сообщения тега IT. По сути, вся "вложенность" проявляется только при отображении дерева тегов.
1.2. Категория - параметр сообщения задаваемый автором.
1.3. Имя - зоголовок сообщения, его тема.
1.4. Тело - само сообщение без заголозвков.
1.5. Лента. Представление ленты следует несколько пересмотреть. Как мне вилится, лента - это контейнер содержащий сообщения. В этом смысле он (контейнер) похож на тег. Что позволяет прдставить ленту как тег с уникальным (скрытым) идентификатором отличающим его от обычных тегов. Таким образом понятие "тега ленты" заменяется на её полное имя (нсли она вложена в другие теги).
1.6. Корзина. Так же тег с уникальным идентификатором. Все сообщения с этим тегом должны удалятся по необходимости/расписанию/закрытии приложения или вручную.
1.7. Новизна. Ещё один новый параметр сообщений. Все непрочитанные сообщения полученные в течении текущего сеанса работы приложения считать новыми и отображать, например, другим цветом (указать в насройках).
2. Фильтры. Фильтр - набор условвных выражений с общим условием удовлетворения всем уcловиям, или любому из имеющихся (and¿or). При срабатывании фильтра происходит воспроизведение того или иного набора действий над сообщением.
2.1. Типы условий:
2.1.1. Фиксированная строка
2.1.2. Маска
2.1.3. Regexp
2.1.4. сравнение (равно, больше, меньше, не равно)
2.2. Объекты условий:
2.2.1. Имя
2.2.2. Категория
2.2.3. Тег
2.2.4. Дата
2.2.5. Тело
2.2.6. Вожность
2.2.7. Cостояние (прочитано, не прочитано, новое)
При этом, примерное соответствие будет таким:
2.2.1, 2.2.2, 2.2.3, 2.2.5 - 2.1.1, 2.1.2, 2.1.3
2.2.4, 2.2.6, 2.2.7 - 2.1.4
2.3. Действия.
2.3.1. Добавить тег (Add tag)
2.3.2. Удалить тег (Remove tag)
2.3.3. Задать тег (удаляются все предыдущие теги и присваивается указанный) (Set tag)
2.3.4. Поменять важность на заданную
2.3.5. Поменять состояние на заданное
3. Организация работы фильтров.
Фильтры организуются в цепочку. При срабатывании фильтра воспроизводится набор действий закрепленных за ним и обработка сообщения системой фильтрации завершается.
По умолчанию происходит фильтрация каждого нового сообщения. При необходимости возможен ручной запуск фильтрации из контекстного меню выбранных сообщений.
За примерный образец организации интерфейса можно взять Thunderbird ( http://dump.bitcheese.net/images/ozukesu/screenshot.png ), а можно и что-то своё.