00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <kdialog.h>
00022 #include <klocale.h>
00023
00024 #include <tqlabel.h>
00025 #include <tqlayout.h>
00026 #include <tqpushbutton.h>
00027
00028 #include "addresseediffalgo.h"
00029 #include "genericdiffalgo.h"
00030 #include "htmldiffalgodisplay.h"
00031 #include "memberinfo.h"
00032
00033 #include "singleconflictdialog.h"
00034
00035 SingleConflictDialog::SingleConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent )
00036 : ConflictDialog( mapping, parent ), mDiffAlgo( 0 )
00037 {
00038 initGUI();
00039
00040 TQString format = mapping.changeAt( 0 ).objectFormatName();
00041 QSync::SyncChange leftChange = mapping.changeAt( 0 );
00042 QSync::SyncChange rightChange = mapping.changeAt( 1 );
00043
00044 if ( format == "file" ) {
00045 mDiffAlgo = new KSync::GenericDiffAlgo( leftChange.data(), rightChange.data() );
00046 } else if ( format == "vcard" ) {
00047 } else if ( format == "calendar" ) {
00048 } else if ( format == "xml-contact" ) {
00049 mDiffAlgo = new KSync::AddresseeDiffAlgo( leftChange.data(), rightChange.data() );
00050 }
00051
00052 MemberInfo miLeft( leftChange.member() );
00053 mDiffAlgoDisplay->setLeftSourceTitle( miLeft.name() );
00054 MemberInfo miRight( rightChange.member() );
00055 mDiffAlgoDisplay->setRightSourceTitle( miRight.name() );
00056
00057 if ( mDiffAlgo ) {
00058 mDiffAlgo->addDisplay( mDiffAlgoDisplay );
00059 mDiffAlgo->run();
00060 }
00061 }
00062
00063 SingleConflictDialog::~SingleConflictDialog()
00064 {
00065 delete mDiffAlgo;
00066 mDiffAlgo = 0;
00067 }
00068
00069 void SingleConflictDialog::useFirstChange()
00070 {
00071 mMapping.solve( mMapping.changeAt( 0 ) );
00072
00073 accept();
00074 }
00075
00076 void SingleConflictDialog::useSecondChange()
00077 {
00078 mMapping.solve( mMapping.changeAt( 1 ) );
00079
00080 accept();
00081 }
00082
00083 void SingleConflictDialog::duplicateChange()
00084 {
00085 mMapping.duplicate();
00086
00087 accept();
00088 }
00089
00090 void SingleConflictDialog::ignoreChange()
00091 {
00092 mMapping.ignore();
00093
00094 accept();
00095 }
00096
00097 void SingleConflictDialog::initGUI()
00098 {
00099 TQGridLayout *layout = new TQGridLayout( this, 3, 4, KDialog::marginHint(), KDialog::spacingHint() );
00100
00101 layout->addMultiCellWidget( new TQLabel( i18n( "A conflict has appeared, please solve it manually." ), this ), 0, 0, 0, 3 );
00102 mDiffAlgoDisplay = new KSync::HTMLDiffAlgoDisplay( this );
00103
00104 layout->addMultiCellWidget( mDiffAlgoDisplay, 1, 1, 0, 3 );
00105
00106 TQPushButton *button = new TQPushButton( i18n( "Use Item" ), this );
00107 connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( useFirstChange() ) );
00108 layout->addWidget( button, 2, 0 );
00109
00110 button = new TQPushButton( i18n( "Duplicate Items" ), this );
00111 connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( duplicateChange() ) );
00112 layout->addWidget( button, 2, 1 );
00113
00114 button = new TQPushButton( i18n( "Ignore Conflict" ), this );
00115 connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( ignoreChange() ) );
00116 layout->addWidget( button, 2, 2 );
00117
00118 button = new TQPushButton( i18n( "Use Item" ), this );
00119 connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( useSecondChange() ) );
00120 layout->addWidget( button, 2, 3 );
00121 }
00122
00123 #include "singleconflictdialog.moc"