OSDN Git Service

merge from SHOBON project.
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Thu, 25 Mar 2004 15:00:43 +0000 (15:00 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Thu, 25 Mar 2004 15:00:43 +0000 (15:00 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@948 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/access.cpp
kita/src/libkita/access.h
kita/src/libkita/cache.h

index 8c3d45f..d1d8372 100644 (file)
@@ -157,6 +157,7 @@ void Access::writeCacheData( const KURL& url )
     return ;
 }
 
+#if 0
 QString Access::get()
 {
     m_orgData = getCacheData( m_thread->datURL() );
@@ -196,6 +197,7 @@ QString Access::get()
     QCp932Codec codec;
     return codec.toUnicode( m_threadData );
 }
+#endif
 
 // from netaccess.cpp
 void qt_enter_modal( QWidget* widget );
@@ -276,4 +278,187 @@ int Access::responseCode()
     }
 }
 
+
+/*-------------------------------------------------*/
+/* shobon extension                                */
+/*-------------------------------------------------*/
+
+#include <qmessagebox.h>
+#include "threadinfo.h"
+
+QString Access::getcache()
+{
+    KURL url = m_thread->datURL();
+    url.setProtocol( "k2ch" );
+
+    m_orgData = getCacheData2( url );
+
+    QCp932Codec codec;
+    return codec.toUnicode( m_orgData );
+
+}
+
+
+/*-----------------------------------*/
+
+
+QString Access::getupdate()
+{
+
+    QString retstr;
+    m_threadData = "";
+
+    if ( KURL( m_thread->datURL() ).protocol() != "k2ch" ) {
+        KIO::SlaveConfig::self() ->setConfigData( "http",
+                KURL( m_thread->datURL() ).host(),
+                "UserAgent",
+                QString( "Monazilla/1.00 (Kita/%1)" ).arg( VERSION ) );
+    }
+
+    KIO::TransferJob* job = KIO::get( m_thread->datURL(), true, true );
+    m_currentJob = job;
+
+    connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
+             SLOT( slotReceiveThreadData( KIO::Job*, const QByteArray& ) ) );
+    connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( slotThreadResult( KIO::Job* ) ) );
+    connect( job, SIGNAL( redirection( KIO::Job *, const KURL& ) ), SLOT( slotRedirection( KIO::Job *, const KURL& ) ) );
+
+    // use 'HTTP-Headers' metadata.
+    job->addMetaData( "PropagateHttpHeader", "true" );
+    if ( ! m_orgData.isNull() ) {
+        job->addMetaData( "resume", QString::number( m_orgData.length() - 1 ) );
+        job->addMetaData( "AllowCompressedPage", "false" );
+    }
+
+    qApp->enter_loop();
+
+    if ( m_threadData.length() ) {
+        QCp932Codec codec;
+        retstr = codec.toUnicode( m_threadData );
+
+        KURL url = m_thread->datURL();
+
+        url.setProtocol( "k2ch" );
+        QString cachePath = Kita::Cache::getPath( url );
+        if ( !KIO::NetAccess::exists( cachePath ) ) {
+            QString path
+            = Kita::Cache::baseDir( url ) + Kita::Cache::subDir( url.host().lower() );
+            KIO::NetAccess::mkdir( path );
+        }
+
+        writeCacheData2( url );
+    } else retstr = "";
+
+    return retstr;
+}
+
+/*-----------------------------------*/
+
+QString Access::get()
+{
+
+    QString ret;
+    ret = getcache() + getupdate();
+
+    return ret;
+}
+
+
+/*-----------------------------------*/
+
+QCString Access::getCacheData2( const KURL& url )
+{
+    QString cachePath = Kita::Cache::getPath( url );
+
+    FILE *fs = fopen( QFile::encodeName( cachePath ), "r" );
+    if ( !fs ) {
+        return 0;
+    }
+
+    //    if ( readCacheHeader( fs, url ) ) {
+    struct stat buf;
+    ::stat( QFile::encodeName( cachePath ), &buf );
+    int pos = ftell( fs );
+    int datasize = buf.st_size - pos;
+
+    char* ret = static_cast<char *>( malloc( datasize + 1 ) );
+    fread( ret, datasize, 1, fs );
+    ret[ datasize ] = '\0';
+    fclose( fs );
+    return ret;
+    /*    }
+     
+        fclose( fs );
+        unlink( QFile::encodeName( cachePath ) );
+        return 0;*/
+}
+
+
+/*-----------------------------------*/
+
+
+void Access::writeCacheData2( const KURL& url )
+{
+    if ( m_orgData.isNull() && responseCode() == 304 ) {
+
+        m_threadData = QString::null;
+        m_orgData = m_threadData;
+        return ;
+
+    } else if ( ! m_orgData.isNull() && responseCode() == 304 ) {
+
+        m_threadData = m_orgData;
+        return ;
+
+    } else if ( ! m_orgData.isNull() && responseCode() == 206 ) {
+        QCString orgData = QCString( m_orgData, m_orgData.length() );
+        m_threadData = orgData + m_threadData;
+    }
+    m_orgData = m_threadData;
+
+    QString cachePath = Kita::Cache::getPath( url );
+    FILE *fs = fopen( QFile::encodeName( cachePath ), "w" );
+    if ( !fs ) return ;
+
+    fwrite( m_threadData, m_threadData.size(), 1, fs );
+    fclose( fs );
+
+    return ;
+}
+
+
+/*-----------------------------------*/
+
+
+/* static & public */
+bool Access::deleteLog( const Thread* thread, QWidget* parent )
+{
+
+    if ( QMessageBox::warning( parent,
+                               "Kita",
+                               "Do you want to delete Log ?",
+                               QMessageBox::Ok, QMessageBox::Cancel | QMessageBox::Default )
+            == QMessageBox::Ok ) {
+
+        KURL url = thread->datURL();
+        QString str = Kita::Cache::getPath( url );
+        KIO::NetAccess::del( str );
+
+        url.setProtocol( "k2ch" );
+        str = Kita::Cache::getPath( url );
+        return KIO::NetAccess::del( str );
+        /*
+               KitaThreadInfo * cache = KitaThreadInfo::getInstance();
+               cache->m_readDict.remove(thread->datURL());
+               cache->m_resNumDict.remove(thread->datURL());
+        */ 
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+
+
+
 #include "access.moc"
index 263395c..058ac4d 100644 (file)
@@ -32,19 +32,25 @@ namespace Kita
         Q_OBJECT
 
     public:
-        Access( const Thread* thread ) : m_thread( thread ) {};
+        Access( const Thread* thread ) : m_thread( thread ), m_currentJob( 0 ) {};
         ~Access() {};
 
         QString get();
         void killJob();
         int serverTime();
+        QString getcache();
+        QString getupdate();
+        int responseCode();
+        static bool deleteLog( const Thread* thread, QWidget* parent );
 
     private:
         void enter_loop();
         QCString getCacheData( const KURL& url );
         void writeCacheData( const KURL& url );
-        int responseCode();
+        //        int responseCode();
         bool readCacheHeader( FILE* fs, const KURL& url );
+        QCString getCacheData2( const KURL& url );
+        void writeCacheData2( const KURL& url );
 
         const Thread* m_thread;
         KIO::Job* m_currentJob;
index 1a7752e..9684581 100644 (file)
@@ -22,10 +22,10 @@ namespace Kita
     */
     class Cache
     {
+    public:
         static QString baseDir( const KURL& url );
         static QString subDir( const QString& host );
         static QString hashString( const KURL& url );
-    public:
         static QString getPath( const KURL& url );
     };