42 #include <qfiledialog.h>
43 #include <qlineedit.h>
48 #include "dimportdb.h"
51 #include "adataexchange.h"
55 void dSelectDB::init()
63 settings.insertSearchPath( QSettings::Unix, QString(QDir::homeDirPath())+QString(
"/.ananas"));
64 settings.insertSearchPath( QSettings::Windows,
"/ananasgroup/ananas" );
66 local = settings.entryList(
"/groups").count();
71 aLog::print(aLog::MT_DEBUG, tr(
"dSelectDB local settings not found"));
74 QStringList subkeys = settings.subkeyList(
"/ananasgroup/ananas/globalsettings");
75 settings.insertSearchPath(QSettings::Windows,
"/ananasgroup/ananas/globalsettings");
76 QStringList entryGroup;
77 for(uint i=0; i<subkeys.count();i++)
79 QString str =subkeys[i];
81 entryGroup =settings.entryList(
"/"+str);
82 settings.beginGroup(
"/"+str);
83 readSettings(entryGroup);
88 QString suff =
"*_grouprc";
90 if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
91 aLog::print(aLog::MT_INFO, tr(
"Warning: BinReloc failed to initialize (error code %1)\n").arg(error));
92 aLog::print(aLog::MT_INFO, tr(
"Will fallback to hardcoded default path.\n"));
95 if ( QString(br_find_prefix(
"/usr")) ==
"/usr" ) {
98 etcDir= br_find_etc_dir(
"/etc");
100 aLog::print(aLog::MT_DEBUG, tr(
"dSelectDB::init BinReloc path to etc dir is '%1'\n").arg( etcDir ));
102 QDir dir( etcDir + QString(
"/ananas"),suff,QDir::Name | QDir::IgnoreCase, QDir::Files | QDir::Readable);
103 QStringList subkeys = dir.entryList(suff);
104 settings.insertSearchPath(QSettings::Unix,etcDir + QString(
"/ananas/"));
105 QStringList entryGroup;
106 for(uint i=0; i<subkeys.count();i++)
108 QString str =subkeys[i];
109 str = str.left(str.length()-2);
110 entryGroup =settings.entryList(
"/"+str);
111 settings.beginGroup(
"/"+str);
112 readSettings(entryGroup);
119 QStringList lst = settings.entryList(
"/groups");
120 settings.beginGroup(
"/groups");
124 setIcon( rcIcon(
"ananas-32x32.png"));
125 listDBRC->hideColumn( 1 );
126 listDBRC->setSorting( -1 );
127 listDBRC->header()->hide();
128 listDBRC->setRootIsDecorated(1);
129 buttonOk->setEnabled( FALSE );
133 void dSelectDB::readSettings(QStringList entryGroup)
138 QString s, sp, sn, rc;
140 for(uint j=0; j<entryGroup.count();j++)
143 eitems = settings.entryList(entryGroup[j]);
144 QString groupName =
"unknown group";
145 groupName = settings.readEntry(entryGroup[j]);
146 aLog::print(aLog::MT_DEBUG, tr(
"dSelectDB read settings for group with name %1").arg(groupName));
150 while(lastIt->depth()>0)
154 gitem=
new rcListViewItem(listDBRC, lastIt, groupName,
"",
true );
155 gitem->setOpen(
true);
160 gitem->setOpen(
true);
163 QMap<QString,QString> cfg;
164 for(
int k = eitems.count()-1; k>=0; k--)
167 rc = settings.readEntry(entryGroup[j]+
"/"+eitems[k]);
177 void dSelectDB::itemSelect( QListViewItem *item )
181 buttonOk->setEnabled( !i->group );
182 dbPath->setText(QDir::convertSeparators(i->rcfile));
188 void dSelectDB::newGroup()
190 QListViewItem *gitem;
192 listDBRC->setRootIsDecorated(1);
193 gitem->setOpen(
true);
194 listDBRC->setSelected(gitem,
true);
202 void dSelectDB::newItem()
212 gitem->setOpen(
true);
217 listDBRC->setSelected(item,
true);
223 void dSelectDB::editItem()
226 dEditRC *d =
new dEditRC(
this);
233 item->setRenameEnabled(0,
true);
234 item->startRename(0);
240 d->setdata( QDir::convertSeparators(item->rcfile), item );
241 if ( d->exec() == QDialog::Accepted )
250 void dSelectDB::deleteItem()
253 item=listDBRC->selectedItem();
256 QString msg = tr(
"Delete item?");
257 if(QMessageBox::question(
this,tr(
"confirm delete"),msg,QMessageBox::Ok,QMessageBox::Cancel)!=QMessageBox::Ok)
263 if (listDBRC->childCount()==0) withgroups=0;
269 void dSelectDB::saveRC()
273 aLog::print(aLog::MT_INFO, tr(
"dSelectDB save settings"));
277 QString home = QDir::homeDirPath();
279 QString msg = QString(
"Все внесенные изменения будут сохранены локально в вашем домашнем каталоге.\nПри очередном запуске программы будут использованы локальные настройки из каталога\n%1/.ananas.\nЕсли Вы хотите использовать глобальные настройки, вам следует удалить каталог\n%2/.ananas").arg(home).arg(home);
281 QString msg = tr(
"save settings local?");
283 if(QMessageBox::question(
this,tr(
"save"),QString::fromUtf8(msg),QMessageBox::Ok,QMessageBox::Cancel)!=QMessageBox::Ok)
289 if (br_init_lib(&error) == 0 && error != BR_INIT_ERROR_DISABLED) {
290 aLog::print(aLog::MT_INFO, tr(
"Warning: BinReloc failed to initialize (error code %1)\n").arg(error));
291 aLog::print(aLog::MT_INFO, tr(
"Will fallback to hardcoded default path.\n"));
295 if ( QString(br_find_prefix(
"/usr")) ==
"/usr" ) {
298 etcDir= br_find_etc_dir(
"/etc");
300 aLog::print(aLog::MT_DEBUG, tr(
"dSelectDB::saveRC BinReloc path to etc dir is '%1'\n").arg(etcDir) );
302 settings.removeSearchPath( QSettings::Unix, etcDir + QString(
"/ananas") );
303 settings.removeSearchPath( QSettings::Windows,
"/ananasgroup/ananas/globalsettings");
311 settings.beginGroup(
"/groups");
317 settings.writeEntry(QString::number(gcount),gitem->text(0));
318 if(gitem->childCount())
323 settings.writeEntry(QString::number(gcount)+
"/"+QString::number(ecount),item->rcfile);
336 void dSelectDB::onOK()
343 if ( !item->rcfile.isEmpty() ) {
344 rcfile = item->rcfile;
351 void dSelectDB::onCancel()
358 void dSelectDB::ItemRenamed(QListViewItem *item,
int col)
365 void dSelectDB::clearSettings()
368 QStringList entryGroup =settings.entryList(
"/groups");
369 settings.beginGroup(
"/groups");
370 for(uint j=0; j<entryGroup.count();j++)
372 eitems = settings.entryList(entryGroup[j]);
373 settings.removeEntry(entryGroup[j]);
374 for(
int k = eitems.count()-1; k>=0; k--)
377 settings.removeEntry(entryGroup[j]+
"/"+eitems[k]);
384 void dSelectDB::onHelp()
390 void dSelectDB::createMenu()
393 menuBar =
new QMenuBar(
this);
394 QPopupMenu *menuFile =
new QPopupMenu(
this);
395 menuFile->insertItem(tr(
"E&xit"),
this, SLOT(onCancel()));
397 QPopupMenu *menuEdit =
new QPopupMenu(
this);
398 menuEdit->insertItem(tr(
"New &group"),
this, SLOT(newGroup()));
399 menuEdit->insertItem(tr(
"&New shema"),
this, SLOT(newItem()));
400 menuEdit->insertSeparator();
401 menuEdit->insertItem(tr(
"Edi&t"),
this, SLOT(editItem()));
402 menuEdit->insertSeparator();
403 menuEdit->insertItem(tr(
"&Delete"),
this, SLOT(deleteItem()));
405 QPopupMenu *menuAction =
new QPopupMenu(
this);
406 menuAction->insertItem(tr(
"&Import"),
this, SLOT(importItem()));
407 menuAction->insertItem(tr(
"&Export"),
this, SLOT(exportItem()));
409 menuBar->insertItem(tr(
"Program"), menuFile);
410 menuBar->insertItem(tr(
"Actions"), menuEdit);
411 menuBar->insertItem(tr(
"Service"), menuAction);
412 layout()->setMenuBar(menuBar);
417 void dSelectDB::importItem()
428 gitem->setOpen(
true);
435 listDBRC->setSelected(item,
true);
436 d->setdata(
"", item );
437 if ( d->exec() == QDialog::Accepted )
440 QString rcfile = item->rcfile;
441 QString filename = d->eCfgName->text();
443 progressBar1->show();
444 progressBar1->reset();
446 connect (&newBase, SIGNAL(progress(
int,
int)), progressBar1, SLOT( setProgress(
int,
int)));
447 if(newBase.importData(rcfile, filename,
true)==
false)
449 QMessageBox::information(
this,tr(
"Backup"),newBase.lastError(),QMessageBox::NoButton);
450 progressBar1->hide();
452 aLog::print(aLog::MT_INFO, tr(
"dSelectDB business schema import"));
456 aLog::print(aLog::MT_ERROR, tr(
"dSelectDB restore: %1").arg(newBase.lastError()));
457 QMessageBox::critical(
this,tr(
"Backup"),newBase.lastError(),0, QMessageBox::NoButton);
458 progressBar1->hide();
477 void dSelectDB::exportItem()
480 QString dir,rcfile,filename;
488 if ( !item->rcfile.isEmpty() && !item->group )
490 rcfile = item->rcfile;
494 QMessageBox::information(
this,tr(
"Select item"),tr(
"Please, select item for export"),QMessageBox::NoButton);
498 QFileDialog *fdlg =
new QFileDialog(
this,
"fileDialog",
true);
499 fdlg->setMode ( QFileDialog::AnyFile );
500 if(fdlg->exec()==QDialog::Accepted)
502 filename = fdlg->selectedFile();
513 progressBar1->show();
514 progressBar1->reset();
515 connect (&backupBase, SIGNAL(progress(
int,
int)), progressBar1, SLOT( setProgress(
int,
int)));
516 if(backupBase.exportData(rcfile, filename,
true )==0)
518 aLog::print(aLog::MT_INFO, tr(
"dSelectDB backup ok"));
519 QMessageBox::information(
this,tr(
"Backup"),backupBase.lastError(),QMessageBox::NoButton);
520 progressBar1->hide();
525 aLog::print(aLog::MT_DEBUG, tr(
"dSelectDB backup: %1").arg(backupBase.lastError()));
526 QMessageBox::critical(
this,tr(
"Backup"),backupBase.lastError(),0, QMessageBox::NoButton);
527 progressBar1->hide();
533 QMessageBox::information(
this,tr(
"Select item"),tr(
"Please, select item for export"),QMessageBox::NoButton);
540 void dSelectDB::onDblClick( QListViewItem *item)
551 void dSelectDB::comboBox1_activated(
int )
553 int id = comboBox1->currentItem();
563 comboBox1->setCurrentItem(0);
static void print(int status, const QString &text)
Definition: alog.cpp:58
Definition: dimportdb.h:16
Класс aBackup определяет программный интерфейс для бэкапа...
Definition: adataexchange.h:52
static void init(const QString &logname="", int loglevel=0)
Definition: alog.cpp:129
static QMap< QString, QString > readConfig(const QString &cfg_name, const QString &log_name=QString::null)
Definition: atests.cpp:89
Definition: rclistviewitem.h:45