OSDN Git Service

>>309, refactoring, external board writing, create new thread.
[kita/kita.git] / kita / src / kitawritetabwidget.cpp
index 0bc1d45..b1dd618 100644 (file)
@@ -14,7 +14,7 @@
 #include "libkita/datmanager.h"
 #include "libkita/board.h"
 #include "kitawritetabwidget.h"
-#include "kitawritedialog.h"
+#include "kitawriteview.h"
 
 #include <kdebug.h>
 #include <kstdaccel.h>
@@ -42,26 +42,26 @@ KitaWriteTabWidget::~KitaWriteTabWidget() {}
 
 /* public slot */
 void  KitaWriteTabWidget::slotShowWriteView( const KURL& url,
+                                            const QString& resStr )
+{
+    openWriteView( WRITEMODE_NORMAL, url, resStr, QString::null );
+}
+
+
+/* public slot */
+void  KitaWriteTabWidget::slotCreateNewThread( const KURL& url,
                                             const QString& resStr,
-                                            const QString& mailAddr)
+                                            const QString& subject)
 {
-    KURL datURL = Kita::ParseMisc::parseURLonly( url );
+    openWriteView( WRITEMODE_NEWTHREAD, url, resStr, subject );
+}
+
 
-    /* setup post info */
-    int serverTime = Kita::DatManager::getServerTime( datURL );
-    if ( !serverTime ) return;
-
-    KURL bbscgiURL = KURL( Kita::DatManager::boardURL( datURL ), "../test/bbs.cgi" );
-    bbscgiURL.setProtocol( "http" );
-
-    Kita::PostInfo info;
-    info.host = bbscgiURL.host();
-    info.bbs = Kita::DatManager::boardID( datURL );
-    info.key = Kita::DatManager::threadID( datURL );
-    info.time = QString( "%1" ).arg( serverTime );
-    info.body = resStr;
-    info.mail = mailAddr;
-    if ( ! info.check() ) return;
+/* private */
+void KitaWriteTabWidget::openWriteView( int mode, const KURL& url,
+                                            const QString& resStr, const QString& subject )
+{
+    KURL datURL = Kita::ParseMisc::parseURLonly( url );
     
     // TODO: machiBBS kakiko support.
     if ( Kita::Board::isWritingSupported( datURL ) == false )
@@ -72,11 +72,10 @@ void  KitaWriteTabWidget::slotShowWriteView( const KURL& url,
     }
 
     /* view exists */
-    KitaWriteDialog* view = findWriteView( datURL );
+    KitaWriteView* view = findWriteView( datURL );
     if ( view ) {
        
-       info = view->postInfo();
-       if( info.body.length() ){
+       if( view->body().length() ){
            
            if( QMessageBox::warning( this, "Kita",
                                      i18n( "Do you want to clear the text?" ),
@@ -85,17 +84,28 @@ void  KitaWriteTabWidget::slotShowWriteView( const KURL& url,
        }
        
        /* clear */
-       info.body = resStr;
-       view->clear( info );
+       view->setMessage( resStr );
         setCurrentPage( indexOf( view ) );
        return;
     }
 
     /* create new write view & add it to tab */
-    QString threadName = Kita::DatManager::threadName( datURL );
-    KitaWriteDialog* new_dlg = new KitaWriteDialog( this, "write dialog" );
-    new_dlg->setup ( datURL );
-    new_dlg->clear( info );
+    QString threadName;
+    KitaWriteView* new_dlg;
+    if( mode == WRITEMODE_NORMAL ){
+
+       /* write res */
+       threadName = Kita::DatManager::threadName( datURL );
+       new_dlg = new KitaWriteView( this, "write dialog", datURL, WRITEMODE_NORMAL );
+    }
+    else{
+
+       /* create new thread */
+       threadName = "New Thread";
+       new_dlg = new KitaWriteView( this, "write dialog", datURL, WRITEMODE_NEWTHREAD, subject );
+    }
+   
+    new_dlg->setMessage( resStr );
     connect( new_dlg, SIGNAL( closeCurrentTab() ), SLOT( slotCloseCurrentTab() ) );
     addTab( new_dlg, threadName );
     showPage( new_dlg );
@@ -109,7 +119,7 @@ void KitaWriteTabWidget::slotCloseWriteTab( const KURL& url )
     
     KURL datURL = Kita::ParseMisc::parseURLonly( url );
     
-    KitaWriteDialog* view = findWriteView( datURL );
+    KitaWriteView* view = findWriteView( datURL );
     if ( view ) slotCloseTab( indexOf( view ) );
 }
 
@@ -127,7 +137,7 @@ void KitaWriteTabWidget::connectSignals()
 
 
 /* private */
-KitaWriteDialog* KitaWriteTabWidget::findWriteView( const KURL& url )
+KitaWriteView* KitaWriteTabWidget::findWriteView( const KURL& url )
 {
     KURL datURL = Kita::ParseMisc::parseURLonly( url );
 
@@ -136,7 +146,7 @@ KitaWriteDialog* KitaWriteTabWidget::findWriteView( const KURL& url )
     int i = 0;
 
     while( i < max ){
-       KitaWriteDialog* view =  isWriteView( page ( i ) );
+       KitaWriteView* view =  isWriteView( page ( i ) );
        if( view ){
            if ( view->datURL() == datURL ) return view;
        }
@@ -148,11 +158,11 @@ KitaWriteDialog* KitaWriteTabWidget::findWriteView( const KURL& url )
 
 
 /* private */
-KitaWriteDialog* KitaWriteTabWidget::isWriteView( QWidget* w )
+KitaWriteView* KitaWriteTabWidget::isWriteView( QWidget* w )
 {
-    KitaWriteDialog* view = NULL;
+    KitaWriteView* view = NULL;
     if( w ){
-       if( w->isA( "KitaWriteDialog" ) ) view = static_cast< KitaWriteDialog* >( w );
+       if( w->isA( "KitaWriteView" ) ) view = static_cast< KitaWriteView* >( w );
     }
 
     return view;
@@ -164,7 +174,7 @@ KitaWriteDialog* KitaWriteTabWidget::isWriteView( QWidget* w )
 /* See also KitaThreadView::setFocus.                  */ /* private slot */
 void KitaWriteTabWidget::slotChangeWriteTab( const KURL& url )
 {
-    KitaWriteDialog* view;
+    KitaWriteView* view;
     int max = count();
     if( max == 0 ) return;
     
@@ -239,8 +249,10 @@ KitaWriteTabWidget* KitaWriteDock::setup()
     setWidget( m_writeTab );
 
     Kita::SignalCollection* signalCollection = Kita::SignalCollection::getInstance();
-    connect( signalCollection, SIGNAL( showWriteView( const KURL& , const QString&,const QString& ) ),
-            this, SLOT( slotShowWriteView( const KURL& , const QString&,const QString& ) ) );
+    connect( signalCollection, SIGNAL( showWriteView( const KURL& , const QString& ) ),
+            this, SLOT( slotShowWriteView( const KURL& , const QString& ) ) );
+    connect( signalCollection, SIGNAL( createNewThread( const KURL& , const QString&,const QString& ) ),
+            this, SLOT( slotCreateNewThread( const KURL& , const QString&,const QString& ) ) );
     connect( signalCollection, SIGNAL( switchToWritedock() ),
             SLOT( slotShowDock() ) );
     
@@ -248,12 +260,22 @@ KitaWriteTabWidget* KitaWriteDock::setup()
 }
 
 
-void  KitaWriteDock::slotShowWriteView( const KURL& url,
+void  KitaWriteDock::slotShowWriteView( const KURL& url, const QString& resStr )
+{
+    if( !m_writeTab ) return;
+    
+    slotShowDock();
+    m_writeTab->slotShowWriteView( url, resStr );
+}
+
+
+/* public slot */
+void KitaWriteDock::slotCreateNewThread( const KURL& url,
                                             const QString& resStr,
-                                            const QString& mailAddr)
+                                            const QString& subject)
 {
     if( !m_writeTab ) return;
     
     slotShowDock();
-    m_writeTab->slotShowWriteView( url, resStr, mailAddr );
+    m_writeTab->slotCreateNewThread( url, resStr, subject );
 }