summaryrefslogtreecommitdiffstats
path: root/kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc')
-rw-r--r--kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc611
1 files changed, 0 insertions, 611 deletions
diff --git a/kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc b/kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc
deleted file mode 100644
index 86fc10752..000000000
--- a/kpilot/conduits/sysinfoconduit/sysinfo-conduit.cc
+++ /dev/null
@@ -1,611 +0,0 @@
-/* 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 <pi-version.h>
-
-#include <tqtimer.h>
-#include <tqdir.h>
-#include <tqfileinfo.h>
-#include <tqregexp.h>
-#include <kconfig.h>
-#include <kdebug.h>
-
-#include <pilotSysInfo.h>
-#include <pilotUser.h>
-#include <pilotCard.h>
-#include <kpilotlink.h>
-#include <kstandarddirs.h>
-#include <pilotSerialDatabase.h>
-
-#include <sys/utsname.h>
-
-#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"
-"<!--#ifhardware#\n"
-"-) Hardware Information\n"
-" DeviceID: #deviceid#\n"
-" Device name: #devicename#\n"
-" Device model: #devicemodel#\n"
-" Manufacturer: #manufacturer#\n"
-" Connected via: #devicetype#\n"
-"#endifhardware#-->\n"
-"\n"
-"<!--#ifuser#\n"
-"-) User Information\n"
-" Handheld User Name: #username#\n"
-" Handheld Password: #pw#\n"
-" Handheld User ID: #uid#\n"
-" Viewer ID: #viewerid#\n"
-"#endifuser#-->\n"
-"\n"
-"<!--#ifmemory#\n"
-"-) Memory Information\n"
-" ROM: #rom# kB total\n"
-" Total RAM: #totalmem# kB total\n"
-" Free RAM: #freemem# kB free\n"
-"#endifmemory#-->\n"
-"\n"
-"<!--#ifstorage#\n"
-"-) Storage Information\n"
-" Number of cards: #cards#\n"
-" Memory on cards: #storagemem#\n"
-"#endifstorage#-->\n"
-"\n"
-"<!--#ifdblist#\n"
-"-) List of Databases on Handheld\n"
-" Available Databases: #dblist(%1,)#\n"
-"#endifdblist#-->\n"
-"\n"
-"<!--#ifrecords#\n"
-"-) Number of addresses, to-dos, events, and memos\n"
-" Addresses: #addresses# entries in Addressbook\n"
-" Events: #events# entries in Calendar\n"
-" To-dos: #todos# entries in To-do list\n"
-" Memos: #memos# memos\n"
-"#endifrecords#-->\n"
-"\n"
-"<!--#ifsync#\n"
-"-) Synchronization Information\n"
-" Last sync attempt: #lastsync#\n"
-" Last successful sync: #lastsuccsync#\n"
-" Last sync with PC (ID): #lastsyncpc#\n"
-"#endifsync#-->\n"
-"\n"
-"<!--#ifpcversion#\n"
-"-) Version Information (Desktop)\n"
-" Operating System: #os#\n"
-" Hostname: #hostname#\n"
-" Qt Version: #qt#\n"
-" KDE Version: #kde#\n"
-" KPilot Version: #kpilot#\n"
-" Pilot-Link Version: #pilotlink#\n"
-"#endifpcversion#-->\n"
-"\n"
-"<!--#ifpalmversion#\n"
-"-) Version Information (Handheld)\n"
-" PalmOS: #palmos#\n"
-"#endifpalmversion#-->\n"
-"\n"
-"<!--#ifdebug#\n"
-"-) Debug Information\n"
-" #debug#\n"
-"#endifdebug#-->\n"
-"\n"
-"------------------------------------------------------------\n"
-"Page created <!--#date#--> 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::fromLatin1(sysinfo.getProductID());
-
- const KPilotCard *device = fHandle->getCardInfo();
- if (device)
- {
- fValues[CSL1("devicename")] = TQString::fromLatin1(device->getCardName());
- fValues[CSL1("devicemodel")] = unknown; // TODO
- fValues[CSL1("manufacturer")] = TQString::fromLatin1(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::fromLatin1(device->getCardName()))
- .arg(TQString::fromLatin1(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::fromLatin1(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::fromLatin1(name.sysname))
- .arg(TQString::fromLatin1(name.release))
- .arg(TQString::fromLatin1(name.machine));
- fValues[CSL1("hostname")] = CSL1("%2").arg(TQString::fromLatin1(name.nodename));
- }
-#ifdef KDE_VERSION_STRING
- fValues[CSL1("kde")] = TQString::fromLatin1(KDE_VERSION_STRING);
-#endif
-#ifdef QT_VERSION_STR
- fValues[CSL1("qt")] = TQString::fromLatin1(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::fromLatin1(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::currentDateTime().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 "<<templatefile<<endl;
-#endif
- TQFile infile(templatefile);
- if (infile.open(IO_ReadOnly)) {
- TQTextStream instream(&infile);
- output = instream.read();
- infile.close();
- loaded=true;
- }
- }
-
- if (!loaded)
- {
- WARNINGKPILOT << "Loading template file " << templatefile
- <<" failed. Using default template instead." << endl;
- output=defaultpage;
- }
-
- // Remove all parts not extracted
- for ( TQStringList::Iterator it = removeParts.begin(); it != removeParts.end(); ++it ) {
- TQRegExp re(CSL1("<!--#if%1#.*#endif%1#-->").arg(*it).arg(*it));
- re.setMinimal(true);
- output.remove(re);
- }
- for ( TQStringList::Iterator it = keepParts.begin(); it != keepParts.end(); ++it ) {
- TQRegExp re(CSL1("<!--#if%1#(.*)#endif%1#-->").arg(*it).arg(*it));
- re.setMinimal(true);
- output.replace(re, CSL1("\\1"));
- }
-
- // Do a loop through all keys in fValues
- TQMap<TQString,TQString>::Iterator it;
- for ( it = fValues.begin(); it != fValues.end(); ++it ) {
- output.replace(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.replace(CSL1("%0"), TQString::fromLatin1(dbi.name));
- set_long(&tmpchr[0],dbi.type);
- newpatt.replace(CSL1("%1"), TQString::fromLatin1(tmpchr));
- set_long(&tmpchr[0],dbi.creator);
- newpatt.replace(CSL1("%2"), TQString::fromLatin1(tmpchr));
- newpatt.replace(CSL1("%3"), TQString::number(dbi.index));
- newpatt.replace(CSL1("%4"), TQString::number(dbi.flags));
- newpatt.replace(CSL1("%5"), TQString::number(dbi.miscFlags));
- newpatt.replace(CSL1("%6"), TQString::number(dbi.version));
- TQDateTime tm;
- tm.setTime_t(dbi.createDate);
- newpatt.replace(CSL1("%7"), tm.toString(Qt::LocalDate));
- tm.setTime_t(dbi.modifyDate);
- newpatt.replace(CSL1("%8"), tm.toString(Qt::LocalDate));
- tm.setTime_t(dbi.backupDate);
- newpatt.replace(CSL1("%9"), tm.toString(Qt::LocalDate));
-
- dbstring.append(newpatt);
- }
- // Now, just replace the whole found pattern by the string we just constructed.
- output.replace(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<<output;
- outfile.close();
-
- emit logMessage(i18n("Handheld system information written to the file %1").arg(fOutputFile));
- TQTimer::singleShot(0, this, TQT_SLOT(cleanup()));
-}
-
-void SysInfoConduit::cleanup()
-{
- FUNCTIONSETUP;
- // Nothing to clean up so far (Do I have memory leaks somewhere?)
- emit syncDone(this);
-}