* 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-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent 4f6c584bac
commit cc29364f06

@ -0,0 +1 @@
Revision 1170137

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

File diff suppressed because it is too large Load Diff

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

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

@ -225,7 +225,7 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
setFocusPolicy(TQWidget::StrongFocus);
TQVBoxLayout *lt = new TQVBoxLayout( this );
m_horizontalSplitter = new TQSplitter(TQSplitter::Horizontal, this);
m_horizontalSplitter->setOpaqueResize(true);
@ -260,7 +260,7 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
connect(m_tagNodeListView, TQT_SIGNAL(signalContextMenu(KListView*, TreeNode*, const TQPoint&)), this, TQT_SLOT(slotFeedTreeContextMenu(KListView*, TreeNode*, const TQPoint&)));
ProgressManager::self()->setFeedList(m_feedList);
m_tabs = new TabWidget(m_horizontalSplitter);
@ -321,8 +321,12 @@ View::View( Part *part, TQWidget *parent, ActionManagerImpl* actionManager, cons
connectFrame(m_mainFrame);
m_tabs->addFrame(m_mainFrame);
m_horizontalSplitter->setSizes( Settings::splitter1Sizes() );
m_articleSplitter->setSizes( Settings::splitter2Sizes() );
const TQValueList<int> sp1sizes = Settings::splitter1Sizes();
if ( sp1sizes.count() >= m_horizontalSplitter->sizes().count() )
m_horizontalSplitter->setSizes( sp1sizes );
const TQValueList<int> sp2sizes = Settings::splitter2Sizes();
if ( sp2sizes.count() >= m_articleSplitter->sizes().count() )
m_articleSplitter->setSizes( sp2sizes );
KConfig *conf = Settings::self()->config();
conf->setGroup("General");
@ -374,7 +378,7 @@ void View::slotSettingsChanged()
{
// if tagging is hidden, show only feed list
m_listTabWidget->setViewMode(Settings::showTaggingGUI() ? ListTabWidget::verticalTabs : ListTabWidget::single);
}
void View::slotOnShutdown()
@ -406,8 +410,12 @@ void View::slotOnShutdown()
void View::saveSettings()
{
Settings::setSplitter1Sizes( m_horizontalSplitter->sizes() );
Settings::setSplitter2Sizes( m_articleSplitter->sizes() );
const TQValueList<int> spl1 = m_horizontalSplitter->sizes();
if ( spl1.contains( 0 ) == 0 )
Settings::setSplitter1Sizes( spl1 );
const TQValueList<int> spl2 = m_articleSplitter->sizes();
if ( spl2.contains( 0 ) == 0 )
Settings::setSplitter2Sizes( spl2 );
Settings::setViewMode( m_viewMode );
Settings::writeConfig();
}
@ -415,7 +423,7 @@ void View::saveSettings()
void View::slotOpenNewTab(const KURL& url, bool background)
{
PageViewer* page = new PageViewer(this, "page");
connect( m_part, TQT_SIGNAL(signalSettingsChanged()), page, TQT_SLOT(slotPaletteOrFontChanged()));
connect( page, TQT_SIGNAL(setTabIcon(const TQPixmap&)),
@ -822,7 +830,7 @@ void View::slotOpenURL(const KURL& url, Viewer* currentViewer, BrowserRun::Openi
else
{
KParts::URLArgs args = currentViewer ? currentViewer->browserExtension()->urlArgs() : KParts::URLArgs();
BrowserRun* r = new BrowserRun(this, currentViewer, url, args, mode);
connect(r, TQT_SIGNAL(signalOpenInViewer(const KURL&, Akregator::Viewer*, Akregator::BrowserRun::OpeningMode)),
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
//TODO: KDE4 remove this ugly ugly hack
void View::slotUrlClickedInViewer(const KURL& url, Viewer* viewer, bool newTab, bool background)
{
if (!newTab)
{
slotOpenURL(url, viewer, BrowserRun::CURRENT_TAB);
@ -983,7 +991,7 @@ void View::slotNextUnreadArticle()
{
if (m_viewMode == CombinedView)
m_listTabWidget->activeView()->slotNextUnreadFeed();
TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
if (sel && sel->unread() > 0)
m_articleList->slotNextUnreadArticle();
@ -995,7 +1003,7 @@ void View::slotPrevUnreadArticle()
{
if (m_viewMode == CombinedView)
m_listTabWidget->activeView()->slotPrevUnreadFeed();
TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
if (sel && sel->unread() > 0)
m_articleList->slotPreviousUnreadArticle();
@ -1211,8 +1219,8 @@ void View::slotOpenCurrentArticle()
link = article.link();
else if (article.guidIsPermaLink())
link = KURL(article.guid());
if (link.isValid())
if (link.isValid())
{
slotOpenURL(link, 0L, BrowserRun::NEW_TAB_FOREGROUND);
}
@ -1236,8 +1244,8 @@ void View::slotOpenCurrentArticleBackgroundTab()
link = article.link();
else if (article.guidIsPermaLink())
link = KURL(article.guid());
if (link.isValid())
if (link.isValid())
{
slotOpenURL(link, 0L, BrowserRun::NEW_TAB_BACKGROUND);
}
@ -1307,7 +1315,7 @@ void View::slotArticleDelete()
msg = i18n("<qt>Are you sure you want to delete article <b>%1</b>?</qt>").arg(TQStyleSheet::escape(articles.first().title()));
break;
default:
msg = i18n("<qt>Are you sure you want to delete the selected article?</qt>",
msg = i18n("<qt>Are you sure you want to delete the selected article?</qt>",
"<qt>Are you sure you want to delete the %n selected articles?</qt>",
articles.count());
}
@ -1386,7 +1394,7 @@ void View::slotTextToSpeechRequest()
else
{
TQString selectedText = static_cast<PageViewer *>(m_currentFrame->part())->selectedText();
if (!selectedText.isEmpty())
SpeechClient::self()->slotSpeak(selectedText, "en");
}
@ -1439,7 +1447,7 @@ void View::slotMouseOverInfo(const KFileItem *kifi)
void View::readProperties(KConfig* config)
{
if (!Settings::resetQuickFilterOnNodeChange())
{
m_searchBar->slotSetText(config->readEntry("searchLine"));
@ -1447,7 +1455,7 @@ void View::readProperties(KConfig* config)
if (statusfilter != -1)
m_searchBar->slotSetStatus(statusfilter);
}
int selectedID = config->readNumEntry("selectedNodeID", -1);
if (selectedID != -1)
{
@ -1471,7 +1479,7 @@ void View::saveProperties(KConfig* config)
// save filter settings
config->writeEntry("searchLine", m_searchBar->text());
config->writeEntry("searchCombo", m_searchBar->status());
TreeNode* sel = m_listTabWidget->activeView()->selectedNode();
if (sel)

@ -29,7 +29,6 @@ Name[hu]=Hírforrás felvéve
Name[is]=Straum bætt við
Name[it]=Aggiunta fonte
Name[ja]=フィード追加
Name[ka]=დამატებულია კვება
Name[kk]=Қор қосылды
Name[km]=បាន​បន្ថែម​មតិព័ត៌មាន
Name[ko]=피드 추가됨
@ -53,8 +52,7 @@ Name[sv]=Kanal tillagd
Name[ta]=பீஃட் சேர்க்கப்பட்டது
Name[tr]=Haber kaynağı eklendi
Name[uk]=Подачу додано
Name[uz]=Yangiliklar tasmasi qoʻshildi
Name[uz@cyrillic]=Янгиликлар тасмаси қўшилди
Name[uz]=Янгиликлар тасмаси қўшилди
Name[zh_CN]=添加了新闻源
Name[zh_TW]=已加入 Feed
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
Comment[is]=Nýjum straum var bætt við Akregator
Comment[it]=Una nuova fonte è stata aggiunta ad Akregator da remoto
Comment[ja]=新規フィードがリモートで Akregator に追加されました
Comment[ka]=Akregator-ის სიას დისტანციურად ახალი კვება დაემატა
Comment[kk]=Akregator-ға қашықтан жаңа қор қосылды
Comment[km]=បាន​បន្ថែម​មតិព័ត៌មាន​ថ្មី​មួយ​ពី​ចម្ងាយ​ទៅ Akregator
Comment[ko]=Akregator에 피드가 원격으로 추가됨
@ -102,8 +99,7 @@ Comment[sv]=En ny kanal har lagts till i aKregator utifrån
Comment[ta]=Akregatorக்கு ஒரு புதிய உள்ளீடு சேர்க்கப்பட்டது
Comment[tr]=Akregator'a yeni bir haber kaynağı eklendi
Comment[uk]=Нову подачу було віддалено додано до Akregator
Comment[uz]=Akregator dasturiga yangi yangiliklar tasmasi qoʻshildi
Comment[uz@cyrillic]=Akregator дастурига янги янгиликлар тасмаси қўшилди
Comment[uz]=Akregator дастурига янги янгиликлар тасмаси қўшилди
Comment[zh_CN]=新闻源远程添加进了 Akregator
Comment[zh_TW]=已從遠端加入新的 feed 到 Akregator
default_presentation=4
@ -135,7 +131,6 @@ Name[hu]=Hírekk
Name[is]=Nýjar greinar
Name[it]=Nuovi articoli
Name[ja]=新規記事
Name[ka]=ახალი სტატიები
Name[kk]=Жаңа мақалалар
Name[km]=អត្ថបទ​ថ្មី
Name[ko]=새 글
@ -160,8 +155,7 @@ Name[sv]=Nya artiklar
Name[ta]= புதிய செய்திகள்
Name[tr]=Yeni Haberler
Name[uk]=Нові статті
Name[uz]=Yangi maqolalar
Name[uz@cyrillic]=Янги мақолалар
Name[uz]=Янги мақолалар
Name[zh_CN]=新闻文章
Name[zh_TW]=新文章
Comment=New articles were fetched
@ -188,7 +182,6 @@ Comment[hu]=Új hírek lettek letöltve
Comment[is]=Nýjar greinar voru sóttar
Comment[it]=I nuovi articoli sono stati recuperati
Comment[ja]=新規記事を取得しました
Comment[ka]=მიღებულია ახალი სტატიები
Comment[kk]=Жаңа мақалалар қабылданды
Comment[km]=បាន​ប្រមូល​អត្ថបទ​ថ្មី
Comment[ko]=새 글을 가져옴

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

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

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

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

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

@ -447,6 +447,13 @@ TQVariant QGpgMECryptoConfigEntry::stringToValue( const TQString& str, bool unes
bool isString = isStringType();
if ( isList() ) {
if ( argType() == ArgType_None ) {
bool ok = true;
const TQVariant v = str.isEmpty() ? 0U : str.toUInt( &ok ) ;
if ( !ok )
kdWarning(5150) << "list-of-none should have an unsigned int as value:" << str << endl;
return v;
}
TQValueList<TQVariant> lst;
TQStringList items = TQStringList::split( ',', str );
for( TQStringList::const_iterator valit = items.begin(); valit != items.end(); ++valit ) {
@ -657,7 +664,10 @@ void QGpgMECryptoConfigEntry::resetToDefault()
if ( mFlags & GPGCONF_FLAG_DEFAULT )
mValue = mDefaultValue;
else if ( mArgType == ArgType_None )
mValue = false;
if ( isList() )
mValue = 0U;
else
mValue = false;
}
void QGpgMECryptoConfigEntry::setBoolValue( bool b )
@ -715,7 +725,9 @@ void QGpgMECryptoConfigEntry::setNumberOfTimesSet( unsigned int i )
{
Q_ASSERT( mArgType == ArgType_None );
Q_ASSERT( isList() );
setUIntValue( i );
mValue = i;
mSet = i > 0;
mDirty = true;
}
void QGpgMECryptoConfigEntry::setStringValueList( const TQStringList& lst )

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

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

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

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

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

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

@ -75,11 +75,15 @@ GpgME::Error Kleo::QGpgMEImportJob::start( const TQByteArray & keyData ) {
GpgME::ImportResult Kleo::QGpgMEImportJob::exec( const TQByteArray & keyData ) {
setup( keyData );
return mCtx->importKeys( *mInData );
const GpgME::ImportResult res = mCtx->importKeys( *mInData );
getAuditLog();
return res;
}
void Kleo::QGpgMEImportJob::doOperationDoneEvent( const GpgME::Error & ) {
emit result( mCtx->importResult() );
const GpgME::ImportResult res = mCtx->importResult();
getAuditLog();
emit result( res );
}

@ -236,21 +236,19 @@ void Kleo::QGpgMEJob::createOutData() {
static const unsigned int GetAuditLogFlags = GpgME::Context::AuditLogWithHelp|GpgME::Context::HtmlAuditLog;
static TQString audit_log_as_html( GpgME::Context * ctx ) {
if ( !ctx )
return TQString();
static TQString audit_log_as_html( GpgME::Context * ctx, GpgME::Error & err ) {
assert( ctx );
QGpgME::QByteArrayDataProvider dp;
GpgME::Data data( &dp );
assert( !data.isNull() );
if ( const GpgME::Error err = ctx->getAuditLog( data, GetAuditLogFlags ) )
if ( ( err = ctx->getAuditLog( data, GetAuditLogFlags ) ) )
return TQString();
else
return TQString::fromUtf8( dp.data().data() );
const TQByteArray ba = dp.data();
return TQString::fromUtf8( ba.data(), ba.size() );
}
void Kleo::QGpgMEJob::doSlotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & e ) {
if ( context == mCtx ) {
getAuditLog();
doEmitDoneSignal();
doOperationDoneEvent( e );
mThis->deleteLater();
@ -258,7 +256,9 @@ void Kleo::QGpgMEJob::doSlotOperationDoneEvent( GpgME::Context * context, const
}
void Kleo::QGpgMEJob::getAuditLog() {
mAuditLogAsHtml = audit_log_as_html( mCtx );
if ( !mCtx )
return;
mAuditLogAsHtml = audit_log_as_html( mCtx, mAuditLogError );
}
void Kleo::QGpgMEJob::doSlotCancel() {

@ -37,6 +37,7 @@
#include <gpgmepp/interfaces/passphraseprovider.h>
#include <gpgmepp/key.h>
#include <gpgmepp/context.h>
#include <tqcstring.h>
#include <tqstring.h>
@ -45,8 +46,6 @@
#include <kdepimmacros.h>
namespace GpgME {
class Error;
class Context;
class Data;
}
@ -120,6 +119,7 @@ namespace Kleo {
virtual void doEmitDoneSignal() = 0;
void doSlotCancel();
TQString auditLogAsHtml() const { return mAuditLogAsHtml; }
GpgME::Error auditLogError() const { return mAuditLogError; }
private:
/*! \reimp from GpgME::ProgressProvider */
@ -146,6 +146,7 @@ namespace Kleo {
unsigned int mNumPatterns;
unsigned int mChunkSize;
unsigned int mPatternStartIndex, mPatternEndIndex;
GpgME::Error mAuditLogError;
TQString mAuditLogAsHtml;
};
@ -154,7 +155,7 @@ namespace Kleo {
#define make_slot_cancel private: void slotCancel() { QGpgMEJob::doSlotCancel(); }
#define make_progress_emitter private: void doEmitProgressSignal( const TQString & what, int cur, int tot ) { emit progress( what, cur, tot ); }
#define make_done_emitter private: void doEmitDoneSignal() { emit done(); }
#define make_auditLogAsHtml private: TQString auditLogAsHtml() const { return QGpgMEJob::auditLogAsHtml(); }
#define make_auditLogAsHtml private: TQString auditLogAsHtml() const { return QGpgMEJob::auditLogAsHtml(); } GpgME::Error auditLogError() const { return QGpgMEJob::auditLogError(); }
#define QGPGME_JOB make_slot_cancel make_progress_emitter make_done_emitter make_auditLogAsHtml
#endif // __KLEO_QGPGMEJOB_H__

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

@ -48,6 +48,7 @@
#include <kdebug.h>
#include <tqstringlist.h>
#include <tqtimer.h>
#include <algorithm>
@ -97,6 +98,10 @@ GpgME::Error Kleo::QGpgMEKeyListJob::start( const TQStringList & pats, bool secr
kdDebug(5150) << "QGpgMEKeyListJob::start(): retrying keylisting with chunksize " << chunkSize() << endl;
continue;
}
} else if ( err.code() == GPG_ERR_EOF ) {
kdDebug(5150) << "QGpgMEKeyListJob::start(): early end of keylisting, trying to fake an empty result" << endl;
TQTimer::singleShot( 10, this, TQT_SLOT(slotFakeOperationDoneEvent()) );
return GpgME::Error();
}
deleteLater();
mResult = GpgME::KeyListResult( 0, err );
@ -158,6 +163,17 @@ void Kleo::QGpgMEKeyListJob::slotNextKeyEvent( GpgME::Context * context, const G
emit nextKey( key );
}
void Kleo::QGpgMEKeyListJob::slotFakeOperationDoneEvent() {
const GpgME::KeyListResult res = mCtx->keyListResult();
if ( !res.error().code() == GPG_ERR_EOF )
kdDebug(5150) << "QGpgMEKeyListJob::slotFakeOperationDoneEvent: expected EOF, got "
<< res.error().asString() << endl;
mResult = GpgME::KeyListResult();
emit done();
emit result( mResult );
deleteLater();
}
void Kleo::QGpgMEKeyListJob::slotOperationDoneEvent( GpgME::Context * context, const GpgME::Error & ) {
if ( context != mCtx )
return;

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

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

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

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

@ -84,7 +84,10 @@ GpgME::VerificationResult Kleo::QGpgMEVerifyOpaqueJob::exec( const TQByteArray &
}
void Kleo::QGpgMEVerifyOpaqueJob::doOperationDoneEvent( const GpgME::Error & ) {
emit result( mCtx->verificationResult(), mOutDataDataProvider->data() );
const GpgME::VerificationResult res = mCtx->verificationResult();
const TQByteArray plainText = mOutDataDataProvider->data();
getAuditLog();
emit result( res, plainText );
}

@ -52,9 +52,13 @@
#include "refreshkeysjob.h"
#include "specialjob.h"
#include <gpgmepp/context.h>
#include <tqapplication.h>
#include <kdebug.h>
#include <gpg-error.h>
Kleo::Job::Job( TQObject * parent, const char * name )
: TQObject( parent, name )
{
@ -75,6 +79,16 @@ TQString Kleo::Job::auditLogAsHtml() const {
return TQString();
}
GpgME::Error Kleo::Job::auditLogError() const {
kdDebug() << "Kleo::Job::auditLogError() should be reimplemented in Kleo::Job subclasses!" << endl;
return GpgME::Error( gpg_error( GPG_ERR_NOT_IMPLEMENTED ) );
}
bool Kleo::Job::isAuditLogSupported() const {
const GpgME::Error err = auditLogError();
return err.code() != GPG_ERR_NOT_IMPLEMENTED ;
}
#define make_job_subclass(x) \
Kleo::x::x( TQObject * parent, const char * name ) : Job( parent, name ) {} \
Kleo::x::~x() {}

@ -38,6 +38,10 @@
class TQWidget;
namespace GpgME {
class Error;
}
namespace Kleo {
/**
@ -67,6 +71,8 @@ namespace Kleo {
virtual void showErrorDialog( TQWidget * parent=0, const TQString & caption=TQString::null ) const;
virtual TQString auditLogAsHtml() const;
virtual GpgME::Error auditLogError() const;
bool isAuditLogSupported() const;
public slots:
virtual void slotCancel() = 0;

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

@ -29,6 +29,7 @@
*/
#include <config.h>
#include <cstdlib>
#include <kleo/cryptobackendfactory.h>
#include <kleo/verifydetachedjob.h>

@ -46,6 +46,12 @@ Kleo::CryptoConfigDialog::CryptoConfigDialog( Kleo::CryptoConfig* config, TQWidg
setMainWidget( mMainWidget );
connect( mMainWidget, TQT_SIGNAL( changed() ), TQT_SLOT( slotChanged() ) );
enableButton( Apply, false );
if ( mMainWidget->hasError() ) {
showButton( Default, false );
showButton( User1, false );
showButton( Apply, false );
showButton( Ok, false );
}
// Automatically assign accelerators
KAcceleratorManager::manage( this );

@ -62,8 +62,20 @@ static inline TQPixmap loadIcon( TQString s ) {
->loadIcon( s.replace( TQRegExp( "[^a-zA-Z0-9_]" ), "_" ), KIcon::NoGroup, KIcon::SizeMedium );
}
static unsigned int num_components_with_options( const Kleo::CryptoConfig * config ) {
if ( !config )
return 0;
const TQStringList components = config->componentList();
unsigned int result = 0;
for ( TQStringList::const_iterator it = components.begin() ; it != components.end() ; ++it )
if ( const Kleo::CryptoConfigComponent * const comp = config->component( *it ) )
if ( !comp->groupList().empty() )
++result;
return result;
}
static const KJanusWidget::Face determineJanusFace( const Kleo::CryptoConfig * config ) {
return config && config->componentList().size() < 2
return num_components_with_options( config ) < 2
? KJanusWidget::Plain
: KJanusWidget::IconList ;
}
@ -115,6 +127,22 @@ Kleo::CryptoConfigModule::CryptoConfigModule( Kleo::CryptoConfig* config, TQWidg
+ scrollView->style().pixelMetric(TQStyle::PM_ScrollBarExtent),
QMIN( compGUI->sizeHint().height(), dialogHeight ) );
}
if ( mComponentGUIs.empty() ) {
Q_ASSERT( face() == Plain );
const TQString msg = i18n("The gpgconf tool used to provide the information "
"for this dialog does not seem to be installed "
"properly. It did not return any components. "
"Try running \"%1\" on the command line for more "
"information.")
.arg( components.empty() ? "gpgconf --list-components" : "gpgconf --list-options gpg" );
TQLabel * label = new TQLabel( msg, vbox );
label->setAlignment( TQt::WordBreak );
label->setMinimumHeight( fontMetrics().lineSpacing() * 5 );
}
}
bool Kleo::CryptoConfigModule::hasError() const {
return mComponentGUIs.empty();
}
void Kleo::CryptoConfigModule::save()

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

@ -61,6 +61,8 @@
#include <kconfig.h>
#include <kmessagebox.h>
#include <kprocess.h>
#include <kactivelabel.h>
#include <kurl.h>
// Qt
#include <tqcheckbox.h>
@ -85,7 +87,12 @@ static bool checkKeyUsage( const GpgME::Key & key, unsigned int keyUsage ) {
if ( keyUsage & Kleo::KeySelectionDialog::ValidKeys ) {
if ( key.isInvalid() )
kdDebug() << "key is invalid - ignoring" << endl;
if ( key.keyListMode() & GpgME::Context::Validate ) {
kdDebug() << "key is invalid" << endl;
return false;
} else {
kdDebug() << "key is invalid - ignoring" << endl;
}
if ( key.isExpired() ) {
kdDebug() << "key is expired" << endl;
return false;
@ -307,6 +314,28 @@ Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
init( rememberChoice, extendedSelection, text, TQString::null );
}
Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
const TQString & text,
const TQString & initialQuery,
const std::vector<GpgME::Key> & selectedKeys,
unsigned int keyUsage,
bool extendedSelection,
bool rememberChoice,
TQWidget * parent, const char * name,
bool modal )
: KDialogBase( parent, name, modal, title, Default|Ok|Cancel|Help, Ok ),
mOpenPGPBackend( 0 ),
mSMIMEBackend( 0 ),
mRememberCB( 0 ),
mSelectedKeys( selectedKeys ),
mKeyUsage( keyUsage ),
mSearchText( initialQuery ),
mInitialQuery( initialQuery ),
mCurrentContextMenuItem( 0 )
{
init( rememberChoice, extendedSelection, text, initialQuery );
}
Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
const TQString & text,
const TQString & initialQuery,
@ -321,6 +350,7 @@ Kleo::KeySelectionDialog::KeySelectionDialog( const TQString & title,
mRememberCB( 0 ),
mKeyUsage( keyUsage ),
mSearchText( initialQuery ),
mInitialQuery( initialQuery ),
mCurrentContextMenuItem( 0 )
{
init( rememberChoice, extendedSelection, text, initialQuery );
@ -340,11 +370,26 @@ void Kleo::KeySelectionDialog::init( bool rememberChoice, bool extendedSelection
mTopLayout = new TQVBoxLayout( page, 0, spacingHint() );
if ( !text.isEmpty() ) {
TQLabel* textLabel = new TQLabel( text, page );
textLabel->setAlignment( textLabel->alignment() | Qt::WordBreak );
mTopLayout->addWidget( textLabel );
if ( text.startsWith( "<qt>" ) ) {
KActiveLabel *textLabel = new KActiveLabel( text, page );
disconnect( textLabel, TQT_SIGNAL(linkClicked(const TQString&)), textLabel, TQT_SLOT(openLink(const TQString&)) );
connect( textLabel, TQT_SIGNAL(linkClicked(const TQString&)), TQT_SLOT(slotStartCertificateManager(const TQString&)) );
textLabel->setAlignment( textLabel->alignment() | TQt::WordBreak );