• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

ktimetracker

  • sources
  • kde-4.12
  • kdepim
  • ktimetracker
main.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1997 by Stephan Kulow <coolo@kde.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the
16  * Free Software Foundation, Inc.
17  * 51 Franklin Street, Fifth Floor
18  * Boston, MA 02110-1301 USA.
19  *
20  */
21 
22 #include "desktoplist.h"
23 #include <iostream>
24 #include <signal.h>
25 #include <QFile>
26 #include <KAboutData>
27 #include <KCmdLineArgs>
28 #include <KDebug>
29 #include <KLocale>
30 #include <KStandardDirs>
31 #include <kontactinterface/pimuniqueapplication.h>
32 
33 #include "kdepim-version.h"
34 #include "mainwindow.h"
35 #include "mainadaptor.h"
36 #include "timetrackerstorage.h"
37 #include "task.h"
38 #include <QDebug>
39 
40 namespace
41 {
42  const char* description = I18N_NOOP("KDE Time tracker tool");
43 
44  void cleanup( int )
45  {
46  kDebug(5970) << i18n("Just caught a software interrupt.");
47  kapp->exit();
48  }
49 }
50 
51 QString icsfile( const KCmdLineArgs* args ) // deliver the name of the iCalendar file to be used
52 {
53  QString result;
54  if ( args->count() > 0 ) // file is given as parameter
55  {
56  result = args->arg( 0 );
57  KUrl* icsfileurl=new KUrl(args->arg( 0 ));
58  if (( icsfileurl->protocol() == "http" ) || ( icsfileurl->protocol() == "ftp" ) || ( icsfileurl->isLocalFile() ))
59  {
60  // leave as is
61  ;
62  }
63  else
64  {
65  result = KCmdLineArgs::cwd() + '/' + result;
66  }
67  delete icsfileurl;
68  }
69  else // file is not given as parameter
70  {
71  result=QString(KStandardDirs::locate( "data", "ktimetracker/ktimetracker.ics" ));
72  if ( !QFile::exists( result ) )
73  {
74  QFile oldFile( KStandardDirs::locate( "data", "karm/karm.ics" ) );
75  result = KStandardDirs::locateLocal( "appdata", QString::fromLatin1( "ktimetracker.ics" ) );
76  if ( oldFile.exists() )
77  oldFile.copy( result );
78  }
79  }
80  return result;
81 }
82 
83 int main( int argc, char *argv[] )
84 {
85  KAboutData aboutData( "ktimetracker", 0, ki18n("KTimeTracker"),
86  KDEPIM_VERSION, ki18n(description), KAboutData::License_GPL,
87  ki18n("Copyright © 1997-2012 KDE PIM authors"), KLocalizedString(),
88  QByteArray("http://userbase.kde.org/KTimeTracker") );
89 
90  aboutData.addAuthor( ki18n("Thorsten Stärk"), ki18n( "Current Maintainer" ),
91  "kde@staerk.de" );
92  aboutData.addAuthor( ki18n("Sirtaj Singh Kang"), ki18n( "Original Author" ),
93  "taj@kde.org" );
94  aboutData.addAuthor( ki18n("Allen Winter"), KLocalizedString(), "winter@kde.org" );
95  aboutData.addAuthor( ki18n("David Faure"), KLocalizedString(), "faure@kde.org" );
96  aboutData.addAuthor( ki18n("Mathias Soeken"), KLocalizedString(), "msoeken@tzi.de" );
97  aboutData.addAuthor( ki18n("Jesper Pedersen"), KLocalizedString(), "blackie@kde.org" );
98  aboutData.addAuthor( ki18n("Kalle Dalheimer"), KLocalizedString(), "kalle@kde.org" );
99  aboutData.addAuthor( ki18n("Mark Bucciarelli"), KLocalizedString(), "mark@hubcapconsulting.com" );
100  KCmdLineArgs::init( argc, argv, &aboutData );
101 
102  KCmdLineOptions options;
103  options.add("+file", ki18n( "The iCalendar file to open" ));
104  options.add("listtasknames", ki18n( "List all tasks as text output" ));
105  options.add("addtask <taskname>", ki18n( "Add task <taskname>" ));
106  options.add("deletetask <taskid>", ki18n( "Delete task <taskid>" ));
107  options.add("taskidsfromname <taskname>", ki18n( "Print the task ids for all tasks named <taskname>" ));
108  options.add("starttask <taskid>", ki18n( "Start timer for task <taskid>" ));
109  options.add("stoptask <taskid>", ki18n( "Stop timer for task <taskid>" ));
110  options.add("totalminutesfortaskid <taskid>", ki18n( "Deliver total minutes for task id" ));
111  options.add("version", ki18n( "Outputs the version" ));
112  KCmdLineArgs::addCmdLineOptions( options );
113  KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
114  int err=0; // error code
115  bool konsolemode=false; // open a gui and wait for user input?
116  if ( args->isSet("listtasknames") ) konsolemode=true;
117  if ( !args->getOption("addtask").isEmpty() ) konsolemode=true;
118  if ( !args->getOption("deletetask").isEmpty() ) konsolemode=true;
119  if ( !args->getOption("taskidsfromname").isEmpty() ) konsolemode=true;
120  if ( !args->getOption("totalminutesfortaskid").isEmpty() ) konsolemode=true;
121  if ( !args->getOption("starttask").isEmpty() ) konsolemode=true;
122  if ( !args->getOption("stoptask").isEmpty() ) konsolemode=true;
123 
124  if ( !konsolemode )
125  { // no konsole mode
126  KApplication myApp;
127  MainWindow *mainWindow;
128  mainWindow = new MainWindow( icsfile( args ) );
129  if (kapp->isSessionRestored() && KMainWindow::canBeRestored( 1 ))
130  mainWindow->restore( 1, false );
131  else
132  mainWindow->show();
133 
134  signal( SIGQUIT, cleanup );
135  signal( SIGINT, cleanup );
136  args->clear();
137  int ret = myApp.exec();
138 
139  delete mainWindow;
140  return ret;
141  }
142  else // we are running in konsole mode
143  {
144  kDebug(5970) << "We are running in konsole mode";
145  KCmdLineArgs::addCmdLineOptions( options );
146  KApplication myApp(false);
147  KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
148  // listtasknames
149  if ( args->isSet("listtasknames") )
150  {
151  timetrackerstorage* sto=new timetrackerstorage();
152  sto->load( 0, icsfile( args ) );
153  QStringList tasknameslist=sto->taskNames();
154  for ( int i=0; i<tasknameslist.count(); ++i )
155  {
156  char* line = tasknameslist[i].toLatin1().data();
157  std::cout << line << std::endl;
158  }
159  delete sto; // make valgrind happy
160  }
161  // addtask
162  if ( !args->getOption("addtask").isEmpty() )
163  {
164  timetrackerstorage* sto=new timetrackerstorage();
165  sto->load( 0, icsfile( args ) );
166  const QString& s=args->getOption("addtask");
167  QVector<int> vec;
168  DesktopList dl=vec;
169  Task* task=new Task( s, QString(), (long int) 0,(long int) 0, dl, 0, true );
170  sto->addTask( task );
171  sto->save( 0 );
172  delete sto;
173  }
174  // deletetask
175  if ( !args->getOption("deletetask").isEmpty() )
176  {
177  timetrackerstorage* sto=new timetrackerstorage();
178  sto->load( 0, icsfile( args ) );
179  const QString& taskid=args->getOption("deletetask");
180  sto->removeTask( taskid );
181  delete sto;
182  }
183  // taskidsfromname
184  if ( !args->getOption("taskidsfromname").isEmpty() )
185  {
186  timetrackerstorage* sto=new timetrackerstorage();
187  sto->load( 0, icsfile( args ) );
188  const QString& taskname=args->getOption("taskidsfromname");
189  QStringList taskids=sto->taskidsfromname( taskname );
190  for ( int i=0; i<taskids.count(); ++i )
191  {
192  char* line = taskids[i].toLatin1().data();
193  std::cout << line << std::endl;
194  }
195  delete sto;
196  }
197  // totalminutesfortaskid
198  if ( !args->getOption("totalminutesfortaskid").isEmpty() )
199  {
200  timetrackerstorage* sto=new timetrackerstorage();
201  sto->load( 0, icsfile( args ) );
202  Task* task=sto->task( args->getOption("totalminutesfortaskid"), 0 );
203  if (task!=0)
204  {
205  kDebug(5970) << "taskname=" << task->name();
206  std::cout << task->totalTime();
207  }
208  delete sto;
209  }
210  // starttask
211  if ( !args->getOption("starttask").isEmpty() )
212  {
213  timetrackerstorage* sto=new timetrackerstorage();
214  sto->load( 0, icsfile( args ) );
215  sto->startTimer(args->getOption("starttask"));
216  delete sto;
217  }
218  // stoptask
219  if ( !args->getOption("stoptask").isEmpty() )
220  {
221  timetrackerstorage* sto=new timetrackerstorage();
222  sto->load( 0, icsfile( args ) );
223  sto->stopTimer(sto->task( args->getOption("stoptask"), 0 ));
224  delete sto;
225  }
226  args->clear();
227  }
228  return err;
229 }
timetrackerstorage::startTimer
void startTimer(const Task *task, const KDateTime &when=KDateTime::currentLocalDateTime())
Log the event that a timer has started for a task.
Definition: timetrackerstorage.cpp:897
Task::name
QString name() const
returns the name of this task.
Definition: task.cpp:680
timetrackerstorage::taskidsfromname
QStringList taskidsfromname(QString taskname)
Return a list of all task ids for taskname.
Definition: timetrackerstorage.cpp:470
desktoplist.h
mainwindow.h
timetrackerstorage::removeTask
bool removeTask(Task *task)
Remove this task from iCalendar file.
Definition: timetrackerstorage.cpp:510
DesktopList
QVector< int > DesktopList
Definition: desktoplist.h:28
task.h
timetrackerstorage::stopTimer
void stopTimer(const Task *task, const QDateTime &when=QDateTime::currentDateTime())
Log the event that the timer has stopped for this task.
Definition: timetrackerstorage.cpp:929
timetrackerstorage::task
Task * task(const QString &uid, TaskView *view)
Find the task with the given uid.
Definition: timetrackerstorage.cpp:208
timetrackerstorage::save
QString save(TaskView *taskview)
Save all tasks and their totals to an iCalendar file.
Definition: timetrackerstorage.cpp:367
icsfile
QString icsfile(const KCmdLineArgs *args)
Definition: main.cpp:51
timetrackerstorage::addTask
QString addTask(const Task *task, const Task *parent=0)
Add this task from iCalendar file.
Definition: timetrackerstorage.cpp:442
main
int main(int argc, char *argv[])
Definition: main.cpp:83
Task
A class representing a task.
Definition: task.h:54
timetrackerstorage::taskNames
QStringList taskNames() const
Return a list of all task names.
Definition: timetrackerstorage.cpp:484
timetrackerstorage.h
timetrackerstorage::load
QString load(TaskView *taskview, const QString &fileName)
Load the list view with tasks read from iCalendar file.
Definition: timetrackerstorage.cpp:99
MainWindow
Main window to tie the application together.
Definition: mainwindow.h:43
timetrackerstorage
Class to store/retrieve KTimeTracker data to/from persistent storage.
Definition: timetrackerstorage.h:57
Task::totalTime
long totalTime() const
Definition: task.h:206
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:10 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

ktimetracker

Skip menu "ktimetracker"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal