|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2005-2007 by Tarek Saidi *
|
|
|
|
* tarek.saidi@arcor.de *
|
|
|
|
* *
|
|
|
|
* 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; version 2 of the License. *
|
|
|
|
|
|
|
|
* *
|
|
|
|
* 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; if not, write to the *
|
|
|
|
* Free Software Foundation, Inc., *
|
|
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include <QTextCursor>
|
|
|
|
#include <QTextBlockFormat>
|
|
|
|
#include <QLineEdit>
|
|
|
|
#include <QPushButton>
|
|
|
|
#include <QColorDialog>
|
|
|
|
#include <QPixmap>
|
|
|
|
#include <QMenu>
|
|
|
|
#include "main.h"
|
|
|
|
#include "CustomizeDetailViewDlg.h"
|
|
|
|
#include "KpxConfig.h"
|
|
|
|
|
|
|
|
bool DisableButtonSlots=false;
|
|
|
|
|
|
|
|
CustomizeDetailViewDialog::CustomizeDetailViewDialog(QWidget* parent):QDialog(parent){
|
|
|
|
setupUi(this);
|
|
|
|
BtnBold->setIcon(getIcon("text_bold"));
|
|
|
|
BtnItalic->setIcon(getIcon("text_italic"));
|
|
|
|
BtnUnderline->setIcon(getIcon("text_under"));
|
|
|
|
BtnAlignLeft->setIcon(getIcon("text_left"));
|
|
|
|
BtnAlignRight->setIcon(getIcon("text_right"));
|
|
|
|
BtnAlignCenter->setIcon(getIcon("text_center"));
|
|
|
|
BtnAlignBlock->setIcon(getIcon("text_block"));
|
|
|
|
BtnTemplates->setIcon(getIcon("templates"));
|
|
|
|
|
|
|
|
QMenu* tmplmenu=new QMenu();
|
|
|
|
tmplmenu->addAction(tr("Group"))->setData("%group%");
|
|
|
|
tmplmenu->addAction(tr("Title"))->setData("%title%");
|
|
|
|
tmplmenu->addAction(tr("Username"))->setData("%username%");
|
|
|
|
tmplmenu->addAction(tr("Password"))->setData("%password%");
|
|
|
|
tmplmenu->addAction(tr("Url"))->setData("%url%");
|
|
|
|
tmplmenu->addAction(tr("Comment"))->setData("%comment%");
|
|
|
|
tmplmenu->addAction(tr("Attachment Name"))->setData("%attachment%");
|
|
|
|
tmplmenu->addAction(tr("Creation Date"))->setData("%creation%");
|
|
|
|
tmplmenu->addAction(tr("Last Access Date"))->setData("%lastaccess%");
|
|
|
|
tmplmenu->addAction(tr("Last Modification Date"))->setData("%lastmod%");
|
|
|
|
tmplmenu->addAction(tr("Expiration Date"))->setData("%expire%");
|
|
|
|
tmplmenu->addAction(tr("Time till Expiration"))->setData("%expire-timeleft%");
|
|
|
|
BtnTemplates->setMenu(tmplmenu);
|
|
|
|
|
|
|
|
connect(BtnBold,SIGNAL(toggled(bool)),this,SLOT(OnBtnBold(bool)));
|
|
|
|
connect(BtnItalic,SIGNAL(toggled(bool)),this,SLOT(OnBtnItalic(bool)));
|
|
|
|
connect(BtnUnderline,SIGNAL(toggled(bool)),this,SLOT(OnBtnUnderline(bool)));
|
|
|
|
connect(BtnAlignLeft,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignLeft()));
|
|
|
|
connect(BtnAlignRight,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignRight()));
|
|
|
|
connect(BtnAlignCenter,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignCenter()));
|
|
|
|
connect(BtnAlignBlock,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignBlock()));
|
|
|
|
connect(BtnColor,SIGNAL(clicked()),this,SLOT(OnBtnColor()));
|
|
|
|
connect(ButtonBox,SIGNAL(accepted()),this,SLOT(OnSave()));
|
|
|
|
connect(ButtonBox,SIGNAL(rejected()),this,SLOT(OnCancel()));
|
|
|
|
connect(ButtonBox,SIGNAL(clicked(QAbstractButton*)),this,SLOT(OnRestoreDefault(QAbstractButton*)));
|
|
|
|
connect(tmplmenu,SIGNAL(triggered(QAction*)),this,SLOT(OnInsertTemplate(QAction*)));
|
|
|
|
connect(RichEdit,SIGNAL(cursorPositionChanged()),this,SLOT(OnCursorPositionChanged()));
|
|
|
|
connect(TabWidget,SIGNAL(currentChanged(int)),this,SLOT(OnTabChanged(int)));
|
|
|
|
connect(FontSize,SIGNAL(activated(const QString&)),this,SLOT(OnFontSizeChanged(const QString&)));
|
|
|
|
connect(FontSize->lineEdit(),SIGNAL(returnPressed()),this,SLOT(OnFontSizeChanged()));
|
|
|
|
|
|
|
|
RichEdit->setHtml(DetailViewTemplate);
|
|
|
|
|
|
|
|
OnCursorPositionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnTabChanged(int index){
|
|
|
|
|
|
|
|
if(index==0){
|
|
|
|
RichEdit->setHtml(HtmlEdit->toPlainText());
|
|
|
|
}
|
|
|
|
if(index==1){
|
|
|
|
HtmlEdit->setPlainText(RichEdit->toHtml());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnFontSizeChanged(const QString& text){
|
|
|
|
bool ok=false;
|
|
|
|
int size=text.toInt(&ok);
|
|
|
|
if(ok && size > 0){
|
|
|
|
RichEdit->setFontPointSize(size);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnCursorPositionChanged(){
|
|
|
|
DisableButtonSlots=true;
|
|
|
|
if(RichEdit->fontWeight()==QFont::Bold)BtnBold->setChecked(true);
|
|
|
|
else BtnBold->setChecked(false);
|
|
|
|
BtnItalic->setChecked(RichEdit->fontItalic());
|
|
|
|
BtnUnderline->setChecked(RichEdit->fontUnderline());
|
|
|
|
switch(RichEdit->alignment()){
|
|
|
|
case Qt::AlignLeft:
|
|
|
|
BtnAlignLeft->setChecked(true);
|
|
|
|
BtnAlignCenter->setChecked(false);
|
|
|
|
BtnAlignRight->setChecked(false);
|
|
|
|
BtnAlignBlock->setChecked(false);
|
|
|
|
break;
|
|
|
|
case Qt::AlignHCenter:
|
|
|
|
BtnAlignLeft->setChecked(false);
|
|
|
|
BtnAlignCenter->setChecked(true);
|
|
|
|
BtnAlignRight->setChecked(false);
|
|
|
|
BtnAlignBlock->setChecked(false);
|
|
|
|
break;
|
|
|
|
case Qt::AlignRight:
|
|
|
|
BtnAlignLeft->setChecked(false);
|
|
|
|
BtnAlignCenter->setChecked(false);
|
|
|
|
BtnAlignRight->setChecked(true);
|
|
|
|
BtnAlignBlock->setChecked(false);
|
|
|
|
break;
|
|
|
|
case Qt::AlignJustify:
|
|
|
|
BtnAlignLeft->setChecked(false);
|
|
|
|
BtnAlignCenter->setChecked(false);
|
|
|
|
BtnAlignRight->setChecked(false);
|
|
|
|
BtnAlignBlock->setChecked(true);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
CurrentColor=RichEdit->textColor();
|
|
|
|
QPixmap pixmap=QPixmap(16,16);
|
|
|
|
pixmap.fill(CurrentColor);
|
|
|
|
BtnColor->setIcon(QIcon(pixmap));
|
|
|
|
if(RichEdit->fontPointSize()>0)
|
|
|
|
FontSize->lineEdit()->setText(QString::number((int)RichEdit->fontPointSize()));
|
|
|
|
else
|
|
|
|
FontSize->lineEdit()->setText("9");
|
|
|
|
|
|
|
|
DisableButtonSlots=false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnBold(bool toggled){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
if(toggled)
|
|
|
|
RichEdit->setFontWeight(QFont::Bold);
|
|
|
|
else
|
|
|
|
RichEdit->setFontWeight(QFont::Normal);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnItalic(bool toggled){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setFontItalic(toggled);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnUnderline(bool toggled){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setFontUnderline(toggled);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnAlignLeft(){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setAlignment(Qt::AlignLeft);
|
|
|
|
OnCursorPositionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnAlignRight(){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setAlignment(Qt::AlignRight);
|
|
|
|
OnCursorPositionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnAlignCenter(){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setAlignment(Qt::AlignHCenter);
|
|
|
|
OnCursorPositionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnAlignBlock(){
|
|
|
|
if(DisableButtonSlots)return;
|
|
|
|
RichEdit->setAlignment(Qt::AlignJustify);
|
|
|
|
OnCursorPositionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnBtnColor(){
|
|
|
|
CurrentColor=QColorDialog::getColor(CurrentColor,this);
|
|
|
|
QPixmap pixmap=QPixmap(16,16);
|
|
|
|
pixmap.fill(CurrentColor);
|
|
|
|
BtnColor->setIcon(QIcon(pixmap));
|
|
|
|
RichEdit->setTextColor(CurrentColor);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnInsertTemplate(QAction* action){
|
|
|
|
RichEdit->insertPlainText(action->data().toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnSave(){
|
|
|
|
if(TabWidget->currentIndex()==0)
|
|
|
|
DetailViewTemplate=RichEdit->toHtml();
|
|
|
|
else if(TabWidget->currentIndex()==1)
|
|
|
|
DetailViewTemplate=HtmlEdit->toPlainText();
|
|
|
|
|
|
|
|
config->setDetailViewTemplate(DetailViewTemplate);
|
|
|
|
|
|
|
|
done(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnCancel(){
|
|
|
|
done(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void CustomizeDetailViewDialog::OnRestoreDefault(QAbstractButton* button){
|
|
|
|
if (button==ButtonBox->button(QDialogButtonBox::RestoreDefaults)){
|
|
|
|
DetailViewTemplate = config->defaultDetailViewTemplate();
|
|
|
|
HtmlEdit->setPlainText(DetailViewTemplate);
|
|
|
|
RichEdit->setHtml(DetailViewTemplate);
|
|
|
|
}
|
|
|
|
}
|