Skip to content

Commit f245d57

Browse files
Support ShareTarget.
1 parent 7487dfe commit f245d57

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

NanaZip/App.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
#pragma once
2+
3+
#include <winrt/Windows.ApplicationModel.Activation.h>
4+
25
#include "App.xaml.g.h"
36

7+
namespace winrt
8+
{
9+
using Windows::ApplicationModel::Activation::LaunchActivatedEventArgs;
10+
using Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs;
11+
}
12+
413
namespace winrt::NanaZip::implementation
514
{
615
class App : public AppT<App>
716
{
817
public:
918
App();
1019
void Close();
20+
void OnLaunched(winrt::LaunchActivatedEventArgs const& args);
21+
void OnShareTargetActivated(winrt::ShareTargetActivatedEventArgs const& args);
1122
};
1223
}

NanaZip/App.xaml.cpp

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,31 @@
22

33
#include "App.h"
44

5+
#include <winrt/Windows.ApplicationModel.h>
6+
#include <winrt/Windows.ApplicationModel.DataTransfer.h>
7+
#include <winrt/Windows.ApplicationModel.DataTransfer.ShareTarget.h>
8+
#include <winrt/Windows.Foundation.h>
9+
#include <winrt/Windows.Foundation.Collections.h>
10+
#include <winrt/Windows.Storage.h>
11+
512
#include <Mile.Xaml.h>
613

14+
#include "../ThirdParty/LZMA/CPP/Common/Common.h"
15+
#include "../SevenZip/CPP/7zip/UI/Common/CompressCall.h"
16+
17+
namespace winrt
18+
{
19+
using winrt::Windows::ApplicationModel::AppInstance;
20+
using winrt::Windows::ApplicationModel::Activation::ActivationKind;
21+
using winrt::Windows::ApplicationModel::Activation::IActivatedEventArgs;
22+
using winrt::Windows::ApplicationModel::DataTransfer::StandardDataFormats;
23+
using winrt::Windows::ApplicationModel::DataTransfer::ShareTarget::ShareOperation;
24+
using winrt::Windows::Foundation::Collections::IVectorView;
25+
using winrt::Windows::Storage::IStorageItem;
26+
using winrt::Windows::Storage::IStorageItem2;
27+
}
28+
29+
730
namespace winrt::NanaZip::implementation
831
{
932
App::App()
@@ -16,4 +39,47 @@ namespace winrt::NanaZip::implementation
1639
Exit();
1740
::MileXamlGlobalUninitialize();
1841
}
42+
43+
void App::OnLaunched(winrt::LaunchActivatedEventArgs const& args)
44+
{
45+
UNREFERENCED_PARAMETER(args);
46+
if (winrt::IActivatedEventArgs e = winrt::AppInstance::GetActivatedEventArgs())
47+
{
48+
switch (e.Kind())
49+
{
50+
case winrt::ActivationKind::ShareTarget:
51+
this->OnShareTargetActivated(e.as<winrt::ShareTargetActivatedEventArgs>());
52+
break;
53+
default:
54+
break;
55+
}
56+
}
57+
}
58+
59+
void App::OnShareTargetActivated(winrt::ShareTargetActivatedEventArgs const& args)
60+
{
61+
if (args.ShareOperation().Data().Contains(winrt::StandardDataFormats::StorageItems()))
62+
{
63+
winrt::IVectorView<winrt::IStorageItem> items = args.ShareOperation().Data().GetStorageItemsAsync().get();
64+
UStringVector fileNames;
65+
for (winrt::IStorageItem const item : items)
66+
{
67+
fileNames.Add(item.Path().c_str());
68+
}
69+
winrt::IStorageItem2 baseFolder = items.GetAt(0).as<winrt::IStorageItem2>().GetParentAsync().get();
70+
71+
winrt::check_hresult(::CompressFiles(
72+
baseFolder.Path().c_str(),
73+
baseFolder.Name().c_str(),
74+
L"",
75+
true,
76+
fileNames,
77+
true,
78+
true,
79+
false));
80+
}
81+
82+
args.ShareOperation().ReportCompleted();
83+
::ExitProcess(0);
84+
}
1985
}

NanaZipPackage/Package.appxmanifest

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@
196196
<uap:ShowOn Tile="square310x310Logo"/>
197197
</uap:ShowNameOnTiles>
198198
</uap:DefaultTile>
199+
<uap:SplashScreen Image="Assets\Wide310x150Logo.png" />
199200
</uap:VisualElements>
200201
<Extensions>
201202
<uap3:Extension
@@ -267,6 +268,14 @@
267268
</uap:SupportedFileTypes>
268269
</uap3:FileTypeAssociation>
269270
</uap:Extension>
271+
<uap:Extension Category="windows.shareTarget">
272+
<uap:ShareTarget Description="ms-resource:///Legacy/Resource2329" uap10:DisplayName="ms-resource:///Legacy/Resource2329">
273+
<uap:SupportedFileTypes>
274+
<uap:SupportsAnyFileType />
275+
</uap:SupportedFileTypes>
276+
<uap:DataFormat>StorageItems</uap:DataFormat>
277+
</uap:ShareTarget>
278+
</uap:Extension>
270279
<desktop4:Extension Category="windows.fileExplorerContextMenus">
271280
<desktop4:FileExplorerContextMenus>
272281
<!-- Our verb name starts with "C" to work around a bug preventing our shell menu from appearing in the

0 commit comments

Comments
 (0)