Revision as of 11:44, 26 May 2019 (view source)Aspotashev (talk | contribs)m (Aspotashev moved page Ktimetracker to KTimeTracker: fix capitalization)← Older edit Revision as of 23:14, 16 June 2019 (view source) Aspotashev (talk | contribs) Newer edit → Line 5: Line 5: [[Image:Ktimetracker.png|noframe|left|40px]] [[Image:Ktimetracker.png|noframe|left|40px]] KTimeTracker is a standalone desktop application. This page is for people who want to participate in the ktimetracker community. So, for (future) ktimetracker developers. KTimeTracker is a standalone desktop application. This page is for people who want to participate in the ktimetracker community. So, for (future) ktimetracker developers. + += How to build = + +== Linux == + + mkdir build && cd build + cmake .. && make && make install + +== Windows == + +Install [[Craft]], then: + + craft ktimetracker = Developing KTimeTracker = = Developing KTimeTracker = Revision as of 23:14, 16 June 2019 Ktimetracker ktimetracker running on the N810 KTimeTracker is a standalone desktop application. This page is for people who want to participate in the ktimetracker community. So, for (future) ktimetracker developers. Contents 1 How to build 1.1 Linux 1.2 Windows 2 Developing KTimeTracker 2.1 So you want to become a KTimeTracker developer 3 Architecture 4 Roadmap to the classes 5 how configuration is programmed 6 ktimetracker in the web 6.1 dbus 6.2 How to reproduce a stale lock 6.3 How to get rid of debugging output 6.4 Goals 6.5 Where is what ? 6.6 Development Direction 6.7 IdleTimeDetector 6.8 About storage 7 bugs 8 coding style 9 development direction 10 The help menu 11 Polls 12 recent activity 13 Related Projects 14 Readings 15 Maintainer knowledge How to build Linux mkdir build && cd build cmake .. && make && make install Windows Install Craft, then: craft ktimetracker Developing KTimeTracker look at our Bugzilla join our discussion on irc.kde.org, channel #kontact learn programming with KDE's Programming Tutorial So you want to become a KTimeTracker developer Here are your classes: mainwindow.*: Is the main window of the KDE application timetrackerwidget.*: Is a widget with no or several tabs that contain taskview.*: Is a treeListWidget that contains: task.*: A QObject and QTreeWidgetItem. A task can be constructed from a taskview and a todo. As soon as you instantiate a task, it becomes visible in your TreeWidget. timetrackerstorage.*: Is the storage backend that contains a: KCal::ResourceCalendar Architecture ktimetracker is a standalone application. MainWindow displays a timetrackerwidget, that is a ktabwidget containing one or more taskviews. A taskview is associated with a timetrackerstorage object that holds a calendar with todos and events. A taskview is a QTreeWidget that holds tasks. A task has a summary (name), a priority and times: the time, total time, session time and total session time. Over the QTreeWidget, a task can have subtasks. The total time is defined as the task's and all its subtasks' times. Roadmap to the classes See http://api.kde.org/4.x-api/kdepim-apidocs/ktimetracker/html/ main -> mainwindow ------------------------ -> task \ / -> timetrackerwidget -(contains n>=0)-> taskview - / \ ktimetracker_plugin -> ktimetrackerpart --- -> timetrackerstorage KTimeTrackerSettings ktimetracker's program main.cpp creates mainwindow, this creates a timetrackerpart this calls timetrackerwidget, this calls taskview, this contains a timetrackerstorage. karmstorage stores and loads the events and tasks. taskview displays them. timetrackerwidget displays one or more taskviews in tabs, plus the searchWidget. timetrackerpart can be integrated into a mainwindow or a kontact plugin. mainwindow adds the menu. MainWindow is the outermost layer and initializes the menus and actions, sets up the status bar, and handles many of the signal-to-slot connections. It holds a pointer to the timetrackerwidget and Preferences objects and implements the ktimetracker DBUS interface. TaskView does most of the work in the application. This QListWidget subclass sets up the columns in the list, the idle detection timer, the auto save timer, and the desktop tracker. It starts and stops timers, handles importing and exporting and displays the edit task dialog in response to user action. TaskView holds a private pointer to Preferences and a timetrackerstorage object. A Task is a QListViewItem subclass stores state such as the timer totals, if a timer is currently running for the task. It also defines the list view sort order and can return a pointer to a KCal::Todo object that holds the same information. Preferences is a singleton that stores configuration options. It raises signals when options change (for example, the location where the ktimetracker data is stored) so the application can react and adjust. timetrackerstorage is a singleton that creates an interface for storing ktimetracker data. Currently, it uses KDE Resource framework and stores data in the iCalendar format. KTimeTrackerSettings stores ktimetracker's configuration, settings, preferences or however you call it. It is declared in the file ktimetracker.h. how configuration is programmed Configuration is also called preferences. The following files are involved: cfgbehavior.ui ui_cfgbehavior.h - automatically created from cfgbehavior.ui preferences.h - saves which tasks will be shown expanded and which ones collapsed preferences.cpp - saves which tasks will be shown expanded and which ones collapsed preferences.moc - automatically created from preferences.h ktimetrackerconfigdialog.cpp ktimetracker.kcfgc ktimetracker.kcfg ktimetracker.h - declaring the class KTimeTrackerSettings. This file is automatically generated from ktimetracker.kcfg. ktimetracker.cpp - implementing the class KTimeTrackerSettings. This file is automatically generated from ktimetracker.kcfg. ktimetrackerconfigdialog.cpp ktimetrackerconfigdialog.h ktimetracker in the web If you need to update screenshots you might have to do it on the following pages: http://userbase.kde.org/KTimeTracker https://community.kde.org/Ktimetracker http://kde.org/applications/utilities/ktimetracker/ - deleted as of 2019-05-26 dbus dbus is clearly a developer topic. To test the dbus functionality of your KTimeTracker, have KTimeTracker running and proceed like in this example: qdbus ... org.kde.KTimeTracker ... qdbus org.kde.KTimeTracker ... /KTimeTracker ... qdbus org.kde.KTimeTracker /KTimeTracker ... method void org.kde.KTimeTracker.KTimeTracker.quit() ... qdbus org.kde.KTimeTracker /KTimeTracker org.kde.KTimeTracker.KTimeTracker.quit How to reproduce a stale lock Here is an example to give you an idea: touch .kde/share/apps/kabc/lock/_home_tom_.kde_share_apps_karm_karm.ics.lock How to get rid of debugging output cmake -DCMAKE_BUILD_TYPE=Release Goals ? Where is what ? The latest development sourcecode is available via web at https://projects.kde.org/projects/kde/kdepim You can subscribe to watch code changes at http://commitfilter.kde.org You can get informed on irc about code changes at freenode, channel #kde-commits You can discuss about KDE pim development on freenode, channel #kontact The api documentation is available at http://api.kde.org/4.x-api/kdepim-apidocs/ktimetracker/html/index.html The user documentation is generated from http://websvn.kde.org/trunk/KDE/kdepim/doc/ktimetracker KTimeTracker all-you-need in the internet: http://userbase.kde.org/KTimeTracker Development Direction The following similar programs can give you inspiration how to move forward developing: hourglass gnotime titrax taskCoach Hamster IdleTimeDetector The idletimedetector is in the equally-named .cpp and .h file. It starts a qtimer and at every timeout, checks, if the X extension delivers for the last user interaction a timepoint that is further away than the maxIdleTime. About storage The storage of your KTimeTracker data takes place in an iCal file. That format needs a bit of explanation. A simple one looks like the following: BEGIN:VCALENDAR PRODID:-//K Desktop Environment//NONSGML libkcal 3.5//EN VERSION:2.0 BEGIN:VTODO DTSTAMP:20060915T181010Z ORGANIZER;CN=root:MAILTO: X-KDE-karm-totalSessionTime:0 X-KDE-karm-totalTaskTime:19 CREATED:20060609T230212Z UID:libkcal-652058592.803 SEQUENCE:0 LAST-MODIFIED:20060915T181010Z SUMMARY:fg CLASS:PUBLIC PRIORITY:5 PERCENT-COMPLETE:0 END:VTODO BEGIN:VEVENT DTSTAMP:20060915T181010Z ORGANIZER:MAILTO: X-KDE-karm-duration:300 CREATED:20060915T174305Z UID:libkcal-6397995.845 SEQUENCE:0 LAST-MODIFIED:20060910T174305Z SUMMARY:fg CLASS:PUBLIC PRIORITY:5 CATEGORIES:KArm RELATED-TO:libkcal-652058592.803 DTSTART:20060910T172346Z DTEND:20060910T174305Z TRANSP:OPAQUE END:VEVENT END:VCALENDAR bugs Find ktimetracker's open bugs (without NEEDINFO bugs) with this query find all ktimetracker's bugs with this query coding style It is more important that you contribute than that you contribute with the right coding style. That having said, I prefer if you use code that is consistent with QtCreator's defaults. Opening and closing brackets and parentheses should be on the same row or column. development direction There should not be any "New" and "Close". ktimetracker should contain exactly one taskview. See https://bugs.kde.org/show_bug.cgi?id=182317 and https://bugs.kde.org/show_bug.cgi?id=265085 The help menu The help menu is stupidly overloaded and I cannot do anything about it because it is somewhere hidden in the library code. Would love to simplify it. "Help" does not need subitems - you want help. Polls Do you want to be able to start several ktimetracker instances? recent activity Ktimetracker history export and editing broken duplicate 238164 setting changes do not have immediate effect Store value in edit history dialog even if user does not change cell afterwards., fix, backport When saving to ical file, ktimetracker adds timezone info to DTSTART but not to DTEND, fix, backport when I start ktimetracker for the first time, a file dialog appears, fix, backport tray icons ktimetracker always have tray icon(s) even if configured to disable them, fix, backport System tray icon displayed 2 times, fix, backport Related Projects http://websvn.kde.org/trunk/playground/base/plasma/applets/timetracker/ Readings http://doc.trolltech.com/4.5/itemviews-simpletreemodel.html RFC 2445 Maintainer knowledge If you want to hand over maintainership, here is some info: to be allowed to change ktimetracker options in bugzilla, like adding a new version to bugzilla: open a request under https://bugs.kde.org/enter_sysadmin_request.cgi and ask to be added to the editcomponents group change ktimetracker options (e.g. add a version) under https://bugs.kde.org/editproducts.cgi?action=edit&product=ktimetracker Retrieved from "https://community.kde.org/index.php?title=KTimeTracker&oldid=84961" Content is available under Creative Commons License SA 4.0 unless otherwise noted.