Browse Source

* Massive set of changes to bring in all fixes and enhancements from the Enterprise PIM branch

* Ensured that the Trinity changes were applied on top of those enhancements, and any redundancy removed
* Added journal read support to the CalDAV resource
* Fixed CalDAV resource to use events URL for tasks and journals when separate URL checkbox unchecked


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1170461 283d02a7-25f6-0310-bc7c-ecb5cbfe19
tpearson 8 years ago
parent
commit
cc29364f06
100 changed files with 3517 additions and 410 deletions
  1. 1
    0
      LAST_ENTERPRISE_SYNC
  2. 1
    1
      Makefile.am.in
  3. 2147
    0
      NewsLog.txt
  4. 2
    6
      akregator/src/akregator.desktop
  5. 1
    3
      akregator/src/akregator_plugin.desktop
  6. 29
    21
      akregator/src/akregator_view.cpp
  7. 3
    10
      akregator/src/eventsrc
  8. 1
    4
      akregator/src/mk4storage/akregator_mk4storage_plugin.desktop
  9. 6
    3
      certmanager/certmanager.cpp
  10. 1
    5
      certmanager/conf/kleopatra_config_appear.desktop
  11. 4
    7
      certmanager/conf/kleopatra_config_dirserv.desktop
  12. 0
    3
      certmanager/conf/kleopatra_config_dnorder.desktop
  13. 14
    2
      certmanager/lib/backends/qgpgme/qgpgmecryptoconfig.cpp
  14. 4
    1
      certmanager/lib/backends/qgpgme/qgpgmedecryptjob.cpp
  15. 5
    3
      certmanager/lib/backends/qgpgme/qgpgmedecryptverifyjob.cpp
  16. 1
    0
      certmanager/lib/backends/qgpgme/qgpgmedeletejob.cpp
  17. 3
    1
      certmanager/lib/backends/qgpgme/qgpgmedownloadjob.cpp
  18. 4
    1
      certmanager/lib/backends/qgpgme/qgpgmeencryptjob.cpp
  19. 3
    1
      certmanager/lib/backends/qgpgme/qgpgmeexportjob.cpp
  20. 6
    2
      certmanager/lib/backends/qgpgme/qgpgmeimportjob.cpp
  21. 8
    8
      certmanager/lib/backends/qgpgme/qgpgmejob.cpp
  22. 4
    3
      certmanager/lib/backends/qgpgme/qgpgmejob.h
  23. 4
    1
      certmanager/lib/backends/qgpgme/qgpgmekeygenerationjob.cpp
  24. 16
    0
      certmanager/lib/backends/qgpgme/qgpgmekeylistjob.cpp
  25. 1
    0
      certmanager/lib/backends/qgpgme/qgpgmekeylistjob.h
  26. 3
    1
      certmanager/lib/backends/qgpgme/qgpgmesignencryptjob.cpp
  27. 4
    1
      certmanager/lib/backends/qgpgme/qgpgmesignjob.cpp
  28. 3
    1
      certmanager/lib/backends/qgpgme/qgpgmeverifydetachedjob.cpp
  29. 4
    1
      certmanager/lib/backends/qgpgme/qgpgmeverifyopaquejob.cpp
  30. 14
    0
      certmanager/lib/kleo/job.cpp
  31. 6
    0
      certmanager/lib/kleo/job.h
  32. 1
    8
      certmanager/lib/libkleopatrarc.desktop
  33. 1
    0
      certmanager/lib/tests/test_verify.cpp
  34. 6
    0
      certmanager/lib/ui/cryptoconfigdialog.cpp
  35. 29
    1
      certmanager/lib/ui/cryptoconfigmodule.cpp
  36. 2
    0
      certmanager/lib/ui/cryptoconfigmodule.h
  37. 52
    5
      certmanager/lib/ui/keyselectiondialog.cpp
  38. 14
    1
      certmanager/lib/ui/keyselectiondialog.h
  39. 64
    5
      certmanager/lib/ui/messagebox.cpp
  40. 3
    0
      certmanager/lib/ui/messagebox.h
  41. 13
    0
      cvs.sh.diff
  42. 3
    3
      doc/kleopatra/index.docbook
  43. 178
    27
      doc/kmail/configure.docbook
  44. 2
    0
      doc/kmail/index.docbook
  45. 158
    0
      doc/kmail/using-chiasmus.docbook
  46. 21
    2
      doc/kmail/using-kmail.docbook
  47. 82
    3
      doc/kontact/index.docbook
  48. 87
    80
      doc/korganizer/index.docbook
  49. 0
    10
      kabc/kabcdistlistupdater/kabcdistlistupdater.desktop
  50. 9
    3
      kaddressbook/addresseeeditorextension.cpp
  51. 3
    1
      kaddressbook/addresseeeditorextension.h
  52. 16
    0
      kaddressbook/addresseeutil.cpp
  53. 10
    1
      kaddressbook/addresseeutil.h
  54. 1
    1
      kaddressbook/common/kaddressbook.kcfg
  55. 0
    1
      kaddressbook/csv-templates/kaddressbook.desktop
  56. 1
    3
      kaddressbook/csv-templates/yahoo.desktop
  57. 28
    0
      kaddressbook/customfieldswidget.cpp
  58. 1
    3
      kaddressbook/dcopaddressbook.desktop
  59. 35
    14
      kaddressbook/distributionlisteditor.cpp
  60. 0
    1
      kaddressbook/editors/cryptosettings.desktop
  61. 1
    4
      kaddressbook/editors/imaddresseditor.desktop
  62. 2
    0
      kaddressbook/editors/imeditorwidget.cpp
  63. 0
    1
      kaddressbook/editors/kaddressbookimprotocol.desktop
  64. 0
    1
      kaddressbook/editors/protocols/aimprotocol.desktop
  65. 0
    1
      kaddressbook/editors/protocols/gaduprotocol.desktop
  66. 0
    1
      kaddressbook/editors/protocols/groupwiseprotocol.desktop
  67. 0
    1
      kaddressbook/editors/protocols/icqprotocol.desktop
  68. 0
    1
      kaddressbook/editors/protocols/ircprotocol.desktop
  69. 0
    1
      kaddressbook/editors/protocols/jabberprotocol.desktop
  70. 0
    1
      kaddressbook/editors/protocols/meanwhileprotocol.desktop
  71. 0
    2
      kaddressbook/editors/protocols/msnprotocol.desktop
  72. 0
    1
      kaddressbook/editors/protocols/skypeprotocol.desktop
  73. 0
    1
      kaddressbook/editors/protocols/smsprotocol.desktop
  74. 0
    1
      kaddressbook/editors/protocols/yahooprotocol.desktop
  75. 2
    6
      kaddressbook/features/distributionlist.desktop
  76. 1
    9
      kaddressbook/features/distributionlistng.desktop
  77. 5
    5
      kaddressbook/features/distributionlistngwidget.cpp
  78. 2
    1
      kaddressbook/features/resourceselection.cpp
  79. 0
    2
      kaddressbook/features/resourceselection.desktop
  80. 5
    0
      kaddressbook/freebusywidget.cpp
  81. 2
    0
      kaddressbook/imagewidget.cpp
  82. 0
    1
      kaddressbook/interfaces/kaddressbook_contacteditorwidget.desktop
  83. 0
    1
      kaddressbook/interfaces/kaddressbook_extension.desktop
  84. 1
    3
      kaddressbook/interfaces/kaddressbook_xxport.desktop
  85. 129
    44
      kaddressbook/kabcore.cpp
  86. 9
    4
      kaddressbook/kabcore.h
  87. 5
    2
      kaddressbook/kabtools.cpp
  88. 0
    1
      kaddressbook/kaddressbook.desktop
  89. 0
    1
      kaddressbook/kaddressbook_view.desktop
  90. 3
    9
      kaddressbook/kcmconfigs/kabconfig.desktop
  91. 0
    3
      kaddressbook/kcmconfigs/kabcustomfields.desktop
  92. 2
    7
      kaddressbook/kcmconfigs/kabldapconfig.desktop
  93. 14
    4
      kaddressbook/ldapsearchdialog.cpp
  94. 1
    0
      kaddressbook/searchmanager.cpp
  95. 10
    0
      kaddressbook/thumbnailcreator/ldifvcardcreator.cpp
  96. 1
    0
      kaddressbook/thumbnailcreator/ldifvcardcreator.h
  97. 0
    1
      kaddressbook/thumbnailcreator/ldifvcardthumbnail.desktop
  98. 158
    24
      kaddressbook/undocmds.cpp
  99. 41
    2
      kaddressbook/undocmds.h
  100. 0
    0
      kaddressbook/viewmanager.cpp

+ 1
- 0
LAST_ENTERPRISE_SYNC View File

@@ -0,0 +1 @@
1
+Revision 1170137

+ 1
- 1
Makefile.am.in View File

@@ -23,7 +23,7 @@ COMPILE_BEFORE_certmanager = libkdenetwork libkpgp
23 23
 COMPILE_BEFORE_korganizer = libkdepim libkpimidentities libkpimexchange kgantt
24 24
 COMPILE_BEFORE_kaddressbook = libkdepim certmanager akregator
25 25
 COMPILE_BEFORE_kandy = libkdepim
26
-COMPILE_BEFORE_kmail= libkdepim libkpimidentities certmanager libkpgp libkmime indexlib
26
+COMPILE_BEFORE_kmail= libkdepim libkpimidentities certmanager libkpgp libkmime
27 27
 COMPILE_BEFORE_knode= libkdepim libkpgp libkmime
28 28
 COMPILE_BEFORE_karm = libkdepim kresources
29 29
 COMPILE_BEFORE_plugins = kmail libkdepim libkcal

+ 2147
- 0
NewsLog.txt
File diff suppressed because it is too large
View File


+ 2
- 6
akregator/src/akregator.desktop View File

@@ -28,7 +28,6 @@ GenericName[hu]=RSS hírolvasó
28 28
 GenericName[is]=RSS fréttaforrit
29 29
 GenericName[it]=Lettore Fonti RSS
30 30
 GenericName[ja]=RSS ニュースリーダー
31
-GenericName[ka]=RSS კვების წამკითხველი
32 31
 GenericName[kk]=RSS жаңалықтарын оқу
33 32
 GenericName[km]=កម្មវិធី​អាន​មតិព័ត៌មាន RSS
34 33
 GenericName[ko]=RSS 피드 리더
@@ -53,8 +52,7 @@ GenericName[sv]=Läsare av RSS-kanaler
53 52
 GenericName[ta]=RSS பீஃட் வாசிப்பான்
54 53
 GenericName[tr]=RSS Haber Kaynağı Okuyucu
55 54
 GenericName[uk]=Програма для читання подач RSS
56
-GenericName[uz]=RSS yangiliklarni oʻquvchi
57
-GenericName[uz@cyrillic]=RSS янгиликларни ўқувчи
55
+GenericName[uz]=RSS янгиликларни ўқувчи
58 56
 GenericName[zh_CN]=RSS 种子阅读器
59 57
 GenericName[zh_TW]=RSS Feed 閱讀器
60 58
 Comment=An RSS Aggregator for KDE
@@ -79,7 +77,6 @@ Comment[hu]=KDE-s hírolvasó RSS hírcsatornákhoz
79 77
 Comment[is]=RSS fréttaforrit fyrir KDE
80 78
 Comment[it]=Un concentratore KDE per RSS
81 79
 Comment[ja]=KDE 用 RSS アグリゲータ
82
-Comment[ka]= RSS აგრეგატი KDE-სთვის
83 80
 Comment[kk]=KDE-нің RSS жаңалық агрегаторы
84 81
 Comment[km]=កម្មវិធី​អាន RSS សម្រាប់ KDE
85 82
 Comment[ko]=KDE용 RSS 리더
@@ -102,8 +99,7 @@ Comment[sv]=En RSS-samlare för KDE
102 99
 Comment[ta]=கேடியிக்கான ஒரு RSS சேர்ப்பான்
103 100
 Comment[tr]=Bir KDE RSS Okuyucusu
104 101
 Comment[uk]=Агрегатор RSS для KDE
105
-Comment[uz]=KDE uchun RSS yangiliklarni oʻquvchi
106
-Comment[uz@cyrillic]=KDE учун RSS янгиликларни ўқувчи
102
+Comment[uz]=KDE учун RSS янгиликларни ўқувчи
107 103
 Comment[zh_CN]=KDE RSS 新闻收集器
108 104
 Comment[zh_TW]=KDE 的 RSS 收集器
109 105
 Terminal=false

+ 1
- 3
akregator/src/akregator_plugin.desktop View File

@@ -25,7 +25,6 @@ Comment[hu]=Akregator bővítőmodul
25 25
 Comment[is]=Íforrit fyrir Akregator
26 26
 Comment[it]=Plugin per Akregator
27 27
 Comment[ja]=Akregator 用プラグイン
28
-Comment[ka]=Akregator-ის მოდული
29 28
 Comment[kk]=Akregator-дың плагин модулі
30 29
 Comment[km]=កម្មវិធី​ជំនួយ Akregator
31 30
 Comment[ko]=Akregator 플러그인
@@ -49,8 +48,7 @@ Comment[sr@Latn]=Priključak za Akregator
49 48
 Comment[sv]=Insticksprogram för Akregator
50 49
 Comment[tr]=Akregator Eklentisi
51 50
 Comment[uk]=Втулок для Akregator
52
-Comment[uz]=Akregator uchun plagin
53
-Comment[uz@cyrillic]=Akregator учун плагин
51
+Comment[uz]=Akregator учун плагин
54 52
 Comment[zh_CN]=Akregator 插件
55 53
 Comment[zh_TW]=Akregator 外掛程式
56 54
 

+ 29
- 21
akregator/src/akregator_view.cpp View File

@@ -225,7 +225,7 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
225 225
     setFocusPolicy(TQWidget::StrongFocus);
226 226
 
227 227
     TQVBoxLayout *lt = new TQVBoxLayout( this );
228
-    
228
+
229 229
     m_horizontalSplitter = new TQSplitter(TQSplitter::Horizontal, this);
230 230
 
231 231
     m_horizontalSplitter->setOpaqueResize(true);
@@ -260,7 +260,7 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
260 260
 
261 261
     connect(m_tagNodeListView, TQT_SIGNAL(signalContextMenu(KListView*, TreeNode*, const TQPoint&)), this, TQT_SLOT(slotFeedTreeContextMenu(KListView*, TreeNode*, const TQPoint&)));
262 262
 
263
-    
263
+
264 264
     ProgressManager::self()->setFeedList(m_feedList);
265 265
 
266 266
     m_tabs = new TabWidget(m_horizontalSplitter);
@@ -321,8 +321,12 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
321 321
     connectFrame(m_mainFrame);
322 322
     m_tabs->addFrame(m_mainFrame);
323 323
 
324
-    m_horizontalSplitter->setSizes( Settings::splitter1Sizes() );
325
-    m_articleSplitter->setSizes( Settings::splitter2Sizes() );
324
+    const TQValueList<int> sp1sizes = Settings::splitter1Sizes();
325
+    if ( sp1sizes.count() >= m_horizontalSplitter->sizes().count() )
326
+        m_horizontalSplitter->setSizes( sp1sizes );
327
+    const TQValueList<int> sp2sizes = Settings::splitter2Sizes();
328
+    if ( sp2sizes.count() >= m_articleSplitter->sizes().count() )
329
+        m_articleSplitter->setSizes( sp2sizes );
326 330
 
327 331
     KConfig *conf = Settings::self()->config();
328 332
     conf->setGroup("General");
@@ -374,7 +378,7 @@ void View::slotSettingsChanged()
374 378
 {
375 379
     // if tagging is hidden, show only feed list
376 380
     m_listTabWidget->setViewMode(Settings::showTaggingGUI() ? ListTabWidget::verticalTabs : ListTabWidget::single);
377
-    
381
+
378 382
 }
379 383
 
380 384
 void View::slotOnShutdown()
@@ -406,8 +410,12 @@ void View::slotOnShutdown()
406 410
 
407 411
 void View::saveSettings()
408 412
 {
409
-    Settings::setSplitter1Sizes( m_horizontalSplitter->sizes() );
410
-    Settings::setSplitter2Sizes( m_articleSplitter->sizes() );
413
+    const TQValueList<int> spl1 = m_horizontalSplitter->sizes();
414
+    if ( spl1.contains( 0 ) == 0 )
415
+        Settings::setSplitter1Sizes( spl1 );
416
+    const TQValueList<int> spl2 = m_articleSplitter->sizes();
417
+    if ( spl2.contains( 0 ) == 0 )
418
+        Settings::setSplitter2Sizes( spl2 );
411 419
     Settings::setViewMode( m_viewMode );
412 420
     Settings::writeConfig();
413 421
 }
@@ -415,7 +423,7 @@ void View::saveSettings()
415 423
 void View::slotOpenNewTab(const KURL& url, bool background)
416 424
 {
417 425
     PageViewer* page = new PageViewer(this, "page");
418
-    
426
+
419 427
     connect( m_part, TQT_SIGNAL(signalSettingsChanged()), page, TQT_SLOT(slotPaletteOrFontChanged()));
420 428
 
421 429
     connect( page, TQT_SIGNAL(setTabIcon(const TQPixmap&)),
@@ -822,7 +830,7 @@ void View::slotOpenURL(const KURL& url, Viewer* currentViewer, BrowserRun::Openi
822 830
     else
823 831
     {
824 832
          KParts::URLArgs args = currentViewer ? currentViewer->browserExtension()->urlArgs() : KParts::URLArgs();
825
-            
833
+
826 834
         BrowserRun* r = new BrowserRun(this, currentViewer, url, args, mode);
827 835
         connect(r, TQT_SIGNAL(signalOpenInViewer(const KURL&, Akregator::Viewer*, Akregator::BrowserRun::OpeningMode)),
828 836
             this, TQT_SLOT(slotOpenURLReply(const KURL&, Akregator::Viewer*, Akregator::BrowserRun::OpeningMode)));
@@ -832,7 +840,7 @@ void View::slotOpenURL(const KURL& url, Viewer* currentViewer, BrowserRun::Openi
832 840
 //TODO: KDE4 remove this ugly ugly hack
833 841
 void View::slotUrlClickedInViewer(const KURL& url, Viewer* viewer, bool newTab, bool background)
834 842
 {
835
-    
843
+
836 844
     if (!newTab)
837 845
     {
838 846
         slotOpenURL(url, viewer, BrowserRun::CURRENT_TAB);
@@ -983,7 +991,7 @@ void View::slotNextUnreadArticle()
983 991
 {
984 992
     if (m_viewMode == CombinedView)
985 993
         m_listTabWidget->activeView()->slotNextUnreadFeed();
986
-    
994
+
987 995
     TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
988 996
     if (sel && sel->unread() > 0)
989 997
         m_articleList->slotNextUnreadArticle();
@@ -995,7 +1003,7 @@ void View::slotPrevUnreadArticle()
995 1003
 {
996 1004
     if (m_viewMode == CombinedView)
997 1005
         m_listTabWidget->activeView()->slotPrevUnreadFeed();
998
-    
1006
+
999 1007
     TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
1000 1008
     if (sel && sel->unread() > 0)
1001 1009
         m_articleList->slotPreviousUnreadArticle();
@@ -1211,8 +1219,8 @@ void View::slotOpenCurrentArticle()
1211 1219
         link = article.link();
1212 1220
     else if (article.guidIsPermaLink())
1213 1221
         link = KURL(article.guid());
1214
-    
1215
-    if (link.isValid()) 
1222
+
1223
+    if (link.isValid())
1216 1224
     {
1217 1225
         slotOpenURL(link, 0L, BrowserRun::NEW_TAB_FOREGROUND);
1218 1226
     }
@@ -1236,8 +1244,8 @@ void View::slotOpenCurrentArticleBackgroundTab()
1236 1244
         link = article.link();
1237 1245
     else if (article.guidIsPermaLink())
1238 1246
         link = KURL(article.guid());
1239
-    
1240
-    if (link.isValid()) 
1247
+
1248
+    if (link.isValid())
1241 1249
     {
1242 1250
         slotOpenURL(link, 0L, BrowserRun::NEW_TAB_BACKGROUND);
1243 1251
     }
@@ -1307,7 +1315,7 @@ void View::slotArticleDelete()
1307 1315
             msg = i18n("<qt>Are you sure you want to delete article <b>%1</b>?</qt>").arg(TQStyleSheet::escape(articles.first().title()));
1308 1316
             break;
1309 1317
         default:
1310
-            msg = i18n("<qt>Are you sure you want to delete the selected article?</qt>", 
1318
+            msg = i18n("<qt>Are you sure you want to delete the selected article?</qt>",
1311 1319
 		"<qt>Are you sure you want to delete the %n selected articles?</qt>",
1312 1320
 		articles.count());
1313 1321
     }
@@ -1386,7 +1394,7 @@ void View::slotTextToSpeechRequest()
1386 1394
     else
1387 1395
     {
1388 1396
         TQString selectedText = static_cast<PageViewer *>(m_currentFrame->part())->selectedText();
1389
-        
1397
+
1390 1398
         if (!selectedText.isEmpty())
1391 1399
             SpeechClient::self()->slotSpeak(selectedText, "en");
1392 1400
     }
@@ -1439,7 +1447,7 @@ void View::slotMouseOverInfo(const KFileItem *kifi)
1439 1447
 
1440 1448
 void View::readProperties(KConfig* config)
1441 1449
 {
1442
-    
1450
+
1443 1451
     if (!Settings::resetQuickFilterOnNodeChange())
1444 1452
     {
1445 1453
         m_searchBar->slotSetText(config->readEntry("searchLine"));
@@ -1447,7 +1455,7 @@ void View::readProperties(KConfig* config)
1447 1455
         if (statusfilter != -1)
1448 1456
             m_searchBar->slotSetStatus(statusfilter);
1449 1457
     }
1450
-    
1458
+
1451 1459
     int selectedID = config->readNumEntry("selectedNodeID", -1);
1452 1460
     if (selectedID != -1)
1453 1461
     {
@@ -1471,7 +1479,7 @@ void View::saveProperties(KConfig* config)
1471 1479
     // save filter settings
1472 1480
     config->writeEntry("searchLine", m_searchBar->text());
1473 1481
     config->writeEntry("searchCombo", m_searchBar->status());
1474
-    
1482
+
1475 1483
     TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
1476 1484
 
1477 1485
     if (sel)

+ 3
- 10
akregator/src/eventsrc View File

@@ -29,7 +29,6 @@ Name[hu]=Hírforrás felvéve
29 29
 Name[is]=Straum bætt við
30 30
 Name[it]=Aggiunta fonte
31 31
 Name[ja]=フィード追加
32
-Name[ka]=დამატებულია კვება
33 32
 Name[kk]=Қор қосылды
34 33
 Name[km]=បាន​បន្ថែម​មតិព័ត៌មាន
35 34
 Name[ko]=피드 추가됨
@@ -53,8 +52,7 @@ Name[sv]=Kanal tillagd
53 52
 Name[ta]=பீஃட் சேர்க்கப்பட்டது
54 53
 Name[tr]=Haber kaynağı eklendi
55 54
 Name[uk]=Подачу додано
56
-Name[uz]=Yangiliklar tasmasi qoʻshildi
57
-Name[uz@cyrillic]=Янгиликлар тасмаси қўшилди
55
+Name[uz]=Янгиликлар тасмаси қўшилди
58 56
 Name[zh_CN]=添加了新闻源
59 57
 Name[zh_TW]=已加入 Feed
60 58
 Comment=A new feed was remotely added to Akregator
@@ -78,7 +76,6 @@ Comment[hu]=Egy hírforrást távolról felvettek az Akregatorba
78 76
 Comment[is]=Nýjum straum var bætt við Akregator
79 77
 Comment[it]=Una nuova fonte è stata aggiunta ad Akregator da remoto
80 78
 Comment[ja]=新規フィードがリモートで Akregator に追加されました
81
-Comment[ka]=Akregator-ის სიას დისტანციურად ახალი კვება დაემატა
82 79
 Comment[kk]=Akregator-ға қашықтан жаңа қор қосылды
83 80
 Comment[km]=បាន​បន្ថែម​មតិព័ត៌មាន​ថ្មី​មួយ​ពី​ចម្ងាយ​ទៅ Akregator
84 81
 Comment[ko]=Akregator에 피드가 원격으로 추가됨
@@ -102,8 +99,7 @@ Comment[sv]=En ny kanal har lagts till i aKregator utifrån
102 99
 Comment[ta]=Akregatorக்கு ஒரு புதிய உள்ளீடு சேர்க்கப்பட்டது
103 100
 Comment[tr]=Akregator'a yeni bir haber kaynağı eklendi
104 101
 Comment[uk]=Нову подачу було віддалено додано до Akregator
105
-Comment[uz]=Akregator dasturiga yangi yangiliklar tasmasi qoʻshildi
106
-Comment[uz@cyrillic]=Akregator дастурига янги янгиликлар тасмаси қўшилди
102
+Comment[uz]=Akregator дастурига янги янгиликлар тасмаси қўшилди
107 103
 Comment[zh_CN]=新闻源远程添加进了 Akregator
108 104
 Comment[zh_TW]=已從遠端加入新的 feed 到 Akregator
109 105
 default_presentation=4
@@ -135,7 +131,6 @@ Name[hu]=Hírekk
135 131
 Name[is]=Nýjar greinar
136 132
 Name[it]=Nuovi articoli
137 133
 Name[ja]=新規記事
138
-Name[ka]=ახალი სტატიები
139 134
 Name[kk]=Жаңа мақалалар
140 135
 Name[km]=អត្ថបទ​ថ្មី
141 136
 Name[ko]=새 글
@@ -160,8 +155,7 @@ Name[sv]=Nya artiklar
160 155
 Name[ta]= புதிய செய்திகள்
161 156
 Name[tr]=Yeni Haberler
162 157
 Name[uk]=Нові статті
163
-Name[uz]=Yangi maqolalar
164
-Name[uz@cyrillic]=Янги мақолалар
158
+Name[uz]=Янги мақолалар
165 159
 Name[zh_CN]=新闻文章
166 160
 Name[zh_TW]=新文章
167 161
 Comment=New articles were fetched
@@ -188,7 +182,6 @@ Comment[hu]=Új hírek lettek letöltve
188 182
 Comment[is]=Nýjar greinar voru sóttar
189 183
 Comment[it]=I nuovi articoli sono stati recuperati
190 184
 Comment[ja]=新規記事を取得しました
191
-Comment[ka]=მიღებულია ახალი სტატიები
192 185
 Comment[kk]=Жаңа мақалалар қабылданды
193 186
 Comment[km]=បាន​ប្រមូល​អត្ថបទ​ថ្មី
194 187
 Comment[ko]=새 글을 가져옴

+ 1
- 4
akregator/src/mk4storage/akregator_mk4storage_plugin.desktop View File

@@ -21,7 +21,6 @@ Name[hu]=Metakit tároló
21 21
 Name[is]=Metakit geymslu bakendi
22 22
 Name[it]=Backend archiviazione metakit
23 23
 Name[ja]=メタキットストレージバックエンド
24
-Name[ka]=Metakit  მეხსიერების ბუფერი
25 24
 Name[kk]=Metakit архивтеу бағдарламасы
26 25
 Name[km]=កម្មវិធី​ខាង​ក្រោយ​សម្រាប់​រក្សាទុក (Metakit)
27 26
 Name[ko]=Metakit 저장소 백엔드
@@ -69,7 +68,6 @@ Comment[hu]=Akregator bővítőmodul
69 68
 Comment[is]=Íforrit fyrir Akregator
70 69
 Comment[it]=Plugin per Akregator
71 70
 Comment[ja]=Akregator 用プラグイン
72
-Comment[ka]=Akregator-ის მოდული
73 71
 Comment[kk]=Akregator-дың плагин модулі
74 72
 Comment[km]=កម្មវិធី​ជំនួយ Akregator
75 73
 Comment[ko]=Akregator 플러그인
@@ -93,8 +91,7 @@ Comment[sr@Latn]=Priključak za Akregator
93 91
 Comment[sv]=Insticksprogram för Akregator
94 92
 Comment[tr]=Akregator Eklentisi
95 93
 Comment[uk]=Втулок для Akregator
96
-Comment[uz]=Akregator uchun plagin
97
-Comment[uz@cyrillic]=Akregator учун плагин
94
+Comment[uz]=Akregator учун плагин
98 95
 Comment[zh_CN]=Akregator 插件
99 96
 Comment[zh_TW]=Akregator 外掛程式
100 97
 ServiceTypes=Akregator/Plugin

+ 6
- 3
certmanager/certmanager.cpp View File

@@ -889,7 +889,8 @@ void CertManager::slotDirmngrExited() {
889 889
    This slot will import CRLs from a file.
890 890
 */
891 891
 void CertManager::importCRLFromFile() {
892
-  TQString filter = TQString("*.crl *.arl *-crl.der *-arl.der|") + i18n("Certificate Revocation List (*.crl *.arl *-crl.der *-arl.der)");
892
+  // loadcrl can only work with DER encoded files (verified with dirmngr 1.0.3)
893
+  TQString filter = TQString("*.crl *.arl *-crl.der *-arl.der|") + i18n("Certificate Revocation List, DER encoded (*.crl *.arl *-crl.der *-arl.der)");
893 894
   KURL url = KFileDialog::getOpenURL( TQString::null,
894 895
                                       filter,
895 896
                                       this,
@@ -1277,9 +1278,11 @@ void CertManager::slotCertificateExportResult( const GpgME::Error & err, const T
1277 1278
 
1278 1279
 void CertManager::slotExportSecretKey() {
1279 1280
   Kleo::KeySelectionDialog dlg( i18n("Secret Key Export"),
1280
-				i18n("Select the secret key to export "
1281
+				"<qt>" +
1282
+                                i18n("Select the secret key to export "
1281 1283
 				     "(<b>Warning: The PKCS#12 format is insecure; "
1282
-				     "exporting secret keys is discouraged</b>):"),
1284
+				     "exporting secret keys is discouraged</b>):") +
1285
+                                "</qt>",
1283 1286
 				std::vector<GpgME::Key>(),
1284 1287
 				Kleo::KeySelectionDialog::SecretKeys|Kleo::KeySelectionDialog::SMIMEKeys,
1285 1288
 				false /* no multiple selection */,

+ 1
- 5
certmanager/conf/kleopatra_config_appear.desktop View File

@@ -40,7 +40,6 @@ Name[hu]=Megjelenés
40 40
 Name[is]=Útlit
41 41
 Name[it]=Aspetto
42 42
 Name[ja]=外観
43
-Name[ka]=იერსახე
44 43
 Name[kk]=Сыртқы көрінісі
45 44
 Name[km]=រូបរាង
46 45
 Name[ko]=모양
@@ -67,8 +66,7 @@ Name[ta]=தோற்றம்
67 66
 Name[tg]=Намуди зоҳирӣ
68 67
 Name[tr]=Görünüm
69 68
 Name[uk]=Вигляд
70
-Name[uz]=Koʻrinishi
71
-Name[uz@cyrillic]=Кўриниши
69
+Name[uz]=Кўриниши
72 70
 Name[zh_CN]=外观
73 71
 Comment=Colors & Fonts Configuration
74 72
 Comment[af]=Kleur en skrif tipe opstelling
@@ -97,7 +95,6 @@ Comment[hu]=A színek és betűtípusok beállítása
97 95
 Comment[is]=Stilling lita & leturgerða
98 96
 Comment[it]=Configurazione tipi di carattere e colori
99 97
 Comment[ja]=色とフォントの設定
100
-Comment[ka]=ფერთა და შრიფტთა კონფიგურაცია
101 98
 Comment[kk]=Түс & Қаріп параметрлері
102 99
 Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ពណ៌ & ពុម្ពអក្សរ
103 100
 Comment[ko]=색과 글꼴 설정
@@ -153,7 +150,6 @@ Keywords[hu]=szín,betűtípus,beállítások
153 150
 Keywords[is]=litir,letur, stillingar
154 151
 Keywords[it]=colori, font, caratteri, configurazione
155 152
 Keywords[ja]=色,フォント,設定
156
-Keywords[ka]=ფერები,შრიფტები, კონფიგურაცია
157 153
 Keywords[km]=ពណ៌,ពុម្ពអក្សរ,ការ​កំណត់​រចនាសម្ព័ន្ធ
158 154
 Keywords[ko]=색,글꼴,설정
159 155
 Keywords[lt]=color,font, configuration, spalvų, šriftų konfigūravimas

+ 4
- 7
certmanager/conf/kleopatra_config_dirserv.desktop View File

@@ -27,7 +27,7 @@ Name[et]=Kataloogiteenused
27 27
 Name[eu]=Direktorio zerbitzuak
28 28
 Name[fa]=خدمات فهرست راهنما
29 29
 Name[fi]=Hakemistopalvelut
30
-Name[fr]=Services d'annuaire
30
+Name[fr]=Services de répertoires
31 31
 Name[fy]=Maptsjinsten
32 32
 Name[ga]=Seirbhísí Eolaire
33 33
 Name[gl]=Servicios de Directorio
@@ -36,7 +36,6 @@ Name[hu]=Címtárszolgáltatások
36 36
 Name[is]=Nafnaþjónustur
37 37
 Name[it]=Servizi Directory
38 38
 Name[ja]=ディレクトリサービス
39
-Name[ka]=საცნობარო მომსახურება
40 39
 Name[kk]=Каталог қызметтері
41 40
 Name[km]=សេវា​ថត
42 41
 Name[ko]=디렉터리 서비스
@@ -80,7 +79,7 @@ Comment[et]=LDAP kataloogiteenuste seadistused
80 79
 Comment[eu]=LDAP direktorio zerbitzuen konfigurazioa
81 80
 Comment[fa]=پیکربندی خدمات فهرست راهنمای LDAP
82 81
 Comment[fi]=Hakemistopalveluiden asetukset
83
-Comment[fr]=Configuration des services d'annuaire LDAP
82
+Comment[fr]=Configuration des répertoires LDAP
84 83
 Comment[fy]=Konfiguraasje foar LDAP-tsjinsten
85 84
 Comment[gl]=Configuración dos servicios de directorio LDAP
86 85
 Comment[he]=תצורה של שירותי ספרייה עבור LDAP
@@ -88,7 +87,6 @@ Comment[hu]=Az LDAP címtárszolgáltatások beállításai
88 87
 Comment[is]=Stillingar LDAP uppflettingaþjónustunnar
89 88
 Comment[it]=Configurazione servizi LDAP
90 89
 Comment[ja]=LDAP ディレクトリサービスの設定
91
-Comment[ka]=LDAP საცნობარო მომსახურების კონფიგურაცია
92 90
 Comment[kk]=LDAP каталог қызметтер параметрлері
93 91
 Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​របស់​សេវា​ថត LDAP
94 92
 Comment[ko]=LDAP 디렉터리 서비스 설정
@@ -133,7 +131,7 @@ Keywords[et]=ldap,kataloog,teenused
133 131
 Keywords[eu]=Idap, direktorio, zerbitzuak
134 132
 Keywords[fa]=ldap، فهرست راهنما، خدمات
135 133
 Keywords[fi]=ldap,hakemisto,palvelut
136
-Keywords[fr]=ldap,annuaire,annuaires,service,services
134
+Keywords[fr]=ldap,dossier,dossiers,service,services
137 135
 Keywords[fy]=ldap,directory,services,triemtafel,tsjinsten
138 136
 Keywords[ga]=ldap,eolaire,seirbhísí
139 137
 Keywords[gl]=ldap,directorio,servicios
@@ -142,7 +140,6 @@ Keywords[hu]=ldap,címtár,szolgáltatások
142 140
 Keywords[is]=ldap,directory,services,nafnaþjónusta
143 141
 Keywords[it]=ldap, servizi, directory
144 142
 Keywords[ja]=ldap,ディレクトリ,サービス
145
-Keywords[ka]=ldap,ცნობარი,მომსახურება
146 143
 Keywords[km]=ldap,ថត,សេវា
147 144
 Keywords[ko]=ldap,디렉터리,서비스
148 145
 Keywords[lt]=ldap,directory,services,aplankai,tarnybos
@@ -152,7 +149,7 @@ Keywords[nb]=ldap,mappe,tjenester
152 149
 Keywords[nds]=LDAP,Verteken,Deensten
153 150
 Keywords[ne]=ldap,डाइरेक्टरी,कार्य
154 151
 Keywords[nn]=ldap,katalog,tenester
155
-Keywords[pl]=katalog,usługi katalogowe,usługi,LDAP
152
+Keywords[pl]=ldap,katalog,usługi katalogowe,usługi,LDAP
156 153
 Keywords[pt]=ldap,directório,serviços
157 154
 Keywords[pt_BR]=ldap,diretório,serviços
158 155
 Keywords[ru]=LDAP,службы каталогов

+ 0
- 3
certmanager/conf/kleopatra_config_dnorder.desktop View File

@@ -34,7 +34,6 @@ Name[hu]=DN-attribútumsorrend
34 34
 Name[is]=DN eiginleikaröðun
35 35
 Name[it]=Attributi DN, ordine
36 36
 Name[ja]=DN 属性順位
37
-Name[ka]=DN ატრიბუტთა რიგი
38 37
 Name[kk]=DN-атрибуттер реті
39 38
 Name[km]=លំដាប់​គុណលក្ខណៈ DN
40 39
 Name[ko]=DN 분배 순서
@@ -85,7 +84,6 @@ Comment[hu]=A DN-attribútumok megjelenítési sorrendjének beállítása
85 84
 Comment[is]=Stilla röð DN eiginleikanna
86 85
 Comment[it]=Configura l'ordine in cui sono mostrati gli attributi DN
87 86
 Comment[ja]=DN 属性を表示する順位を設定
88
-Comment[ka]=DN ატრიბუტთა ჩვენების რიგის კონფიგურაცია
89 87
 Comment[kk]=DN атрибуттерді көрсету ретін баптау
90 88
 Comment[km]=កំណត់​រចនាសម្ព័ន្ធ​លំដាប់ ដែល​ត្រូវ​បង្ហាញ​គុណលក្ខណៈ DN
91 89
 Comment[lt]=Konfigūruoti DN savybių rodymo tvarką
@@ -137,7 +135,6 @@ Keywords[hu]=DN,sorrend,RDN,attribútum
137 135
 Keywords[is]=DN,röð,order,RDN,attribute
138 136
 Keywords[it]=DN,ordine,RDN,attributi
139 137
 Keywords[ja]=DN,順位,RDN,属性
140
-Keywords[ka]=DN,რიგი,RDN,ატრიბუტი
141 138
 Keywords[km]=DN,លំដាប់,RDN,គុណលក្ខណៈ
142 139
 Keywords[lt]=DN,order,RDN,attribute,savybė,tvarka
143 140
 Keywords[mk]=DN,order,RDN,attribute,редослед,атрибут

+ 14
- 2
certmanager/lib/backends/qgpgme/qgpgmecryptoconfig.cpp View File

@@ -447,6 +447,13 @@ TQVariant QGpgMECryptoConfigEntry::stringToValue( const TQString& str, bool unes
447 447
   bool isString = isStringType();
448 448
 
449 449
   if ( isList() ) {
450
+    if ( argType() == ArgType_None ) {
451
+        bool ok = true;
452
+        const TQVariant v = str.isEmpty() ? 0U : str.toUInt( &ok ) ;
453
+        if ( !ok )
454
+            kdWarning(5150) << "list-of-none should have an unsigned int as value:" << str << endl;
455
+        return v;
456
+    }
450 457
     TQValueList<TQVariant> lst;
451 458
     TQStringList items = TQStringList::split( ',', str );
452 459
     for( TQStringList::const_iterator valit = items.begin(); valit != items.end(); ++valit ) {
@@ -657,7 +664,10 @@ void QGpgMECryptoConfigEntry::resetToDefault()
657 664
   if ( mFlags & GPGCONF_FLAG_DEFAULT )
658 665
     mValue = mDefaultValue;
659 666
   else if ( mArgType == ArgType_None )
660
-    mValue = false;
667
+    if ( isList() )
668
+      mValue = 0U;
669
+    else
670
+      mValue = false;
661 671
 }
662 672
 
663 673
 void QGpgMECryptoConfigEntry::setBoolValue( bool b )
@@ -715,7 +725,9 @@ void QGpgMECryptoConfigEntry::setNumberOfTimesSet( unsigned int i )
715 725
 {
716 726
   Q_ASSERT( mArgType == ArgType_None );
717 727
   Q_ASSERT( isList() );
718
-  setUIntValue( i );
728
+  mValue = i;
729
+  mSet = i > 0;
730
+  mDirty = true;
719 731
 }
720 732
 
721 733
 void QGpgMECryptoConfigEntry::setStringValueList( const TQStringList& lst )

+ 4
- 1
certmanager/lib/backends/qgpgme/qgpgmedecryptjob.cpp View File

@@ -85,7 +85,10 @@ GpgME::DecryptionResult Kleo::QGpgMEDecryptJob::exec( const TQByteArray & cipher
85 85
 }
86 86
 
87 87
 void Kleo::QGpgMEDecryptJob::doOperationDoneEvent( const GpgME::Error & ) {
88
-  emit result( mCtx->decryptionResult(), mOutDataDataProvider->data() );
88
+  const GpgME::DecryptionResult res = mCtx->decrypt( *mInData, *mOutData );
89
+  const TQByteArray plainText = mOutDataDataProvider->data();
90
+  getAuditLog();
91
+  emit result( res, plainText );
89 92
 }
90 93
 
91 94
 #include "qgpgmedecryptjob.moc"

+ 5
- 3
certmanager/lib/backends/qgpgme/qgpgmedecryptverifyjob.cpp View File

@@ -87,9 +87,11 @@ Kleo::QGpgMEDecryptVerifyJob::exec( const TQByteArray & cipherText, TQByteArray
87 87
 }
88 88
 
89 89
 void Kleo::QGpgMEDecryptVerifyJob::doOperationDoneEvent( const GpgME::Error & ) {
90
-  emit result( mCtx->decryptionResult(),
91
-	       mCtx->verificationResult(),
92
-	       mOutDataDataProvider->data() );
90
+  const GpgME::DecryptionResult dr = mCtx->decryptionResult();
91
+  const GpgME::VerificationResult vr = mCtx->verificationResult();
92
+  const TQByteArray plainText = mOutDataDataProvider->data();
93
+  getAuditLog();
94
+  emit result( dr, vr, plainText );
93 95
 }
94 96
 
95 97
 #include "qgpgmedecryptverifyjob.moc"

+ 1
- 0
certmanager/lib/backends/qgpgme/qgpgmedeletejob.cpp View File

@@ -64,6 +64,7 @@ GpgME::Error Kleo::QGpgMEDeleteJob::start( const GpgME::Key & key, bool allowSec
64 64
 }
65 65
 
66 66
 void Kleo::QGpgMEDeleteJob::doOperationDoneEvent( const GpgME::Error & error ) {
67
+  getAuditLog();
67 68
   emit result( error );
68 69
 }
69 70
 

+ 3
- 1
certmanager/lib/backends/qgpgme/qgpgmedownloadjob.cpp View File

@@ -72,7 +72,9 @@ GpgME::Error Kleo::QGpgMEDownloadJob::start( const TQStringList & pats ) {
72 72
 }
73 73
 
74 74
 void Kleo::QGpgMEDownloadJob::doOperationDoneEvent( const GpgME::Error & error ) {
75
-  emit result( error, mOutDataDataProvider->data() );
75
+  const TQByteArray data = mOutDataDataProvider->data();
76
+  getAuditLog();
77
+  emit result( error, data );
76 78
 }
77 79
 
78 80
 #include "qgpgmedownloadjob.moc"

+ 4
- 1
certmanager/lib/backends/qgpgme/qgpgmeencryptjob.cpp View File

@@ -97,7 +97,10 @@ GpgME::EncryptionResult Kleo::QGpgMEEncryptJob::exec( const std::vector<GpgME::K
97 97
 }
98 98
 
99 99
 void Kleo::QGpgMEEncryptJob::doOperationDoneEvent( const GpgME::Error & ) {
100
-  emit result( mResult = mCtx->encryptionResult(), mOutDataDataProvider->data() );
100
+  mResult = mCtx->encryptionResult();
101
+  const TQByteArray ciphertext = mOutDataDataProvider->data();
102
+  getAuditLog();
103
+  emit result( mResult, ciphertext );
101 104
 }
102 105
 
103 106
 void Kleo::QGpgMEEncryptJob::showErrorDialog( TQWidget * parent, const TQString & caption ) const {

+ 3
- 1
certmanager/lib/backends/qgpgme/qgpgmeexportjob.cpp View File

@@ -72,7 +72,9 @@ GpgME::Error Kleo::QGpgMEExportJob::start( const TQStringList & pats ) {
72 72
 }
73 73
 
74 74
 void Kleo::QGpgMEExportJob::doOperationDoneEvent( const GpgME::Error & error ) {
75
-  emit result( error, mOutDataDataProvider->data() );
75
+  const TQByteArray data = mOutDataDataProvider->data();
76
+  getAuditLog();
77
+  emit result( error, data );
76 78
 }
77 79
 
78 80
 #include "qgpgmeexportjob.moc"

+ 6
- 2
certmanager/lib/backends/qgpgme/qgpgmeimportjob.cpp View File

@@ -75,11 +75,15 @@ GpgME::Error Kleo::QGpgMEImportJob::start( const TQByteArray & keyData ) {
75 75
 
76 76
 GpgME::ImportResult Kleo::QGpgMEImportJob::exec( const TQByteArray & keyData ) {
77 77
   setup( keyData );
78
-  return mCtx->importKeys( *mInData );
78
+  const GpgME::ImportResult res = mCtx->importKeys( *mInData );
79
+  getAuditLog();
80
+  return res;
79 81
 }
80 82
 
81 83
 void Kleo::QGpgMEImportJob::doOperationDoneEvent( const GpgME::Error & ) {
82
-  emit result( mCtx->importResult() );
84
+  const GpgME::ImportResult res = mCtx->importResult();
85
+  getAuditLog();
86
+  emit result( res );
83 87
 }
84 88
 
85 89
 

+ 8
- 8
certmanager/lib/backends/qgpgme/qgpgmejob.cpp View File

@@ -236,21 +236,19 @@ void Kleo::QGpgMEJob::createOutData() {
236 236
 
237 237
 static const unsigned int GetAuditLogFlags = GpgME::Context::AuditLogWithHelp|GpgME::Context::HtmlAuditLog;
238 238
 
239
-static TQString audit_log_as_html( GpgME::Context * ctx ) {
240
-    if ( !ctx )
241
-        return TQString();
239
+static TQString audit_log_as_html( GpgME::Context * ctx, GpgME::Error & err ) {
240
+    assert( ctx );
242 241
     QGpgME::QByteArrayDataProvider dp;
243 242
     GpgME::Data data( &dp );
244 243
     assert( !data.isNull() );
245
-    if ( const GpgME::Error err = ctx->getAuditLog( data, GetAuditLogFlags ) )
244
+    if ( ( err = ctx->getAuditLog( data, GetAuditLogFlags ) ) )
246 245
         return TQString();
247
-    else
248
-        return TQString::fromUtf8( dp.data().data() );
246
+    const TQByteArray ba = dp.data();
247
+    return TQString::fromUtf8( ba.data(), ba.size() );
249 248
 }
250 249
 
251 250
 void Kleo::QGpgMEJob::doSlotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & e ) {
252 251
   if ( context == mCtx ) {
253
-    getAuditLog();
254 252
     doEmitDoneSignal();
255 253
     doOperationDoneEvent( e );
256 254
     mThis->deleteLater();
@@ -258,7 +256,9 @@ void Kleo::QGpgMEJob::doSlotOperationDoneEvent( GpgME::Context * context, const
258 256
 }
259 257
 
260 258
 void Kleo::QGpgMEJob::getAuditLog() {
261
-    mAuditLogAsHtml = audit_log_as_html( mCtx );
259
+    if ( !mCtx )
260
+        return;
261
+    mAuditLogAsHtml = audit_log_as_html( mCtx, mAuditLogError );
262 262
 }
263 263
 
264 264
 void Kleo::QGpgMEJob::doSlotCancel() {

+ 4
- 3
certmanager/lib/backends/qgpgme/qgpgmejob.h View File

@@ -37,6 +37,7 @@
37 37
 #include <gpgmepp/interfaces/passphraseprovider.h>
38 38
 
39 39
 #include <gpgmepp/key.h>
40
+#include <gpgmepp/context.h>
40 41
 
41 42
 #include <tqcstring.h>
42 43
 #include <tqstring.h>
@@ -45,8 +46,6 @@
45 46
 #include <kdepimmacros.h>
46 47
 
47 48
 namespace GpgME {
48
-  class Error;
49
-  class Context;
50 49
   class Data;
51 50
 }
52 51
 
@@ -120,6 +119,7 @@ namespace Kleo {
120 119
     virtual void doEmitDoneSignal() = 0;
121 120
     void doSlotCancel();
122 121
     TQString auditLogAsHtml() const { return mAuditLogAsHtml; }
122
+    GpgME::Error auditLogError() const { return mAuditLogError; }
123 123
 
124 124
   private:
125 125
     /*! \reimp from GpgME::ProgressProvider */
@@ -146,6 +146,7 @@ namespace Kleo {
146 146
     unsigned int mNumPatterns;
147 147
     unsigned int mChunkSize;
148 148
     unsigned int mPatternStartIndex, mPatternEndIndex;
149
+    GpgME::Error mAuditLogError;
149 150
     TQString mAuditLogAsHtml;
150 151
   };
151 152
 
@@ -154,7 +155,7 @@ namespace Kleo {
154 155
 #define make_slot_cancel private: void slotCancel() { QGpgMEJob::doSlotCancel(); }
155 156
 #define make_progress_emitter private: void doEmitProgressSignal( const TQString & what, int cur, int tot ) { emit progress( what, cur, tot ); }
156 157
 #define make_done_emitter private: void doEmitDoneSignal() { emit done(); }
157
-#define make_auditLogAsHtml private: TQString auditLogAsHtml() const { return QGpgMEJob::auditLogAsHtml(); }
158
+#define make_auditLogAsHtml private: TQString auditLogAsHtml() const { return QGpgMEJob::auditLogAsHtml(); } GpgME::Error auditLogError() const { return QGpgMEJob::auditLogError(); }
158 159
 #define QGPGME_JOB make_slot_cancel make_progress_emitter make_done_emitter make_auditLogAsHtml
159 160
 
160 161
 #endif // __KLEO_QGPGMEJOB_H__

+ 4
- 1
certmanager/lib/backends/qgpgme/qgpgmekeygenerationjob.cpp View File

@@ -80,7 +80,10 @@ GpgME::Error Kleo::QGpgMEKeyGenerationJob::start( const TQString & parameters )
80 80
 }
81 81
 
82 82
 void Kleo::QGpgMEKeyGenerationJob::doOperationDoneEvent( const GpgME::Error & ) {
83
-  emit result( mCtx->keyGenerationResult(), mPubKeyDataProvider ? mPubKeyDataProvider->data() : TQByteArray() );
83
+    const GpgME::KeyGenerationResult res = mCtx->keyGenerationResult();
84
+    const TQByteArray data = mPubKeyDataProvider ? mPubKeyDataProvider->data() : TQByteArray() ;
85
+    getAuditLog();
86
+    emit result( res, data );
84 87
 }
85 88
 
86 89
 #include "qgpgmekeygenerationjob.moc"

+ 16
- 0
certmanager/lib/backends/qgpgme/qgpgmekeylistjob.cpp View File

@@ -48,6 +48,7 @@
48 48
 #include <kdebug.h>
49 49
 
50 50
 #include <tqstringlist.h>
51
+#include <tqtimer.h>
51 52
 
52 53
 #include <algorithm>
53 54
 
@@ -97,6 +98,10 @@ GpgME::Error Kleo::QGpgMEKeyListJob::start( const TQStringList & pats, bool secr
97 98
 	kdDebug(5150) << "QGpgMEKeyListJob::start(): retrying keylisting with chunksize " << chunkSize() << endl;
98 99
 	continue;
99 100
       }
101
+    } else if ( err.code() == GPG_ERR_EOF ) {
102
+        kdDebug(5150) << "QGpgMEKeyListJob::start(): early end of keylisting, trying to fake an empty result" << endl;
103
+        TQTimer::singleShot( 10, this, TQT_SLOT(slotFakeOperationDoneEvent()) );
104
+        return GpgME::Error();
100 105
     }
101 106
     deleteLater();
102 107
     mResult = GpgME::KeyListResult( 0, err );
@@ -158,6 +163,17 @@ void Kleo::QGpgMEKeyListJob::slotNextKeyEvent( GpgME::Context * context, const G
158 163
     emit nextKey( key );
159 164
 }
160 165
 
166
+void Kleo::QGpgMEKeyListJob::slotFakeOperationDoneEvent() {
167
+  const GpgME::KeyListResult res = mCtx->keyListResult();
168
+  if ( !res.error().code() == GPG_ERR_EOF )
169
+    kdDebug(5150) << "QGpgMEKeyListJob::slotFakeOperationDoneEvent: expected EOF, got "
170
+                  << res.error().asString() << endl;
171
+  mResult = GpgME::KeyListResult();
172
+  emit done();
173
+  emit result( mResult );
174
+  deleteLater();
175
+}
176
+
161 177
 void Kleo::QGpgMEKeyListJob::slotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & ) {
162 178
   if ( context != mCtx )
163 179
     return;

+ 1
- 0
certmanager/lib/backends/qgpgme/qgpgmekeylistjob.h View File

@@ -65,6 +65,7 @@ namespace Kleo {
65 65
   private slots:
66 66
     void slotNextKeyEvent( GpgME::Context * context, const GpgME::Key & key );
67 67
     void slotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & e );
68
+    void slotFakeOperationDoneEvent();
68 69
 
69 70
   private:
70 71
     void doOperationDoneEvent( const GpgME::Error &) {} // unused, we implement slotOperationDoneEvent ourselves.

+ 3
- 1
certmanager/lib/backends/qgpgme/qgpgmesignencryptjob.cpp View File

@@ -109,7 +109,9 @@ Kleo::QGpgMESignEncryptJob::exec( const std::vector<GpgME::Key> & signers,
109 109
 void Kleo::QGpgMESignEncryptJob::doOperationDoneEvent( const GpgME::Error & ) {
110 110
   mResult.first = mCtx->signingResult();
111 111
   mResult.second = mCtx->encryptionResult();
112
-  emit result( mResult.first, mResult.second, mOutDataDataProvider->data() );
112
+  const TQByteArray cipherText = mOutDataDataProvider->data();
113
+  getAuditLog();
114
+  emit result( mResult.first, mResult.second, cipherText );
113 115
 }
114 116
 
115 117
 void Kleo::QGpgMESignEncryptJob::showErrorDialog( TQWidget * parent, const TQString & caption ) const {

+ 4
- 1
certmanager/lib/backends/qgpgme/qgpgmesignjob.cpp View File

@@ -102,7 +102,10 @@ GpgME::SigningResult Kleo::QGpgMESignJob::exec( const std::vector<GpgME::Key> &
102 102
 }
103 103
 
104 104
 void Kleo::QGpgMESignJob::doOperationDoneEvent( const GpgME::Error & ) {
105
-  emit result( mResult = mCtx->signingResult(), mOutDataDataProvider->data() );
105
+  mResult = mCtx->signingResult();
106
+  const TQByteArray signature = mOutDataDataProvider->data();
107
+  getAuditLog();
108
+  emit result( mResult, signature );
106 109
 }
107 110
 
108 111
 void Kleo::QGpgMESignJob::showErrorDialog( TQWidget * parent, const TQString & caption ) const {

+ 3
- 1
certmanager/lib/backends/qgpgme/qgpgmeverifydetachedjob.cpp View File

@@ -89,7 +89,9 @@ GpgME::VerificationResult Kleo::QGpgMEVerifyDetachedJob::exec( const TQByteArray
89 89
 }
90 90
 
91 91
 void Kleo::QGpgMEVerifyDetachedJob::doOperationDoneEvent( const GpgME::Error & ) {
92
-  emit result( mCtx->verificationResult() );
92
+  const GpgME::VerificationResult res = mCtx->verificationResult();
93
+  getAuditLog();
94
+  emit result( res );
93 95
 }
94 96
 
95 97
 

+ 4
- 1
certmanager/lib/backends/qgpgme/qgpgmeverifyopaquejob.cpp View File

@@ -84,7 +84,10 @@ GpgME::VerificationResult Kleo::QGpgMEVerifyOpaqueJob::exec( const TQByteArray &
84 84
 }
85 85
 
86 86
 void Kleo::QGpgMEVerifyOpaqueJob::doOperationDoneEvent( const GpgME::Error & ) {
87
-  emit result( mCtx->verificationResult(), mOutDataDataProvider->data() );
87
+  const GpgME::VerificationResult res = mCtx->verificationResult();
88
+  const TQByteArray plainText = mOutDataDataProvider->data();
89
+  getAuditLog();
90
+  emit result( res, plainText );
88 91
 }
89 92
 
90 93
 

+ 14
- 0
certmanager/lib/kleo/job.cpp View File

@@ -52,9 +52,13 @@
52 52
 #include "refreshkeysjob.h"
53 53
 #include "specialjob.h"
54 54
 
55
+#include <gpgmepp/context.h>
56
+
55 57
 #include <tqapplication.h>
56 58
 #include <kdebug.h>
57 59
 
60
+#include <gpg-error.h>
61
+
58 62
 Kleo::Job::Job( TQObject * parent, const char * name )
59 63
   : TQObject( parent, name )
60 64
 {
@@ -75,6 +79,16 @@ TQString Kleo::Job::auditLogAsHtml() const {
75 79
     return TQString();
76 80
 }
77 81
 
82
+GpgME::Error Kleo::Job::auditLogError() const {
83
+    kdDebug() << "Kleo::Job::auditLogError() should be reimplemented in Kleo::Job subclasses!" << endl;
84
+    return GpgME::Error( gpg_error( GPG_ERR_NOT_IMPLEMENTED ) );
85
+}
86
+
87
+bool Kleo::Job::isAuditLogSupported() const {
88
+    const GpgME::Error err = auditLogError();
89
+    return err.code() != GPG_ERR_NOT_IMPLEMENTED ;
90
+}
91
+
78 92
 #define make_job_subclass(x) \
79 93
   Kleo::x::x( TQObject * parent, const char * name ) : Job( parent, name ) {} \
80 94
   Kleo::x::~x() {}

+ 6
- 0
certmanager/lib/kleo/job.h View File

@@ -38,6 +38,10 @@
38 38
 
39 39
 class TQWidget;
40 40
 
41
+namespace GpgME {
42
+    class Error;
43
+}
44
+
41 45
 namespace Kleo {
42 46
 
43 47
   /**
@@ -67,6 +71,8 @@ namespace Kleo {
67 71
     virtual void showErrorDialog( TQWidget * parent=0, const TQString & caption=TQString::null ) const;
68 72
 
69 73
     virtual TQString auditLogAsHtml() const;
74
+    virtual GpgME::Error auditLogError() const;
75
+    bool isAuditLogSupported() const;
70 76
 
71 77
   public slots:
72 78
     virtual void slotCancel() = 0;

+ 1
- 8
certmanager/lib/libkleopatrarc.desktop View File

@@ -22,7 +22,6 @@ Name[hu]=Nem ellenőrzött kulcs
22 22
 Name[is]=Ekki staðfestur lykill
23 23
 Name[it]=Chiave non convalidata
24 24
 Name[ja]=認証されていない鍵
25
-Name[ka]=დაუმოწმებელი გასაღები
26 25
 Name[kk]=Тексерілмеген кілт
27 26
 Name[km]=កូនសោ​គ្មាន​សុពលភាព
28 27
 Name[ko]=검증되지 않은 키
@@ -77,7 +76,6 @@ Name[hu]=Lejárt kulcs
77 76
 Name[is]=Útrunninn lykill
78 77
 Name[it]=Chiave scaduta
79 78
 Name[ja]=期限切れの鍵
80
-Name[ka]=ვადაგასული გასაღები
81 79
 Name[kk]=Ескірген кілт
82 80
 Name[km]=កូនសោ​បាន​ផុតកំណត់
83 81
 Name[ko]=만료된 키
@@ -130,7 +128,6 @@ Name[hu]=Visszavont kulcs
130 128
 Name[is]=Afturkallaður lykill
131 129
 Name[it]=Chiave revocata
132 130
 Name[ja]=破棄された鍵
133
-Name[ka]=ანულირებული გასაღები
134 131
 Name[kk]=Күші жойылған кілт
135 132
 Name[km]=កូនសោ​ត្រូវ​បាន​ដកហូត
136 133
 Name[ko]=거부된 키
@@ -183,7 +180,6 @@ Name[hu]=Megbízható gyökértanúsítvány
183 180
 Name[is]=Treyst rótarskilríki
184 181
 Name[it]=Certificato radice affidabile
185 182
 Name[ja]=信頼されたルート証明書
186
-Name[ka]= რუტის  სანდო სერთიფიკატი
187 183
 Name[kk]=Сенім артылған түбір куәлігі
188 184
 Name[km]=វិញ្ញាបនបត្រ Root ដែល​អាច​ជឿទុកចិត្ត
189 185
 Name[lt]=Patikimas root sertifikatas
@@ -236,7 +232,6 @@ Name[hu]=Nem megbízható gyökértanúsítvány
236 232
 Name[is]=Ekki traust rótarskilríki
237 233
 Name[it]=Certificato radice non affidabile
238 234
 Name[ja]=信頼されてないルート証明書
239
-Name[ka]=რუტის არასანდო  სერტიფიკატი
240 235
 Name[kk]=Сенім артылмаған түбір куәлігі
241 236
 Name[km]=វិញ្ញាបនបត្រ Root ដែល​មិន​អាច​ជឿទុកចិត្ត
242 237
 Name[lt]=Nepatikimas root sertifikatas
@@ -290,7 +285,6 @@ Name[hu]=Egyéb kulcsok
290 285
 Name[is]=Aðrir lyklar
291 286
 Name[it]=Altre chiavi
292 287
 Name[ja]=他の鍵
293
-Name[ka]=სხვა გასაღებები
294 288
 Name[kk]=Басқа кілттер
295 289
 Name[km]=កូនសោ​ផ្សេង​ទៀត
296 290
 Name[ko]=기타 키
@@ -316,8 +310,7 @@ Name[sv]=Andra nycklar
316 310
 Name[ta]=மற்ற விசைகள்
317 311
 Name[tr]=Diğer Anahtarlar
318 312
 Name[uk]=Інші ключі
319
-Name[uz]=Boshqa kalitlar
320
-Name[uz@cyrillic]=Бошқа калитлар
313
+Name[uz]=Бошқа калитлар
321 314
 Name[zh_CN]=其它密钥
322 315
 Name[zh_TW]=其他金鑰
323 316
 

+ 1
- 0
certmanager/lib/tests/test_verify.cpp View File

@@ -29,6 +29,7 @@
29 29
 */
30 30
 
31 31
 #include <config.h>
32
+#include <cstdlib>
32 33
 
33 34
 #include <kleo/cryptobackendfactory.h>
34 35
 #include <kleo/verifydetachedjob.h>

+ 6
- 0
certmanager/lib/ui/cryptoconfigdialog.cpp View File

@@ -46,6 +46,12 @@ Kleo::CryptoConfigDialog::CryptoConfigDialog( Kleo::CryptoConfig* config, TQWidg
46 46
   setMainWidget( mMainWidget );
47 47
   connect( mMainWidget, TQT_SIGNAL( changed() ), TQT_SLOT( slotChanged() ) );
48 48
   enableButton( Apply, false );
49
+  if ( mMainWidget->hasError() ) {
50
+      showButton( Default, false );
51
+      showButton( User1, false );
52
+      showButton( Apply, false );
53
+      showButton( Ok, false );
54
+  }
49 55
 
50 56
   // Automatically assign accelerators
51 57
   KAcceleratorManager::manage( this );

+ 29
- 1
certmanager/lib/ui/cryptoconfigmodule.cpp View File

@@ -62,8 +62,20 @@ static inline TQPixmap loadIcon( TQString s ) {
62 62
     ->loadIcon( s.replace( TQRegExp( "[^a-zA-Z0-9_]" ), "_" ), KIcon::NoGroup, KIcon::SizeMedium );
63 63
 }
64 64
 
65
+static unsigned int num_components_with_options( const Kleo::CryptoConfig * config ) {
66
+  if ( !config )
67
+    return 0;
68
+  const TQStringList components = config->componentList();
69
+  unsigned int result = 0;
70
+  for ( TQStringList::const_iterator it = components.begin() ; it != components.end() ; ++it )
71
+    if ( const Kleo::CryptoConfigComponent * const comp = config->component( *it ) )
72
+      if ( !comp->groupList().empty() )
73
+        ++result;
74
+  return result;
75
+}
76
+
65 77
 static const KJanusWidget::Face determineJanusFace( const Kleo::CryptoConfig * config ) {
66
-  return config && config->componentList().size() < 2
78
+  return num_components_with_options( config ) < 2
67 79
     ? KJanusWidget::Plain
68 80
     : KJanusWidget::IconList ;
69 81
 }
@@ -115,6 +127,22 @@ Kleo::CryptoConfigModule::CryptoConfigModule( Kleo::CryptoConfig* config, TQWidg
115 127
                                 + scrollView->style().pixelMetric(TQStyle::PM_ScrollBarExtent),
116 128
                                 QMIN( compGUI->sizeHint().height(), dialogHeight ) );
117 129
   }
130
+  if ( mComponentGUIs.empty() ) {
131
+      Q_ASSERT( face() == Plain );
132
+      const TQString msg = i18n("The gpgconf tool used to provide the information "
133
+                               "for this dialog does not seem to be installed "
134
+                               "properly. It did not return any components. "
135
+                               "Try running \"%1\" on the command line for more "
136
+                               "information.")
137
+          .arg( components.empty() ? "gpgconf --list-components" : "gpgconf --list-options gpg" );
138
+      TQLabel * label = new TQLabel( msg, vbox );
139
+      label->setAlignment( TQt::WordBreak );
140
+      label->setMinimumHeight( fontMetrics().lineSpacing() * 5 );
141
+  }
142
+}
143
+
144
+bool Kleo::CryptoConfigModule::hasError() const {
145
+    return mComponentGUIs.empty();
118 146
 }
119 147
 
120 148
 void Kleo::CryptoConfigModule::save()

+ 2
- 0
certmanager/lib/ui/cryptoconfigmodule.h View File

@@ -50,6 +50,8 @@ namespace Kleo {
50 50
   public:
51 51
     CryptoConfigModule( Kleo::CryptoConfig* config, TQWidget * parent=0, const char * name=0 );
52 52
 
53
+    bool hasError() const;
54
+
53 55
     void save();
54 56
     void reset(); // i.e. reload current settings, discarding user input
55 57
     void defaults();

+ 52
- 5
certmanager/lib/ui/keyselectiondialog.cpp View File

@@ -61,6 +61,8 @@
61 61
 #include <kconfig.h>
62 62
 #include <kmessagebox.h>
63 63
 #include <kprocess.h>
64
+#include <kactivelabel.h>
65
+#include <kurl.h>
64 66
 
65 67
 // Qt
66 68
 #include <tqcheckbox.h>
@@ -85,7 +87,12 @@ static bool checkKeyUsage( const GpgME::Key & key, unsigned int keyUsage ) {
85 87
 
86 88
   if ( keyUsage & Kleo::KeySelectionDialog::ValidKeys ) {
87 89
     if ( key.isInvalid() )
88
-      kdDebug() << "key is invalid - ignoring" << endl;
90
+        if ( key.keyListMode() & GpgME::Context::Validate ) {
91
+            kdDebug() << "key is invalid" << endl;
92
+            return false;
93
+        } else {
94
+            kdDebug() << "key is invalid - ignoring" << endl;
95
+        }
89 96
     if ( key.isExpired() ) {
90 97
       kdDebug() << "key is expired" << endl;
91 98
       return false;
@@ -309,6 +316,28 @@ Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
309 316
 
310 317
 Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
311 318
 					      const TQString & text,
319
+                                              const TQString & initialQuery,
320
+					      const std::vector<GpgME::Key> & selectedKeys,
321
+					      unsigned int keyUsage,
322
+					      bool extendedSelection,
323
+					      bool rememberChoice,
324
+					      TQWidget * parent, const char * name,
325
+					      bool modal )
326
+  : KDialogBase( parent, name, modal, title, Default|Ok|Cancel|Help, Ok ),
327
+    mOpenPGPBackend( 0 ),
328
+    mSMIMEBackend( 0 ),
329
+    mRememberCB( 0 ),
330
+    mSelectedKeys( selectedKeys ),
331
+    mKeyUsage( keyUsage ),
332
+    mSearchText( initialQuery ),
333
+    mInitialQuery( initialQuery ),
334
+    mCurrentContextMenuItem( 0 )
335
+{
336
+  init( rememberChoice, extendedSelection, text, initialQuery );
337
+}
338
+
339
+Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
340
+					      const TQString & text,
312 341
 					      const TQString & initialQuery,
313 342
 					      unsigned int keyUsage,
314 343
 					      bool extendedSelection,
@@ -321,6 +350,7 @@ Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
321 350
     mRememberCB( 0 ),
322 351
     mKeyUsage( keyUsage ),
323 352
     mSearchText( initialQuery ),
353
+    mInitialQuery( initialQuery ),
324 354
     mCurrentContextMenuItem( 0 )
325 355
 {
326 356
   init( rememberChoice, extendedSelection, text, initialQuery );
@@ -340,11 +370,26 @@ void Kleo::KeySelectionDialog::init( bool rememberChoice, bool extendedSelection
340 370
   mTopLayout = new TQVBoxLayout( page, 0, spacingHint() );
341 371
 
342 372
   if ( !text.isEmpty() ) {
343
-    TQLabel* textLabel = new TQLabel( text, page );
344
-    textLabel->setAlignment( textLabel->alignment() | Qt::WordBreak );
345
-    mTopLayout->addWidget( textLabel );
373
+    if ( text.startsWith( "<qt>" ) ) {
374
+      KActiveLabel *textLabel = new KActiveLabel( text, page );
375
+      disconnect( textLabel, TQT_SIGNAL(linkClicked(const TQString&)), textLabel, TQT_SLOT(openLink(const TQString&)) );
376
+      connect( textLabel, TQT_SIGNAL(linkClicked(const TQString&)), TQT_SLOT(slotStartCertificateManager(const TQString&)) );
377
+      textLabel->setAlignment( textLabel->alignment() | TQt::WordBreak );
378
+      mTopLayout->addWidget( textLabel );
379
+    } else {
380
+      KActiveLabel *textLabel = new KActiveLabel( text, page );
381
+      textLabel->setAlignment( textLabel->alignment() | TQt::WordBreak );
382
+      mTopLayout->addWidget( textLabel );
383
+    }
346 384
   }
347 385
 
386
+  TQPushButton * const searchExternalPB
387
+      = new TQPushButton( i18n("Search for &External Certificates"), page );
388
+  mTopLayout->addWidget( searchExternalPB, 0, TQt::AlignLeft );
389
+  connect( searchExternalPB, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotStartSearchForExternalCertificates()) );
390
+  if ( initialQuery.isEmpty() )
391
+      searchExternalPB->hide();
392
+
348 393
   TQHBoxLayout * hlay = new TQHBoxLayout( mTopLayout ); // inherits spacing
349 394
   TQLineEdit * le = new TQLineEdit( page );
350 395
   le->setText( initialQuery );
@@ -500,10 +545,12 @@ void Kleo::KeySelectionDialog::slotHelp()
500 545
     emit helpClicked();
501 546
 }
502 547
 
503
-void Kleo::KeySelectionDialog::slotStartCertificateManager()
548
+void Kleo::KeySelectionDialog::slotStartCertificateManager( const TQString &query )
504 549
 {
505 550
   KProcess certManagerProc;
506 551
   certManagerProc << "kleopatra";
552
+  if ( !query.isEmpty() )
553
+    certManagerProc << "--external" << "--query" << KURL::decode_string( query );
507 554
 
508 555
   if( !certManagerProc.start( KProcess::DontCare ) )
509 556
     KMessageBox::error( this, i18n( "Could not start certificate manager; "

+ 14
- 1
certmanager/lib/ui/keyselectiondialog.h View File

@@ -93,6 +93,15 @@ namespace Kleo {
93 93
                         bool modal=true );
94 94
     KeySelectionDialog( const TQString & title,
95 95
                         const TQString & text,
96
+                        const TQString & initialPattern,
97
+			const std::vector<GpgME::Key> & selectedKeys,
98
+                        unsigned int keyUsage=AllKeys,
99
+                        bool extendedSelection=false,
100
+			bool rememberChoice=false,
101
+                        TQWidget * parent=0, const char * name=0,
102
+                        bool modal=true );
103
+    KeySelectionDialog( const TQString & title,
104
+                        const TQString & text,
96 105
 			const TQString & initialPattern,
97 106
                         unsigned int keyUsage=AllKeys,
98 107
                         bool extendedSelection=false,
@@ -129,7 +138,10 @@ namespace Kleo {
129 138
 
130 139
   private slots:
131 140
     void slotRereadKeys();
132
-    void slotStartCertificateManager();
141
+    void slotStartCertificateManager( const TQString &query = TQString() );
142
+    void slotStartSearchForExternalCertificates() {
143
+      slotStartCertificateManager( mInitialQuery );
144
+    }
133 145
     void slotKeyListResult( const GpgME::KeyListResult & );
134 146
     void slotSelectionChanged();
135 147
     void slotCheckSelection() { slotCheckSelection( 0 ); }
@@ -170,6 +182,7 @@ namespace Kleo {
170 182
     TQTimer * mStartSearchTimer;
171 183
     // cross-eventloop temporaries:
172 184
     TQString mSearchText;
185
+    const TQString mInitialQuery;
173 186
     Kleo::KeyListViewItem * mCurrentContextMenuItem;
174 187
     int mTruncated, mListJobCount, mSavedOffsetY;
175 188
   };

+ 64
- 5
certmanager/lib/ui/messagebox.cpp View File

@@ -46,10 +46,15 @@
46 46
 #include <klocale.h>
47 47
 #include <ksavefile.h>
48 48
 #include <kguiitem.h>
49
+#include <kdebug.h>
49 50
 
50 51
 #include <tqtextedit.h>
51 52
 #include <tqtextstream.h>
52 53
 #include <tqvbox.h>
54
+#include <tqapplication.h>
55
+#include <tqstylesheet.h>
56
+
57
+#include <gpg-error.h>
53 58
 
54 59
 using namespace Kleo;
55 60
 using namespace GpgME;
@@ -74,6 +79,7 @@ public:
74 79
     explicit AuditLogViewer( const TQString & log, TQWidget * parent=0, const char * name=0, WFlags f=0 )
75 80
         : KDialogBase( parent, name, false, i18n("View GnuPG Audit Log"),
76 81
                        Close|User1|User2, Close, false, KGuiItem_save(), KGuiItem_copy() ),
82
+          m_log( /* sic */ ),
77 83
           m_textEdit( new TQTextEdit( this, "m_textEdit" ) )
78 84
     {
79 85
         setWFlags( f );
@@ -85,7 +91,18 @@ public:
85 91
     ~AuditLogViewer() {}
86 92
 
87 93
     void setAuditLog( const TQString & log ) {
88
-        m_textEdit->setText( log );
94
+        if ( log == m_log )
95
+            return;
96
+        m_log = log;
97
+        m_textEdit->setText( "<qt>" + log + "</qt>" );
98
+        const TQRect rect = m_textEdit->paragraphRect( 0 );
99
+        kdDebug() << "setAuditLog: rect = " << rect << endl;
100
+        if ( !rect.isValid() )
101
+            return;
102
+        TQSize maxSize = qApp->desktop()->screenGeometry( this ).size() * 2 / 3 ;
103
+        if ( !maxSize.isValid() )
104
+            maxSize = TQSize( 640, 480 );
105
+        m_textEdit->setMinimumSize( rect.size().boundedTo( maxSize ) );
89 106
     }
90 107
 
91 108
 private:
@@ -98,7 +115,12 @@ private:
98 115
         KSaveFile file( fileName );
99 116
 
100 117
         if ( TQTextStream * const s = file.textStream() ) {
101
-            *s << m_textEdit->text() << endl;
118
+            *s << "<html><head>";
119
+            if ( !caption().isEmpty() )
120
+                *s << "\n<title>" << /*TQt*/TQStyleSheet::escape( caption() ) << "</title>\n";
121
+            *s << "</head><body>\n"
122
+               << m_log
123
+               << "\n</body></html>" << endl;
102 124
             file.close();
103 125
         }
104 126
 
@@ -114,6 +136,7 @@ private:
114 136
     }
115 137
 
116 138
 private:
139
+    TQString m_log;
117 140
     TQTextEdit * m_textEdit;
118 141
 };
119 142
 
@@ -125,13 +148,23 @@ void MessageBox::auditLog( TQWidget * parent, const Job * job, const TQString &
125 148
     if ( !job )
126 149
         return;
127 150
 
128
-    if ( !GpgME::hasFeature( AuditLogFeature ) ) {
151
+    if ( !GpgME::hasFeature( AuditLogFeature ) || !job->isAuditLogSupported() ) {
129 152
         KMessageBox::information( parent, i18n("Your system does not have support for GnuPG Audit Logs"),
130 153
                                   i18n("System Error") );
131 154
         return;
132 155
     }
133 156
 
157
+    const GpgME::Error err = job->auditLogError();
158
+
159
+    if ( err.code() != GPG_ERR_NO_DATA ) {
160
+        KMessageBox::information( parent, i18n("An error occurred while trying to retrieve the GnuPG Audit Log:\n%1")
161
+                                  .arg( TQString::fromLocal8Bit( err.asString() ) ),
162
+                                  i18n("GnuPG Audit Log Error") );
163
+        return;
164
+    }
165
+
134 166
     const TQString log = job->auditLogAsHtml();
167
+
135 168
     if ( log.isEmpty() ) {
136 169
         KMessageBox::information( parent, i18n("No GnuPG Audit Log available for this operation."),
137 170
                                   i18n("No GnuPG Audit Log") );
@@ -143,7 +176,7 @@ void MessageBox::auditLog( TQWidget * parent, const Job * job, const TQString &
143 176
 
144 177
 // static
145 178
 void MessageBox::auditLog( TQWidget * parent, const TQString & log, const TQString & caption ) {
146
-    AuditLogViewer * const alv = new AuditLogViewer( "<qt>" + log + "</qt>", parent, "alv", Qt::WDestructiveClose );
179
+    AuditLogViewer * const alv = new AuditLogViewer( log, parent, "alv", Qt::WDestructiveClose );
147 180
     alv->setCaption( caption );
148 181
     alv->show();
149 182
 }
@@ -247,8 +280,34 @@ void MessageBox::error( TQWidget * parent, const SigningResult & sresult, const
247 280
 }
248 281
 
249 282
 // static
283
+bool MessageBox::showAuditLogButton( const Kleo::Job * job ) {
284
+    if ( !job ) {
285
+        kdDebug() << "not showing audit log button (no job instance)" << endl;
286
+        return false;
287
+    }
288
+    if ( !GpgME::hasFeature( GpgME::AuditLogFeature ) ) {
289
+        kdDebug() << "not showing audit log button (gpgme too old)" << endl;
290
+        return false;
291
+    }
292
+    if ( !job->isAuditLogSupported() ) {
293
+        kdDebug() << "not showing audit log button (not supported)" << endl;
294
+        return false;
295
+    }
296
+    if ( job->auditLogError().code() == GPG_ERR_NO_DATA ) {
297
+        kdDebug() << "not showing audit log button (GPG_ERR_NO_DATA)" << endl;
298
+        return false;
299
+    }
300
+    if ( !job->auditLogError() && job->auditLogAsHtml().isEmpty() ) {
301
+        kdDebug() << "not showing audit log button (success, but result empty)" << endl;
302
+        return false;
303
+    }
304
+    return true;
305
+}
306
+
307
+
308
+// static
250 309
 void MessageBox::make( TQWidget * parent, TQMessageBox::Icon icon, const TQString & text, const Job * job, const TQString & caption, int options ) {
251
-    KDialogBase * dialog = GpgME::hasFeature( GpgME::AuditLogFeature )
310
+    KDialogBase * dialog = showAuditLogButton( job )
252 311
         ? new KDialogBase( caption, KDialogBase::Yes | KDialogBase::No,
253 312
                            KDialogBase::Yes, KDialogBase::Yes,
254 313
                            parent, "error", true, true,

+ 3
- 0
certmanager/lib/ui/messagebox.h View File

@@ -40,6 +40,7 @@ namespace GpgME {
40 40
     class EncryptionResult;
41 41
     class DecryptionResult;
42 42
     class VerificationResult;
43
+    class Error;
43 44
 }
44 45
 
45 46
 namespace Kleo {
@@ -73,6 +74,8 @@ namespace Kleo {
73 74
         static void auditLog( TQWidget * parent, const TQString & log, const TQString & caption );
74 75
         static void auditLog( TQWidget * parent, const TQString & log );
75 76
 
77
+        static bool showAuditLogButton( const Kleo::Job * job );
78
+
76 79
     private:
77 80
         static void make( TQWidget * parent, TQMessageBox::Icon icon, const TQString & text, const Kleo::Job * job, const TQString & caption, int options );
78 81
     };

+ 13
- 0
cvs.sh.diff View File

@@ -0,0 +1,13 @@
1
+Index: admin/cvs.sh
2
+===================================================================
3
+--- admin/cvs.sh	(revision 637526)
4
++++ admin/cvs.sh	(working copy)
5
+@@ -592,7 +592,7 @@ for i in `ls -1 po.backup/*.pot 2>/dev/n
6
+   test -f po/$i || echo "disappeared: $i"
7
+ done
8
+ for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do
9
+-  sed -e 's,^"Content-Type: text/plain; charset=CHARSET\\n"$,"Content-Type: text/plain; charset=UTF-8\\n",' po/$i > po/$i.new && mv po/$i.new po/$i
10
++  sed -e 's,^"Content-Type: text/plain; charset=CHARSET\\n"$,"Content-Type: text/plain; charset=UTF-8\\n",; s,"Content-Transfer-Encoding: ENCODING\\n","Content-Transfer-Encoding: 8bit\\n", ; s,"Language-Team: LANGUAGE <LL@li.org>\\n","Language-Team: LANGUAGE <kde-i18n-doc@kde.org>\\n",' po/$i > po/$i.new && mv po/$i.new po/$i
11
+   #msgmerge -q -o po/$i po/$i po/$i
12
+   egrep -v '^#[^,]' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot
13
+   if test -f po.backup/$i && ! cmp -s temp.pot po.backup/$i; then

+ 3
- 3
doc/kleopatra/index.docbook View File

@@ -146,8 +146,8 @@ menu, as well as from the command line. The &kleopatra; executable is
146 146
 named <userinput><command>kleopatra</command></userinput>.</para>
147 147
 
148 148
 <note><para>This program is named after Cleopatra, a famous female
149
-Egyptian pharaoh that lived at the time of Julius Caesar, whom she is
150
-said to have had an intimate relationship with.</para>
149
+Egyptian pharaoh that lived at the time of Julius Caesar, with whom 
150
+she had a child, Caesarion, unacknowledged as his heir.</para>
151 151
 
152 152
 <para>The name was chosen since this program originates from the
153 153
 <ulink url="http://www.gnupg.org/aegypten2/">&Auml;gypten
@@ -494,7 +494,7 @@ command line interface).</para>
494 494
 
495 495
 
496 496
 <varlistentry id="view-stop-operation">
497
-<term><menuchoice><shortcut><keycombo action="simul"><keycap>Esc</keycap></keycombo></shortcut>
497
+<term><menuchoice><shortcut><keycombo action="simul">&Esc;</keycombo></shortcut>
498 498
 <guimenu>View</guimenu><guimenuitem>Stop Operation</guimenuitem></menuchoice></term>
499 499
 
500 500
 <listitem>

+ 178
- 27
doc/kmail/configure.docbook View File

@@ -648,7 +648,7 @@ so you can choose a monospaced font for the date field for better readability.</
648 648
 quoted more than three times will appear in color. Note that the
649 649
 <guilabel>Quoted text</guilabel> colors only work in the message reader, not in
650 650
 the composer. If you want folders which are close to their quota
651
-(space alotment, usually used on IMAP servers) to be displayed in a different color,
651
+(space allotment, usually used on IMAP servers) to be displayed in a different color,
652 652
 you can specify a percentage value as a threshold for this. The color to be used
653 653
 can be configured along with the other custom colors.<!-- TODO --></para>
654 654
 
@@ -657,6 +657,11 @@ can be configured along with the other custom colors.<!-- TODO --></para>
657 657
 <sect2 id="configure-appearance-layout">
658 658
 <title>Layout</title>
659 659
 
660
+<para>If the <guilabel>Close message window after replying or forwarding</guilabel> option is
661
+activated, KMail will close the message window after replying to or forwarding the message that
662
+is displayed in the window. This only applies to the separate message window, not to the embedded
663
+message preview pane.</para>
664
+
660 665
 <para><guilabel>Show HTML status bar</guilabel> activates a bar at the left side of the reader
661 666
 pane that tells you if a message is &html; or not. This is important because
662 667
 &html; messages might imitate the look of a signed and encrypted message, so
@@ -777,6 +782,32 @@ folder will be selected in &kmail;'s main window.
777 782
 	    </para>
778 783
 	  </listitem>
779 784
 	</varlistentry>
785
+  <varlistentry id="configure-composer-general-quote-selection-only">
786
+    <term>
787
+      <guilabel>Only quote selected text when repyling</guilabel>
788
+    </term>
789
+    <listitem>
790
+      <para>
791
+        If checked, &kmail; will quote only the selected text in the message window,
792
+        instead of the complete message, when replying.
793
+        With this, it is possible to quickly generate replies that quote only the relevant
794
+        paragraph to which you are actually replying, and omits the other paragraphs that are
795
+        not relevant to the context.
796
+      </para>
797
+    </listitem>
798
+  </varlistentry>
799
+  <varlistentry id="configure-composer-general-strip-signatures">
800
+    <term>
801
+      <guilabel>Remove the signature when replying</guilabel>
802
+    </term>
803
+    <listitem>
804
+      <para>
805
+        If checked, &kmail; will remove the signature from the quoted text
806
+        when replying to a message. This is useful since it reduces the amount
807
+        of quoted text, which makes it easier to read the reply.
808
+      </para>
809
+    </listitem>
810
+  </varlistentry>
780 811
 	<varlistentry id="configure-composer-general-auto-request-mdns">
781 812
 	  <term>
782 813
 	    <guilabel>Automatically request message disposition notifications</guilabel>
@@ -806,6 +837,19 @@ folder will be selected in &kmail;'s main window.
806 837
 	    </para>
807 838
 	  </listitem>
808 839
 	</varlistentry>
840
+    <varlistentry id="configure-composer-general-too-many-recipients">
841
+      <term>
842
+        <guilabel>Warn if the number of recipients is larger than</guilabel>
843
+      </term>
844
+      <listitem>
845
+        <para>
846
+          If the number of recipients is larger than this value, KMail will
847
+          warn and ask for a confirmation before sending the mail.
848
+          The default is to warn if there are more than <literal>5</literal> recipients.
849
+          This warning can be turned off.
850
+        </para>
851
+      </listitem>
852
+    </varlistentry>
809 853
 	<varlistentry id="configure-composer-general-autosave-interval">
810 854
 	  <term>
811 855
 	    <guilabel>Autosave interval</guilabel>
@@ -819,6 +863,18 @@ folder will be selected in &kmail;'s main window.
819 863
 	    </para>
820 864
 	  </listitem>
821 865
 	</varlistentry>
866
+    <varlistentry id="configure-composer-general-forwading-type">
867
+	  <term>
868
+	    <guilabel>Default Forwarding Type</guilabel>
869
+	  </term>
870
+	  <listitem>
871
+	    <para>
872
+           Lets you decide whether you want to forward messages inline or as an attachment by default.
873
+           This changes which type of forwarding mechanism is used when you click the toolbar icon or
874
+           when you activate the shortcut for forwarding.
875
+	    </para>
876
+	  </listitem>
877
+	</varlistentry>
822 878
 	<varlistentry id="configure-composer-general-external-editor">
823 879
 	  <term>
824 880
 	    <guilabel>External Editor</guilabel>
@@ -1102,7 +1158,7 @@ of key words can be modified.</para>
1102 1158
 		  <para>
1103 1159
 		    Attaches the complete message to the disposition
1104 1160
 		    notification. Usually, this is overkill. It does
1105
-		    not add any valueable information that cannot be
1161
+		    not add any valuable information that cannot be
1106 1162
 		    deduced from the message headers alone, but people
1107 1163
 		    sometimes insist on this, since it is much easier
1108 1164
 		    for humans to correlate the content of the message
@@ -1276,7 +1332,7 @@ of key words can be modified.</para>
1276 1332
 	  </term>
1277 1333
 	  <listitem>
1278 1334
 	    <para>
1279
-	      If checked, everytime you encrypt a message, a dialog
1335
+	      If checked, every time you encrypt a message, a dialog
1280 1336
 	      will appear that presents you with the encryption keys
1281 1337
 	      that will be used for each recipient. You can then
1282 1338
 	      review the choice of keys, change them, and approve or
@@ -1335,7 +1391,7 @@ of key words can be modified.</para>
1335 1391
       </title>
1336 1392
 
1337 1393
       <para>
1338
-	On this tab you can switch security-relavant warnings on and
1394
+	On this tab you can switch security-relevant warnings on and
1339 1395
 	off.
1340 1396
       </para>
1341 1397
 
@@ -1386,7 +1442,7 @@ of key words can be modified.</para>
1386 1442
 	  <listitem>
1387 1443
 	    <para>
1388 1444
 	      If checked, &kmail; will emit a warning if an &smime;
1389
-	      certifciate or &openpgp; key will be used for a recipient
1445
+	      certificate or &openpgp; key will be used for a recipient
1390 1446
 	      whose email address is not listed in the email addresses
1391 1447
 	      stored in the certificate.
1392 1448
 	    </para>
@@ -1698,7 +1754,7 @@ of key words can be modified.</para>
1698 1754
 	backends. Below each backend entry, you can see what protocols
1699 1755
 	(&openpgp; and/or &smime;) the backend supports. If a protocol
1700 1756
 	is not listed, the backend does not support it. If it is
1701
-	listed, but greyed out, the backend supports the protocol, but
1757
+	listed, but grayed out, the backend supports the protocol, but
1702 1758
 	some required programs were not found, or other errors
1703 1759
 	occurred during initialization. If you press
1704 1760
 	<guibutton>Rescan</guibutton>, a dialog box will appear that
@@ -1793,12 +1849,39 @@ Correspondingly, if you ask &kmail; to go to the previous unread message.
1793 1849
 </varlistentry>
1794 1850
 
1795 1851
 <varlistentry>
1796
-<term><guilabel>Jump to first unread message when entering a folder</guilabel></term>
1852
+
1853
+<term><guilabel>When entering a folder</guilabel></term>
1854
+<listitem>
1855
+<para>This option controls what happens if you open a folder.
1856
+<itemizedlist>
1857
+<listitem>
1858
+<para>If <guilabel>Jump to First New Message</guilabel> is selected then &kmail; will select the
1859
+first message it finds that is marked as new.
1860
+</para>
1861
+</listitem>
1862
+<listitem>
1863
+<para>If <guilabel>Jump to First Unread or New Message</guilabel> is selected then &kmail; will
1864
+select the first message it finds that is marked either as new or as unread.
1865
+</para>
1866
+</listitem>
1867
+<listitem>
1868
+<para>If <guilabel>Jump to Last Selected Message</guilabel> is selected then &kmail; will select
1869
+the message that was selected when the folder was open the last time.
1870
+</para>
1871
+</listitem>
1872
+<listitem>
1873
+<para>If <guilabel>Jump to Newest Message</guilabel> is selected then &kmail; will select the newest
1874
+message by date.
1875
+</para>
1876
+</listitem>
1797 1877
 <listitem>
1798
-<para>If this option is enabled &kmail; will go to the first unread message
1799
-when you enter a folder; if it is not enabled, &kmail; will go to first
1800
-new message or, if there is no new message, to the message
1801
-that was selected when you last left the folder.</para>
1878
+<para>If <guilabel>Jump to Oldest Message</guilabel> is selected then &kmail; will select the oldest
1879
+message by date.
1880
+</para>
1881
+</listitem>
1882
+</itemizedlist>
1883
+
1884
+</para>
1802 1885
 </listitem>
1803 1886
 </varlistentry>
1804 1887
 
@@ -1908,6 +1991,21 @@ option is selected.</para>
1908 1991
 <para>Invitations use to be send as attachments to a mail. By enabling this option, you let the invitation mails to be sent in the text of the mail, which is necessary to send invitations and replies to Microsoft Outlook(tm).</para>
1909 1992
 </listitem>
1910 1993
 </varlistentry>
1994
+<varlistentry>
1995
+<term><guilabel>Exchange compatible invitations naming</guilabel></term>
1996
+<listitem>
1997
+<para>Microsoft Outlook, when used in combination with a Microsoft Exchange
1998
+server, has a problem understanding standards-compliant groupware e-mail.
1999
+Enable this option to send groupware invitations in a way that Microsoft
2000
+Exchange understands. The invitation will be sent as an attachment with name <filename>ical.ics</filename>.</para>
2001
+</listitem>
2002
+</varlistentry>
2003
+<varlistentry>
2004
+<term><guilabel>Outlook compatible invitation reply comments</guilabel></term>
2005
+<listitem>
2006
+<para>When the user provides comments when responding to invitations, send the comment in way that Microsoft Outlook(tm) understands. If this option is not enabled, the response comments will not be seen in Outlook.</para>
2007
+</listitem>
2008
+</varlistentry>
1911 2009
 </variablelist>
1912 2010
 </sect2>
1913 2011
 
@@ -1934,7 +2032,7 @@ SendMDNsWithEmptySender=true
1934 2032
 to the [MDN] section of the kmail configuration file. If there is no such section, simply add "[MDN]" on
1935 2033
 a line by itself just above the option.
1936 2034
 
1937
-Note that the default setting of "false" strictly speaking violates internet standards, but is
2035
+Note that the default setting of "false" strictly speaking violates Internet standards, but is
1938 2036
 set that way for practical reasons, to avoid servers rejecting MDNs that KMail generates because they
1939 2037
 think they are SPAM.
1940 2038
 </para>
@@ -1956,20 +2054,6 @@ The option is enabled by default. To disable the feature, add a line reading (un
1956 2054
 </varlistentry>
1957 2055
 
1958 2056
 <varlistentry>
1959
-<term><guilabel>ForwardingInlineByDefault</guilabel></term>
1960
-<listitem>
1961
-<para>
1962
-This option allows you to make inline forwarding the default forwarding method instead
1963
-of forwarding as attachement.
1964
-
1965
-To enable the feature, add a line reading (under [Composer] section):
1966
-</para>
1967
-<programlisting>ForwardingInlineByDefault=true
1968
-</programlisting>
1969
-</listitem>
1970
-</varlistentry>
1971
-
1972
-<varlistentry>
1973 2057
 <term><guilabel>MaximumAttachmentSize</guilabel></term>
1974 2058
 <listitem>
1975 2059
 <para>
@@ -2011,6 +2095,73 @@ To disable the feature, add a line reading (under [OutOfOffice] section):
2011 2095
 </listitem>
2012 2096
 </varlistentry>
2013 2097
 
2098
+<varlistentry>
2099
+<term><guilabel>Allow out-of-office settings to be adjusted by the user.</guilabel></term>
2100
+<listitem>
2101
+<para>
2102
+In case you don't want users to be able to upload their own out-of-office scripts to
2103
+the server you can add:
2104
+</para>
2105
+<programlisting>AllowOutOfOfficeSettings=false
2106
+</programlisting><para>
2107
+to the [OutOfOffice] section of the kmail configuration file. If there is no such section, simply add "[OutOfOffice]" on
2108
+a line by itself just above the option.
2109
+</para>
2110
+</listitem>
2111
+</varlistentry>
2112
+
2113
+<varlistentry>
2114
+<term><guilabel>Allow out-of-office scripts to be uploaded by the user, but no settings changed.</guilabel></term>
2115
+<listitem>
2116
+<para>
2117
+If you want to allow your users to upload their own out-of-office scripts but you do not want them to be
2118
+able to change the domain to react to and the react-to-spam setting, you can add:
2119
+</para>
2120
+<programlisting>AllowOutOfOfficeUploadButNoSettings=true
2121
+</programlisting><para>
2122
+to the [OutOfOffice] section of the kmail configuration file. If there is no such section, simply add "[OutOfOffice]" on
2123
+a line by itself just above the option.
2124
+</para>
2125
+</listitem>
2126
+</varlistentry>
2127
+
2128
+
2129
+<varlistentry>
2130
+<term><guilabel>Default domain to limit out-of-office replies to.</guilabel></term>
2131
+<listitem>
2132
+<para>
2133
+When editing vacation (out-of-office) scripts, the user can specify a domain to
2134
+limit the sending of such replies to. To pre-load this setting with a default
2135
+value, add
2136
+</para>
2137
+<programlisting>OutOfOfficeDomain=myMailDomain.test
2138
+</programlisting><para>
2139
+to the [OutOfOffice] section of the kmail configuration file. If there is no such section, simply add "[OutOfOffice]" on
2140
+a line by itself just above the option.
2141
+
2142
+Applying defaults to the out-of-office configuration dialog via the corresponding
2143
+button will restore this domain, in case the user has changed it.
2144
+</para>
2145
+</listitem>
2146
+</varlistentry>
2147
+
2148
+<varlistentry>
2149
+<term><guilabel>Enable sending of out-of-office replies to messages marked as SPAM.</guilabel></term>
2150
+<listitem>
2151
+<para>
2152
+By default, out-of-office replies are not sent to messages marked as SPAM. To override this
2153
+behavior, add
2154
+</para>
2155
+<programlisting>OutOfOfficeReactToSpam=true
2156
+</programlisting><para>
2157
+to the [OutOfOffice] section of the kmail configuration file. If there is no such section, simply add "[OutOfOffice]" on
2158
+a line by itself just above the option.
2159
+
2160
+Applying defaults to the out-of-office configuration dialog via the corresponding
2161
+button will restore this setting, in case the user has changed it.
2162
+</para>
2163
+</listitem>
2164
+</varlistentry>
2014 2165
 
2015 2166
 <varlistentry>
2016 2167
 <term><guilabel>disregardUmask</guilabel></term>
@@ -2030,7 +2181,7 @@ To enable the feature, add a line reading (under [General] section):
2030 2181
 <listitem><para>Activate this option to automate the handling of not yet uploaded messages in disconnected IMAP
2031 2182
 folders that can not be uploaded. This can happen if the folder was removed from the server or your access
2032 2183
 rights have been restricted. Such messages will automatically moved to a newly created lost+found folder if
2033
-this option is enabled, you will be ask how to proceed everytime otherwise.
2184
+this option is enabled, you will be ask how to proceed every time otherwise.
2034 2185
 
2035 2186
 To enable the feature, add a line reading:
2036 2187
 </para>

+ 2
- 0
doc/kmail/index.docbook View File

@@ -9,6 +9,7 @@
9 9
   <!ENTITY kmail-menus SYSTEM "menus.docbook">
10 10
   <!ENTITY kmail-faq SYSTEM "faq.docbook">
11 11
   <!ENTITY kmail-importing SYSTEM "importing.docbook">
12
+  <!ENTITY kmail-chiasmus SYSTEM "using-chiasmus.docbook">
12 13
   <!ENTITY kmail-credits-and-licenses SYSTEM "credits-and-licenses.docbook">
13 14
   <!ENTITY % addindex "IGNORE">
14 15
   <!ENTITY % English "INCLUDE" > <!-- change language only here -->
@@ -126,6 +127,7 @@
126 127
 &kmail-menus;
127 128
 &kmail-faq;
128 129
 &kmail-importing;
130
+&kmail-chiasmus;
129 131
 &kmail-credits-and-licenses;
130 132
 
131 133
 <appendix id="installation">

+ 158
- 0
doc/kmail/using-chiasmus.docbook View File

@@ -0,0 +1,158 @@
1
+<chapter id="chiasmus">
2
+
3
+<chapterinfo>
4
+<authorgroup>
5
+<author>
6
+<firstname>Jan-Oliver</firstname>
7
+<surname>Wagner</surname>
8
+<affiliation><address>
9
+<email>jan@intevation.de</email>
10
+</address></affiliation>
11
+</author>
12
+<author>
13
+<firstname>Till</firstname>
14
+<surname>Adam</surname>
15
+<affiliation><address>
16
+<email>till@kdab.net</email>
17
+</address></affiliation>
18
+</author>
19
+
20
+</authorgroup>
21
+
22
+<date>2005-06-30</date>
23
+<releaseinfo>1.8</releaseinfo>
24
+</chapterinfo>
25
+
26
+<title>Using the Chiasmus encryption tool</title>
27
+
28
+<sect1 id="chiasmus-preparations">
29
+<title>Preparations</title>
30
+
31
+<para>
32
+To encrypt and decrypt with Chiasmus, you need the BSI's Chiasmus 
33
+command line tool for GNU/Linux. It is intended solely for use in
34
+government agencies and availabe from the BSI on request.
35
+</para>
36
+
37
+<para>
38
+When executed without parameters, the <command>chiasmus</command>
39
+program should output something like:
40
+</para>
41
+
42
+<para>
43
+<screen>
44
+Chiasmus (R) fuer Windows K 1.8.0.0
45
+Bundesamt fuer Sicherheit in der Informationstechnik
46
+Kontakt: Chiasmus@bsi.bund.de
47
+(C) 2001 - 2005
48
+[ ...]
49
+</screen>
50
+</para>
51
+
52
+<para>
53
+Version 1.8.0.0 was tested succesfully. Other versions may or may not
54
+work correctly.
55
+</para>
56
+
57
+<para>
58
+As a last preparation step a directory which will hold the key files
59
+ending in <filename>.xis</filename> has to be created, if none already exists. Usually
60
+<filename class="directory">~/.chiasmus/</filename>  is used.
61
+</para>
62
+
63
+</sect1>
64
+
65
+<sect1 id="chiasmus-configuration">
66
+	<title>Configuration</title>
67
+<para>
68
+Select <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure KMail
69
+</guimenuitem></menuchoice> and choose the <guilabel>Crypto-Backends</guilabel>
70
+tab on the Security page. Select the entry for <guilabel>Chiasmus</guilabel> and click 
71
+<guibutton>Configure....</guibutton> to open the configuration dialog 
72
+for the Chiasmus backend.
73
+</para>
74
+
75
+<para>
76
+Specify the path to the Chiasmus binary and the directory where key files are
77
+to be stored, using the file selection dialogs which open when you click the
78
+folder icons next to the path entries.
79
+</para>
80
+
81
+<para>
82
+Close the backend configuration dialog by clicking <guibutton>Ok</guibutton>
83
+and check the <guilabel>Chiasmus Checkbox</guilabel> to activate it. Then also close the main 
84
+configuration dialog.
85
+</para>
86
+
87
+</sect1>
88
+
89
+
90
+<sect1 id="chiasmus-encryption">
91
+	<title>Encryption</title>
92
+<para>
93
+To encrypt a message with Chiasmus, select <menuchoice><guimenu>
94
+Options</guimenu><guimenuitem>Encrypt message with chiasmus
95
+</guimenuitem></menuchoice>. A dialog comes up in which you can select
96
+the key file to use, as well as additional command line arguments to
97
+be passed to <command>chiasmus</command>.
98
+</para>
99
+
100
+<note>
101
+<para>
102
+If you want to use Chiasmus encryption regularly, you should add
103
+an icon for that option to your toolbar, using <menuchoice><guimenu>
104
+Settings</guimenu><guimenuitem>Configure toolbars</guimenuitem>
105
+</menuchoice>. Move the entry for <guilabel>Encrypt with Chiasmus
106
+</guilabel> from the left side of the dialog to the right, using the
107
+buttons between the two panes. You can then quickly enable or disable
108
+Chiasmus encryption using that toolbar button and have a visual 
109
+indication of the current state.
110
+</para>
111
+</note>
112
+
113
+<note>
114
+<para>
115
+If automatic saving of backup copies of currently edited messages is
116
+enabled, you will be prompted for your Chiasmus password, if Chiamsus
117
+encryption is active.
118
+</para>
119
+</note>
120
+
121
+<para>
122
+On message sending, you will be prompted for the password. If the password
123
+is correct, the text of the message and all its attachments will be
124
+encrypted.
125
+</para>
126
+
127
+<note>
128
+<para>
129
+The other signing and encryption options are completely independent of
130
+the Chiasmus encryption. You can use those in addition to Chiasmus,
131
+&eg; to sign the message.  Additional encryption, on the other hand,
132
+does not make much sense and complicates decryption for the
133
+recipients.
134
+</para>
135
+</note>
136
+
137
+</sect1>
138
+
139
+<sect1 id="chiasmus-decryption">
140
+	<title>Decryption</title>
141
+<para>
142
+&kmail; and &kontact; detect messages that have been encrypted
143
+using Chiasmus and will automatically ask for the key file to use for
144
+decryption, as well as the corresponding password. If the password is correct, the
145
+message will be decrypted and displayed.
146
+</para>
147
+
148
+<para>
149
+To decrypt attachments that were encrypted using Chiasmus (&ie; those which have
150
+a file name ending in <filename>.xia</filename>), right-click on the 
151
+attachment you want to decrypt and select <menuchoice><guimenuitem>Decrypt using Chiasmus
152
+</guimenuitem></menuchoice>. After you have chosen a key file to be used for decryption and
153
+entered the correct password for it, a file selection dialog will allow you
154
+to specify where the decrypted attachment should be saved.
155
+</para>
156
+</sect1>
157
+
158
+</chapter>

+ 21
- 2
doc/kmail/using-kmail.docbook View File

@@ -375,6 +375,25 @@ checker. Note that you may first need to configure the spellchecker using
375 375
 
376 376
 </sect2>
377 377
 
378
+<sect2 id="setup-text-snippets">
379
+<title>Setting Up the Text Snippets Tool</title>
380
+<para>
381
+When editing in the composer window you can store often used parts of text as snippets. To configure the capabilities of the mail snippets part select <menuchoice> <guimenu>Settings</guimenu> <guimenuitem>Snippets</guimenuitem> </menuchoice> from the menubar. A new panel will appear on the left side of the composer.
382
+</para>
383
+<para>To add a new snippet to Snippet Panel, right click on panel, click on <menuchoice><guimenu>Add Snippet</guimenu></menuchoice> in the context menu. A snippet editor dialog will appear, in which new text can be added and the snippet can be given a name. Also a <guilabel>Shortcut</guilabel> can be associated with the snippet. 
384
+Snippets can be grouped together as well by creating groups and adding snippets to particular group. If you want to view the stored text in a tooltip window whenever you keep the mouse cursor over the title of that snippet.
385
+</para>
386
+<para>The <guilabel>Snippets</guilabel> tool allows for a variable text in predefined places any time you insert a snippet into a file. To accomplish this  <guilabel>Snippets</guilabel> provides its own variables' mechanism. You can set up its behaviour in the snippet text itself by using separators ( $ ) that enclose the variable names. For example : $variablename$, $invoicenumber$, $weekno$.
387
+</para>
388
+<para>
389
+The variable separator can be changed to some other character by changing "snippetDelimiter" in [SnippetPart] section. The Text Snippet configuration file can be found here $KDEHOME/share/config/kmailsnippetrc .
390
+<programlisting>
391
+snippetDelimiter=$
392
+</programlisting>
393
+
394
+</para>
395
+
396
+</sect2>
378 397
 </sect1>
379 398
 
380 399
 <sect1 id="folders">
@@ -503,7 +522,7 @@ events by using the <guilabel>Generate free/busy and activate alarms for</guilab
503 522
 choice box.</para>
504 523
 
505 524
 <para>In case you don't want to receive reminders for folders shared by someone else,
506
-you can block them locally by activating the <guilabel>Block free/busy and alarms locally</guilabel>
525
+you can block them locally by activating the <guilabel>Block alarms locally</guilabel>
507 526
 checkbox.</para>
508 527
 
509 528
 </sect3>
@@ -1321,7 +1340,7 @@ which you do not like.</para>
1321 1340
 </varlistentry>
1322 1341
 <varlistentry>
1323 1342
 <term><guilabel>Forward To</guilabel></term>
1324
-<listitem><para>This will forward the message inline (&ie; as if you selected <menuchoice><guimenu>Message</guimenu><guimenuitem>Forward</guimenuitem><guimenuitem>Inline...</guimenuitem></menuchoice>) to another email address.</para>
1343
+<listitem><para>This will forward the message inline (&ie; as if you selected <menuchoice><guimenu>Message</guimenu><guimenuitem>Forward</guimenuitem><guimenuitem>Inline...</guimenuitem></menuchoice>) to another email address. You can select the template to be used when forwarding with this filter with the drop down list.</para>
1325 1344
 </listitem>
1326 1345
 </varlistentry>
1327 1346
 <varlistentry>

+ 82
- 3
doc/kontact/index.docbook View File

@@ -948,10 +948,89 @@ documentation</ulink>.
948 948
 </sect1>
949 949
 <sect1 id="kontact-configure-profiles">
950 950
 <title>&kontact; Profiles</title>
951
-<para>&kontact;'s profile support makes it possible to load and save user settings in profiles.
952
-The settings stored in the profile include typical Look&amp;Feel related options such as app-specific color schemes, icon sets, toolbar layout and application defaults. Personal information, e.g. accounts and identities are not stored in profiles. 
951
+<para>A profile is an arbitrary set of configuration values for any of the kontact components (mail, calendar, etc.) accompanied by a configuration file for the profile itself, which specifies its name, description etc. An example profile configuration file looks like this:
952
+</para>
953
+
954
+<informalexample>
955
+<para>
956
+<literallayout>
957
+[Kontact Profile]
958
+Description=Default KDE Kontact settings
959
+Identifier=KontactDefaults
960
+Name=Kontact Style
961
+</literallayout>
962
+</para>
963
+<para>
964
+The format is the standard .ini file format used for configuration throughout KDE, including in kiosk.
965
+</para>
966
+</informalexample>
967
+
968
+<para>
969
+&kontact;'s profile support makes it possible to load and save user settings in profiles.
970
+The settings stored in the profile include typical Look&amp;Feel related options such as app-specific color schemes, icon sets, toolbar layout and application defaults. Personal information, e.g. accounts and identities are not stored in profiles.
971
+</para>
972
+
973
+<para>
953 974
 Two default profiles are provided by Kontact: &quot;&kontact; Style&quot;, which contains the default &kontact; settings, and &quot;Outlook Style&quot;, adapting &kontact; to Microsoft Outlook Look&amp;Feel.
954
-The user can adapt existing profiles, create new profiles from his current settings, and import and export profiles. To manage profiles, choose &quot;Configure Profiles&quot; from the &quot;Settings&quot; menu.
975
+The user can adapt existing profiles, create new profiles from his current settings, and import and export profiles. 
976
+</para>
977
+
978
+<para>
979
+The dialog opened through Settings -> "Configure Profiles" allows profiles to be imported, exported, created, deleted and saved. They can also be loaded (applied) from there. Saving applies the currently active settings throughout Kontact to the selected profile, while import and export allow existing profiles to be written to or read from directories. To change a setting, one can edit the kontactrc file using a text editor and save it.
980
+</para>
981
+
982
+<para>
983
+Apart from the configuration file, a profile directory can contain configuration skeleton files for Kontact as a whole (kontactrc) or for any of the components (korganizerrc, kmailrc, etc.). These files can in turn contain any configuration values that the profile should set (overriding the user's current configuration) when the profile is loaded.
984
+
985
+<itemizedlist>
986
+        <listitem><para>
987
+          The korganizer configuration for the "Kontact Defaults" profile for example sets the calendar view to be merged, by default :
988
+<informalexample>
989
+<para>
990
+                [Views]
991
+                Agenda View Calendar Display=CalendarsMerged
992
+</para>
993
+</informalexample>
994
+</para>
995
+        </listitem>
996
+
997
+        <listitem><para>
998
+           The Outlook-like profile, on the other hand, sets it to be side by side, like in Outlook:
999
+<informalexample>
1000
+<para>
1001
+                [Views]
1002
+                Agenda View Calendar Display=CalendarsSideBySide
1003
+</para>
1004
+</informalexample>
1005
+</para>
1006
+        </listitem>
1007
+
1008
+        <listitem><para>
1009
+           If a profile wants to reset or remove a configuration key, it can specify that key like so:
1010
+<informalexample>
1011
+<para>
1012
+                [General]
1013
+                activeBackground=KONTACT_PROFILE_DELETE_KEY
1014
+</para>
1015
+</informalexample>
1016
+</para>
1017
+        </listitem>
1018
+       
1019
+        <listitem><para>
1020
+           This example resets the background color to whatever the KDE style suggests. The Outlook compatability profile sets this key to the Windows/Outlook color style:
1021
+<informalexample>
1022
+<para>
1023
+           [General]
1024
+           activeBackground=47,103,255
1025
+</para>
1026
+</informalexample>
1027
+</para>
1028
+        </listitem>
1029
+    </itemizedlist>
1030
+</para>
1031
+
1032
+<para>
1033
+Currently Kontact ships with two (incomplete) profiles, one which (re-)configures things to look and feel the way Kontact natively does, while the other one attempts to approach the look&amp;feel of Outlook on Windows. To this end they change a variety of things, concretely the color palette used, the icon theme used, how the calendar view is layed out, whether the navigation toolbar is visible how the splitter sizes are initialized, in the main kontact interface.
955 1034
 </para>
956 1035
 </sect1>
957 1036
 </chapter>

+ 87
- 80
doc/korganizer/index.docbook View File

@@ -4,8 +4,6 @@
4 4
   <!ENTITY kappname "&korganizer;">
5 5
   <!ENTITY package "kdepim">
6 6
   <!ENTITY plugins-chapter SYSTEM "plugins-chapter.docbook">
7
-  <!ENTITY exchange-plugin-workshop SYSTEM "exchange-plugin.docbook">
8
-  <!ENTITY group-scheduling-workshop SYSTEM "group-scheduling.docbook">
9 7
   <!ENTITY outlook-to-vcalendar-workshop SYSTEM "outlook-to-vcalendar.docbook">
10 8
   <!ENTITY % addindex "IGNORE">
11 9
   <!ENTITY % English "INCLUDE">
@@ -123,7 +121,7 @@ help you keep your schedule. </para></abstract>
123 121
 <keyword>alarm</keyword>
124 122
 <keyword>appointment</keyword>
125 123
 <keyword>event</keyword>
126
-<keyword>jornal</keyword>
124
+<keyword>journal</keyword>
127 125
 <keyword>to-do</keyword>
128 126
 </keywordset>
129 127
 
@@ -153,7 +151,7 @@ information and the freedom to choose the best solutions.
153 151
 &kontact;, offering you an integrated solution for your
154 152
 communication and information management needs: email, notes, contacts
155 153
 management, news reader, synchronization with portable devices, and news feeds
156
-reader.  Even if you don't use it inside &kontact;, &korganizer; is
154
+reader.  Even if you do not use it inside &kontact;, &korganizer; is
157 155
 integrated with the other &kde; <acronym>PIM</acronym> applications.
158 156
 For instance, you can configure it to show birthdays from &kaddressbook; in your
159 157
 agenda, use &kmail; to send and receive invitations, &etc;</para>
@@ -350,7 +348,7 @@ appear instantly, allowing you to set the new due date.</para>
350 348
 
351 349
 <para>This five-minute course covered only the basic operation of &korganizer;.
352 350
 Now you should go on and read the rest of this manual to unleash the full
353
-power of &korganizer;'s capabilities. But if you don't feel like it, you
351
+power of &korganizer;'s capabilities. But if you do not feel like it, you
354 352
 should at least skip through the <link linkend="faq">&FAQ;</link>.</para>
355 353
 
356 354
 </sect1>
@@ -405,7 +403,7 @@ want to use another resource, especially if you use a supported groupware
405 403
 server. Please ask the server administrator for the information required to
406 404
 configure the groupware resource, including free/busy information publishing
407 405
 and retrieving. Access to free/busy information allows an event organizer to
408
-take the attendee's calendar in consideration when adding him to the the event's
406
+take the attendee's calendar in consideration when adding him to the event's
409 407
 attendee list.</para>
410 408
 
411 409
 <note><para>Besides calendar storage, groupware servers typically offer contacts,
@@ -514,7 +512,7 @@ storing your calendar information under
514 512
 <listitem><para>
515 513
 If you have access to a server that supports the
516 514
 <ulink url="http://www.groupdav.org">GroupDav protocol</ulink>, add this
517
-resource in order to be able to to save (and load) events<!--, journals, free/busy information?--> and to-dos
515
+resource in order to be able to save (and load) events<!--, journals, free/busy information?--> and to-dos
518 516
 to the server. To add the resource, you will need to know the server &URL;, your
519 517
 user name and your password. The GroupDav protocol supports the storage of 
520 518
 contacts, so you may want to add and configure the &kaddressbook;
@@ -532,7 +530,7 @@ date list can be obtained at the
532 530
 <listitem><para>
533 531
 If you have access to a
534 532
 <ulink url="http://www.novell.com/products/groupwise">Novell GroupWise Server</ulink>
535
-(version 6.5 or later), add this resource in order to be able to to save (and load)
533
+(version 6.5 or later), add this resource in order to be able to save (and load)
536 534
 events, free/busy information <!--,journals ?-->and to-dos to the server. To add the resource, you will
537 535
 need to know the server &URL;, your user name and your password. There is
538 536
 support for storage of contacts, so you may want to configure &kaddressbook;
@@ -552,7 +550,7 @@ GroupWise resources, but &kmail;, &kaddressbook; too.</para>
552 550
 <term><guilabel>Calendar on IMAP Server via &kmail;</guilabel></term>
553 551
 <listitem><para>
554 552
 If you have access to a server that shares calendar data via IMAP, add this
555
-resource in order to be able to to save (and load) events, to-dos, free/busy
553
+resource in order to be able to save (and load) events, to-dos, free/busy
556 554
 information and journal entries to the IMAP server. To enable IMAP access, you
557 555
 will need to configure &kmail; first, then add the &korganizer; resource.
558 556
 Also, since you are using &kmail; to contact the server, &korganizer; will
@@ -617,7 +615,7 @@ corruption, you will lose only one calendar item, not the whole calendar.</para>
617 615
 <listitem><para>
618 616
 If you have access to a
619 617
 <ulink url="http://www.microsoft.com/exchange">Exchange 2000 Server</ulink>,
620
-add this resource in order to be able to to save (and load)
618
+add this resource in order to be able to save (and load)
621 619
 events FIXME:,journals, free/busy information and to-dos? to the server. To add the resource, you will
622 620
 need to know the server &URL;, FIXME:port? your user name and your password. There
623 621
 is support for (read only) contacts, so you may want to configure &kaddressbook;
@@ -690,7 +688,7 @@ the next start, if you set the <guilabel>Automatic Save</guilabel> to
690 688
 to a regular interval). If you plan to use a calendar resource in
691 689
 writable mode, make sure that your connection is stable, configure the
692 690
 resource to save the file on each change (or at frequent intervals),
693
-and don't reload the file at regular intervals.</para>
691
+and do not reload the file at regular intervals.</para>
694 692
 
695 693
 <para>A related, but opposite problem, is that two users cannot safely edit
696 694
 the same remote file at the same time, because the remote file resource does not
@@ -706,13 +704,13 @@ the file, his changes will be lost.
706 704
 <term><guilabel>SUSE &Linux; OpenExchange Server</guilabel></term>
707 705
 <listitem><para>
708 706
 If you have access to a
709
-<ulink url="http://www.novell.com/products/groupwise">SUSE &Linux; OpenExchange
710
-Server</ulink>, version 4.1, add this resource in order to be able to to save
707
+<ulink url="http://www.novell.com/coolsolutions/openexchange/">SUSE &Linux; OpenExchange
708
+Server</ulink>, version 4.1, add this resource in order to be able to save
711 709
 (and load) events, free/busy information <!--,journals ?-->and to-dos to the server. To add the
712 710
 resource, you will need to know the server &URL;, your user name and your
713 711
 password. There is support for storage of contacts, so you may want to configure
714 712
 &kaddressbook; resource.</para>
715
-<para>The most practical way to configure the access to a GroupWise server is
713
+<para>The most practical way to configure the access to an OpenExchange server is
716 714
 to use the <application>sloxwizard</application> wizard. You can start it
717 715
 from the command line prompt:
718 716
 
@@ -730,7 +728,7 @@ OpenExchange resources, but &kmail;, &kaddressbook; too.</para>
730 728
 <listitem><para>
731 729
 If you have access to a
732 730
 <ulink url="http://www.egroupware.org">eGroupware
733
-Server</ulink>, version 1.0, add this resource in order to be able to to save
731
+Server</ulink>, version 1.0, add this resource in order to be able to save
734 732
 (and load) events, free/busy information <!--,journals ?-->and to-dos to the server. To add the
735 733
 resource, you will need to know the server &URL;, your user name and your
736 734
 password. There is support for storage of contacts, so you may want to configure
@@ -827,8 +825,8 @@ calendar information with your colleagues and friends.</para>
827 825
 <!--TODO: use case: export your friends birthdays?-->
828 826
 
829 827
 <procedure id="procedure-export-html">
830
-<step><para>Disable all the resources you don't want to export, and filter out
831
-the items you don't want to export.</para></step>
828
+<step><para>Disable all the resources you do not want to export, and filter out
829
+the items you do not want to export.</para></step>
832 830
 <step><para>Choose the <menuchoice><guimenu>File</guimenu>
833 831
 <guisubmenu>Export</guisubmenu><guimenuitem>Export Web Page...</guimenuitem>
834 832
 </menuchoice> menu item. You will get a window with three tabs:
@@ -1062,7 +1060,7 @@ a <guiicon>chasing-arrows</guiicon> icon is displayed if it repeats multiple
1062 1060
 times. Hovering the mouse over an calendar item will bring up a tooltip
1063 1061
 with the item detailed information. To make &korganizer; show a red line
1064 1062
 marking the current-time on the current day (the Marcus Bains line),
1065
-check the <guilabel>Show current-time (Marcus Bains Line)</guilabel> box in the
1063
+check the <guilabel>Show current-time (Marcus Bains) line</guilabel> box in the
1066 1064
 <link linkend="config-main-views">&korganizer; view
1067 1065
 configuration</link>.</para>
1068 1066
 
@@ -1110,7 +1108,7 @@ will be able to quickly identify the type of event by its color.
1110 1108
 </para>
1111 1109
 
1112 1110
 <para>
1113
-The aganda view can display events from all your calendars merged into one view or
1111
+The agenda view can display events from all your calendars merged into one view or
1114 1112
 show a view per calendar. Having both views available via tabs is also possible and
1115 1113
 can be <link linkend="config-main-views">customized in the preferences dialog</link>.
1116 1114
 </para>
@@ -1337,7 +1335,7 @@ the agenda view or in the month view (depending on the
1337 1335
 <title>Filters</title>
1338 1336
 
1339 1337
 <para>To help you view, find and export your data, you can create and
1340
-use filters for your calendars. For instance, if you don't want to view
1338
+use filters for your calendars. For instance, if you do not want to view
1341 1339
 completed to-dos, you can filter them out, instead of
1342 1340
 <link linkend="managing-purge-archive">purging them</link>. If you assign
1343 1341
 categories, you can use them to create filters.</para>
@@ -1354,11 +1352,11 @@ and edit filters that will affect which items will be displayed by
1354 1352
 <para>The <menuchoice><guimenu>View</guimenu>
1355 1353
 <guisubmenu>Filter</guisubmenu></menuchoice> submenu and the filter toolbar drop
1356 1354
 down offer access to all available filters  created using
1357
-the <link linkend="menu-settings-edit-filters"><guilabel>Edit
1355
+the <link linkend="menu-settings-edit-filters"><guilabel>Edit Calendar
1358 1356
 Filters</guilabel></link> dialog. To toggle the display of the filters toolbar
1359 1357
 on and off, choose the <menuchoice><guimenu>Settings</guimenu>
1360 1358
 <guisubmenu>Toolbars</guisubmenu><guimenuitem>Filter toolbar</guimenuitem></menuchoice>.
1361
-If you don't want to use any filter, choose <guilabel>No filter</guilabel>.</para>
1359
+If you do not want to use any filter, choose <guilabel>No filter</guilabel>.</para>
1362 1360
 
1363 1361
 <para>Filters are useful when <link linkend="managing-export">exporting your
1364 1362
 calendar</link>. If you use a filter, only the filtered (visible) items will
@@ -1381,8 +1379,8 @@ entries) according to title, description, and/or categories.
1381 1379
 The find action will only search the specified fields.</para>
1382 1380
 
1383 1381
 <tip><para>You can use wildcards if you do not remember the exact summary. If
1384
-you don't know single character of the summary, put <userinput>?</userinput>
1385
-instead of the missing character. If you don't know more characters, use
1382
+you do not know single character of the summary, put <userinput>?</userinput>
1383
+instead of the missing character. If you do not know more characters, use
1386 1384
 <userinput>*</userinput>. For instance if you know that the event or to-do has
1387 1385
 <emphasis>meeting</emphasis> in the beginning and <emphasis>product</emphasis>
1388 1386
 after, you would write <userinput>meeting*product</userinput> in the Find dialog.
@@ -1449,7 +1447,7 @@ Enter your data as described below.</para></step>
1449 1447
 
1450 1448
 <para>This is a thorough description of the individual event window fields and
1451 1449
 widgets. Not all fields have to be filled in; some can be left empty. Read the
1452
-<link linkend="entering-data-required-fields">Required fields section</link>
1450
+<link linkend="entering-data-required-fields">Required fields</link> section
1453 1451
 for detailed information. And if you prefer to learn by example, there's one
1454 1452
 in the <link linkend="examples-entering-event">Entering event</link> section.
1455 1453
 </para>
@@ -1511,7 +1509,7 @@ program; if you do not, the program will not run.</para></tip>-->
1511 1509
 reminded, or click the <guibutton>Advanced</guibutton> button to open the
1512 1510
 <guilabel>Edit Reminders</guilabel> dialog. Using this dialog, you can set
1513 1511
 repeating intervals for your reminders, and create special reminders that play
1514
-sounds, run programs, or send emails.</para>
1512
+sounds or run programs.</para>
1515 1513
 
1516 1514
 <!--Click the musical <guiicon>Note</guiicon> symbol to choose the
1517 1515
 alarm sound. Click the <guiicon>Gear</guiicon> icon to browse for a
@@ -1522,7 +1520,7 @@ program that should run at the alarm time.</para>--></listitem>
1522 1520
 <term><guilabel>Show Time As:</guilabel></term>
1523 1521
 <listitem><para>The duration of the event may be shown as Busy or Free in your
1524 1522
 schedule. Choose it from the <guilabel>Show Time As</guilabel>
1525
-menu.</para></listitem>
1523
+drop down box.</para></listitem>
1526 1524
 </varlistentry>
1527 1525
 
1528 1526
 <varlistentry>
@@ -1540,7 +1538,7 @@ you.</para></listitem>
1540 1538
 <term><guilabel>Select Categories</guilabel></term>
1541 1539
 <listitem><para>You can assign several
1542 1540
 <link linkend="categories-view">categories</link> to a calendar item. Click the
1543
-<guilabel>Select Categories</guilabel> button to open the
1541
+<guilabel>Select</guilabel> button to open the
1544 1542
 <guilabel>Select Categories</guilabel> dialog. Check the category boxes to
1545 1543
 assign suitable categories to the event. You can also add a new category, modify
1546 1544
 a category or delete a category by pressing the button
@@ -1556,8 +1554,8 @@ either Personal or Special Occasion - it is your choice.</para></tip>
1556 1554
 <varlistentry>
1557 1555
 <term><guilabel>Access:</guilabel></term>
1558 1556
 <listitem><para>Choose <guilabel>Private</guilabel> or <guilabel>Confidential</guilabel>
1559
-to keep the event private or confidential. Currently, this choice correctly
1560
-sets the <quote>CLASS</quote> attribute of the events to
1557
+to keep the event private or confidential. Currently, this choice correctly
1558
+sets the <quote>CLASS</quote> attribute of the events to
1561 1559
 <quote>PUBLIC</quote>, <quote>PRIVATE</quote> or <quote>CONFIDENTIAL</quote>.
1562 1560
 However, if these settings are really used to restrict the access of the information
1563 1561
 depends on the client and / or groupware server implementation.</para>
@@ -1572,7 +1570,7 @@ only you can access.</para></warning></listitem>
1572 1570
 
1573 1571
 </variablelist>
1574 1572
 
1575
-<para>When you want to confirm, call off or revert the entered data, choose
1573
+<para>When you want to confirm, apply or call off the entered data, choose
1576 1574
 among the <link linkend="reference-action-buttons">Action Buttons</link>,
1577 1575
 <guibutton>OK</guibutton>, <guibutton>Apply</guibutton> and
1578 1576
 <guibutton>Cancel</guibutton>.</para>
@@ -1649,7 +1647,7 @@ on.</para></listitem>
1649 1647
 <para>This is similar to Monthly.  You need to choose whether or not you
1650 1648
 are indicating a calendar day of the year (&eg;, the 250th day of the
1651 1649
 year) - <guilabel>Recur on day <replaceable>#</replaceable> of the
1652
-year</guilabel>, in in a specific week on a specific day of the week of a month
1650
+year</guilabel>, in a specific week on a specific day of the week of a month
1653 1651
 (&eg;, the 2nd Tuesday of March), or the day of the month in a
1654 1652
 particular month of the year - <guilabel>Recur on day <replaceable>#</replaceable>
1655 1653
 of the <replaceable>month</replaceable></guilabel>.  By default, &korganizer;
@@ -1775,7 +1773,7 @@ is displayed in the details list window gives you quick overview of what
1775 1773
 should be done to make the event successful. It can be used for sorting (see
1776 1774
 above). If you use groupware schedule and request responses from your
1777 1775
 attendees, as you receive the responses the status of the attendee will be
1778
-updated. If you don't request responses, you will have to update the status
1776
+updated. If you do not request responses, you will have to update the status
1779 1777
 manually.</para></listitem>
1780 1778
 </varlistentry>
1781 1779
 
@@ -1819,7 +1817,7 @@ sending the invitations.</para>
1819 1817
 represents one of the attendees, listed on the left. The marked areas on the
1820 1818
 chart represent the time already taken by other events, unmarked areas represent
1821 1819
 time free from other events. You can move the event to a different point in time
1822
-by dragging it with the mouse, or resize it, by moving the edges of the highlighted
1820
+by dragging it with the mouse, or resize it by moving the edges of the highlighted
1823 1821
 area with the mouse.</para>
1824 1822
 
1825 1823
 <para>The free/busy information is only available if the
@@ -1827,7 +1825,7 @@ attendee publishes his free/busy schedule, and if &korganizer; is correctly
1827 1825
 configured to retrieve it. For more information about configuring &korganizer;
1828 1826
 to publish and retrieve free/busy information, please check the
1829 1827
 <xref linkend="config" />. Double-clicking on an attendee entry in the list
1830
-will allow you to enter the location of their free/busy information. 
1828
+will allow you to enter the location of their free/busy information.
1831 1829
 </para>
1832 1830
 
1833 1831
 <variablelist>
@@ -1837,7 +1835,7 @@ will allow you to enter the location of their free/busy information.
1837 1835
 <listitem><para>Sets the zoom level on the schedule chart. <guilabel>Hour</guilabel>
1838 1836
 shows a range of several hours, <guilabel>Day</guilabel> shows a range of a few
1839 1837
 days, <guilabel>Week</guilabel> shows a range of a few months, and
1840
-<guilabel>Month</guilabel> shows a range of a few years, while
1838
+<guilabel>Month</guilabel> shows a range of a few months, while
1841 1839
 <guilabel>Automatic</guilabel> selects the range most appropriate for the
1842 1840
 current event or to-do.</para></listitem>
1843 1841
 </varlistentry>
@@ -1989,7 +1987,7 @@ where the to-do will take place.</para></listitem>
1989 1987
 <term><guilabel>Date &amp; Time</guilabel></term>
1990 1988
 <listitem><para>The <guilabel>Due</guilabel> and <guilabel>Start</guilabel>
1991 1989
 boxes are not initially checked, as to-dos usually do not have a start and due
1992
-date. Check one of both boxes and 
1990
+date. Check one or both boxes and
1993 1991
 change these dates as desired. Enter the dates directly or use the 
1994 1992
 <link linkend="glossary" endterm="gloss-calendar-widget">Calendar Widget</link>. 
1995 1993
 Choose time from quarter hour intervals, or enter the desired time directly into 
@@ -2013,7 +2011,7 @@ in steps of 10%.</para></listitem>
2013 2011
 <varlistentry>
2014 2012
 <term><guilabel>Priority</guilabel></term>
2015 2013
 <listitem><para>Assign a priority to your to-do.  This drop down menu offers
2016
-priorities from one to five, one being the highest.  Initially to-dos are set
2014
+priorities from one to nine, one being the highest.  Initially to-dos are set
2017 2015
 to priority five (medium).</para></listitem>
2018 2016
 </varlistentry>
2019 2017
 
@@ -2029,7 +2027,7 @@ program; if you do not, the program will not run.</para></tip>-->
2029 2027
 reminded, or click the <guibutton>Advanced</guibutton> button to open the
2030 2028
 <guilabel>Edit Reminders</guilabel> dialog. Using this dialog, you can set
2031 2029
 repeating intervals for your reminders, and create special reminders that play
2032
-sounds, run programs, or send emails.</para>
2030
+sounds or run programs.</para>
2033 2031
 
2034 2032
 <!--Click the musical <guiicon>Note</guiicon> symbol to choose the
2035 2033
 alarm sound. Click the <guiicon>Gear</guiicon> icon to browse for a
@@ -2188,7 +2186,7 @@ events with other users using one of these clients.
2188 2186
 &korganizer; is integrated with &kmail; for receiving, processing, and sending
2189 2187
 events, event responses, updates, cancellations, &etc; For instance, when you
2190 2188
 get an invitation in &kmail;, and decide to
2191
-accept it, by clicking the the <guilabel>accept</guilabel> link in the mail
2189
+accept it, by clicking the <guilabel>accept</guilabel> link in the mail
2192 2190
 body, the event is added to your calendar, and a response to the event's
2193 2191
 organizer is sent automatically.</para>
2194 2192
 
@@ -2288,11 +2286,11 @@ choosing the <menuchoice><guimenu>Schedule</guimenu><guimenuitem>Send Invitation
2288 2286
 to Attendees</guimenuitem></menuchoice> menu item.
2289 2287
 The attendees get an email containing all the relevant information
2290 2288
 for the event or to-do. They can respond to the meeting proposal by accepting or
2291
-rejecting it or by making a counter proposal. They can also delegate or forward the 
2289
+rejecting it or by making a counter proposal. They can also delegate or forward the
2292 2290
 invitation.
2293
-All this information is sent to you by email again and, if you have configured &kmail; 
2294
-appropriately the attendees responses are automatically inserted in your calendar. If