00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#include <qtooltip.h>
00025
#include <qframe.h>
00026
#include <qpixmap.h>
00027
#include <qlayout.h>
00028
#include <qwidgetstack.h>
00029
#include <qdatetime.h>
00030
00031
#include <kdebug.h>
00032
#include <klocale.h>
00033
#include <kstandarddirs.h>
00034
#include <kmessagebox.h>
00035
#include <kinputdialog.h>
00036
00037
#include <libkdepim/categoryselectdialog.h>
00038
00039
#include <libkcal/calendarlocal.h>
00040
#include <libkcal/icalformat.h>
00041
00042
#include "koprefs.h"
00043
#include "koglobals.h"
00044
#include "koeditordetails.h"
00045
#include "koeditorattachments.h"
00046
00047
#include "koincidenceeditor.h"
00048
00049 KOIncidenceEditor::KOIncidenceEditor(
const QString &caption,
00050 Calendar *calendar, QWidget *parent )
00051 : KDialogBase( Tabbed, caption, Ok | Apply | Cancel | Default | User1, Ok,
00052 parent, 0, false, false ),
00053 mDetails( 0 ), mAttachments( 0 )
00054 {
00055 mCalendar = calendar;
00056
00057 setButtonText( Default, i18n(
"Load &Template...") );
00058
00059 QString saveTemplateText;
00060
if ( KOPrefs::instance()->mCompactDialogs ) {
00061 showButton( User1,
false );
00062 showButton( Apply,
false );
00063 }
else {
00064 saveTemplateText = i18n(
"&Save as Template...");
00065 }
00066 setButtonText( User1, saveTemplateText );
00067
00068 mCategoryDialog =
new KPIM::CategorySelectDialog( KOPrefs::instance(),
this );
00069 KOGlobals::fitDialogToScreen( mCategoryDialog );
00070
00071 connect( mCategoryDialog, SIGNAL( editCategories() ),
00072 SIGNAL( editCategories() ) );
00073
00074 connect(
this, SIGNAL( defaultClicked() ), SLOT( slotLoadTemplate() ) );
00075 connect(
this, SIGNAL( user1Clicked() ), SLOT( slotSaveTemplate() ) );
00076 }
00077
00078 KOIncidenceEditor::~KOIncidenceEditor()
00079 {
00080
delete mCategoryDialog;
00081 }
00082
00083
void KOIncidenceEditor::setupAttendeesTab()
00084 {
00085 QFrame *topFrame = addPage( i18n(
"Atte&ndees") );
00086
00087 QBoxLayout *topLayout =
new QVBoxLayout( topFrame );
00088
00089 mDetails =
new KOEditorDetails( spacingHint(), topFrame );
00090 topLayout->addWidget( mDetails );
00091 }
00092
00093
void KOIncidenceEditor::setupAttachmentsTab()
00094 {
00095 QFrame *topFrame = addPage( i18n(
"Attachments") );
00096
00097 QBoxLayout *topLayout =
new QVBoxLayout( topFrame );
00098
00099 mAttachments =
new KOEditorAttachments( spacingHint(), topFrame );
00100 topLayout->addWidget( mAttachments );
00101 }
00102
00103
void KOIncidenceEditor::slotApply()
00104 {
00105
processInput();
00106 }
00107
00108
void KOIncidenceEditor::slotOk()
00109 {
00110
if (
processInput() ) accept();
00111 }
00112
00113
void KOIncidenceEditor::updateCategoryConfig()
00114 {
00115 mCategoryDialog->updateCategoryConfig();
00116 }
00117
00118
void KOIncidenceEditor::slotCancel()
00119 {
00120 processCancel();
00121 reject();
00122 }
00123
00124
void KOIncidenceEditor::slotLoadTemplate()
00125 {
00126 kdDebug(5850) <<
"KOIncidenceEditor::loadTemplate()" << endl;
00127 }
00128
00129
void KOIncidenceEditor::slotSaveTemplate()
00130 {
00131 kdDebug(5850) <<
"KOIncidenceEditor::saveTemplate()" << endl;
00132 QString tp = type();
00133 QStringList templates;
00134
if ( tp ==
"Event" ) {
00135 templates = KOPrefs::instance()->mEventTemplates;
00136 }
else if( tp ==
"ToDo" ) {
00137 templates = KOPrefs::instance()->mTodoTemplates;
00138 }
00139
bool ok =
false;
00140 QString templateName = KInputDialog::getItem( i18n(
"Save Template"),
00141 i18n(
"Please enter a name for the template:"), templates,
00142 -1,
true, &ok,
this );
00143
if ( ok && templateName.isEmpty() ) {
00144 KMessageBox::error(
this, i18n(
"You did not give a valid template name, "
00145
"no template will be saved") );
00146 ok =
false;
00147 }
00148
00149
if ( ok && templates.contains( templateName ) ) {
00150
int res = KMessageBox::warningYesNo(
this,
00151 i18n(
"The selected template "
00152
"already exists. Overwrite it?"),
00153 i18n(
"Template already exists") );
00154
if ( res == KMessageBox::No ) {
00155 ok =
false;
00156 }
00157 }
00158
00159
if ( ok ) {
00160 saveTemplate( templateName );
00161
00162
00163
if ( !templates.contains( templateName ) ) {
00164 templates.append( templateName );
00165
if ( tp ==
"Event" ) {
00166 KOPrefs::instance()->mEventTemplates = templates;
00167 }
else if( tp ==
"ToDo" ) {
00168 KOPrefs::instance()->mTodoTemplates = templates;
00169 }
00170 }
00171
00172 }
00173 }
00174
00175
void KOIncidenceEditor::saveAsTemplate( Incidence *incidence,
00176
const QString &templateName )
00177 {
00178
if ( !incidence || templateName.isEmpty() )
return;
00179
00180 QString fileName =
"templates/" + incidence->type();
00181 fileName.append(
"/" + templateName );
00182 fileName = locateLocal(
"data",
"korganizer/" + fileName );
00183
00184 CalendarLocal cal( KOPrefs::instance()->mTimeZoneId );
00185 cal.addIncidence( incidence );
00186 ICalFormat format;
00187 format.save( &cal, fileName );
00188 }
00189
00190 QString KOIncidenceEditor::loadTemplate( Calendar *cal,
const QString &type,
00191
const QStringList &templates )
00192 {
00193
bool ok =
false;
00194 QString templateName = KInputDialog::getItem( i18n(
"Load Template"),
00195 i18n(
"Select a template to load:"), templates, 0,
false, &ok,
this );
00196
00197
if ( !ok || templateName.isEmpty() )
return QString::null;
00198
00199 QString fileName = locateLocal(
"data",
"korganizer/templates/" + type +
"/" +
00200 templateName );
00201
00202
if ( fileName.isEmpty() ) {
00203 KMessageBox::error(
this, i18n(
"Unable to find template '%1'.")
00204 .arg( fileName ) );
00205
return QString::null;
00206 }
else {
00207 ICalFormat format;
00208
if ( !format.load( cal, fileName ) ) {
00209 KMessageBox::error(
this, i18n(
"Error loading template file '%1'.")
00210 .arg( fileName ) );
00211
return QString::null;
00212 }
00213 }
00214
00215
return templateName;
00216 }
00217
00218
#include "koincidenceeditor.moc"