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

List:       kde-commits
Subject:    KDE/kdeutils/ark
From:       Raphael Kubo da Costa <kubito () gmail ! com>
Date:       2009-07-28 23:11:58
Message-ID: 1248822718.534234.19259.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1003881 by rkcosta:

Remember infopanel's last width and add a menu option to toggle its visibility.

CCBUG: 169368

 M  +4 -0      app/arkui.rc  
 M  +4 -0      part/ark.kcfg  
 M  +4 -0      part/ark_part.rc  
 M  +49 -11    part/part.cpp  
 M  +4 -0      part/part.h  


--- trunk/KDE/kdeutils/ark/app/arkui.rc #1003880:1003881
@@ -7,6 +7,10 @@
 		<Action name="file_open_recent"/>
 	</Menu>
 	<Merge/>
+    <Menu name="settings"><text>&amp;Settings</text>
+        <!-- This is a hack: we cannot use append from a KPart -->
+        <DefineGroup name="extra_settings" append="show_merge"/>
+    </Menu>
 </MenuBar>
 <ToolBar noMerge="1" name="mainToolBar">
 	<text>Main Toolbar</text>
--- trunk/KDE/kdeutils/ark/part/ark.kcfg #1003880:1003881
@@ -10,4 +10,8 @@
 			<default>false</default>
 		</entry>
 	</group>
+    <group name="MainWindow">
+        <entry name="splitterSizes" type="IntList" />
+        <entry name="splitterSizesWithBothWidgets" type="IntList" />
+    </group>
 </kcfg>
--- trunk/KDE/kdeutils/ark/part/ark_part.rc #1003880:1003881
@@ -9,6 +9,10 @@
 		<Action name="extract"/>
 		<Action name="preview"/>
 	</Menu>
+    <Menu name="settings">
+        <!-- This is a hack: we cannot use append from a KPart -->
+        <Action name="show-infopanel" group="extra_settings"/>
+    </Menu>
 </MenuBar>
 <ToolBar name="mainToolBar">
 	<Action name="add"/>
--- trunk/KDE/kdeutils/ark/part/part.cpp #1003880:1003881
@@ -41,11 +41,11 @@
 #include <KIcon>
 #include <KTempDir>
 #include <KMessageBox>
-#include <KVBox>
 #include <KRun>
 #include <KFileDialog>
 #include <KConfigGroup>
 #include <KStandardDirs>
+#include <KToggleAction>
 #include <KIO/NetAccess>
 
 #include <QCursor>
@@ -67,25 +67,34 @@
 K_EXPORT_COMPONENT_FACTORY(arkpart, Factory)
 
 Part::Part(QWidget *parentWidget, QObject *parent, const QStringList& args)
-        : KParts::ReadWritePart(parent), m_model(new ArchiveModel(this)), \
                m_previewDir(0), m_busy(false),
-        m_jobTracker(NULL)
+        : KParts::ReadWritePart(parent),
+          m_model(new ArchiveModel(this)),
+          m_splitter(0),
+          m_previewDir(0),
+          m_busy(false),
+          m_jobTracker(0)
 {
     Q_UNUSED(args);
     setComponentData(Factory::componentData());
-    setXMLFile("ark_part.rc");
 
-    KVBox *mainWidget = new KVBox(parentWidget);
-    setWidget(mainWidget);
+    m_splitter = new QSplitter(Qt::Horizontal, parentWidget);
+    setWidget(m_splitter);
 
-    QSplitter *splitter = new QSplitter(Qt::Horizontal, mainWidget);
-    m_view = new ArchiveView(mainWidget);
-    m_infoPanel = new InfoPanel(m_model, mainWidget);
-    splitter->addWidget(m_view);
-    splitter->addWidget(m_infoPanel);
+    m_view = new ArchiveView(m_splitter);
+    m_infoPanel = new InfoPanel(m_model, m_splitter);
 
+    QList<int> splitterSizes = ArkSettings::splitterSizes();
+    if (splitterSizes.isEmpty()) {
+        splitterSizes.append(200);
+        splitterSizes.append(100);
+    }
+    m_splitter->setSizes(splitterSizes);
+
     setupView();
     setupActions();
 
+    connect(m_splitter, SIGNAL(splitterMoved(int, int)), \
SLOT(slotUpdateSplitterSizes())); +
     connect(m_model, SIGNAL(loadingStarted()),
             this, SLOT(slotLoadingStarted()));
     connect(m_model, SIGNAL(loadingFinished(KJob *)),
@@ -107,6 +116,7 @@
     new DndExtractAdaptor(this);
     QDBusConnection::sessionBus().registerObject("/DndExtract", this);
 
+    setXMLFile("ark_part.rc");
 }
 
 Part::~Part()
@@ -194,6 +204,12 @@
 
 void Part::setupActions()
 {
+    KToggleAction *showInfoPanelAction = new KToggleAction(i18n("Show information \
panel"), this); +    actionCollection()->addAction("show-infopanel", \
showInfoPanelAction); +    showInfoPanelAction->setChecked(m_splitter->sizes().at(1) \
> 0); +    connect(showInfoPanelAction, SIGNAL(triggered(bool)),
+            this, SLOT(slotToggleInfoPanel(bool)));
+
     m_previewAction = actionCollection()->addAction("preview");
     m_previewAction->setText(i18nc("to preview a file inside an archive", \
"Pre&view"));  m_previewAction->setIcon(KIcon("document-preview-archive"));
@@ -720,3 +736,25 @@
     registerJob(job);
     job->start();
 }
+
+void Part::slotToggleInfoPanel(bool visible)
+{
+    QList<int> splitterSizes;
+
+    if (visible) {
+        splitterSizes = ArkSettings::splitterSizesWithBothWidgets();
+    } else {
+        splitterSizes = m_splitter->sizes();
+        ArkSettings::setSplitterSizesWithBothWidgets(splitterSizes);
+        splitterSizes[1] = 0;
+    }
+
+    m_splitter->setSizes(splitterSizes);
+    slotUpdateSplitterSizes();
+}
+
+void Part::slotUpdateSplitterSizes()
+{
+    ArkSettings::setSplitterSizes(m_splitter->sizes());
+    ArkSettings::self()->writeConfig();
+}
--- trunk/KDE/kdeutils/ark/part/part.h #1003880:1003881
@@ -30,6 +30,7 @@
 class ArchiveModel;
 class InfoPanel;
 
+class QSplitter;
 class QTreeView;
 class QAction;
 class KAction;
@@ -72,6 +73,8 @@
     void slotAddFilesDone(KJob*);
     void slotDeleteFiles();
     void slotDeleteFilesDone(KJob*);
+    void slotUpdateSplitterSizes();
+    void slotToggleInfoPanel(bool);
     void updateActions();
     void selectionChanged();
     void adjustColumns();
@@ -103,6 +106,7 @@
     QAction              *m_addDirAction;
     QAction              *m_deleteFilesAction;
     InfoPanel            *m_infoPanel;
+    QSplitter            *m_splitter;
     KTempDir             *m_previewDir;
     bool                  m_busy;
 


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

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