You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.8 KiB
260 lines
7.8 KiB
/* ============================================================
|
|
* File : caltemplate.cpp
|
|
* Author: Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
* Date : 2003-11-04
|
|
* Description :
|
|
*
|
|
* Copyright 2003 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
*
|
|
* 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;
|
|
* either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* 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.
|
|
*
|
|
* ============================================================ */
|
|
|
|
// TQt includes.
|
|
|
|
#include <tqvariant.h>
|
|
#include <tqframe.h>
|
|
#include <tqgroupbox.h>
|
|
#include <tqlabel.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqbuttongroup.h>
|
|
#include <tqvbuttongroup.h>
|
|
#include <tqradiobutton.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqslider.h>
|
|
#include <tqlayout.h>
|
|
#include <tqtimer.h>
|
|
#include <tqfontdatabase.h>
|
|
#include <tqpaintdevicemetrics.h>
|
|
#include <tqpixmap.h>
|
|
#include <tqpainter.h>
|
|
#include <tqprinter.h>
|
|
|
|
// KDE includes.
|
|
|
|
#include <tdelocale.h>
|
|
#include <kstandarddirs.h>
|
|
|
|
// Local includes.
|
|
|
|
#include "caltemplate.h"
|
|
#include "calwidget.h"
|
|
#include "calsettings.h"
|
|
#include "calpainter.h"
|
|
|
|
namespace KIPICalendarPlugin
|
|
{
|
|
|
|
CalTemplate::CalTemplate(TQWidget* parent, const char* name)
|
|
: TQWidget(parent, name)
|
|
{
|
|
TQGridLayout *mainLayout = new TQGridLayout(this, 1, 1, 5, 5);
|
|
|
|
// ----------------------------------------------------------------
|
|
|
|
previewSize_ = 300;
|
|
|
|
TQGroupBox *boxPreview_ = new TQGroupBox( i18n("Preview"), this );
|
|
boxPreview_->setColumnLayout(0, Qt::Vertical);
|
|
boxPreview_->layout()->setMargin( 5 );
|
|
|
|
TQVBoxLayout *previewLayout = new TQVBoxLayout(boxPreview_->layout());
|
|
calWidget_ = new CalWidget(boxPreview_);
|
|
previewLayout->addWidget(calWidget_, 0, TQt::AlignCenter);
|
|
|
|
mainLayout->addWidget( boxPreview_, 0, 0 );
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
TQGroupBox *gbox = new TQGroupBox( i18n("Settings"), this );
|
|
gbox->setColumnLayout(0, Qt::Vertical );
|
|
gbox->layout()->setSpacing( 11 );
|
|
gbox->layout()->setMargin( 6 );
|
|
TQVBoxLayout* gboxLayout = new TQVBoxLayout( gbox->layout() );
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
TQHBoxLayout *hlayout = new TQHBoxLayout( 0, 0, 5 );
|
|
hlayout->addWidget( new TQLabel(i18n("Paper size:"), gbox) );
|
|
|
|
comboPaperSize_ = new TQComboBox(false, gbox);
|
|
hlayout->addWidget(comboPaperSize_);
|
|
gboxLayout->addLayout( hlayout );
|
|
|
|
TQStringList paperSizes;
|
|
paperSizes << "A4";
|
|
paperSizes << "US Letter";
|
|
comboPaperSize_->insertStringList(paperSizes);
|
|
|
|
connect(comboPaperSize_, TQT_SIGNAL(activated(int)),
|
|
TQT_SLOT(slotParamsChanged()));
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
btnGroupImagePos_ = new TQVButtonGroup(i18n("Image Position"), gbox);
|
|
btnGroupImagePos_->setRadioButtonExclusive(true);
|
|
|
|
// Insert the buttons in the order Top, Left, Right so that they
|
|
// get the corresponding ids
|
|
TQRadioButton* radioBtn = new TQRadioButton(i18n("Top"), btnGroupImagePos_);
|
|
radioBtn->setChecked(true);
|
|
Q_ASSERT(btnGroupImagePos_->id( radioBtn ) == CalParams::Top);
|
|
|
|
radioBtn = new TQRadioButton(i18n("Left"), btnGroupImagePos_);
|
|
Q_ASSERT(btnGroupImagePos_->id( radioBtn ) == CalParams::Left);
|
|
|
|
radioBtn = new TQRadioButton(i18n("Right"), btnGroupImagePos_);
|
|
Q_ASSERT(btnGroupImagePos_->id( radioBtn ) == CalParams::Right);
|
|
|
|
gboxLayout->addWidget( btnGroupImagePos_ );
|
|
|
|
connect(btnGroupImagePos_, TQT_SIGNAL(clicked(int)),
|
|
TQT_SLOT(slotParamsChanged()));
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
checkBoxDrawLines_ = new TQCheckBox(i18n("Draw lines in calendar"), gbox);
|
|
gboxLayout->addWidget( checkBoxDrawLines_ );
|
|
checkBoxDrawLines_->setChecked(true);
|
|
|
|
connect(checkBoxDrawLines_, TQT_SIGNAL(toggled(bool)),
|
|
TQT_SLOT(slotParamsChanged()));
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
hlayout = new TQHBoxLayout( 0, 0, 5 );
|
|
|
|
hlayout->addWidget(new TQLabel(i18n("Image to text ratio:"), gbox));
|
|
|
|
sliderRatio_ = new TQSlider(50,300,5,100,Qt::Horizontal,gbox);
|
|
hlayout->addWidget( sliderRatio_ );
|
|
|
|
gboxLayout->addLayout( hlayout );
|
|
|
|
connect(sliderRatio_, TQT_SIGNAL(valueChanged(int)),
|
|
TQT_SLOT(slotParamsChanged()));
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
hlayout = new TQHBoxLayout( 0, 0, 5 );
|
|
|
|
hlayout->addWidget(new TQLabel(i18n("Font:"), gbox));
|
|
|
|
comboFont_ = new TQComboBox(false, gbox);
|
|
hlayout->addWidget( comboFont_ );
|
|
|
|
TQFontDatabase fontDB;
|
|
TQStringList families(fontDB.families());
|
|
TQStringList smoothScalableFamilies;
|
|
for (TQStringList::iterator it=families.begin(); it != families.end();
|
|
++it)
|
|
{
|
|
smoothScalableFamilies.append(*it);
|
|
}
|
|
comboFont_->insertStringList(smoothScalableFamilies);
|
|
|
|
// fetch and set the default font selected in the combo.
|
|
TQFont f;
|
|
comboFont_->setCurrentText( f.family() );
|
|
|
|
|
|
gboxLayout->addLayout( hlayout );
|
|
|
|
connect(comboFont_, TQT_SIGNAL(activated(int)),
|
|
TQT_SLOT(slotParamsChanged()));
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
gboxLayout->addItem(new TQSpacerItem(5,10,TQSizePolicy::Minimum,
|
|
TQSizePolicy::Expanding));
|
|
|
|
mainLayout->addWidget( gbox, 0, 1 );
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
timer_ = new TQTimer(this);
|
|
|
|
connect(timer_, TQT_SIGNAL(timeout()),
|
|
TQT_SLOT(slotUpdatePreview()));
|
|
|
|
timer_->start(0,true);
|
|
}
|
|
|
|
CalTemplate::~CalTemplate()
|
|
{
|
|
delete timer_;
|
|
}
|
|
|
|
|
|
void CalTemplate::slotParamsChanged()
|
|
{
|
|
timer_->start(10, true);
|
|
}
|
|
|
|
void CalTemplate::slotUpdatePreview()
|
|
{
|
|
if (timer_->isActive()) return;
|
|
|
|
CalParams& params = CalSettings::instance()->calParams;
|
|
|
|
TQString paperSize = comboPaperSize_->currentText();
|
|
if (paperSize == "A4") {
|
|
params.paperWidth = 210;
|
|
params.paperHeight = 297;
|
|
params.pageSize = KPrinter::A4;
|
|
}
|
|
else if (paperSize == "US Letter") {
|
|
params.paperWidth = 216;
|
|
params.paperHeight = 279;
|
|
params.pageSize = KPrinter::Letter;
|
|
}
|
|
|
|
const int imgPos = btnGroupImagePos_->selectedId();
|
|
|
|
if (imgPos == CalParams::Top) {
|
|
params.imgPos = CalParams::Top;
|
|
|
|
float zoom = TQMIN((float)previewSize_/params.paperWidth,
|
|
(float)previewSize_/params.paperHeight);
|
|
params.width = (int)(params.paperWidth * zoom);
|
|
params.height = (int)(params.paperHeight * zoom);
|
|
|
|
}
|
|
else if (imgPos == CalParams::Left) {
|
|
params.imgPos = CalParams::Left;
|
|
|
|
float zoom = TQMIN((float)previewSize_/params.paperWidth,
|
|
(float)previewSize_/params.paperHeight);
|
|
params.width = (int)(params.paperHeight * zoom);
|
|
params.height = (int)(params.paperWidth * zoom);
|
|
|
|
}
|
|
else {
|
|
params.imgPos = CalParams::Right;
|
|
|
|
float zoom = TQMIN((float)previewSize_/params.paperWidth,
|
|
(float)previewSize_/params.paperHeight);
|
|
params.width = (int)(params.paperHeight * zoom);
|
|
params.height = (int)(params.paperWidth * zoom);
|
|
}
|
|
|
|
params.drawLines = checkBoxDrawLines_->isChecked();
|
|
params.ratio = sliderRatio_->value();
|
|
params.baseFont = TQFont(comboFont_->currentText());
|
|
calWidget_->recreate();
|
|
}
|
|
|
|
} // NameSpace KIPICalendarPlugin
|
|
|
|
#include "caltemplate.moc"
|