From cb7eddb91455a69cf66fcd717e91a51ca5e2cfef Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 16 Feb 2011 20:17:18 +0000 Subject: Moved kpilot from kdepim to applications, as the core Trinity libraries should not contain hardware-dependent software git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kpilot@1221127 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- conduits/sysinfoconduit/CMakeLists.txt | 50 ++ conduits/sysinfoconduit/Makefile.am | 24 + conduits/sysinfoconduit/Template.html | 184 +++++++ conduits/sysinfoconduit/Template.txt | 76 +++ conduits/sysinfoconduit/sysinfo-conduit.cc | 611 ++++++++++++++++++++++++ conduits/sysinfoconduit/sysinfo-conduit.h | 79 +++ conduits/sysinfoconduit/sysinfo-factory.cc | 43 ++ conduits/sysinfoconduit/sysinfo-factory.h | 36 ++ conduits/sysinfoconduit/sysinfo-setup.cc | 198 ++++++++ conduits/sysinfoconduit/sysinfo-setup.h | 47 ++ conduits/sysinfoconduit/sysinfo-setup_dialog.ui | 214 +++++++++ conduits/sysinfoconduit/sysinfoSettings.kcfgc | 7 + conduits/sysinfoconduit/sysinfo_conduit.desktop | 108 +++++ conduits/sysinfoconduit/sysinfoconduit.kcfg | 64 +++ 14 files changed, 1741 insertions(+) create mode 100644 conduits/sysinfoconduit/CMakeLists.txt create mode 100644 conduits/sysinfoconduit/Makefile.am create mode 100644 conduits/sysinfoconduit/Template.html create mode 100644 conduits/sysinfoconduit/Template.txt create mode 100644 conduits/sysinfoconduit/sysinfo-conduit.cc create mode 100644 conduits/sysinfoconduit/sysinfo-conduit.h create mode 100644 conduits/sysinfoconduit/sysinfo-factory.cc create mode 100644 conduits/sysinfoconduit/sysinfo-factory.h create mode 100644 conduits/sysinfoconduit/sysinfo-setup.cc create mode 100644 conduits/sysinfoconduit/sysinfo-setup.h create mode 100644 conduits/sysinfoconduit/sysinfo-setup_dialog.ui create mode 100644 conduits/sysinfoconduit/sysinfoSettings.kcfgc create mode 100644 conduits/sysinfoconduit/sysinfo_conduit.desktop create mode 100644 conduits/sysinfoconduit/sysinfoconduit.kcfg (limited to 'conduits/sysinfoconduit') diff --git a/conduits/sysinfoconduit/CMakeLists.txt b/conduits/sysinfoconduit/CMakeLists.txt new file mode 100644 index 0000000..cae6d89 --- /dev/null +++ b/conduits/sysinfoconduit/CMakeLists.txt @@ -0,0 +1,50 @@ +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} +) + +set(conduit_sysinfo_SRCS + sysinfo-setup.cc + sysinfo-factory.cc + sysinfo-conduit.cc +) + +set(conduit_sysinfo_UIS + sysinfo-setup_dialog.ui +) + +set(conduit_sysinfo_KCFGS + sysinfoSettings.kcfgc +) + +kde3_add_kcfg_files(conduit_sysinfo_SRCS ${conduit_sysinfo_KCFGS}) +kde3_add_ui_files(conduit_sysinfo_SRCS ${conduit_sysinfo_UIS}) +kde3_automoc(${conduit_sysinfo_SRCS}) +add_library(conduit_sysinfo SHARED ${conduit_sysinfo_SRCS}) + +set_target_properties( + conduit_sysinfo PROPERTIES LOCATION ${KDE3_PLUGIN_INSTALL_DIR} + INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib + PREFIX "" +) + +kde3_install_libtool_file(conduit_sysinfo) + +install( + TARGETS conduit_sysinfo + LIBRARY DESTINATION ${KDE3_PLUGIN_INSTALL_DIR} +) + +install( + FILES sysinfo_conduit.desktop DESTINATION ${KDE3_SERVICES_DIR} +) + +install( + FILES sysinfoSettings.kcfgc sysinfoconduit.kcfg + DESTINATION ${KDE3_KCFG_DIR} +) + +install( + FILES Template.html Template.txt + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/apps/kpilot/sysinfoconduit +) + diff --git a/conduits/sysinfoconduit/Makefile.am b/conduits/sysinfoconduit/Makefile.am new file mode 100644 index 0000000..eb7f7aa --- /dev/null +++ b/conduits/sysinfoconduit/Makefile.am @@ -0,0 +1,24 @@ +### Makefile for the sysinfo conduit +### +### The sysinfo conduit is Copyright (C) 2003 by Reinhold Kainhofer + +INCLUDES= $(PISOCK_INCLUDE) -I$(top_srcdir)/kpilot/lib $(all_includes) +METASOURCES = AUTO + +servicedir = $(kde_servicesdir) +service_DATA = sysinfo_conduit.desktop + +kde_module_LTLIBRARIES = conduit_sysinfo.la + +conduit_sysinfo_la_SOURCES = sysinfoSettings.kcfgc \ + sysinfo-factory.cc \ + sysinfo-setup.cc \ + sysinfo-conduit.cc \ + sysinfo-setup_dialog.ui +conduit_sysinfo_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) +conduit_sysinfo_la_LIBADD = ../../lib/libkpilot.la $(LIB_KDEUI) $(LIB_KIO) + +kpilot_sysinfo_data_DATA = Template.html Template.txt +kpilot_sysinfo_datadir = $(kde_datadir)/kpilot/sysinfoconduit +EXTRA_DIST = $(kpilot_sysinfo_data_DATA) +kde_kcfg_DATA = sysinfoconduit.kcfg diff --git a/conduits/sysinfoconduit/Template.html b/conduits/sysinfoconduit/Template.html new file mode 100644 index 0000000..e5a33e0 --- /dev/null +++ b/conduits/sysinfoconduit/Template.html @@ -0,0 +1,184 @@ + + + KPilot System Information Page + + + + + +

KPilot System Information

+
+

+ + + + + + + + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

 

+
+ Page created #date# by the SysInfo conduit of KPilot. + + diff --git a/conduits/sysinfoconduit/Template.txt b/conduits/sysinfoconduit/Template.txt new file mode 100644 index 0000000..8796e44 --- /dev/null +++ b/conduits/sysinfoconduit/Template.txt @@ -0,0 +1,76 @@ +KPilot System Information Page +============================== + + + + + + + + + + + + + + + + + + + + + + +------------------------------------------------------------ +Page created #date# by the SysInfo conduit of KPilot. diff --git a/conduits/sysinfoconduit/sysinfo-conduit.cc b/conduits/sysinfoconduit/sysinfo-conduit.cc new file mode 100644 index 0000000..64c53bc --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-conduit.cc @@ -0,0 +1,611 @@ +/* KPilot +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to kde-pim@kde.org. +*/ + +#include "options.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include "sysinfo-factory.h" +#include "sysinfo-conduit.moc" +#include "sysinfoSettings.h" + +const TQString SysInfoConduit::defaultpage = CSL1("KPilot System Information Page\n" +"==============================\n" +"(Kpilot was unable to find the correct template file, \n" +"so this simple template was used.)\n\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"------------------------------------------------------------\n" +"Page created by the KPilot System Information conduit.\n" +""); + + + /** possible fields in the templates are: + * - hardware + * - user + * - memory + * - storage + * - dblist + * - recnumber + * - syncinfo + * - pcversion + * - palmversion + * - debug + */ + + +// Something to allow us to check what revision +// the modules are that make up a binary distribution. + +extern "C" +{ + +unsigned long version_conduit_sysinfo = Pilot::PLUGIN_API; + +} + + + +SysInfoConduit::SysInfoConduit(KPilotLink * o, + const char *n, + const TQStringList & a) : + ConduitAction(o, n, a) +{ + FUNCTIONSETUP; + fConduitName=i18n("System Information"); +} + + + +SysInfoConduit::~SysInfoConduit() +{ + FUNCTIONSETUP; +} + + + +void SysInfoConduit::readConfig() +{ + fOutputFile = SysinfoSettings::outputFile(); + fOutputType = (eOutputTypeEnum) SysinfoSettings::outputFormat(); + fTemplateFile = SysinfoSettings::templateFile(); + fHardwareInfo = SysinfoSettings::hardwareInfo(); + fUserInfo = SysinfoSettings::userInfo(); + fMemoryInfo = SysinfoSettings::memoryInfo(); + fStorageInfo = SysinfoSettings::storageInfo(); + fDBList = SysinfoSettings::databaseList(); + fRecordNumber = SysinfoSettings::recordNumbers(); + fSyncInfo = SysinfoSettings::syncInfo(); + fKDEVersion = SysinfoSettings::kDEVersion(); + fPalmOSVersion = SysinfoSettings::palmOSVersion(); + fDebugInfo = SysinfoSettings::debugInformation(); +} + + +/* virtual */ bool SysInfoConduit::exec() +{ + FUNCTIONSETUP; + + readConfig(); + + TQTimer::singleShot(0, this, TQT_SLOT(hardwareInfo())); + return true; +} + +void SysInfoConduit::hardwareInfo() +{ + FUNCTIONSETUP; + if (fHardwareInfo) { + TQString unknown = i18n("unknown"); + + /* Retrieve values for + * - #deviceid# + * - #devicename# + * - #devicemodel# + * - #manufactorer# + * - #devicetype# + */ + KPilotSysInfo sysinfo = fHandle->getSysInfo(); + fValues[CSL1("deviceid")] = TQString::tqfromLatin1(sysinfo.getProductID()); + + const KPilotCard *device = fHandle->getCardInfo(); + if (device) + { + fValues[CSL1("devicename")] = TQString::tqfromLatin1(device->getCardName()); + fValues[CSL1("devicemodel")] = unknown; // TODO + fValues[CSL1("manufacturer")] = TQString::tqfromLatin1(device->getCardManufacturer()); + } + else + { + fValues[CSL1("devicename")] = unknown; + fValues[CSL1("devicemodel")] = unknown; + fValues[CSL1("manufacturer")] = unknown; + } + + fValues[CSL1("devicetype")] = unknown; + + KPILOT_DELETE(device); + keepParts.append(CSL1("hardware")); + } else removeParts.append(CSL1("hardware")); + TQTimer::singleShot(0, this, TQT_SLOT(userInfo())); +} + +void SysInfoConduit::userInfo() +{ + FUNCTIONSETUP; + if (fUserInfo) + { + /* Retrieve values for + * - #username# + * - #uid# + */ + KPilotUser user=fHandle->getPilotUser(); + fValues[CSL1("username")] = user.name(); + if (user.passwordLength()>0) + { + fValues[CSL1("pw")] = i18n("Password set"); + } + else + { + fValues[CSL1("pw")] = i18n("No password set"); + } + fValues[CSL1("uid")] = TQString::number(user.data()->userID); + fValues[CSL1("viewerid")] = TQString::number(user.data()->viewerID); + keepParts.append(CSL1("user")); + } + else + { + removeParts.append(CSL1("user")); + } + TQTimer::singleShot(0, this, TQT_SLOT(memoryInfo())); +} + +void SysInfoConduit::memoryInfo() +{ + FUNCTIONSETUP; + if (fMemoryInfo) { + /* Retrieve values for + * - #rom# + * - #totalmem# + * - #freemem# + */ + const KPilotCard *device = fHandle->getCardInfo(); + if (device) + { + fValues[CSL1("rom")] = TQString::number(device->getRomSize()/1024); + fValues[CSL1("totalmem")] = TQString::number(device->getRamSize()/1024); + fValues[CSL1("freemem")] = TQString::number(device->getRamFree()/1024); + } + keepParts.append(CSL1("memory")); + } else removeParts.append(CSL1("memory")); + TQTimer::singleShot(0, this, TQT_SLOT(storageInfo())); +} + +void SysInfoConduit::storageInfo() +{ + FUNCTIONSETUP; + if (fStorageInfo) { + /* Retrieve values for + * - $cards$ + */ + const KPilotCard *device = fHandle->getCardInfo(1); + if (device) { + fValues[CSL1("cards")] = CSL1("%1 (%2, %3 kB of %3 kB free)") + .arg(TQString::tqfromLatin1(device->getCardName())) + .arg(TQString::tqfromLatin1(device->getCardManufacturer())) + .arg(device->getRamFree()/1024) + .arg(device->getRamSize()/1024); + KPILOT_DELETE(device); + } else { + fValues[CSL1("cards")] = i18n("No Cards available via pilot-link"); + } + keepParts.append(CSL1("storage")); + } else removeParts.append(CSL1("storage")); + TQTimer::singleShot(0, this, TQT_SLOT(dbListInfo())); +} + +void SysInfoConduit::dbListInfo() +{ + FUNCTIONSETUP; + if (fDBList) { + /* Retrieve values for + * - #dblist(structure)# + */ + dblist=deviceLink()->getDBList(); + keepParts.append(CSL1("dblist")); + } else removeParts.append(CSL1("dblist")); + TQTimer::singleShot(0, this, TQT_SLOT(recNumberInfo())); +} + +void SysInfoConduit::recNumberInfo() +{ + FUNCTIONSETUP; + if (fRecordNumber) { + /* Retrieve values for + * - #addresses# + * - #events# + * - #todos# + * - #memos# + */ + PilotDatabase *fDatabase = 0L; + TQString ERROR = CSL1("ERROR"); + fValues[CSL1("addresses")] = ERROR; + fValues[CSL1("events")] = ERROR; + fValues[CSL1("todos")] = ERROR; + fValues[CSL1("memos")] = ERROR; + fDatabase = deviceLink()->database(CSL1("AddressDB")); + if (fDatabase) { + fValues[CSL1("addresses")] = TQString::number(fDatabase->recordCount()); + KPILOT_DELETE(fDatabase); + } + fDatabase = deviceLink()->database(CSL1("DatebookDB")); + if (fDatabase) { + fValues[CSL1("events")] = TQString::number(fDatabase->recordCount()); + KPILOT_DELETE(fDatabase); + } + fDatabase = deviceLink()->database(CSL1("ToDoDB")); + if (fDatabase) { + fValues[CSL1("todos")] = TQString::number(fDatabase->recordCount()); + KPILOT_DELETE(fDatabase); + } + fDatabase = deviceLink()->database(CSL1("MemoDB")); + if (fDatabase) { + fValues[CSL1("memos")] = TQString::number(fDatabase->recordCount()); + KPILOT_DELETE(fDatabase); + } + keepParts.append(CSL1("records")); + } else removeParts.append(CSL1("records")); + TQTimer::singleShot(0, this, TQT_SLOT(syncInfo())); +} + +void SysInfoConduit::syncInfo() +{ + FUNCTIONSETUP; + if (fSyncInfo) { + /* Retrieve values for + * - #lastsync# + * - #lastsuccsync# + * - #lastsyncpc# + */ + KPilotUser user = deviceLink()->getPilotUser(); + time_t lastsync = user.getLastSyncDate(); + TQDateTime qlastsync; + qlastsync.setTime_t(lastsync); + fValues[CSL1("lastsync")] = qlastsync.toString(Qt::LocalDate); + lastsync = user.getLastSuccessfulSyncDate(); + qlastsync.setTime_t(lastsync); + fValues[CSL1("lastsuccsync")] = qlastsync.toString(Qt::LocalDate); + fValues[CSL1("lastsyncpc")] = TQString::number(user.getLastSyncPC()); + keepParts.append(CSL1("sync")); + } else removeParts.append(CSL1("sync")); + TQTimer::singleShot(0, this, TQT_SLOT(pcVersionInfo())); +} + +void SysInfoConduit::pcVersionInfo() +{ + FUNCTIONSETUP; + if (fKDEVersion) { + /* Retrieve values for + * - #os# + * - #qt# + * - #kde# + * - #kpilot# + * - #pilotlink# + */ + fValues[CSL1("kpilot")] = TQString::tqfromLatin1(KPILOT_VERSION); + fValues[CSL1("kde")] = i18n("unknown"); + fValues[CSL1("qt")] = i18n("unknown"); + fValues[CSL1("os")] = i18n("unknown"); + fValues[CSL1("hostname")] = i18n("unknown"); + struct utsname name; + if (uname (&name) >= 0) { + fValues[CSL1("os")] = CSL1("%1 %3, %5") + .arg(TQString::tqfromLatin1(name.sysname)) + .arg(TQString::tqfromLatin1(name.release)) + .arg(TQString::tqfromLatin1(name.machine)); + fValues[CSL1("hostname")] = CSL1("%2").arg(TQString::tqfromLatin1(name.nodename)); + } +#ifdef KDE_VERSION_STRING + fValues[CSL1("kde")] = TQString::tqfromLatin1(KDE_VERSION_STRING); +#endif +#ifdef QT_VERSION_STR + fValues[CSL1("qt")] = TQString::tqfromLatin1(QT_VERSION_STR); +#endif + fValues[CSL1("pilotlink")] = CSL1("%1.%2.%3%4") + .arg(PILOT_LINK_VERSION) + .arg(PILOT_LINK_MAJOR) + .arg(PILOT_LINK_MINOR) +#ifdef PILOT_LINK_PATCH + .arg(TQString::tqfromLatin1(PILOT_LINK_PATCH)); +#else + .arg(TQString()); +#endif + keepParts.append(CSL1("pcversion")); + } else removeParts.append(CSL1("pcversion")); + TQTimer::singleShot(0, this, TQT_SLOT(palmVersionInfo())); +} + +void SysInfoConduit::palmVersionInfo() +{ + FUNCTIONSETUP; + if (fPalmOSVersion) { + /* Retrieve values for + * - #palmos# + */ +/* fValues["palmos"] = TQString("PalmOS %1.%2 (compat %3.%4)") + .arg(fHandle->getSysInfo()->getMajorVersion()) + .arg(fHandle->getSysInfo()->getMinorVersion()) + .arg(fHandle->getSysInfo()->getCompatMajorVersion()) + .arg(fHandle->getSysInfo()->getCompatMinorVersion());*/ + KPilotSysInfo i = deviceLink()->getSysInfo(); + fValues[CSL1("palmos")] = CSL1("PalmOS %1.%2").arg(i.getMajorVersion()).arg(i.getMinorVersion()); + + keepParts.append(CSL1("palmversion")); + } else removeParts.append(CSL1("palmversion")); + TQTimer::singleShot(0, this, TQT_SLOT(debugInfo())); +} + +void SysInfoConduit::debugInfo() +{ + FUNCTIONSETUP; + if (fDebugInfo) { + /* Retrieve values for + * - #debug# + */ + fValues[CSL1("debug")] = i18n("No debug data"); + keepParts.append(CSL1("debug")); + } else removeParts.append(CSL1("debug")); + TQTimer::singleShot(0, this, TQT_SLOT(writeFile())); +} + +void SysInfoConduit::writeFile() +{ + FUNCTIONSETUP; + + fValues[CSL1("date")] = TQDateTime::tqcurrentDateTime().toString(Qt::LocalDate); + + TQString output; + // Open the template file + TQString templatefile; + switch(fOutputType) + { + case eOutputText: + templatefile=locate("data", CSL1("kpilot/sysinfoconduit/Template.txt")); + break; + case eOutputTemplate: + templatefile=fTemplateFile; + break; + case eOutputHTML: + default: + templatefile=locate("data", CSL1("kpilot/sysinfoconduit/Template.html")); + break; + } + + // Read in the template, close the file + bool loaded=false; + if (!templatefile.isEmpty()){ +#ifdef DEBUG + DEBUGKPILOT<<"Loading template file "<").arg(*it).arg(*it)); + re.setMinimal(true); + output.remove(re); + } + for ( TQStringList::Iterator it = keepParts.begin(); it != keepParts.end(); ++it ) { + TQRegExp re(CSL1("").arg(*it).arg(*it)); + re.setMinimal(true); + output.tqreplace(re, CSL1("\\1")); + } + + // Do a loop through all keys in fValues + TQMap::Iterator it; + for ( it = fValues.begin(); it != fValues.end(); ++it ) { + output.tqreplace(CSL1("#%1#").arg(it.key()), it.data()); + } + + // Insert the list of databases + TQRegExp re(CSL1("#dblist\\[(.*)\\]#")); + re.setMinimal(true); + while (re.search(output)>=0){ + TQString dbstring; + TQString subpatt=re.cap(1); + for (KPilotLink::DBInfoList::ConstIterator i = dblist.begin(); i != dblist.end(); ++i ) { + DBInfo dbi = *i; + TQString newpatt(subpatt); + char tmpchr[5]; + ::memset(&tmpchr[0], 0, 5); + /* Patterns for the dblist argument: + * %0 .. Database name + * %1 .. type + * %2 .. creator + * %3 .. index + * %4 .. flags + * %5 .. miscFlags + * %6 .. version + * %7 .. createDate + * %8 .. modifyDate + * %9 .. backupDate + */ + newpatt.tqreplace(CSL1("%0"), TQString::tqfromLatin1(dbi.name)); + set_long(&tmpchr[0],dbi.type); + newpatt.tqreplace(CSL1("%1"), TQString::tqfromLatin1(tmpchr)); + set_long(&tmpchr[0],dbi.creator); + newpatt.tqreplace(CSL1("%2"), TQString::tqfromLatin1(tmpchr)); + newpatt.tqreplace(CSL1("%3"), TQString::number(dbi.index)); + newpatt.tqreplace(CSL1("%4"), TQString::number(dbi.flags)); + newpatt.tqreplace(CSL1("%5"), TQString::number(dbi.miscFlags)); + newpatt.tqreplace(CSL1("%6"), TQString::number(dbi.version)); + TQDateTime tm; + tm.setTime_t(dbi.createDate); + newpatt.tqreplace(CSL1("%7"), tm.toString(Qt::LocalDate)); + tm.setTime_t(dbi.modifyDate); + newpatt.tqreplace(CSL1("%8"), tm.toString(Qt::LocalDate)); + tm.setTime_t(dbi.backupDate); + newpatt.tqreplace(CSL1("%9"), tm.toString(Qt::LocalDate)); + + dbstring.append(newpatt); + } + // Now, just tqreplace the whole found pattern by the string we just constructed. + output.tqreplace(re.cap(0), dbstring); + } + + // Write out the result + TQFile outfile(fOutputFile); +#ifdef DEBUG + DEBUGKPILOT << fname << ": Writing file <" << fOutputFile << ">" << endl; +#endif + if (fOutputFile.isEmpty() || (!outfile.open(IO_WriteOnly)) ) { + TQFileInfo fi(TQDir::home(), CSL1("KPilotSysInfo.")+TQFileInfo(templatefile).extension() ); + fOutputFile=fi.absFilePath(); + WARNINGKPILOT << "Unable to open output file, using " << fOutputFile << " instead." << endl; + emit logMessage(i18n("Unable to open output file, using %1 instead.").arg(fOutputFile)); + outfile.setName(fOutputFile); + if (!outfile.open(IO_WriteOnly)) { + WARNINGKPILOT<< "Unable to open " << fOutputFile << endl; + emit logError(i18n("Unable to open %1").arg(fOutputFile)); + TQTimer::singleShot(0, this, TQT_SLOT(cleanup())); + return; + } + } + + // Finally, write the actual text out to the file. + TQTextStream outstream(&outfile); + outstream< + +class SysInfoConduit : public ConduitAction +{ + Q_OBJECT +public: + SysInfoConduit( + KPilotLink *o, + const char *n = 0L, + const TQStringList &a = TQStringList() ); + virtual ~SysInfoConduit(); + virtual bool exec(); + +public slots: + void hardwareInfo(); + void userInfo(); + void memoryInfo(); + void storageInfo(); + void dbListInfo(); + void recNumberInfo(); + void syncInfo(); + void pcVersionInfo(); + void palmVersionInfo(); + void debugInfo(); + void writeFile(); + void cleanup(); + +protected: + void readConfig(); +private: + TQMap fValues; + + bool fHardwareInfo, fUserInfo, fMemoryInfo, fStorageInfo, + fDBList, fRecordNumber, fSyncInfo, + fKDEVersion, fPalmOSVersion, fDebugInfo; + TQString fOutputFile, fTemplateFile; + enum eOutputTypeEnum { + eOutputHTML=0, + eOutputText, + eOutputTemplate + } fOutputType; + + KPilotLink::DBInfoList dblist; + TQStringList removeParts; + TQStringList keepParts; + static const TQString defaultpage; +} ; + +#endif diff --git a/conduits/sysinfoconduit/sysinfo-factory.cc b/conduits/sysinfoconduit/sysinfo-factory.cc new file mode 100644 index 0000000..d03dc0b --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-factory.cc @@ -0,0 +1,43 @@ +/* SysInfo-factory.cc KPilot +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +** This file defines the factory for the SysInfo-conduit plugin. +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to kde-pim@kde.org +*/ + +#include "options.h" +#include "pluginfactory.h" + +#include "sysinfo-conduit.h" +#include "sysinfo-setup.h" + +extern "C" +{ + +void *init_conduit_sysinfo() +{ + return new ConduitFactory; +} + +} diff --git a/conduits/sysinfoconduit/sysinfo-factory.h b/conduits/sysinfoconduit/sysinfo-factory.h new file mode 100644 index 0000000..66ae5ae --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-factory.h @@ -0,0 +1,36 @@ +#ifndef _SYSINFO_FACTORY_H +#define _SYSINFO_FACTORY_H +/* SysInfo-factory.h KPilot +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +** This file defines the factory for the SysInfo-conduit plugin. +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to kde-pim@kde.org +*/ + +extern "C" +{ + void *init_libsysinfoconduit(); +} + +#endif diff --git a/conduits/sysinfoconduit/sysinfo-setup.cc b/conduits/sysinfoconduit/sysinfo-setup.cc new file mode 100644 index 0000000..271db65 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-setup.cc @@ -0,0 +1,198 @@ +/* SysInfo-setup.cc KPilot +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +** This file defines the setup dialog for the SysInfo-conduit plugin. +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to kde-pim@kde.org +*/ + +#include "options.h" + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "sysinfo-setup_dialog.h" + +#include "sysinfo-factory.h" +#include "sysinfo-setup.h" +#include "sysinfoSettings.h" + + +typedef struct { const char *name; bool (*accessor)(); void (*mutator)(bool); } sysinfoEntry_t; + +const sysinfoEntry_t sysinfoEntries[] = +{ + { I18N_NOOP("HardwareInfo"), SysinfoSettings::hardwareInfo, SysinfoSettings::setHardwareInfo }, + { I18N_NOOP("UserInfo"), SysinfoSettings::userInfo, SysinfoSettings::setUserInfo }, + { I18N_NOOP("MemoryInfo"), SysinfoSettings::memoryInfo, SysinfoSettings::setMemoryInfo }, + { I18N_NOOP("StorageInfo"), SysinfoSettings::storageInfo, SysinfoSettings::setStorageInfo }, + { I18N_NOOP("DatabaseList"), SysinfoSettings::databaseList, SysinfoSettings::setDatabaseList }, + { I18N_NOOP("RecordNumbers"), SysinfoSettings::recordNumbers, SysinfoSettings::setRecordNumbers}, + { I18N_NOOP("SyncInfo"), SysinfoSettings::syncInfo, SysinfoSettings::setSyncInfo }, + { I18N_NOOP("KDEVersion"), SysinfoSettings::kDEVersion, SysinfoSettings::setKDEVersion }, + { I18N_NOOP("PalmOSVersion"), SysinfoSettings::palmOSVersion, SysinfoSettings::setPalmOSVersion }, + { I18N_NOOP("DebugInformation"), SysinfoSettings::debugInformation, SysinfoSettings::setDebugInformation }, + { 0L, 0L, 0L } +} ; + + +/* +** The QCheckListItems used in the list of parts to print have +** several text fields with special meanings. +** 0: The text displayed in the list. +** 1: The index of the item in the sysinfoEntries array. +** 2: This string is empty if the part was originally not checked, +** and non-empty (probably "1") if the part was originally checked. +** This is used to detect changes in the configuration. +** We introduce some defines for these numbers. +*/ + +#define PART_NAME (0) +#define PART_KEY (1) +#define PART_SETTING (2) + +/* +** This is a convenience define to update an item's "original setting". +*/ +#define updateSetting(i) { TQCheckListItem *ubbu=(i); \ + ubbu->setText(PART_SETTING,(ubbu->isOn() ? CSL1("1") : TQString::null)); } + + +SysInfoWidgetConfig::SysInfoWidgetConfig(TQWidget *w, const char *n) : + ConduitConfigBase(w,n), + fConfigWidget(new SysInfoWidget(w)) +{ + FUNCTIONSETUP; + + KAboutData *fAbout = new KAboutData("SysInfoConduit", + I18N_NOOP("KPilot System Information conduit"), + KPILOT_VERSION, + I18N_NOOP("Retrieves System, Hardware, and User Info from the Handheld and stores them to a file."), + KAboutData::License_GPL, + "(C) 2003, Reinhold Kainhofer"); + fAbout->addAuthor("Reinhold Kainhofer", + I18N_NOOP("Primary Author"), "reinhold@kainhofer.com", "http://reinhold.kainhofer.com/"); + + ConduitConfigBase::addAboutPage(fConfigWidget->tabWidget,fAbout); + fWidget=fConfigWidget; + + TQObject::connect(fConfigWidget->fOutputFile,TQT_SIGNAL(textChanged(const TQString&)), + this,TQT_SLOT(modified())); + TQObject::connect(fConfigWidget->fTemplateFile,TQT_SIGNAL(textChanged(const TQString&)), + this,TQT_SLOT(modified())); + TQObject::connect(fConfigWidget->fOutputType,TQT_SIGNAL(clicked(int)), + this,TQT_SLOT(modified())); + fConduitName=i18n("System Information"); +} + +void SysInfoWidgetConfig::commit() +{ + FUNCTIONSETUP; + + SysinfoSettings::setOutputFile( + fConfigWidget->fOutputFile->url() ); + SysinfoSettings::setTemplateFile( + fConfigWidget->fTemplateFile->url() ); + SysinfoSettings::setOutputFormat( + fConfigWidget->fOutputType->id(fConfigWidget->fOutputType->selected())); + + TQListViewItem *i = fConfigWidget->fPartsList->firstChild(); + TQCheckListItem *ci = dynamic_cast(i); + while(ci) + { +#ifdef DEBUG + DEBUGKPILOT << fname << ": Saving " << ci->text(PART_NAME) + << (ci->isOn() ? " on" : " off") << endl; +#endif + int index=ci->text(PART_KEY).toInt(); + if (0<=index && index<=10) + { + const sysinfoEntry_t *p = sysinfoEntries+index; + p->mutator(ci->isOn()); + } + updateSetting(ci); + i=i->nextSibling(); + ci = dynamic_cast(i); + } + SysinfoSettings::self()->writeConfig(); + unmodified(); +} + +void SysInfoWidgetConfig::load() +{ + FUNCTIONSETUP; + SysinfoSettings::self()->readConfig(); + + const sysinfoEntry_t *p = sysinfoEntries; + TQCheckListItem *i = 0L; + while (p && p->name) + { + i = new TQCheckListItem(fConfigWidget->fPartsList,i18n(p->name),TQCheckListItem::CheckBox); + // by default let the sysinfo conduit write out all available information + i->setOn( p->accessor() ); + i->setText(PART_KEY, TQString::number(p-sysinfoEntries)); // store index there + updateSetting(i); +#ifdef DEBUG + DEBUGKPILOT << fname << ": Loaded " << p->name + << (i->isOn() ? " on" : " off") << endl; +#endif + + p++; + } + fConfigWidget->fOutputFile->setURL( SysinfoSettings::outputFile() ); + fConfigWidget->fTemplateFile->setURL( SysinfoSettings::templateFile() ); + fConfigWidget->fOutputType->setButton( SysinfoSettings::outputFormat() ); + unmodified(); +} + +/* virtual */ bool SysInfoWidgetConfig::isModified() const +{ + FUNCTIONSETUP; + if (fModified) return true; + + TQListViewItem *i = fConfigWidget->fPartsList->firstChild(); + TQCheckListItem *ci = dynamic_cast(i); + + while(ci) + { + bool current = ci->isOn(); + bool original = !ci->text(PART_SETTING).isEmpty(); +#ifdef DEBUG + DEBUGKPILOT << fname << ": Checking " << ci->text(PART_KEY) + << " was " << (original ? " on" : " off") + << " now " << (current ? " on" : " off") << endl; +#endif + + if (current!=original) return true; + i=i->nextSibling(); + ci = dynamic_cast(i); + } + return false; +} diff --git a/conduits/sysinfoconduit/sysinfo-setup.h b/conduits/sysinfoconduit/sysinfo-setup.h new file mode 100644 index 0000000..400dea3 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-setup.h @@ -0,0 +1,47 @@ +#ifndef _SysInfo_SysInfo_SETUP_H +#define _SysInfo_SysInfo_SETUP_H +/* sysinfo-setup.h KPilot +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +** This file defines the widget and behavior for the config dialog +** of the KNotes conduit. +*/ + +/* +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program in a file called COPYING; if not, write to +** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +** MA 02110-1301, USA. +*/ + +/* +** Bug reports and questions can be sent to kde-pim@kde.org +*/ + +#include "plugin.h" + +class SysInfoWidget; + +class SysInfoWidgetConfig : public ConduitConfigBase +{ +public: + SysInfoWidgetConfig(TQWidget *parent, const char *); + virtual void commit(); + virtual void load(); + virtual bool isModified() const; +protected: + SysInfoWidget *fConfigWidget; +} ; + +#endif diff --git a/conduits/sysinfoconduit/sysinfo-setup_dialog.ui b/conduits/sysinfoconduit/sysinfo-setup_dialog.ui new file mode 100644 index 0000000..70bd896 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo-setup_dialog.ui @@ -0,0 +1,214 @@ + +SysInfoWidget +Reinhold Kainhofer + + + Form2 + + + + 0 + 0 + 330 + 232 + + + + + unnamed + + + 0 + + + 6 + + + + tabWidget + + + + tab + + + General + + + + unnamed + + + + spacer3 + + + Vertical + + + Expanding + + + + 20 + 51 + + + + + + fOutputFile + + + <qt>Enter here, or select by clicking the file picker button, the location and file name of the output file used to store the handheld's system information.</qt> + + + + + textLabel4 + + + Output &file: + + + fOutputFile + + + <qt>Enter here, or select by clicking the file picker button, the location and file name of the output file used to store the handheld's system information.</qt> + + + + + fOutputType + + + Type of Output + + + + unnamed + + + + radioButton3 + + + &HTML + + + true + + + <qt>Select this option to output the system information data as a HTML document.</qt> + + + + + radioButton4 + + + Te&xt file + + + <qt>Select this option to output the system information data as a text document.</qt> + + + + + fTemplateFile + + + false + + + <qt>Enter here, or select by clicking on the file picker button, the location of the template to be used if you select the Custom template option.</qt> + + + + + radioButton5 + + + &Custom template: + + + <qt>Select this option to output the system information data as defined by a custom template. Enter the location of the template in the edit box, or select it clicking on the file picker button.</qt> + + + + + + + + + tab + + + Parts Included + + + + unnamed + + + + spacer4 + + + Vertical + + + Expanding + + + + 21 + 20 + + + + + + + Output Type + + + true + + + true + + + + fPartsList + + + LastColumn + + + <qt>Check on this list the types of information about your system and handheld you want to display in the output file.</qt> + + + + + + + + + + radioButton5 + toggled(bool) + fTemplateFile + setEnabled(bool) + + + + tabWidget + + + + kurlrequester.h + klineedit.h + kpushbutton.h + + diff --git a/conduits/sysinfoconduit/sysinfoSettings.kcfgc b/conduits/sysinfoconduit/sysinfoSettings.kcfgc new file mode 100644 index 0000000..09337f3 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfoSettings.kcfgc @@ -0,0 +1,7 @@ +File=sysinfoconduit.kcfg +ClassName=SysinfoSettings +Singleton=true +ItemAccessors=true +Mutators=true +GlobalEnums=true +SetUserTexts=true diff --git a/conduits/sysinfoconduit/sysinfo_conduit.desktop b/conduits/sysinfoconduit/sysinfo_conduit.desktop new file mode 100644 index 0000000..f31bd06 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfo_conduit.desktop @@ -0,0 +1,108 @@ +[Desktop Entry] +Type=Service +Comment=This conduit writes information about your handheld and the sync to a file. +Comment[af]=Hierdie pad skryf informasie aangaande die draagbare toestel en sinkronisasie na 'n lêer. +Comment[bg]=Запис на информацията относно мобилното устройство във файл +Comment[bs]=Ovaj conduit ispisuje informacije o ručnom računaru i sinhronizuje ih sa datotekom. +Comment[ca]=Aquest conducte escriu informació a un fitxer a sobre de la vostra agenda electrònica i la sincronització. +Comment[cs]=Toto propojení zapisuje informace o vašem handheldu a synchronizaci do souboru. +Comment[cy]=Mae'r cwndid yma yn ysgrifennu gwybodaeth ynglyn â'ch llawiadur a'r cydamseriad i ffeil. +Comment[da]=Denne kanal skriver information om din håndholdte og synkroniseringen til en fil. +Comment[de]=Schreibt Daten zum Taschencomputer und den Abgleich in eine Datei +Comment[el]=Αυτός ο σύνδεσμος γράφει πληροφορίες σχετικά με τον υπολογιστή παλάμης σας και το συγχρονισμό προς ένα αρχείο. +Comment[es]=Este conducto escribe la información subre su agenda electrónica y la sincronización a un archivo. +Comment[et]=See kanal salvestab info pihuarvuti kohta failina. +Comment[eu]=Kanal honek zure agenda elektronikoari buruzko informazioa eta sinkronizazio fitxategi batean gordetzen ditu. +Comment[fa]=این لوله، اطلاعات دربارۀ دستی شما و ترکیب‌دهی به پرونده را می‌نویسد. +Comment[fi]=Tämä yhdyskäytävä kirjoittaa tietoja taskutietokoneelta ja synkronoi ne tiedostoon. +Comment[fr]=Ce canal écrit des informations sur votre périphérique et la synchronisation dans un fichier. +Comment[fy]=Dit conduit bewarret ynformaasje oer jo handheld en syngronosaasje yn in triem. +Comment[gl]=Este conducto escribe a información sobre o seu aparello portátil e a sincronización a un ficheiro. +Comment[hi]=यह कन्ड्यूइट आपके हैंण्डहेल्ड के बारे में जानकारी लिखता है तथा एक फ़ाइल में सिंक करता है. +Comment[hu]=Ezzel a csatolóval fájlba lehet kiíratni a kéziszámítógép és a szinkronizálás jellemzőit +Comment[is]=Þessi rás skrifar upplýsingar um lófatölvuna þína og samstillinguna í skrá. +Comment[it]=Questo conduit scrive in un file informazioni sul tuo palmare. +Comment[ja]=このコンジットはあなたのハンドヘルドの情報を書き出し、ファイルに同期します。 +Comment[kk]=Қалта құрылғыңыз туралы мәліметті файла жазу арнасы. +Comment[km]=បំពង់​នេះ​សរសេរ​ព័ត៌មាន​អំពី​ឧបករណ៍​យួរដៃ​របស់​អ្នក និង​ការ​ធ្វើ​សមកាលកម្ម ទៅ​ឯកសារ​មួយ ។ +Comment[lt]=Šis kanalas įrašo informaciją apie delninuką ir sinchronizavimą į bylą. +Comment[ms]=Saluran ini menulis maklumat tentang komputer telapak dan segerakan ke fail. +Comment[nb]=Denne kanalen skriver informasjon om PDA-en og synkroniseringen til en fil. +Comment[nds]=De Kanaal schrifft Informatschonen över den Handreekner un de Synkroniseren na en Datei. +Comment[ne]=यो कन्ड्युटले ह्यान्डहेल्ड बारेमा सूचना लेख्दछ र फाइलमा सिन्क गर्दछ । +Comment[nl]=Dit conduit slaat informatie over uw handheld en de synchronisatie op in een bestand. +Comment[nn]=Denne koplinga skriv informasjon om den handheldte eininga di og synkroniseringa til ei fil. +Comment[pl]=Ten łącznik zapisuje informacje o twoim palmtopie i przebiegu synchronizacji do pliku. +Comment[pt]=Esta conduta escreve informações sobre o seu dispositivo e a sincronização para um ficheiro. +Comment[pt_BR]=Este conduíte escreve informação sobre o seu handheld e a sincronização em um arquivo. +Comment[ru]=Канал передачи системной информации с КПК и записи в файл. +Comment[sk]=Táto spojka zobrazuje informácie o vašom prenosnom zariadení a ukladá ich do súboru. +Comment[sl]=Ta veznik zapiše podatke o vašem ročnem računalniku in usklajevanju v datoteko. +Comment[sr]=Овај провод записује информације о вашем ручном рачунару и синхронизује са фајлом. +Comment[sr@Latn]=Ovaj provod zapisuje informacije o vašem ručnom računaru i sinhronizuje sa fajlom. +Comment[sv]=Den här kanalen skriver information om handdatorn och synkroniseringen till en fil. +Comment[ta]=இந்த காப்புக் குழாய் உங்கள் கையேட்டைப் பற்றிய தகவல்களையும் ஒத்திசைவையும் கோப்புக்கு எழுதுகிறது +Comment[tg]=Канали таҳвили иттилооти системавӣ аз Pilot ва қайдкунӣ ба файл +Comment[tr]=Bu bileşen, el bilgisayarınızın bilgilerini bir dosyaya yazar. +Comment[uk]=Цей акведук записує інформацію про кишеньковий пристрій і синхронізацію у файл. +Comment[zh_CN]=此管道写入您手持设备的信息,并同步至一文件。 +Comment[zh_TW]=此軟體將您的 handheld 資訊寫入檔案。 +Name=System Information +Name[af]=Stelsel informasie +Name[ar]=معلومات عن النظام +Name[be]=Сыстэмная інфармацыя +Name[bg]=Системна информация +Name[br]=Titouroù diwar-benn ar reizhiad +Name[bs]=Sistemske informacije +Name[ca]=Sistema d'informació +Name[cs]=Informace o systému +Name[cy]=Gwybodaeth Gysawd +Name[da]=Systeminformation +Name[de]=System-Information +Name[el]=Πληροφορίες συστήματος +Name[eo]=Sisteminformoj +Name[es]=Información del sistema +Name[et]=Süsteemi info +Name[eu]=Sistemaren informazioa +Name[fa]=اطلاعات سیستم +Name[fi]=Järjestelmätiedot +Name[fr]=Informations sur le système +Name[fy]=Systeemynformaasje +Name[ga]=Faisnéis Córais +Name[gl]=Información do Sistema +Name[hi]=तंत्र जानकारी +Name[hu]=Rendszerinformáció +Name[is]=Kerfisupplýsingar +Name[it]=Informazioni di sistema +Name[ja]=システム情報 +Name[kk]=Жүйелік мәлімет +Name[km]=ព័ត៌មាន​អំពី​ប្រព័ន្ធ +Name[lt]=Sistemos informacija +Name[mk]=Информации за системот +Name[ms]=Maklumat Sistem +Name[nb]=Systeminformasjon +Name[nds]=Systeem-Informatschoon +Name[ne]=प्रणाली सूचना +Name[nl]=Systeeminformatie +Name[nn]=Systeminformasjon +Name[pl]=Informacja systemowa +Name[pt]=Informação do Sistema +Name[pt_BR]=Informação do Sistema +Name[ro]=Informaţii de sistem +Name[ru]=Информация о системе +Name[se]=Vuogádatdieđut +Name[sk]=Informácie o systéme +Name[sl]=Sistemske informacije +Name[sr]=Информације о систему +Name[sr@Latn]=Informacije o sistemu +Name[sv]=Systeminformation +Name[ta]=அமைப்பு தகவல் +Name[tg]=Иттилоот дар бораи система +Name[tr]=Sistem Bilgisi +Name[uk]=Системна інформація +Name[uz]=Тизим ҳақида маълумот +Name[zh_CN]=系统信息 +Name[zh_TW]=系統資訊 +Implemented=file +ServiceTypes=KPilotConduit +X-KDE-Library=conduit_sysinfo diff --git a/conduits/sysinfoconduit/sysinfoconduit.kcfg b/conduits/sysinfoconduit/sysinfoconduit.kcfg new file mode 100644 index 0000000..20d8cc2 --- /dev/null +++ b/conduits/sysinfoconduit/sysinfoconduit.kcfg @@ -0,0 +1,64 @@ + + + + + + $HOME/kpilot-syslog.html + + + + + + + + eSysInfoHTML + + + + + + + true + + + + true + + + + true + + + + true + + + + true + + + + true + + + + true + + + + true + + + + true + + + + true + + + + -- cgit v1.2.1