summaryrefslogtreecommitdiffabout
path: root/korganizer/mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp134
1 files changed, 134 insertions, 0 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index de94b8c..ef73a78 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -10,12 +10,14 @@
#include <qtextcodec.h>
#include <qfile.h>
#include <qdir.h>
#include <qapp.h>
#include <qfileinfo.h>
#include <qlabel.h>
+#include <qspinbox.h>
+#include <qcheckbox.h>
#include <qmap.h>
#include <qwmatrix.h>
#include <qtextbrowser.h>
#include <qtextstream.h>
#ifndef DESKTOP_VERSION
#include <qpe/global.h>
@@ -32,12 +34,13 @@
#include <qapplication.h>
//#include <resource.h>
#endif
#include <libkcal/calendarlocal.h>
#include <libkcal/todo.h>
+#include <libkcal/phoneformat.h>
#include <libkdepim/ksyncprofile.h>
#include <libkcal/kincidenceformatter.h>
#include <libkdepim/kpimglobalprefs.h>
#include "calendarview.h"
#include "koviewmanager.h"
@@ -63,12 +66,61 @@ using namespace KCal;
#include <unistd.h>
#else
#include "koimportoldialog.h"
#endif
#include "mainwindow.h"
+class KOex2phonePrefs : public QDialog
+{
+ public:
+ KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
+ QDialog( parent, name, true )
+ {
+ setCaption( i18n("Export to phone options") );
+ QVBoxLayout* lay = new QVBoxLayout( this );
+ lay->setSpacing( 3 );
+ lay->setMargin( 3 );
+
+ lay->addWidget(new QLabel( i18n("Please read phone sync howto to\nknow more about the connection settings."), this ) );
+ QHBox* temphb;
+ temphb = new QHBox( this );
+ new QLabel( i18n("I/O device: "), temphb );
+ mPhoneDevice = new QLineEdit( temphb);
+ lay->addWidget( temphb );
+ temphb = new QHBox( this );
+ new QLabel( i18n("Connection: "), temphb );
+ mPhoneConnection = new QLineEdit( temphb);
+ lay->addWidget( temphb );
+ temphb = new QHBox( this );
+ new QLabel( i18n("Model(opt.): "), temphb );
+ mPhoneModel = new QLineEdit( temphb);
+ lay->addWidget( temphb );
+ mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
+ mWriteBackFuture->setChecked( true );
+ lay->addWidget( mWriteBackFuture );
+ temphb = new QHBox( this );
+ new QLabel( i18n("Max. weeks in future: ") , temphb );
+ mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
+ mWriteBackFutureWeeks->setValue( 8 );
+ lay->addWidget( temphb );
+ QPushButton * ok = new QPushButton( i18n("Export!"), this );
+ lay->addWidget( ok );
+ QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
+ lay->addWidget( cancel );
+ connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
+ connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
+ resize( 220, 220 );
+
+ }
+
+public:
+ QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
+ QCheckBox* mWriteBackFuture;
+ QSpinBox* mWriteBackFutureWeeks;
+};
+
int globalFlagBlockStartup;
MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
QMainWindow( parent, name )
{
mPassWordPiSync = "abc";
#ifdef DESKTOP_VERSION
@@ -650,12 +702,21 @@ void MainWindow::initActions()
connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
importMenu->insertSeparator();
action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
this );
action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
+
+
+ //LR
+ QPopupMenu *ex2phone = new QPopupMenu( this );
+ ex2phone->insertItem(i18n("Complete calendar..."), 1 );
+ ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
+ connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
+ importMenu->insertItem( i18n("Export to phone"), ex2phone );
+
importMenu->insertSeparator();
action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
this );
action->addTo( importMenu );
connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
#ifndef DESKTOP_VERSION
@@ -1084,19 +1145,92 @@ void MainWindow::slotSyncMenu( int action )
}
}
delete temp;
mBlockSaveFlag = false;
}
+void MainWindow::exportToPhone( int mode )
+{
+
+ //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
+ //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
+ KOex2phonePrefs ex2phone;
+ ex2phone.mPhoneConnection->setText( KOPrefs::instance()->mEx2PhoneConnection );
+ ex2phone.mPhoneDevice->setText( KOPrefs::instance()->mEx2PhoneDevice );
+ ex2phone.mPhoneModel->setText( KOPrefs::instance()->mEx2PhoneModel );
+
+ if ( !ex2phone.exec() ) {
+ return;
+ }
+ KOPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
+ KOPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
+ KOPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
+
+ int inFuture = 0;
+ if ( ex2phone.mWriteBackFuture->isChecked() )
+ inFuture = ex2phone.mWriteBackFutureWeeks->value();
+ QPtrList<Incidence> delSel;
+ if ( mode == 1 )
+ delSel = mCalendar->rawIncidences();
+ if ( mode == 2 )
+ delSel = mCalendar->incidences();
+ CalendarLocal* cal = new CalendarLocal();
+ cal->setLocalTime();
+ Incidence *incidence = delSel.first();
+ QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
+ QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
+ while ( incidence ) {
+ if ( incidence->type() != "journal" ) {
+ bool add = true;
+ if ( inFuture ) {
+ QDateTime dt;
+ if ( incidence->type() == "Todo" ) {
+ Todo * t = (Todo*)incidence;
+ if ( t->hasDueDate() )
+ dt = t->dtDue();
+ else
+ dt = cur.addSecs( 62 );
+ }
+ else {
+ bool ok;
+ dt = incidence->getNextOccurence( cur, &ok );
+ if ( !ok )
+ dt = cur.addSecs( -62 );
+ }
+ if ( dt < cur || dt > end ) {
+ add = false;
+ }
+ }
+ if ( add ) {
+ Incidence *in = incidence->clone();
+ cal->addIncidence( in );
+ }
+ }
+ incidence = delSel.next();
+ }
+ PhoneFormat::writeConfig( KOPrefs::instance()->mEx2PhoneDevice,
+ KOPrefs::instance()->mEx2PhoneConnection,
+ KOPrefs::instance()->mEx2PhoneModel );
+
+ setCaption( i18n("Writing to phone..."));
+ if ( PhoneFormat::writeToPhone( cal ) )
+ setCaption( i18n("Export to phone successful!"));
+ else
+ setCaption( i18n("Error exporting to phone!"));
+ delete cal;
+}
+
+
void MainWindow::setDefaultPreferences()
{
KOPrefs *p = KOPrefs::instance();
p->mCompactDialogs = true;
p->mConfirm = true;
// p->mEnableQuickTodo = false;
+
}
QString MainWindow::resourcePath()
{
return KGlobal::iconLoader()->iconPath();
}