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

List:       kde-commits
Subject:    koffice/lib/kofficecore
From:       Peter Simonsson <psn () linux ! se>
Date:       2005-11-19 15:39:21
Message-ID: 1132414761.053781.345.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 481571 by psn:

* Use a custom widget instead of kjanuswidget
* add a separator between recent docs and templates


 M  +1 -1      Makefile.am  
 M  +64 -32    koOpenPane.cc  
 M  +11 -3     koOpenPane.h  
 A             koOpenPaneBase.ui  


--- trunk/koffice/lib/kofficecore/Makefile.am #481570:481571
@@ -29,7 +29,7 @@
 	KoMainWindowIface.cc KoMainWindowIface.skel kofficeversion.cc koOasisStyles.cc \
 	koStyleStack.cc koGenStyles.cpp koOasisSettings.cc koPageLayout.cpp \
 	kofiledialog.cpp koxmlns.cpp kodom.cpp koversiondialog.cc koOasisStore.cpp \
-	kkbdaccessextensions.cpp koDetailsPaneBase.ui koOpenPane.cc \
+	kkbdaccessextensions.cpp koDetailsPaneBase.ui koOpenPaneBase.ui koOpenPane.cc \
 	koTemplates.cc koDetailsPane.cc
 
 libkofficecore_la_LDFLAGS = $(all_libraries) -version-info 3:0:0 -no-undefined
--- trunk/koffice/lib/kofficecore/koOpenPane.cc #481570:481571
@@ -21,16 +21,17 @@
 
 #include <qvbox.h>
 #include <qlayout.h>
+#include <qheader.h>
+#include <qwidgetstack.h>
+#include <qlabel.h>
 
-#include <kjanuswidget.h>
 #include <klocale.h>
-#include <kdeversion.h>
 #include <kfiledialog.h>
 #include <kinstance.h>
 #include <kpushbutton.h>
 #include <kiconloader.h>
 #include <kdebug.h>
-#include <kdialog.h>
+#include <klistview.h>
 
 #include "koFilterManager.h"
 #include "koTemplates.h"
@@ -51,66 +52,97 @@
 };
 
 KoOpenPane::KoOpenPane(QWidget *parent, KInstance* instance, const QString& \
                templateType)
-  : QWidget(parent, "OpenPane")
+  : KoOpenPaneBase(parent, "OpenPane")
 {
   d = new KoOpenPanePrivate;
   d->m_instance = instance;
 
-  QVBoxLayout* layout = new QVBoxLayout(this, KDialog::marginHint(), \
                KDialog::spacingHint());
-  layout->setAutoAdd(true);
-  d->m_mainWidget = new KJanusWidget(this,"OpenPane", KJanusWidget::TreeList);
+  m_sectionList->header()->hide();
+  m_sectionList->setSorting(-1); // Disable sorting
+  connect(m_sectionList, SIGNAL(selectionChanged(QListViewItem*)),
+          this, SLOT(selectionChanged(QListViewItem*)));
 
   KGuiItem openExistingGItem(i18n("Open Existing Document"), "fileopen");
-  d->m_mainWidget->addButtonBelowList(openExistingGItem, this, \
                SLOT(showOpenFileDialog()));
-  d->m_mainWidget->setRootIsDecorated(false);
-  d->m_mainWidget->setShowIconsInTreeList(true);
+  m_openExistingButton->setGuiItem(openExistingGItem);
+  connect(m_openExistingButton, SIGNAL(clicked()), this, \
SLOT(showOpenFileDialog()));  
-  QVBox* page = d->m_mainWidget->addVBoxPage(i18n("Recent Documents"), i18n("Recent \
                Documents"),
-                                             SmallIcon("fileopen", KIcon::SizeLarge,
-                                                 KIcon::DefaultState, instance));
-  KoRecentDocumentsPane* recentDocPane = new KoRecentDocumentsPane(page, instance);
+  initRecentDocs();
+
+  QListViewItem* separator = new QListViewItem(m_sectionList, \
m_sectionList->lastItem(), ""); +  separator->setEnabled(false);
+
+  initTemplates(templateType);
+
+  m_sectionList->setSelected(m_sectionList->firstChild(), true);
+}
+
+KoOpenPane::~KoOpenPane()
+{
+  delete d;
+}
+
+void KoOpenPane::showOpenFileDialog()
+{
+  const QStringList mimeFilter = \
KoFilterManager::mimeFilter(KoDocument::readNativeFormatMimeType(), +      \
KoFilterManager::Import, +      KoDocument::readExtraNativeMimeTypes());
+
+  KURL url = KFileDialog::getOpenURL(":OpenDialog", mimeFilter.join(" "), this);
+
+  emit openExistingFile(url.path());
+}
+
+void KoOpenPane::initRecentDocs()
+{
+  KoRecentDocumentsPane* recentDocPane = new KoRecentDocumentsPane(this, \
d->m_instance);  connect(recentDocPane, SIGNAL(openFile(const QString&)), this, \
SIGNAL(openExistingFile(const QString&))); +  addPane(i18n("Recent Documents"), \
"fileopen", recentDocPane); +}
 
-  //kdDebug() << "Template type: " << templateType << endl;
-
+void KoOpenPane::initTemplates(const QString& templateType)
+{
   if(!templateType.isEmpty())
   {
-    KoTemplateTree templateTree(templateType.local8Bit(), instance, true);
+    KoTemplateTree templateTree(templateType.local8Bit(), d->m_instance, true);
 
     for (KoTemplateGroup *group = templateTree.first(); group != 0L; group = \
templateTree.next()) {  if (group->isHidden()) {
         continue;
       }
 
-      page = d->m_mainWidget->addVBoxPage(group->name(), group->name(),
-                                          group->first()->loadPicture(instance));
-      KoTemplatesPane* pane = new KoTemplatesPane(page, instance, group);
+      KoTemplatesPane* pane = new KoTemplatesPane(this, d->m_instance, group);
       connect(pane, SIGNAL(openTemplate(const QString&)), this, \
SIGNAL(openTemplate(const QString&))); +      addPane(group->name(), \
group->first()->loadPicture(d->m_instance), pane);  }
   }
 }
 
-KoOpenPane::~KoOpenPane()
+void KoOpenPane::addPane(const QString& title, const QString& icon, QWidget* widget)
 {
-  delete d;
+  addPane(title, SmallIcon(icon, KIcon::SizeLarge, KIcon::DefaultState, \
d->m_instance), widget);  }
 
-void KoOpenPane::showOpenFileDialog()
+void KoOpenPane::addPane(const QString& title, const QPixmap& icon, QWidget* widget)
 {
-  const QStringList mimeFilter = \
                KoFilterManager::mimeFilter(KoDocument::readNativeFormatMimeType(),
-      KoFilterManager::Import,
-      KoDocument::readExtraNativeMimeTypes());
+  if(!widget) {
+    return;
+  }
 
-  KURL url = KFileDialog::getOpenURL(":OpenDialog", mimeFilter.join(" "), this);
+  KListViewItem* listItem = new KListViewItem(m_sectionList, \
m_sectionList->lastItem(), title);  
-  emit openExistingFile(url.path());
+  if(!icon.isNull()) {
+    listItem->setPixmap(0, icon);
+  }
+
+  int id = m_widgetStack->addWidget(widget);
+  listItem->setText(1, QString::number(id));
 }
 
-void KoOpenPane::addCustomDocumentPane(const QString& title, const QString& icon, \
QWidget* widget) +void KoOpenPane::selectionChanged(QListViewItem* item)
 {
-  QVBox* page = d->m_mainWidget->addVBoxPage(title, title, SmallIcon(icon,
-                                             48, KIcon::DefaultState, \
                d->m_instance));
-  widget->reparent(page, QPoint(0, 0));
+  m_headerLabel->setText(item->text(0));
+  m_widgetStack->raiseWidget(item->text(1).toInt());
 }
 
+
 #include "koOpenPane.moc"
--- trunk/koffice/lib/kofficecore/koOpenPane.h #481570:481571
@@ -19,15 +19,16 @@
 #ifndef KOOPENPANE_H
 #define KOOPENPANE_H
 
-#include <qwidget.h>
+#include <koOpenPaneBase.h>
 
 class KoCustomDocumentCreator;
 class KConfig;
 class KoTemplateGroup;
 class KoOpenPanePrivate;
 class KInstance;
+class QPixmap;
 
-class KoOpenPane : public QWidget
+class KoOpenPane : public KoOpenPaneBase
 {
   Q_OBJECT
 
@@ -35,15 +36,22 @@
     KoOpenPane(QWidget *parent, KInstance* instance, const QString& templateType = \
QString::null);  virtual ~KoOpenPane();
 
-    void addCustomDocumentPane(const QString& title, const QString& icon, QWidget* \
widget); +    void addPane(const QString& title, const QString& icon, QWidget* \
widget); +    void addPane(const QString& title, const QPixmap& icon, QWidget* \
widget);  
   protected slots:
     void showOpenFileDialog();
 
+    void selectionChanged(QListViewItem* item);
+
   signals:
     void openExistingFile(const QString&);
     void openTemplate(const QString&);
 
+  protected:
+    void initRecentDocs();
+    void initTemplates(const QString& templateType);
+
   private:
     KoOpenPanePrivate* d;
 };


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

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