[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>&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