Интерфейс

Пожелания по улучшению программы. Чего еще не хватает в DM.

Moderators: Korney San, Qwertiy, marcipan, igelizm

User avatar
Korney San
Гуру
Posts: 1116
Joined: 02 Oct 2006, 17:01 Mon
Location: Беларусь, Гомель
Contact:

Post by Korney San »

x2088 wrote:... другими словами "Сворачивать DM в трей и делать акнивным окно заданного процесса (броузеров ведь много разных и поэтому пользователь должен указать тот, которым он пользуется).
Немного не так. Если DM свёрнут в трей, то основное окно и не появляется. А вот если основное окно открыто, то оно получает фокус всякий раз, когда закрывается окно добавления закачки (независимо от того, была закачка добавлена или отменена).
У меня же типичная ситуация: открыт GreenBrowser, открыта Опера, открыт DM. Я копирую ссылки из GB, из Оперы, потом в DM их сортирую и запускаю. Каждый раз щёлкаться из DM в любой из браузеров напрягает.
А теперь некоторые "почему":
1. Можно свернуть в трей, нащёлкать ссылок и развернуть обратно -> это лишние телодвижения.
2. Опера быстро открывает сайты. Однако некоторые сайты заточены исключительно под IE, поэтому приходится пользоваться его опероподобными клонами -> мне нужны именно два браузера.

Подытоживая написанное и суммируя с цитированным, получаем радиогруппу в окне добавления закачки (можно сдублировать в основные настройки с синхронизацией):
1. Вывести основное окно (с разворачиванием из трея при необходимости)
2. Не выводить основное окно (если DM сидит в трее, пусть сидит, если не сидит - не передавать ему фокус, как будто он сидит).
Ну и естественно, запоминать выбранное состояние между окнами. :)
XPProSP3, DM 5.15.2.1341, Pale Moon 20.0.1, Opera Next 12.15 (1748) RTFM & STFF
Если Вы не можете быть хорошим примером, то Вам просто придётся служить ужасным предостережением. © Кэтрин Эйрд
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Продолжение спора (начало см на http://downloadmaster.net/forum/viewtopic.php?t=8137 ):

___ Будущую структуру я представляю так, ведь переписывать DM "с нуля", всё равно когда-нибудь придётся (Может это и плохое объяснение, но может, вы поймёте):

[Общая блок-схема (упрощённая)]

Code: Select all

       +--------------------------------------------------------------------+
       |                          Скриптовый движок                         |
       +----------------------+----------------------+----------------------+
       |         Perl         |        Basic         |         Java         |
       +----------------------+----------------------+----------------------+
                  ^                       ^                      ^
                  ------------------------------------------------
                                          V
+----------------------+      +----------------------+      +----------------------+
|       Плагины        | <==> |     Исполняемый      | <==> |       api.dll        |
+----------------------+      |  файл download.exe   |      +----------------------+
+----------------------+      |   Яз. файлы для DM   |      +----------------------+
| Графическая оболочка | ===> |                      | <==> |   Протоколы сетей    |
+----------------------+      +----------------------+      +----------------------+
|       main.dll       |                  ^              +> |         HTTP         |
+----------------------+                  V              |  +----------------------+
|      adddl.dll       |      +----------------------+   +> |        HTTPS         |
+----------------------+      |  Файлы конфигурации  |   |  +----------------------+
|       info.dll       |      +----------------------+   +> |         FTP          |
+----------------------+      |     general.ini      |   |  +----------------------+
|      ftpexp.dll      |      +----------------------+   +> |       TORRENT        |
+----------------------+      |       off.ini        |   |  +----------------------+
|       gdl.dll        |      +----------------------+   +> |         MMS          |
+----------------------+      |   Лицензия для IDA   |   |  +----------------------+
|      config.dll      |      +----------------------+   +> |         ED2K         |
+----------------------+                                 |  +----------------------+
|        шкура         |      +----------------------+   +> |         FTPS         |
+----------------------+      |       Интернет       | <=+  +----------------------+
|  Яз. файлы для IDA   |      +----------------------+   +> |        Другие        |
+----------------------+                                    +----------------------+
* Скриптовый движок - без комментариев;

* Плагины - без комментариев;

* Графическая оболочка - разделена на отдельные части и вынесена в отдельные DLL + шкура (skn-файл) + lng-файл (IDA).
Подробнее:
main.dll - главное окно;
adddl.dll - окно добавить закачку;
info.dll - информационное окно;
ftpexp.dll - фтп эксплорэр (со всеми потрохами);
gdl.dll - окно групповой закачки;
config.dll - окно настроек программы.
___ Подобное разделение избавит разработчиков от криков "Верните как было!!!", к тому же, при разрешении, в них в каждом по отдельности, можно самому поковыряться, и переделать интерфейс окна под себя. И осуществить возможность выбора одного из нескольких интерфейсов.

* api.dll - это естественно API, вынесенный отдельно и при разрешении разработчиков в нем так же можно дописать новые возможности.
___ Параллельно можно добавить возможность использования ещё нескольких файлов для расширения возможностей API, которые исполняемый файл т.ж должен будет "видеть" и уметь пользоваться. При этом естественно между ними не должно быть конфликтных ситуаций и должна быть полная совместимость, что может быть сложно достижимо, с увеличением количества таких файлов, поэтому данная возможность весьма сомнительна, но можно это сделать на страх и риск пользователя.

* Протоколы сетей - на каждый протокол - свой файл (набор файлов), для его поддержания. У подобной системы должен быть ОДИН язык общения между протоколом и исполняемым файлом.

Файлы конфигурации - для (естественно) сохранения настроек DM и совместимости с режимом "Portable":
general.ini - для сохранения всего, что сейчас хранится в реестре, кроме данных о регистрации и даты установки (для IDA);
off.ini - предназначен для временного или постоянного отключения некоторых "не нужных" элементов оформления. (Специально для тех, кто "спит и видит" DM так, как было в версии 0.0.1 :D (выберите сами);
Лицензия для IDA - как файл, для совместимости с режимом "Portable";

download.exe - его единственная функция "скрутить" всё вместе и показать пользователю в удобном для него виде, с помощью графической оболочки. Других инструкций, кроме инструкций по управлению закачкой с помощью необходимого для этого протокола, он не имеет. При этом он должен видеть любой файл, который был вновь добавлен, будь то новый протокол, или скрипт, или дополнительный файл конфигурации API. Всё необходимое для этого он должен "брать" из этих файлов.
___ Для ускорения определения, при необходимости, какой-либо команды, которую необходимо передать для управления закачкой, нужно чтобы исполняемый файл делал это, на основе переданных ему данных из соответствующего протокола, которому принадлежит закачка.
___ Т.е для исполняемого файла должна создаваться иллюзия, что существует всего "один" протокол, но в зависимости от того какую закачку подсветил пользователь, исполняемый файл должен предоставить в графическом виде (элементы графического представления, как я уже говорил должны находиться отдельно, в данном случае в main.dll) свой набор данных для каждой закачки в соответствии с используемым для неё протоколом и пользовательскими настройками.

Описание главного окна (таблицы закачки) нового интерфейса:
Для объединения всего этого в кучу, в единый пользовательский интерфейс я предлагаю усовершенствовать только таблицу с закачками. Она должна выглядеть так:
Таблица для закачки, используя протокол № 1, под ней, через одну пустую строку, таблица для закачки, используя протокол № 2 и т.д пока есть протоколы. Получается некий лист на котором отображено последовательно несколько таблиц для каждого отдельного протокола, со своим набором колонок, которые пользователь может настроить, причём каждую в отдельности и по своему вкусу и желанию. При отсутствии закачек на каком-либо протоколе таблица для него должна скрываться и пользователь, соответственно, её видеть не должен, а если ему нужно настроить отображение колонок для данного протокола, то он включает принудительное отображение соответствующей таблицы и делает с ней всё, что хочет. Т.к у каждого протокола может быть (и есть) специфические свойства, то специально для них должна отображаться панелька сверху или снизу общей таблицы (по выбору пользователя), в которой будут представлены кнопки или может быть даже командная строка для их использования, данная панелька должна отображаться только если подсвечена закачка по её протоколу, так же каждая панелька должна иметь возможность постоянного отображения и быть перетаскиваемой в пределах указанной области (как в окнах проводника всех виндов до WinXP). При этом для управления закачкой любого протокола, её необходимо выбрать (подсветить) и нажать соответствующую для необходимого действия кнопку на общей панели инструментов, для всех протоколов закачек (будем считать ею имеющуюся панель инструментов) или клавиатурную комбинацию. Соответственно должен происходить автовыбор команды для данного действия для каждого протокола, в соответствии с тем, что подсвечено, а при подсветке закачек из нескольких или всех категорий - поочерёдная отправка соответствующих для данного действия команд для каждого из протоколов. Кроме всего этого для ячеек таблицы, в которой размер записи слишком велик, а растягивать данный столбец является не желательным (например, список фильтров IP), можно снизу данной таблицы добавить дополнительную "статусную" панель, которая будет отображать на всю свою ширину (которая равна всей ширине таблицы) значение отдельной ячейки, по которой пользователь произвёл щелчок держа например, CTRL + ALT. Можно осуществить отображение нескольких таких панелей как для одного протокола, так и для нескольких, фиксируя или закрывая их. Для этого можно осуществить 4 кнопки в конце панели - "-", "+", "<изображение_канцелярской_кнопки>" и "x", что означает "убрать 1-у панель", "добавить 1-у панель", "зафиксировать панель", и "закрыть панель" соответственно. Не зафиксированные панели после щелчка в любом месте - закрываются. Если содержимое не помещается и в этом случае, то в данном случае содержимое должно отображаться в режиме бегущей строки.

Как можно заметить здесь нет ни одного дублирующегося элемента интерфейса для каждого из протоколов - "всё в одном". Таблица закачек позволяет видеть все закачки одновременно по всем протоколам, вследствие чего ненужно переключаться между огромным числом вкладок (для меня в данном случае оно начинается с двух) для наблюдения за закачками каждого протокола.

* Таблица для существующих сегодня протоколов по-умолчанию должна отображаться всегда;

* Выбор "панельки" для отображения содержания отдельной ячейки в ней должен производиться так: или в той, которой щёлкнул мышкой пользователь, или циклически (по выбору пользователя в опциях).

* При подобной реализации таблицы закачек, при прокрутке списка закачек, возникает эффект отсутствия заголовка таблицы и эффект двойного заголовка, поэтому для исправления этого недостатка необходимо осуществить проверку двух верхних строк на наличие заголовка таблиц разных протоколов и принадлежность первой и второй строки общей таблицы к одному протоколу, т.е к закачкам по одному протоколу.
___ Для избежания подобных эффектов делаем следующие действия: заголовок в самой верхней строке должен быть всегда, для этого верхнюю строку таблицы (первая строка общей таблицы) делаем не прокручиваемой и отображаем в ней тот заголовок, той таблицы, строка которой отображается во второй строке общей таблицы, эту проверку думаю надо осуществлять только при наведении указателя и нажатии (и удержании) левой кнопки мыши на области, принадлежащей к прокрутке по вертикале данной общей таблицы закачек, а так же при обнаружении команды от колёсика мышки, причём не чаще 20 раз в сек. - думаю этого достаточно, далее проверяем наличие заголовка следующей таблицы (первая строка таблицы какого-либо протокола) во второй строке общей таблицы и при его обнаружении надо дать команду автоматической прокрутки вниз на одну строку, т.е поднять таблицу на одну строку, при этом её заголовок поднимется вверх, заменив заголовок предыдущей таблицы.
___ Чтобы избежать эффекта невозможности прокрутки таблицы вверх, необходимо осуществлять восстановление заголовка только ч.з 0,8 - 1,2 сек. (подбор опытным путём) и только в том случае если пользователь не удерживает указатель мыши в области прокрутки по вертикале данной общей таблицы закачек или кнопок "Вверх" и "Вниз" на клавиатуре. После восстановления заголовка, при прокрутке вверх на 1-у строку, появляется эффект двух заголовков для одной и той же таблицы (2 одинаковых), хоть это и восстановится ч.з выше указанные 0,8 - 1,2 сек. но это не красиво, чтобы избежать этого необходимо в течение этих 0,8 - 1,2 сек. отображать заголовок той таблицы, последняя строка которой находится в первой строке общей таблицы, т.е выше расположенной таблицы, принадлежащей др. протоколу. Всё, проблема решена!

* На "панельке" для избежания путаницы СЛЕВА должен отображаться номер закачки попорядку (имя слишком длинно - остаётся мало места) и сокращённое название ячейки - всё жирным шрифтом. Кроме этого необходимо добавить режим, при котором в одной ячейке таблицы разрешалось бы отображение нескольких строк её содержимого, т.е происходил перенос непоместившейся части содержимого в следующую подстроку (строку ячейки). Для этого можно добавить кнопку на панеле инструментов.

Всё это конечно не так-то просто осуществить, но я не требую это "к завтрашнему утру", просто мне таким видится оптимальный вариант DM будущего. Кто соображает лучше меня в программировании, пусть напишет, о возможности существования этой "системы", её достоинства и недостатки.
Last edited by x2088 on 02 Jan 2009, 21:52 Fri, edited 3 times in total.
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

<Перемещено_в_другой_пост>
Last edited by x2088 on 02 Jan 2009, 21:48 Fri, edited 4 times in total.
Daniel77
Posts: 1
Joined: 27 Nov 2007, 14:44 Tue

Post by Daniel77 »

ИМХО Дизайн лого хреновый новый....
Старый намного рульней был! хатя анимационная иконка при закачке очень даже ничего!
А так вообще не идёт ДМ!
И Очень бы хотелось видеть старую шкурску в ДМ под названием *SKY*
marcipan
Гуру
Posts: 1400
Joined: 11 Jun 2005, 3:55 Sat
Location: Санкт-Петербург

Post by marcipan »

2 x2088
Одного поста для спора мало ? :)
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Мы с Vimann заспорили в торрентах про интерфейс.
Last edited by x2088 on 02 Jan 2009, 21:50 Fri, edited 1 time in total.
Vimann
Профи
Posts: 63
Joined: 23 Jan 2006, 0:46 Mon

Post by Vimann »

x2088 wrote:Мы с Vimann заспорили в торрентах про интерфейс.
В принципе, я не спорил. Просто очень не хочется, чтобы из скрещивания ежа с удавом получилась колючая проволока, о которую пришлось бы потом колоться. Но если выйдет мягкий и пушистый зверёк - почему бы и нет...
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Вот про это я и втираю, подстригаю все иголки, чтоб нигде не торчало.
недовольный новым дизайно
Posts: 3
Joined: 26 Nov 2007, 14:16 Mon

Post by недовольный новым дизайно »

нрвый дизайн стерпят только ярые фаны :lol:
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Новую колонку "Возможность докачки" в студию!!! Я не использую окна "Инфо. о закачке", и зарание не могу узнать поддерживается докачка или нет - часто узнаю об этом после перезапуска, но уже позно...
marcipan
Гуру
Posts: 1400
Joined: 11 Jun 2005, 3:55 Sat
Location: Санкт-Петербург

Post by marcipan »

x2088 wrote:Новую колонку "Возможность докачки" в студию!!! Я не использую окна "Инфо. о закачке", и зарание не могу узнать поддерживается докачка или нет - часто узнаю об этом после перезапуска, но уже позно...
И я не использую, но знаю поддерживается или нет докачка.
Обратите внимание на колонку "Состояние", слевой стороны бывают разные значки.
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Спасибо, до меня это не доходило, да я на них и не заглядывался особо, к тому же большую часть времени (почти всё время), во время закачки, DM у меня висит в трее.
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Хочу предложить изменить содержимое ячеек для закачек, размер файла которых - неизвестен:

* в ячейке "Состояние" писать только состояние (без размера закачанной части файла);
* в ячейке "Размер" писать - "Неизвестно".

Для подобных закачек хотелось бы иметь возможность указания размера и / или MD5 файла (если они были выложены отдельно на к.л странице сайта), для того, что бы после того как DM посчитает, что закачка завершена сравнил эти данные, и если они не совпадают - сообщил об этом и предложил перекачать или сделал это автоматически. Для размера файла так же иметь возможность указания погрешности размера в байтах и / или процентах, когда точный размер - не известен (размер указан до сотых). Это даст возможность автоматического "указания" DM`у, о необходимости перекачки файла, если размер файла после "окончания" закачки - меньше указанного.
PAShYCh
Профи
Posts: 80
Joined: 22 Aug 2007, 17:53 Wed
Location: Украина, Днепродзержинск
Contact:

Post by PAShYCh »

заменить бы стандартный шрифт, или лучше зделать так что б его было можно менять (как для списка закачек) 8)
[ WinXPPro SP2 | Download Master 5.5.12.1171 | DM В контакте ]
Image
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Разделите пункт дерева "Состояние -> Закачка" на 2 - "Поддерживается" и "Не поддерживается", думаю так будет удобнее.

Какого кляпа DM останавливает закачки, не поддерживающие докачку, вместе со всеми остальными например, по команде пользователя "Приостановить всё", изменение количества одновременных закачек в меньшую сторону. На мой взгляд такие закачки на это реагировать не должны, если закачка уже началась, а если надо её остановить, то делать это с дополнительно нажатым, к примеру SHIFT`ом.
Post Reply