[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/kmail
From:       Edwin Schepers <yez () familieschepers ! nl>
Date:       2007-11-30 22:51:30
Message-ID: 1196463090.059105.11540.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 743430 by eschepers:

first part of fixing sending html messages


 M  +35 -0     kmcomposereditor.cpp  
 M  +11 -0     kmcomposereditor.h  
 M  +73 -27    kmcomposewin.cpp  
 M  +11 -2     kmcomposewin.h  
 M  +1 -1      messagecomposer.cpp  


--- trunk/KDE/kdepim/kmail/kmcomposereditor.cpp #743429:743430
@@ -147,5 +147,40 @@
   return temp;
 }
 
+void KMComposerEditor::setHtmlMode(bool mode) {
+  if ( mHtmlMode ) {
+    mHtmlMode = true;
+      // set all highlighted text caused by spelling back to black
+      int paraFrom, indexFrom, paraTo, indexTo;
+      // for the case we're in textmode, the user selects some text and decides to \
format this selected text +      int startpos = textCursor().selectionStart();
+      //int endpos = selectionEnd();
+      selectAll();
 
+      setTextColor(QColor(0,0,0));
+
+      textCursor().setPosition( startpos, QTextCursor::MoveAnchor );
+      document()->setModified(true);
+  }
+  else {
+    mHtmlMode = false;
+    // like the next 2 lines, or should we selectAll and apply the default font?
+    QString text = toPlainText();
+    setPlainText(text);
+    document()->setModified(true);
+  }
+
+}
+
+bool KMComposerEditor::htmlMode() {
+  return mHtmlMode;
+}
+
+QString KMComposerEditor::text() {
+  if ( mHtmlMode )
+    return toHtml();
+  else
+    return toPlainText();
+}
+
 #include "kmcomposereditor.moc"
--- trunk/KDE/kdepim/kmail/kmcomposereditor.h #743429:743430
@@ -42,9 +42,20 @@
     virtual QString quotePrefixName() const;
     virtual QString smartQuote( const QString & msg );
     QString brokenText() const;
+
+  /**
+   * set html mode
+   */
+  void setHtmlMode(bool mode);
+  bool htmlMode();
+  /**
+   * Depending on htmlMode, return the text as Html or plain text
+   */
+  QString text();
     
   private:
      KMComposeWin *m_composerWin;
+     bool mHtmlMode;
   protected:
      void dropEvent( QDropEvent *e );
   signals:
--- trunk/KDE/kdepim/kmail/kmcomposewin.cpp #743429:743430
@@ -147,7 +147,7 @@
     mAttachMenu( 0 ),
     mSigningAndEncryptionExplicitlyDisabled( false ),
     mFolder( 0 ),
-    mUseHTMLEditor( false ),
+    mUserUsesHtml( false ),
     mId( id ),
     mAttachPK( 0 ), mAttachMPK( 0 ),
     mAttachRemoveAction( 0 ), mAttachSaveAction( 0 ), mAttachPropertiesAction( 0 ),
@@ -222,7 +222,6 @@
   mSplitter->setOpaqueResize( true );
 
   //mEditor->initializeAutoSpellChecking();
-  mEditor->setTextFormat( Qt::PlainText );
   mEditor->setAcceptDrops( true );
 
   mBtnIdentity->setWhatsThis(
@@ -454,7 +453,7 @@
 //-----------------------------------------------------------------------------
 void KMComposeWin::setBody( const QString &body )
 {
-  mEditor->setText( body );
+  mEditor->setPlainText(body);
 }
 
 //-----------------------------------------------------------------------------
@@ -1284,7 +1283,7 @@
   actionCollection()->addAction("text_list", listAction );
 
   connect(listAction, SIGNAL(applyStyle(QTextListFormat::Style)),
-           mEditor,SLOT(slotChangeParagStyle(QTextListFormat::Style)));
+           SLOT(slotChangeParagStyle(QTextListFormat::Style)));
 
   fontAction = new KFontAction(i18n("Select Font"), this);
   actionCollection()->addAction("text_font", fontAction );
@@ -1297,25 +1296,25 @@
 
   alignLeftAction = new KToggleAction( KIcon( "text-left" ), i18n("Align Left"), \
this );  actionCollection()->addAction( "align_left", alignLeftAction );
-  connect( alignLeftAction, SIGNAL(triggered(bool)), mEditor, SLOT(slotAlignLeft()) \
); +  connect( alignLeftAction, SIGNAL(triggered(bool)), SLOT(slotAlignLeft()) );
   alignLeftAction->setChecked( true );
   alignRightAction = new KToggleAction( KIcon( "text-right" ), i18n("Align Right"), \
this );  actionCollection()->addAction( "align_right", alignRightAction );
-  connect( alignRightAction, SIGNAL(triggered(bool) ), \
mEditor,SLOT(slotAlignRight()) ); +  connect( alignRightAction, \
SIGNAL(triggered(bool) ), SLOT(slotAlignRight()) );  alignCenterAction = new \
KToggleAction( KIcon( "text-center" ), i18n("Align Center"), this );  \
                actionCollection()->addAction( "align_center", alignCenterAction );
-  connect( alignCenterAction, SIGNAL(triggered(bool) ), \
mEditor,SLOT(slotAlignCenter()) ); +  connect( alignCenterAction, \
SIGNAL(triggered(bool) ), SLOT(slotAlignCenter()) );  textBoldAction = new \
KToggleAction( KIcon( "format-text-bold" ), i18n("&Bold"), this );  \
                actionCollection()->addAction( "text_bold", textBoldAction );
-  connect( textBoldAction, SIGNAL(triggered(bool) ),mEditor, \
SLOT(slotTextBold(bool))); +  connect( textBoldAction, SIGNAL(triggered(bool) ), \
SLOT(slotTextBold(bool)));  textBoldAction->setShortcut( QKeySequence( Qt::CTRL + \
Qt::Key_B ) );  textItalicAction = new KToggleAction( KIcon( "format-text-italic" ), \
i18n("&Italic"), this );  actionCollection()->addAction( "text_italic", \
                textItalicAction );
-  connect( textItalicAction, SIGNAL(triggered(bool) ), \
mEditor,SLOT(slotTextItalic(bool)) ); +  connect( textItalicAction, \
SIGNAL(triggered(bool) ), SLOT(slotTextItalic(bool)) );  \
textItalicAction->setShortcut( QKeySequence( Qt::CTRL + Qt::Key_I ) );  \
textUnderAction = new KToggleAction( KIcon( "format-text-underline" ), \
i18n("&Underline"), this );  actionCollection()->addAction( "text_under", \
                textUnderAction );
-  connect( textUnderAction, SIGNAL(triggered(bool) ), \
mEditor,SLOT(slotTextUnder(bool)) ); +  connect( textUnderAction, \
SIGNAL(triggered(bool) ), SLOT(slotTextUnder(bool)) );  textUnderAction->setShortcut( \
QKeySequence( Qt::CTRL + Qt::Key_U ) );  actionFormatReset = new KAction( KIcon( \
"eraser" ), i18n("Reset Font Settings"), this );  actionCollection()->addAction( \
"format_reset", actionFormatReset ); @@ -3482,12 +3481,16 @@
   connect( this, SIGNAL( applyChangesDone( bool ) ),
            SLOT( slotContinueDoSend( bool ) ) );
 
-  if ( mEditor->textFormat() == Qt::RichText ) {
+  if ( mEditor->htmlMode() ) {
+ kDebug(5006) <<"Html mode";
+ kDebug(5006) <<"mailtext : " << mEditor->text();
     mMsg->setHeaderField( "X-KMail-Markup", "true" );
   } else {
     mMsg->removeHeaderField( "X-KMail-Markup" );
+ kDebug(5006) <<"Plain text";
+ kDebug(5006) <<"mailtext : " << mEditor->text();
   }
-  if ( mEditor->textFormat() == Qt::RichText && inlineSigningEncryptionSelected() ) \
{ +  if ( mEditor->htmlMode() && inlineSigningEncryptionSelected() ) {
     QString keepBtnText = mEncryptAction->isChecked() ?
       mSignAction->isChecked() ? i18n( "&Keep markup, do not sign/encrypt" )
       : i18n( "&Keep markup, do not encrypt" )
@@ -3811,27 +3814,25 @@
 void KMComposeWin::toggleMarkup( bool markup )
 {
   if ( markup ) {
-    if ( !mUseHTMLEditor ) {
-      kDebug(5006) <<"setting RichText editor";
-      mUseHTMLEditor = true; // set it directly to true. setColor hits another \
toggleMarkup +    if ( !mUserUsesHtml ) {
+      kDebug(5006) <<"user wants Html";
+      mUserUsesHtml = true; // set it directly to true. setColor hits another \
toggleMarkup  mHtmlMarkup = true;
       QTextCursor cursor = mEditor->textCursor();
       // set all highlighted text caused by spelling back to black
       int startSelect = cursor.selectionStart ();
       int endSelect = cursor.selectionEnd();
 
-      mEditor->selectAll();
-      // save the buttonstates because setColor calls fontChanged
+      // save the buttonstates because setHtmlMode calls fontChanged
       bool _bold = textBoldAction->isChecked();
       bool _italic = textItalicAction->isChecked();
-      mEditor->setColor( QColor( 0, 0, 0 ) );
+      //mEditor->setColor( QColor( 0, 0, 0 ) );
+      mEditor->setHtmlMode(true);
       textBoldAction->setChecked( _bold );
       textItalicAction->setChecked( _italic );
       //Laurent fix me
       //mEditor->setSelection ( paraFrom, indexFrom, paraTo, indexTo );
 
-      mEditor->setTextFormat( Qt::RichText );
-      mEditor->document()->setModified( true );
       markupAction->setChecked( true );
       toolBar( "htmlToolBar" )->show();
       //mEditor->deleteAutoSpellChecking();
@@ -3842,12 +3843,10 @@
     kDebug(5006) <<"setting PlainText editor";
     mHtmlMarkup = false;
     toolBar( "htmlToolBar" )->hide();
-    if ( mUseHTMLEditor ) { // it was turned on
-      mUseHTMLEditor = false;
-      mEditor->setTextFormat( Qt::PlainText );
-      QString text = mEditor->text();
-      mEditor->setText( text ); // otherwise the text still looks formatted
-      mEditor->document()->setModified( true );
+    if ( mUserUsesHtml ) { // it was turned on
+      mUserUsesHtml = false;
+      mEditor->switchTextMode( false );
+      // like the next 2 lines, or should we selectAll and apply the default font?
       slotAutoSpellCheckingToggled( true );
     }
   }
@@ -4014,7 +4013,7 @@
          (GlobalSettings::self()->autoTextSignature() == "auto") ) {
       edtText.append( mOldSigText );
     }
-    mEditor->setText( edtText );
+    mEditor->setPlainText( edtText ); //yes?, plain?
   }
 
   // disable certain actions if there is no PGP user identity set
@@ -4202,7 +4201,29 @@
   mAlwaysSend = bAlways;
 }
 
+void KMComposeWin::slotChangeParagStyle(QTextListFormat::Style style)
+{
+ toggleMarkup(true);
+ mEditor->slotChangeParagStyle(style);
+}
+void KMComposeWin::slotAlignLeft()
+{
+ toggleMarkup(true);
+ mEditor->slotAlignLeft();
+}
 
+void KMComposeWin::slotAlignCenter()
+{
+ toggleMarkup(true);
+ mEditor->slotAlignCenter();
+}
+
+void KMComposeWin::slotAlignRight()
+{
+ toggleMarkup(true);
+ mEditor->setAlignment( Qt::AlignRight );
+}
+
 void KMComposeWin::slotFontAction( const QString &font )
 {
   toggleMarkup( true );
@@ -4215,6 +4236,31 @@
   mEditor->slotFontSizeChanged( size );
 }
 
+void KMComposeWin::slotTextBold(bool bold)
+{
+  toggleMarkup(true);
+  mEditor->slotTextBold(bold);
+}
+
+void KMComposeWin::slotTextItalic(bool italic)
+{
+ toggleMarkup(true);
+ mEditor->slotTextItalic( italic );
+}
+
+void KMComposeWin::slotTextUnder(bool under)
+{
+ toggleMarkup(true);
+ mEditor->slotTextUnder(under);
+}
+
+void KMComposeWin::slotTextColor()
+{
+  // also if user cancels the dialog, html is turned on for now
+  toggleMarkup(true);
+  mEditor->slotTextColor();
+}
+
 void KMComposeWin::slotFormatReset()
 {
   mEditor->setColor( mForeColor );
--- trunk/KDE/kdepim/kmail/kmcomposewin.h #743429:743430
@@ -34,6 +34,7 @@
 #include <QList>
 #include <QPalette>
 #include <QPointer>
+#include <QTextListFormat>
 
 #include <kglobalsettings.h>
 #include "kleo/enum.h"
@@ -430,7 +431,15 @@
      */
     void slotAttachFileData( KIO::Job *, const QByteArray & );
     void slotAttachFileResult( KJob * );
+    void slotChangeParagStyle(QTextListFormat::Style style);
     void slotFontAction( const QString & );
+    void slotAlignLeft();
+    void slotAlignCenter();
+    void slotAlignRight();
+    void slotTextBold(bool bold);
+    void slotTextItalic(bool italic);
+    void slotTextUnder(bool under);
+    void slotTextColor();
     void slotSizeAction( int );
     void fontChanged( const QFont & );
     void alignmentChanged( int );
@@ -675,8 +684,8 @@
     bool mConfirmSend;
     bool mDisableBreaking; // Move
     int mNumHeaders;
-    bool mUseHTMLEditor;
-    bool mHtmlMarkup;
+    bool mUserUsesHtml;
+    bool mHtmlMarkup; // is the toolbar visible or not
     QFont mBodyFont, mFixedFont;
     QList<KTemporaryFile*> mAtmTempList;
     QPalette mPalette;
--- trunk/KDE/kdepim/kmail/messagecomposer.cpp #743429:743430
@@ -555,7 +555,7 @@
 
   mEncryptWithChiasmus = mComposeWin->mEncryptWithChiasmus;
 
-  mIsRichText = mComposeWin->mEditor->textFormat() == Qt::RichText;
+  mIsRichText = mComposeWin->mEditor->htmlMode();
   mIdentityUid = mComposeWin->identityUid();
   mText = breakLinesAndApplyCodec();
   // Hopefully we can get rid of this eventually, it's needed to be able


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic