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

List:       kde-commits
Subject:    [Konversation] 3293cb9: improve UI
From:       Shintaro Matsuoka <shin () shoegazed ! org>
Date:       2010-07-01 13:27:51
Message-ID: 20100701132751.5789ABB5701 () projects ! kde ! org
[Download RAW message or body]

commit 3293cb9c9f99f7174740afb253f4d44f1d8b62cb
Author: Shintaro Matsuoka <shin@shoegazed.org>
Date:   Sat Aug 14 08:19:29 2004 +0000

    improve UI
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=337875

diff --git a/konversation/dccdetaildialog.cpp b/konversation/dccdetaildialog.cpp
index a7013fa..3a778b6 100644
--- a/konversation/dccdetaildialog.cpp
+++ b/konversation/dccdetaildialog.cpp
@@ -6,10 +6,13 @@
 #include <qlabel.h>
 #include <qlayout.h>
 
+#include <kglobal.h>
+#include <kiconloader.h>
 #include <klocale.h>
 #include <klineedit.h>
 #include <kprogress.h>
 #include <kpushbutton.h>
+#include <krun.h>
 #include <kurlrequester.h>
 
 #include "dccdetaildialog.h"
@@ -23,7 +26,7 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   baseLayout->setMargin( marginHint() );
   baseLayout->setSpacing( spacingHint() );
   
-  // information //
+  // information
   
   QFrame* infoFrame = new QFrame( this );
   QGridLayout* infoLayout = new QGridLayout( infoFrame, 1, 2 );
@@ -31,30 +34,62 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   
   // Filename
   QLabel* fileNameHeader = new QLabel( i18n("File"), infoFrame );
-  fileNameHeader->setAlignment( AlignHCenter );
-  QLabel* fileName = new QLabel( item->fileName, infoFrame );
+  fileNameHeader->setAlignment( AlignHCenter | AlignVCenter );
+  KLineEdit* fileName = new KLineEdit( item->fileName, infoFrame );
+  fileName->setFocusPolicy( ClickFocus );
+  fileName->setReadOnly( true );
+  fileName->setFrame( false );
   fileName->setAlignment( AlignHCenter );
   
+  // Local path
+  QLabel* localPathHeader = new QLabel( infoFrame );
+  localPathHeader->setAlignment( AlignHCenter | AlignVCenter );
+  if ( m_item->dccType == DccTransfer::Send )
+    localPathHeader->setText( i18n("Local Path") );
+  else
+    localPathHeader->setText( i18n("Save to") );
+  QHBox* localPathBox = new QHBox( infoFrame );
+  localPathBox->setSpacing( spacingHint() );
+  m_localPath = new KURLRequester( m_item->filePath, localPathBox );
+  connect( m_localPath, SIGNAL( textChanged( const QString& ) ), this, SLOT( \
slotLocalPathChanged( const QString& ) ) ); +  m_localPathOpen = new KPushButton( \
KGlobal::iconLoader()->loadIcon( "exec", KIcon::Small ), QString::null, localPathBox \
); +  m_localPathOpen->setFixedSize( m_localPath->button()->size() );
+  connect( m_localPathOpen, SIGNAL( clicked() ), this, SLOT( slotOpenFile() ) );
+  
   // Partner
   QLabel* partnerHeader = new QLabel( infoFrame );
-  partnerHeader->setAlignment( AlignHCenter );
+  partnerHeader->setAlignment( AlignHCenter | AlignVCenter );
   if ( m_item->dccType == DccTransfer::Send )
     partnerHeader->setText( i18n("Receiver") );
   else
     partnerHeader->setText( i18n("Sender") );
-  m_partner = new QLabel( infoFrame );
+  m_partner = new KLineEdit( infoFrame );
+  m_partner->setFocusPolicy( ClickFocus );
+  m_partner->setReadOnly( true );
+  m_partner->setFrame( false );
   m_partner->setAlignment( AlignHCenter );
-  
+    
   // Self
-  QLabel* selfHeader = new QLabel( i18n("Self"), infoFrame );
-  selfHeader->setAlignment( AlignHCenter );
-  m_self = new QLabel( infoFrame );
-  m_self->setAlignment( AlignHCenter );
+  QLabel* selfHeader;
+  m_self = 0;
+  if ( m_item->dccType == DccTransfer::Send )
+  {
+    selfHeader = new QLabel( i18n("Self"), infoFrame );
+    selfHeader->setAlignment( AlignHCenter | AlignVCenter );
+    m_self = new KLineEdit( infoFrame );
+    m_self->setFocusPolicy( ClickFocus );
+    m_self->setReadOnly( true );
+    m_self->setFrame( false );
+    m_self->setAlignment( AlignHCenter );
+  }
   
   // Status
   QLabel* statusHeader = new QLabel( i18n("Status"), infoFrame );
-  statusHeader->setAlignment( AlignHCenter );
-  m_status = new QLabel( infoFrame );
+  statusHeader->setAlignment( AlignHCenter | AlignVCenter );
+  m_status = new KLineEdit( infoFrame );
+  m_status->setFocusPolicy( ClickFocus );
+  m_status->setReadOnly( true );
+  m_status->setFrame( false );
   m_status->setAlignment( AlignHCenter );
   
   // Progres
@@ -65,17 +100,14 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   
   // Position
   QLabel* positionHeader = new QLabel( i18n("Position"), infoFrame );
-  positionHeader->setAlignment( AlignHCenter );
-  m_position = new QLabel( infoFrame );
+  positionHeader->setAlignment( AlignHCenter | AlignVCenter );
+  m_position = new KLineEdit( infoFrame );
+  m_position->setFocusPolicy( ClickFocus );
+  m_position->setReadOnly( true );
+  m_position->setFrame( false );
   m_position->setAlignment( AlignHCenter );
   
-  // Local path
-  QLabel* localPathHeader = new QLabel( i18n("Local Path"), infoFrame );
-  localPathHeader->setAlignment( AlignHCenter | AlignVCenter );
-  m_localPath = new KURLRequester( m_item->filePath, infoFrame );
-  connect( m_localPath, SIGNAL( textChanged( const QString& ) ), this, SLOT( \
                slotLocalPathChanged( const QString& ) ) );
-  
-  // buttons //
+  // buttons
   
   QFrame* buttonFrame = new QFrame( this );
   QHBoxLayout* buttonLayout = new QHBoxLayout( buttonFrame );
@@ -85,27 +117,28 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   m_buttonAccept = 0;
   if ( m_item->dccType == DccTransfer::Receive )
   {
-    m_buttonAccept = new KPushButton( i18n("Accept"), buttonFrame );
+    m_buttonAccept = new KPushButton( KGlobal::iconLoader()->loadIcon( \
                "player_play", KIcon::Small ), i18n("Accept"), buttonFrame );
     m_buttonAccept->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, \
                QSizePolicy::Fixed ) );
     connect( m_buttonAccept, SIGNAL( clicked() ), this, SLOT( slotAccept() ) );
   }
   
   // Abort
-  m_buttonAbort = new KPushButton( i18n("Abort"), buttonFrame );
+  m_buttonAbort = new KPushButton( KGlobal::iconLoader()->loadIcon( "stop", \
KIcon::Small ), i18n("Abort"), buttonFrame );  m_buttonAbort->setSizePolicy( \
QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );  connect( m_buttonAbort, \
SIGNAL( clicked() ), this, SLOT( slotAbort() ) );  
   // Close
-  KPushButton* buttonClose = new KPushButton( i18n("Close"), buttonFrame );
+  KPushButton* buttonClose = new KPushButton( KGlobal::iconLoader()->loadIcon( \
"button_ok", KIcon::Small ), i18n("Close"), buttonFrame );  \
buttonClose->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) );  \
connect( buttonClose, SIGNAL( clicked() ), this, SLOT( slotClose() ) );  
-  // layout //
+  // layout
   
   // construct layout: base
   baseLayout->addWidget( infoFrame );
+  baseLayout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding ) );
   baseLayout->addWidget( buttonFrame );
-    
+  
   // construct layout: info
   int row = 0;
   
@@ -114,15 +147,18 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   
   ++row;
   infoLayout->addWidget( localPathHeader, row, 0 );
-  infoLayout->addWidget( m_localPath, row, 1 );
+  infoLayout->addWidget( localPathBox, row, 1 );
   
   ++row;
   infoLayout->addWidget( partnerHeader, row, 0 );
   infoLayout->addWidget( m_partner, row, 1 );
   
-  ++row;
-  infoLayout->addWidget( selfHeader, row, 0 );
-  infoLayout->addWidget( m_self, row, 1 );
+  if ( m_self )
+  {
+    ++row;
+    infoLayout->addWidget( selfHeader, row, 0 );
+    infoLayout->addWidget( m_self, row, 1 );
+  }
   
   ++row;
   infoLayout->addWidget( statusHeader, row, 0 );
@@ -143,12 +179,13 @@ DccDetailDialog::DccDetailDialog( DccTransfer* item )
   buttonLayout->addItem( new QSpacerItem( 0, 0, QSizePolicy::Expanding ) );
   buttonLayout->addWidget( buttonClose );
   
-  // update //
+  // update
   updateView();
 
-  // make up //
-  setMinimumWidth( 300 );
-  setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ) );
+  // make up
+  adjustSize();
+  resize( 450, height() );
+  buttonClose->setFocus();
 }
 
 DccDetailDialog::~DccDetailDialog()
@@ -157,14 +194,23 @@ DccDetailDialog::~DccDetailDialog()
 
 void DccDetailDialog::updateView()  // public
 {
-  // caption //
+  // caption
   
   if ( m_item->dccType == DccTransfer::Send )
     setCaption( i18n("DCC Send") + " : " + m_item->fileName );
   else
     setCaption( i18n("DCC Receive") + " : " + m_item->fileName );
   
-  // information //
+  // information
+  
+  // Local path
+  m_localPath->setURL( m_item->filePath );
+  m_localPath->lineEdit()->setFocusPolicy( m_item->dccStatus == DccTransfer::Queued \
? StrongFocus : ClickFocus ); +  m_localPath->lineEdit()->setReadOnly( \
m_item->dccStatus != DccTransfer::Queued ); +  m_localPath->lineEdit()->setFrame( \
m_item->dccStatus == DccTransfer::Queued ); +  m_localPath->lineEdit()->setAlignment( \
m_item->dccStatus == DccTransfer::Queued ? AlignLeft : AlignHCenter ); +  \
m_localPath->button()->setEnabled( m_item->dccStatus == DccTransfer::Queued ); +  \
m_localPathOpen->setEnabled( m_item->dccType == DccTransfer::Send || \
m_item->dccStatus == DccTransfer::Done );  
   // Partner
   QString partner( m_item->partnerNick );
@@ -179,19 +225,22 @@ void DccDetailDialog::updateView()  // public
   m_partner->setText( partner );
   
   // Self
-  QString self;
-  if ( !m_item->ownIp.isEmpty() || !m_item->ownPort.isEmpty() )
+  if ( m_self )
   {
-    self += !m_item->ownIp.isEmpty() ? m_item->ownIp : "* ";
-    self += ":";
-    self += !m_item->ownPort.isEmpty() ? m_item->ownPort : i18n("unknown");
+    QString self;
+    if ( !m_item->ownIp.isEmpty() || !m_item->ownPort.isEmpty() )
+    {
+      self += !m_item->ownIp.isEmpty() ? m_item->ownIp : "* ";
+      self += ":";
+      self += !m_item->ownPort.isEmpty() ? m_item->ownPort : i18n("unknown");
+    }
+    else
+      self = i18n("unknown");
+    m_self->setText( self );
   }
-  else
-    self = i18n("unknown");
-  m_self->setText( self );
   
   // Status
-  m_status->setText( m_item->getStatusText() );
+  m_status->setText( m_item->dccStatusDetail.isEmpty() ? m_item->getStatusText() : \
m_item->getStatusText() + " (" + m_item->dccStatusDetail + ")" );  
   // Progress
   // FIXME: in case filesize is unknown
@@ -200,12 +249,7 @@ void DccDetailDialog::updateView()  // public
   // Position
   m_position->setText( m_item->getPositionPrettyText() );
   
-  // Local path
-  m_localPath->setURL( m_item->filePath );
-  m_localPath->lineEdit()->setReadOnly( m_item->dccStatus != DccTransfer::Queued );
-  m_localPath->button()->setEnabled( m_item->dccStatus == DccTransfer::Queued );
-  
-  // buttons //
+  // buttons
   
   // Accept
   if ( m_buttonAccept )
@@ -224,6 +268,11 @@ void DccDetailDialog::slotLocalPathChanged( const QString& \
newFilePath )  m_item->setFilePath( newFilePath.stripWhiteSpace() );
 }
 
+void DccDetailDialog::slotOpenFile()
+{
+  new KRun( KURL( m_item->filePath ) );
+}
+
 void DccDetailDialog::slotAccept()
 {
   m_item->start();
diff --git a/konversation/dccdetaildialog.h b/konversation/dccdetaildialog.h
index 552f71b..fcd0002 100644
--- a/konversation/dccdetaildialog.h
+++ b/konversation/dccdetaildialog.h
@@ -7,7 +7,7 @@
 
 #include <kdialog.h>
 
-class QLabel;
+class KLineEdit;
 class KProgress;
 class KPushButton;
 class KURLRequester;
@@ -25,6 +25,7 @@ class DccDetailDialog : public KDialog
   
   protected slots:
     void slotLocalPathChanged( const QString& newFilePath );
+    void slotOpenFile();
     void slotAccept();
     void slotAbort();
     void slotClose();
@@ -33,12 +34,13 @@ class DccDetailDialog : public KDialog
     DccTransfer* m_item;
     
     // UI
-    QLabel* m_partner;
-    QLabel* m_self;
-    QLabel* m_status;
-    KProgress* m_progress;
-    QLabel* m_position;
     KURLRequester* m_localPath;
+    KPushButton* m_localPathOpen;
+    KLineEdit* m_partner;
+    KLineEdit* m_self;
+    KLineEdit* m_status;
+    KProgress* m_progress;
+    KLineEdit* m_position;
     
     KPushButton* m_buttonAccept;
     KPushButton* m_buttonAbort;
diff --git a/konversation/dccpanel.cpp b/konversation/dccpanel.cpp
index 8b4ccf6..027efe7 100644
--- a/konversation/dccpanel.cpp
+++ b/konversation/dccpanel.cpp
@@ -12,9 +12,6 @@
   email:     eisfuchs@tigress.com
 */
 
-// for debug
-#define USE_DETAILDIALOG
-
 #include <qhbox.h>
 #include <qheader.h>
 #include <qvbox.h>
@@ -91,9 +88,7 @@ DccPanel::DccPanel(QWidget* parent) : ChatWindow(parent)
   removeButton=new QPushButton(i18n("Remove"),buttonsBox,"remove_dcc");
   openButton  =new QPushButton(i18n("Open"),buttonsBox,"open_dcc_file");
   infoButton  =new QPushButton(i18n("Information"),buttonsBox,"info_on_dcc_file");
-#ifdef USE_DETAILDIALOG
   detailButton=new QPushButton(i18n("Detail"),buttonsBox,"detail_dcc");
-#endif
 
   connect(dccListView,SIGNAL (selectionChanged()),this,SLOT (dccSelected()) );
   
@@ -102,9 +97,7 @@ DccPanel::DccPanel(QWidget* parent) : ChatWindow(parent)
   connect(removeButton,SIGNAL (clicked()) ,this,SLOT (removeDcc()) );
   connect(openButton,SIGNAL (clicked()) ,this,SLOT (runDcc()) );
   connect(infoButton,SIGNAL (clicked()) ,this,SLOT (showFileInfo()) );
-#ifdef USE_DETAILDIALOG
   connect(detailButton,SIGNAL (clicked()) ,this,SLOT (openDetail()) );
-#endif
 }
 
 DccPanel::~DccPanel()
diff --git a/konversation/dcctransfer.cpp b/konversation/dcctransfer.cpp
index e71285f..73630bf 100644
--- a/konversation/dcctransfer.cpp
+++ b/konversation/dcctransfer.cpp
@@ -155,10 +155,11 @@ void DccTransfer::closeDetailDialog()  // public
   }
 }
 
-void DccTransfer::setStatus(DccStatus status)
+void DccTransfer::setStatus(DccStatus status, const QString& statusDetail)
 {
   DccStatus oldStatus=dccStatus;
   dccStatus=status;
+  dccStatusDetail=statusDetail;
   if (oldStatus!=status) emit statusChanged(this);
 }
 
diff --git a/konversation/dcctransfer.h b/konversation/dcctransfer.h
index 8c95285..6bf6081 100644
--- a/konversation/dcctransfer.h
+++ b/konversation/dcctransfer.h
@@ -90,7 +90,7 @@ class DccTransfer : public QObject, public KListViewItem
     void startAutoUpdateView();
     void stopAutoUpdateView();
     
-    void setStatus(DccStatus status);
+    void setStatus(DccStatus status, const QString& statusDetail = QString::null);
     virtual void setFilePath(const QString& _filePath) = 0;
     
     // called from updateView()
@@ -112,6 +112,7 @@ class DccTransfer : public QObject, public KListViewItem
     // transfer information
     DccType dccType;
     DccStatus dccStatus;
+    QString dccStatusDetail;
     bool bResumed;
     unsigned long transferringPosition;
     unsigned long transferStartPosition;
diff --git a/konversation/dcctransferrecv.cpp b/konversation/dcctransferrecv.cpp
index bc80798..a088003 100644
--- a/konversation/dcctransferrecv.cpp
+++ b/konversation/dcctransferrecv.cpp
@@ -146,7 +146,7 @@ void DccTransferRecv::requestResume()
   kdDebug() << "DccTransferRecv::requestResume()" << endl;
   
   bResumed = true;
-  setStatus(WaitingRemote);
+  setStatus(WaitingRemote, i18n("Requesting to accept resuming"));
   
   // Rollback for Resume
   unsigned long rb=KonversationApplication::preferences.getDccRollback();
@@ -299,7 +299,7 @@ void DccTransferRecv::connectionTimeout()  // slot
 {
   kdDebug() << "DccTransferRecv::connectionTimeout()" << endl;
   
-  setStatus(Failed);
+  setStatus(Failed, i18n("Timed out"));
   updateView();
   cleanUp();
 }
diff --git a/konversation/dcctransfersend.cpp b/konversation/dcctransfersend.cpp
index 9caa7a8..a64cd36 100644
--- a/konversation/dcctransfersend.cpp
+++ b/konversation/dcctransfersend.cpp
@@ -108,10 +108,10 @@ void DccTransferSend::start()  // public slot
   
   kdDebug() << "DccTransferSend::start(): own Address=" << ownIp << ":" << ownPort \
<< endl;  
-  setStatus(WaitingRemote);
+  setStatus(WaitingRemote, i18n("Waiting the remote user's acceptance"));
   updateView();
   
-  startConnectionTimer(60);  // wait for 60 sec
+  startConnectionTimer(90);  // wait for 90 sec
   
   emit sendReady(partnerNick,fileName,getNumericalIpText(ownIp),ownPort,fileSize);
 }
@@ -251,7 +251,7 @@ void DccTransferSend::connectionTimeout()  // slot
 {
   kdDebug() << "DccTransferSend::connectionTimeout()" << endl;
   
-  setStatus(Failed);
+  setStatus(Failed, i18n("Timed out"));
   updateView();
   cleanUp();
 }


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

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