FileFilterControl

Programming Far Manager plugins

FileFilterControl

Функция FileFilterControl позволяет управлять созданием и применением файловых фильтров.
intptr_t WINAPI FileFilterControl(
  HANDLE hHandle,
  enum FAR_FILE_FILTER_CONTROL_COMMANDS Command,
  intptr_t Param1,
  void *Param2
);

Параметры

hHandle
Смотрите описание Command.
Command
Может быть одним из следующих значений (перечисление FAR_FILE_FILTER_CONTROL_COMMANDS):
КомандаОписание
FFCTL_CREATEFILEFILTER Создаёт фильтр для заданной области.
hHandle должен быть установлен в значение PANEL_ACTIVE или PANEL_PASSIVE,
для фильтра типа FFT_CUSTOM, описатель должен быть установлен в значение PANEL_NONE.
Param1 в следующее значение (перечисление FAR_FILE_FILTER_TYPE):
КонстантаОписание
FFT_PANEL панель
FFT_FINDFILE диалог поиска файлов
FFT_COPY диалог копирования
FFT_SELECT диалог пометки файлов
FFT_CUSTOM пользовательская область (для использования плагином)
Созданный фильтр получит настройки заданного типа, настройки глобальны и всегда идентичны в любом фильтре этого типа (но левая и правая панели различаются).
Param2 - указатель типа HANDLE, в который запишется созданный описатель фильтра.
Функция при неудаче вернёт FALSE и Param2 = INVALID_HANDLE_VALUE.
FFCTL_FREEFILEFILTER Освобождает память занятую при создании фильтра.
hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.
Param1 и Param2 игнорируются.
Функция возвращает TRUE.
FFCTL_OPENFILTERSMENU Открывает меню с параметрами фильтра для заданной области.
hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.
Param1 и Param2 игнорируются.
Функция возвращает TRUE.
FFCTL_STARTINGTOFILTER Обновить параметр "текущее время", который используется для сравнения относительных дат.
hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.
Param1 и Param2 игнорируются.
Вызов этой команды надо делать до начала операции фильтрования, для того чтобы правильно работали фильтры с относительной датой.
Функция возвращает TRUE.
FFCTL_ISFILEINFILTER Сравнивает файл с параметрами фильтра.
hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.
Param1 игнорируются. Param2 указатель на файловый объект (структура PluginPanelItem), который нужно проверить на включение в фильтр.
Функция возвращает TRUE, если файл попадает под условия фильтра.
Param1
Указывает на Параметр1 команды. Смотрите описание Command.
Param2
Указывает на Параметр2 команды. Смотрите описание Command.

Возвращаемое значение

Смотрите описание Command

Пример

HANDLE AFilter = INVALID_HANDLE_VALUE;

// создаём фильтр для области "активная панель"
Info.FileFilterControl(PANEL_ACTIVE,FFCTL_CREATEFILEFILTER,FFT_PANEL,&AFilter;);

// обновляем параметр "текущее время"
Info.FileFilterControl(AFilter,FFCTL_STARTINGTOFILTER,0,0);

if (AFilter != INVALID_HANDLE_VALUE)
{
  // производим манипуляции с элементами панели
  for (int i=0; i < pInfo->ItemsNumber; i++)
  {
    //...применяем фильтр, например, так
    if (Info.FileFilterControl(AFilter,FFCTL_ISFILEINFILTER,0,(void*)&pInfo-;>PanelItems[i]))
    {
      // элемент попал под условия фильтра
      // обработаем элемент...
    }
  }
}

// освобождаем память
Info.FileFilterControl(AFilter, FFCTL_FREEFILEFILTER,0,0);
Смотрите также: