mirror of
https://github.com/ea4k/klog.git
synced 2024-09-21 10:28:06 +00:00
289 lines
8.7 KiB
Plaintext
289 lines
8.7 KiB
Plaintext
This is a file to read if you want to join the KLog development team.
|
|
|
|
This document will explain the KLog architecture, requirements, tips and important to know
|
|
things to take into account when joining the KLog development team.
|
|
|
|
|
|
|
|
CONTENT:
|
|
1 - BEFORE CODING
|
|
2 - KLOG ARCHITECTURE
|
|
3 - BEFORE CODING
|
|
4 - CODING
|
|
5 - AFTER CODING
|
|
6 - GUI
|
|
7 - DOCUMENTATION
|
|
8 - TRANSLATIONS
|
|
9 - DEPLOYING
|
|
|
|
|
|
|
|
|
|
|
|
0 - MISSION AND OBJECTIVE
|
|
|
|
The objective of KLog is to provide a free software that runs in Linux, macOS and Windows.
|
|
KLog will provide hamradio contest and DX logging support.
|
|
|
|
0.1 - REQUIREMENTS
|
|
|
|
- Able to run in Linux, macOS and Windows.
|
|
- Easy to use.
|
|
- Able to localize to any language.
|
|
- Any data can be exportable into ADIF (http://www.adif.org).
|
|
- Can import standard ADIF.
|
|
- Can export to Cabrillo (http://www.kkn.net/~trey/cabrillo/).
|
|
|
|
- Provides a user manual / documentation.
|
|
|
|
|
|
|
|
1 - BEFORE CODING:
|
|
|
|
Read this document.
|
|
|
|
Join the KLog mailing list and send a "Hello that's me and I am here" message:
|
|
http//MAILINGLIST
|
|
|
|
Interesting links:
|
|
http://www.qtcentre.org/wiki/index.php?title=Keeping_the_GUI_Responsive
|
|
Packer: http://upx.sourceforge.net/
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
2 - KLOG ARCHITECTURE
|
|
|
|
KLog is intended to be a MODULAR software with the requirement to be modular ;-) so it is easy to
|
|
add new features (mainly contests and awards support).
|
|
|
|
2.1 IMPORTANT THINGS TO HAVE IN MIND
|
|
|
|
DEPRECATED - KLog version number is using the following system:
|
|
Release versions: The Decimal part of the version number will always use even numbers like 0, 1.2, 2.20, ...
|
|
while the decimal part of the development or Release Candidate versions will always be an odd number ie 0.1, 1.3, ...
|
|
The release number is defined in the "main.cpp" file.
|
|
|
|
- KLog should manage several logs. The "log" table of the DB has a column called "lognumber".
|
|
ALL QSO has a lognumber id that identifies the log it belongs to.
|
|
Each lognumber will have associated a Name and/or ID (TBD) so the user is able to "open" just
|
|
that log. It is important that all the QSO operations are aware of this lognumber id.
|
|
|
|
- The log table has a "marked" column. This column is to allow mass operations. Changing this column has
|
|
to be done with care and leave it "unmarked" once the desired operation is finished.
|
|
KLog should unmark(N) all QSO when starts and exits. Mark = 'X', unmark='N' or other.
|
|
Marked column should not be saved.
|
|
|
|
- Any change to the DB architecture must be communicated and agreed with the development team before
|
|
commiting to the SVN and following the 2.4 DB UPDATES area in this document.
|
|
|
|
|
|
|
|
2.2 CONTEST SUPPORT
|
|
|
|
The "Contest" class (in contest.h) is a base class and all the contest should inherit it.
|
|
The "Contest" class has several virtual functions that should re-implemented in all derived classes.
|
|
|
|
2.2.1 ADDING A NEW CONTEST
|
|
|
|
To add a new contest, a new class, inheriting the "Contest" class should be created.
|
|
|
|
The new contest file should be named: "contest_nameofthecontest.h" and "contest_nameofthecontest.cpp"
|
|
and should be included in the mainwindow.h
|
|
|
|
All the calls to the contest class should be implemented in the virtual class.
|
|
|
|
A new contest must include the implementation of all the functions of the virtual class.
|
|
|
|
|
|
2.3 AWARD SUPPORT
|
|
|
|
2.4 DB UPDATES
|
|
|
|
A DB update consist on:
|
|
|
|
- All the intended changes.
|
|
- Update the softwarecontrol TABLE on the DB
|
|
|
|
To update the DB structure there are several things to have in mind:
|
|
|
|
- The current version of the DB is defined in database.h
|
|
const float DBVersionf = 0.003;
|
|
|
|
- All the actions to update the DB to the new structure are done here:
|
|
DataBase::updateIfNeeded
|
|
|
|
- After making any update
|
|
|
|
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
3 - BEFORE CODING
|
|
|
|
Update your sources from the SVN: Remember that other developer may has done a commit.
|
|
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
4 - CODING
|
|
|
|
- The development language is English.
|
|
- All Strings to be shown to the user must be translatable. i.e. tr("String")
|
|
|
|
4.1 - STYLE
|
|
4.2 - ADIF SUPPORT
|
|
|
|
KLog is using some application defined ADIF fields: APP_{PROGRAMID}_{FIELDNAME}
|
|
|
|
Header fields:
|
|
APP_KLOG_LOG_DATE_EXPORT: The date and time (in UTC) when the log was exported.
|
|
APP_KLOG_QSOS: The number of QSOs in the log.
|
|
DEPRECATED: APP_KLOG_RELEASE: Release of KLog used to export the log file. CHANGED TO PROGRAMVERSION (ADIF standard)
|
|
|
|
QSO fields:
|
|
APP_KLOG_POINTS: Points given by the QSO.
|
|
APP_KLOG_MULTIPLIER: Information about the multiplier status of the QSO.
|
|
APP_KLOG_LOGN: Lognumber if the ADIF file contains several logs.
|
|
|
|
|
|
KLog is also importing other application defined ADIF fields:
|
|
APP_N1MM_POINTS: That is imported into the points column in the log table.
|
|
|
|
KLog should not export any ADIF header that comming from other application without renaming it to APP_KLOG_
|
|
|
|
4.3 SHORTCUTS
|
|
|
|
Before adding or modifying any shortcut:
|
|
- It should be agreed in the devel mailing list.
|
|
- It should be as standard as possible, reuse the same shortcuts of main/popular contest software.
|
|
- It should be checked and added to a list below.
|
|
|
|
|
|
|
|
4.4 DATA BASE
|
|
|
|
- The DB version has to be checked and modified after a DB schema modification.
|
|
- Any modification to the DB has to be provided with the code to update from any previous version.
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
5 - AFTER CODING
|
|
|
|
Test that your code compiles and does not break the previous code.
|
|
|
|
Document your changes and close/update the tasks/bugs you have worked on.
|
|
|
|
Remember to commit your code to the SVN.
|
|
|
|
Try to do "atomic" commits. That is to commit updates that may be disabled as a block.
|
|
i.e. A new function or a modification to a function. Don't commit several things at once
|
|
if you can avoid it.
|
|
This is just a recommendation to avoid big commits that, in case of a problem are difficult to
|
|
trace.
|
|
|
|
Document your commits: ALWAYS add a clear comment to the commits so it is easy to know what is it about.
|
|
|
|
5.1 TEST CHECKLIST
|
|
|
|
Here is the list of tests to be done before releasing new software:
|
|
|
|
- Install in a new installation of Windows/macOS
|
|
- Upgrade from a previous version
|
|
|
|
- Create a new log
|
|
- Add a new QSO
|
|
- Check that the DXCC & IOTA continent make sense
|
|
- Edit a QSO from log
|
|
- Modify at least one field in each tab
|
|
- Edit a QSO from the search box
|
|
- Remove a QSO
|
|
- Update the DXCC status tab
|
|
|
|
|
|
- Connect to the DXCluster
|
|
- Click on a spot on the DXCluster
|
|
|
|
- Export an ADIF file
|
|
- Import an ADIF file
|
|
|
|
- Remove KLog in Windows
|
|
|
|
|
|
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
6 - GUI
|
|
|
|
6.1 CONTEST GUI
|
|
|
|
- The GUI should only have the data fields that are needed for that contest, keeping the GUI simple
|
|
and easy to use.
|
|
|
|
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
7 - DOCUMENTATION
|
|
|
|
- One feature will not be considered completed until it is not added to the user manual.
|
|
Please document in the klog-handbook.xml your feature so the user knows how to use it.
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
9 - TRANSLATIONS
|
|
|
|
9.1 ADDING TRANSLATIONS
|
|
|
|
To add a new translation add the new language file to the klog.pro file following the sintax:
|
|
|
|
TRANSLATIONS = KLog_es.ts \
|
|
klog_fr.ts
|
|
|
|
Being es, fr, the ISO codes naming the language.
|
|
|
|
After a translation is added, you also need to update the aboutdialog.cpp to include a new Translator line.
|
|
|
|
9.2 TRANSLATING
|
|
|
|
Translators should work in the *.ts files.
|
|
|
|
9.2 UPDATING TRANSLATIONS
|
|
|
|
Update translations:
|
|
Run: lupdate -verbose klog.pro
|
|
in the klog directory to update the language files
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
|
|
|
9 - DEPLOYING
|
|
|
|
Before deploying, translations should be updated.
|
|
|
|
|
|
9.1 DEPLOYING ON LINUX
|
|
|
|
9.2 DEPLOYING ON macOS
|
|
|
|
Build KLog with QTCreator
|
|
|
|
Run the following command from the build directory:
|
|
mv klog.app KLog.app
|
|
create new folder in KLog.app/Contents/PlugIns/sqldrivers
|
|
copy $QT_DIR/plugins/sqldrivers/libqsqlite.dylib to the new folder (/Developer/Applications/Qt/plugins/)
|
|
create new folder: KLog.app/Contents/MacOs/translations
|
|
copy the *.qm (translation) files into KLog.app/Contents/MacOS/translations
|
|
macdeployqt KLog.app/ -dmg
|
|
mv KLog.dmg KLog-[VERSION].dmg
|
|
|
|
9.3 DEPLOYING ON WINDOWS
|
|
Currently using an Open Source Licence of: BitRock InstallBuilder
|
|
|
|
9.4 ICON
|
|
Follow this link for all the OS:
|
|
http://doc.qt.io/qt-5/appicon.html
|
|
|
|
Installer:
|
|
http://en.wikipedia.org/wiki/List_of_installation_software
|
|
|