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

List:       kde-commits
Subject:    playground/office/kraft
From:       Klaas Freitag <freitag () suse ! de>
Date:       2011-02-17 20:03:30
Message-ID: 20110217200330.2F60DAC8BE () svn ! kde ! org
[Download RAW message or body]

SVN commit 1221322 by freitag:

A better document detail view

 M  +3 -1      reports/docdigest.trml  
 M  +1 -1      src/CMakeLists.txt  
 A             src/docdigestdetailview.cpp   [License: GPL (v2+)]
 A             src/docdigestdetailview.h   [License: GPL (v2+)]
 M  +34 -56    src/docdigestview.cpp  
 M  +8 -4      src/docdigestview.h  
 M  +46 -23    styles/docdigestview.css  


--- trunk/playground/office/kraft/reports/docdigest.trml #1221321:1221322
@@ -3,8 +3,10 @@
   -->
 <body>
 <h2>{{HEADLINE}}</h2>
-<p>Date: {{DATE}}</p>
+<div>
+<p>{{DATE}}</p>
 <p>{{ARCHDOCS_TAG}}</p>
+</div>
 </body>
 
 
--- trunk/playground/office/kraft/src/CMakeLists.txt #1221321:1221322
@@ -147,7 +147,7 @@
     models/documentmodel.cpp
     models/documentproxymodels.cpp
     models/modeltest.cpp
-
+    docdigestdetailview.cpp
 )
 
 kde4_add_kcfg_files(kraft_SRCS databasesettings.kcfgc kraftsettings.kcfgc)
--- trunk/playground/office/kraft/src/docdigestview.cpp #1221321:1221322
@@ -44,8 +44,7 @@
 #include "docguardedptr.h"
 #include "kraftdoc.h"
 #include "defaultprovider.h"
-#include "htmlview.h"
-#include "texttemplate.h"
+#include "docdigestdetailview.h"
 
 DocDigestView::DocDigestView( QWidget *parent )
 : QWidget( parent )
@@ -60,8 +59,8 @@
 
   mNewDocButton = new QPushButton( i18n( "Create Document" ) );
   connect( mNewDocButton, SIGNAL( clicked() ), this, SIGNAL( createDocument() ) );
-
-  // hbox->addStretch(1);
+  hbox->addWidget( mNewDocButton );
+  hbox->addStretch(1);
   mToolBox = new QToolBox;
 
   QList<QTreeView *> treelist = initializeTreeWidgets();
@@ -90,11 +89,8 @@
   QHBoxLayout *hbox3 = new QHBoxLayout;
 
   hbox3->addSpacing( KDialog::marginHint() );
-  hbox3->addWidget( mNewDocButton );
-  mShowDocDetailsView = new HtmlView( this );
-  // mShowDocDetailsView->view()->setMinimumHeight( 160 );
-  mShowDocDetailsView->view()->setFixedHeight(120);
-  hbox3->addWidget( mShowDocDetailsView->view() );
+
+  // hbox3->addWidget( mShowDocDetailsView );
   box->addLayout( hbox3 );
 }
 
@@ -111,6 +107,8 @@
   mLatestView = new QTreeView;
   mTimeView = new QTreeView;
 
+  mTreeViewIndex.resize(3);
+
   //Add the widgets to a temporary list so we can iterate over them and centralise \
the common initialization  treeviewlist.clear();
   treeviewlist.append(mAllView);
@@ -126,17 +124,29 @@
   mLatestMenu->setTitle( i18n("Document Actions"));
 
   //Add treewidgets to the toolbox
-  int indx = mToolBox->addItem( mLatestView, i18n("Latest Documents"));
+  QVBoxLayout *vb1 = new QVBoxLayout;
+  vb1->setMargin(0);
+  vb1->addWidget( mLatestView );
+  mLatestViewDetails = new DocDigestDetailView;
+  vb1->addWidget( mLatestViewDetails );
+  QWidget *w = new QWidget;
+  w->setLayout(vb1);
+  mLatestViewDetails->setFixedHeight(160);
+
+  int indx = mToolBox->addItem( w, i18n("Latest Documents"));
   mToolBox->setItemIcon( indx, KIcon( "get-hot-new-stuff"));
   mToolBox->setItemToolTip(indx, i18n("Shows the latest ten documents"));
+  mTreeViewIndex[indx] = mLatestView;
 
   indx = mToolBox->addItem( mAllView, i18n("All Documents"));
   mToolBox->setItemIcon( indx, KIcon( "edit-clear-locationbar-ltr"));
   mToolBox->setItemToolTip(indx, i18n("Shows a complete list of all documents"));
+  mTreeViewIndex[indx] = mAllView;
 
   indx = mToolBox->addItem( mTimeView, i18n("Timelined Documents"));
   mToolBox->setItemIcon( indx, KIcon( "chronometer"));
   mToolBox->setItemToolTip(indx, i18n("Shows all documents along a timeline"));
+  mTreeViewIndex[indx] = mTimeView;
 
   return treeviewlist;
 }
@@ -144,7 +154,10 @@
 
 void DocDigestView::slotCurrentChangedToolbox(int index)
 {
-    QTreeView *treeview = static_cast<QTreeView *>(mToolBox->widget(index));
+  if( index < 0 || index > mTreeViewIndex.size() ) return;
+
+  QTreeView *treeview = mTreeViewIndex[index];
+
     if(treeview->selectionModel()->hasSelection())
         slotCurrentChanged(treeview->selectionModel()->selectedRows().at(0), \
QModelIndex());  else
@@ -194,7 +207,7 @@
 
 void DocDigestView::contextMenuEvent( QContextMenuEvent * event )
 {
-  QTreeWidget *currView = static_cast<QTreeWidget*>(mToolBox->currentWidget());
+  QTreeView *currView = mTreeViewIndex[ mToolBox->currentIndex() ];
 
   if( currView == mLatestView ) {
     mLatestMenu->popup( event->globalPos() );
@@ -251,11 +264,11 @@
 
 QString DocDigestView::currentDocumentId( ) const
 {
-  QModelIndex indx = mCurrentlySelected.sibling( mCurrentlySelected.row(), \
DocumentModel::Document_Ident ); +  QModelIndex indx = mCurrentlySelected.sibling( \
mCurrentlySelected.row(), DocumentModel::Document_Id);  
   const QString data = indx.data(Qt::DisplayRole).toString();
   kDebug() << "This is the current selected docID: " << data;
-  return QString();
+  return data;
 }
 
 void DocDigestView::slotCurrentChanged( QModelIndex index, QModelIndex previous )
@@ -265,15 +278,20 @@
   if(index.isValid())
   {
     DocumentModel *model = 0;
+    DocDigestDetailView *view = 0;
+
     if(index.model() == static_cast<QAbstractItemModel*>(mLatestDocModel)) {
       mCurrentlySelected = mLatestDocModel->mapToSource(index);
+      view = mLatestViewDetails;
       model = static_cast<DocumentModel*>(mLatestDocModel->sourceModel());
     } else if(index.model() == static_cast<QAbstractItemModel*>(mTimelineModel)) {
       mCurrentlySelected = mTimelineModel->mapToSource(index);
       model = static_cast<DocumentModel*>( mTimelineModel->sourceModel() );
+      view = mAllViewDetails;
     } else {
       mCurrentlySelected = mAllDocumentsModel->mapToSource(index);
       model = static_cast<DocumentModel*>( mAllDocumentsModel->sourceModel() );
+      view = mTimeLineViewDetails;
     }
 
     if(mCurrentlySelected.data(DocumentModel::DataType) == \
DocumentModel::DocumentType) { @@ -281,7 +299,8 @@
       QString id = idIndx.data( Qt::DisplayRole ).toString();
 
       emit docSelected( id );
-      slotShowDocDetails( model->digest( index ) );
+      view->slotShowDocDetails( model->digest( index ));
+
     } else if(mCurrentlySelected.data(DocumentModel::DataType) == \
                DocumentModel::ArchivedType) {
       emit archivedDocSelected( mCurrentlySelected.parent().data( \
                Qt::DisplayRole).toString(),
                                mCurrentlySelected.data( Qt::DisplayRole).toString() \
); @@ -295,47 +314,6 @@
   //kDebug() << "Supposed row: " << sourceIndex.row() << " Supposed ID: " << \
DocumentModel::self()->data(sourceIndex, Qt::DisplayRole);  }
 
-#define DOCDIGEST_TAG
-
-void DocDigestView::slotShowDocDetails( DocDigest digest )
-{
-  kDebug() << "Showing details about this doc: " << digest.id();
-
-  if( mTemplFile.isEmpty() ) {
-    KStandardDirs stdDirs;
-    // QString templFileName = QString( "kraftdoc_%1_ro.trml" ).arg( doc->docType() \
                );
-    QString templFileName = QString( "docdigest.trml" );
-    QString findFile = "kraft/reports/" + templFileName;
-
-    QString tmplFile = stdDirs.findResource( "data", findFile );
-
-    if ( tmplFile.isEmpty() ) {
-      kDebug() << "Could not find template to render document digest.";
-      return;
-    }
-    mTemplFile = tmplFile;
-  }
-
-  TextTemplate tmpl( mTemplFile ); // template file with name docdigest.trml
-
-  tmpl.setValue( DOCDIGEST_TAG( "HEADLINE" ), digest.type() + " " + digest.ident() \
                );
-  tmpl.setValue( DOCDIGEST_TAG( "DATE" ), digest.date() );
-
-  // Information about archived documents.
-  ArchDocDigestList archDocs = digest.archDocDigestList();
-  if( archDocs.isEmpty() ) {
-    kDebug() << "No archived docs for this document!";
-    tmpl.setValue( DOCDIGEST_TAG("ARCHDOCS_TAG"), i18n("This document was never \
                printed."));
-  } else {
-    ArchDocDigest digest = archDocs[0];
-    kDebug() << "Last printed at " << digest.printDate().toString() << " and " << \
                archDocs.count() -1 << " other prints.";
-    tmpl.setValue( DOCDIGEST_TAG("ARCHDOCS_TAG"), i18n("Last Printed %1, %2 older \
                prints.").arg(digest.printDate().toString()).arg(archDocs.count()-1));
                
-  }
-
-  mShowDocDetailsView->displayContent( tmpl.expand() );
-
-}
-
 QList<KMenu*> DocDigestView::contextMenus()
 {
   QList<KMenu*> menus;
--- trunk/playground/office/kraft/src/docdigestview.h #1221321:1221322
@@ -32,7 +32,7 @@
 class ArchDocDigest;
 class QContextMenuEvent;
 class QToolBox;
-class HtmlView;
+class DocDigestDetailView;
 
 class DocDigestView : public QWidget
 {
@@ -59,8 +59,8 @@
   void slotDocOpenRequest( QModelIndex );
   void slotCurrentChanged( QModelIndex, QModelIndex );
   void slotCurrentChangedToolbox ( int index );
-  void slotShowDocDetails( DocDigest );
 
+
 signals:
   void createDocument();
   void openDocument( const QString& );
@@ -76,6 +76,10 @@
   QTreeView *mLatestView;
   QTreeView *mTimeView;
 
+  DocDigestDetailView *mLatestViewDetails;
+  DocDigestDetailView *mAllViewDetails;
+  DocDigestDetailView *mTimeLineViewDetails;
+
   QModelIndex mCurrentlySelected;
 
   DocumentFilterModel *mAllDocumentsModel;
@@ -89,12 +93,12 @@
   KMenu *mAllMenu;
   KMenu *mLatestMenu;
 
-  HtmlView    *mShowDocDetailsView;
+  DocDigestDetailView    *mShowDocDetailsView;
   QToolBox    *mToolBox;
   QPushButton *mNewDocButton;
   QMap<QTreeWidgetItem*, QString> mDocIdDict;
   QMap<QTreeWidgetItem*, ArchDocDigest> mArchIdDict;
-  QString      mTemplFile;
+  QVector<QTreeView*>    mTreeViewIndex;
 };
 
 #endif
--- trunk/playground/office/kraft/styles/docdigestview.css #1221321:1221322
@@ -1,36 +1,59 @@
-body { margin:20px; 
-       background-image:url(pics/docoverviewbg.png); 
-       color: #4e4e4e;
-       font-size:x-small;
-}
 
-td { 
-  vertical-align:top;
+* { font-size: 97%;
 }
 
 div {
-  border-style:none;
-  border-width:0px;
-  border-color:#00008B;
-  margin: 1px 0px 1px 0px;
-  padding: 1px;
+  font-size:75%;
+  padding: 0px 5px 0px 10px;
+  margin: 0px 5px 0px 5px;
 }
 
-.negative {
-  color: #800040;
+p {
+  padding: 3px 3px 1px 3px;
+  margin: 0px 0px 0px 7px;
 }
 
-.positive {
-
+div.error {
+  background-color: #ffcbcb;
+  padding: 5px;
+  margin: 0px 5px 3px 5px;
+  border-left: 1px solid #ed2d00;
+  border-right: 1px solid #ed2d00;
+  border-bottom: 1px solid #ed2d00;
+  border-top:0px;
 }
 
 h2 {
-  border-bottom: 2px inset #000000;
-  vertical-align: text-bottom;
-  background-image:url(pics/docoverview_h2_bg.png);
-  background-repeat: no-repeat;
-  background-position: right;
-  image-repeat: none;
-  height: 64px;
+  margin:10px 5px 0px 5px;
+  padding:2px 2px 2px 10px;
+  border-left:10px solid #57a62f;
+  border-bottom:1px solid #57a62f;
+}
 
+h2.error {
+  background-color: #ffcbcb;
+
+  border-left: 1px solid #ed2d00;
+  border-right: 1px solid #ed2d00;
+  border-top: 1px solid #ed2d00;
+  border-bottom:0px;
+
 }
+
+table {
+  border-collapse: collapse; 
+  margin-top: 5px;
+}
+
+td {
+  margin: 0px;
+  padding-left: 5mm;
+  padding-right:5mm;
+
+  padding-top: 1mm;
+  padding-bottom: 1mm;
+}
+
+table tr.odd {
+  background: #dffdd0;
+}


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

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