summaryrefslogtreecommitdiffstats
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-09-12 11:18:07 -0400
committerKohei Yoshida <kohei.yoshida@suse.com>2011-09-12 13:22:07 -0400
commitabccf9b8e5f331a27f188ec5246a9e0f64f287dd (patch)
treee7d468796e5b003d1e196c547374894d75e109fa /sc
parentAdded code to handle paste functions and skip empties. (diff)
downloadcore-abccf9b8e5f331a27f188ec5246a9e0f64f287dd.tar.gz
core-abccf9b8e5f331a27f188ec5246a9e0f64f287dd.zip
Moved PasteFromClipboard() from ScCellShell to ScClipUtil (new class).
Diffstat (limited to 'sc')
-rw-r--r--sc/Library_sc.mk1
-rw-r--r--sc/source/ui/inc/cellsh.hxx2
-rw-r--r--sc/source/ui/inc/cliputil.hxx42
-rw-r--r--sc/source/ui/view/cellsh1.cxx53
-rw-r--r--sc/source/ui/view/cliputil.cxx87
-rw-r--r--sc/source/ui/view/gridwin.cxx3
6 files changed, 134 insertions, 54 deletions
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 70cd612517a0..27b142fb079e 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -472,6 +472,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/ui/view/cellsh3 \
sc/source/ui/view/cellsh4 \
sc/source/ui/view/colrowba \
+ sc/source/ui/view/cliputil \
sc/source/ui/view/dbfunc \
sc/source/ui/view/dbfunc2 \
sc/source/ui/view/dbfunc3 \
diff --git a/sc/source/ui/inc/cellsh.hxx b/sc/source/ui/inc/cellsh.hxx
index b7cc54f5b7ef..26660292c58f 100644
--- a/sc/source/ui/inc/cellsh.hxx
+++ b/sc/source/ui/inc/cellsh.hxx
@@ -108,8 +108,6 @@ public:
void ExecutePageSel( SfxRequest& rReq );
void ExecuteMove( SfxRequest& rReq );
void GetStateCursor( SfxItemSet& rSet );
-
- static void PasteFromClipboard( ScViewData* pViewData, ScTabViewShell* pTabViewShell, bool bShowDialog );
};
#endif
diff --git a/sc/source/ui/inc/cliputil.hxx b/sc/source/ui/inc/cliputil.hxx
new file mode 100644
index 000000000000..04a966c34242
--- /dev/null
+++ b/sc/source/ui/inc/cliputil.hxx
@@ -0,0 +1,42 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 Kohei Yoshida <kohei.yoshida@suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef __SC_CLIPUTIL_HXX__
+#define __SC_CLIPUTIL_HXX__
+
+class ScViewData;
+class ScTabViewShell;
+
+class ScClipUtil
+{
+ ScClipUtil();
+ ~ScClipUtil();
+public:
+ static void PasteFromClipboard( ScViewData* pViewData, ScTabViewShell* pTabViewShell, bool bShowDialog );
+};
+
+#endif
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index a959020dea79..8a703b80f119 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -100,6 +100,7 @@
#include "dpshttab.hxx" // ScSheetSourceDesc
#include "dbdata.hxx"
#include "docsh.hxx"
+#include "cliputil.hxx"
#include "globstr.hrc"
#include "scui_def.hxx"
@@ -1169,7 +1170,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
case SID_PASTE:
{
- PasteFromClipboard ( GetViewData(), pTabViewShell, true );
+ ScClipUtil::PasteFromClipboard ( GetViewData(), pTabViewShell, true );
rReq.Done();
}
break;
@@ -2433,54 +2434,4 @@ IMPL_LINK( ScCellShell, DialogClosed, AbstractScLinkedAreaDlg*, EMPTYARG )
return 0;
}
-void ScCellShell::PasteFromClipboard( ScViewData* pViewData, ScTabViewShell* pTabViewShell, bool bShowDialog )
-{
- Window* pWin = pViewData->GetActiveWin();
- ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard( pWin );
- ScDocument* pThisDoc = pViewData->GetDocument();
- ScDPObject* pDPObj = pThisDoc->GetDPAtCursor( pViewData->GetCurX(),
- pViewData->GetCurY(), pViewData->GetTabNo() );
- if ( pOwnClip && pDPObj )
- {
- // paste from Calc into DataPilot table: sort (similar to drag & drop)
-
- ScDocument* pClipDoc = pOwnClip->GetDocument();
- SCTAB nSourceTab = pOwnClip->GetVisibleTab();
-
- SCCOL nClipStartX;
- SCROW nClipStartY;
- SCCOL nClipEndX;
- SCROW nClipEndY;
- pClipDoc->GetClipStart( nClipStartX, nClipStartY );
- pClipDoc->GetClipArea( nClipEndX, nClipEndY, sal_True );
- nClipEndX = nClipEndX + nClipStartX;
- nClipEndY = nClipEndY + nClipStartY; // GetClipArea returns the difference
-
- ScRange aSource( nClipStartX, nClipStartY, nSourceTab, nClipEndX, nClipEndY, nSourceTab );
- sal_Bool bDone = pTabViewShell->DataPilotMove( aSource, pViewData->GetCurPos() );
- if ( !bDone )
- pTabViewShell->ErrorMessage( STR_ERR_DATAPILOT_INPUT );
- }
- else
- {
- // normal paste
- WaitObject aWait( pViewData->GetDialogParent() );
- if (!pOwnClip)
- pTabViewShell->PasteFromSystem();
- else
- {
- ScDocument* pClipDoc = pOwnClip->GetDocument();
- sal_uInt16 nFlags = IDF_ALL;
- if (pClipDoc->GetClipParam().isMultiRange())
- // For multi-range paste, we paste values by default.
- nFlags &= ~IDF_FORMULA;
-
- pTabViewShell->PasteFromClip( nFlags, pClipDoc,
- PASTE_NOFUNC, false, false, false, INS_NONE, IDF_NONE,
- bShowDialog ); // allow warning dialog
- }
- }
- pTabViewShell->CellContentChanged(); // => PasteFromSystem() ???
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/cliputil.cxx b/sc/source/ui/view/cliputil.cxx
new file mode 100644
index 000000000000..d7a6f882677c
--- /dev/null
+++ b/sc/source/ui/view/cliputil.cxx
@@ -0,0 +1,87 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 Kohei Yoshida <kohei.yoshida@suse.com>
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "cliputil.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "transobj.hxx"
+#include "document.hxx"
+#include "dpobject.hxx"
+#include "globstr.hrc"
+#include "clipparam.hxx"
+
+#include "vcl/waitobj.hxx"
+
+void ScClipUtil::PasteFromClipboard( ScViewData* pViewData, ScTabViewShell* pTabViewShell, bool bShowDialog )
+{
+ Window* pWin = pViewData->GetActiveWin();
+ ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard( pWin );
+ ScDocument* pThisDoc = pViewData->GetDocument();
+ ScDPObject* pDPObj = pThisDoc->GetDPAtCursor( pViewData->GetCurX(),
+ pViewData->GetCurY(), pViewData->GetTabNo() );
+ if ( pOwnClip && pDPObj )
+ {
+ // paste from Calc into DataPilot table: sort (similar to drag & drop)
+
+ ScDocument* pClipDoc = pOwnClip->GetDocument();
+ SCTAB nSourceTab = pOwnClip->GetVisibleTab();
+
+ SCCOL nClipStartX;
+ SCROW nClipStartY;
+ SCCOL nClipEndX;
+ SCROW nClipEndY;
+ pClipDoc->GetClipStart( nClipStartX, nClipStartY );
+ pClipDoc->GetClipArea( nClipEndX, nClipEndY, sal_True );
+ nClipEndX = nClipEndX + nClipStartX;
+ nClipEndY = nClipEndY + nClipStartY; // GetClipArea returns the difference
+
+ ScRange aSource( nClipStartX, nClipStartY, nSourceTab, nClipEndX, nClipEndY, nSourceTab );
+ sal_Bool bDone = pTabViewShell->DataPilotMove( aSource, pViewData->GetCurPos() );
+ if ( !bDone )
+ pTabViewShell->ErrorMessage( STR_ERR_DATAPILOT_INPUT );
+ }
+ else
+ {
+ // normal paste
+ WaitObject aWait( pViewData->GetDialogParent() );
+ if (!pOwnClip)
+ pTabViewShell->PasteFromSystem();
+ else
+ {
+ ScDocument* pClipDoc = pOwnClip->GetDocument();
+ sal_uInt16 nFlags = IDF_ALL;
+ if (pClipDoc->GetClipParam().isMultiRange())
+ // For multi-range paste, we paste values by default.
+ nFlags &= ~IDF_FORMULA;
+
+ pTabViewShell->PasteFromClip( nFlags, pClipDoc,
+ PASTE_NOFUNC, false, false, false, INS_NONE, IDF_NONE,
+ bShowDialog ); // allow warning dialog
+ }
+ }
+ pTabViewShell->CellContentChanged(); // => PasteFromSystem() ???
+}
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 305a68eda2aa..1e66a2b7f8c6 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -130,6 +130,7 @@
#include "cellsuno.hxx"
#include "drawview.hxx"
#include "dragdata.hxx"
+#include "cliputil.hxx"
#include <svx/sdrpagewindow.hxx>
#include <svx/sdr/overlay/overlaymanager.hxx>
@@ -3044,7 +3045,7 @@ void ScGridWindow::KeyInput(const KeyEvent& rKEvt)
else if( rKeyCode.GetCode() == KEY_RETURN && pViewData->IsPasteMode() )
{
ScTabViewShell* pTabViewShell = pViewData->GetViewShell();
- ScCellShell::PasteFromClipboard( pViewData, pTabViewShell, false );
+ ScClipUtil::PasteFromClipboard( pViewData, pTabViewShell, false );
// Clear clipboard content.
uno::Reference<datatransfer::clipboard::XClipboard> xSystemClipboard =