Diffstat (limited to 'kaddressbook/old_mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/old_mainwindow.cpp | 1561 |
1 files changed, 1561 insertions, 0 deletions
diff --git a/kaddressbook/old_mainwindow.cpp b/kaddressbook/old_mainwindow.cpp new file mode 100644 index 0000000..0e886d9 --- a/dev/null +++ b/kaddressbook/old_mainwindow.cpp @@ -0,0 +1,1561 @@ +#include <qlabel.h> +#include <qapp.h> +#include <qmessagebox.h> +#include <qaction.h> + +#include <kdebug.h> // defined kdDebug() +#include <klocale.h> // defines i18n (microkde) + +#include "kabprefs.h" + +#ifndef DESKTOP_VERSION +#include <qpe/qpetoolbar.h> +#include <qpe/qpemenubar.h> +#include <qpe/resource.h> +#else +#include <qtoolbar.h> +#include <qmenubar.h> +#include <resource.h> +#endif + +/* +#include <stdlib.h> + +#include <qaction.h> +#include <qpainter.h> +#include <qwhatsthis.h> +#include <qpopupmenu.h> +#include <qmessagebox.h> +#include <qlineedit.h> +#include <qfile.h> +#include <qfileinfo.h> +#include <qwmatrix.h> +#ifndef DESKTOP_VERSION +#include <qpe/global.h> +#include <qpe/qpemenubar.h> +#include <qpe/qpetoolbar.h> +#include <qpe/resource.h> +#include <qpe/qpeapplication.h> +#include <qtopia/alarmserver.h> +#include <qtopia/qcopenvelope_qws.h> +#else +#include <qtoolbar.h> +#include <qdir.h> +#include <qapplication.h> +//#include <resource.h> +#endif + +#include <libkcal/calendarlocal.h> +#include <libkcal/todo.h> + +//#include "calendarview.h" +//#include "koviewmanager.h" +//#include "koagendaview.h" +//#include "kodialogmanager.h" +//#include "kdialogbase.h" +//#include "koprefs.h" +//#include "kfiledialog.h" +//#include "koglobals.h" + +//#include "kconfig.h" +//#include "simplealarmclient.h" +*/ +//US using namespace KACore; + + +#include "mainwindow.h" + +MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : + QMainWindow( parent, name ) +{ + +#ifdef DESKTOP_VERSION + setFont( QFont("Arial"), 14 ); +#endif +// mBlockAtStartup = true; + kdDebug() << "MainWindow()::MainWindow()" << endl; +// mFlagKeyPressed = false; + setCaption("KAddressbook/Pi"); + + KABPrefs *p = KABPrefs::instance(); + if ( QApplication::desktop()->height() > 480 ) { +//US if ( p->mHourSize == 4 ) +//US p->mHourSize = 6; + } + + QMainWindow::ToolBarDock tbd; + if ( p->mToolBarHor ) { + if ( p->mToolBarUp ) + tbd = Bottom; + else + tbd = Top; + } + else { + if ( p->mToolBarUp ) + tbd = Right; + else + tbd = Left; + } + + iconToolBar = new QPEToolBar( this ); + addToolBar (iconToolBar , tbd ); + +/*US + mBlockSaveFlag = false; + mCalendarModifiedFlag = false; +*/ + QLabel* splash = new QLabel(i18n("KA/Pi is starting ... "), this ); + splash->setAlignment ( AlignCenter ); + setCentralWidget( splash ); +#ifndef DESKTOP_VERSION + showMaximized(); +#endif + qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); +// setDefaultPreferences(); +/* mCalendar = new CalendarLocal(); + mView = new CalendarView( mCalendar, this,"mCalendar " ); + mView->hide(); + //mView->resize(splash->size() ); +*/ + initActions(); + +#ifndef DESKTOP_VERSION +//US iconToolBar->show(); + qApp->processEvents(); +#endif + qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); + + int vh = height() ; + int vw = width(); + qDebug("Toolbar hei %d ",iconToolBar->height() ); +/*US if ( iconToolBar->orientation () == Qt:: Horizontal ) { + vh -= iconToolBar->height(); + } else { + vw -= iconToolBar->height(); + } +*/ + //mView->setMaximumSize( splash->size() ); + //mView->resize( splash->size() ); + //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); +/* mView->readSettings(); + if( !QFile::exists( defaultFileName() ) ) { + mView->saveCalendar( defaultFileName() ); + } + mView->openCalendar( defaultFileName() ); + processIncidenceSelection( 0 ); + connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), + SLOT( processIncidenceSelection( Incidence * ) ) ); + connect( mView, SIGNAL( modifiedChanged( bool ) ), + SLOT( slotModifiedChanged( bool ) ) ); + connect( mView, SIGNAL( signalmodified() ), + SLOT( checkAlarms( ) ) ); + + connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); + connect( &alarmTimer, SIGNAL( timeout() ), SLOT( writeAlarm() ) ); + mView->setModified( false ); + mBlockAtStartup = false; + mView->setModified( false ); + setCentralWidget( mView ); + mView->show(); +*/ + delete splash; + + qApp->processEvents(); +//US qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); + +} +MainWindow::~MainWindow() +{ + qDebug("MainWindow::~MainWindow() "); + kdDebug() << "MainWindow()::~MainWindow()" << endl; + //save toolbar location +/* + KOPrefs *p = KOPrefs::instance(); + p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); + p->mToolBarUp = iconToolBar->x() > width()/2 || + iconToolBar->y() > height()/2; + alarmTimer.stop(); + mView->writeSettings(); + writeAlarm(); + if ( mCalendarModifiedFlag ) + save(); + delete mCalendar; +*/ +} + + +void MainWindow::closeEvent( QCloseEvent* ce ) +{ + + if ( ! KABPrefs::instance()->mAskForQuit ) { + + ce->accept(); + return; + + } + + switch( QMessageBox::information( this, "KA/Pi", + i18n("Do you really want\nto close KA/Pi?"), + i18n("Close!"), i18n("No"), + 0, 0 ) ) { + case 0: + ce->accept(); + break; + case 1: + ce->ignore(); + break; + case 2: + + default: + break; + } + + +} + + +void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) +{ +/* + QDataStream stream( data, IO_ReadOnly ); + // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); + + + if ( cmsg == "-writeFile" ) { + mView->viewManager()->showWhatsNextView(); + save(); + setCaption( i18n("File written on AD request")); + showMaximized(); + raise(); +#ifndef DESKTOP_VERSION + QCopEnvelope e3("kosaved", "blabla"); +#endif + return; + + } + if ( cmsg == "-newCountdown" ) { + qDebug("newCountdown "); + + } + QString msg ;; + QString allmsg = cmsg; + while ( allmsg.length() > 0 ) { + int nextC = allmsg.find( "-", 1 ); + if ( nextC == -1 ) { + msg = allmsg; + allmsg = ""; + } else{ + msg = allmsg.left( nextC ); + allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); + } + //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); + if ( msg == "-newEvent" ) { + mView->newEvent(); + } + if ( msg == "-newTodo" ) { + mView->newTodo(); + + } + if ( msg == "-showWN" ) { + mView->viewManager()->showWhatsNextView(); + } + if ( msg == "-showTodo" ) { + mView->viewManager()->showTodoView(); + } + if ( msg == "-showList" ) { + mView->viewManager()->showListView(); + } + else if ( msg == "-showDay" ) { + mView->viewManager()->showDayView(); + } + else if ( msg == "-showWWeek" ) { + mView->viewManager()->showWorkWeekView(); + } + else if ( msg == "-showWeek" ) { + mView->viewManager()->showWeekView(); + } + else if ( msg == "-showTodo" ) { + mView->viewManager()->showTodoView(); + } + else if ( msg == "-showJournal" ) { + mView->viewManager()->showJournalView(); + } + else if ( msg == "-showKO" ) { + mView->viewManager()->showNextXView(); + } + else if ( msg == "-showWNext" ) { + mView->viewManager()->showWhatsNextView(); + } + } + + showMaximized(); + raise(); +*/ +} + + +QPixmap MainWindow::loadPixmap( QString name ) +{ + return KGlobal::iconLoader().loadPixmap( name ); +/*US use the advanced version of the iconloader +#ifdef DESKTOP_VERSION + QPixmap pixmapLoader; + QString file; + file = QDir::homeDirPath()+"/kaddressbook/pics/" + name+".png"; + //qDebug("pixmap name %s ", file.latin1()); + pixmapLoader.load( file ); + return pixmapLoader; +#else + return Resource::loadPixmap( name ); +#endif +*/ +} + +void MainWindow::initActions() +{ + iconToolBar->clear(); + KABPrefs *p = KABPrefs::instance(); + QPEMenuBar *menuBar1 = new QPEMenuBar( iconToolBar ); + QPopupMenu *menuBar = new QPopupMenu( this ); + menuBar1->insertItem( "ME", menuBar); + QPopupMenu *fileMenu = new QPopupMenu( this ); + QPopupMenu *editMenu = new QPopupMenu( this ); + QPopupMenu *viewMenu = new QPopupMenu( this ); + QPopupMenu *settingsMenu = new QPopupMenu( this ); + QPopupMenu *importMenu = new QPopupMenu( this ); + + menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); + + QIconSet icon; + + + icon = loadPixmap( pathString + "newtodo" ); + configureToolBarMenu->insertItem(icon, "New todo", 20 ); + QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this ); + nt_action->addTo( actionMenu ); + connect( nt_action, SIGNAL( activated() ), + mView, SLOT( newTodo() ) ); + +/* + QAction *action; + QIconSet icon; + // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); + configureToolBarMenu = new QPopupMenu( this ); + configureToolBarMenu->setCheckable( true ); +#ifdef DESKTOP_VERSION + QString pathString = ""; +#else + QString pathString = "kaddressbook/"; +#endif + if ( QApplication::desktop()->width() < 480 ) + pathString += "icons16/"; + configureAgendaMenu = new QPopupMenu( menuBar ); + configureAgendaMenu->setCheckable( true ); + configureAgendaMenu->insertItem("Toggle Allday", 1 ); + configureAgendaMenu->insertSeparator(); + configureAgendaMenu->insertItem("Tiny", 4 ); + configureAgendaMenu->insertItem("Small", 6 ); + configureAgendaMenu->insertItem("Medium", 8 ); + configureAgendaMenu->insertItem("Normal", 10 ); + configureAgendaMenu->insertItem("Large", 12 ); + configureAgendaMenu->insertItem("Big", 14 ); + configureAgendaMenu->insertItem("Bigger", 16 ); + configureAgendaMenu->insertItem("Biggest", 18 ); + //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); + icon = loadPixmap( pathString + "newevent" ); + icon = loadPixmap( pathString + "newevent" ); + configureToolBarMenu->insertItem("Stretched TB", 5 ); + configureToolBarMenu->insertSeparator(); + configureToolBarMenu->insertItem(icon, "New event", 10 ); + QAction* ne_action = new QAction( "New Event", icon, "New Event...", 0, this ); + ne_action->addTo( actionMenu ); +*/ +/* + connect( ne_action, SIGNAL( activated() ), + mView, SLOT( newEvent() ) ); + icon = loadPixmap( pathString + "newtodo" ); + configureToolBarMenu->insertItem(icon, "New todo", 20 ); + QAction* nt_action = new QAction( "New Todo", icon, "New Todo...", 0, this ); + nt_action->addTo( actionMenu ); + connect( nt_action, SIGNAL( activated() ), + mView, SLOT( newTodo() ) ); + + action = new QAction( "Toggle FilterView", QPixmap(), "Toggle FilterView", 0, this ); + action->addTo( viewMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( toggleFilter() ) ); + + viewMenu->insertSeparator(); + icon = loadPixmap( pathString + "picker" ); + action = new QAction( "Date Picker", icon, "Date Picker", 0, this ); + action->addTo( viewMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( showDatePicker() ) ); + action->addTo( iconToolBar ); + viewMenu->insertSeparator(); + icon = loadPixmap( pathString + "list" ); + configureToolBarMenu->insertItem(icon, "Event list", 30 ); + QAction* showlist_action = new QAction( "List", icon, "List", 0, this ); + showlist_action->addTo( viewMenu ); + connect( showlist_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showListView() ) ); + + + icon = loadPixmap( pathString + "day" ); + configureToolBarMenu->insertItem(icon, "One day", 40 ); + QAction* day1_action = new QAction( "Day", icon, "Day", 0, this ); + day1_action->addTo( viewMenu ); + // action->addTo( toolBar ); + connect( day1_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showDayView() ) ); + + icon = loadPixmap( pathString + "workweek" ); + configureToolBarMenu->insertItem(icon, "Work week", 50 ); + QAction* day5_action = new QAction( "Work Week", icon, "Work Week", 0, this ); + day5_action->addTo( viewMenu ); + connect( day5_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showWorkWeekView() ) ); + + icon = loadPixmap( pathString + "week" ); + configureToolBarMenu->insertItem(icon, "Week", 60 ); + QAction* day7_action = new QAction( "Week", icon, "Week", 0, this ); + day7_action->addTo( viewMenu ); + connect( day7_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showWeekView() ) ); + + icon = loadPixmap( pathString + "month" ); + configureToolBarMenu->insertItem(icon, "Month", 70 ); + QAction* month_action = new QAction( "Month", icon, "Month", 0, this ); + month_action->addTo( viewMenu ); + connect( month_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showMonthView() ) ); + + icon = loadPixmap( pathString + "todo" ); + configureToolBarMenu->insertItem(icon, "Todo list", 80 ); + QAction* todoview_action = new QAction( "Todo", icon, "Todo", 0, this ); + todoview_action->addTo( viewMenu ); + connect( todoview_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showTodoView() ) ); + + icon = loadPixmap( pathString + "journal" ); + configureToolBarMenu->insertItem(icon, "Journal", 90 ); + QAction* viewjournal_action = new QAction( "Journal", icon, "Journal", 0, this ); + viewjournal_action->addTo( viewMenu ); + connect( viewjournal_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showJournalView() ) ); + + icon = loadPixmap( pathString + "xdays" ); + configureToolBarMenu->insertItem(icon, "Next days", 100,4 ); + QAction* xdays_action = new QAction( "Next days", icon, "Next Days", 0, this ); + xdays_action->addTo( viewMenu ); + connect( xdays_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showNextXView() ) ); + + icon = loadPixmap( pathString + "whatsnext" ); + configureToolBarMenu->insertItem(icon, "Whats next", 110, 4 ); + QAction* whatsnext_action = new QAction( "What's Next", icon, "What's Next", 0, this ); + whatsnext_action->addTo( viewMenu ); + connect( whatsnext_action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showWhatsNextView() ) ); + +#if 0 + action = new QAction( "view_timespan", "Time Span", 0, this ); + action->addTo( viewMenu ); + connect( action, SIGNAL( activated() ), + mView->viewManager(), SLOT( showTimeSpanView() ) ); +#endif + + menuBar->insertItem( "View", viewMenu ); + + +#if 0 + QPopupMenu *navigationMenu = new QPopupMenu( menuBar ); + + action = new QAction( "Go backward", "Go Backward", 0, navigationMenu ); + action->addTo( navigationMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goPrevious() ) ); + + action = new QAction( "Go forward", "Go Forward", 0, navigationMenu ); + action->addTo( navigationMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goNext() ) ); + + menuBar->insertItem( "Go", navigationMenu ); +#endif + + + + + + + mNewSubTodoAction = new QAction( "new_subtodo", "New Sub-Todo...", 0, + this ); + mNewSubTodoAction->addTo( actionMenu ); + connect( mNewSubTodoAction, SIGNAL( activated() ), + mView, SLOT( newSubTodo() ) ); + + actionMenu->insertSeparator(); + + mShowAction = new QAction( "show_incidence", "Show...", 0, this ); + mShowAction->addTo( actionMenu ); + connect( mShowAction, SIGNAL( activated() ), + mView, SLOT( showIncidence() ) ); + + mEditAction = new QAction( "edit_incidence", "Edit...", 0, this ); + mEditAction->addTo( actionMenu ); + connect( mEditAction, SIGNAL( activated() ), + mView, SLOT( editIncidence() ) ); + + mDeleteAction = new QAction( "delete_incidence", "Delete...", 0, this ); + mDeleteAction->addTo( actionMenu ); + connect( mDeleteAction, SIGNAL( activated() ), + mView, SLOT( deleteIncidence() ) ); + + actionMenu->insertSeparator(); + + action = new QAction( "purge_completed", i18n("Purge Completed"), 0, + this ); + action->addTo( actionMenu ); + connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); + + icon = loadPixmap( pathString + "search" ); + QAction* search_action = new QAction( "search", icon, "Search...", 0, this ); + configureToolBarMenu->insertItem(icon, "Search", 120 , 4); + search_action->addTo( actionMenu ); + connect( search_action, SIGNAL( activated() ), + mView->dialogManager(), SLOT( showSearchDialog() ) ); + + icon = loadPixmap( pathString + "today" ); + configureToolBarMenu->insertItem(icon, "Today", 130); + QAction* today_action = new QAction( "Today", icon, "Go to Today", 0, this ); + today_action->addTo( actionMenu ); + connect( today_action, SIGNAL( activated() ), + mView, SLOT( goToday() ) ); + + //#if 0 + actionMenu->insertSeparator(); + + action = new QAction( "configure", "Configure...", 0, this ); + action->addTo( actionMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( edit_options() ) ); + //#endif + + // actionMenu->insertSeparator(); + action = new QAction( "import_qtopia", "Import (*.ics/*.vcs) file", 0, + this ); + action->addTo( importMenu ); + connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); + action = new QAction( "import_quick", "Import last file", 0, + this ); + action->addTo( importMenu ); + connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); + importMenu->insertSeparator(); + action = new QAction( "import_qtopia", "Import Opie/Qtopia Cal.", 0, + this ); + action->addTo( importMenu ); + importMenu->insertSeparator(); + connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); + + action = new QAction( "load_cal", "Load Calendar Backup", 0, + this ); + action->addTo( importMenu ); + connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); + + action = new QAction( "save_cal", "Save Calendar Backup", 0, + this ); + action->addTo( importMenu ); + connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); + + importMenu->insertSeparator(); + action = new QAction( "import_qtopia", "Export VCalendar", 0, + this ); + action->addTo( importMenu ); + connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); + + + QPopupMenu *syncMenu = new QPopupMenu( this ); + action = new QAction( "syncssh", "Remote via ssh/scp(not implemented)", 0, + this ); + action->addTo( syncMenu ); + connect( action, SIGNAL( activated() ), SLOT( syncSSH() ) ); + action = new QAction( "synclocal", "With local file(not implemented)", 0, + this ); + action->addTo( syncMenu ); + connect( action, SIGNAL( activated() ), SLOT( syncLocalFile() ) ); + action = new QAction( "quicksynclocal", "With last file(not implemented)", 0, + this ); + action->addTo( syncMenu ); + connect( action, SIGNAL( activated() ), SLOT( quickSyncLocalFile() ) ); + + menuBar->insertItem( "Actions", actionMenu ); + menuBar->insertItem( "Load/Save", importMenu ); + menuBar->insertItem( "Synchronize", syncMenu ); + //menuBar->insertItem( "Configure",configureMenu ); + //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); + menuBar->insertItem( "AgendaSize",configureAgendaMenu ); + menuBar->insertItem( "Toolbar",configureToolBarMenu ); + QPopupMenu *helpMenu = new QPopupMenu( menuBar ); + icon = loadPixmap( "korganizer/korganizer" ); + action = new QAction( "Key bindings", "Key Bindings...", 0, this ); + action->addTo( helpMenu ); + connect( action, SIGNAL( activated() ), + SLOT( keyBindings() ) ); + action = new QAction( "Auto saving", "Auto saving...", 0, this ); + action->addTo( helpMenu ); + connect( action, SIGNAL( activated() ), + SLOT( aboutAutoSaving() ) ); + action = new QAction( "Problemd", "Known Problems...", 0,this ); + action->addTo( helpMenu ); + connect( action, SIGNAL( activated() ), + SLOT( aboutKnownBugs() ) ); + action = new QAction( "about", "About...", 0, this ); + action->addTo( helpMenu ); + connect( action, SIGNAL( activated() ), + SLOT( about() ) ); + menuBar->insertItem( "Help", helpMenu ); +*/ + //menuBar->insertSeparator(); + + // ****************************************************** + // menubar icons + + + iconToolBar->setHorizontalStretchable (true ); + //menuBar->insertItem( iconToolBar ); + //xdays_action +/* + if (p-> mShowIconNewEvent) + ne_action->addTo( iconToolBar ); + if (p->mShowIconNewTodo ) + nt_action->addTo( iconToolBar ); + if (p-> mShowIconSearch) + search_action->addTo( iconToolBar ); + if (p-> mShowIconNext) + whatsnext_action->addTo( iconToolBar ); + if (p-> mShowIconNextDays) + xdays_action->addTo( iconToolBar ); + if (p-> mShowIconList) + showlist_action->addTo( iconToolBar ); + if (p-> mShowIconDay1) + day1_action->addTo( iconToolBar ); + if (p-> mShowIconDay5) + day5_action->addTo( iconToolBar ); + if (p-> mShowIconDay7) + day7_action->addTo( iconToolBar ); + if (p-> mShowIconMonth) + month_action->addTo( iconToolBar ); + if (p-> mShowIconTodoview) + todoview_action->addTo( iconToolBar ); + if (p-> mShowIconJournal) + viewjournal_action->addTo( iconToolBar ); + icon = loadPixmap( pathString + "2leftarrowB" ); + configureToolBarMenu->insertItem(icon, "Prev. month", 200, 14); + if (p-> mShowIconBackFast) { + action = new QAction( "Prev month", icon, "Go Backward",0 , this ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goPreviousMonth() ) ); + action->addTo( iconToolBar ); + } + icon = loadPixmap( pathString + "1leftarrowB" ); + configureToolBarMenu->insertItem(icon, "Go previous", 210,15); + if (p-> mShowIconBack) { + action = new QAction( "Go previous", icon, "Go Backward",0 , this ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goPrevious() ) ); + action->addTo( iconToolBar ); + } + if (p-> mShowIconToday) + today_action->addTo( iconToolBar ); + icon = loadPixmap( pathString + "1rightarrowB" ); + configureToolBarMenu->insertItem(icon, "Go next", 220); + if (p-> mShowIconForward) { + action = new QAction( "Go next", icon, "Go Backward",0 , this ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goNext() ) ); + action->addTo( iconToolBar ); + } + icon = loadPixmap( pathString + "2rightarrowB" ); + configureToolBarMenu->insertItem(icon, "Next month", 230); + if (p-> mShowIconForwardFast) { + action = new QAction( "Next month", icon, "Go Backward",0 , this ); + connect( action, SIGNAL( activated() ), + mView, SLOT( goNextMonth() ) ); + action->addTo( iconToolBar ); + } +*/ + + configureToolBarMenu->insertItem("WhatsThis", 300); +/* + if (p-> mShowIconNewEvent) + configureToolBarMenu->setItemChecked( 10, true ); + if (p->mShowIconNewTodo ) + configureToolBarMenu->setItemChecked( 20, true ); + if (p-> mShowIconSearch) + configureToolBarMenu->setItemChecked( 120, true ); + if (p-> mShowIconList) + configureToolBarMenu->setItemChecked( 30, true ); + if (p-> mShowIconDay1) + configureToolBarMenu->setItemChecked( 40, true ); + if (p-> mShowIconDay5) + configureToolBarMenu->setItemChecked( 50, true ); + if (p-> mShowIconDay7) + configureToolBarMenu->setItemChecked( 60, true ); + if (p-> mShowIconMonth) + configureToolBarMenu->setItemChecked( 70, true ); + if (p-> mShowIconTodoview) + configureToolBarMenu->setItemChecked( 80, true ); + if (p-> mShowIconBackFast) + configureToolBarMenu->setItemChecked( 200, true ); + if (p-> mShowIconBack) + configureToolBarMenu->setItemChecked( 210, true ); + if (p-> mShowIconToday) + configureToolBarMenu->setItemChecked( 130, true ); + if (p-> mShowIconForward) + configureToolBarMenu->setItemChecked( 220, true ); + if (p-> mShowIconForwardFast) + configureToolBarMenu->setItemChecked( 230, true ); + if (p-> mShowIconNextDays) + configureToolBarMenu->setItemChecked( 100, true ); + if (p-> mShowIconNext) + configureToolBarMenu->setItemChecked( 110, true ); + if (p-> mShowIconJournal) + configureToolBarMenu->setItemChecked( 90, true ); + if (p-> mShowIconWhatsThis) + configureToolBarMenu->setItemChecked( 300, true ); + + QLabel* dummy = new QLabel( iconToolBar ); + dummy->setBackgroundColor( iconToolBar->backgroundColor() ); + if (!p-> mShowIconStretch) + iconToolBar->setStretchableWidget ( dummy ) ; + else + configureToolBarMenu->setItemChecked( 5, true ); + if (p-> mShowIconWhatsThis) + QWhatsThis::whatsThisButton ( iconToolBar ); + connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); + configureAgenda( p->mHourSize ); + connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); +*/ +} +/* +void MainWindow::setDefaultPreferences() +{ + KOPrefs *p = KOPrefs::instance(); + + p->mCompactDialogs = true; + p->mConfirm = true; + p->mEnableQuickTodo = false; +} +*/ +void MainWindow::about() +{ + QMessageBox::about( this, "About KOrganizer/Pi", + "KOrganizer/Platform-independent\n" + "(KO/Pi) 1.6.0e - " +#ifdef DESKTOP_VERSION + "Desktop Edition\n" +#else + "PDA-Edition\n" + "for: Zaurus 5500 / 7x0 / 8x0\n" +#endif + "(c) 2004 Lutz Rogowski\n" + "Email:lutz@pi-sync.net\n" + "KO/Pi is based on KOrganizer\n" + "(c) 2002,2003 Cornelius Schumacher\n" + "Email: schumacher@kde.org\n" + "KOrganizer/Pi is licensed\n" + "under the GPL.\n" + "KO/Pi can be compiled for\n" + "Linux, Zaurus-PDA and Windows\n" + "www.korganizer.org\n" ); +} +/* +void MainWindow::keyBindings() +{ + QMessageBox* msg; + msg = new QMessageBox( "Key bindings KOrganizer/Pi", + "Space: Toggle Fullscreen | P: Date Picker\n" + "H: This dialog | I: Show info | S: Search\n" + "F: Toggle Filterview | 1-4: Select Filter\n" + "N: Show next days | W: Whats next\n " + "V: Todo view | L: Event list view\n" + "T: Goto today | T+<ctrl>: New Todo\n" + "E: Edit item | E+<ctrl>: New Event\n" + "5: Work week view | 7: Week view\n" + "D: One day view | M: Month view\n" + "+,- : Zoom in/out Agenda | A: Toggle Allday\n" + "<ctrl>+<up>/<down>: Scroll todo view\n" + "<right>,C: Next week | <right>+<ctrl>: Next month\n" + "<left>,X: Prev. week | <left>+<ctrl>: Prev. month\n" + "<del>,<backspace>: Delete sel. item\n", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton ); + msg->exec(); + delete msg; + +} +void MainWindow::aboutAutoSaving() +{ + QMessageBox* msg; + msg = new QMessageBox( "Auto Saving in KOrganizer/Pi", + "After changing something, the data is\n" + "automatically saved to the file\n" + "~/Applications/korganizer/mycalendar.ics\n " + "after (configureable) one minute.\n" + "For safety reasons there is one autosaving\n" + "after 10 minutes (of idle time) again. The \n" + "data is saved automatically when closing KO/Pi\n" + "You can create a backup file \n" + "with: Load/Save - Save Calendar Backup\n", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + msg->exec(); + delete msg; + + +} +void MainWindow::aboutKnownBugs() +{ + QMessageBox* msg; + msg = new QMessageBox( "Known Problems in KOrganizer/Pi", + "1) The QWhatsThis help is not working.\n" + "There is only a black rectangle displayed\n" + "when clicking on an event.\n " + "2) Audio alarm is available!\n" + "as an additional small application\n" + "3) Syncing is missing.\n" + "Syncing via ssh/scp will be available in\n" + "KOrganizer/Pi 2.0\n" + "\n" + "Please report unexpected behaviour to\n" + "lutz@pi-sync.net\n", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + msg->exec(); + delete msg; + +} + +QString MainWindow::defaultFileName() +{ +#ifndef DESKTOP_VERSION + return Global::applicationFileName( "korganizer", "mycalendar.ics" ); +#else + // pending + QString file; + file = QDir::homeDirPath()+"/korganizer/mycalendar.ics"; + return QDir::convertSeparators( file ); +#endif +} + +void MainWindow::processIncidenceSelection( Incidence *incidence ) +{ + if ( !incidence ) { + enableIncidenceActions( false ); + + mNewSubTodoAction->setEnabled( false ); + setCaptionToDates(); + return; + + } + + QString startString = ""; + if ( incidence->type() != "Todo" ) { + if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { + startString = ": "+incidence->dtStart().time().toString().left(5); + startString += " "+ incidence->dtStart().date().toString(); + startString += "-"+incidence->dtEnd().time().toString().left(5); + startString += " "+ incidence->dtEnd().date().toString(); + + } else { + if ( incidence->dtStart().time() != incidence->dtEnd().time() ) + startString = ": "+incidence->dtStart().time().toString().left(5)+"-"+incidence->dtEnd().time().toString().left(5); + startString +=" "+incidence->dtStart().date().toString(); + } + + } + else + startString = ": (Prio "+QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +"\% completed"; + + setCaption( incidence->summary()+startString); + + enableIncidenceActions( true ); + + if ( incidence->type() == "Event" ) { + mShowAction->setText( i18n("Show Event...") ); + mEditAction->setText( i18n("Edit Event...") ); + mDeleteAction->setText( i18n("Delete Event...") ); + + mNewSubTodoAction->setEnabled( false ); + } else if ( incidence->type() == "Todo" ) { + mShowAction->setText( i18n("Show Todo...") ); + mEditAction->setText( i18n("Edit Todo...") ); + mDeleteAction->setText( i18n("Delete Todo...") ); + + mNewSubTodoAction->setEnabled( true ); + } else { + mShowAction->setText( i18n("Show...") ); + mShowAction->setText( i18n("Edit...") ); + mShowAction->setText( i18n("Delete...") ); + + mNewSubTodoAction->setEnabled( false ); + } +} + +void MainWindow::enableIncidenceActions( bool enabled ) +{ + mShowAction->setEnabled( enabled ); + mEditAction->setEnabled( enabled ); + mDeleteAction->setEnabled( enabled ); +} + +void MainWindow::importQtopia() +{ +#ifndef DESKTOP_VERSION + int result = QMessageBox::warning( this, "KO/Pi: Warning!", + "When importing a calendar twice\n" + "duplicated events will be ignored!\n" + "You can create a backup file with\n" + "Load/Save - Save Calendar Backup\n" + "to revert importing", + "Import!", "Cancel", 0, + 0, 1 ); + if ( result == 0 ) { + QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); + QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); + QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; + mView->importQtopia( categories, datebook, todolist ); + } +#else + int result = QMessageBox::warning( this, "KO/Pi: Warning!", + "NOT SUPPORTED \n" + "ON DESKTOP!\n", + "OK", "Cancel", 0, + 0, 1 ); + +#endif +} +void MainWindow::checkAlarms() +{ + if ( mBlockAtStartup ) + return; + alarmTimer.start( 1000 * 3); + +} +void MainWindow::slotModifiedChanged( bool changed ) +{ + if ( mBlockAtStartup ) + return; + int msec; + // we store the changes after 1 minute, + // and for safety reasons after 10 minutes again + if ( !mBlockSaveFlag ) + msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; + else + msec = 1000 * 600; + mSaveTimer.start( msec, true ); // 1 minute + qDebug("KO: Saving File in %d secs!", msec/1000); + mCalendarModifiedFlag = true; +} +void MainWindow::writeAlarm() +{ + if ( mBlockAtStartup ) + return; + //QCopEnvelope e3("koalarm", "-showWN"); + QDateTime nextA ; + QDateTime reference ( QDate( 2000, 1, 1 ) ); + QString summary; + alarmTimer.stop(); + Calendar* cal = mView->calendar(); + if ( ! cal ){ + qDebug("KO: Calendar undefined. No alarm notification"); + return; + } + nextA = cal->nextAlarm( 720 ); + summary = cal->nextSummary(); + qDebug("KO: Next Alarm %s %s", nextA.toString().latin1(), summary.latin1()); + if ( nextA < QDateTime::currentDateTime().addDays( 720-1 ) ) { + KConfig *config = KOGlobals::config(); + config->setGroup("NextSystemAlarm"); + QString date, sum; + date = config->readEntry("TimeDateinSecs", "xxx"); + bool ok = false; + int shsecs = date.toInt(&ok ); + QDateTime scheduledAlarm; + QDateTime eventDateTime = cal->nextAlarmEvent(); + sum = config->readEntry("Summary", "sss"); + if ( ok ) { + scheduledAlarm = reference.addSecs( shsecs ); + //qDebug("sheduledAlarm %s ", scheduledAlarm.toString().latin1()); + if ( scheduledAlarm == nextA && sum == summary ) { + qDebug("KO: Same alarm time+summary - nothing to do! "); + return; + } + } + if ( ok ) { + // delete alarm from system + //qDebug("delete Alarm %s ", scheduledAlarm.toString().latin1()); +#ifndef DESKTOP_VERSION + AlarmServer::deleteAlarm ( scheduledAlarm,"koalarm" , sum.latin1() ); +#endif + } + // add new alarm to system + qDebug("KO: Add Alarm: %s ", nextA.toString().latin1() ); +#ifndef DESKTOP_VERSION + AlarmServer::addAlarm ( nextA,"koalarm", summary.latin1() ); +#endif + // write new alarm to config file + //qDebug("Entry %s %s ", date.latin1(), sum.latin1()); + int secs = reference.secsTo( nextA ); + //qDebug(" secs %d ", secs); + setCaption( i18n("Next Alarm: ")+ nextA.toString() +"-"+summary ); + config->writeEntry("TimeDateinSecs",QString::number ( secs )); + config->writeEntry("Summary",summary); + config->writeEntry("TimeDate",nextA.toString()); + config->writeEntry("WriteDateTime",QDateTime::currentDateTime().toString()); + config->writeEntry("EventStartDateTime",eventDateTime.toString()); + config->writeEntry("SystemNotifyInSecs",QString::number (QDateTime::currentDateTime().secsTo( nextA ) )); + config->sync(); + + } +} +void MainWindow::save() +{ + if ( mBlockSaveFlag ) + return; + + mBlockSaveFlag = true; + QTime neededSaveTime = QDateTime::currentDateTime().time(); + setCaption("KO/Pi:Saving Data to File ..." ); + qDebug("KO: Start saving data to file!"); + mView->saveCalendar( defaultFileName() ); + int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); + qDebug("KO: Needed %d ms for saving.",msNeeded ); + QString savemes; + savemes.sprintf("KO/Pi:File Saved. Needed %d sec, %d ms",(msNeeded/1000)%100,msNeeded%1000 ); + setCaption(savemes); + mCalendarModifiedFlag = false; + mBlockSaveFlag = false; +} + +void MainWindow::keyReleaseEvent ( QKeyEvent * e) +{ + if ( !e->isAutoRepeat() ) { + mFlagKeyPressed = false; + } +} +void MainWindow::keyPressEvent ( QKeyEvent * e ) +{ + qApp->processEvents(); + if ( e->isAutoRepeat() && !mFlagKeyPressed ) { + e->ignore(); + // qDebug(" ignore %d",e->isAutoRepeat() ); + return; + } + if (! e->isAutoRepeat() ) + mFlagKeyPressed = true; + KOPrefs *p = KOPrefs::instance(); + bool showSelectedDates = false; + int size; + //qDebug("MainWindow::keyPressEvent "); + switch ( e->key() ) { + case Qt::Key_Right: + if ( e->state() == Qt::ControlButton ) + mView->goNextMonth(); + else + mView->goNext(); + showSelectedDates = true; + break; + case Qt::Key_Left: + if ( e->state() == Qt::ControlButton ) + mView->goPreviousMonth(); + else + mView->goPrevious(); + showSelectedDates = true; + break; + case Qt::Key_Down: + mView->viewManager()->agendaView()->scrollOneHourDown(); + break; + case Qt::Key_Up: + mView->viewManager()->agendaView()->scrollOneHourUp(); + break; + case Qt::Key_I: + mView->showIncidence(); + break; + case Qt::Key_Delete: + case Qt::Key_Backspace: + mView->deleteIncidence(); + break; + case Qt::Key_D: + mView->viewManager()->showDayView(); + showSelectedDates = true; + break; + case Qt::Key_0: + mView->toggleFilerEnabled( ); + break; + case Qt::Key_1: + mView->selectFilter( 0 ); + break; + case Qt::Key_2: + mView->selectFilter( 1 ); + break; + case Qt::Key_3: + mView->selectFilter( 2 ); + break; + case Qt::Key_4: + mView->selectFilter( 3 ); + break; + case Qt::Key_5: + mView->viewManager()->showWorkWeekView(); + showSelectedDates = true; + break; + case Qt::Key_7: + mView->viewManager()->showWeekView(); + showSelectedDates = true; + break; + case Qt::Key_M: + mView->viewManager()->showMonthView(); + showSelectedDates = true; + break; + case Qt::Key_Insert: + mView->newEvent(); + break; + case Qt::Key_S : + mView->dialogManager()->showSearchDialog(); + break; + case Qt::Key_H : + keyBindings(); + break; + case Qt::Key_W: + mView->viewManager()->showWhatsNextView(); + break; + case Qt::Key_L: + mView->viewManager()->showListView(); + break; + case Qt::Key_N: + mView->viewManager()->showNextXView(); + showSelectedDates = true; + break; + case Qt::Key_V: + mView->viewManager()->showTodoView(); + break; + case Qt::Key_C: + mView->goNext(); + showSelectedDates = true; + break; + case Qt::Key_P: + mView->showDatePicker( ); + break; + case Qt::Key_F: + mView->toggleFilter(); + break; + case Qt::Key_X: + mView->goPrevious(); + showSelectedDates = true; + break; + case Qt::Key_Space: + mView->toggleExpand(); + break; + case Qt::Key_A: + mView->toggleAllDaySize(); + break; + case Qt::Key_T: + if ( e->state() == Qt::ControlButton ) + mView->newTodo(); + else { + mView->goToday(); + showSelectedDates = true; + } + break; + case Qt::Key_J: + mView->viewManager()->showJournalView(); + break; + case Qt::Key_Return: + case Qt::Key_E: + if ( e->state() == Qt::ControlButton ) + mView->newEvent(); + else + mView->editIncidence(); + break; + case Qt::Key_Plus: + size = p->mHourSize +2; + if ( size <= 18 ) + configureAgenda( size ); + break; + case Qt::Key_Minus: + size = p->mHourSize - 2; + if ( size >= 4 ) + configureAgenda( size ); + break; + + + default: + e->ignore(); + } + + if ( showSelectedDates ) { + ;// setCaptionToDates(); + } + +} + +void MainWindow::configureToolBar( int item ) +{ + + configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); + KOPrefs *p = KOPrefs::instance(); + p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); + p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); + p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); + p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); + p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); + p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); + p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); + p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); + p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); + p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); + p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); + p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); + p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); + p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); + p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); + p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); + p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); + p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); + p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); + initActions(); +} + +void MainWindow::setCaptionToDates() +{ + QString selDates; + selDates = mView->startDate().toString(); + if (mView->startDate() < mView->endDate() ) + selDates += " - " + mView->endDate().toString(); + setCaption( "Dates: " + selDates ); + +} +// parameter item == 0: reinit +void MainWindow::configureAgenda( int item ) +{ + + KOPrefs *p = KOPrefs::instance(); + + int i; + if ( item == 1 ) { + mView->toggleAllDaySize(); + return; + } + // do not allow 4 for widgets higher than 480 + if ( QApplication::desktop()->height() > 480 ) { + if ( item == 4 ) + item = 6; + } + for ( i = 4; i <= 18; i= i+2 ) + configureAgendaMenu->setItemChecked( i, false ); + configureAgendaMenu->setItemChecked( item, true ); + if ( p->mHourSize == item ) + return; + p->mHourSize=item; + mView->viewManager()->agendaView()->updateConfig(); +} + +void MainWindow::saveCalendar() +{ + QString fn = KOPrefs::instance()->mLastSaveFile; + fn = KFileDialog::getSaveFileName( fn, "Save backup filename", this ); + + if ( fn == "" ) + return; + QFileInfo info; + info.setFile( fn ); + QString mes; + bool createbup = true; + if ( info. exists() ) { + mes.sprintf( "Backup file\nalready exists!\nOld backup file from:\n%s\nOverwrite?\n",info.lastModified ().toString().latin1() ); + int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes, + "Overwrite!", "Cancel", 0, + 0, 1 ); + if ( result != 0 ) { + createbup = false; + } + } + if ( createbup ) { + mView->saveCalendar( fn ); + mes.sprintf("KO/Pi:Saved %s",fn.latin1() ); + KOPrefs::instance()->mLastSaveFile = fn; + setCaption(mes); + } +} +void MainWindow::loadCalendar() +{ + + QString fn = KOPrefs::instance()->mLastLoadFile; + fn = KFileDialog::getOpenFileName( fn, "Load backup filename", this ); + + if ( fn == "" ) + return; + QFileInfo info; + info.setFile( fn ); + QString mess; + bool loadbup = true; + if ( info. exists() ) { + mess.sprintf( "Backup file from:\n%s\nLoading backup\nfile will delete\nyour current Data!\n",info.lastModified ().toString().latin1() ); + int result = QMessageBox::warning( this, "KO/Pi: Warning!", + mess, + "Load!", "Cancel", 0, + 0, 1 ); + if ( result != 0 ) { + loadbup = false; + } + } else { + QMessageBox::warning( this, "KO/Pi: Warning!", + "Backup file\ndoes not exist!\n" + "Nothing loaded!", 0, 0, + 0, 1 ); + + return; + } + if ( loadbup ) { + mView->openCalendar( fn ); + KOPrefs::instance()->mLastLoadFile = fn; + mess.sprintf("KO/Pi:Loaded %s",fn.latin1() ); + setCaption(mess); + } + +} +void MainWindow::quickImportIcal() +{ + importFile( KOPrefs::instance()->mLastImportFile, false ); +} +void MainWindow::importFile( QString fn, bool quick ) +{ + QFileInfo info; + info.setFile( fn ); + QString mess; + bool loadbup = true; + if ( !info. exists() ) { + mess= "Import file \n..."+fn.right( 30)+ "\ndoes not exist!\nNothing imported!\n"; + int result = QMessageBox::warning( this, "KO/Pi: Warning!", + mess ); + return; + } + int result = 0; + if ( !quick ) { + mess.sprintf( "Import file \n..."+fn.right( 25)+"\nfrom:\n%s\nDuplicated entries\nwill not be imported!\n",info.lastModified ().toString().latin1() ); + result = QMessageBox::warning( this, "KO/Pi: Warning!", + mess, + "Import", "Cancel", 0, + 0, 1 ); + } + if ( result == 0 ) { + if ( mView->openCalendar( fn, true )) { + KOPrefs::instance()->mLastImportFile = fn; + setCaption(i18n(" ")); + setCaption(i18n("Imported file successfully")); + } else { + setCaption(i18n("Error importing file")); + } + } +} +void MainWindow::importIcal() +{ + + QString fn =KOPrefs::instance()->mLastImportFile; + + fn =KFileDialog:: getOpenFileName( fn, "Import filename(*.ics/*.vcs)", this ); + if ( fn == "" ) + return; + importFile( fn, true ); + +} + +void MainWindow::exportVCalendar() +{ + QString fn = KOPrefs::instance()->mLastVcalFile; + fn = KFileDialog::getSaveFileName( fn, "Export vcal filename(*.vcs)", this ); + if ( fn == "" ) + return; + QFileInfo info; + info.setFile( fn ); + QString mes; + bool createbup = true; + if ( info. exists() ) { + mes.sprintf( i18n("Save file\nalready exists!\nOld save file from:\n%s\nOverwrite?\n"),info.lastModified ().toString().latin1() ); + int result = QMessageBox::warning( this, "KO/Pi: Warning!",mes, + "Overwrite!", "Cancel", 0, + 0, 1 ); + if ( result != 0 ) { + createbup = false; + } + } + if ( createbup ) { + if ( mView->exportVCalendar( fn ) ) { + KOPrefs::instance()->mLastVcalFile = fn; + if ( fn.length() > 20 ) + mes.sprintf(i18n("KO/Pi:Exported to ...%s"),(fn.right(20)).latin1() ); + else + mes.sprintf(i18n("KO/Pi:Exported to %s"),fn.latin1() ); + setCaption(mes); + } + } + +} + +QString MainWindow::getPassword( ) +{ + QString retfile = ""; + QDialog dia ( this, "input-dialog", true ); + QLineEdit lab ( &dia ); + lab.setEchoMode( QLineEdit::Password ); + QVBoxLayout lay( &dia ); + lay.setMargin(7); + lay.setSpacing(7); + lay.addWidget( &lab); + dia.setFixedSize( 230,50 ); + dia.setCaption( i18n("Input password") ); + dia.show(); + int res = dia.exec(); + if ( res ) + retfile = lab.text(); + return retfile; + +} +#ifndef _WIN32_ +#include <unistd.h> +#endif +void MainWindow::syncLocalFile() +{ + + QString fn =KOPrefs::instance()->mLastSyncedLocalFile; + + fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); + if ( fn == "" ) + return; + syncWithFile( fn, false ); + +} + +void MainWindow::syncWithFile( QString fn , bool quick ) +{ + QFileInfo info; + info.setFile( fn ); + QString mess; + bool loadbup = true; + if ( !info. exists() ) { + mess.sprintf( i18n( "Sync file \n...%s\ndoes not exist!\nNothing synced!\n"),fn.right( 30).latin1() ); + int result = QMessageBox::warning( this, "KO/Pi: Warning!", + mess ); + return; + } + int result = 0; + if ( !quick ) { + mess.sprintf( "Sync with file \n..."+fn.right( 25)+"\nfrom:\n%s\n",info.lastModified ().toString().latin1() ); + result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), + mess, + i18n("Sync"), i18n("Cancel"), 0, + 0, 1 ); + } + if ( KOPrefs::instance()->mAskForPreferences ) + mView->edit_sync_options(); + if ( result == 0 ) { + qDebug("Now sycing ... "); + mView->syncCalendar( fn, true ); + if ( ! quick ) + KOPrefs::instance()->mLastSyncedLocalFile = fn; + } + +} + +void MainWindow::quickSyncLocalFile() +{ + qDebug("quickSyncLocalFile() "); + syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ); +} + +void MainWindow::syncSSH() +{ + QTime timer; + timer.start(); + qDebug("MainWindow::syncssh() "); + KOPrefs *p = KOPrefs::instance(); + QString localFile = p->mLocalTempFile; + QString remoteIP = p->mRemoteIP; + QString remoteUser = p->mRemoteUser; + QString remoteFile = p->mRemoteFile; + if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 ) + remoteUser += ":" + p->mRemotePassWd; + + QString question = i18n("Do you really want\nto remote sync?\n \n") + + i18n("IP: " ) +remoteIP +"\n" + + i18n("User: " ) + remoteUser +"\n" ; + int maxlen = 30; + if ( QApplication::desktop()->width() > 320 ) + maxlen += 25; + if ( remoteFile.length() > maxlen ) + question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n"; + else + question += i18n("Remote file:\n " ) + remoteFile +"\n"; + if ( localFile.length() > maxlen ) + question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n"; + else + question += i18n("Local temp file:\n " ) + localFile +"\n"; + + if ( QMessageBox::information( this, "KO/Pi Sync", + question, + i18n("Yes"), i18n("No"), + 0, 0 ) != 0 ) + return; + if ( !p->mUsePassWd ) { + QString pass = getPassword(); + if ( pass.length() > 0 ) + remoteUser += ":" + pass; + } + QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile; + setCaption ( i18n( "Copy remote file to local machine..." ) ); + int fileSize = 0; + int result = system ( command ); + // 0 : okay + // 256: no such file or dir + // + qDebug("KO: Remote copy result(0 = okay): %d ",result ); + if ( result != 0 ) { + int len = maxlen; + while ( len < command.length() ) { + command.insert( len , "\n" ); + len += maxlen +2; + } + question = i18n("Sorry, the copy command failed!\nCommand was:\n") + command + "\n \nTry command on console to get more\ndetailed info about the reason.\n"; + QMessageBox::information( this, "KO/Pi Sync - ERROR", + question, + i18n("Okay!")) ; + return; + } + + + setCaption ( i18n( "Copying succeed. Syncing not yet implemented" ) ); + syncWithFile(localFile , true ); + return; +#if 0 + system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics"); + while ( timer.elapsed() < 5000 ) + qApp->processEvents(); + + qDebug("MainWindow::merging) "); + mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 ); + while ( mBlockSaveFlag ) + qApp->processEvents(); + save(); + system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics"); +#endif + +} +*/ + |