00001 #include <QtCore/qobject.h>
00002 #include <QtCore/qmimedata.h>
00003 #include <QProgressBar>
00004
00005 #include "main.h"
00006 #include "mainwindow.h"
00007 #include "clipbrecords.h"
00008 #include "recordtablescreen.h"
00009 #include "recordtablemodel.h"
00010
00011 extern appconfig mytetraconfig;
00012
00013
00014 recordtablescreen::recordtablescreen(QWidget *parent) : QWidget(parent)
00015 {
00016 setup_actions();
00017 setup_ui();
00018
00019
00020
00021 recordmodel=new recordtablemodel();
00022 recordmodel->setObjectName("recordmodel");
00023 recordview->setModel(recordmodel);
00024
00025 setup_signals();
00026 assembly();
00027
00028 recordview_currentdir="";
00029 recordview_currentfile="";
00030
00031
00032
00033 recordview->setContextMenuPolicy(Qt::CustomContextMenu);
00034
00035 }
00036
00037 recordtablescreen::~recordtablescreen()
00038 {
00039
00040 }
00041
00042
00043 void recordtablescreen::setup_actions(void)
00044 {
00045
00046
00047 action_add_new_toend = new QAction(tr("Add new"), this);
00048 action_add_new_toend->setStatusTip(tr("Add new record"));
00049 action_add_new_toend->setIcon(QIcon("resource/pic/note_add.svg"));
00050 connect(action_add_new_toend, SIGNAL(triggered()), this, SLOT(add_new_toend_context()));
00051
00052
00053 action_add_new_before = new QAction(tr("Add new before"), this);
00054 action_add_new_before->setStatusTip(tr("Add new record before selected record"));
00055 connect(action_add_new_before, SIGNAL(triggered()), this, SLOT(add_new_before_context()));
00056
00057
00058 action_add_new_after = new QAction(tr("Add new after"), this);
00059 action_add_new_after->setStatusTip(tr("Add new record after selected record"));
00060 connect(action_add_new_after, SIGNAL(triggered()), this, SLOT(add_new_after_context()));
00061
00062
00063 action_edit_field = new QAction(tr("Edit property (name, author, tags...)"), this);
00064 action_edit_field->setStatusTip(tr("Edit record property (name, author, tags...)"));
00065 action_edit_field->setIcon(QIcon("resource/pic/note_edit.svg"));
00066 connect(action_edit_field, SIGNAL(triggered()), this, SLOT(edit_field_context()));
00067
00068
00069 action_delete = new QAction(tr("Delete"), this);
00070 action_delete->setStatusTip(tr("Delete record(s)"));
00071 action_delete->setIcon(QIcon("resource/pic/note_delete.svg"));
00072 connect(action_delete, SIGNAL(triggered()), this, SLOT(delete_context()));
00073
00074
00075 action_cut = new QAction(tr("&Cut"), this);
00076 action_cut->setStatusTip(tr("Cut record(s) to clipboard"));
00077 action_cut->setIcon(QIcon("resource/pic/cb_cut.svg"));
00078 connect(action_cut, SIGNAL(triggered()), this, SLOT(cut()));
00079
00080
00081 action_copy = new QAction(tr("&Copy"), this);
00082 action_copy->setStatusTip(tr("Copy record(s) to clipboard"));
00083 action_copy->setIcon(QIcon("resource/pic/cb_copy.svg"));
00084 connect(action_copy, SIGNAL(triggered()), this, SLOT(copy()));
00085
00086
00087 action_paste = new QAction(tr("&Paste"), this);
00088 action_paste->setStatusTip(tr("Paste record(s) from clipboard"));
00089 action_paste->setIcon(QIcon("resource/pic/cb_paste.svg"));
00090 connect(action_paste, SIGNAL(triggered()), this, SLOT(paste()));
00091
00092
00093 action_moveup = new QAction(tr("&Move Up"), this);
00094 action_moveup->setStatusTip(tr("Move record up"));
00095 action_moveup->setIcon(QIcon("resource/pic/move_up.svg"));
00096 connect(action_moveup, SIGNAL(triggered()), this, SLOT(moveup()));
00097
00098
00099 action_movedn=new QAction(tr("&Move Down"), this);
00100 action_movedn->setStatusTip(tr("Move record down"));
00101 action_movedn->setIcon(QIcon("resource/pic/move_dn.svg"));
00102 connect(action_movedn, SIGNAL(triggered()), this, SLOT(movedn()));
00103
00104 action_findinbase=new QAction(tr("Find in base"), this);
00105 action_findinbase->setStatusTip(tr("Find in base"));
00106 action_findinbase->setIcon(QIcon("resource/pic/find_in_base.svg"));
00107 connect(action_findinbase, SIGNAL(triggered()), this, SLOT(findinbase_open()));
00108
00109
00110 disable_all_actions();
00111 }
00112
00113
00114 void recordtablescreen::setup_ui(void)
00115 {
00116 tools_line=new QToolBar(this);
00117 tools_line->addSeparator();
00118 tools_line->addAction(action_add_new_toend);
00119 tools_line->addAction(action_edit_field);
00120 tools_line->addAction(action_delete);
00121 tools_line->addSeparator();
00122 tools_line->addAction(action_cut);
00123 tools_line->addAction(action_copy);
00124 tools_line->addAction(action_paste);
00125 tools_line->addSeparator();
00126 tools_line->addAction(action_moveup);
00127 tools_line->addAction(action_movedn);
00128
00129 find_line=new QToolBar(this);
00130 find_line->addAction(action_findinbase);
00131
00132 recordview=new QListView(this);
00133 recordview->setObjectName("recordview");
00134 recordview->setSelectionMode(QAbstractItemView::ExtendedSelection);
00135 }
00136
00137
00138 void recordtablescreen::setup_signals(void)
00139 {
00140
00141 connect(recordview,SIGNAL(customContextMenuRequested(const QPoint &)),
00142 this,SLOT(on_customContextMenuRequested(const QPoint &)));
00143
00144
00145 connect(recordview, SIGNAL(doubleClicked(const QModelIndex &)),
00146 this, SLOT(edit_field_context(void)));
00147
00148
00149 connect(recordview->selectionModel(), SIGNAL(currentRowChanged (const QModelIndex&, const QModelIndex&)),
00150 this, SLOT(select(const QModelIndex&)));
00151
00152
00153 connect(recordview->selectionModel(), SIGNAL(currentChanged (const QModelIndex&, const QModelIndex&)),
00154 this, SLOT(tools_update(void)));
00155 connect(recordview->selectionModel(), SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)),
00156 this, SLOT(tools_update(void)));
00157
00158
00159 connect(recordview, SIGNAL(activated(const QModelIndex &)),
00160 this, SLOT(tools_update(void)));
00161 connect(recordview, SIGNAL(clicked(const QModelIndex &)),
00162 this, SLOT(tools_update(void)));
00163 connect(recordview, SIGNAL(doubleClicked(const QModelIndex &)),
00164 this, SLOT(tools_update(void)));
00165 connect(recordview, SIGNAL(entered(const QModelIndex &)),
00166 this, SLOT(tools_update(void)));
00167 connect(recordview, SIGNAL(pressed(const QModelIndex &)),
00168 this, SLOT(tools_update(void)));
00169 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
00170 this, SLOT(tools_update(void)));
00171 }
00172
00173
00174 void recordtablescreen::assembly(void)
00175 {
00176 recordtable_tools_layout=new QHBoxLayout();
00177 recordtable_tools_layout->addWidget(tools_line);
00178 recordtable_tools_layout->addStretch();
00179 recordtable_tools_layout->addWidget(find_line);
00180
00181 recordtablescreen_layout=new QVBoxLayout();
00182 recordtablescreen_layout->setObjectName("recordtablescreen_QVBoxLayout");
00183
00184 recordtablescreen_layout->addLayout(recordtable_tools_layout);
00185 recordtablescreen_layout->addWidget(recordview);
00186
00187 setLayout(recordtablescreen_layout);
00188
00189
00190 QLayout *lt;
00191 lt=layout();
00192 lt->setContentsMargins(0,2,0,0);
00193 }
00194
00195
00196
00197 void recordtablescreen::set_tabledata(recordtabledata *rtdata)
00198 {
00199 qDebug() << "In recordtablescreen set_tabledata() start";
00200
00201
00202
00203
00204
00205 find_object<mainwindow>("mainwindow")->setCursor(Qt::BusyCursor);
00206
00207
00208 recordmodel->set_tabledata(rtdata);
00209
00210
00211 recordview->selectionModel()->clear();
00212
00213
00214
00215
00216
00217 if(recordmodel->rowCount()>0)
00218 recordview->selectionModel()->setCurrentIndex( recordview->model()->index( 0, 0 ) , QItemSelectionModel::SelectCurrent);
00219 else
00220 {
00221 find_object<metaeditor>("editorview")->clear_all();
00222 recordview_currentdir="";
00223 recordview_currentfile="";
00224 }
00225
00226
00227 find_object<mainwindow>("mainwindow")->unsetCursor();
00228
00229 qDebug() << "In recordtablescreen set new model stop";
00230 }
00231
00232
00233 QString recordtablescreen::get_currentdir(void)
00234 {
00235 return recordview_currentdir;
00236 }
00237
00238
00239 QString recordtablescreen::get_currentfile(void)
00240 {
00241 return recordview_currentfile;
00242 }
00243
00244
00245
00246 QString recordtablescreen::get_fullfilename_of_currentitem(void)
00247 {
00248 QString fullfilename="./"+mytetraconfig.get_tetradir()+"/base/"+recordview_currentdir+"/"+recordview_currentfile;
00249 return fullfilename;
00250 }
00251
00252
00253
00254 void recordtablescreen::select(const QModelIndex &index)
00255 {
00256 qDebug() << "In function recordtablescreen select () current item num " << index.row();
00257
00258
00259 find_object<mainwindow>("mainwindow")->save_current_record_text();
00260
00261
00262 recordtabledata *table=recordmodel->get_tabledata();
00263
00264
00265 QString currentdir =table->get_field("dir",index.row());
00266 QString currentfile=table->get_field("file",index.row());
00267 QString fullfilename="./"+mytetraconfig.get_tetradir()+"/base/"+currentdir+"/"+currentfile;
00268 qDebug() << " File " << fullfilename << "\n";
00269 QFile f(fullfilename);
00270
00271
00272 if(recordview_currentdir==currentdir &&
00273 recordview_currentfile==currentfile) return;
00274
00275
00276 if(!f.exists())
00277 critical_error("File "+fullfilename+" not found");
00278
00279
00280 if(!f.open(QIODevice::ReadOnly))
00281 critical_error("File "+fullfilename+" not readable. Check permission.");
00282
00283
00284
00285
00286 metaeditor *edview=find_object<metaeditor>("editorview");
00287 edview->set_textarea( QString::fromUtf8(f.readAll()) );
00288
00289
00290 edview->set_name ( table->get_field("name",index.row()) );
00291 edview->set_author( table->get_field("author",index.row()) );
00292 edview->set_url ( table->get_field("url",index.row()) );
00293 edview->set_tags ( table->get_field("tags",index.row()) );
00294
00295
00296 recordview_currentdir=currentdir;
00297 recordview_currentfile=currentfile;
00298 }
00299
00300
00301
00302 void recordtablescreen::add_new_toend_context(void)
00303 {
00304 qDebug() << "In slot add_new_toend_context()";
00305
00306 add_new_record(ADD_NEW_RECORD_TO_END);
00307 }
00308
00309
00310
00311 void recordtablescreen::add_new_before_context(void)
00312 {
00313 qDebug() << "In slot add_new_before_context()";
00314
00315 add_new_record(ADD_NEW_RECORD_BEFORE);
00316 }
00317
00318
00319
00320 void recordtablescreen::add_new_after_context(void)
00321 {
00322 qDebug() << "In slot add_new_after_context()";
00323
00324 add_new_record(ADD_NEW_RECORD_AFTER);
00325 }
00326
00327
00328
00329 void recordtablescreen::add_new_record(int mode)
00330 {
00331 qDebug() << "In add_new_record()";
00332
00333
00334 addnewrecord addnewrecordwin;
00335 int i=addnewrecordwin.exec();
00336 if(i==QDialog::Rejected)return;
00337
00338
00339 add_new(mode,
00340 addnewrecordwin.get_field("name"),
00341 addnewrecordwin.get_field("author"),
00342 addnewrecordwin.get_field("url"),
00343 addnewrecordwin.get_field("tags"),
00344 addnewrecordwin.get_field("text"));
00345 }
00346
00347
00348
00349 void recordtablescreen::add_new(int mode,
00350 QString name,
00351 QString author,
00352 QString url,
00353 QString tags,
00354 QString text)
00355 {
00356 qDebug() << "In add_new()";
00357
00358
00359 int pos=get_first_selection_pos();
00360 if(pos<0)pos=0;
00361
00362
00363 recordtabledata *table=recordmodel->get_tabledata();
00364
00365
00366 int selpos=table->insert_new_record(mode,pos,
00367 name,
00368 author,
00369 url,
00370 tags,
00371 text);
00372
00373
00374 recordmodel->update();
00375
00376
00377 QModelIndex selidx=recordmodel->index(selpos);
00378 recordview->selectionModel()->setCurrentIndex(selidx,QItemSelectionModel::ClearAndSelect);
00379
00380
00381 find_object<treescreen>("treeview")->save_knowtree();
00382 }
00383
00384
00385 void recordtablescreen::edit_field_context(void)
00386 {
00387 qDebug() << "In edit_field_context()";
00388
00389
00390 QModelIndexList selectitems=recordview->selectionModel()->selectedIndexes();
00391 QModelIndex index=selectitems.at(0);
00392 int pos=(selectitems.at(0)).row();
00393
00394
00395 editrecord editrecordwin;
00396
00397
00398 recordtabledata *table=recordmodel->get_tabledata();
00399
00400
00401 editrecordwin.set_field("name", table->get_field("name",index.row()) );
00402 editrecordwin.set_field("author",table->get_field("author",index.row()) );
00403 editrecordwin.set_field("url", table->get_field("url",index.row()) );
00404 editrecordwin.set_field("tags", table->get_field("tags",index.row()) );
00405
00406
00407 int i=editrecordwin.exec();
00408 if(i==QDialog::Rejected)return;
00409
00410
00411 edit_field(pos,
00412 editrecordwin.get_field("name"),
00413 editrecordwin.get_field("author"),
00414 editrecordwin.get_field("url"),
00415 editrecordwin.get_field("tags"));
00416
00417
00418
00419 select(index);
00420 }
00421
00422
00423
00424 void recordtablescreen::edit_field(int pos,
00425 QString name,
00426 QString author,
00427 QString url,
00428 QString tags)
00429 {
00430 qDebug() << "In edit_field()";
00431
00432
00433 recordtabledata *table=recordmodel->get_tabledata();
00434
00435
00436 table->edit_record(pos,
00437 name,
00438 author,
00439 url,
00440 tags);
00441
00442
00443 metaeditor *medt=find_object<metaeditor>("editorview");
00444 medt->set_name(name);
00445 medt->set_author(author);
00446 medt->set_url(url);
00447 medt->set_tags(tags);
00448
00449
00450 find_object<treescreen>("treeview")->save_knowtree();
00451 }
00452
00453
00454 void recordtablescreen::delete_context(void)
00455 {
00456
00457 QMessageBox messageBox(this);
00458 messageBox.setWindowTitle("Delete");
00459 messageBox.setText("Are you sure to delete this record(s)?");
00460 QAbstractButton *cancelButton =messageBox.addButton(tr("Cancel"), QMessageBox::RejectRole);
00461 QAbstractButton *deleteButton =messageBox.addButton(tr("Delete"), QMessageBox::AcceptRole);
00462
00463 Q_UNUSED(cancelButton);
00464
00465 messageBox.exec();
00466 if (messageBox.clickedButton() == deleteButton)
00467 {
00468
00469 delete_records();
00470 }
00471
00472 }
00473
00474
00475
00476 void recordtablescreen::delete_records(void)
00477 {
00478
00479 int before_index=(recordview->selectionModel()->currentIndex()).row();
00480
00481
00482 recordtabledata *table=recordmodel->get_tabledata();
00483
00484
00485 QModelIndexList itemsfordelete=recordview->selectionModel()->selectedIndexes();
00486
00487
00488
00489
00490 QVector<int> delidx;
00491 QModelIndexList::iterator it;
00492 for(it=itemsfordelete.begin(); it!=itemsfordelete.end(); it++)
00493 {
00494 QModelIndex curridx;
00495 curridx=*it;
00496 qDebug() << "Mark for delete item num " << curridx.row();
00497 delidx.append( curridx.row() );
00498 }
00499
00500
00501
00502 qSort(delidx.begin(), delidx.end(), qLess<int>());
00503
00504
00505 int i=0,selection_index=-1;
00506 for(i=0;i<table->size();i++)
00507 {
00508
00509 if(!delidx.contains(i))
00510 {
00511 selection_index++;
00512
00513
00514
00515 if(i>before_index)break;
00516 }
00517 }
00518
00519
00520 table->delete_records(delidx);
00521
00522
00523 find_object<treescreen>("treeview")->save_knowtree();
00524
00525
00526
00527 find_object<treescreen>("treeview")->update_selected_branch();
00528
00529
00530 recordmodel->update();
00531
00532
00533 if(selection_index>=0)
00534 {
00535
00536 QModelIndex selidx=recordmodel->index(selection_index);
00537
00538
00539 recordview->selectionModel()->setCurrentIndex(selidx,QItemSelectionModel::ClearAndSelect);
00540 }
00541 else
00542 {
00543
00544
00545
00546
00547 find_object<metaeditor>("editorview")->clear_all();
00548 }
00549 }
00550
00551
00552
00553
00554 void recordtablescreen::cut(void)
00555 {
00556 copy();
00557 delete_records();
00558 }
00559
00560
00561 void recordtablescreen::copy(void)
00562 {
00563
00564 QModelIndexList itemsforcopy=recordview->selectionModel()->selectedIndexes();
00565
00566
00567 QClipboard *cbuf=QApplication::clipboard();
00568
00569
00570 static int fillflag=0;
00571 if(fillflag==1)
00572 {
00573 const clipbrecords *rcd_previos;
00574 rcd_previos=qobject_cast<const clipbrecords *>(cbuf->mimeData());
00575 if(rcd_previos!=NULL)delete rcd_previos;
00576 fillflag=0;
00577 }
00578 clipbrecords *rcd=new clipbrecords();
00579 fillflag=1;
00580
00581
00582 recordtabledata *table=recordmodel->get_tabledata();
00583
00584
00585 for(int i=0; i<itemsforcopy.size(); ++i)
00586 rcd->add_record( table->get_record_img( (itemsforcopy.at(i)).row() ));
00587
00588
00589 rcd->print();
00590
00591
00592 cbuf->setMimeData(rcd);
00593 }
00594
00595
00596
00597 void recordtablescreen::paste(void)
00598 {
00599
00600 if(!(QApplication::clipboard()->mimeData()->hasFormat("mytetra/records")))
00601 return;
00602
00603
00604 QClipboard *cbuf=QApplication::clipboard();
00605
00606
00607
00608 const clipbrecords *rcd;
00609 rcd=qobject_cast<const clipbrecords *>(cbuf->mimeData());
00610 rcd->print();
00611
00612
00613 int nlist=rcd->get_records_num();
00614
00615
00616 for(int i=0;i<nlist;i++)
00617 {
00618 QMap<QString, QString> curr_record;
00619
00620
00621 curr_record=rcd->get_record(i);
00622
00623
00624
00625 add_new(ADD_NEW_RECORD_TO_END,
00626 curr_record["name"],
00627 curr_record["author"],
00628 curr_record["url"],
00629 curr_record["tags"],
00630 curr_record["text"]);
00631 }
00632
00633
00634
00635 find_object<treescreen>("treeview")->update_selected_branch();
00636 }
00637
00638
00639
00640 void recordtablescreen::disable_all_actions(void)
00641 {
00642 action_add_new_toend->setEnabled(false);
00643 action_add_new_before->setEnabled(false);
00644 action_add_new_after->setEnabled(false);
00645 action_edit_field->setEnabled(false);
00646 action_delete->setEnabled(false);
00647
00648 action_cut->setEnabled(false);
00649 action_copy->setEnabled(false);
00650 action_paste->setEnabled(false);
00651
00652 action_moveup->setEnabled(false);
00653 action_movedn->setEnabled(false);
00654 }
00655
00656
00657 void recordtablescreen::tools_update(void)
00658 {
00659 qDebug() << "Recordtable tools update";
00660
00661
00662 disable_all_actions();
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676 action_add_new_toend->setEnabled(true);
00677
00678
00679
00680 if((recordview->selectionModel()->hasSelection() &&
00681 (recordview->selectionModel()->selectedRows()).size()==1))
00682 action_add_new_before->setEnabled(true);
00683
00684
00685
00686 if((recordview->selectionModel()->hasSelection() &&
00687 (recordview->selectionModel()->selectedRows()).size()==1))
00688 action_add_new_after->setEnabled(true);
00689
00690
00691
00692 if(recordview->selectionModel()->hasSelection() &&
00693 (recordview->selectionModel()->selectedRows()).size()==1)
00694 action_edit_field->setEnabled(true);
00695
00696
00697
00698 if(recordview->selectionModel()->hasSelection())
00699 action_delete->setEnabled(true);
00700
00701
00702
00703 if(recordview->selectionModel()->hasSelection())
00704 action_cut->setEnabled(true);
00705
00706
00707
00708 if(recordview->selectionModel()->hasSelection())
00709 action_copy->setEnabled(true);
00710
00711
00712
00713
00714
00715
00716
00717 if((recordview->selectionModel()->hasSelection() && (recordview->selectionModel()->selectedRows()).size()==1) ||
00718 recordview->selectionModel()->hasSelection()==false ||
00719 recordview->model()->rowCount()==0)
00720 if(QApplication::clipboard()->mimeData()->hasFormat("mytetra/records"))
00721 action_paste->setEnabled(true);
00722
00723
00724
00725
00726 if((recordview->selectionModel()->hasSelection() && (recordview->selectionModel()->selectedRows()).size()==1) &&
00727 is_selected_set_to_top()==false )
00728 action_moveup->setEnabled(true);
00729
00730
00731
00732
00733 if((recordview->selectionModel()->hasSelection() && (recordview->selectionModel()->selectedRows()).size()==1) &&
00734 is_selected_set_to_bottom()==false )
00735 action_movedn->setEnabled(true);
00736
00737
00738
00739 if(recordview->selectionModel()->hasSelection())
00740 find_object<metaeditor>("editorview")->set_textarea_editable(true);
00741 else
00742 find_object<metaeditor>("editorview")->set_textarea_editable(false);
00743 }
00744
00745
00746
00747 void recordtablescreen::on_customContextMenuRequested(const QPoint &pos)
00748 {
00749 qDebug("In on_customContextMenuRequested");
00750
00751
00752 QMenu menu(this);
00753 menu.addAction(action_add_new_toend);
00754 menu.addAction(action_add_new_before);
00755 menu.addAction(action_add_new_after);
00756 menu.addSeparator();
00757 menu.addAction(action_edit_field);
00758 menu.addAction(action_delete);
00759 menu.addSeparator();
00760 menu.addAction(action_cut);
00761 menu.addAction(action_copy);
00762 menu.addAction(action_paste);
00763
00764
00765
00766 menu.exec(recordview->viewport()->mapToGlobal(pos));
00767 }
00768
00769
00770
00771 void recordtablescreen::moveup(void)
00772 {
00773 qDebug() << "In moveup()";
00774
00775
00776 int pos=get_first_selection_pos();
00777
00778
00779 recordtabledata *table=recordmodel->get_tabledata();
00780
00781
00782 table->moveup(pos);
00783
00784
00785 set_selection_to_pos(pos-1);
00786
00787
00788 find_object<treescreen>("treeview")->save_knowtree();
00789
00790 }
00791
00792
00793
00794 void recordtablescreen::movedn(void)
00795 {
00796 qDebug() << "In movedn()";
00797
00798
00799 int pos=get_first_selection_pos();
00800
00801
00802 recordtabledata *table=recordmodel->get_tabledata();
00803
00804
00805 table->movedn(pos);
00806
00807
00808 set_selection_to_pos(pos+1);
00809
00810
00811 find_object<treescreen>("treeview")->save_knowtree();
00812
00813 }
00814
00815
00816
00817 int recordtablescreen::get_first_selection_pos(void)
00818 {
00819
00820 QModelIndexList selectitems=recordview->selectionModel()->selectedIndexes();
00821
00822 if(selectitems.isEmpty())
00823 return -1;
00824 else
00825 return (selectitems.at(0)).row();
00826 }
00827
00828
00829 bool recordtablescreen::is_selected_set_to_top(void)
00830 {
00831 if(get_first_selection_pos()==0)return true;
00832 else return false;
00833 }
00834
00835
00836 bool recordtablescreen::is_selected_set_to_bottom(void)
00837 {
00838 if(get_first_selection_pos()==recordview->model()->rowCount()-1)return true;
00839 else return false;
00840 }
00841
00842
00843
00844 void recordtablescreen::set_selection_to_pos(int pos)
00845 {
00846
00847 QModelIndex selidx=recordmodel->index(pos);
00848
00849
00850 recordview->selectionModel()->setCurrentIndex(selidx,QItemSelectionModel::ClearAndSelect);
00851 }
00852
00853
00854
00855 void recordtablescreen::findinbase_open(void)
00856 {
00857
00858 findscreen *findscreen_rel=find_object<findscreen>("findscreendisp");
00859
00860
00861 if(findscreen_rel->isVisible()==false)
00862 findscreen_rel->widget_show();
00863 else
00864 findscreen_rel->widget_hide();
00865 }
00866