// ShortcutOptionsWidget
ShortcutOptionsWidget::ShortcutOptionsWidget(QWidget *AParent) : QWidget(AParent)
{
	ui.setupUi(this);
	createTreeModel();
	onRestoreDefaultsClicked();

	FBlockChangesCheck = 0;

	FSortModel.setSourceModel(&FModel);
	FSortModel.setSortLocaleAware(true);
	FSortModel.setSortCaseSensitivity(Qt::CaseInsensitive);

	ui.trvShortcuts->setItemDelegate(new ShortcutOptionsDelegate(ui.trvShortcuts));
	ui.trvShortcuts->setModel(&FSortModel);
	ui.trvShortcuts->header()->setSortIndicatorShown(false);
	ui.trvShortcuts->header()->setResizeMode(SCL_NAME,QHeaderView::Stretch);
	ui.trvShortcuts->header()->setResizeMode(SCL_KEY,QHeaderView::ResizeToContents);
	ui.trvShortcuts->sortByColumn(SCL_NAME,Qt::AscendingOrder);
	ui.trvShortcuts->expandAll();

	FConflictTimer.setInterval(0);
	FConflictTimer.setSingleShot(true);
	connect(&FConflictTimer,SIGNAL(timeout()),SLOT(onShowConflictsTimerTimeout()));

	connect(ui.pbtDefault,SIGNAL(clicked()),SLOT(onDefaultClicked()));
	connect(ui.pbtClear,SIGNAL(clicked()),SLOT(onClearClicked()));
	connect(ui.pbtRestoreDefaults,SIGNAL(clicked()),SLOT(onRestoreDefaultsClicked()));
	connect(&FModel,SIGNAL(itemChanged(QStandardItem *)),SLOT(onModelItemChanged(QStandardItem *)));
	connect(ui.trvShortcuts,SIGNAL(doubleClicked(const QModelIndex &)),SLOT(onIndexDoubleClicked(const QModelIndex &)));

	reset();
	FConflictTimer.start();
}
StrokesRecognizer::StrokesRecognizer(QWidget *parent):QWidget(parent)
    , mpLayout(NULL)
    , mpToolsLayout(NULL)
    , mpCanvas(NULL)
    , mpCharacterResult(NULL)
    , mpRecognizeBttn(NULL)
{
    resize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

    mpLayout = new QHBoxLayout();
    setLayout(mpLayout);

    mpCanvas = new SmoothCanvas(this);
    mpCanvas->setObjectName(ON_CANVAS);
    mpCanvas->setStyleSheet("background-color:white;");
    mpLayout->addWidget(mpCanvas, 1);

    mpToolsLayout = new QVBoxLayout();
    mpLayout->addLayout(mpToolsLayout);

    mpCharacterResult = new QLabel(this);
    mpCharacterResult->setObjectName(ON_LABELBOX);
    mpCharacterResult->setStyleSheet("background-color: white;");
    mpCharacterResult->setAlignment(Qt::AlignCenter);
    QFont font;
    font.setBold(true);
    font.setPixelSize(100);
    mpCharacterResult->setFont(font);
    mpCharacterResult->setFixedSize(100, 100);
    mpToolsLayout->addWidget(mpCharacterResult);

    mpRecognizeBttn = new QPushButton(tr("Recognize"), this);
    mpRecognizeBttn->setObjectName(ON_BUTTON);
    mpToolsLayout->addWidget(mpRecognizeBttn);

    mpClearBttn = new QPushButton(tr("Clear"), this);
    mpRecognizeBttn->setObjectName(ON_BUTTON);
    mpToolsLayout->addWidget(mpClearBttn);

    mpToolsLayout->addStretch(1);

    connect(mpRecognizeBttn, SIGNAL(clicked()), this, SLOT(onRecognizeClicked()));
    connect(mpClearBttn, SIGNAL(clicked()), this, SLOT(onClearClicked()));
}