Я уже говорил о том что в миранде, а именно в clist_modern.dll, появилась фича «Режимы вида». Её можно описать как некую фильтрацию КЛ по задающимся критериям, которые можно сохранять в пресеты. Согласен, молодцы ребята, хорошая и нужная вещь. Особенно пригодится людям с большим кол-вом контактов и протоколоваккаунтов.


Всё бы хорошо, но я понял чего реально не хватает в такой фильтрации и вообще в КЛ [контакт листе]. А не хватает там .. тегов!


И вот теперь потратив некоторое кол-во времени, я накидал в фотошопе как это может примерно выглядеть и именно примерно, чтобы понять суть.




Итак, какой основной принцип нашего концепта тегов, а он очень простой, мы задаём контактам различные теги, которые считаем нужнымиудобными, и потом в режимах вида мы можем задать фильтрацию по этим самым тегам. Это первая часть моей идеи.
Вот пример меню контакта, в котором можно изменитьзадать теги контакту:

Заметка: далее по тексту все картинки кликабельные, нажмите чтобы увидеть полный анимированный вариант.






а вот собственно и режимы вида, теги у нас будут на отдельной вкладке, в примере отмечен тег basketball и только контакты имеющие этот тег будут показаны. при желании можно компоновать и так далее.

Всё просто как апельсин.




Теперь разовьём наш концепт дальше.
Контакт лист у нас организован группами, которые мы создали, у каждого протоколааккаунта свои группы как правило. Что в результате мы получаем: кучу групп с разных протоколоваккаунтов — это раз, два — то что контакты жестко привязываются к одной группе.
Остановимся пока на втором.

Ситуация такая, у нас есть контакт, условно назовём его jab-contact #1, с этим человеком нас может связывать многое, он может быть нашим другом, мы можем работать в одной фирме и т.д., аналогичная картина у нас неким контактом icq-contact #1, он к примеру наш друг, а по выходным мы с ним частенько ездим на пейнтболл. Казалась бы в чем проблема?
а проблема в том что когда мы работаем нам удобно чтобы jab-contact #1 был в группе work, а когда отдыхаем в группе друзей friends, с контактом icq-contact #1 все аналогично.

следует понимать чем больше контактов и аккаунтовпротоколов тем чаще такие ситуации будут возникать.

И как же мы можем исправить это тегами?
А очень просто, нужно всего лишь сделать некий режим в КЛ с альтернативными группами.

Работать альтернативные группы будут тоже незатейливо, они будут работать по принципу фильтрации, а именно: в свойствах будут иметь список тегов и несколько настроек, и в группу будут выводится [фильтроваться] только те контакты, которые имеют теги заданные в настройках данной группы.

собственно вот так оно будет выглядеть:

немного подумав я понял что нужно ввести ещё две настройки, иначе у нас будут ненужные ограничения:
# Количество совпадений [number of matches] — то есть в свойстве групп у нас отмечено 4 тега к примеру, а параметр количество совпадений будет отвечать за то сколько тегов из списка должен иметь контакт, чтобы отфильтроваться в эту группу.
например альтернативная группа work имеет 4 тега — work, php, designers, boss; с помощью данного параметра мы можем задать сколько тегов из этого списка должен иметь контакт чтобы попасть в группу work.

и вторая настройка это:

# Приоритет [tags with high priority] — то есть мы можем сделать один [а может и несколько] тег приоритетным и если контакт его не имеет то он никаким боком не попадает в нашу группу.
например: опять группа work с четырьмя тегами — work, php, designers, boss; мы задаем приоритет тегу work и контакт не имеющий этого тега уже не попадёт в нашу группу.
в комплексе мы теперь имеем довольно гибкую фильтрацию (=

опять же для наглядности картинка:

в итоге мы не зависим никоим образом от групп в наших аккаунтахпротоколах, можем быстро и безболезнено производить изменения. Также мы теперь не столкнёмся с ситуацием, что нужный нам сейчас контакт находится в другой группе и нам надо перелистывать весь контакт лист. При такой реализации можно и просто создать под каждый тег свою отдельную альтернативную группу и всё.

исходя из выше описанной методики, решается ещё одна проблема для пользователей, которые любят разбивать КЛ по протоколамаккаунтам.

[обсуждение на тему "удобеннужен ли метод разбития кл по протоколамаккаунтам" оставим в покое, в данном случае это оффтоп]

Реализация: просто напросто всем контактам скажем аккаунта протокола Jabber — jabbim.com мы добавляем тег jabber1, для другого протокола ICQ — тег icq, для второго аккаунта протокола Jabber — miranda.im — тег jabber2, а дальше все как по накатанному создаем нужные группы с подгруппами, и тегами делаем нужную фильтрацию в них.
собственно сабж:

понятно что нужен групповой редактор тегов, вот его пример в настройках миранды:

в конце выпадающего списка ещё следует добавить пункт «все теги».
Внизу две кнопки, как Вы видите, они нужны для того чтобы запомнить выбранные контакты и потом, когда мы допустим выбрали другой тег уже, отметить их опять, ведь почти одной и той же группе контактов может соответствовать несколько тегов.

# Альтернативные группы не следует понимать как прямую замену обычным группам, это будет просто второй режим вида КЛ, у пользователя должна быть альтернатива.

# Также теги и альтернативные группы должны конечно экспортироватьсяимпортироваться, так как они у нас локальные.

# Возможно кому-то покажется что такой новый режим вида КЛ совсем не нужен иили бред, это его мнение, с ним пусть и остается.

# Мне важно то, что у меня возникла такая мысль, я её немного развил и написал Вам этот пост.

# Также основная часть поста будет переведена и предложена разработчикам модуля миранды clist_modern.dll. Остаётся надеется что они оценят все это и сделают хотя бы часть.

# Если на вооружение эту идею возьмут другие разработчики IM и реализуют в своих клиентах, честь им и хвала.

Вот собственно и все идеи и весь концепт.