Browse Source

Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.

BUG:215923


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19
tags/v3.5.13
toma 9 years ago
commit
460c52653a
100 changed files with 16719 additions and 0 deletions
  1. 9
    0
      .emacs-dirvars
  2. 45
    0
      MAINTAINERS
  3. 94
    0
      Mainpage.dox
  4. 50
    0
      Makefile.am.in
  5. 16
    0
      Makefile.cvs
  6. 84
    0
      README
  7. 82
    0
      README.Kolab
  8. 4
    0
      README.libical
  9. 44
    0
      akregator/AUTHORS
  10. 340
    0
      akregator/COPYING
  11. 430
    0
      akregator/ChangeLog
  12. 251
    0
      akregator/HACKING
  13. 167
    0
      akregator/INSTALL
  14. 5
    0
      akregator/Makefile.am
  15. 3
    0
      akregator/NEWS
  16. 27
    0
      akregator/README
  17. 23
    0
      akregator/TODO
  18. 14
    0
      akregator/akregator.lsm
  19. 166
    0
      akregator/src/Makefile.am
  20. 6
    0
      akregator/src/about/Makefile.am
  21. 20
    0
      akregator/src/about/akregator.css
  22. 66
    0
      akregator/src/about/main.html
  23. BIN
      akregator/src/about/top-right-akregator.png
  24. 58
    0
      akregator/src/aboutdata.cpp
  25. 46
    0
      akregator/src/aboutdata.h
  26. 55
    0
      akregator/src/actionmanager.cpp
  27. 62
    0
      akregator/src/actionmanager.h
  28. 443
    0
      akregator/src/actionmanagerimpl.cpp
  29. 97
    0
      akregator/src/actionmanagerimpl.h
  30. 123
    0
      akregator/src/addfeeddialog.cpp
  31. 74
    0
      akregator/src/addfeeddialog.h
  32. 145
    0
      akregator/src/addfeedwidgetbase.ui
  33. 111
    0
      akregator/src/akregator.desktop
  34. 218
    0
      akregator/src/akregator.kcfg
  35. 28
    0
      akregator/src/akregator_export.h
  36. 45
    0
      akregator/src/akregator_options.h
  37. 1035
    0
      akregator/src/akregator_part.cpp
  38. 13
    0
      akregator/src/akregator_part.desktop
  39. 223
    0
      akregator/src/akregator_part.h
  40. 175
    0
      akregator/src/akregator_part.rc
  41. 49
    0
      akregator/src/akregator_partiface.h
  42. 86
    0
      akregator/src/akregator_plugin.desktop
  43. 72
    0
      akregator/src/akregator_run.cpp
  44. 70
    0
      akregator/src/akregator_run.h
  45. 55
    0
      akregator/src/akregator_shell.rc
  46. 1533
    0
      akregator/src/akregator_view.cpp
  47. 343
    0
      akregator/src/akregator_view.h
  48. 8
    0
      akregator/src/akregatorconfig.kcfgc
  49. 479
    0
      akregator/src/article.cpp
  50. 147
    0
      akregator/src/article.h
  51. 715
    0
      akregator/src/articlefilter.cpp
  52. 301
    0
      akregator/src/articlefilter.h
  53. 52
    0
      akregator/src/articleinterceptor.cpp
  54. 46
    0
      akregator/src/articleinterceptor.h
  55. 812
    0
      akregator/src/articlelistview.cpp
  56. 137
    0
      akregator/src/articlelistview.h
  57. 797
    0
      akregator/src/articleviewer.cpp
  58. 154
    0
      akregator/src/articleviewer.h
  59. 30
    0
      akregator/src/articleviewer.rc
  60. 77
    0
      akregator/src/configdialog.cpp
  61. 58
    0
      akregator/src/configdialog.h
  62. BIN
      akregator/src/cr16-app-akregator_empty.png
  63. 119
    0
      akregator/src/dragobjects.cpp
  64. 72
    0
      akregator/src/dragobjects.h
  65. 219
    0
      akregator/src/eventsrc
  66. 857
    0
      akregator/src/feed.cpp
  67. 292
    0
      akregator/src/feed.h
  68. 12
    0
      akregator/src/feed.protocol
  69. 157
    0
      akregator/src/feediconmanager.cpp
  70. 86
    0
      akregator/src/feediconmanager.h
  71. 119
    0
      akregator/src/feeditem.cpp
  72. 63
    0
      akregator/src/feeditem.h
  73. 268
    0
      akregator/src/feedlist.cpp
  74. 102
    0
      akregator/src/feedlist.h
  75. 1023
    0
      akregator/src/feedlistview.cpp
  76. 206
    0
      akregator/src/feedlistview.h
  77. 146
    0
      akregator/src/feedstorage.h
  78. 469
    0
      akregator/src/feedstoragedummyimpl.cpp
  79. 106
    0
      akregator/src/feedstoragedummyimpl.h
  80. 160
    0
      akregator/src/fetchqueue.cpp
  81. 90
    0
      akregator/src/fetchqueue.h
  82. 347
    0
      akregator/src/folder.cpp
  83. 179
    0
      akregator/src/folder.h
  84. 86
    0
      akregator/src/folderitem.cpp
  85. 61
    0
      akregator/src/folderitem.h
  86. 213
    0
      akregator/src/frame.cpp
  87. 100
    0
      akregator/src/frame.h
  88. BIN
      akregator/src/hi128-app-akregator.png
  89. BIN
      akregator/src/hi16-app-akregator.png
  90. BIN
      akregator/src/hi22-app-akregator.png
  91. BIN
      akregator/src/hi32-app-akregator.png
  92. BIN
      akregator/src/hi48-app-akregator.png
  93. BIN
      akregator/src/hi64-app-akregator.png
  94. BIN
      akregator/src/hisc-app-akregator.svgz
  95. 67
    0
      akregator/src/kcursorsaver.h
  96. 60
    0
      akregator/src/kernel.cpp
  97. 80
    0
      akregator/src/kernel.h
  98. 20
    0
      akregator/src/librss/COPYING
  99. 22
    0
      akregator/src/librss/Makefile.am
  100. 0
    0
      akregator/src/librss/README

+ 9
- 0
.emacs-dirvars View File

@@ -0,0 +1,9 @@
1
+;; -*- emacs-lisp -*-
2
+;;
3
+;; This file is processed by the dirvars emacs package.  Each variable
4
+;; setting below is performed when this dirvars file is loaded.
5
+;;
6
+indent-tabs-mode: nil
7
+tab-width: 8
8
+c-basic-offset: 2
9
+evaluate: (c-set-offset 'innamespace '0)

+ 45
- 0
MAINTAINERS View File

@@ -0,0 +1,45 @@
1
+certmanager      Steffen Hansen <hansen@kde.org>
2
+kaddressbook     Tobias Koenig <tokoe@kde.org>
3
+                 Cornelius Schumacher <schumacher@kde.org>
4
+kalarm           David Jarvie <software@astrojar.org.uk>
5
+kalarmd          Cornelius Schumacher <schumacher@kde.org>
6
+kandy            Cornelius Schumacher <schumacher@kde.org>
7
+karm             Mark Bucciarelli <mark@hubcapconsulting.com>
8
+kdgantt          Kalle Dalheimer <kalle@klaralvdalens-datakonsult.se>
9
+                 Lutz Rogowski <lutz@klaralvdalens-datakonsult.se>
10
+kfile-plugins    ?
11
+kgantt           ? Jochen Hanff <jochen@ifb.bv.tu-berlin.de>
12
+kioslaves        ? Marc Mutz <mutz@kde.org>
13
+kitchensync      Cornelius Schumacher <schumacher@kde.org>
14
+                 Holger Freyther <freyther@kde.org>
15
+kmail            Ingo Kloecker <kloecker@kde.org>
16
+                 Don Sanders <sanders@kde.org>
17
+kmailcvt         Danny Kukawka <danny.kukawka@web.de>
18
+kmobile          Helge Deller <deller@kde.org>
19
+knode            Roberto Selbach Teixeira <maragato@kde.org>
20
+knotes           Michael Brade <brade@kde.org>
21
+konsolekalendar  Tuukka Pasanen <illuusio@mailcity.com>
22
+                 Allen Winter <winter@kde.org>
23
+kontact          Daniel Molkentin <molkentin@kde.org>
24
+korganizer       Reinhold Kainhofer <reinhold@kainhofer.com>
25
+                 Cornelius Schumacher <schumacher@kde.org>
26
+korn             Mart Kelder <mart.mailing@hccnet.nl>
27
+kpilot           Adriaan de Groot <groot@kde.org>
28
+                 Reinhold Kainhofer <reinhold@kainhofer.com>
29
+ktnef            Michael Goffioul <goffioul@imec.be>
30
+libical          Cornelius Schumacher <schumacher@kde.org>
31
+                 Reinhold Kainhofer <reinhold@kainhofer.com>
32
+libkcal          Cornelius Schumacher <schumacher@kde.org>
33
+                 Reinhold Kainhofer <reinhold@kainhofer.com>
34
+libkdenetwork    Marc Mutz <mutz@kde.org>
35
+                 Mathias Waack <mathias@atoll-net.de> (Scoring)
36
+                 Ingo Klöcker <ingo.kloecker@epost.de> (kpgp)
37
+                 Carsten Burghardt <burghardt@kde.org> (kfoldertree, ksubscription, kaccount)
38
+                 Karl-Heinz Zimmer <khz@kde.org> (cryptplugwrapper*)
39
+libkdepim        Cornelius Schumacher <schumacher@kde.org>
40
+                 Tobias Koenig <tokoe@kde.org> (addresseeview, kvcarddrag)
41
+                 Zack Rusin <zack@kde.org> (addressesdialog, komposer)
42
+                 Don Sanders <sanders@kde.org> (maillistdrag)
43
+libkpimexchange  Jan-Pascal van Best <janpascal@vanbest.org>
44
+libksieve        ? Marc Mutz <mutz@kde.org>
45
+mimelib          ?

+ 94
- 0
Mainpage.dox View File

@@ -0,0 +1,94 @@
1
+/**
2
+        * @mainpage KDE PIM API Reference
3
+	*
4
+	*
5
+        *
6
+        * This section contains the KDE online class reference for the current
7
+        * development version of KDE-PIM.  Additionally, you can subscribe
8
+        * or read the mailing lists for any additions and/or modifications
9
+        * to the API.
10
+        *
11
+	* <table width="100%">
12
+	* <tr><th>Applications</th><th>Libraries</th></tr>
13
+	* <tr><td valign="top">
14
+        * - <a href="certmanager/html/index.html"><b>certmanager</b></a>
15
+        *   (<a href="certmanager/html/classes.html">classes</a>)\n
16
+        *   <i>KDE Key Manager.</i>
17
+        * - <a href="kaddressbook/html/index.html"><b>kaddressbook</b></a>
18
+        *   (<a href="kaddressbook/html/classes.html">classes</a>)\n
19
+        *   <i>Keeps your addresses on file.</i>
20
+        * - <a href="kalarm/html/index.html"><b>kalarm</b></a>
21
+        *   (<a href="kalarm/html/classes.html">classes</a>)\n
22
+        *   <i>A personal alarm message, command and email scheduler.</i>
23
+        * - <a href="kalarm/kalarmd/html/index.html"><b>kalarmd</b></a>
24
+        *   (<a href="kalarm/kalarmd/html/classes.html">classes</a>)\n
25
+        *   <i>Alarm daemon.</i>
26
+        * - <a href="kandy/html/index.html"><b>kandy</b></a>
27
+        *   (<a href="kandy/html/classes.html">classes</a>)\n
28
+        *   <i>Synchronises data with your mobile phone.</i>
29
+        * - <a href="karm/html/index.html"><b>karm</b></a>
30
+        *   (<a href="karm/html/classes.html">classes</a>)\n
31
+        *   <i>A time tracker.</i>
32
+        * - <a href="kfile-plugins/html/index.html"><b>kfile-plugins</b></a>
33
+        *   <i></i>
34
+        * - <a href="kgantt/html/index.html"><b>kgantt</b></a>
35
+        *   (<a href="kgantt/html/classes.html">classes</a>)\n
36
+        *   <i></i>
37
+        * - <a href="kitchensync/html/index.html"><b>kitchensync</b></a>
38
+        *   (<a href="kitchensync/html/classes.html">classes</a>)\n
39
+        *   <i>Generic Syncing.</i>
40
+        * - <a href="kmail/html/index.html"><b>kmail</b></a>
41
+        *   (<a href="kmail/html/classes.html">classes</a>)\n
42
+        *   <i>A fully-featured email client.</i>
43
+        * - <a href="knotes/html/index.html"><b>knotes</b></a>
44
+        *   (<a href="knotes/html/classes.html">classes</a>)\n
45
+        *   <i>A small tool to scribble down notes.</i>
46
+        * - <a href="konsolekalendar/html/index.html"><b>konsolekalendar</b></a>
47
+        *   (<a href="konsolekalendar/html/classes.html">classes</a>)\n
48
+        *   <i>A command line interface to KDE calendars.</i>
49
+        * - <a href="kontact/html/index.html"><b>kontact</b></a>
50
+        *   (<a href="kontact/html/classes.html">classes</a>)\n
51
+        *   <i>Brings together all the KDE PIM applications under one roof.</i>
52
+        * - <a href="korganizer/html/index.html"><b>korganizer</b></a>
53
+        *   (<a href="korganizer/html/classes.html">classes</a>)\n
54
+        *   <i>The calendar and scheduling program for KDE.</i>
55
+        * - <a href="korganizer/korgac/html/index.html"><b>korgac</b></a>
56
+        *   (<a href="korganizer/korgac/html/classes.html">classes</a>)\n
57
+        *   <i>An alarm client for KOrganizer.</i>
58
+        * - <a href="kpilot/kpilot/html/index.html"><b>kpilot</b></a>
59
+        *   (<a href="kpilot/kpilot/html/classes.html">classes</a>)\n
60
+        *   <i>Synchronizes data with your PalmOS-based handheld.</i>
61
+	* </td>
62
+	* <td valign="top">
63
+        * - <a href="libemailfunctions/html/index.html"><b>libemailfunctions</b></a>
64
+        *   <i>A library for general purpose email handling.</i>
65
+        * - <a href="libkcal/html/index.html"><b>libkcal</b></a>
66
+        *   (<a href="libkcal/html/classes.html">classes</a>)\n
67
+        *   <i>A library of calendaring classes.</i>
68
+        * - <a href="libkdenetwork/html/index.html"><b>libkdenetwork</b></a>
69
+        *   <i>A library of networkworking classes.</i>
70
+        * - <a href="libkdepim/html/index.html"><b>libkdepim</b></a>
71
+        *   (<a href="libkdepim/html/classes.html">classes</a>)\n
72
+        *   <i>A library of widgets and other goodies for pim.</i>
73
+        * - <a href="libkholidays/html/index.html"><b>libkholidays</b></a>
74
+        *   (<a href="libkholidays/html/classes.html">classes</a>)\n
75
+        *   <i>A library for handling holidays.</i>
76
+        * - <a href="libkmime/html/index.html"><b>libkmime</b></a>
77
+        *   (<a href="libkmime/html/classes.html">classes</a>)\n
78
+        *   <i>A library for MIME handling.</i>
79
+        * - <a href="libkpgp/html/index.html"><b>libkpgp</b></a>
80
+        *   (<a href="libkpgp/html/classes.html">classes</a>)\n
81
+        *   <i>A PGP abstraction layer.</i>
82
+        * - <a href="libkpimexchange/html/index.html"><b>libkpimexchange</b></a>
83
+        *   <i></i>
84
+        * - <a href="libkpimidentities/html/index.html"><b>libkpimidentities</b></a>
85
+        *   (<a href="libkpimidentities/html/classes.html">classes</a>)\n
86
+        *   <i>A library for managing identities.</i>
87
+        * - <a href="kpilot/lib/html/index.html"><b>kpilot library</b></a>
88
+        *   (<a href="kpilot/lib/html/classes.html">classes</a>)\n
89
+        *   <i>KPilot Library.</i>
90
+	* </td>
91
+	* </tr></table>
92
+        *
93
+        *
94
+        */

+ 50
- 0
Makefile.am.in View File

@@ -0,0 +1,50 @@
1
+## kdepim/Makefile.am
2
+## (C) 1997 Stephan Kulow
3
+
4
+# these are here to control the compilation order, but are only textual
5
+# hints for the cvs.sh script. If you change something here, you have
6
+# to call Makefile.cvs again. 
7
+# WARNING: The Makefile.am is auto-generated from Makefile.am.in, so
8
+# don't change these in Makefile.am, but rather in Makefile.am.in!
9
+#
10
+# Libraries and their upwards dependencies
11
+COMPILE_AFTER_libkmime = libemailfunctions
12
+COMPILE_AFTER_libemailfunctions = libkcal libkpimidentities kmail korganizer
13
+COMPILE_AFTER_libkholidays = korganizer kontact
14
+COMPILE_AFTER_libkcal = kalarm kitchensync konsolekalendar korganizer libkpimexchange kpilot libkdepim karm knotes kresources kfile-plugins
15
+COMPILE_AFTER_mimelib = korn kmail
16
+COMPILE_AFTER_libkdenetwork = kmail knode
17
+COMPILE_AFTER_libksieve = kmail
18
+#
19
+# Applications and their downward dependencies (ie. the libs they use)
20
+#
21
+COMPILE_BEFORE_libkpimidentities = libkdepim certmanager
22
+COMPILE_BEFORE_certmanager = libkdenetwork libkpgp
23
+COMPILE_BEFORE_korganizer = libkdepim libkpimidentities libkpimexchange kgantt
24
+COMPILE_BEFORE_kaddressbook = libkdepim certmanager akregator
25
+COMPILE_BEFORE_kandy = libkdepim
26
+COMPILE_BEFORE_kmail= libkdepim libkpimidentities certmanager libkpgp libkmime indexlib
27
+COMPILE_BEFORE_knode= libkdepim libkpgp libkmime
28
+COMPILE_BEFORE_karm = libkdepim kresources
29
+COMPILE_BEFORE_plugins = kmail libkdepim libkcal
30
+COMPILE_BEFORE_kontact = kaddressbook knotes korganizer akregator karm
31
+COMPILE_BEFORE_kioslaves = libkmime libkdepim
32
+COMPILE_BEFORE_libkpimexchange = libkdepim
33
+COMPILE_BEFORE_kalarm = libkdepim libkmime
34
+COMPILE_BEFORE_kresources = libkpimexchange knotes kaddressbook kode
35
+COMPILE_BEFORE_wizards = libkdepim kresources korganizer kaddressbook kmail
36
+COMPILE_BEFORE_korn = libkdenetwork
37
+COMPILE_BEFORE_kitchensync = libkdepim
38
+COMPILE_BEFORE_akregator = libkdepim
39
+COMPILE_BEFORE_knotes = libkdepim
40
+COMPILE_BEFORE_konsolekalendar = libkdepim
41
+COMPILE_BEFORE_kabc = libkdepim
42
+
43
+AUTOMAKE_OPTIONS = foreign 1.6.1
44
+DISTCLEANFILES = inst-apps
45
+
46
+MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 SUBDIRS
47
+
48
+include $(top_srcdir)/admin/Doxyfile.am
49
+include admin/deps.am
50
+

+ 16
- 0
Makefile.cvs View File

@@ -0,0 +1,16 @@
1
+
2
+all: 
3
+	@echo "This Makefile is only for the CVS repository"
4
+	@echo "This will be deleted before making the distribution"
5
+	@echo ""
6
+	@if test ! -d admin; then \
7
+	   echo "Please recheckout this module!" ;\
8
+	   echo "for cvs: use checkout once and after that update again" ;\
9
+	   echo "for cvsup: checkout kde-common from cvsup and" ;\
10
+	   echo "   link kde-common/admin to ./admin" ;\
11
+	   exit 1 ;\
12
+	fi
13
+	$(MAKE) -f admin/Makefile.common cvs
14
+
15
+.SILENT:
16
+

+ 84
- 0
README View File

@@ -0,0 +1,84 @@
1
+In this file:
2
+
3
+* What you find here
4
+* What it is
5
+* Mailing List, Getting involved
6
+
7
+What you find here
8
+------------------
9
+
10
+Anything relating to the KDE-PIM project. See also http://pim.kde.org.
11
+
12
+The KDE-PIM project aims to bring together those who wish to help design,
13
+implement, test, etc. anything that's to do with personal information
14
+management.
15
+
16
+This rather broad scope encompasses mail clients, addressbooks, usenet news,
17
+scheduling and even sticky notes.
18
+
19
+What it is
20
+----------
21
+
22
+* kaddressbook: The KDE addressbook application.
23
+* kandy: sync phone book entries between your cell phone and computer
24
+         ("kandy" comes from "Handy", the german word used for a cellular)
25
+* kmail: the KDE mail client
26
+* kmailcvt: tool for importing mail related data from other programs
27
+* knode: news client
28
+* korganizer: a calendar-of-events and todo-list manager
29
+* kpilot: to sync with your PalmPilot
30
+* kalarm: gui for setting up personal alarm messages, emails and commands
31
+* kalarmd: alarm monitoring daemon, shared by korganizer and kalarm.
32
+* kontact: Integrated PIM application
33
+* karm: Time tracker.
34
+* kitchensync: Synchronization framework, still under heavy development.
35
+* kfile-plugins: vCard KFIleItem plugin.
36
+* knotes: yellow notes application
37
+* konsolecalendar: Command line tool for accessing calendar files.
38
+* korn: mail checker
39
+* akregator: Feed reader
40
+
41
+There is also quite an amount of infrastructure in this package:
42
+
43
+* calendarsystem: library for handling of non-gregorian calendar systems
44
+* libkdepim: Common code for different kdepim apps
45
+* libkdenetwork: Common code for apps previously being in the kdenetwork CVS
46
+                 module (KMail, KNode). This will be merged with libkdepim.
47
+* mimelib: MIME messages library
48
+* libkcal: C++ api for the iCalendar and vCalendar formats
49
+* libkcal/libical: a basic iCalendar protocol implementation, see RFCs 2245,2246
50
+* libkpimexchange: connecting to Exchange2000 servers
51
+* kabc/frontend: A GUI frontend for libkabc, not intended for end users.
52
+* kgantt: lib to display and manage Gantt diagrams used by the project view
53
+          plugin of KOrganizer
54
+* kdgantt: alternative lib for Gantt diagrams, used by the free/busy view of
55
+           KOrganizer (yes, we should decide for one of the Gantt libs)
56
+* kioslaves/sieve: Sieve kioslave
57
+* ktnef: handling of tnef data
58
+
59
+The following subdirectories have been moved to kdenonbeta/kdepim:
60
+
61
+* empath: a modular e-mail client, designed for reuse, needs a Qt
62
+          with threading support
63
+* twister: another personal information manager, needs empath
64
+* kab2: another design for the KDE addressbook
65
+
66
+* ldif: a parser for LDIF, the LDAP Information Interchange Format
67
+* libdif: dito, one of them is superfluous
68
+* libimap: IMAP handling
69
+* librmm: an Internet mail message parser (RFC 822 -> Class hierarchy)
70
+
71
+Mailing List, getting involved
72
+------------------------------
73
+
74
+If you'd like to get involved with the project, subscribe to kde-pim@kde.org
75
+with an email to kde-pim-request@kde.org with the subject line:
76
+subscribe my@email.address
77
+
78
+If you have questions relating to development of this module please post them on
79
+the developers mailing list (kde-pim@kde.org). If you have user questions,
80
+please use kdepim-users@kde.org
81
+
82
+If you are interested in kmail development use the mailing list
83
+kmail-devel@kde.org.
84
+

+ 82
- 0
README.Kolab View File

@@ -0,0 +1,82 @@
1
+These are preliminary instructions on how to set up kdepim to work
2
+with a kolab server. It is meant to be a help for people setting
3
+up for testing. It is also meant as a list of things to set up in the
4
+upcoming Kolab setup wizard.
5
+
6
+
7
+There are the steps needed to setup the Kolab server as the primary
8
+server.
9
+
10
+
11
+KMail:
12
+
13
+1. Set up your identity.
14
+2. Set up a disconnected IMAP account to the server and sync it.
15
+   Optional: Choose TLS and Clear text
16
+3. Set up sending through the kolab server
17
+   Optional: Choose authentication and/or TLS
18
+4. After the first sync, enable IMAP resource folder options in
19
+   Misc->Groupware and set to be subfolders of the account INBOX
20
+5. Enable groupware functionality on the same page
21
+6. TODO: Where is sieve setup???
22
+
23
+Note: We might want to add a KMail profile for this in addition
24
+to the kolab wizard.
25
+
26
+KAddressBook:
27
+
28
+1. Start KDE Control Center and go to KDE Components, page KDE
29
+   Resources Configuration. Choose the contact resource. Add an
30
+   IMAP resource and set it to standard.
31
+   Optional: Delete others or set them to readonly.
32
+2. Start KAddressBook and add an LDAP server in the configuration
33
+   with these settings:
34
+      Host = "kolab.kde.org" (for example)
35
+      Port = "389"
36
+      Base DN = "dc=kolab,dc=kde,dc=org"
37
+   TODO: Are Bind DN and password the Kolab user settings?
38
+   TODO: If yes, do they make the LDAP resource writable?
39
+   The scheme for the base DN is to take the parts of the fully
40
+   qualified hostname of the kolab server and put ",dc=" between
41
+   the parts and "dc=" in front of it. Or in Qt code:
42
+      baseDN = "dc=" + hostname.replace( '.', ",dc=" );
43
+   Finally check the checkbox to activate the LDAP server. Now
44
+   you can search the Kolab LDAP server and get all users on the
45
+   system.
46
+
47
+
48
+KOrganizer:
49
+
50
+1. Start KDE Control Center and go to KDE Components, page KDE
51
+   Resources Configuration. Choose the calendar resource. Add an
52
+   IMAP resource and set it to standard.
53
+   Optional: Delete others or set them to readonly.
54
+TODO: Free-Busy setup and KMail mail scheduling.
55
+
56
+
57
+KPilot:
58
+
59
+TODO
60
+
61
+
62
+KitchenSync:
63
+
64
+TODO
65
+
66
+
67
+kalarmd:
68
+
69
+TODO
70
+
71
+
72
+Kontact:
73
+
74
+
75
+General Notes:
76
+==============
77
+Autocompletion: Works in both KMail and KOrganizer. The order of resources used for completion
78
+is as follows:
79
+  1. All available addressbook resources as seen in "kcmshell kresources", section "kabc"
80
+  2. LDAP
81
+
82
+Nothing special, AFAIK

+ 4
- 0
README.libical View File

@@ -0,0 +1,4 @@
1
+The directory libkcal/libical contains version 0.24 of libical with KDE local
2
+modifications to fix some bugs and let it compile in the kdepim module.
3
+You may obtain the original distribution from
4
+  http://sourceforge.net/projects/freeassociation/

+ 44
- 0
akregator/AUTHORS View File

@@ -0,0 +1,44 @@
1
+Developers/Contributors:
2
+
3
+Stanislav Karchebny (Stanislav.Karchebny AT kdemail.net)
4
+Sashmit Bhaduri (smt AT vfemail.net)
5
+Frank Osterfeld (frank.osterfeld AT kdemail.net)
6
+Teemu Rytilahti (teemu.rytilahti AT kde-fi.org)
7
+Stephan Binner (binner AT kde.org)
8
+Gary Cramblitt (garycramblitt AT comcast.net)
9
+Christof Musik (christof AT freenet.de)
10
+George Staikos (staikos AT kde.org)
11
+
12
+Packagers:
13
+
14
+Pierre Habouzit (pierre.habouzit AT m4x.org)
15
+
16
+
17
+Thanks To:
18
+
19
+Frerich Raabe (raabe AT kde.org)
20
+
21
+
22
+Translators:
23
+
24
+Breton: 		Thierry Vignaud <tvignaud AT mandrakesoft.com>
25
+Catalan: 		Albert Astals Cid <astals11 AT terra.es>
26
+Welsh: 			KD wrth KGyfieithu <kyfieithu AT dotmon.com>
27
+Danish: 		Erik Kjær Pedersen <erik AT binghamton.edu>
28
+British English: 	Andrew Coles <andrew_coles AT yahoo.co.uk>
29
+Spanish: 		Ignacio Bezanilla Diaz <coder AT telefonica.net>
30
+Estonian: 		Marek Laane <bald AT online.ee>
31
+Finnish: 		Teemu Rytilahti <teemu.rytilahti AT kde-fi.org>
32
+French: 		Nicolas Ternisien <nicolast AT libertysurf.fr>
33
+Irish Gaelic:		Séamus Ó Ciardhuáin <seoc AT cnds.ucd.ie>
34
+Italian: 		Luciano Montanaro <mikelima AT cirulla.net>
35
+Dutch: 			Rinse de Vries <rinsedevries AT kde.nl>
36
+Polish: 		Michał Mroczek <sagitto AT wp.pl>
37
+Portuguese: 		Pedro Morais <morais AT kde.org>
38
+Brazilian Portuguese: 	Caio Begotti <caio1982 AT gmail.com>
39
+Romanian: 		Claudiu Costin <claudiuc AT kde.org>
40
+Russian: 		Nickolai Shaforostoff <shafff AT ukr.net>
41
+Serbian: 		Chusslove Illich <caslav.ilic AT gmx.net>
42
+Swedish: 		Stefan Asserhäll <stefan.asserhall AT comhem.se>
43
+Tamil: 			I. Felix <ifelix25 AT yahoo.co.in>
44
+Turkish: 		Görkem Çetin <gorkem AT kde.org>

+ 340
- 0
akregator/COPYING View File

@@ -0,0 +1,340 @@
1
+		    GNU GENERAL PUBLIC LICENSE
2
+		       Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+                       51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+			    Preamble
10
+
11
+  The licenses for most software are designed to take away your
12
+freedom to share and change it.  By contrast, the GNU General Public
13
+License is intended to guarantee your freedom to share and change free
14
+software--to make sure the software is free for all its users.  This
15
+General Public License applies to most of the Free Software
16
+Foundation's software and to any other program whose authors commit to
17
+using it.  (Some other Free Software Foundation software is covered by
18
+the GNU Library General Public License instead.)  You can apply it to
19
+your programs, too.
20
+
21
+  When we speak of free software, we are referring to freedom, not
22
+price.  Our General Public Licenses are designed to make sure that you
23
+have the freedom to distribute copies of free software (and charge for
24
+this service if you wish), that you receive source code or can get it
25
+if you want it, that you can change the software or use pieces of it
26
+in new free programs; and that you know you can do these things.
27
+
28
+  To protect your rights, we need to make restrictions that forbid
29
+anyone to deny you these rights or to ask you to surrender the rights.
30
+These restrictions translate to certain responsibilities for you if you
31
+distribute copies of the software, or if you modify it.
32
+
33
+  For example, if you distribute copies of such a program, whether
34
+gratis or for a fee, you must give the recipients all the rights that
35
+you have.  You must make sure that they, too, receive or can get the
36
+source code.  And you must show them these terms so they know their
37
+rights.
38
+
39
+  We protect your rights with two steps: (1) copyright the software, and
40
+(2) offer you this license which gives you legal permission to copy,
41
+distribute and/or modify the software.
42
+
43
+  Also, for each author's protection and ours, we want to make certain
44
+that everyone understands that there is no warranty for this free
45
+software.  If the software is modified by someone else and passed on, we
46
+want its recipients to know that what they have is not the original, so
47
+that any problems introduced by others will not reflect on the original
48
+authors' reputations.
49
+
50
+  Finally, any free program is threatened constantly by software
51
+patents.  We wish to avoid the danger that redistributors of a free
52
+program will individually obtain patent licenses, in effect making the
53
+program proprietary.  To prevent this, we have made it clear that any
54
+patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+  The precise terms and conditions for copying, distribution and
57
+modification follow.
58
+
59
+		    GNU GENERAL PUBLIC LICENSE
60
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+  0. This License applies to any program or other work which contains
63
+a notice placed by the copyright holder saying it may be distributed
64
+under the terms of this General Public License.  The "Program", below,
65
+refers to any such program or work, and a "work based on the Program"
66
+means either the Program or any derivative work under copyright law:
67
+that is to say, a work containing the Program or a portion of it,
68
+either verbatim or with modifications and/or translated into another
69
+language.  (Hereinafter, translation is included without limitation in
70
+the term "modification".)  Each licensee is addressed as "you".
71
+
72
+Activities other than copying, distribution and modification are not
73
+covered by this License; they are outside its scope.  The act of
74
+running the Program is not restricted, and the output from the Program
75
+is covered only if its contents constitute a work based on the
76
+Program (independent of having been made by running the Program).
77
+Whether that is true depends on what the Program does.
78
+
79
+  1. You may copy and distribute verbatim copies of the Program's
80
+source code as you receive it, in any medium, provided that you
81
+conspicuously and appropriately publish on each copy an appropriate
82
+copyright notice and disclaimer of warranty; keep intact all the
83
+notices that refer to this License and to the absence of any warranty;
84
+and give any other recipients of the Program a copy of this License
85
+along with the Program.
86
+
87
+You may charge a fee for the physical act of transferring a copy, and
88
+you may at your option offer warranty protection in exchange for a fee.
89
+
90
+  2. You may modify your copy or copies of the Program or any portion
91
+of it, thus forming a work based on the Program, and copy and
92
+distribute such modifications or work under the terms of Section 1
93
+above, provided that you also meet all of these conditions:
94
+
95
+    a) You must cause the modified files to carry prominent notices
96
+    stating that you changed the files and the date of any change.
97
+
98
+    b) You must cause any work that you distribute or publish, that in
99
+    whole or in part contains or is derived from the Program or any
100
+    part thereof, to be licensed as a whole at no charge to all third
101
+    parties under the terms of this License.
102
+
103
+    c) If the modified program normally reads commands interactively
104
+    when run, you must cause it, when started running for such
105
+    interactive use in the most ordinary way, to print or display an
106
+    announcement including an appropriate copyright notice and a
107
+    notice that there is no warranty (or else, saying that you provide
108
+    a warranty) and that users may redistribute the program under
109
+    these conditions, and telling the user how to view a copy of this
110
+    License.  (Exception: if the Program itself is interactive but
111
+    does not normally print such an announcement, your work based on
112
+    the Program is not required to print an announcement.)
113
+
114
+These requirements apply to the modified work as a whole.  If
115
+identifiable sections of that work are not derived from the Program,
116
+and can be reasonably considered independent and separate works in
117
+themselves, then this License, and its terms, do not apply to those
118
+sections when you distribute them as separate works.  But when you
119
+distribute the same sections as part of a whole which is a work based
120
+on the Program, the distribution of the whole must be on the terms of
121
+this License, whose permissions for other licensees extend to the
122
+entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+Thus, it is not the intent of this section to claim rights or contest
125
+your rights to work written entirely by you; rather, the intent is to
126
+exercise the right to control the distribution of derivative or
127
+collective works based on the Program.
128
+
129
+In addition, mere aggregation of another work not based on the Program
130
+with the Program (or with a work based on the Program) on a volume of
131
+a storage or distribution medium does not bring the other work under
132
+the scope of this License.
133
+
134
+  3. You may copy and distribute the Program (or a work based on it,
135
+under Section 2) in object code or executable form under the terms of
136
+Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+    a) Accompany it with the complete corresponding machine-readable
139
+    source code, which must be distributed under the terms of Sections
140
+    1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+    b) Accompany it with a written offer, valid for at least three
143
+    years, to give any third party, for a charge no more than your
144
+    cost of physically performing source distribution, a complete
145
+    machine-readable copy of the corresponding source code, to be
146
+    distributed under the terms of Sections 1 and 2 above on a medium
147
+    customarily used for software interchange; or,
148
+
149
+    c) Accompany it with the information you received as to the offer
150
+    to distribute corresponding source code.  (This alternative is
151
+    allowed only for noncommercial distribution and only if you
152
+    received the program in object code or executable form with such
153
+    an offer, in accord with Subsection b above.)
154
+
155
+The source code for a work means the preferred form of the work for
156
+making modifications to it.  For an executable work, complete source
157
+code means all the source code for all modules it contains, plus any
158
+associated interface definition files, plus the scripts used to
159
+control compilation and installation of the executable.  However, as a
160
+special exception, the source code distributed need not include
161
+anything that is normally distributed (in either source or binary
162
+form) with the major components (compiler, kernel, and so on) of the
163
+operating system on which the executable runs, unless that component
164
+itself accompanies the executable.
165
+
166
+If distribution of executable or object code is made by offering
167
+access to copy from a designated place, then offering equivalent
168
+access to copy the source code from the same place counts as
169
+distribution of the source code, even though third parties are not
170
+compelled to copy the source along with the object code.
171
+
172
+  4. You may not copy, modify, sublicense, or distribute the Program
173
+except as expressly provided under this License.  Any attempt
174
+otherwise to copy, modify, sublicense or distribute the Program is
175
+void, and will automatically terminate your rights under this License.
176
+However, parties who have received copies, or rights, from you under
177
+this License will not have their licenses terminated so long as such
178
+parties remain in full compliance.
179
+
180
+  5. You are not required to accept this License, since you have not
181
+signed it.  However, nothing else grants you permission to modify or
182
+distribute the Program or its derivative works.  These actions are
183
+prohibited by law if you do not accept this License.  Therefore, by
184
+modifying or distributing the Program (or any work based on the
185
+Program), you indicate your acceptance of this License to do so, and
186
+all its terms and conditions for copying, distributing or modifying
187
+the Program or works based on it.
188
+
189
+  6. Each time you redistribute the Program (or any work based on the
190
+Program), the recipient automatically receives a license from the
191
+original licensor to copy, distribute or modify the Program subject to
192
+these terms and conditions.  You may not impose any further
193
+restrictions on the recipients' exercise of the rights granted herein.
194
+You are not responsible for enforcing compliance by third parties to
195
+this License.
196
+
197
+  7. If, as a consequence of a court judgment or allegation of patent
198
+infringement or for any other reason (not limited to patent issues),
199
+conditions are imposed on you (whether by court order, agreement or
200
+otherwise) that contradict the conditions of this License, they do not
201
+excuse you from the conditions of this License.  If you cannot
202
+distribute so as to satisfy simultaneously your obligations under this
203
+License and any other pertinent obligations, then as a consequence you
204
+may not distribute the Program at all.  For example, if a patent
205
+license would not permit royalty-free redistribution of the Program by
206
+all those who receive copies directly or indirectly through you, then
207
+the only way you could satisfy both it and this License would be to
208
+refrain entirely from distribution of the Program.
209
+
210
+If any portion of this section is held invalid or unenforceable under
211
+any particular circumstance, the balance of the section is intended to
212
+apply and the section as a whole is intended to apply in other
213
+circumstances.
214
+
215
+It is not the purpose of this section to induce you to infringe any
216
+patents or other property right claims or to contest validity of any
217
+such claims; this section has the sole purpose of protecting the
218
+integrity of the free software distribution system, which is
219
+implemented by public license practices.  Many people have made
220
+generous contributions to the wide range of software distributed
221
+through that system in reliance on consistent application of that
222
+system; it is up to the author/donor to decide if he or she is willing
223
+to distribute software through any other system and a licensee cannot
224
+impose that choice.
225
+
226
+This section is intended to make thoroughly clear what is believed to
227
+be a consequence of the rest of this License.
228
+
229
+  8. If the distribution and/or use of the Program is restricted in
230
+certain countries either by patents or by copyrighted interfaces, the
231
+original copyright holder who places the Program under this License
232
+may add an explicit geographical distribution limitation excluding
233
+those countries, so that distribution is permitted only in or among
234
+countries not thus excluded.  In such case, this License incorporates
235
+the limitation as if written in the body of this License.
236
+
237
+  9. The Free Software Foundation may publish revised and/or new versions
238
+of the General Public License from time to time.  Such new versions will
239
+be similar in spirit to the present version, but may differ in detail to
240
+address new problems or concerns.
241
+
242
+Each version is given a distinguishing version number.  If the Program
243
+specifies a version number of this License which applies to it and "any
244
+later version", you have the option of following the terms and conditions
245
+either of that version or of any later version published by the Free
246
+Software Foundation.  If the Program does not specify a version number of
247
+this License, you may choose any version ever published by the Free Software
248
+Foundation.
249
+
250
+  10. If you wish to incorporate parts of the Program into other free
251
+programs whose distribution conditions are different, write to the author
252
+to ask for permission.  For software which is copyrighted by the Free
253
+Software Foundation, write to the Free Software Foundation; we sometimes
254
+make exceptions for this.  Our decision will be guided by the two goals
255
+of preserving the free status of all derivatives of our free software and
256
+of promoting the sharing and reuse of software generally.
257
+
258
+			    NO WARRANTY
259
+
260
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
262
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
266
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
267
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+REPAIR OR CORRECTION.
269
+
270
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+POSSIBILITY OF SUCH DAMAGES.
279
+
280
+		     END OF TERMS AND CONDITIONS
281
+
282
+	    How to Apply These Terms to Your New Programs
283
+
284
+  If you develop a new program, and you want it to be of the greatest
285
+possible use to the public, the best way to achieve this is to make it
286
+free software which everyone can redistribute and change under these terms.
287
+
288
+  To do so, attach the following notices to the program.  It is safest
289
+to attach them to the start of each source file to most effectively
290
+convey the exclusion of warranty; and each file should have at least
291
+the "copyright" line and a pointer to where the full notice is found.
292
+
293
+    <one line to give the program's name and a brief idea of what it does.>
294
+    Copyright (C) <year>  <name of author>
295
+
296
+    This program is free software; you can redistribute it and/or modify
297
+    it under the terms of the GNU General Public License as published by
298
+    the Free Software Foundation; either version 2 of the License, or
299
+    (at your option) any later version.
300
+
301
+    This program is distributed in the hope that it will be useful,
302
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
304
+    GNU General Public License for more details.
305
+
306
+    You should have received a copy of the GNU General Public License
307
+    along with this program; if not, write to the Free Software
308
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
309
+
310
+
311
+Also add information on how to contact you by electronic and paper mail.
312
+
313
+If the program is interactive, make it output a short notice like this
314
+when it starts in an interactive mode:
315
+
316
+    Gnomovision version 69, Copyright (C) year name of author
317
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318
+    This is free software, and you are welcome to redistribute it
319
+    under certain conditions; type `show c' for details.
320
+
321
+The hypothetical commands `show w' and `show c' should show the appropriate
322
+parts of the General Public License.  Of course, the commands you use may
323
+be called something other than `show w' and `show c'; they could even be
324
+mouse-clicks or menu items--whatever suits your program.
325
+
326
+You should also get your employer (if you work as a programmer) or your
327
+school, if any, to sign a "copyright disclaimer" for the program, if
328
+necessary.  Here is a sample; alter the names:
329
+
330
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
+
333
+  <signature of Ty Coon>, 1 April 1989
334
+  Ty Coon, President of Vice
335
+
336
+This General Public License does not permit incorporating your program into
337
+proprietary programs.  If your program is a subroutine library, you may
338
+consider it more useful to permit linking proprietary applications with the
339
+library.  If this is what you want to do, use the GNU Library General
340
+Public License instead of this License.

+ 430
- 0
akregator/ChangeLog View File

@@ -0,0 +1,430 @@
1
+#Akregator ChangeLog
2
+===================
3
+(c) 2004-2007 the Akregator authors.
4
+
5
+Changes after 1.2.7:
6
+-----------------------------
7
+
8
+Bug fixes:
9
+
10
+ 2007/10/05 Fix storage backend waking up CPU every 3 seconds (#150389) -ew
11
+            Original patch by Alan Jenkins
12
+
13
+Changes after 1.2.6:
14
+-----------------------------
15
+
16
+Bug fixes:
17
+
18
+ 2007/02/24 fix crash when using "Load the full website when reading articles" and an error (e.g. 404) 
19
+            is returned (2nd try) (#126812) -fo 
20
+
21
+Changes after 1.2.5:
22
+-----------------------------
23
+
24
+Bug fixes:
25
+ 2006/11/30 Use "firefox %u" as default for the alternative browser command (#115777)
26
+ 2006/11/24 Add session management for browser tabs (#100964) Patch by Carsten Pfeiffer <pfeiffer at kde.org> -fo
27
+ 2006/11/10 Fix crash in Konqueror icon plugin sometimes happening when switching parts (#134929) -fo
28
+ 2006/10/31 Fix group name encoding bug when adding feeds from commandline (e.g., using the Konq plugin) (#136559)
29
+            Patch by Andrey Cherepanov.
30
+
31
+Changes after 1.2.4:
32
+-----------------------------
33
+
34
+Bug fixes:
35
+
36
+ 2006/09/18 Set default font sizes, prevents use of font size 1 in article viewer on first startup -fo
37
+ 2006/08/28 Do not create multiple items in the feed lists when dragging feeds to a folder
38
+            that was moved before (#124303) -fo
39
+ 2006/08/26 Fix a possible crash in the internal browser when going forward -fo
40
+ 2006/08/26 show error messages while browsing as HTML, not as annoying popups (#107740) -fo
41
+ 2006/08/25 Show title of selected feed in window caption (#111471) -fo
42
+ 2006/08/25 Konqueror plugins: correctly enable/disable icon when enabling/disabling the plugin (#132823) -fo
43
+ 2006/08/21 Don't crash on very long URLs (>255 chars) used for feed logos (#130849) -fo
44
+ 2006/08/20 Konqueror plugins: Fix crash when using the Akregator plugin in file manager mode (#124891) -fo
45
+ 2006/08/20 Feed detection: Fix detection when relative URLs are used in the link tags (#132687) -fo
46
+ 2006/08/17 Speak selected text in internal browser when using the "Speak Text" button (#132505) -fo
47
+
48
+Changes after 1.2.3:
49
+-----------------------------
50
+
51
+Bug fixes:
52
+
53
+ 2006/07/07 Remove tray icon when disabling Akregator part in Kontact (#130127) -fo
54
+ 2006/07/07 Fix a crash on shutdown occurring in ProgressManager (#130377) -fo
55
+ 2006/06/25 Fix context menus in browser tab, show appriopriate entries when
56
+            text is selected (copy action) or the cursor is over a link 
57
+            (#121957) -fo
58
+ 
59
+Changes after 1.2.2:
60
+-----------------------------
61
+
62
+New features:
63
+
64
+ 2006/05/01 add author information to article header (in the article pane only) -fo
65
+
66
+Bug fixes:
67
+
68
+ 2006/05/20 Select oldest item instead of newest when jumping to the next feed using previous [unread] 
69
+            article actions (#126316) -fo
70
+ 2006/05/20 Disable Apply-Button in config dialog correctly if no changes were made (#103820) -fo
71
+ 2006/05/20 Don't reset article status to New when the article changed (#101907) -fo
72
+ 2006/05/10 Always show feed logos; load them on startup, not on first fetch -fo
73
+ 2006/05/10 fix crash when using "Load the full website when reading articles" and an error (e.g. 404) 
74
+            is returned (#126812) -fo 
75
+ 2006/04/29 Do not crash on startup when Combined View mode is activated (Happened only when experimental tagging is 
76
+            activated) -fo
77
+ 2006/03/22 Prevent "Akregator is running" messages on startup (reset PID to -1 when closing akregator) -fo
78
+
79
+Changes after 1.2.1:
80
+-----------------------------
81
+
82
+Bug fixes:
83
+
84
+ 2006/03/09 Read more feed metadata for Atom feeds (title, link) (#123140) -fo
85
+ 2006/03/09 Use "refresh" cache mode as default, ignoring konq settings. 
86
+            ("refresh" == Use cache after verifying with server) 
87
+            This should make disabling the "Use browser cache" option unnecessary. -fo
88
+ 2006/02/21 Set "rel" attribute default to "alternate", as requested by Atom specification (#122409) -ew
89
+ 2006/02/21 Disable category and tag support (unless experimental GUI is enabled) in the metakit backend, 
90
+            so it supports about 1000 feeds (500 with tags enabled) instead of 340
91
+            now with the default 1024 open files limit on most systems. -fo
92
+ 2006/02/15 Combined View: Do not crash on "Next/Prev Unread Article" (#121999) -fo
93
+ 2006/01/31 RSS parser: ignore unknown or invalid version attribute value in the <rss> tag and
94
+            just assume RSS 2.0. The older formats are compatible to 2.0, so this should work.
95
+            (at least better than refusing to parse the feeds) (#118793) -fo
96
+
97
+Changes after 1.2:
98
+-----------------------------
99
+
100
+Bug fixes:
101
+
102
+ 2006/01/17 Do not open binary files in the HTML viewer but externally. 
103
+            Fix Save Link As for binary files (regression introduced after 1.2) 
104
+            (#120087 (partially)) -fo
105
+ 2006/01/16 Fix article order in Combined View: sort by date (reversed) (#118055) -fo
106
+ 2006/01/15 Fix parsing of Atom 1.0 feeds with escaped HTML in it: Don't show tags
107
+            as text (#112491, #117938) -fo
108
+ 2006/01/10 Select next item in article list when deleting the selected article
109
+            (single selection mode only) (#119724) -fo
110
+ 2006/01/10 Fix item handling in the feed list, avoid crashes as happening 
111
+            after moving a folder and deleting a subitem afterwards 
112
+            (#118659) -fo
113
+ 2006/01/08 Fix problems with keyboard navigation getting stuck on duplicated
114
+            articles and prevent creation of new items when selecting an unread
115
+            dupe (#114997) -fo
116
+ 2005/12/05 Wait 30 minutes before retrying fetching when fetching failed (host
117
+            down, parsing error) (#113358) -fo
118
+
119
+Changes after 1.0:
120
+-----------------------------
121
+
122
+Note: This section (i.e. changes between 1.0 and 1.2) is completely incomplete
123
+
124
+New features:
125
+       - add "Save link as" to context menus -fo
126
+       
127
+Changes:
128
+       - Changed prev/next unread article actions to cycle through all unread articles -fo	
129
+       - The article archive is now configurable, using metakit implementation as default.
130
+         This increases startup speed and reduces memory usage significantly -fo
131
+       - Make it possible to fetch feeds while other fetches are running -fo
132
+       
133
+Bug fixes:
134
+
135
+	- Respect markImmediatelyAsRead setting when updating articles (#103502) -fo
136
+	- make "fetch feeds on startup" option work again (#102085) -fo
137
+	- Fix favicons, load them on startup (#94888) -fo
138
+	- make BrowserRun delete itself when the Viewer gets destroyed (#101413) -tpr
139
+        - tolerate leading and trailing whitespace in the Add Feed Dialog (#101988) -fo
140
+        - fixed confusion of "disable archiving" and expiry by age (#101907) -fo
141
+        - show open|save|cancel dialog for non-html links (101274) -fo
142
+	- make forms work again (regression) (#94964) -fo
143
+	- fix notification when running as kontact plugin -fo
144
+
145
+
146
+Changes after 1.0b9:
147
+-----------------------------
148
+
149
+Bug fixes:
150
+       - fixed printing of articles (no infinite number of pages anymore) -fo
151
+
152
+Changes after 1.0b8:
153
+-----------------------------
154
+
155
+New features:
156
+       - Make fonts configurable, added zoom in/out actions -fo
157
+       - Use KNotify for notification -fo
158
+       - Make caching configurable -fo
159
+       - Forms work in the internal browser -gs
160
+       - Enable sorting in article list -gs
161
+       - Add possibility to delete article -fo
162
+       - Allow bookmarking articles in global bookmarks -gs
163
+
164
+Changes:     
165
+       - Added new about page, designed by Lokheed, lokheed at gmail.com -fo
166
+       - Use KDEPIM's progressbar -tpr
167
+       - Update unread count when stopping fetching before it's finished -tpr
168
+       - Added "Keep flag set" to the search combobox -fo
169
+       - Added optional close buttons on browser tabs -fo
170
+       - Prevent unreachable feeds from blocking the fetching process (timeout) -fo
171
+
172
+Bug fixes (selection):
173
+       - Disable dnd in feed tree until the feed list is loaded (prevents crash) -fo 
174
+       - Decode the url before adding new feed, makes feed urls with special characters (?, =, &) to work -tpr
175
+       - Don't crash when deleting feeds which are currently fetching -fo
176
+       - Don't ignore updates in article which have a GUID -fo
177
+       - Don't set non-parsable dates to 1970/01/01 -fo
178
+       - added <xml> processing instruction to exported OPML -sk
179
+       
180
+
181
+Changes after 1.0b7:
182
+-----------------------------
183
+
184
+New features:
185
+       - Add icon to konqueror to show if page has a feed -tpr
186
+#85532 - Add feed summary -tpr
187
+#84314 - added print command for article viewer -fo 
188
+#92330 - Added possibility to set article status (read/unread/new) manually -fo
189
+       - Added basic "keep flag" support to prevent articles from expiring -fo
190
+
191
+Changes:
192
+       - Add pageviewer actions into Go menu and print to file menu when in pageviewer mode -tpr
193
+       - improve tabbed browsing: added back/forward buttons, improved context menus - fo
194
+       - make search bar optional -fo
195
+       - Do not allow user to stop feedlist loading to avoid data loss -tpr
196
+       - Do not show feedlist url in title -tpr
197
+       - Clear the statusbar when pressing Stop button -tpr
198
+
199
+Bug fixes:
200
+       - save and restore open/close state of feed groups -fo
201
+       - Use isNull() instead of comparing to QString::null -tpr
202
+       - Make kontact plugin work with Kontact from CVS HEAD -fo
203
+       - Don't load kontact plugin when akregator is already running -fo
204
+       - Fix expiry by age (global setting was ignored) -fo
205
+       - Make trayicon and configure dialog available in kontact -fo
206
+       - Save and restore open/closed state of feed groups -fo
207
+       - Fix interval fetching (Exclude feeds with custom settings from global fetch) -fo
208
+#84528 - Make session management to save and load feedlist when appropriate -tpr
209
+#88437 - Show credits on Kontact's about dialog -tpr
210
+#91660 - Don't crash on exit when internal browser widgets are opened or the article viewer is loading -fo
211
+#93739 - Fix Alignment of text body for right-to-left scripts -fo
212
+
213
+
214
+Changes after 1.0b6:
215
+-----------------------------
216
+
217
+New features:
218
+
219
+Changes:
220
+
221
+#84133,
222
+#85691 - added KMail-like key bindings -fo
223
+       - Advanced archive options: Limit article number, disable archive -fo
224
+       - Add "Fetch All Feeds" into context menu of trayicon -tpr
225
+       - Show position of the tray icon with image in dialog when pressing the close button -tpr
226
+       - Display proper error message when no feed found in add feed -tpr
227
+       - make systray icon optional (Patch by Christof Musik,
228
+       christof(at)freenet.de) -fo
229
+       - added "Export Feeds" function to export the standard feed list -fo
230
+       - Expiry support added -fo
231
+
232
+Bug fixes:
233
+#85409 - Resolve entities in feed titles -fo
234
+#90671 - Shutdown properly hopefully fixes #89172 too -tpr
235
+       - Update combined view after fetching new articles (doesn't work in group view yet)
236
+
237
+
238
+Changes after 1.0b5:
239
+-----------------------------
240
+
241
+Changes:
242
+       - Improved dupe detection, using md5 now -ph
243
+#82187 - Improved session management: save search settings, selected Feed and Article -fo
244
+       - Make it possible to switch notifications off -tpr
245
+	   - Switch to a standard feed system, like most aggregators -smt
246
+#82082 - New message notification added -smt
247
+       - Show comments URL for feeds, if available -smt
248
+       - Only allow one akregator instance (KUniqueApplication) -smt
249
+       - Autosave: Feeds are autosaved on every change now - save actions removed -smt
250
+       - Support feed protocol -smt
251
+#85265 - Add feed column when browsing through a folder -smt
252
+
253
+Bug Fixes:
254
+       - Make i18n work in konqueror plugin -tpr
255
+       - Fixed problems with whitespace handling -ph
256
+       - Make MMB work again in pageviewer -tpr
257
+#83995 - Don't crash when exiting KDE -fo
258
+#82791 - Save the toolbar position -tpr
259
+       - Don't crash when there is no part available -tpr
260
+       - Make tabs wider when there is free space available -tpr
261
+       - Make feedlist saving work in kontact -smt
262
+	   - Remove all leading space between article text and headers -smt
263
+#86633 - Make tabs appear immediatly on slow sites -smt
264
+#85748 - Make filtering in combined mode work -smt
265
+#86917 - Make searching in combined mode work -smt
266
+#85451 - Open feed list properly in kontact
267
+
268
+
269
+Changes after 1.0b4:
270
+-----------------------------
271
+
272
+Changes:
273
+       - Load last loaded feed list in kontact plugin (#84351) - smt
274
+       - Show regular akregator icon in tray if there are no unread articles. Based on patch from cartman. -berkus
275
+       - Implement session mangement (#82868) - smt
276
+
277
+Bug Fixes:
278
+#84095 - akregator article view doesn't display <pre> passages correctly -berkus
279
+#82820 - Kontact crashes when fetching - smt
280
+#84272 - aKregator doesn't restore feed list after logout with running application
281
+#81995 - Don't crash when changing from/to combined view when folder selected -tpr
282
+#82024 - Fix drag&drop regression which made it possible have multiple top level folders -sg
283
+#84471 - Fix sorting of articles with no pubDates - smt
284
+#83102 - Fix handling of non-HTML web pages - smt
285
+#83187 - Reset scrollbar while switching feeds in combined view - smt
286
+
287
+
288
+Changes after 1.0b3:
289
+-----------------------------
290
+
291
+New Features:
292
+#82023 - Added middle mouse button option to open tabs in background -tpr
293
+#83202 - "Clear" button for search string -berkus
294
+       - Per feed interval fetching -smt
295
+       - Konqueror plugin for adding feeds to aKregator from context menu -PhantomsDad
296
+       - Command line options for adding feeds -PhantomsDad
297
+       - In case the feed doesn't provide an article <link> element, fall back to the <guid> permaLink -sg
298
+
299
+Bug Fixes:
300
+       - Update interval spinbox should be disabled if the checkbox isn't checked -tpr
301
+       - "aKregator - 0 unread" -> "aKregator - No unread articles" -tpr
302
+       - Scroll up when changing the article in article viewer -tpr
303
+       - Various frame-switching bug fixes -smt
304
+       - Fix favicon loading crash (#82682) -smt
305
+       - Various stop-button related bug fixes -smt
306
+       - Changed "Copy Link Location" to "Copy Link Address" because of the new naming standard of KDE -tpr
307
+       - Fix archiving of article <guid> elements -sg
308
+
309
+
310
+Changes after 1.0b2:
311
+-----------------------------
312
+
313
+New Features:
314
+
315
+       - Configuration dialog added -tpr
316
+       - Kontact plugin added -smt
317
+       - Ability to mark all entries as read on exit -tpr
318
+       - Ability to change middle mouse button behaviour in browser -tpr
319
+       - Ability to specify external browser (KDE default or custom command) -PhantomsDad
320
+       - Fetch all feeds every <num> minutes -tpr
321
+       - Display unread count in the tooltip of the tray icon -tpr
322
+
323
+Bug Fixes:
324
+
325
+#82618 - Don't crash if there's no kpart available -tpr
326
+#82691 - Don't minimize but close aKregator when session is shutting down -tpr
327
+       - Mark all read marks everything as read -tpr
328
+#82752 - Mark all as read marks every entry in feed(group), mark all feeds as read marks every feed(group) as read -tpr
329
+       - Make the feed tree drop visualizer work -sg
330
+       - Make "Copy Link Location" copy into the selection clipboard as well -sg
331
+
332
+
333
+Changes from 1.0b1 to 1.0b2:
334
+-----------------------------
335
+
336
+New Features:
337
+
338
+       - Add Search bar for searching text in articles
339
+       - Clicking on a folder will show articles of all subitems
340
+       - Feed images are stored and aren't fetched every time
341
+       - Show progress while loading feed list
342
+       - Make all shortcuts configurable
343
+       - Gray out feed icons while fetching
344
+       - Add context menus to the article and page readers
345
+       - Add unread count to try icon
346
+#81993 - Save splitter sizes on exit
347
+#82004 - Next Unread in feed menu
348
+#82005 - Link title in article viewer to article link
349
+#82166 - Use ctrl-w to close tabs
350
+#82084 - Middle click in article list opens article link in tab
351
+#82095 - Show homepage in feed list context menu
352
+#82189 - Option to fetch all at startup
353
+       - Middleclick on viewer opens now an external browser
354
+#82138 - Add context menu to the tabs with close and detach entries
355
+
356
+Bug Fixes:
357
+
358
+       - Favicon fetching works for sites that have never been viewed
359
+       - Make opening large OPML lists much faster
360
+       - Reset feed icon on fetch if it error-ed
361
+       - Fix memory leak in adding feeds
362
+       - Update unread count after deleting a feed
363
+       - Don't write article archive upon reading a read article
364
+#81965 - "When viewing story right clicking a feed crashes"
365
+#81966 - Fix the fact that sub-folder fetch fetched all siblings
366
+#81968 - Import feed list not enabling save
367
+#81978 - Fix favicon updating after fetch errors
368
+#81993 - Make splitters more sane
369
+#81994 - Fix duplicates articles listed in some feeds
370
+#81998 - Crash when folder selected and clicking in list view
371
+#81999 - Dragging in feeds view doesn't active save action
372
+#82000 - Duplicates found in feeds when they should not be
373
+#82002 - Save auto fetch interval
374
+#82003 - "Initial feed properties are discarded"
375
+#82021 - Support archiving for feeds whose encoding wasn't utf8
376
+#82024 - Make sure that All Feeds isn't draggable
377
+#82029 - In first time use, save action does not work
378
+#82048 - Renaming a folder doesn't enable "Save Action"
379
+#82049 - File/New doesn't start with an empty view
380
+#82131 - Fix fetching with folders that have subfolders
381
+#82050 - Allow drag and drop to empty folders
382
+#82053 - Program closes without asking whether user saves
383
+#82165 - "cannot delete feed via menu"
384
+#82172 -  "date is not fetched for some feeds"
385
+#82183 - Mark all as unread empties article list
386
+#82425 - add http:// to urls in add feed dialog if no protocol
387
+
388
+Changes from 0.9 to 1.0b1:
389
+
390
+#000049 FIX [x] Saving a freshly created feeds list erases "All Feeds" root entry text.
391
+        CHG [x] show current feed's title in the article list heading
392
+#000041 FIX [x] order for dateless items (right now they show in random order) -->berkus
393
+                order should be: ordered for items with dates, order same as in rss for items without dates.
394
+#000025 FIX [x] fix path in m_html->begin( KURL( "file:/tmp/something.html" ) ) so that local images and css can be referenced from article preview   --> smt
395
+#000043 ADD [x] download feed image specified for RSS (for #000036) --> smt
396
+            [x] if the channel image size is well-sized, show in headers -->smt
397
+#000019 ADD [x] implement tooltips and What's This? help -->berkus (enough of those for now)
398
+#000044 ADD [x] show an error favicon if feed could not be fetched -->smt
399
+#000037 ADD [x] add favicon support to the FeedsTree -->smt
400
+        FIX [x] Fixed nasty bug with feed editing.
401
+        FIX [x] aKregatorPart code cleanup.
402
+        FIX [x] Zack Rusin: Fixes to Makefiles, code cleanup.
403
+#000029 CHG [x] "Modify" should enable in-line edit for feed group items, standard dialog for feeds
404
+#000003 ADD [x] sort ArticleList by Article::pubDate -->berkus
405
+        CHG [x] add file filters to open/save dialogs
406
+#000013 FIX [x] list generated files in .cvsignore files
407
+#000006 ADD [x] system tray
408
+#000038 ADD [x] add isOpen=<bool> to feed group outline opml -->berkus
409
+#000039 FIX [x] make real use of LiveJournal checkboxes in AddFeedDialog
410
+#000012 FIX [x] refine aboutbox
411
+#000034 FIX [x] parse html entities in article titles
412
+#000035 FIX [x] non-latin1 opml doesn't restore properly
413
+        CHG [x] feeds list now stored using QDom classes
414
+#000030 FIX [x] boolean vars are stored and retrieved improperly in opml
415
+        CHG [x] use KPasswordEdit for ljPassword input
416
+#000001 ADD [x] allow inline editing of feeds to alter Feed[Group]::title and resetting updateTitle to false (slotItemRenamed)
417
+#000028 FIX [x] (librss + QDom) &amp;lt;b&amp;gt;test&lt;/b&gt; from RSS is parsed wrong - because, librss tries to do unescaping on entitites that QDom already unescaped -- solution: fixed librss
418
+#000002 FIX [x] update ArticleList when selecting another feed
419
+#000026 CHG [x] unless someone offers me some icons, Fetch and Fetch all will be 'down' and 'bottom' respectively
420
+#000023 FIX [x] implement fetch all
421
+#000024 CHG [x] replace generic HTML part with strictly KHTMLPart (saves some static_cast<>s)
422
+#000018 ADD [x] provide .desktop file
423
+#000017 ADD [x] provide .lsm file
424
+#000016 ADD [x] provide standard AUTHORS, ChangeLog, README, and TODO files
425
+
426
+
427
+
428
+VERSION 0.9:
429
+
430
+  RELEASE  Added to kdenonbeta/akregator

+ 251
- 0
akregator/HACKING View File

@@ -0,0 +1,251 @@
1
+================================================================================
2
+Indentation
3
+================================================================================
4
+
5
+We use 4 spaces instead of tabs everywhere.
6
+
7
+static void foo()
8
+{
9
+    if(bar()) // <-- 4 spaces
10
+        baz() // <-- 8 spaces
11
+}
12
+
13
+================================================================================
14
+Braces
15
+================================================================================
16
+
17
+Opening braces should always be on their own line.
18
+
19
+class Foo
20
+{
21
+    // stuff
22
+};
23
+
24
+if (foo == bar)
25
+{
26
+    // stuff
27
+}
28
+
29
+while (foo == bar &&
30
+       baz == quux &&
31
+       flop == pop)
32
+{
33
+    // stuff
34
+}
35
+
36
+static void foo()
37
+{
38
+    // stuff
39
+}
40
+
41
+Exceptions include inline functions that are just returning or setting a
42
+value.  However multiple statements should not ever be combined onto one line:
43
+
44
+class Foo
45
+{
46
+    public:
47
+        String value() const { return m_value; }
48
+};
49
+
50
+Also conditionals / loops that only contain one line in their body (but where
51
+the conditional statement fits onto one line) should omit braces:
52
+
53
+if (foo == bar)
54
+    baz();
55
+
56
+But:
57
+
58
+if (baz == quux &&
59
+    ralf == spot)
60
+{
61
+    bar();
62
+}
63
+
64
+================================================================================
65
+Spaces
66
+================================================================================
67
+
68
+Spaces should be used between the conditional / loop type and the
69
+conditional statement.  They should not be used after parenthesis.  However
70
+the should be to mark of mathematical or comparative operators.
71
+
72
+if ( foo == bar )
73
+    ^          ^
74
+
75
+The marked spaces should be ommitted to produce:
76
+
77
+if (foo == bar)
78
+
79
+================================================================================
80
+Header Organization
81
+================================================================================
82
+
83
+Member variables should always be private or protected and prefixed with "m_".
84
+Accessors may be inline in the headers. The organization of the members in a
85
+class should be roughly as follows:
86
+
87
+public typedefs:
88
+public ctors:
89
+public methods:
90
+public slots:
91
+signals:
92
+protected methods:
93
+protected slots:
94
+protected fields:
95
+private methods:
96
+private slots:
97
+private fields:
98
+private ctors: // if you define ctors/dtor as private, put them at end
99
+
100
+If there are no private slots there is no need for two private sections, however
101
+private functions and private variables should be clearly separated.
102
+
103
+The implementations files -- .cpp files -- should follow (when possible) the
104
+same order of function declarations as the header files.
105
+
106
+Virtual functions should always be marked as such even in derived classes where
107
+it is not strictly necessary.
108
+
109
+================================================================================
110
+Whitespace
111
+================================================================================
112
+
113
+Whitespace should be used liberally.  When blocks of code are logically distinct
114
+I tend to put a blank line between them.  This is difficult to explain
115
+systematically but after looking a bit at the current code organization this
116
+ideally will be somewhat clear.
117
+
118
+Also I tend to separate comments by blank lines on both sides.
119
+
120
+================================================================================
121
+Pointer and Reference Operators
122
+================================================================================
123
+
124
+This one is pretty simple. Use "Foo *f" and "Foo &f" in function signatures
125
+and declarations. And also in signal/slot names.
126
+
127
+================================================================================
128
+Pointer and Reference Operators
129
+================================================================================
130
+
131
+An example object here:
132
+
133
+test.h:
134
+#ifndef AKREGATOR_TEST_H
135
+#define AKREGATOR_TEST_H
136
+
137
+#include "localinclude.h"
138
+#include "anotherlocalinclude.h"
139
+#include <kdeinclude1.h>
140
+#include <kdeinclude2.h>
141
+#include <qtinclude1.h>
142
+#include <qtinclude2.h>
143
+
144
+class QSomething;
145
+
146
+namespace Akregator {
147
+
148
+class Test : public QObject
149
+{
150
+    Q_OBJECT
151
+
152
+    public:
153
+        typedef QValueList<Test> list;
154
+
155
+        Test();
156
+        Test(QString someString);
157
+        explicit Test(int i = 0);
158
+
159
+        virtual ~Test();
160
+
161
+        void someFunc();
162
+        void someFunc2(QSomething *foo);
163
+
164
+        static Test *instance() { return m_instance; }
165
+
166
+    public slots:
167
+        void receive(QSomething &);
168
+
169
+    signals:
170
+        void send(QSomething &);
171
+
172
+    protected:
173
+        void someProtectedFunc();
174
+
175
+        static void someProtectedStaticFunc();
176
+
177
+    protected slots:
178
+        void protectedSlot();
179
+
180
+    protected:
181
+        int m_protectedVar;
182
+
183
+    private:
184
+        int privateMethod();
185
+
186
+        static int staticPrivateMethod();
187
+
188
+    private slots:
189
+        void privateSlotIndeed(int youWonder);
190
+
191
+    private:
192
+        int m_privateVar;
193
+        QSomething *m_tastyThing;
194
+
195
+        static Test *m_instance;
196
+};
197
+
198
+} // no ; after namespace (borks on gcc 3.4+)
199
+
200
+#endif
201
+
202
+test.cpp:
203
+#include "test.h"
204
+#include "localinclude.h"
205
+#include "anotherlocalinclude.h"
206
+#include <kdeinclude1.h>
207
+#include <kdeinclude2.h>
208
+#include <qtinclude1.h>
209
+#include <qtinclude2.h>
210
+#include <qsomething.h>
211
+
212
+namespace Akregator {
213
+
214
+Test::Test()
215
+    : QObject()
216
+    , m_protectedVar(0)
217
+    , m_privateVar(0)
218
+    , m_tastyThing(0)
219
+    , m_instance(0)
220
+{
221
+}
222
+
223
+Test::Test(QString someString)
224
+    : QObject()
225
+    , m_protectedVar(0)
226
+    , m_privateVar(0)
227
+    , m_tastyThing(someString)
228
+    , m_instance(0)
229
+{
230
+}
231
+
232
+Test::Test(int i);
233
+    : QObject()
234
+    , m_protectedVar(0)
235
+    , m_privateVar(0)
236
+    , m_tastyThing(i)
237
+    , m_instance(0)
238
+{
239
+    if(i == 0)
240
+        kdDebug() << "Zero initializer" << endl;
241
+}
242
+
243
+} // no ; after namespace (borks on gcc 3.4+)
244
+
245
+================================================================================
246
+
247
+Original document by
248
+Scott Wheeler <wheeler@kde.org>
249
+
250
+Amendments for Akregator needs by
251
+Stanislav Karchebny <stanislav.karchebny@kdemail.net>

+ 167
- 0
akregator/INSTALL View File

@@ -0,0 +1,167 @@
1
+Basic Installation
2
+==================
3
+
4
+   These are generic installation instructions.
5
+
6
+   The `configure' shell script attempts to guess correct values for
7
+various system-dependent variables used during compilation.  It uses
8
+those values to create a `Makefile' in each directory of the package.
9
+It may also create one or more `.h' files containing system-dependent
10
+definitions.  Finally, it creates a shell script `config.status' that
11
+you can run in the future to recreate the current configuration, a file
12
+`config.cache' that saves the results of its tests to speed up
13
+reconfiguring, and a file `config.log' containing compiler output
14
+(useful mainly for debugging `configure').
15
+
16
+   If you need to do unusual things to compile the package, please try
17
+to figure out how `configure' could check whether to do them, and mail
18
+diffs or instructions to the address given in the `README' so they can
19
+be considered for the next release.  If at some point `config.cache'
20
+contains results you don't want to keep, you may remove or edit it.
21
+
22
+   The file `configure.in' is used to create `configure' by a program
23
+called `autoconf'.  You only need `configure.in' if you want to change
24
+it or regenerate `configure' using a newer version of `autoconf'.
25
+
26
+The simplest way to compile this package is:
27
+
28
+  1. `cd' to the directory containing the package's source code and type
29
+     `./configure' to configure the package for your system.  If you're
30
+     using `csh' on an old version of System V, you might need to type
31
+     `sh ./configure' instead to prevent `csh' from trying to execute
32
+     `configure' itself.
33
+
34
+     Running `configure' takes a while.  While running, it prints some
35
+     messages telling which features it is checking for.
36
+
37
+  2. Type `make' to compile the package.
38
+
39
+  3. Type `make install' to install the programs and any data files and
40
+     documentation.
41
+
42
+  4. You can remove the program binaries and object files from the
43
+     source code directory by typing `make clean'.  
44
+
45
+Compilers and Options
46
+=====================
47
+
48
+   Some systems require unusual options for compilation or linking that
49
+the `configure' script does not know about.  You can give `configure'
50
+initial values for variables by setting them in the environment.  Using
51
+a Bourne-compatible shell, you can do that on the command line like
52
+this:
53
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
54
+
55
+Or on systems that have the `env' program, you can do it like this:
56
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
57
+
58
+Compiling For Multiple Architectures
59
+====================================
60
+
61
+   You can compile the package for more than one kind of computer at the
62
+same time, by placing the object files for each architecture in their
63
+own directory.  To do this, you must use a version of `make' that
64
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
65
+directory where you want the object files and executables to go and run
66
+the `configure' script.  `configure' automatically checks for the
67
+source code in the directory that `configure' is in and in `..'.
68
+
69
+   If you have to use a `make' that does not supports the `VPATH'
70
+variable, you have to compile the package for one architecture at a time
71
+in the source code directory.  After you have installed the package for
72
+one architecture, use `make distclean' before reconfiguring for another
73
+architecture.
74
+
75
+Installation Names
76
+==================
77
+
78
+   By default, `make install' will install the package's files in
79
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
80
+installation prefix other than `/usr/local' by giving `configure' the
81
+option `--prefix=PATH'.
82
+
83
+   You can specify separate installation prefixes for
84
+architecture-specific files and architecture-independent files.  If you
85
+give `configure' the option `--exec-prefix=PATH', the package will use
86
+PATH as the prefix for installing programs and libraries.
87
+Documentation and other data files will still use the regular prefix.
88
+
89
+   If the package supports it, you can cause programs to be installed
90
+with an extra prefix or suffix on their names by giving `configure' the
91
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
92
+
93
+Optional Features
94
+=================
95
+
96
+   Some packages pay attention to `--enable-FEATURE' options to
97
+`configure', where FEATURE indicates an optional part of the package.
98
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
99
+is something like `gnu-as' or `x' (for the X Window System).  The
100
+`README' should mention any `--enable-' and `--with-' options that the
101
+package recognizes.
102
+
103
+   For packages that use the X Window System, `configure' can usually
104
+find the X include and library files automatically, but if it doesn't,
105
+you can use the `configure' options `--x-includes=DIR' and
106
+`--x-libraries=DIR' to specify their locations.
107
+
108
+Specifying the System Type
109
+==========================
110
+
111
+   There may be some features `configure' can not figure out
112
+automatically, but needs to determine by the type of host the package
113
+will run on.  Usually `configure' can figure that out, but if it prints
114
+a message saying it can not guess the host type, give it the
115
+`--host=TYPE' option.  TYPE can either be a short name for the system
116
+type, such as `sun4', or a canonical name with three fields:
117
+     CPU-COMPANY-SYSTEM
118
+
119
+See the file `config.sub' for the possible values of each field.  If
120
+`config.sub' isn't included in this package, then this package doesn't
121
+need to know the host type.
122
+
123
+   If you are building compiler tools for cross-compiling, you can also
124
+use the `--target=TYPE' option to select the type of system they will
125
+produce code for and the `--build=TYPE' option to select the type of
126
+system on which you are compiling the package.
127
+
128
+Sharing Defaults
129
+================
130
+
131
+   If you want to set default values for `configure' scripts to share,
132
+you can create a site shell script called `config.site' that gives
133
+default values for variables like `CC', `cache_file', and `prefix'.
134
+`configure' looks for `PREFIX/share/config.site' if it exists, then
135
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
136
+`CONFIG_SITE' environment variable to the location of the site script.
137
+A warning: not all `configure' scripts look for a site script.
138
+
139
+Operation Controls
140
+==================
141
+
142
+   `configure' recognizes the following options to control how it
143
+operates.
144
+
145
+`--cache-file=FILE'
146
+     Use and save the results of the tests in FILE instead of
147
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
148
+     debugging `configure'.
149
+
150
+`--help'
151
+     Print a summary of the options to `configure', and exit.
152
+
153
+`--quiet'
154
+`--silent'
155
+`-q'
156
+     Do not print messages saying which checks are being made.
157
+
158
+`--srcdir=DIR'
159
+     Look for the package's source code in directory DIR.  Usually
160
+     `configure' can determine that directory automatically.
161
+
162
+`--version'
163
+     Print the version of Autoconf used to generate the `configure'
164
+     script, and exit.
165
+
166
+`configure' also accepts some other, not widely useful, options.
167
+

+ 5
- 0
akregator/Makefile.am View File

@@ -0,0 +1,5 @@
1
+SUBDIRS = src
2
+EXTRA_DIST = AUTHORS COPYING ChangeLog INSTALL NEWS README TODO akregator.lsm
3
+AUTOMAKE_OPTIONS = foreign
4
+
5
+include $(top_srcdir)/admin/Doxyfile.am

+ 3
- 0
akregator/NEWS View File

@@ -0,0 +1,3 @@
1
+2004.04.07
2
+    * First release (version 0.9)
3
+ 

+ 27
- 0
akregator/README View File

@@ -0,0 +1,27 @@
1
+ Akregator
2
+~~~~~~~~~~~
3
+
4
+A Feed Reader for KDE.
5
+
6
+Join developer mailing list: <akregator-devel@lists.sourceforge.net>
7
+
8
+If you wish to discuss any problems or features before posting them on bugs.kde.org
9
+you can subscribe to <akregator-users@lists.sourceforge.net>
10
+
11
+Please notice that we ask you to post your bugs and wishes to bugs.kde.org not only
12
+because this is official KDE bug tracker, but because this helps us keep an eye on
13
+demand of the community and not forget to implement needed things ;)
14
+
15
+Also please do not abuse bug tracker functionality by submitting duplicate items.
16
+Check the existing bugs first (for example using power user tool available at
17
+<http://bugs.kde.org/buglist.cgi?product=akregator>). If you find something very close
18
+to your request, just add a comment and vote for the bug (there's a little vote link on the
19
+bug summary pane).
20
+
21
+And enjoy your Akregator!
22
+
23
+--------------------------------------------------------------------------------
24
+
25
+WWW:  http://akregator.kde.org
26
+IRC:  irc://berkus@irc.freenode.net/#akregator
27
+MAIL: <Stanislav.Karchebny@kdemail.net>

+ 23
- 0
akregator/TODO View File

@@ -0,0 +1,23 @@
1
+stuff to do before akregator 1.0
2
+
3
+general:
4
+- being able to share feeds through kmystuff
5
+- customize colors, generally
6
+
7
+page viewer:
8
+- tab color highlights, like konqui
9
+- customize fonts used in viewers
10
+
11
+article list:
12
+- being able to delete articles from cache
13
+
14
+feed list:
15
+- being able to keep X articles per feed, or disable keeping any in archive 
16
+- search folders 'v-folders'
17
+
18
+notifications:
19
+- make notifications only appear in background
20
+- use standard kpassive popup in knotifications instead of balloons
21
+
22
+kontact:
23
+- show akregator if akregator is running and kontact feed icon is selected

+ 14
- 0
akregator/akregator.lsm View File

@@ -0,0 +1,14 @@
1
+Begin3
2
+Title:          akregator
3
+Version:        1.0-beta5 "Pierre"
4
+Entered-date:   
5
+Description:    Feed feader for KDE
6
+Keywords:       rss atom aggregation syndication feed articles KDE Qt
7
+Author:         Stanislav Karchebny <Stanislav.Karchebny@kdemail.net>
8
+Maintained-by:  Stanislav Karchebny <Stanislav.Karchebny@kdemail.net>
9
+Primary-site:   
10
+Home-page:      http://akregator.sourceforge.net/
11
+Original-site:  
12
+Platforms:      Linux and other Unices, requires KDE.
13
+Copying-policy: GNU Public License
14
+End

+ 166
- 0
akregator/src/Makefile.am View File

@@ -0,0 +1,166 @@
1
+#set the include path for X, qt and KDE
2
+INCLUDES = -I$(top_srcdir)/akregator/src/librss -I$(top_srcdir) $(all_includes)
3
+
4
+# let automoc handle all of the meta source files (moc).
5
+METASOURCES = AUTO
6
+
7
+messages: rc.cpp
8
+	$(EXTRACTRC) `find . -name "*.rc" -o -name "*.ui" -o -name "*.kcfg"` >> rc.cpp
9
+	$(XGETTEXT) *.cpp -o $(podir)/akregator.pot
10
+
11
+KDE_ICON = AUTO
12
+
13
+# this Makefile creates both a KPart application and a KPart
14
+#########################################################################
15
+# APPLICATION SECTION
16
+#########################################################################
17
+# this is the program that gets installed.  it's name is used for all
18
+# of the other Makefile.am variables
19
+bin_PROGRAMS = akregator
20
+
21
+# the application source, library search path, and link libraries
22
+akregator_SOURCES = main.cpp mainwindow.cpp
23
+akregator_LDFLAGS = $(KDE_RPATH) $(all_libraries)
24
+akregator_LDADD = $(LIB_KPARTS) libakregatorprivate.la
25
+#akregator_LDADD = $(LIB_KPARTS) libakregatorprivate.la $(top_builddir)/libkdepim/libkdepim.la
26
+
27
+# this is where the desktop file will go
28
+xdg_apps_DATA = akregator.desktop
29
+
30
+# this is where the shell's XML-GUI resource file goes
31
+shellrcdir = $(kde_datadir)/akregator
32
+shellrc_DATA = akregator_shell.rc
33
+
34
+kdelnk_DATA = feed.protocol
35
+kdelnkdir = $(kde_servicesdir)
36
+
37
+#########################################################################
38
+# PRIVATE SECTION
39
+#########################################################################
40
+
41
+# install headers (for storage plugins)
42
+akregatorinclude_HEADERS = storage.h feedstorage.h storagefactory.h storagefactoryregistry.h \
43
+                           plugin.h articleinterceptor.h akregator_export.h
44
+akregatorincludedir = $(includedir)/akregator
45
+
46
+# this is a lib shared by both the KPart and the main application
47
+lib_LTLIBRARIES = libakregatorprivate.la
48
+libakregatorprivate_la_SOURCES = akregatorconfig.kcfgc \
49
+                                 articlefilter.cpp \
50
+				 aboutdata.cpp \
51
+                                 trayicon.cpp \
52
+				 article.cpp \
53
+				 feed.cpp \
54
+				 treenode.cpp \
55
+                                 treenodevisitor.cpp \
56
+                                 tagnode.cpp \
57
+				 folder.cpp \
58
+                                 tagfolder.cpp \
59
+                                 nodelist.cpp \
60
+				 feedlist.cpp \
61
+                                 tagnodelist.cpp \
62
+			         fetchqueue.cpp \
63
+			  	 feediconmanager.cpp \
64
+				feediconmanager.skel \
65
+                                 articleinterceptor.cpp \
66
+                                plugin.cpp \
67
+ 				pluginmanager.cpp \
68
+				storagefactoryregistry.cpp \
69
+				storage.cpp \
70
+                                tag.cpp \
71
+                                tagset.cpp \
72
+                                storagedummyimpl.cpp \
73
+                                storagefactorydummyimpl.cpp \
74
+                                simplenodeselector.cpp \
75
+                                feedstoragedummyimpl.cpp \
76
+                                dragobjects.cpp \
77
+                                utils.cpp
78
+				
79
+libakregatorprivate_la_LDFLAGS = $(all_libraries) -avoid-version -no-undefined 
80
+libakregatorprivate_la_LIBADD =	$(top_builddir)/libkdepim/libkdepim.la \
81
+	$(top_builddir)/akregator/src/librss/librsslocal.la $(LIB_KHTML)
82
+
83
+#########################################################################
84
+# KPART SECTION
85
+#########################################################################
86
+
87
+kde_kcfg_DATA = akregator.kcfg
88
+kde_module_LTLIBRARIES = libakregatorpart.la
89
+
90
+mainwindow.lo: akregatorconfig.h
91
+akregator_part.lo: akregatorconfig.h
92
+akregator_view.lo: akregatorconfig.h
93
+akregatorconfig.lo: akregatorconfig.h
94
+articlelistview.lo: akregatorconfig.h
95
+articleviewer.lo: akregatorconfig.h
96
+feed.lo: akregatorconfig.h
97
+fetchqueue.lo: akregatorconfig.h
98
+trayicon.lo: akregatorconfig.h
99
+viewer.lo: akregatorconfig.h
100
+searchbar.lo: akregatorconfig.h
101
+
102
+kspeech_DIR = $(kde_includes)
103
+kspeechsink_DIR = $(kde_includes)
104
+
105
+# the Part's source, library search path, and link libraries
106
+libakregatorpart_la_SOURCES = \
107
+	searchbar.cpp \
108
+	akregator_run.cpp \
109
+	articlelistview.cpp \
110
+	actionmanager.cpp \
111
+        actionmanagerimpl.cpp \
112
+	frame.cpp \
113
+	viewer.cpp \
114
+	articleviewer.cpp \
115
+	addfeeddialog.cpp \
116
+	addfeedwidgetbase.ui \
117
+	propertiesdialog.cpp \
118
+	propertieswidgetbase.ui \
119
+	pageviewer.cpp \
120
+	tabwidget.cpp \
121
+	feedlistview.cpp \
122
+	treenodeitem.cpp \
123
+	folderitem.cpp \
124
+	feeditem.cpp \
125
+        progressmanager.cpp \
126
+        kernel.cpp \
127
+        listtabwidget.cpp \
128
+        settings_appearance.ui \
129
+	settings_general.ui \
130
+	settings_archive.ui \
131
+	settings_browser.ui \
132
+	settings_advancedbase.ui \
133
+        tagnodeitem.cpp \
134
+	configdialog.cpp \
135
+	settings_advanced.cpp \
136
+	akregator_partiface.skel \
137
+	akregator_part.cpp \
138
+	akregator_view.cpp \
139
+        notificationmanager.cpp \
140
+        tagaction.cpp \
141
+        tagpropertieswidgetbase.ui \
142
+        tagpropertiesdialog.cpp \
143
+        tagfolderitem.cpp \
144
+        speechclient.cpp \
145
+	kspeechsink.skel \
146
+	kspeech.stub
147
+
148
+libakregatorpart_la_LDFLAGS = $(KDE_RPATH) $(KDE_PLUGIN) $(LIB_KUTILS) -avoid-version -no-undefined $(all_libraries)
149
+libakregatorpart_la_LIBADD = libakregatorprivate.la 
150
+
151
+# this is where the desktop file will go
152
+partdesktopdir = $(kde_servicesdir)
153
+partdesktop_DATA = akregator_part.desktop
154
+
155
+# this is where the part's XML-GUI resource file goes
156
+partrcdir = $(kde_datadir)/akregator
157
+partrc_DATA = articleviewer.rc pageviewer.rc akregator_part.rc eventsrc
158
+
159
+kde_servicetypes_DATA = akregator_plugin.desktop
160
+
161
+
162
+SUBDIRS = librss about . mk4storage pics
163
+
164
+DOXYGEN_REFERENCES = kdeui
165
+include $(top_srcdir)/admin/Doxyfile.am
166
+

+ 6
- 0
akregator/src/about/Makefile.am View File

@@ -0,0 +1,6 @@
1
+about_DATA = \
2
+	top-right-akregator.png \
3
+	main.html \
4
+	akregator.css
5
+
6
+aboutdir = $(kde_datadir)/akregator/about

+ 20
- 0
akregator/src/about/akregator.css View File

@@ -0,0 +1,20 @@
1
+
2
+#headerR {
3
+  position: absolute;
4
+  right: 0px;
5
+  width: 430px;
6
+  height: 131px;
7
+  background-image: url(top-right-akregator.png);
8
+}
9
+
10
+/* .. for when we actually have a box-center-akregator.png ..
11
+#boxCenter {
12
+  background-image: url(box-center-akregator.png);
13
+  background-repeat: no-repeat;
14
+  background-color: #dfe7f3;
15
+  background-position: bottom right;
16
+}
17
+*/
18
+
19
+/* vim:set sw=2 et nocindent smartindent: */
20
+

+ 66
- 0
akregator/src/about/main.html View File

@@ -0,0 +1,66 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+
5
+<html xmlns="http://www.w3.org/1999/xhtml">
6
+<head>
7
+  <meta name="generator" content=
8
+  "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
9
+
10
+  <style type="text/css">
11
+  /*<![CDATA[*/
12
+    @import "%1"; /* kde_infopage.css */
13
+    %1 /* maybe @import "kde_infopage_rtl.css"; */
14
+    @import "akregator.css";
15
+    body {font-size: %1px;}
16
+  /*]]>*/
17
+  </style>
18
+
19
+  <title>Akregator</title>
20
+</head>
21
+
22
+<body>
23
+  <div id="header">
24
+    <div id="headerL"/>
25
+    <div id="headerR"/>
26
+
27
+    <div id="title">
28
+    %2 <!-- Akregator -->
29
+    </div>
30
+
31
+    <div id="tagline">
32
+    %3 <!-- Catchphrase -->
33
+    </div>
34
+  </div>
35
+
36
+  <!-- the bar -->
37
+  <div id="bar">
38
+    <div id="barT"><div id="barTL"/><div id="barTR"/><div id="barTC"/></div>
39
+    <div id="barL">
40
+      <div id="barR">
41
+        <div id="barCenter" class="bar_text">
42
+      %4<!-- Akregator is ... -->
43
+        </div>
44
+      </div>
45
+    </div>
46
+    <div id="barB"><div id="barBL"/><div id="barBR"/><div id="barBC"/></div>
47
+  </div>
48
+
49
+  <!-- the main text box -->
50
+  <div id="box">
51
+    <div id="boxT"><div id="boxTL"/><div id="boxTR"/><div id="boxTC"/></div>
52
+    <div id="boxL">
53
+      <div id="boxR">
54
+        <div id="boxCenter">
55
+        <!--Welcome to Akregator-->
56
+	%5
57
+        </div>
58
+      </div>
59
+    </div>
60
+    <div id="boxB"><div id="boxBL"/><div id="boxBR"/><div id="boxBC"/></div>
61
+  </div>
62
+
63
+  <div id="footer"><div id="footerL"/><div id="footerR"/></div>
64
+</body>
65
+</html>
66
+<!-- vim:set sw=2 et nocindent smartindent: -->

BIN
akregator/src/about/top-right-akregator.png View File


+ 58
- 0
akregator/src/aboutdata.cpp View File

@@ -0,0 +1,58 @@
1
+/*
2
+    This file is part of Akregator.
3
+
4
+    Copyright (C) 2004 Teemu Rytilahti <tpr@d5k.net>
5
+
6
+    This program is free software; you can redistribute it and/or modify
7
+    it under the terms of the GNU General Public License as published by
8
+    the Free Software Foundation; either version 2 of the License, or
9
+    (at your option) any later version.
10
+
11
+    This program is distributed in the hope that it will be useful,
12
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+    GNU General Public License for more details.
15
+
16
+    You should have received a copy of the GNU General Public License
17
+    along with this program; if not, write to the Free Software
18
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
+
20
+    As a special exception, permission is given to link this program
21
+    with any edition of Qt, and distribute the resulting executable,
22
+    without including the source code for Qt in the source distribution.
23
+*/
24
+
25
+#include <qstring.h>
26
+
27
+#include "aboutdata.h"
28
+
29
+namespace Akregator {
30
+
31
+AboutData::AboutData()
32
+    : KAboutData("akregator", I18N_NOOP("Akregator"), AKREGATOR_VERSION, I18N_NOOP("A KDE Feed Aggregator"),
33
+                 License_GPL, I18N_NOOP("(C) 2004, 2005 Akregator developers"), 0,
34
+                     "http://akregator.kde.org/")
35
+{
36
+    addAuthor( "Frank Osterfeld", I18N_NOOP("Maintainer"), "frank.osterfeld@kdemail.net" );
37
+    addAuthor( "Teemu Rytilahti", I18N_NOOP("Developer"), "tpr@d5k.net" );
38
+    addAuthor( "Sashmit Bhaduri", I18N_NOOP("Developer"), "sashmit@vfemail.net" );
39
+    addAuthor( "Pierre Habouzit", I18N_NOOP("Developer"), "pierre.habouzit@m4x.org" );
40
+    addAuthor( "Stanislav Karchebny", I18N_NOOP("Developer"), "Stanislav.Karchebny@kdemail.net" );
41
+    addAuthor( "Gary Cramblitt", I18N_NOOP("Contributor"), "garycramblitt@comcast.net");
42
+    addAuthor( "Stephan Binner", I18N_NOOP("Contributor"), "binner@kde.org" );
43
+    addAuthor( "Christof Musik", I18N_NOOP("Contributor"), "christof@freenet.de" );
44
+    addCredit( "Anne-Marie Mahfouf", I18N_NOOP("Handbook"), "annma@kde.org" );
45
+    addCredit( "Frerich Raabe", I18N_NOOP("Author of librss"), "raabe@kde.org" );
46
+    addCredit( "Eckhart Woerner", I18N_NOOP("Bug tracker management, Usability improvements"), "kde@ewsoftware.de");
47
+    addCredit( "Heinrich Wendel", I18N_NOOP("Tons of bug fixes"), "h_wendel@cojobo.net");
48
+    addCredit( "Eike Hein", I18N_NOOP("'Delayed mark as read' feature"), "sho@eikehein.com" );
49
+    addCredit( "Marcel Dierkes", I18N_NOOP("Icons"), "marcel.dierkes@gmx.de");
50
+    addCredit( "George Staikos", I18N_NOOP("Insomnia"), "staikos@kde.org" );
51
+    addCredit( "Philipp Droessler", I18N_NOOP("Gentoo Ebuild"), "kingmob@albert-unser.net");
52
+}
53
+
54
+AboutData::~AboutData()
55
+{
56
+}
57
+
58
+}

+ 46
- 0
akregator/src/aboutdata.h View File

@@ -0,0 +1,46 @@
1
+/*
2
+    This file is part of Akregator.
3
+
4
+    Copyright (C) 2004 Teemu Rytilahti <tpr@d5k.net>
5
+
6
+    This program is free software; you can redistribute it and/or modify
7
+    it under the terms of the GNU General Public License as published by
8
+    the Free Software Foundation; either version 2 of the License, or
9
+    (at your option) any later version.
10
+
11
+    This program is distributed in the hope that it will be useful,
12
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+    GNU General Public License for more details.
15
+
16
+    You should have received a copy of the GNU General Public License
17
+    along with this program; if not, write to the Free Software
18
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
+
20
+    As a special exception, permission is given to link this program
21
+    with any edition of Qt, and distribute the resulting executable,
22
+    without including the source code for Qt in the source distribution.
23
+*/
24
+
25
+#ifndef ABOUTDATA_H
26
+#define ABOUTDATA_H
27
+
28
+#include <kaboutdata.h>
29
+#include <kdepimmacros.h>
30
+
31
+#define AKREGATOR_VERSION "1.2.9"
32
+
33
+namespace Akregator {
34
+/**
35
+@author Teemu Rytilahti
36
+*/
37
+class KDE_EXPORT AboutData : public KAboutData
38
+{
39
+public:
40
+    AboutData();
41
+    ~AboutData();
42
+};
43
+
44
+}
45
+
46
+#endif

+ 55
- 0
akregator/src/actionmanager.cpp View File

@@ -0,0 +1,55 @@
1
+/*
2
+    This file is part of Akregator.
3
+
4
+    Copyright (C) 2005 Frank Osterfeld <frank.osterfeld at kdemail.net>
5
+
6
+    This program is free software; you can redistribute it and/or modify
7
+    it under the terms of the GNU General Public License as published by
8
+    the Free Software Foundation; either version 2 of the License, or
9
+    (at your option) any later version.
10
+
11
+    This program is distributed in the hope that it will be useful,
12
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+    GNU General Public License for more details.
15
+
16
+    You should have received a copy of the GNU General Public License
17
+    along with this program; if not, write to the Free Software
18
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
+
20
+    As a special exception, permission is given to link this program
21
+    with any edition of Qt, and distribute the resulting executable,
22
+    without including the source code for Qt in the source distribution.
23
+*/
24
+
25
+#include "actionmanager.h"
26
+
27
+namespace Akregator
28
+{
29
+
30
+class ActionManager::ActionManagerPrivate
31
+{};
32
+
33
+ActionManager* ActionManager::m_self = 0;
34
+
35
+ActionManager* ActionManager::getInstance()
36
+{
37
+    return m_self;
38
+}
39
+
40
+void ActionManager::setInstance(ActionManager* manager)
41
+{
42
+    m_self = manager;
43
+}
44
+
45
+
46
+ActionManager::ActionManager(QObject* parent, const char* name) : QObject(parent, name), d(new ActionManagerPrivate)
47
+{}
48
+
49
+ActionManager::~ActionManager()
50
+{
51
+    delete d;
52
+    d = 0;
53
+}
54
+
55
+} // namespace Akregator

+ 62
- 0
akregator/src/actionmanager.h View File

@@ -0,0 +1,62 @@
1
+/*
2
+    This file is part of Akregator.
3
+
4
+    Copyright (C) 2005 Frank Osterfeld <frank.osterfeld at kdemail.net>
5
+
6
+    This program is free software; you can redistribute it and/or modify
7
+    it under the terms of the GNU General Public License as published by
8
+    the Free Software Foundation; either version 2 of the License, or
9
+    (at your option) any later version.
10
+
11
+    This program is distributed in the hope that it will be useful,
12
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+    GNU General Public License for more details.
15
+
16
+    You should have received a copy of the GNU General Public License
17
+    along with this program; if not, write to the Free Software
18
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
+
20
+    As a special exception, permission is given to link this program
21
+    with any edition of Qt, and distribute the resulting executable,
22
+    without including the source code for Qt in the source distribution.
23
+*/
24
+
25
+#ifndef AKREGATOR_ACTIONMANAGER_H
26
+#define AKREGATOR_ACTIONMANAGER_H
27
+
28
+#include <qobject.h>
29
+
30
+class QWidget;
31
+
32
+class KAction;
33
+
34
+namespace Akregator {
35
+
36
+/** interface for accessing actions, popup menus etc. from widgets.
37
+    (Extracted from the implementation to avoid dependencies between widgets and  Akregator::Part).
38
+ */
39
+class ActionManager : public QObject
40
+{
41
+    public:
42
+
43
+        static ActionManager* getInstance();
44
+        static void setInstance(ActionManager* manager);
45
+
46
+        ActionManager(QObject* parent=0, const char* name=0);
47
+        virtual ~ActionManager();
48
+
49
+        virtual KAction* action(const char* name, const char* classname=0) = 0;
50
+        virtual QWidget* container(const char* name) = 0;
51
+        
52
+    private:
53
+
54
+        static ActionManager* m_self;
55
+
56
+        class ActionManagerPrivate;
57
+        ActionManagerPrivate* d;
58
+};
59
+
60
+} // namespace Akregator
61
+
62
+#endif // AKREGATOR_ACTIONMANAGER_H

+ 443
- 0
akregator/src/actionmanagerimpl.cpp View File

@@ -0,0 +1,443 @@
1
+/*
2
+    This file is part of Akregator.
3
+
4
+    Copyright (C) 2005 Frank Osterfeld <frank.osterfeld at kdemail.net>
5
+
6
+    This program is free software; you can redistribute it and/or modify
7
+    it under the terms of the GNU General Public License as published by
8
+    the Free Software Foundation; either version 2 of the License, or
9
+    (at your option) any later version.
10
+
11
+    This program is distributed in the hope that it will be useful,
12
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+    GNU General Public License for more details.
15
+
16
+    You should have received a copy of the GNU General Public License
17
+    along with this program; if not, write to the Free Software
18
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19
+
20
+    As a special exception, permission is given to link this program
21
+    with any edition of Qt, and distribute the resulting executable,
22
+    without including the source code for Qt in the source distribution.
23
+*/
24
+
25
+#include <qwidget.h>
26
+#include <kaction.h>
27
+#include <kactioncollection.h>
28
+#include <klocale.h>
29
+#include <kpopupmenu.h>
30
+#include <kshortcut.h>
31
+#include <kxmlguifactory.h>
32
+
33
+#include <qmap.h>
34
+#include <qstring.h>
35
+#include <qvaluelist.h>
36
+
37
+#include "actionmanagerimpl.h"
38
+#include "akregatorconfig.h"
39
+#include "akregator_part.h"
40
+#include "akregator_view.h"
41
+#include "articlelistview.h"
42
+#include "articleviewer.h"
43
+#include "feed.h"
44
+#include "feedlistview.h"
45
+#include "fetchqueue.h"
46
+#include "folder.h"
47
+#include "listtabwidget.h"
48
+#include "kernel.h"
49
+#include "speechclient.h"
50
+#include "tag.h"
51
+#include "tagaction.h"
52
+#include "tagnode.h"
53
+#include "tagset.h"
54
+#include "trayicon.h"
55
+#include "treenode.h"
56
+#include "treenodevisitor.h"
57
+#include "tabwidget.h"
58
+#include "kstdaccel.h"
59
+
60
+
61
+
62
+#include <kdebug.h>
63
+
64
+namespace Akregator
65
+{
66
+
67
+class ActionManagerImpl::NodeSelectVisitor : public TreeNodeVisitor
68
+{
69
+    public:
70
+    NodeSelectVisitor(ActionManagerImpl* manager) : m_manager(manager) {}
71
+
72
+    virtual bool visitFeed(Feed* node)
73
+    {
74
+        KAction* remove = m_manager->action("feed_remove");
75
+        if (remove)
76
+            remove->setEnabled(true);
77
+        KAction* hp = m_manager->action("feed_homepage");
78
+        if (hp)
79
+            hp->setEnabled(!node->htmlUrl().isEmpty());
80
+        m_manager->action("feed_fetch")->setText(i18n("&Fetch Feed"));
81
+        m_manager->action("feed_remove")->setText(i18n("&Delete Feed"));
82
+        m_manager->action("feed_modify")->setText(i18n("&Edit Feed..."));
83
+        m_manager->action("feed_mark_all_as_read")->setText(i18n("&Mark Feed as Read"));
84
+
85
+        return true;
86
+    }
87
+
88
+    virtual bool visitFolder(Folder* node)
89
+    {
90
+        KAction* remove = m_manager->action("feed_remove");
91
+        if (remove)
92
+            remove->setEnabled(node->parent()); // root nodes must not be deleted
93
+        KAction* hp = m_manager->action("feed_homepage");
94
+        if (hp)
95
+            hp->setEnabled(false);
96
+
97
+        m_manager->action("feed_fetch")->setText(i18n("&Fetch Feeds"));
98
+        m_manager->action("feed_remove")->setText(i18n("&Delete Folder"));
99
+        m_manager->action("feed_modify")->setText(i18n("&Rename Folder"));
100
+        m_manager->action("feed_mark_all_as_read")->setText(i18n("&Mark Feeds as Read"));
101
+
102
+        return true;
103
+    }
104
+
105
+    virtual bool visitTagNode(TagNode* /*node*/)
106
+    {
107
+        KAction* remove = m_manager->action("feed_remove");
108
+        if (remove)
109
+            remove->setEnabled(true);
110
+        KAction* hp = m_manager->action("feed_homepage");
111
+        if (hp)
112
+            hp->setEnabled(false);
113
+        m_manager->action("feed_mark_all_as_read")->setText(i18n("&Mark Articles as Read"));
114
+        m_manager->action("feed_remove")->setText(i18n("&Delete Tag"));
115
+        m_manager->action("feed_modify")->setText(i18n("&Edit Tag..."));
116
+
117
+        return true;
118
+    }
119
+    private:
120
+    ActionManagerImpl* m_manager;
121
+};
122
+
123
+class ActionManagerImpl::ActionManagerImplPrivate
124
+{
125
+public:
126
+
127
+    NodeSelectVisitor* nodeSelectVisitor;
128
+    ArticleListView* articleList;
129
+    ListTabWidget* listTabWidget;
130
+    View* view;
131
+    ArticleViewer* articleViewer;
132
+    Part* part;
133
+    TrayIcon* trayIcon;
134
+    KActionMenu* tagMenu;
135
+    KActionCollection* actionCollection;
136
+    TagSet* tagSet;
137
+    QMap<QString, TagAction*> tagActions;
138
+    TabWidget* tabWidget;
139
+    KAction* speakSelectedArticlesAction;
140
+};
141
+
142
+void ActionManagerImpl::slotUpdateTagActions(bool enabled, const QStringList& tagIds)
143
+{
144
+    if (Settings::showTaggingGUI() && d->tagMenu)
145
+    {
146
+        d->tagMenu->setEnabled(enabled);
147
+        QValueList<TagAction*> actions = d->tagActions.values();
148
+
149
+        for (QValueList<TagAction*>::ConstIterator it = actions.begin(); it != actions.end(); ++it)
150
+        {
151
+            (*it)->setChecked(tagIds.contains((*it)->tag().id()));
152
+        }
153
+    }
154
+}
155
+
156
+void ActionManagerImpl::setTagSet(TagSet* tagSet)
157
+{
158
+    if (tagSet == d->tagSet)
159
+        return;
160
+
161
+    if (d->tagSet != 0)
162
+    {
163
+        disconnect(d->tagSet, SIGNAL(signalTagAdded(const Tag&)), this, SLOT(slotTagAdded(const Tag&)));
164
+        disconnect(d->tagSet, SIGNAL(signalTagRemoved(const Tag&)), this, SLOT(slotTagRemoved(const Tag&)));
165
+    }
166
+
167
+    d->tagSet = tagSet;
168
+
169
+    if (tagSet != 0)
170
+    {
171
+        connect(d->tagSet, SIGNAL(signalTagAdded(const Tag&)), this, SLOT(slotTagAdded(const Tag&)));
172
+        connect(d->tagSet, SIGNAL(signalTagRemoved(const Tag&)), this, SLOT(slotTagRemoved(const Tag&)));
173
+    }
174
+
175
+    QValueList<TagAction*> actions = d->tagActions.values();
176
+    for (QValueList<TagAction*>::ConstIterator it = actions.begin(); it != actions.end(); ++it)
177
+    {
178
+        d->tagMenu->remove(*it);
179
+        delete *it;
180
+    }
181
+
182
+
183
+    d->tagActions.clear();
184
+
185
+    //TODO: remove actions from menus, delete actions, clear maps
186
+
187
+    if (tagSet != 0L)
188
+    {
189
+        QValueList<Tag> list = tagSet->toMap().values();
190
+        for (QValueList<Tag>::ConstIterator it = list.begin(); it != list.end(); ++it)
191
+            slotTagAdded(*it);
192
+    }
193
+}
194
+
195
+void ActionManagerImpl::slotTagAdded(const Tag& tag)
196
+{
197
+    if (!Settings::showTaggingGUI())
198
+        return;
199
+
200
+    if (!d->tagActions.contains(tag.id()))
201
+    {
202
+        d->tagActions[tag.id()] = new TagAction(tag, d->view, SLOT(slotAssignTag(const Tag&, bool)), d->tagMenu);
203
+        d->tagMenu->insert(d->tagActions[tag.id()]);
204
+    }
205
+}
206
+
207
+void ActionManagerImpl::slotTagRemoved(const Tag& tag)
208
+{
209
+    if (!Settings::showTaggingGUI())
210
+        return;
211
+
212
+    QString id = tag.id();
213
+    TagAction* action = d->tagActions[id];
214
+    d->tagMenu->remove(action);
215
+    d->tagActions.remove(id);
216
+    delete action;
217
+}
218
+
219
+void ActionManagerImpl::slotNodeSelected(TreeNode* node)
220
+{
221
+    if (node != 0)
222
+        d->nodeSelectVisitor->visit(node);
223
+}
224
+
225
+ActionManagerImpl::ActionManagerImpl(Part* part, QObject* parent, const char* name) : ActionManager(parent, name), d(new ActionManagerImplPrivate)
226
+{
227
+    d->nodeSelectVisitor = new NodeSelectVisitor(this);
228
+    d->part = part;
229
+    d->tagSet = 0;
230
+    d->listTabWidget = 0;
231
+    d->articleList = 0;
232
+    d->trayIcon = 0;
233
+    d->articleViewer = 0;
234
+    d->view = 0;
235
+    d->tabWidget = 0;
236
+    d->tagMenu = 0;
237
+    d->speakSelectedArticlesAction = 0;
238
+    d->actionCollection = part->actionCollection();
239
+    initPart();
240
+}
241
+
242
+ActionManagerImpl::~ActionManagerImpl()
243
+{
244
+    delete d->nodeSelectVisitor;
245
+    delete d;
246
+    d = 0;
247
+}
248
+
249
+void ActionManagerImpl::initTrayIcon(TrayIcon* trayIcon)
250
+{
251
+    if (d->trayIcon)
252
+        return;
253
+    else d->trayIcon = trayIcon;