# Руководство по DoubleContact #

## О проекте ##

DoubleContact - это автономный и независимый от DE редактор контактов, преимущественно ориентированный на
редактирование, сравнение и слияние телефонных книг.
Интерфейс программы аналогичен интерфейсу двухпанельных файловых менеджеров, но вторую панель можно отключить.

Возможности программы:

* загрузка и сохранение адресных книг следующих форматов:
  - VCF (поддерживаются vCard 2.1, 3.0 и 4.0, а также возможность загрузки каталога, содержащего множество файлов VCF, как единой адресной книги);
  - CSV (поддерживаются профили для некоторых моделей телефонов Explay, программы OSMO и универсальный профиль, сохраняющий всю информацию о контакте);
  - MPB (резервная копия программы MyPhoneExplorer);
  - NBF (резервная копия Nokia, **только для чтения**);
  - NBU (ещё одна резервная копия Nokia, **только для чтения**);
  - UDX (файлы Philips Xenium);
* просмотр контактов в табличном виде, с фильтрацией и сортировкой;
* двухпанельный режим просмотра двух адресных книг, с возможностью копирования и перемещения групп контактов;
* редактирование, вставка и удаление отдельных записей;
* групповые операции над выбранными записями:
  - перестановка имени и фамилии;
  - разделение имён;
  - перевод телефонных номеров в международный формат (например, замена 8 на +7 для России, аналогичные преобразования для некоторых других стран);
  - форматирование телефонных номеров по образцу, задаваемому пользователем, вида +N-NNN-NNN-NN-NN;
  - разделение контакта по телефонам для экспорта на SIM-карту;
  - слияние контактов;
  - удаление спецсимволов;
  - генерация форматированного (полного) имени;
* массовое удаление нестандартных X-тегов из контактов;
* сравнение двух адресных книг с подсветкой совпадающих, несовпадающих и частично совпадающих контактов;
* интерактивное слияние контактов по результатам сравнения;
* вывод отчёта по адресной книге в формате HTML.


## Загрузка и импорт контактов ##

Для загрузки контактов прежде всего необходимо подготовить файл (файлы) адресной книги.

Например, телефоны с ОС Android позволяют выгрузить адресную книгу в один файл формата VCF
(**Контакты -> Импорт/Экспорт -> Экспортировать контакты -> SD карта** в меню телефона).
В зависимости от версии и комплектации Андроида названия пунктов меню могут незначительно отличаться от приведённых.
Полученный файл переписывается с карты памяти на ПК.

Если Вы объединяете контакты на своих телефонах в группы, например, "Семья", "Друзья" и др., пожалуйста, прочитайте также раздел [Группы контактов](#группы-контактов) во избежание потерь информации.

Аналогичный файл можно получить на кнопочных телефонах Sony Ericsson и некоторых других производителей.
Особняком стоят телефоны Philips Xenium: они сохраняют адресную книгу не в VCF, а в собственном формате UDX,
который DoubleContact тоже умеет открывать.

Некоторые телефоны и программы (например, некоторые версии Nokia PC Suite) сохраняют каждый контакт в отдельном файле VCF.
В этом случае на ПК следует перенести весь каталог (папку) с файлами VCF.

Если адресная книга была сохранена в одном файле, в программе выбираем пункт меню **Файл -> Открыть -> Файл** и открываем нужный файл,
который имеет расширение VCF, UDX, CSV, NBF или MPB. Если же адресная книга представляет собой каталог файлов VCF, выбираем пункт меню
**Файл -> Открыть -> Каталог**.

Иногда встречаются VCF-каталоги, в которых содержимое файлов битое (некорректный quoted-printable в нелатинских символах),
но имена файлов являются нормальными именами контактов. Чтобы прочитать такой каталог, предварительно установите флажок
"При чтении каталога VCF - брать имена контакта из имени файла" (пункт меню **Вид -> Настройки**, вкладка "Загрузка").
В остальных случаях этот флажок должен быть снят.

В обоих случаях DoubleContact загружает адресную книгу и отображает её в виде таблицы.

Таким же образом можно загрузить контакты из файла резервной копии программы MyPhoneExplorer (расширение MPB). В этом случае загружаются не только контакты, но и история вызовов, заметки, события и SMS. DoubleContact не поддерживает эти данные, но
позволяет сохранить их в другой файл MPB после редактирования контактов.

Замеченная ошибка программы MyPhoneExplorer: если поле NOTE (описание контакта) содержало перевод строки, в файле MPB появляется
фальшивое указание на ENCODING=QUOTED-PRINTABLE, что приводит к нечитаемости описания контакта.

Файлы NBF и NBU (резервная копия Nokia) поддерживаются только на чтение.

Если при загрузке возникли проблемы (как правило, неизвестные теги), программа покажет окно протокола с перечнем проблем. Не стоит
беспокоиться: неизвестные теги бережно сохраняются при просмотре и редактировании и записываются при сохранении адресной книги в файл.
Более того, Вы можете просмотреть их содержимое на вкладке "Проблемы" окна редактирования контакта. Контакты с неизвестными тегами
при просмотре выделяются жёлтым цветом. Однако Вы очень поможете автору в развитии программы, если пошлёте ему примеры таких тегов.


## Сохранение контактов ##

Перед сохранением необходимо определить, для какого устройства или программы предназначен сохраняемый файл. Большинство современных телефонов
понимают формат vCard версий 3.0 или 4.0. Однако для некоторых устройств требуется vCard 2.1. Задать версию vCard можно в окне настроек
(пункт меню **Вид -> Настройки**, вкладка "Сохранение"). Если отметить 
флажок "Брать версию из исходного файла (если есть)", программа будет пытаться
использовать версию vCard, применявшуюся в файле, из которого была загружена адресная книга. В противном случае всегда будет использоваться версия,
выбранная в окне настроек.

В некоторых случаях, например, если vcf-файл будет загружаться в SIM-карту телефона, необходимо, чтобы каждому контакту соответствовало не более
одного телефонного номера. В этом случае перед сохранением адресной книги следует произвести разделение контактов с несколькими телефонами: выделить разделяемые контакты
(как правило, проще всего выделить все) и выбрать пункт меню **Контакт -> Разделить**.

Некоторые телефоны не распознают дни рождения, у которых задана не только дата, но и время. В этом случае перед сохранением адресной книги следует
включить удаление времени (пункт меню **Вид -> Настройки**, вкладка "Сохранение", отметить флажок "Удалять время из дней рождения и годовщин").

Зачастую телефоны добавляют в файлы VCF нестандартные теги, которые целевой телефон (другой модели) не может прочитать. Обычно имена таких тегов начинаются с X-, например, X-STARRED. Если вы готовите файл для телефона, который не воспринимает такие теги, или просто хотите упростить адресную книгу, вызовите **Книга -> Массовое удаление тегов**. Программа просканирует все контакты адресной книги и предложит выбрать удаляемые теги из числа найденных. Обратите внимание, что эта операция обрабатывает всю адресную книгу, вне зависимости от того, какие контакты выбраны в главном окне.

Если Вы объединяете контакты на своих телефонах в группы, например, "Семья", "Друзья" и др., пожалуйста, прочитайте также раздел [Группы контактов](#группы-контактов) во избежание потерь информации.

Для сохранения адресной книги в единый файл в программе выбираем пункт меню **Файл -> Сохранить как -> Файл**, выбираем его тип (VCF, UDX или MPB) и вводим
имя файла. Для сохранения адресной книги в виде каталога файлов VCF, выбираем пункт меню **Файл -> Сохранить как -> Каталог**. Полученный файл
(каталог) можно скопировать на устройство и импортировать его.

Запись в файл MPB можно производить **только**, если исходный файл также имел формат MPB. Это сделано потому, что файл MPB содержит не только контакты, но и историю вызовов и SMS (данные, не поддерживаемые в VCF и UDX). Если сохранить MPB в VCF, а потом снова в MPB, история вызовов и SMS будут утеряны!

## Группы контактов ##

Если Вы объединяете контакты на своих телефонах в группы, учитывайте, что их перенос на другой телефон -- сложная и не всегда решаемая задача.

Форматом vCard предусмотрен тег CATEGORIES для указания, к какой группе или группам относится контакт. Однако большинство телефонов под управлением ОС Android не используют этот тег или сохраняют в нём служебную информацию. Поэтому при сохранении адресной книги информация о группах теряется.

Некоторые производители сохраняют группы в нестандартных тегах, например:

* X-GROUP-MEMBERSHIP для телефонов Huawei/Honor;
* X-OPPO-GROUP для телефонов Realme/OPPO.

DoubleContact поддерживает запись этих тегов, а также стандартного тега CATEGORIES. Если Вы собираетесь импортировать контакты на телефон одного из этих производителей, выберите соответствующий тег в окне настроек
(пункт меню **Вид -> Настройки**, вкладка "Сохранение", список "Тег для записи групп").

Если этот метод Вам не подходит (исходное либо целевое устройство не поддерживает ни один из перечисленных тегов), рассмотрите альтернативные способы сохранения и загрузки групп:

* совместное использование DoubleContact и MyPhoneExplorer (через файлы MPB);
* использование сайта [Google Contacts](https://contacts.google.com/) с последующей выгрузкой контактов в файл VCF.

Если вы знаете другие теги для записи групп или знаете другие модели устройств, поддерживающие вышеперечисленные теги, пожалуйста, свяжитесь с автором DoubleContact.

## Особенности поддержки формата CSV 

CSV - это простой формат, в котором значения разделяются запятыми. Нет единого стандарта, как контакты должны записываться в CSV,
поэтому для открытия или сохранения файла этого формата программа предлагает выбрать профиль CSV. Программа поддерживает
профили для ряда моделей телефонов Explay. Кроме того, поддерживается разновидность CSV, сохраняемая программой [Osmo](http://clayo.org/osmo/).

Перечисленные профили сохраняют лишь часть информации о контактах, поддерживаемой vCard. Если Вам нужен файл CSV, который можно открыть в любой
электронной таблице, и который сохранит всю информацию о контактах, используйте профиль "Универсальный". В этом профиле Вы можете указать кодировку файла и разделитель ячеек.

Особенность программы Osmo: если контакт не принадлежит группе, то в соответствующий столбец записывается перевод стоп-слова "None" на
выбранном языке интерфейса. Чтобы DoubleContact адекватно прочитал эту информацию, язык интерфейса DoubleContact должен быть таким же,
как язык интерфейса Osmo. В противном случае DoubleContact не опознает стоп-слово, и создаст группу с таким наименованием. Последние
версии Osmo умеют сохранять файлы формата vCard 4.0, который свободен от этого недостатка.


## Просмотр контактов ##

Загруженные контакты отображаются программой в виде таблицы. Каждая строка таблицы - это один контакт.

Состав и порядок столбцов таблицы можно настраивать (пункт меню **Вид -> Настройки**,
вкладка "Столбцы"). Просто переместите кнопками-стрелками нужные столбцы из списка "Доступные" в список "Видимые".
Названия большинства столбцов очевидны ("Имя", "Фамилия" и т.д.), но есть исключения.

В поле "Телефон" отображается телефон, имеющий тип "Предпочтительный" либо указанный первым. Аналогично работает
поле "Электропочта". 

Некоторые типы столбцов являются индикаторами: они отображают символ \*, если выполняется некоторое условие.
Так, условие "Есть телефон" выполняется, если для контакта задан хотя бы один телефон, условие "Много телефонов" -
если телефонов больше одного. Аналогичные индикаторы предусмотрены для адресов электронной почты и дней рождения.

Столбец "Универсальное имя" (Generic name) предназначен для того, чтобы информация выводилась даже для плохо заполненных
контактов. Если полное (форматированное) имя существует, в этом столбце выводится оно. Если нет, программа
пытается сконструировать его из имён. Если не заданы имена, программа пытается использовать название
организание, описание, телефон или адрес электронной почты, наконец, строку сортировки.

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

Обратите внимание, что сортировка по столбцам не меняет адресную книгу и не влияет на порядок записей в
записываемых файлах. Если вам нужно отсортировать итоговый файл, используйте жёсткую сортировку -
**Книга -> Жёсткая сортировка**. Эта операция позволяет сортировать контакты по именам, псевдониму,
группам, а также строке сортировки.

По умолчанию программа показывает все записи в книге, однако их можно фильтровать. По нажатию Ctrl+F
под таблицей появляется поле ввода. Если ввести туда имя или его часть, в таблице будут видны только
те контакты, в которых есть эта часть. Например, если ввести "Вла", программа покажет контакты
"Владимир Иванович", "Александр Власов". Если ввести "324" - контакт с телефоном +79993246543. После
очистки поля вновь будут видны все контакты. Фильтрация проводится только по видимым столбцам. Например,
если удалить телефон из списка видимых столбцов, то второй пример работать не будет.

Пункт меню **Вид -> Две панели** отобразит две панели, в каждую из которых можно загрузить отдельную
адресную книгу. Переключение между панелями производится щелчком мышью или клавишей Tab. Поменять
панели местами можно клавишей Ctrl+U.

Чтобы скопировать одну или несколько записей из одной загруженной адресной книги в другую, выделите
эти записи и нажмите F5. Чтобы переместить - выделите и нажмите F6 (в последнем случае в исходной
книге контакты будут удалить). Также для этих операций можно использовать перетаскивание (drag'n'drop).

Повторный вызов **Вид -> Две панели** отключает двухпанельный режим.

Внешний вид таблиц можно настроить (меню **Вид -> Настройки**, вкладка **Общее**.
Программа позволяет включить или отключить отображение табличной сетки, чередование
двух цветов фона в таблице и использование системных либо пользовательских шрифта
и цветов.

Над каждой адресной книгой отображается имя файла (каталога), из которого она загружена. Если в книгу
внесены несохранённые изменения, это имя сопровождается знаком (\*).

Вызов **Книга -> Статистика** позволяет посмотреть общие свойства адресной книги: количество контактов,
телефонов, адресов и др. Если книга была загружена из файла MPB, также отображается количество
сохранённых SMS, элементов истории вызова, модель телефона и дата резервного копирования.


## Редактирование контактов ##

Основной режим редактирования в DoubleContact - это редактирование одной записи. Групповое редактирование
тоже предусмотрено, но в этом режиме можно менять только некоторые поля.
Окна редактирования при этом вызываются разные.

Для редактирования одного контакта выберите его в таблице и нажмите кнопку "Править". Также можно нажать Enter
или дважды щёлкнуть по контакту мышью. Откроется диалоговое окно "Правка контакта". Это окно имеет интерфейс из нескольких вкладок.

На вкладке "Общее" количество полей зависит от заполненности контакта: количество имён - от 2 до 5,
минимальное количество телефонов и адресов электронной почты - по 1 (максимальное количество не ограничено).
Общепринятый порядок имён: фамилия, имя, отчество (либо среднее имя, MiddleName), обращение, степень/звание.
Однако все эти поля не обязательны.

Номера телефонов и адреса электронной почты вводятся в произвольном текстовом формате. Однако если эти
поля содержат недопустимые символы, возможно, Ваше устройство не сможет их распознать.

Чтобы добавить ещё одно имя, телефон или адрес электронной почты, выберите в списке рядом с кнопкой
"Добавить...", что именно Вы хотите добавить, и нажмите "Добавить...". Чтобы убрать одно из этих полей,
нажмите кнопку с красным крестиком рядом с полем.

Вводя телефон, не забудьте выбрать из списка его тип: домашний, рабочий, мобильный и др. Вы можете захотеть
комбинировать эти типы (как правило, один из этих типов комбинируется с типом "Предпочтительный").
В этом случае выберите тип "составной..." Программа откроет окно "Тип телефона", в котором нужная
комбинация типов набирается флажками. Учтите, что многие устройства трактуют тип "Голосовой" как "Прочий".

Некоторые устройства позволяют добавлять нестандартные типы телефонных номеров прямо при сохранении номера в контакте. Учтите, что при такие типы могут быть утеряны при экспорте адресной книги в VCF на устройстве, особенно если содержат нелатинские символы. Например, тип "NEW" будет экспортирован как X-NEW, а тип "ДОМАШНИЙ" вообще "потеряется". Некоторые модели телефонов, например, от Samsung, сохраняют нелатинские типы номеров в нестандартной конструкции X-CUSTOM. DoubleContact понимает эту конструкцию, но как правило, во избежании потери ценной информации мы настоятельно рекомендуем в нестандартных типах телефонов использовать только латинские символы.

Контакт может содержать день рождения. Как правило, для дня рождения задаётся только дата: поставьте
галочку, задайте день, месяц и год. Но по стандарту vCard можно задать и время. Для этого нажмите
кнопку "Подробно". Появится окно "Свойства даты", где кроме даты, можно указать и время, и даже
часовой пояс, по которому оно задано.

Кроме дня рождения, в контакте можно указать и другую годовщину (обычно это годовщина свадьбы).
Выберите в списке рядом с кнопкой "Добавить..." пункт "годовщину" и нажмите "Добавить...".
Годовщина редактируется так же, как и день рождения.

Если контакт содержит фотографию или ссылку на фото, они отображаются в поле "Фото". Под этим
полем находится одноимённая кнопка для редактирования фотографии. Нажатие на неё вызывает меню
из следующих пунктов:

* "Загрузить картинку" - позволяет загрузить фотографию из графического файла форматов JPEG
или PNG. Если в контакте уже была фотография или ссылка на фото, они будут удалены;
* "Сохранить картинку" - позволяет сохранить фотографию контакта в графический файл того же формата,
в котором она хранилась в контакте;
* "Показать в новом окне" - открывает новое окно и отображает в нём фотографию контакта. Это полезно для фотографий высокого разрешения;
* "Задать адрес" - позволяет ввести или отредактировать ссылку на фото в отдельном окне. Если в контакте была фотография, она будет удалена;
* "Удалить фото" - удаляет текущую фотографию или ссылку на фото из контакта.

На вкладке "Адреса" можно ввести один или несколько адресов (домашний, рабочий и др.). На этой же вкладке можно указать должность и название организации.

На вкладке "Интернет" можно ввести сетевой псевдоним (ник) человека, адрес сайта и адреса в различных
IM. Это самая простая вкладка.

На вкладке "Группы" Вы можете добавить контакт в одну или несколько групп. Если Вам нужно создать
новую группу, сначала вызовите  **Вид -> Группы**, а уже затем редактируйте контакт. 

На вкладке "Прочее" приводятся технические подробности о формате контакта. Эта информация может потребоваться
для сообщения об ошибке автору программы. Здесь же в табличном виде можно просмотреть теги vCard, о
которых программа знает, но редактировать не позволяет. Контекстное меню таблицы позволяет удалять такие теги
и копировать их текст в буфер. Здесь же можно задать строку, по которой контакт будет сортироваться с себе подобными.

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

По окончании редактирования нажмите "ОК" для сохранения сделанный правок или "Отмена" для их отмены.

Редактирование нескольких выбранных записей вызывается аналогично. Однако при этом редактировать
можно только некоторые поля: должность, организация, описание.

Наконец, чтобы добавить новый контакт в текущую адресную книгу, нажмите в главном окне кнопку
"Вставить" или клавишу Ins. При этом откроется окно, аналогичное окну редактирования одной записи.

Если Вы хотите изменить количество имён, телефонов и адресов электронной почты в окне добавления контакта
по умолчанию, добавьте нужное количество полей при редактировании или добавлении и нажмите кнопку "Запомнить вид".
При следующих вызовах окна добавления поля будут добавлены автоматически, для телефонов и адресов электронной почты
типы этих полей будут установлены так же, как и на момент запоминания. Будут также сохранены количество и типы
почтовых адресов и мессенджеров, а также размеры окна редактирования.



## Групповые операции над контактами ##

Зачастую в адресной книге (особенно, если она ведётся много лет) имена и фамилии разных контактов
записаны в разном порядке. Чтобы исправить это, выберите все контакты, у которых фамилия и имя
перепутаны (например, фамилия Александр, имя Иванов), и вызовите пункт меню **Контакт -> Переставить имена**.
Программа поменяет местами имя и фамилию у всех выбранных контактов.

Следующая операция - разделение имён - нужна, когда имя, фамилия и другие части имени были записаны в адресной
книге как единое целое через пробелы. Обычно так получается, если адресная книга импортирована с
SIM-карты старого телефона. Выберите такие записи и вызовите пункт меню **Контакт -> Разделить имена**
(Shift+F2). Программа разделит имя по пробелам. Для некоторых контактов после этого, возможно, придётся
провести перестановку имён, описанную выше, если имена изначально были записаны в неправильном порядке.

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

Если Вы перед склейкой выбрали больше или меньше, чем 2 контакта, программа выдаст сообщение об ошибке.

Обратная операция - разделение контактов по телефонам - нужна, если адресная книга будет загружаться в
SIM-карту телефона, и необходимо, чтобы каждому контакту соответствовало не более одного телефонного номера.
Выделите разделяемые контакты (как правило, проще всего выделить все) и выберите пункт меню
**Контакт -> Разделить**.

Ещё одна групповая операция - автоматическое формирование полного (форматированного) имени по введённым именам
(**Контакт -> Собрать полное имя**). Генерация полных имён, в частности, облегчает сравнение двух похожих адресных
книг, в одной из которых полные имена есть, а в другой нет.
Программа также позволяет очистить ранее заданные полные имена (**Контакт -> Убрать полное имя**), а также
поменять в них имя и фамилию (**Контакт -> Обратить полное имя**).

Иногда, если файл VCF импортирован с SIM-карты, в именах контактов встречаются спецсимволы -
обратная косая черта, зачастую сопровождаемая цифрой. Пункт меню **Контакт -> Убрать спецсимволы** позволяет удалить это безобразие.

Для улучшения внешнего вида адресной книги Вы можете захотеть, чтобы все телефонные
номера были записаны в едином стиле (например, N-NNN-NNN-NN-NN или +NNNNNNNNNNN).
Выберите **Контакт -> Форматировать телефоны** и выберите подходящий шаблон телефонного номера. Вы также можете ввести свой шаблон. Каждая буква "N" в шаблоне
соответствует одной цифре номера. Если в номере содержится префикс "+", он будет
сохранён вне зависимости от наличия этого символа в шаблоне. Если номер содержит
больше цифр, чем букв N в шаблоне, оставшиеся цифры будут добавлены к номеру подряд,
одна за другой.

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

Последняя групповая операция над контактами - это перевод телефонных номеров из национального формата в международный для некоторых стран.
Для Беларуси эта операция заменяет префикс 8 на код страны +375, для России - 8 на +7, для Украины - 0 на +380.

Чтобы перевести телефонные номера в международный формат, выберите группу контактов и вызовите **Контакт -> 8 -> +7**.
Программа предложит выбрать страну. Данная функция реализована только для некоторых стран. Если Вы считаете,
что для Вашей страны эта функция актуальна, но её нет в списке, пожалуйста, свяжитесь с автором.

ВНИМАНИЕ! Автоматический выбор страны невозможен, поскольку для разных стран одному и тому же национальному префиксу могут
соответствовать разные международные. Например, для России 8 переводится в +7, для Беларуси тот же 8 переводится в +375.
Попытка перевести в международный формат сразу все контакты может привести к порче телефонных номеров. Поэтому если
в телефонной книге у разных контактов присутствует национальная запись как для российских, так и для белорусских телефонов,
сначала выберите и переведите белорусские номера, потом российские, или наоборот. Это, разумеется, очень редкий случай,
но он может возникнуть после слияния двух адресных книг, одна из которых изначально
заполнялась в России, а другая в Беларуси. 

## Сравнение адресных книг и интерактивное слияние контактов ##

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

Для сравнения двух адресных книг вызовите **Книга -> Сравнить** (F3). Программа выполнит поиск пар контактов в обеих книгах
и перейдёт в режим сравнения. По окончании поиска все контакты будут подсвечены:

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

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

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

Если в режиме сравнения выделить запись на одной из панелей, и эта запись имеет пару на другой панели
(подсвечена зелёным либо жёлтым цветом), парная запись также будет выделена. Если после этого вызвать
**Контакт -> Результат сравнения** (Shift+F3), программа покажет окно "Слияние контактов". Совпадающие
поля будут посвечены зелёной рамкой, несовпадающие - красной. В этом окне можно провести синхронизацию записей
кнопками с изображением стрелок влево и вправо.

У некоторых секций, таких, как телефоны и адреса электронной почты, может быть два вида кнопок со стрелками.
Стрелка внутри секции вызывает копирование отдельного телефона или адреса, стрелка рядом с секцией -
копирование всей группы.

Рассмотрим слияние контактов на **примере**. Допустим, у нас есть два файла контактов. Первый, backup.vcf,
представляет собой полную, но устаревшую резервную копию адресной книги сломанного телефона. Второй,
sim.vcf, получен с SIM-карты того же телефона после её устаноки в другой аппарат. Необходимо объединить
всю ценную информацию из обоих файлов и записать её в файл backup_new.vcf.

Загрузим файл backup.vcf в левую панель DoubleContact, а sim.vcf - в правую. Нажмём F3. Некоторые контакты
в правой панели будут помечены красным цветом. Это значит, что они были добавлены на SIM-карту уже после
создания резервной копии. Выделим их и скопируем на левую панель (F5). После этого для наилучшего отображения
таких контактов, вероятно, требуется разделить или переставить имена (см. раздел 
[Групповые операции над контактами](#групповые-операции-над-контактами).

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

Обработав таким образом все записи, выбираем левую панель, вызываем **Файл -> Сохранить как -> Файл** и
сохраняем объединённую адресную книгу под именем backup_new.vcf.

При повторном вызове **Книга -> Сравнить** (F3) программа вернётся из режима сравнения в режим простого просмотра.

## Отчёты по адресной книге ## 

Чтобы создать отчёт по адресной книге в виде формата HTML, выберите **Файл -> Отчёт** (Ctrl+R).
Полученный файл Вы можете просмотреть в браузере, распечатать или поместить на своём сайте.


## Как помочь разработке ##

DoubleContact - это свободное программное обеспечение, распространяемое по лицензии GNU GPL v3 или более поздней версии.

Первое, чем Вы можете помочь в разработке программы - это сообщать о найденных ошибках и выдвигать идеи по улучшению.
Багтрекер программы располагается [на гитхабе](https://github.com/DarkHobbit/doublecontact/issues).
Если Вы не умеете работать с багтрекером, но нашли важную ошибку, вы можете написать мне по электронной почте pub@zvyozdochkin.ru.
Пожалуйста, пишите письма на английском или русском языках.

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

Если при загрузке или сохранении адресных книг появляется окно с предупреждениями, Вы можете сохранить их
кнопкой "Копировать в буфер" и отослать мне. Пожалуйста, сообщите название устройства или программы, в котором
был создан этот файл. Желательно также приложить этот файл.

Программа поддерживает несколько видов формата CSV (comma-separated values). Нет единого стандарта, как
контакты должны сохраняться в файлах CSV. Если Вы заинтересованы в поддержке этого формата, пришлите пример файла CSV,
созданного вашим устройством/программой, или его фрагмент. Если Вы хотите прислать только фрагмент, пожалуйста, проверьте,
есть ли у файла CSV заголовок (это означает, что одна или несколько первых строк файла CSV вместо контактов
содержат названия столбцов и, вероятно, другую служебную информацию). Если заголовок есть, пришлите и его.

Второе, чем Вы можете помочь в разработке  - это переводы на национальные языки. Если Вы владеете языком, на
который программа не переведена - присоединяйтесь. Совместная работа по переводу DoubleContact ведётся
[на сайте Hosted Weblate](https://hosted.weblate.org/projects/doublecontact/). Если Вы предпочитаете работать
над переводом в отдельном файле, Вы можете [посмотреть образцы сделанных переводов](https://github.com/DarkHobbit/doublecontact/tree/master/translations)
и послать автору свой файл.


## Маленькие хитрости ##

Вы можете запустить DoubleContact, передав ему имя файла адресной книги как параметр. Поддерживается как просто путь к файлу,
так и запись в виде URL file:///home/imp/Downloads/addressbook.vcf. Второй вариант позволяет ассоциировать файлы контактов
с программой в некоторых файловых менеджерах, например, PCManFM.

Ещё один способ открытия файлов - перетаскивание (drag'n'drop) иконки файла или каталога из файлового менеджера на окно
программы. Если перетащить один файл, он откроется в панели, на которую перетащен. Если два файла - первый откроется в
панели, на которую перетащен, второй в соседней. Если три и более - программа выдаст сообщение об ошибке.

Ключи командной строки:

* --debugdata или -d - запуск программы с отладочным набором данных (несколько контактов на разных языках);
* --fullscreen или -f - запуск программы в полноэкранном режиме;
* --quiet или -q - при запуске не загружаются никакие адресные книги, даже если в настройках задан режим "Открывать последние файлы при запуске".

Кроме графического приложения, DoubleContact включает в себя консольный конвертор форматов contconv.
Справку по его командам и ключам можно получить, запустив команду contconv без параметров.

Программа написана на языке C++ с применением библиотек Qt4/Qt5.


## Благодарности ##

Автор выражает благодарность:

* жене и сыну - за моральную поддержку при работе над программой;
* Ричарду Столлману - за идею свободного ПО и лицензию GPL;
* Линусу Торвальдсу - за ядро Linux и git;
* разработчикам gcc, make, Qt SDK - за отличные инструменты, превращающие программирование в радость;
* GitHub, Inc, Travis CI, GmbH и Synopsys, Inc. - за GitHub, Travis CI и Coverity Scan, службы, помогающие писать программы и доносить их до людей.
