AIMP Forum

AIMP для Windows => Skin Editor / Skin Engine => Вопросы => Topic started by: svist0plas on October 14, 2019, 16:28:35

Title: Задача с двумя многостраничными группами.
Post by: svist0plas on October 14, 2019, 16:28:35
Здравствуйте! Помогите пожалуйста решить следующую задачу.
На одной форме имеются две многостраничные группы. в каждой группе 3 контейнера. Одна группа расположена слева, другая справа.
В левой группе первый контейнер отображает информацию о треках, второй - обложку альбома, третий содержит опциональные кнопочки.
В правой группе все три контейнера такие же как и в левой, только порядок несколько иной. В первом контейнере - обложка альбома, во втором опциональные кнопочки, в третьем информация о треках.
Каждая группа переключается своей кнопкой (соответственно кнопки две).
Задача такова :
Нужно, чтобы каждая группа из трёх контейнеров показывала только два, но с таким условием, что если в левой группе скажем отображается информация о теках, то в правой можно было бы выводить только обложку альбома и опциональные кнопочки, но при этом же если в правой группе оставить включённой обложку альбома, то в левой можно было бы переключаться только между информацией о треках и опциональными кнопочками.
В итоге если в какой либо группе включен контейнер, то он не должен выводиться в другой группе, и наоборот.
Title: Re: Задача с двумя многостраничными группами.
Post by: Zhenya on October 14, 2019, 16:57:45
Какой из этих вариантов?:

1. Одна группа главная, другая — второстепенная.
То есть, пока в главной группе не поменяется текущий контейнер, то во второстепенной нельзя включить такой же контейнер.

2. Группы равнозначны.
То есть, если переключить контейнер в любой группе, то в другой группе, если отображается такой же контейнер, этот контейнер поменяется на другой.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 14, 2019, 16:59:18
Первый
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 14, 2019, 17:04:26
Ниже скриншоты, они ещё не идеальные, но задумка примерно такова.
Title: Re: Задача с двумя многостраничными группами.
Post by: Zhenya on October 14, 2019, 17:41:07
Так?
Пока особо не проверял, но вроде есть один косяк, позже посмотрю.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 14, 2019, 18:06:30
Похоже, только в левом переключаются все три.
Нужен примерно такой алгоритм:
если в левом 1 то в правом 2, 3
если в левом 2 то в правом 1, 3

и при этом

если в правом 1 то в левом только 2, 3
если в правом 2 то в левом только 1, 3
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 15, 2019, 18:31:01
 :-\ Может у кого ещё какие варианты примеров есть по этой теме?  ???
Title: Re: Задача с двумя многостраничными группами.
Post by: Black_AVP on October 15, 2019, 20:50:41
Если я правильно понял, кратко: страницы в группах должны взаимно исключать друг друга?
На скриптах решаемо (см. влож.)
На будущее (всех всегда прошу), делайте тестовые схематичные проекты - понять намного проще будет, чем на словах и скриншотах и помогающих избавите от рутины.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 16, 2019, 16:35:53
Если я правильно понял, кратко: страницы в группах должны взаимно исключать друг друга?
На скриптах решаемо (см. влож.)
На будущее (всех всегда прошу), делайте тестовые схематичные проекты - понять намного проще будет, чем на словах и скриншотах и помогающих избавите от рутины.

Спасибо Black_AVP! Это именно то, что надо  :)
В следующих сложных вопросах обязательно буду выкладывать тестовые проекты.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 16, 2019, 17:45:32
Заметил в тесте такую особенность:
при самом первом запуске (после компиляции), В левой и правой группе отображается первый контейнер.
Далее если их погонять, то всё как бы становится на свои места и в последствии работает адекватно.
Попробовал добавить в "OnLoaded" одну строчку, теперь вроде при первом запуске после компиляции работает адекватно.
Проверьте пожалуйста.
Title: Re: Задача с двумя многостраничными группами.
Post by: Black_AVP on October 16, 2019, 18:27:33
Скрипты всегда срабатывают при запуске плеера.  С OnLoaded тоже надо быть осторожным, я потому и не стал над ним мудрить, что любая принудительная установка счётчиков (или компонентов) в некоторое начальное значение приводит к тому, что при всех последующих запусках это значение и будет устанавливаться, а не браться из конфига. В данном случае скин всегда будет запускаться с правым контейнером 2. Мне кажется, лучше смирится с некоторой некорректностью при первом применении скина, чем лишить пользователя сохранения состояния элементов.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 16, 2019, 18:40:10
В данном случае скин всегда будет запускаться с правым контейнером 2. Мне кажется, лучше смирится с некоторой некорректностью при первом применении скина, чем лишить пользователя сохранения состояния элементов.
Да кстати справедливо замечено. Полностью согласен.
Title: Re: Задача с двумя многостраничными группами.
Post by: Black_AVP on October 16, 2019, 18:49:31
В принципе, обойти это можно, но тогда в onLoaded надо определять первый запуск скина, при этом конфиг-файл ещё не существует и "чтение" из него приведёт к установке значений по умолчанию, но тогда в скриптах надо каждый раз записывать состояние обеих групп (PageIndex) в конфиг.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 16, 2019, 18:59:13
При каждом переключении групп в конфиг файл будут сразу вноситься изменения, думаю это того не стоит, лучше оставить первоначальный вариант. Просто нулевые контейнеры будут с разным характером данных, возможно это будет смотреться даже интересней.
Title: Re: Задача с двумя многостраничными группами.
Post by: Black_AVP on October 16, 2019, 20:01:30
При каждом переключении групп в конфиг файл будут сразу вноситься изменения, думаю это того не стоит ...
Страшного в этом ничего нет, пока плеер запущен в файл ничего не пишется, всё делается в памяти.
Title: Re: Задача с двумя многостраничными группами.
Post by: svist0plas on October 16, 2019, 20:12:13
Страшного в этом ничего нет, пока плеер запущен в файл ничего не пишется, всё делается в памяти.
Хорошо, если сможете скиньте тест пожалуйста  :)