Launcher EBook é uma aplicação desktop em C++17 com Qt 6 Widgets para catalogar arquivos locais de e-books e documentos, exibir metadados básicos, reportar estatísticas e abrir cada item com aplicativos associados do sistema operacional ou com um executável escolhido manualmente pelo usuário.
O projeto foi estruturado para builds reproduzíveis no Windows com CMake Presets, Ninja, MSVC e MinGW, gerando binários Release autossuficientes com as dependências Qt implantadas via windeployqt.
- Seleção de um diretório pai da biblioteca por diálogo nativo.
- Varredura recursiva de arquivos em subdiretórios.
- Filtro por extensões de e-book, documentos, texto, HTML, XML, TeX, CSV, logs e arquivos de quadrinhos.
- Listagem tabular com nome, extensão, tipo MIME, tamanho legível e caminho absoluto.
- Abertura por duplo clique com uma janela intermediária de escolha de aplicativo.
- Descoberta de aplicativos associados no Windows por associação padrão e Registro.
- Escolha manual de executável quando a associação do sistema não for suficiente.
- Botão e ação de menu para limpar os dados carregados.
- Rodapé com total de itens reconhecidos e relatórios opcionais de arquivos e pastas.
- Barra de menus com ações de arquivos, configurações, idiomas, estatísticas e informações legais.
- Persistência das preferências de relatório e idioma em arquivo JSON.
- Suporte a português e inglês por arquivos
.tse.qm. - Geração de gráficos simples por extensão: pizza e histograma.
- Textos de Sobre carregados de
assets/about. - Ícone de aplicação incorporado ao executável Windows.
.
├── assets/
│ ├── about/ # Textos carregados pelo menu Sobre
│ └── icon/ # Ícone .ico usado na janela e no executável
├── build/ # Diretórios regeneráveis de build
│ ├── mingw-release/
│ ├── msvc-ninja-release/
│ └── mocks/
├── locale/ # Traduções Qt Linguist (.ts e .qm)
├── mocks/ # Ferramentas auxiliares GUI para manutenção
├── source/ # Código-fonte principal da aplicação
├── .vscode/ # Integração com VS Code, CMake e tasks
├── CMakeLists.txt
├── CMakePresets.json
└── main.cpp
O diretório source/ concentra os módulos de domínio e interface. O diretório build/ é regenerável e pode ser removido quando for necessário forçar uma configuração limpa.
Inicializa QApplication, define o nome lógico da aplicação como Launcher EBook, registra a organização LocalTools e exibe a janela principal.
Implementa a janela principal e coordena a maior parte do fluxo da aplicação:
- composição da UI com
QMainWindow,QMenuBar,QStatusBar,QTableWidgete botões de ação; - criação das ações de menu e atalhos;
- varredura recursiva com
QDirIterator; - identificação MIME com
QMimeDatabase; - contagem de arquivos e pastas;
- renderização de gráficos por extensão com
QPainter; - carregamento de textos legais em
assets/about; - carregamento de ícone em
assets/icon; - troca de idioma via
QTranslator; - persistência de preferências em JSON.
Isola a descoberta e execução de aplicativos associados a arquivos. No Windows, consulta associações registradas e constrói uma lista de candidatos para o diálogo de escolha. Também mantém a opção de seleção manual para cenários em que o Registro ou a associação padrão não retornem um leitor adequado.
Implementa o diálogo de escolha de aplicativo. A janela exibe os candidatos encontrados, permite seleção manual de executável e retorna a escolha final para a janela principal executar a abertura do arquivo.
As preferências do menu Configurações são salvas em:
%LOCALAPPDATA%\EBookLauncherQt\settings.json
Formato atual:
{
"version": 1,
"settings": {
"language": "pt_BR",
"reportFileCount": false,
"reportFolderCount": false
}
}Campos:
language: idioma carregado na próxima inicialização. Valores suportados:pt_BReen_US.reportFileCount: controla a exibição do contador de arquivos no rodapé.reportFolderCount: controla a exibição do contador de pastas no rodapé.version: versão do esquema de configuração.
A escrita usa QSaveFile, reduzindo o risco de corromper o arquivo em caso de falha durante a gravação.
Os arquivos de tradução ficam em locale/:
Launcher EBook_pt_BR.tsLauncher EBook_en_US.ts
Durante a build, o CMake executa lrelease e gera os arquivos .qm correspondentes no diretório de build. Após a compilação, os .qm são copiados para locale/ ao lado do executável, permitindo que a troca de idioma funcione no binário implantado.
O aplicativo procura os recursos em ordem:
- diretório do executável;
- diretório relativo acima do executável;
- diretório de origem definido por
EBOOKLAUNCHER_SOURCE_DIR; - diretório corrente do processo.
Esse comportamento permite executar tanto a partir da árvore de desenvolvimento quanto a partir da pasta de build implantada.
O projeto usa CMake Presets com Ninja e gera builds Release.
Presets principais:
mingw-release: Qt 6.10.3 MinGW, compiladorg++do Qt Tools.msvc-ninja-release: Qt 6.10.3 MSVC 2022, compiladorcl.exe.
Saídas esperadas:
build\mingw-release\Launcher EBook.exe
build\msvc-ninja-release\Launcher EBook.exe
Comandos equivalentes:
cmake --preset mingw-release
cmake --build --preset mingw-release --parallelcmake --preset msvc-ninja-release
cmake --build --preset msvc-ninja-release --parallelNo VS Code, as tarefas em .vscode/tasks.json encapsulam o ambiente correto de cada toolchain, incluindo QTDIR, PATH, Ninja, MinGW e vcvars64.bat para MSVC.
Em builds Windows, o CMake executa windeployqt após a linkedição. Isso copia para o diretório do executável:
- DLLs Qt necessárias;
- plugins de plataforma;
- plugins de imagem;
- estilos;
- componentes auxiliares exigidos pelo runtime Qt;
assets/;locale/.
Esse passo evita erros de execução por ausência de Qt6Core.dll, Qt6Gui.dll ou Qt6Widgets.dll.
Depois do windeployqt, o CMake sincroniza os produtos executáveis para:
D:\MISCELANEAS\VSCode\Launcher_EBook
As variantes principais são publicadas em:
D:\MISCELANEAS\VSCode\Launcher_EBook\Launcher_EBook_mingw
D:\MISCELANEAS\VSCode\Launcher_EBook\Launcher_EBook_msvc
Os mocks são publicados em:
D:\MISCELANEAS\VSCode\Launcher_EBook\mocks\compile_translations
D:\MISCELANEAS\VSCode\Launcher_EBook\mocks\find_VersionEditor
O script repo/sync_distribution.ps1 remove residuos de CMake/Ninja das builds principais antes de copiar a distribuição. Os instaladores Inno Setup ficam em repo/Launcher_EBook*.iss e usam como entrada as pastas externas acima, gerando os instaladores em D:\MISCELANEAS\VSCode\Launcher_EBook\InnoSetupOutput.
No VS Code, a tarefa Gerar Distribuição Launcher EBook recompila as variantes principais e os mocks, enquanto Gerar Instaladores Launcher EBook (Inno Setup) recompila as variantes principais e chama ISCC.exe sobre repo/Launcher_EBook.iss.
O diretório mocks/ contém pequenas GUIs de manutenção:
compile_translations: compila arquivos.tspara.qmusandolrelease.find_VersionEditor: atualiza versões em textos de Sobre e noCMakeLists.txt.
Ambas são compiladas com MinGW e usam o diretório único:
build\mocks
Presets:
cmake --preset mocks-mingw-release
cmake --build --preset mock-version-editor --parallel
cmake --build --preset mock-compile-translations --parallelCtrl+O: escolher diretório.Ctrl+R: listar arquivos.Ctrl+Shift+L: limpar dados.Ctrl+Q: sair.Ctrl+Alt+A: alternar relatório de quantidade de arquivos.Ctrl+Alt+P: alternar relatório de quantidade de pastas.Ctrl+Alt+1: português.Ctrl+Alt+2: inglês.Ctrl+Alt+G: gráfico de pizza.Ctrl+Alt+H: histograma.Ctrl+Alt+I: propriedade intelectual.Ctrl+Alt+D: termo de isenção de responsabilidade.Ctrl+Alt+M: licença MIT.
- Separação entre UI principal, descoberta de aplicativos associados e diálogo de escolha.
- Build declarativa com CMake Presets.
- Builds
Releasepor padrão. - Integração direta com VS Code por
tasks.json,settings.jsonec_cpp_properties.json. - Uso de APIs Qt para filesystem, MIME, JSON, tradução e UI.
- Persistência atômica de configurações com
QSaveFile. - Recursos externos copiados para o diretório de execução no pós-build.
- Diretórios de build isolados por toolchain.
- Mocks separados da aplicação principal para manutenção sem poluir o fluxo de execução do usuário final.
- Windows 10 ou superior.
- CMake 3.25 ou superior.
- Ninja em
C:\Qt\Tools\Ninja\ninja.exe. - Qt 6.10.3 com módulos
Core,Gui,WidgetseLinguistTools. - MinGW 13.1 fornecido pelo Qt em
C:\Qt\Tools\mingw1310_64. - Microsoft Visual Studio 2026/18 Community com toolchain MSVC x64 para o preset MSVC.
Os diretórios abaixo são regeneráveis:
build\mingw-release
build\msvc-ninja-release
build\mocks
Para limpeza assistida dos artefatos regeneráveis dos mocks e builds conhecidos, use:
.\mocks\limpar_build_qt6_regeneravel.ps1Use -WhatIf para simular antes de remover:
.\mocks\limpar_build_qt6_regeneravel.ps1 -WhatIfO projeto inclui texto de Licença MIT em assets/about, em português e inglês, para exibição no menu Sobre.