summaryrefslogtreecommitdiffstats
path: root/kpilot/kpilot/dbviewerWidget.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kpilot/kpilot/dbviewerWidget.cc')
-rw-r--r--kpilot/kpilot/dbviewerWidget.cc440
1 files changed, 0 insertions, 440 deletions
diff --git a/kpilot/kpilot/dbviewerWidget.cc b/kpilot/kpilot/dbviewerWidget.cc
deleted file mode 100644
index b5f04632..00000000
--- a/kpilot/kpilot/dbviewerWidget.cc
+++ /dev/null
@@ -1,440 +0,0 @@
-/* dbViewerWidget.cc KPilot
-**
-** Copyright (C) 2003 by Dan Pilone.
-** Copyright (C) 2003 Reinhold Kainhofer <reinhold@kainhofer.com>
-** Written 2003 by Reinhold Kainhofer and Adriaan de Groot
-**
-** This is the generic DB viewer widget.
-*/
-
-/*
-** 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 <unistd.h>
-#include <stdio.h>
-
-#include <pi-file.h>
-#include <pi-dlp.h>
-
-#include <tqlayout.h>
-#include <tqdir.h>
-#include <tqregexp.h>
-#include <tqlistview.h>
-
-#include <klistbox.h>
-#include <ktextedit.h>
-#include <kpushbutton.h>
-#include <kcombobox.h>
-#include <kmessagebox.h>
-
-#include "listCat.h"
-#include "listItems.h"
-
-#include "dbviewerWidget.h"
-#include "pilotLocalDatabase.h"
-#include "pilotDatabase.h"
-#include "pilotRecord.h"
-#include "dbFlagsEditor.h"
-#include "dbRecordEditor.h"
-#include "dbAppInfoEditor.h"
-#include "kpilotConfig.h"
-
-
-#include "dbviewerWidget.moc"
-
-
-GenericDBWidget::GenericDBWidget(TQWidget *parent, const TQString &dbpath) :
- PilotComponent(parent,"component_generic",dbpath), fDB(0L)
-{
- FUNCTIONSETUP;
- setupWidget();
- fRecList.setAutoDelete(true);
-}
-
-
-void GenericDBWidget::setupWidget()
-{
- TQGridLayout *g = new TQGridLayout( this, 1, 1, SPACING);
-
- fDBList = new KListBox( this );
- g->addWidget( fDBList, 0, 0 );
- fDBType = new KComboBox( FALSE, this );
- g->addWidget( fDBType, 1, 0 );
- fDBType->insertItem( i18n( "All Databases" ) );
- fDBType->insertItem( i18n( "Only Applications (*.prc)" ) );
- fDBType->insertItem( i18n( "Only Databases (*.pdb)" ) );
-
- TQGridLayout *g1 = new TQGridLayout( 0, 1, 1);
- fDBInfo = new KTextEdit( this );
- fDBInfo->setSizePolicy( TQSizePolicy( (TQSizePolicy::SizeType)3, (TQSizePolicy::SizeType)0, 0, 0, fDBInfo->sizePolicy().hasHeightForWidth() ) );
- fDBInfo->setReadOnly( TRUE );
- g1->addWidget( fDBInfo, 0, 0 );
- fDBInfoButton = new KPushButton( i18n( "General Database &Information" ), this );
- g1->addWidget( fDBInfoButton, 1, 0 );
- fAppInfoButton = new KPushButton( i18n( "&Application Info Block (Categories etc.)" ), this );
- g1->addWidget( fAppInfoButton, 2, 0 );
-
- TQGridLayout *g2 = new TQGridLayout( 0, 1, 1);
- fRecordList = new KListView( this );
- g2->addMultiCellWidget( fRecordList, 0, 0, 0, 2 );
- fRecordList->addColumn(i18n("Rec. Nr."));
- fRecordList->addColumn(i18n("Length"));
- fRecordList->addColumn(i18n("Record ID"));
- fRecordList->setAllColumnsShowFocus(true);
- fRecordList->setResizeMode( KListView::LastColumn );
- fRecordList->setFullWidth( TRUE );
- fRecordList->setItemsMovable( FALSE );
-
- fAddRecord = new KPushButton( i18n("&Add..."), this );
- g2->addWidget( fAddRecord, 1, 0 );
- fEditRecord = new KPushButton( i18n("&Edit..."), this );
- g2->addWidget( fEditRecord, 1, 1 );
- fDeleteRecord = new KPushButton( i18n("&Delete"), this );
- g2->addWidget( fDeleteRecord, 1, 2 );
-
- g1->addLayout( g2, 3, 0 );
-
-
- g->addMultiCellLayout( g1, 0, 1, 1, 1 );
- resize( TQSize(682, 661).expandedTo(minimumSizeHint()) );
-
- connect(fDBList, TQT_SIGNAL(highlighted(const TQString &)),
- this, TQT_SLOT(slotSelected(const TQString &)));
- connect(fDBType, TQT_SIGNAL(activated(int)),
- this, TQT_SLOT(slotDBType(int)));
- connect(fDBInfoButton, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotShowDBInfo()));
- connect(fAppInfoButton, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotShowAppInfo()));
- connect(fAddRecord, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotAddRecord()));
- connect(fEditRecord, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotEditRecord()));
- connect(fDeleteRecord, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotDeleteRecord()));
- connect(fRecordList, TQT_SIGNAL(executed(TQListViewItem*)),
- this, TQT_SLOT(slotEditRecord(TQListViewItem*)));
-
-}
-
-GenericDBWidget::~GenericDBWidget()
-{
- FUNCTIONSETUP;
- if (fDB) KPILOT_DELETE(fDB);
-}
-
-
-void GenericDBWidget::showComponent()
-{
- FUNCTIONSETUP;
- fDBInfo->setText(TQString::null);
- slotDBType(0);
-
- fDBList->show();
- fDBInfo->show();
-}
-
-void GenericDBWidget::hideComponent()
-{
- reset();
-}
-
-void GenericDBWidget::slotSelected(const TQString &dbname)
-{
- FUNCTIONSETUP;
-#ifdef DEBUG
- DEBUGKPILOT << fname << ": Selected DB " << dbname << endl;
-#endif
- struct DBInfo dbinfo;
- TQString display;
- fRecList.clear();
- fRecordList->clear();
-
- if (fDB) KPILOT_DELETE(fDB);
- currentDB=dbname;
-
- if (!shown) return;
-
- if (dbname.endsWith(CSL1(".pdb")) || dbname.endsWith(CSL1(".PDB")))
- {
- // We are dealing with a database
- currentDBtype=eDatabase;
-
- currentDB.remove( TQRegExp(CSL1(".(pdb|PDB)$")) );
-
- fDB=new PilotLocalDatabase(dbPath(), currentDB, false);
- if (!fDB || !fDB->isOpen())
- {
- fDBInfo->setText(i18n("<B>Warning:</B> Cannot read "
- "database file %1.").arg(currentDB));
- return;
- }
- dbinfo=fDB->getDBInfo();
- display.append(i18n("<B>Database:</B> %1, %2 records<BR>")
- .arg(TQString::fromLatin1(dbinfo.name)).arg(fDB->recordCount()));
- char buff[5];
- set_long(buff, dbinfo.type);
- buff[4]='\0';
- TQString tp = TQString::fromLatin1(buff);
- set_long(buff, dbinfo.creator);
- buff[4]='\0';
- TQString cr = TQString::fromLatin1(buff);
- display.append(i18n("<B>Type:</B> %1, <B>Creator:</B> %2<br><br>").arg(tp).arg(cr));
-
- int currentRecord = 0;
- PilotRecord *pilotRec;
-
-#ifdef DEBUG
- DEBUGKPILOT << fname << ": Reading database "<<dbname<<"..." << endl;
-#endif
-
- while ((pilotRec = fDB->readRecordByIndex(currentRecord)) != 0L)
- {
-// if (!(pilotRec->isDeleted()) )
- {
- PilotListViewItem*item=new PilotListViewItem(fRecordList,
- TQString::number(currentRecord), TQString::number(pilotRec->size()),
- TQString::number(pilotRec->id()),
- TQString::null,
- pilotRec->id(), pilotRec);
- item->setNumericCol(0, true);
- item->setNumericCol(1, true);
- item->setNumericCol(2, true);
- }
- fRecList.append(pilotRec);
-
- currentRecord++;
- }
-
-#ifdef DEBUG
- DEBUGKPILOT << fname
- << ": Total " << currentRecord << " records" << endl;
-#endif
-
- }
- else
- {
- // we are dealing with an application
- currentDBtype=eApplication;
-
- TQCString filename = TQFile::encodeName(dbPath() + CSL1("/") + dbname);
- const char *s = filename;
- struct pi_file *pf = pi_file_open(const_cast<char *>(s));
- if (!pf)
- {
- fDBInfo->setText(i18n("<B>Warning:</B> Cannot read "
- "application file %1.").arg(dbname));
- return;
- }
-#if PILOT_LINK_NUMBER < PILOT_LINK_0_12_0
- if (pi_file_get_info(pf,&dbinfo))
- {
- fDBInfo->setText(i18n("<B>Warning:</B> Cannot read "
- "application file %1.").arg(dbname));
- return;
- }
-#else
- pi_file_get_info(pf,&dbinfo);
-#endif
- display.append(i18n("<B>Application:</B> %1<BR><BR>").arg(dbname));
- }
- enableWidgets(currentDBtype==eDatabase);
-
- TQDateTime ttime;
-
- ttime.setTime_t(dbinfo.createDate);
- display.append(i18n("Created: %1<BR>").arg(ttime.toString()));
-
- ttime.setTime_t(dbinfo.modifyDate);
- display.append(i18n("Modified: %1<BR>").arg(ttime.toString()));
-
- ttime.setTime_t(dbinfo.backupDate);
- display.append(i18n("Backed up: %1<BR>").arg(ttime.toString()));
-
- fDBInfo->setText(display);
-}
-
-void GenericDBWidget::slotDBType(int mode)
-{
- FUNCTIONSETUP;
- if (!shown) return;
-
- reset();
-
- TQDir dir(dbPath());
- switch (mode)
- {
- case 1:
- dir.setNameFilter(CSL1("*.prc")); break;
- case 2:
- dir.setNameFilter(CSL1("*.pdb")); break;
- case 0:
- default:
- dir.setNameFilter(CSL1("*.pdb;*.prc")); break;
- }
- TQStringList l = dir.entryList();
- fDBList->insertStringList(l);
-}
-
-void GenericDBWidget::reset()
-{
- FUNCTIONSETUP;
- fDBList->clear();
- fDBInfo->clear();
- fRecordList->clear();
- if (fDB) KPILOT_DELETE(fDB);
- currentDB=TQString::null;
-}
-
-void GenericDBWidget::slotAddRecord()
-{
- FUNCTIONSETUP;
- pi_buffer_t *b = pi_buffer_new(0);
- PilotRecord *rec=new PilotRecord(b, 0, 0, 0);
- PilotListViewItem*item=new PilotListViewItem(fRecordList,
- TQString::number(-1), TQString::number(rec->size()),
- TQString::number(rec->id()), TQString::null,
- rec->id(), rec);
- if (slotEditRecord(item))
- {
- fRecList.append(rec);
- }
- else
- {
- KPILOT_DELETE(item);
- KPILOT_DELETE(rec);
- }
-}
-
-bool GenericDBWidget::slotEditRecord(TQListViewItem*item)
-{
- FUNCTIONSETUP;
- PilotListViewItem*currRecItem=dynamic_cast<PilotListViewItem*>(item);
- if (currRecItem)
- {
- PilotRecord*rec=(PilotRecord*)currRecItem->rec();
- int nr=currRecItem->text(0).toInt();
- DBRecordEditor*dlg=new DBRecordEditor(rec, nr, this);
- if (dlg->exec())
- {
- currRecItem->setText(1, TQString::number(rec->size()));
- currRecItem->setText(2, TQString::number(rec->id()));
- fRecordList->triggerUpdate();
- writeRecord(rec);
- KPILOT_DELETE(dlg);
- return true;
- }
- KPILOT_DELETE(dlg);
- }
- else
- {
- // Either nothing selected, or some error occurred...
- KMessageBox::information(this, i18n("You must select a record for editing."), i18n("No Record Selected"), CSL1("norecordselected"));
- }
- return false;
-}
-void GenericDBWidget::slotEditRecord()
-{
- slotEditRecord(fRecordList->selectedItem());
-}
-
-void GenericDBWidget::slotDeleteRecord()
-{
- FUNCTIONSETUP;
- PilotListViewItem*currRecItem=dynamic_cast<PilotListViewItem*>(fRecordList->selectedItem());
- if (currRecItem && (KMessageBox::questionYesNo(this, i18n("<qt>Do you really want to delete the selected record? This cannot be undone.<br><br>Delete record?<qt>"), i18n("Deleting Record"), KStdGuiItem::del(), KStdGuiItem::cancel())==KMessageBox::Yes) )
- {
- PilotRecord*rec=(PilotRecord*)currRecItem->rec();
- rec->setDeleted();
- writeRecord(rec);
- // fRecordList->triggerUpdate();
- KPILOT_DELETE(currRecItem);
- }
-}
-
-void GenericDBWidget::slotShowAppInfo()
-{
- FUNCTIONSETUP;
- if (!fDB) return;
- char*appBlock=new char[0xFFFF];
- int len=fDB->readAppBlock((unsigned char*)appBlock, 0xFFFF);
- DBAppInfoEditor*dlg=new DBAppInfoEditor(appBlock, len, this);
- if (dlg->exec())
- {
- fDB->writeAppBlock( (unsigned char*)(dlg->appInfo), dlg->len );
-
- KPilotConfig::addAppBlockChangedDatabase(getCurrentDB());
- KPilotSettings::writeConfig();
- }
- KPILOT_DELETE(dlg);
- delete[] appBlock;
-}
-
-void GenericDBWidget::slotShowDBInfo()
-{
- FUNCTIONSETUP;
- if ( !fDB || !shown ) return;
- DBInfo db=fDB->getDBInfo();
- DBFlagsEditor*dlg=new DBFlagsEditor(&db, this);
- if (dlg->exec())
- {
-#ifdef DEBUG
- DEBUGKPILOT<<"OK pressed, assiging DBInfo, flags="<<
- db.flags<<", miscFlag="<<db.miscFlags<<endl;
-#endif
- fDB->setDBInfo(db);
-
- KPilotConfig::addFlagsChangedDatabase(getCurrentDB());
- KPilotSettings::writeConfig();
-
- slotSelected(fDBList->currentText());
- }
- KPILOT_DELETE(dlg);
-}
-
-void GenericDBWidget::enableWidgets(bool enable)
-{
- //FUNCTIONSETUP;
- fDBInfoButton->setEnabled(enable);
- fAppInfoButton->setEnabled(enable);
- fRecordList->setEnabled(enable);
- fAddRecord->setEnabled(enable);
- fEditRecord->setEnabled(enable);
- fDeleteRecord->setEnabled(enable);
-}
-
-void GenericDBWidget::writeRecord(PilotRecord*r)
-{
- // FUNCTIONSETUP;
- if (fDB && r)
- {
- fDB->writeRecord(r);
- markDBDirty(getCurrentDB());
- }
-}
-
-
-
-
-