本文整理汇总了C++中GlobalParameters类的典型用法代码示例。如果您正苦于以下问题:C++ GlobalParameters类的具体用法?C++ GlobalParameters怎么用?C++ GlobalParameters使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GlobalParameters类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: decrypt
// Расшифровка аттача на диске и в памяти
void Attach::decrypt(unsigned int area)
{
// Если аттач не зашифрован, и происходит расшифровка, значит есть какая-то ошибка в логике выше
if(getField("crypt")!="1")
criticalError("Attach::decrypt() : Cant decrypt unencrypted attach.");
// Расшифровывается файл
if(area & areaFile)
if(getField("type")=="file")
CryptService::decryptFile(globalParameters.getCryptKey(), getFullInnerFileName());
// Расшифровывается содержимое файла в памяти, если таковое есть
if(area & areaMemory)
if(liteFlag==false && fileContent.length()>0)
fileContent=CryptService::decryptByteArray(globalParameters.getCryptKey(), fileContent);
// Расшифровываются поля, которые подлежат шифрованию
foreach( QString fieldName, fieldCryptedList() ) {
// У аттача с типом file не должно быть обращений к полю link (оно не должно использоваться)
if(getField("type")=="file" && fieldName=="link")
continue;
// Если поле с указанным именем существует и содержит данные, оно расшифровывается из исходных зашифрованных данных
if(getField(fieldName).length()>0)
setFieldSource(fieldName, CryptService::decryptString( globalParameters.getCryptKey(), fields[fieldName]));
}
// Устанавливается флаг, что запись не зашифрована
setField("crypt", ""); // Отсутсвие значения предпочтительней, так как тогда в XML-данные не будет попадать атрибут crypt="0"
}
示例2: onClickedEditMyTetraConfigFile
void AppConfigPage_Misc::onClickedEditMyTetraConfigFile(void)
{
// Сбрасываются в файл конфига все возможные изменения, которые, возможно еще не были записаны
mytetraConfig.sync();
editConfigFile( globalParameters.getWorkDirectory()+"/conf.ini", 0.8 );
}
示例3: getField
// Получение значения поля
// Метод возвращает расшифрованные данные, если запись была зашифрована
QString Attach::getField(QString name) const
{
// Если имя поля недопустимо
if(fieldAvailableList().contains(name)==false)
criticalError("Attach::getField() : get unavailable field "+name);
// ------------------------------------------
// Проверки и действия для разных типов полей
// ------------------------------------------
// Если запрашивается линк на файл
if(name=="link")
if(fields["type"]!="link") // И тип аттача не является линком
criticalError("Attach::getField() : Can't get link from non-link attach.");
// -----------------------
// Получение значения поля
// -----------------------
// Если запись зашифрована, но ключ не установлен (т.е. человек не вводил пароль)
// то расшифровка невозможна
if(fieldCryptedList().contains(name))
if(fields.contains("crypt"))
if(fields["crypt"]=="1")
if(globalParameters.getCryptKey().length()==0)
return QString();
bool isCrypt=false;
// Если имя поля принадлежит списку полей, которые могут шифроваться
// и в наборе полей есть поле crypt
// и поле crypt установлено в 1
// и запрашиваемое поле не пустое (пустые данные невозможно расшифровать)
if(fieldCryptedList().contains(name))
if(fields.contains("crypt"))
if(fields["crypt"]=="1")
if(fields[name].length()>0)
isCrypt=true;
// Если поле не подлежит шифрованию
if(isCrypt==false)
return fields[name]; // Возвращается значение поля
else
return CryptService::decryptString(globalParameters.getCryptKey(), fields[name]); // Поле расшифровывается
}
示例4: update_version_process
void AppConfig::update_version_process(void)
{
QString configFileName=globalParameters.getWorkDirectory()+"/conf.ini";
AppConfigUpdater updater;
updater.set_config_file(configFileName);
int fromVersion=get_config_version();
// Эта строка компилируется нормально, сделать на ее основе список указателей на функцию
// std::function< QStringList(AppConfig&, bool) > pFunction=&AppConfig::get_parameter_table_1;
// Перечень функций, выдающих список параметров для конкретной версии конфига
QList< std::function< QStringList(AppConfig&, bool) > > parameterFunctions;
parameterFunctions << NULL; // Исторически счет версий идет с 1, поэтому, чтобы не запутаться, создается пустой нуливой элемент
parameterFunctions << &AppConfig::get_parameter_table_1;
parameterFunctions << &AppConfig::get_parameter_table_2;
parameterFunctions << &AppConfig::get_parameter_table_3;
parameterFunctions << &AppConfig::get_parameter_table_4;
parameterFunctions << &AppConfig::get_parameter_table_5;
parameterFunctions << &AppConfig::get_parameter_table_6;
parameterFunctions << &AppConfig::get_parameter_table_7;
parameterFunctions << &AppConfig::get_parameter_table_8;
parameterFunctions << &AppConfig::get_parameter_table_9;
parameterFunctions << &AppConfig::get_parameter_table_10;
parameterFunctions << &AppConfig::get_parameter_table_11;
parameterFunctions << &AppConfig::get_parameter_table_12;
parameterFunctions << &AppConfig::get_parameter_table_13;
parameterFunctions << &AppConfig::get_parameter_table_14;
parameterFunctions << &AppConfig::get_parameter_table_15;
parameterFunctions << &AppConfig::get_parameter_table_16;
parameterFunctions << &AppConfig::get_parameter_table_17;
parameterFunctions << &AppConfig::get_parameter_table_18;
parameterFunctions << &AppConfig::get_parameter_table_19;
parameterFunctions << &AppConfig::get_parameter_table_20;
parameterFunctions << &AppConfig::get_parameter_table_21;
parameterFunctions << &AppConfig::get_parameter_table_22;
parameterFunctions << &AppConfig::get_parameter_table_23;
parameterFunctions << &AppConfig::get_parameter_table_24;
parameterFunctions << &AppConfig::get_parameter_table_25;
parameterFunctions << &AppConfig::get_parameter_table_26;
parameterFunctions << &AppConfig::get_parameter_table_27;
parameterFunctions << &AppConfig::get_parameter_table_28;
parameterFunctions << &AppConfig::get_parameter_table_29;
parameterFunctions << &AppConfig::get_parameter_table_30;
parameterFunctions << &AppConfig::get_parameter_table_31;
parameterFunctions << &AppConfig::get_parameter_table_32;
parameterFunctions << &AppConfig::get_parameter_table_33;
parameterFunctions << &AppConfig::get_parameter_table_34;
parameterFunctions << &AppConfig::get_parameter_table_35;
for(int i=1; i<parameterFunctions.count()-1; ++i)
if(fromVersion<=i)
{
// В вызове метода: *this - это объект, а true - это первый параметр метода. Именно так работает вызов метода для std::function
updater.update_version(i, i+1, (parameterFunctions.at(i))(*this, true), (parameterFunctions.at(i+1))(*this, true) );
}
}
示例5: edit_branch
void TreeScreen::edit_branch(void)
{
qDebug() << "In edit_branch()";
// Получение списка индексов QModelIndex выделенных элементов
QModelIndexList selectitems=knowTreeView->selectionModel()->selectedIndexes();
// Если выбрано более одной ветки
if(selectitems.size()>1) {
QMessageBox messageBox(this);
messageBox.setWindowTitle(tr("Unavailable action"));
messageBox.setText(tr("You've selected ")+QString::number(selectitems.size())+tr(" items.\nPlease select single item for enabling edit operation."));
messageBox.addButton(tr("OK"), QMessageBox::AcceptRole);
messageBox.exec();
return;
}
// Получение индекса выделенной строки
QModelIndex index=getCurrentItemIndex();
// Получение ссылки на узел, который соответствует выделенной строке
TreeItem *item=knowTreeModel->getItem(index);
// Если ветка зашифрована и пароль не был введен
if(item->getField("crypt")=="1" &&
globalParameters.getCryptKey().length()==0)
return;
// Получение имени ветки
QString name=item->getField("name");
// Создается окно ввода данных
bool ok;
QString newname = QInputDialog::getText(this,
tr("Edit item name"),
tr("Item name:"),
QLineEdit::Normal,
name,
&ok);
// Если была нажата отмена
if (!( ok && !newname.isEmpty() )) return;
find_object<MainWindow>("mainwindow")->setDisabled(true);
item->setField("name", newname);
// Сохранение дерева веток
find_object<TreeScreen>("treeScreen")->saveKnowTree();
find_object<MainWindow>("mainwindow")->setEnabled(true);
}
示例6: encrypt
// Шифрация аттача на диске и в памяти
void Attach::encrypt(unsigned int area)
{
// В этом методе важна последовательность действий,
// чтобы не получилась ситуации, когда часть данных зашифрована,
// а другая пытается их использовать, а флаг шифрации еще не установлен
// Если аттач уже зашифрован, значит есть какая-то ошибка в логике выше
if(getField("crypt")=="1")
criticalError("Attach::encrypt() : Cant encrypt already encrypted attach.");
// Шифруется файл
if(area & areaFile)
if(getField("type")=="file")
CryptService::encryptFile(globalParameters.getCryptKey(), getFullInnerFileName());
// Шифруется содержимое файла в памяти, если таковое есть
if(area & areaMemory)
if(liteFlag==false && fileContent.length()>0)
fileContent=CryptService::encryptByteArray(globalParameters.getCryptKey(), fileContent);
// Шифруются поля, которые подлежат шифрованию
foreach( QString fieldName, fieldCryptedList() ) {
// У аттача с типом file не должно быть обращений к полю link (оно не должно использоваться)
if(getField("type")=="file" && fieldName=="link")
continue;
// Если поле с указанным именем существует
if(getField(fieldName).length()>0)
setFieldSource(fieldName, CryptService::encryptString( globalParameters.getCryptKey(), getField(fieldName)));
}
// Устанавливается флаг, что запись зашифрована
setField("crypt", "1");
}
示例7: init
void AppConfig::init(void)
{
// Создается имя файла конфигурации
QString configFileName=globalParameters.getWorkDirectory()+"/conf.ini";
// Проверяется, есть ли файл конфигурации
QFile confFile(configFileName);
if(!confFile.exists())
criticalError("File "+configFileName+" not found.");
// Создается указатель на объект хранилища конфигурации
conf=new QSettings(configFileName, QSettings::IniFormat);
update_version_process();
sync();
is_init_flag=true;
}
示例8: data
QVariant TreeModel::data(const QModelIndex &index, int role) const
{
// Если индекс невалиден, возвращается несуществующий элемент
if(!index.isValid())return QVariant();
// Если запрашивается окраска текста элемента
if(role==Qt::ForegroundRole)
{
TreeItem *item = getItem(index);
if(item->recordtableGetRowCount()>0)
return Qt::black;// Если узел содержит таблицу конечных записей
else
return Qt::darkGray; // Обычная ветка
}
// Если запрашивается содержимое текста элемента
if(role==Qt::DisplayRole || role== Qt::EditRole)
{
TreeItem *item = getItem(index);
return QVariant( item->getField("dynamicname") ); // Запрашивается строка имени с количеством элементов
}
// Если запрашиваются элементы оформления
if(role == Qt::DecorationRole)
{
TreeItem *item = getItem(index);
// Если ветка зашифрована
if(item->getField("crypt")=="1")
{
// Если пароль не введен, доступа к ветке нет
if(globalParameters.getCryptKey().length()==0)
return QIcon(":/resource/pic/branch_closed.svg");
else
return QIcon(":/resource/pic/branch_opened.svg");
}
}
return QVariant();
}
示例9:
QStringList AppConfig::get_parameter_table_20(bool withEndSignature)
{
// Таблица параметров
// Имя, Тип, Значение на случай когда в конфиге параметра прочему-то нет
QStringList table;
// Старые параметры, аналогичные версии 19
table << get_parameter_table_19(false);
// Новые параметры
if(globalParameters.getTargetOs()=="android")
table << "hideEditorTools" << "QString" << "italic,underline,monospace,alignleft,aligncenter,alignright,alignwidth,numericlist,dotlist,indentplus,indentminus,showformatting,showhtml,fontcolor,expand_edit_area,save,createtable,table_add_row,table_remove_row,table_add_col,table_remove_col,table_merge_cells,table_split_cell"; // В Андроид прячутся инструменты сложного форматирования текста
else
table << "hideEditorTools" << "QString" << ""; // На десктопе скрываемых кнопок редактора нет
if(withEndSignature)
table << "0" << "0" << "0";
return table;
}
示例10: onBackClick
// Возвращение к дереву разделов в мобильном интерфейсе
void RecordTableScreen::onBackClick(void)
{
globalParameters.getWindowSwitcher()->switchFromRecordtableToTree();
}
示例11: readFromConfigFile
int HOGPlanner::readFromConfigFile(std::string& file)
{
globalParameters.configModels.clear();
return globalParameters.loadFromFile(file);
}
示例12: del_branch
// Удаление выбранных веток, вызывается при выборе соотвествущей
// кнопки или пункта меню
void TreeScreen::del_branch(QString mode)
{
qDebug() << "In del_branch()";
// На время удаления блокируется главное окно
find_object<MainWindow>("mainwindow")->setDisabled(true);
find_object<MainWindow>("mainwindow")->blockSignals(true);
// Получение списка индексов QModelIndex выделенных элементов
QModelIndexList selectitems=knowTreeView->selectionModel()->selectedIndexes();
// Список имен веток, которые нужно удалить
QStringList branches_name;
for(int i = 0; i < selectitems.size(); ++i) {
QModelIndex index=selectitems.at(i);
TreeItem *item=knowTreeModel->getItem(index);
branches_name << item->getField("name");
}
// Если системный пароль не установлен, зашифрованные ветки удалять нельзя
if(globalParameters.getCryptKey().size()==0) {
bool disableFlag=false;
// Перебираются удаляемые ветки
for(int i = 0; i < selectitems.size(); ++i) {
QModelIndex index=selectitems.at(i);
TreeItem *item=knowTreeModel->getItem(index);
// Если у ветки установлен флаг шифрования
if(item->getField("crypt")=="1") {
disableFlag=true;
break;
}
// Проверяется наличие флага шифрования у всех подветок
QList<QStringList> cryptFlagsList=item->getAllChildrenPathAsField("crypt");
foreach(QStringList cryptFlags, cryptFlagsList)
if(cryptFlags.contains("1")) {
disableFlag=true;
break;
}
if(disableFlag)
break;
} // Закрылся цикл перебора всех выделенных для удаления веток
// Если в какой-то ветке обнаружено шифрование
if(disableFlag) {
QMessageBox messageBox(this);
messageBox.setWindowTitle(tr("Unavailable action"));
messageBox.setText(tr("In your selected data found closed item. Action canceled."));
messageBox.addButton(tr("OK"), QMessageBox::AcceptRole);
messageBox.exec();
// Разблокируется главное окно
find_object<MainWindow>("mainwindow")->setEnabled(true);
find_object<MainWindow>("mainwindow")->blockSignals(false);
return;
}
} // Закрылось условие что системный пароль не установлен
示例13: update_version_process
void AppConfig::update_version_process(void)
{
QString configFileName=globalParameters.getWorkDirectory()+"/conf.ini";
AppConfigUpdater updater;
updater.set_config_file(configFileName);
int fromVersion=get_config_version();
// Последняя версия на данный момент - 26
if(fromVersion<=1)
updater.update_version(1, 2, get_parameter_table_1(), get_parameter_table_2());
if(fromVersion<=2)
updater.update_version(2, 3, get_parameter_table_2(), get_parameter_table_3());
if(fromVersion<=3)
updater.update_version(3, 4, get_parameter_table_3(), get_parameter_table_4());
if(fromVersion<=4)
updater.update_version(4, 5, get_parameter_table_4(), get_parameter_table_5());
if(fromVersion<=5)
updater.update_version(5, 6, get_parameter_table_5(), get_parameter_table_6());
if(fromVersion<=6)
updater.update_version(6, 7, get_parameter_table_6(), get_parameter_table_7());
if(fromVersion<=7)
updater.update_version(7, 8, get_parameter_table_7(), get_parameter_table_8());
if(fromVersion<=8)
updater.update_version(8, 9, get_parameter_table_8(), get_parameter_table_9());
if(fromVersion<=9)
updater.update_version(9, 10, get_parameter_table_9(), get_parameter_table_10());
if(fromVersion<=10)
updater.update_version(10, 11, get_parameter_table_10(), get_parameter_table_11());
if(fromVersion<=11)
updater.update_version(11, 12, get_parameter_table_11(), get_parameter_table_12());
if(fromVersion<=12)
updater.update_version(12, 13, get_parameter_table_12(), get_parameter_table_13());
if(fromVersion<=13)
updater.update_version(13, 14, get_parameter_table_13(), get_parameter_table_14());
if(fromVersion<=14)
updater.update_version(14, 15, get_parameter_table_14(), get_parameter_table_15());
if(fromVersion<=15)
updater.update_version(15, 16, get_parameter_table_15(), get_parameter_table_16());
if(fromVersion<=16)
updater.update_version(16, 17, get_parameter_table_16(), get_parameter_table_17());
if(fromVersion<=17)
updater.update_version(17, 18, get_parameter_table_17(), get_parameter_table_18());
if(fromVersion<=18)
updater.update_version(18, 19, get_parameter_table_18(), get_parameter_table_19());
if(fromVersion<=19)
updater.update_version(19, 20, get_parameter_table_19(), get_parameter_table_20());
if(fromVersion<=20)
updater.update_version(20, 21, get_parameter_table_20(), get_parameter_table_21());
if(fromVersion<=21)
updater.update_version(21, 22, get_parameter_table_21(), get_parameter_table_22());
if(fromVersion<=22)
updater.update_version(22, 23, get_parameter_table_22(), get_parameter_table_23());
if(fromVersion<=23)
updater.update_version(23, 24, get_parameter_table_23(), get_parameter_table_24());
if(fromVersion<=24)
updater.update_version(24, 25, get_parameter_table_24(), get_parameter_table_25());
if(fromVersion<=25)
updater.update_version(25, 26, get_parameter_table_25(), get_parameter_table_26());
}
示例14: on_customContextMenuRequested
// Открытие контекстного меню в дереве разделов
void TreeScreen::on_customContextMenuRequested(const QPoint &pos)
{
qDebug() << "In TreeScreen::on_customContextMenuRequested";
// Конструирование меню
QMenu menu(this);
menu.addAction(actionList["insSubbranch"]);
menu.addAction(actionList["insBranch"]);
menu.addAction(actionList["editBranch"]);
menu.addAction(actionList["delBranch"]);
menu.addSeparator();
menu.addAction(actionList["expandAllSubbranch"]);
menu.addAction(actionList["collapseAllSubbranch"]);
menu.addSeparator();
menu.addAction(actionList["moveUpBranch"]);
menu.addAction(actionList["moveDnBranch"]);
menu.addSeparator();
menu.addAction(actionList["cutBranch"]);
menu.addAction(actionList["copyBranch"]);
menu.addAction(actionList["pasteBranch"]);
menu.addAction(actionList["pasteSubbranch"]);
menu.addSeparator();
menu.addAction(actionList["encryptBranch"]);
menu.addAction(actionList["decryptBranch"]);
// Получение индекса выделенной ветки
QModelIndex index=getCurrentItemIndex();
// Выясняется, зашифрована ли ветка или нет
QString cryptFlag=knowTreeModel->getItem(index)->getField("crypt");
// Выясняется, зашифрована ли родительская ветка
QString parentCryptFlag=knowTreeModel->getItem(index)->parent()->getField("crypt");
// Если ветка не зашифрована
// Или ветка зашифрована, но пароль успешно введен
if(cryptFlag!="1" ||
(cryptFlag=="1" && globalParameters.getCryptKey().length()>0)) {
// Если в буфере есть ветки, соответсвующие пункты становятся активными
bool isBranch=false;
const QMimeData *mimeData=QApplication::clipboard()->mimeData();
if(mimeData!=NULL)
if(mimeData->hasFormat("mytetra/branch"))
isBranch=true;
if( isBranch ) {
actionList["pasteBranch"]->setEnabled(true);
actionList["pasteSubbranch"]->setEnabled(true);
} else {
actionList["pasteBranch"]->setEnabled(false);
actionList["pasteSubbranch"]->setEnabled(false);
}
// ----------------------------
// Подсветка пунктов шифрования
// ----------------------------
// Если ветка незашифрована
if(cryptFlag!="1") {
// Шифровать можно
// Дешифровать нельзя
actionList["encryptBranch"]->setEnabled(true);
actionList["decryptBranch"]->setEnabled(false);
} else {
// Ветка зашифрована
// Шифровать нельзя
actionList["encryptBranch"]->setEnabled(false);
// Дешифровать можно только если верхнележащая ветка незашифрована
if(parentCryptFlag!="1")
actionList["decryptBranch"]->setEnabled(true);
else
actionList["decryptBranch"]->setEnabled(false);
}
}
// Включение отображения меню на экране
// menu.exec(event->globalPos());
menu.exec(knowTreeView->viewport()->mapToGlobal(pos));
}
示例15: initMetaEditorAtClickToRecord
void RecordTableController::initMetaEditorAtClickToRecord(const int pos)
{
// Внимание! Наверно, всю эту логику следует перенести в MetaEditor. А здесь только получить данные из таблицы
// Выясняется указатель на объект редактирования текста записи
MetaEditor *edView=find_object<MetaEditor>("editorScreen");
// Выясняется ссылка на таблицу конечных данных
RecordTableData *table=recordSourceModel->getTableData();
// В таблице конечных данных запоминается какая запись была выбрана
// чтобы затем при выборе этой же подветки засветка автоматически
// установилась на последнюю рабочую запись
table->setWorkPos( pos );
// Устанавливается функция обратного вызова для записи данных
edView->set_save_callback(table->editorSaveCallback);
// Сохраняется текст и картинки в окне редактирования
find_object<MainWindow>("mainwindow")->saveTextarea();
// Для новой выбраной записи выясняется директория и основной файл
QString currentDir =table->getField("dir", pos);
QString currentFile=table->getField("file", pos);
QString fullDir=mytetraConfig.get_tetradir()+"/base/"+currentDir;
QString fullFileName=fullDir+"/"+currentFile;
qDebug() << " File " << fullFileName << "\n";
// Если в окне содержимого записи уже находится выбираемая запись
if(edView->get_work_directory()==fullDir &&
edView->get_file_name()==currentFile) {
globalParameters.getWindowSwitcher()->switchFromRecordtableToRecord();
return;
}
// Перед открытием редактора происходит попытка получения текста записи
// Этот вызов создаст файл с текстом записи, если он еще не создан (подумать, переделать)
table->getText(pos);
// Редактору задаются имя файла и директории
// И дается команда загрузки файла
edView->set_work_directory(fullDir);
edView->set_file_name(currentFile);
// Если идет работа с зашифрованной записью
// И если имя директории или имя файла пусты, то это означает что
// запись не была расшифрована, и редактор должен просто показывать пустой текст
// ничего не сохранять и не считывать
qDebug() << "RecordTableView::onClickToRecord() : id " << table->getField("id", pos);
qDebug() << "RecordTableView::onClickToRecord() : name " << table->getField("name", pos);
qDebug() << "RecordTableView::onClickToRecord() : crypt " << table->getField("crypt", pos);
if(table->getField("crypt", pos)=="1")
if(fullDir.length()==0 || currentFile.length()==0)
edView->setDirFileEmptyReaction(MetaEditor::DIRFILEEMPTY_REACTION_SUPPRESS_ERROR);
// В редактор заносится информация, идет ли работа с зашифрованным текстом
edView->setMiscField("crypt", table->getField("crypt", pos));
// В редакторе устанавливается функция обратного вызова для чтения данных
edView->set_load_callback(table->editorLoadCallback);
edView->load_textarea();
// edView->set_textarea(table->get_text(index.row()));
// Заполняются прочие инфо-поля
edView->setName ( table->getField("name", pos) );
edView->setAuthor( table->getField("author", pos) );
edView->setUrl ( table->getField("url", pos) );
edView->setTags ( table->getField("tags", pos) );
QString id=table->getField("id", pos);
edView->setMiscField("id", id);
edView->setMiscField( "title", table->getField("name", pos) );
// Устанавливается путь до ветки в которой лежит запись (в виде названий веток)
QString path=qobject_cast<RecordTableScreen *>(parent())->getTreePath();
// В мобильном интерфейсе редактор должен показывать путь до записи
if(mytetraConfig.getInterfaceMode()=="mobile")
edView->setTreePath( path );
// В редакторе восстанавливается позиция курсора и прокрутки если это необходимо
if(mytetraConfig.getRememberCursorAtOrdinarySelection()) {
edView->setCursorPosition( walkHistory.getCursorPosition(id) );
edView->setScrollBarPosition( walkHistory.getScrollBarPosition(id) );
}
// Обновление иконки аттачей
if( table->getRecord(pos)->getAttachTablePointer()->size()==0 )
edView->toAttach->setIcon( edView->iconAttachNotExists ); // Если нет приаттаченных файлов
else
edView->toAttach->setIcon( edView->iconAttachExists ); // Есть приаттаченные файлы
}