LINUX.ORG.RU

Почтовый клиент на Qt для допила под свои каждодневные нужды.

 , , , ,


2

3

Сабж.

Подскажите opensource почтовый клиент на Qt4/Qt5 с возможностью IMAP-подключения и стандартной функциональностью.

Т.к. после очередного обновления интерфейса GMail (наверно переписанного на Angular 6 или еще каком-то дерьме) пользоваться им без торомозов стало практические нереально. Загрузка веб-интерфейса грузит CPU так, что врубается кулер... просто нет слов. Но то лирика, а это жизнь.

Пока юзаю Evolution, но, т.к. я люблю приложения на Qt вот настала пора и необходимость познакомиться с ним на практике.

P.S. На гитхабе находил парочку школьных проектов, но может есть что-то более серьёзное. KMail не предлагать.

★★★★★

Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от EXL

Этот класс в демо-примере занимается у нас определением типа конкретной опции в конфиге?

Мне сходу не очень понятно :3

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Точнее его валидацией. Но не думаю, что этот класс будет нужен для расширения функциональности Троицы. Разве что ты туда какой-нибудь редактор этих конфигураций QSettings вкорячишь.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Да, я вижу, что вся функциональность не нужна. Просто пример хороший, сам по себе.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от EXL

Тут есть более интересный вопрос.

Действительно, как указать какой профиль активный?

Дублировать в каждом конфиге параметр is_profile_active, заводить глобальную переменную в коде? И первое, и второе не подходит.

Нужно придумать что-то получше... например просто сохранять путь к активному профилю.

Но пока я себе не до конца это представляю.

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от Twissel

По идее, ты можешь просто добавить к существующим настройкам QSettings группу, куда сохранять активный (выбранный) профиль из своего лаунчера/GUI для выбора профилей. И при запуске приложения в своём GUI читать этот параметр прежде чем работать с той конфигурацией, с которой работают профили.

Там этот QSettings разный для каждого профиля или один общий? Если разные, то в этом случае можно сделать так, чтобы твой диалог выбора профилей работал с QSettings у которого будет другая инициализация. Соответственно это будет второй конфиг, либо вторая ветка реестра.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Там этот QSettings разный для каждого профиля или один общий?

ЕМНИП общий, а в случае указания профиля из cli, ID профиля сохраняется/считывается из переменной окружения, см. посты выше.

Но в целом понял да, тут есть поле для небольших экспериментов.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от EXL

ты можешь просто добавить к существующим настройкам QSettings группу, куда сохранять активный (выбранный) профиль из своего лаунчера/GUI для выбора профилей.

Я думаю, что концептуально проще это вынести в конфиг самого лаунчера (активный профиль), а в качестве естественного ID использовать сам e-mail адрес.

Кстати, тебе можно стучать в Телегу по мелочи? Постараюсь сильно не напрягать :-) Просто чтобы тут не захламлять топик.

Ник @Twissel87

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от Twissel

Я думаю, что концептуально проще это вынести в конфиг самого лаунчера (активный профиль), а в качестве естественного ID использовать сам e-mail адрес.

Ну да, второй вариант из моего поста выше как раз про это. В SaveSettings/LoadSettings-методах класса своего лаунчера просто инициализируешь объект класса QSettings, например, с такой же организацией, но с другим названием application.

Кстати, тебе можно стучать в Телегу по мелочи? Постараюсь сильно не напрягать :-) Просто чтобы тут не захламлять топик.

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

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

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

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

Лаунчер нужен для лучшего понимания и обкатки идеи.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ass

1. Тупо сделать лаунчер в котором можно было бы задать активный профиль (почтовый ящик) и запустить Trojita с этим профилем в командной строке;

2.Интегрировать этот лаунчер в сабж и переписать обработку ключей командной строки с использованием возможностей QCommandLineParser

3. И последнее: записывать конфиг программы (настройки профиля, настройки ящика) не в файл(ы), а в БД SQLite.

Результаты — «да, но пока нет», т.к. только буду прицеливаться на лаунчер, на этой неделе и вообще, «янипрограммист», но хочется потыкать Qt just4fun, сделать что-нибудь полезное.

А там может доведу до конца и затянет :-)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от gag
SQLCache: DB Error: Can't open database: Driver not loaded Driver not loaded

Какой еще драйвер к БД ей нужен? На сайте в списке зависимостей сборки вроде ничего такого нет.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ass

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

Еще один пример того, почему глобальные переменные это плохо.

В качестве решения «в лоб» для этой проблемы хочу сделать отдельный конфиг файл для приложения, где хранить имя активного профиля. Чтобы не выходить за рамки абстракций, который предоставляет класс QSettings. Просто тот же QSettings, насколько я увидел, инициализируется в разных частях программы.

Проще сделать еще один объект QSettings для настроек приложения и разделить настройки приложения (профиль) и настройки самого почтового ящика (содержимое конкретного профиля).

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ass

В ближайшее время создам.

Просто хочется залить уже тот вариант, где реализовал хотя бы разделение конфигов, как описано выше. Поскольку чтение информации о настройках GUI тоже ЕМНИП разбросано по нескольким файлам нужно быть внимательным.

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

Сегодня точно начну :-)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ass

Предварительное имя приблуды neotritium :-D

Twissel ★★★★★
() автор топика
Ответ на: комментарий от ass

https://bugs.kde.org/show_bug.cgi?id=401285

Пока отправил баг сборки под офтопиком. А под офтопиком, потому что хочу проверить отучил ли я сабж пихать все свои настройки в системный реестр.

Так что пока не забросил эту байду.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Нет, можно взять и MSVC, но от этого дерьма потом замучаешься ОС чистить)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Но и экзешник без значка тоже вариант.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от gag

Ты под офтопом Trojita самостоятельно не собирал, не?

У меня, похоже, ругается на отсутствие DBus :-)

Error: Registering IPC instance failed: Not connected to D-Bus server

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

Даже оригинальная версия, если ее собирать из исходников.

Проверено под MinGW 5.3 и Visual Studio 2015 Update 3, одинаково.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Ты под офтопом Trojita самостоятельно не собирал, не?

Не, мне это не надо.

Проверено под MinGW 5.3

Лучше под mingw-w64, который в составе msys2.

gag ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.