kontact Library API Documentation

summarywidget.cpp

00001 /* 00002 This file is part of Kontact. 00003 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 00004 Copyright (C) 2004 Reinhold Kainhofer <reinhold@kainhofer.com> 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00019 00020 As a special exception, permission is given to link this program 00021 with any edition of Qt, and distribute the resulting executable, 00022 without including the source code for Qt in the source distribution. 00023 */ 00024 00025 #include <qimage.h> 00026 #include <qlabel.h> 00027 #include <qlayout.h> 00028 #include <qtooltip.h> 00029 #include <qfile.h> 00030 #include <qlabel.h> 00031 #include <qtextedit.h> 00032 #include <qvbox.h> 00033 00034 #include <dcopclient.h> 00035 #include <dcopref.h> 00036 #include <kapplication.h> 00037 #include <kdebug.h> 00038 #include <kglobal.h> 00039 #include <kglobalsettings.h> 00040 #include <kiconloader.h> 00041 #include <klocale.h> 00042 #include <kurllabel.h> 00043 #include <kdialogbase.h> 00044 #include <kmessagebox.h> 00045 00046 #include "pilotDaemonDCOP_stub.h" 00047 00048 #include <ktextedit.h> 00049 00050 //#include "pilotDaemonDCOP_stub.h" 00051 #include "summarywidget.h" 00052 00053 SummaryWidget::SummaryWidget( QWidget *parent, const char *name ) 00054 : Kontact::Summary( parent, name ), 00055 DCOPObject( "KPilotSummaryWidget" ), 00056 mDCOPSuccess(false), 00057 mStartedDaemon(false), 00058 mShouldStopDaemon(true) 00059 { 00060 mLayout = new QGridLayout( this ); 00061 00062 int row=0; 00063 QPixmap icon = KGlobal::iconLoader()->loadIcon( "kpilot", KIcon::Desktop, KIcon::SizeMedium ); 00064 QWidget *header = createHeader( this, icon, i18n( "KPilot Information" ) ); 00065 mLayout->addMultiCellWidget( header, row,row, 0,3 ); 00066 00067 // Last sync information 00068 row++; 00069 mLayout->addWidget( new QLabel( i18n("<i>Last sync:</i>"), this), row, 0 ); 00070 mSyncTimeLabel = new QLabel( i18n("No information available" ), this ); 00071 mLayout->addWidget( mSyncTimeLabel, row, 1 ); 00072 mShowSyncLogLabel = new KURLLabel( "", i18n("[log]"), this ); 00073 mLayout->addWidget( mShowSyncLogLabel, row, 3 ); 00074 connect( mShowSyncLogLabel, SIGNAL( leftClickedURL( const QString& ) ), 00075 this, SLOT( showSyncLog( const QString& ) ) ); 00076 00077 // User 00078 row++; 00079 mLayout->addWidget( new QLabel( i18n("<i>User:</i>"), this), row, 0); 00080 mPilotUserLabel = new QLabel( i18n("Unknown"), this ); 00081 mLayout->addMultiCellWidget( mPilotUserLabel, row, row, 1,3 ); 00082 00083 // Device information 00084 row++; 00085 mLayout->addWidget( new QLabel( i18n("<i>Device:</i>"), this), row, 0 ); 00086 mPilotDeviceLabel = new QLabel( i18n("Unknown"), this ); 00087 mLayout->addMultiCellWidget( mPilotDeviceLabel, row, row, 1,3 ); 00088 00089 // Status 00090 row++; 00091 mLayout->addWidget( new QLabel( i18n("<i>Status:</i>"), this), row, 0); 00092 mDaemonStatusLabel = new QLabel( i18n("No communication with the daemon possible"), this ); 00093 mLayout->addMultiCellWidget( mDaemonStatusLabel, row, row, 1,3 ); 00094 00095 // Conduits: 00096 row++; 00097 QLabel *l = new QLabel( i18n("<i>Conduits:</i>"), this ); 00098 l->setAlignment(AlignAuto | AlignTop | ExpandTabs); 00099 mLayout->addWidget( l, row, 0 ); 00100 mConduitsLabel = new QLabel( i18n("No information available"), this ); 00101 mConduitsLabel->setAlignment( mConduitsLabel->alignment()|Qt::WordBreak ); 00102 mLayout->addMultiCellWidget( mConduitsLabel, row,row, 1,3 ); 00103 00104 // mLayout->addStretch( 1 ); 00105 // mLayout->addWidget( new QSpacerItem( 1, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); 00106 00107 QString error; 00108 QCString appID; 00109 00110 if ( !kapp->dcopClient()->isApplicationRegistered( "kpilotDaemon" ) ) { 00111 if ( !KApplication::startServiceByDesktopName( "kpilotDaemon", QString( "--fail-silently" ), 00112 &error, &appID ) ) { 00113 kdDebug(5602) << "No service available..." << endl; 00114 mStartedDaemon = true; 00115 } 00116 } 00117 00118 connectDCOPSignal( 0, 0, "kpilotDaemonStatusChanged()", "refresh()", false ); 00119 refresh(); 00120 } 00121 00122 SummaryWidget::~SummaryWidget() 00123 { 00124 if (mStartedDaemon && mShouldStopDaemon) 00125 { 00126 PilotDaemonDCOP_stub dcopToDaemon( "kpilotDaemon", "KPilotDaemonIface" ); 00127 dcopToDaemon.quitNow(); // ASYNC, always succeeds. 00128 } 00129 } 00130 00131 QStringList SummaryWidget::configModules() const 00132 { 00133 QStringList modules; 00134 modules << "kpilot_config.desktop"; 00135 return modules; 00136 } 00137 00138 void SummaryWidget::refresh( ) 00139 { 00140 PilotDaemonDCOP_stub dcopToDaemon( "kpilotDaemon", "KPilotDaemonIface" ); 00141 mDCOPSuccess = true; 00142 00143 mLastSyncTime = dcopToDaemon.lastSyncDate(); 00144 // check if that dcop call was successful 00145 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00146 00147 mDaemonStatus = dcopToDaemon.shortStatusString(); 00148 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00149 00150 mConduits = dcopToDaemon.configuredConduitList(); 00151 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00152 00153 mSyncLog = dcopToDaemon.logFileName(); 00154 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00155 00156 mUserName = dcopToDaemon.userName(); 00157 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00158 00159 mPilotDevice = dcopToDaemon.pilotDevice(); 00160 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00161 00162 mShouldStopDaemon = dcopToDaemon.killDaemonOnExit(); 00163 mDCOPSuccess = mDCOPSuccess && dcopToDaemon.ok(); 00164 00165 updateView(); 00166 } 00167 00168 00169 void SummaryWidget::updateView() 00170 { 00171 if (mDCOPSuccess) 00172 { 00173 if ( mLastSyncTime.isValid() ) { 00174 mSyncTimeLabel->setText( mLastSyncTime.toString(Qt::LocalDate) ); 00175 } else { 00176 mSyncTimeLabel->setText( i18n("No information available") ); 00177 } 00178 if (!mSyncLog.isEmpty()) { 00179 mShowSyncLogLabel->setEnabled(true); 00180 mShowSyncLogLabel->setURL( mSyncLog ); 00181 } else { 00182 mShowSyncLogLabel->setEnabled(false); 00183 } 00184 mPilotUserLabel->setText( (mUserName.isEmpty())?i18n("unknown"):mUserName ); 00185 mPilotDeviceLabel->setText( (mPilotDevice.isEmpty())?i18n("unknown"):mPilotDevice ); 00186 mDaemonStatusLabel->setText( mDaemonStatus ); 00187 mConduitsLabel->setText( mConduits.join(", ") ); 00188 } 00189 else 00190 { 00191 mSyncTimeLabel->setText( i18n("No information available (Daemon not running?)" ) ); 00192 mShowSyncLogLabel->setEnabled(false); 00193 mPilotUserLabel->setText( i18n("unknown" ) ); 00194 mPilotDeviceLabel->setText( i18n("unknown" ) ); 00195 mDaemonStatusLabel->setText( i18n("No communication with the daemon possible") ); 00196 mConduitsLabel->setText( i18n("No information available") ); 00197 } 00198 } 00199 00200 void SummaryWidget::showSyncLog( const QString &filename ) 00201 { 00202 KDialogBase dlg( this, 0, true, QString::null, KDialogBase::Ok, KDialogBase::Ok ); 00203 dlg.setCaption( i18n("KPilot HotSync Log") ); 00204 QTextEdit *edit = new QTextEdit( dlg.makeVBoxMainWidget() ); 00205 edit->setReadOnly(TRUE); 00206 00207 00208 QFile f(filename); 00209 if (!f.open(IO_ReadOnly)) 00210 { 00211 KMessageBox::error( this, i18n("Unable to open Hotsync log %1.").arg(filename) ); 00212 return; 00213 } 00214 00215 QTextStream s(&f); 00216 while (!s.eof()) edit->append(s.readLine()); 00217 00218 edit->moveCursor(QTextEdit::MoveHome, false); 00219 00220 f.close(); 00221 00222 dlg.setInitialSize( QSize( 400, 350) ); 00223 dlg.exec(); 00224 } 00225 #include "summarywidget.moc"
KDE Logo
This file is part of the documentation for kontact Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:19:36 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003