App de tareas de la comunidad deepin en Español. Construida con Qt6 y DTK para el escritorio Deepin.
- Crear, editar, eliminar tareas con renombrado inline (doble clic)
- Marcar tareas como completadas con tachado visual
- Drag & drop para reordenar tareas
- Búsqueda y filtro en tiempo real por nombre
- Recordatorios con fecha/hora — notificación del escritorio al vencimiento
- Notificaciones de acciones al crear, completar o eliminar tareas
- 28 idiomas (i18n): español, inglés, chino, francés, árabe, portugués, ruso, japonés, alemán, italiano, coreano, tailandés, neerlandés, catalán, polaco, turco, ucraniano, bengalí, indonesio, urdu, hausa, swahili, telugu, marathi, hindi, persa, chino tradicional, yoruba
- Diálogos nativos DTK (DDialog) para todas las operaciones
- Iconos DTK en botones de toolbar y acciones de tarea
- UI con toolbar en 2 filas: búsqueda + stats + limpiar / estado + progreso + deshacer + añadir
- Barra de progreso con porcentaje visible
- Atajos de teclado:
Ctrl+N— Añadir tareaCtrl+Delete— Limpiar completadasCtrl+E— Exportar a JSONCtrl+I— Importar desde JSONCtrl+T— EstadísticasEscape— Limpiar búsqueda
- Auto-guardado con debounce (1.5s) — nunca pierdes datos
- Deshacer eliminar — la última tarea eliminada se puede restaurar (5 segundos)
- Exportar/Importar JSON con soporte de recordatorios
- Almacenamiento persistente con QSettings
- Fecha de creación con tiempo relativo ("hace 5 min", "ayer")
- Integración DTK: diálogo About con icono SVG, menú en barra de título
- Qt 6.x (Widgets, DBus)
- DTK Widget 6.x (
dtk6widget) - pkg-config
- g++ 10+ o clang 12+
- cmake 3.14+
- Qt6 LinguistTools (para traducciones)
mkdir build && cd build
cmake ..
make -j$(nproc)./ToDo# Desde código fuente
dpkg-buildpackage -us -uc
# O instalar .deb pre-compilado
sudo dpkg -i deepines-todo_2.0-1_amd64.deb
sudo apt install -fcmake -B build -DCMAKE_INSTALL_PREFIX=/usr
sudo cmake --install buildEsto instala:
- Binario en
/usr/bin/ToDo - Icono SVG en
/usr/share/icons/hicolor/scalable/apps/deepines-todo.svg - Desktop entry en
/usr/share/applications/deepines-todo.desktop - AppData en
/usr/share/metainfo/deepines-todo.appdata.xml - Documentación en
/usr/share/doc/ToDo/ - Traducciones en el binario (28 idiomas)
├── CMakeLists.txt # Build system (Qt6 + DTK + LinguistTools)
├── README.md
├── LICENSE # GPL-3.0
├── .gitignore
├── src/ # Código fuente
│ ├── main.cpp # Punto de entrada, configuración DTK, About dialog
│ ├── MainWindow.h/.cpp # Ventana principal, lógica de tareas, notificaciones
│ ├── MainWindow.ui # UI de la ventana principal (toolbar en 2 filas)
│ ├── Task.h/.cpp # Widget de tarea individual, recordatorios
│ ├── Task.ui # UI de cada tarea (checkbox + fecha + campana + botones)
│ └── NotificationManager.h # Helper DBus para notificaciones del escritorio
├── translations/ # Archivos de traducción (28 idiomas)
│ ├── ToDo_es.ts
│ ├── ToDo_en.ts
│ ├── ToDo_zh.ts
│ └── ... (28 archivos .ts)
├── resources/ # Recursos
│ ├── imgs.qrc # Archivo de recursos Qt
│ ├── Logo-Racoon.png # Logo de la comunidad
│ ├── todo-icon.svg # Icono de la aplicación
│ └── deepines-todo.appdata.xml
├── debian/ # Empaquetado Debian
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── rules
│ └── source/format
└── doc/
└── IMG/
└── deepinestodo.png # Captura de pantalla
Ventana principal que gestiona la lista de tareas:
- CRUD de tareas (crear, renombrar, eliminar, marcar completada)
- Filtrado por nombre en tiempo real
- Reordenamiento con drag & drop (
QListWidgetconInternalMove) - Persistencia con
QSettings(nombre, estado, fecha creación, recordatorio, notificado) - Auto-guardado con
QTimerde debounce (1.5 segundos) - Timer de recordatorios (
QTimer, 30 segundos) — verifica tareas vencidas y envía notificación - Undo delete: almacena la última tarea eliminada para restaurar
- Exportar/Importar tareas a formato JSON (incluye campos de recordatorio)
- Diálogos nativos DTK (
DDialog) para todas las operaciones - Menú en la barra de título (
DTitlebar) - Notificaciones de acciones: enviar notificación al crear, completar y eliminar tareas
Widget individual para cada tarea:
- Checkbox con tachado al completar
- Edición inline con
QStackedWidget(alterna entre vista yQLineEdit) - Doble clic para renombrar
Escapecancela la edición,Enterguarda- Fecha de creación con tiempo relativo
- Recordatorio (
m_reminderAt): DateTime del recordatorio - Estado de notificación (
m_notified: si ya se envió la notificación) - Label de campana (
reminderLabel): muestra tiempo restante del recordatorio - Iconos DTK en botones:
document-edit(editar) yedit-delete(eliminar) - Señales
removedystatusChangedpara comunicarse conMainWindow
Helper para enviar notificaciones del escritorio via DBus:
- Usa
org.freedesktop.Notifications(especificación freedesktop) - Sin dependencias adicionales — solo
Qt6::DBus - Método estático
send(title, body, icon) - Timeout de 5 segundos
Task tiene reminderAt (QDateTime)
→ MainWindow tiene m_reminderTimer (30 segundos)
→ Cada tick: verifica tareas vencidas (!isNotified && reminderAt <= now)
→ NotificationManager::send() vía DBus
→ Marca task->setNotified(true)
→ scheduleSave() persiste el cambio
Usuario interactúa con Task widget
→ Task emite removed/statusChanged
→ MainWindow recibe señal
→ Actualiza m_tasks vector y UI
→ scheduleSave() inicia QTimer (1.5s debounce)
→ saveTasks() escribe a QSettings (incluye reminderAt, notified)
- Base: español (es)
- 28 idiomas soportados via Qt Linguist
- Strings envueltos en
tr()en todo el código fuente - Traducciones en
translations/ToDo_*.ts - Carga automática por locale del sistema en
main.cpp
| Atajo | Acción |
|---|---|
Ctrl+N |
Añadir nueva tarea |
Ctrl+Delete |
Limpiar tareas completadas |
Ctrl+E |
Exportar tareas a JSON |
Ctrl+I |
Importar tareas desde JSON |
Ctrl+T |
Mostrar estadísticas |
Escape |
Limpiar campo de búsqueda |
Doble clic |
Renombrar tarea |
Enter |
Guardar nombre al editar |
Escape (editando) |
Cancelar edición |
GPL-3.0-or-later — ver LICENSE.
- Deepin en Español — https://deepinenespanol.org
- Deepin Latin Code — developers
- Alvaro Samudio — autor