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/docconduit/kpalmdoc_dlg.cc | 529 ++++++++++++++++++++++++++++++++++++ 1 file changed, 529 insertions(+) create mode 100644 conduits/docconduit/kpalmdoc_dlg.cc (limited to 'conduits/docconduit/kpalmdoc_dlg.cc') diff --git a/conduits/docconduit/kpalmdoc_dlg.cc b/conduits/docconduit/kpalmdoc_dlg.cc new file mode 100644 index 0000000..f73e392 --- /dev/null +++ b/conduits/docconduit/kpalmdoc_dlg.cc @@ -0,0 +1,529 @@ +/* kpalmdoc_dlg.cpp +** +** Copyright (C) 2003 by Reinhold Kainhofer +** +** This is the main dialog of the KDE PalmDOC converter. +*/ + +/* +** 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 +#include + +#include + +#include "kpalmdoc_dlg.h" +#include "kpalmdoc_dlgbase.h" +#include "DOC-converter.h" +#include "kpalmdocSettings.h" + + +ConverterDlg::ConverterDlg( TQWidget *parent, const TQString& caption) + : KDialogBase( parent, "converterdialog", false, caption, KDialogBase::Close|KDialogBase::Help|KDialogBase::User1, + KDialogBase::Close, true, i18n("&About")) +{ + TQWidget *page = makeHBoxMainWidget(); + dlg=new ConverterDlgBase(page); + TQStringList l = KGlobal::charsets()->descriptiveEncodingNames(); + for ( TQStringList::Iterator it = l.begin(); it != l.end(); ++it) + { + dlg->fEncoding->insertItem(*it); + } + + readSettings(); + + connect(dlg->fDirectories, TQT_SIGNAL(toggled(bool)), + this, TQT_SLOT(slotDirectories(bool))); + connect(dlg->fTextToPDB, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotToPDB())); + connect(dlg->fPDBToText, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotToText())); + + resize(tqminimumSize()); +} + +ConverterDlg::~ConverterDlg() +{ + // no need to delete child widgets, Qt does it all for us +} +void ConverterDlg::writeSettings() +{ + // General page + KPalmDocSettings::setTXTFolder( dlg->fTXTDir->url() ); + KPalmDocSettings::setPDBFolder( dlg->fPDBDir->url() ); + KPalmDocSettings::setSyncFolders( dlg->fDirectories->isChecked() ); + KPalmDocSettings::setAskOverwrite( dlg->fAskOverwrite->isChecked() ); + KPalmDocSettings::setVerboseMessages( dlg->fVerbose->isChecked() ); + KPalmDocSettings::setEncoding( dlg->fEncoding->currentText() ); + + // PC->Handheld page + KPalmDocSettings::setCompress( dlg->fCompress->isChecked() ); + KPalmDocSettings::setConvertBookmarks( dlg->fConvertBookmarks->isChecked() ); + KPalmDocSettings::setBookmarksInline( dlg->fBookmarksInline->isChecked() ); + KPalmDocSettings::setBookmarksEndtags( dlg->fBookmarksEndtags->isChecked() ); + KPalmDocSettings::setBookmarksBmk( dlg->fBookmarksBmk->isChecked() ); + + // Handheld->PC page + KPalmDocSettings::setBookmarksToPC( dlg->fPCBookmarks->id(dlg->fPCBookmarks->selected()) ); + + KPalmDocSettings::self()->writeConfig(); +} + +void ConverterDlg::readSettings() +{ + FUNCTIONSETUP; + + KPalmDocSettings::self()->readConfig(); + + // General Page: + dlg->fTXTDir->setURL(KPalmDocSettings::tXTFolder()); + dlg->fPDBDir->setURL(KPalmDocSettings::pDBFolder()); + bool dir=KPalmDocSettings::syncFolders(); + dlg->fDirectories->setChecked(dir); + slotDirectories(dir); + dlg->fAskOverwrite->setChecked( KPalmDocSettings::askOverwrite() ); + dlg->fVerbose->setChecked( KPalmDocSettings::verboseMessages() ); + TQString encoding = KPalmDocSettings::encoding(); +#ifdef DEBUG + DEBUGKPILOT << fname << ": Encoding=" << encoding << endl; +#endif + dlg->fEncoding->setCurrentText( KPalmDocSettings::encoding() ); + + // PC->Handheld page + dlg->fCompress->setChecked(KPalmDocSettings::compress() ); + dlg->fConvertBookmarks->setChecked(KPalmDocSettings::convertBookmarks()); + dlg->fBookmarksInline->setChecked(KPalmDocSettings::bookmarksInline()); + dlg->fBookmarksEndtags->setChecked(KPalmDocSettings::bookmarksEndtags()); + dlg->fBookmarksBmk->setChecked(KPalmDocSettings::bookmarksBmk()); + + // Handheld->PC page + dlg->fPCBookmarks->setButton(KPalmDocSettings::bookmarksToPC() ); +} + +void ConverterDlg::slotClose() +{ + writeSettings(); + kapp->quit(); + delete this; +} + +void ConverterDlg::slotToText() +{ + FUNCTIONSETUP; + // First, get the settings from the controls and initialize + // the converter object + int bmks=dlg->fPCBookmarks->id(dlg->fPCBookmarks->selected()); + DOCConverter conv; + switch(bmks) { + case 0: conv.setBookmarkTypes(DOCConverter::eBmkNone); break; + case 1: conv.setBookmarkTypes(DOCConverter::eBmkInline); break; + case 2: conv.setBookmarkTypes(DOCConverter::eBmkEndtags); break; + case 3: conv.setBookmarkTypes(DOCConverter::eBmkDefaultBmkFile); break; + default: + break; + } + + askOverwrite=dlg->fAskOverwrite->isChecked(); + verbose=dlg->fVerbose->isChecked(); + + + bool dir=dlg->fDirectories->isChecked(); + TQString txturl=dlg->fTXTDir->url(); + TQString pdburl=dlg->fPDBDir->url(); + + TQFileInfo txtinfo(txturl); + TQFileInfo pdbinfo(pdburl); + + if (dir) + { + if (pdbinfo.isFile()) + { + int res=KMessageBox::questionYesNo(this, + i18n("You selected to sync folders, " + "but gave a filename instead (%1)." + "
Use folder %2 instead?
").arg(pdburl) + .arg(pdbinfo.dirPath(true)), TQString::null, i18n("Use Folder"), KStdGuiItem::cancel()); + if (res==KMessageBox::Yes) + { + pdburl=pdbinfo.dirPath(true); + pdbinfo.setFile(pdburl); + } + else return; + } + + if (!pdbinfo.isDir()) + { + // no directory, so error message and return + KMessageBox::sorry(this, + i18n("The folder %1 for " + "the handheld database files is not a valid " + "folder.").arg(pdburl)); + return; + } + + if (!pdbinfo.exists()) + { + KMessageBox::sorry(this, + i18n("The folder %1 for " + "the handheld database files is not a " + "valid directory.").arg(pdburl)); + return; + } + + + // Now check the to directory: + if (txtinfo.isFile()) + { + int res=KMessageBox::questionYesNo(this, + i18n("You selected to sync folders, " + "but gave a filename instead (%1)." + "
Use folder %2 instead?
").arg(txturl) + .arg(txtinfo.dirPath(true)), TQString::null, i18n("Use Folder"), KStdGuiItem::cancel()); + if (res==KMessageBox::Yes) { + txturl=txtinfo.dirPath(true); + txtinfo.setFile(txturl); + } + else return; + } + + // Now that we have a directory path, try to create it: + if (!txtinfo.isDir()) { + txtinfo.dir().mkdir(txturl, true); + } + if (!txtinfo.isDir()) { + KMessageBox::sorry(this, + i18n("The folder %1 for " + "the text files could not be created.").arg(txturl)); + return; + } + + + // Now that we have both directories, create the converter object + DEBUGKPILOT<<"Pdbinfo.dir="<The file %1 does not " + "exist.").arg(pdburl)); + return; + } + + // Now check the to file +/* // I can't check if a given filename is a valid filename + if (!txtinfo.isFile()) + { + KMessageBox::sorry(this, i18n("The filename %1 for the " + "text is not a valid filename.").arg(txturl)); + return; + }*/ + if (convertPDBtoTXT(pdbinfo.dirPath(true), pdbinfo.fileName(), + txtinfo.dirPath(true), txtinfo.fileName(), &conv) ) + { + KMessageBox::information(this, i18n("Conversion of file %1 successful.").arg(pdburl)); + } + + } + +} + +void ConverterDlg::slotToPDB() +{ + FUNCTIONSETUP; + // First, get the settings from the controls and initialize + // the converter object + bool compress=dlg->fCompress->isChecked(); + int bmks=0; + if (dlg->fConvertBookmarks->isChecked()) + { + if (dlg->fBookmarksInline->isChecked()) bmks|=DOCConverter::eBmkInline; + if (dlg->fBookmarksEndtags->isChecked()) bmks|=DOCConverter::eBmkEndtags; + if(dlg->fBookmarksBmk->isChecked()) bmks|=DOCConverter::eBmkDefaultBmkFile; + } + DOCConverter conv; + conv.setBookmarkTypes(bmks); + conv.setCompress(compress); + conv.setSort(DOCConverter::eSortName); + + + askOverwrite=dlg->fAskOverwrite->isChecked(); + verbose=dlg->fVerbose->isChecked(); + + + bool dir=dlg->fDirectories->isChecked(); + TQString txturl=dlg->fTXTDir->url(); + TQString pdburl=dlg->fPDBDir->url(); + + TQFileInfo txtinfo(txturl); + TQFileInfo pdbinfo(pdburl); + + if (dir) + { + if (txtinfo.isFile()) + { + int res=KMessageBox::questionYesNo(this, + i18n("You selected to sync folders, " + "but gave a filename instead (%1)." + "
Use folder %2 instead?
").arg(txturl) + .arg(txtinfo.dirPath(true)), TQString::null, i18n("Use Folder"), KStdGuiItem::cancel()); + if (res==KMessageBox::Yes) + { + txturl=txtinfo.dirPath(true); + txtinfo.setFile(txturl); + } + else return; + } + + if (!txtinfo.isDir() || !txtinfo.exists()) + { + KMessageBox::sorry(this, + i18n("The folder %1 for " + "the text files is not a valid folder.").arg(txturl)); + return; + } + + + // Now check the to directory: + if (pdbinfo.isFile()) + { + int res=KMessageBox::questionYesNo(this, + i18n("You selected to sync folders, " + "but gave a filename instead (%1)." + "
Use folder %2 instead?
") + .arg(pdburl) + .arg(pdbinfo.dirPath(true)), TQString::null, i18n("Use Folder"), KStdGuiItem::cancel()); + if (res==KMessageBox::Yes) { + pdburl=pdbinfo.dirPath(true); + pdbinfo.setFile(pdburl); + } + else return; + } + + // Now that we have a directory path, try to create it: + if (!pdbinfo.isDir()) { + pdbinfo.dir().mkdir(pdburl, true); + } + if (!pdbinfo.isDir()) { + KMessageBox::sorry(this, i18n("The folder %1 for " + "the PalmDOC files could not be created.").arg(pdburl)); + return; + } + + + // Now that we have both directories, create the converter object + DEBUGKPILOT<<"Pdbinfo.dir="<The file %1 does not " + "exist.").arg(txturl)); + return; + } + + if (convertTXTtoPDB(txtinfo.dirPath(true), txtinfo.fileName(), + pdbinfo.dirPath(true), pdbinfo.fileName(), &conv) ) + { + KMessageBox::information(this, i18n("Conversion of file %1 successful.").arg(txturl)); + } + + } + +} + + +void ConverterDlg::slotUser1() +{ + KAboutApplication ab(KGlobal::instance()->aboutData(), this); + ab.show(); + ab.exec(); + return; +} + +void ConverterDlg::slotDirectories(bool dir) +{ + FUNCTIONSETUP; + DEBUGKPILOT<<"Slot Directories: "<fTextLabel->setText(i18n("&Text folder:")); + dlg->fPdbLabel->setText(i18n("&PalmDOC folder:")); + dlg->fTXTDir->setMode(KFile::LocalOnly | KFile::Directory); + dlg->fPDBDir->setMode(KFile::LocalOnly | KFile::Directory); + } else { + dlg->fTextLabel->setText(i18n("&Text file:")); + dlg->fPdbLabel->setText(i18n("&DOC file:")); + dlg->fTXTDir->setMode(KFile::LocalOnly | KFile::File); + dlg->fPDBDir->setMode(KFile::LocalOnly | KFile::File); + } +} + +bool ConverterDlg::convertTXTtoPDB(TQString txtdir, TQString txtfile, + TQString pdbdir, TQString pdbfile, DOCConverter*conv) +{ + FUNCTIONSETUP; + bool res=false; + TQFileInfo dbfileinfo(pdbdir, pdbfile); + DEBUGKPILOT<<"Working on file "<The database file %1 already exists. Overwrite it?") + .arg(dbfileinfo.filePath()), TQString::null, i18n("Overwrite"), KStdGuiItem::cancel() ) )) + { + PilotLocalDatabase*pdbdb=new PilotLocalDatabase(pdbdir, TQFileInfo(pdbfile).baseName(), false); + if (pdbdb) + { + if (!pdbdb->isOpen()) + { +#ifdef DEBUG + DEBUGKPILOT<createDatabase(get_long("REAd"), get_long("TEXt")) ) { + } + } + + if (pdbdb->isOpen()) + { + conv->setPDB(pdbdb); + conv->setTXTpath(txtdir, txtfile); + DEBUGKPILOT<<"Converting "<convertTXTtoPDB()) res=true; + } + delete pdbdb; + } + if ( !res && verbose ) + { + KMessageBox::sorry(this, i18n("Error while converting the text %1.").arg(txtfile)); + } + } + else + { + DEBUGKPILOT<<"Ignoring the file "<The text file %1 already exists. Overwrite it?") + .arg(txtfileinfo.filePath()), TQString::null, i18n("Overwrite"), KStdGuiItem::cancel() ) )) + { + PilotLocalDatabase*pdbdb=new PilotLocalDatabase(pdbdir, TQFileInfo(pdbfile).baseName(), false); + if (pdbdb) + { + if (pdbdb->isOpen()) + { + conv->setPDB(pdbdb); + conv->setTXTpath(txtdir, txtfile); + DEBUGKPILOT<<"Converting "<convertPDBtoTXT()) res=true; + } + delete pdbdb; + } + if ( !res && verbose ) + { + KMessageBox::sorry(this, i18n("Error while converting the text %1.").arg(pdbfile)); + } + } + else + { + DEBUGKPILOT<<"Ignoring the file "<