~ubuntu-branches/ubuntu/wily/opencollada/wily

« back to all changes in this revision

Viewing changes to G3DWarehouseBrowser/src/G3DDocHostUiHandler.cpp

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    Copyright (c) 2009 NetAllied Systems GmbH
 
3
 
 
4
          This file is part of G3DWarehouseBrowser.
 
5
 
 
6
    Licensed under the MIT Open Source License, 
 
7
    for details please see LICENSE file or the website
 
8
    http://www.opensource.org/licenses/mit-license.php
 
9
*/
 
10
 
 
11
#include "G3DStableHeaders.h"
 
12
#include "G3DDocHostUiHandler.h"
 
13
#include "G3DDownloadFile.h"
 
14
#include "G3DBrowser.h"
 
15
 
 
16
#include <map>
 
17
#include <string>
 
18
 
 
19
 
 
20
namespace G3D
 
21
{
 
22
        //---------------------------------------------------------------------
 
23
        void DocHostUiHandler::setClientSite(IOleClientSite* o) {
 
24
          mClientSite = o;
 
25
        }
 
26
        //---------------------------------------------------------------------
 
27
        HRESULT STDMETHODCALLTYPE DocHostUiHandler::TranslateUrl (
 
28
                 DWORD                         dwTranslate, 
 
29
                 OLECHAR __RPC_FAR*            pchURLIn, 
 
30
                 OLECHAR __RPC_FAR* __RPC_FAR* ppchURLOut) {
 
31
                
 
32
                OLECHAR* src = pchURLIn;
 
33
 
 
34
                //      determine length of URL
 
35
                while ( (*(src)++) );
 
36
                --src;
 
37
                size_t len = src - pchURLIn;
 
38
                size_t urlStartStringLen = wcslen(URL_START_STRING);
 
39
                size_t urlStartStringLen2 = wcslen(URL_START_STRING2);
 
40
 
 
41
                if ( ( ( len >=  urlStartStringLen ) &&  
 
42
                           !_wcsnicmp(pchURLIn, URL_START_STRING , urlStartStringLen) 
 
43
                         ) || 
 
44
                         ( ( len >=  urlStartStringLen2 ) && 
 
45
                           !_wcsnicmp(pchURLIn, URL_START_STRING2 , urlStartStringLen2)
 
46
                         )
 
47
                         )
 
48
                {
 
49
                        //      modify URL
 
50
                        WideString inString ( pchURLIn );
 
51
                        size_t fromPos = inString.find( L"rtyp=" );
 
52
                        size_t lenPos = inString.find( L"&fn=" );
 
53
                        inString.replace(fromPos,lenPos-fromPos, L"rtyp=zs" );
 
54
                        inString = inString.substr(inString.find( L"http://" ));
 
55
                
 
56
                        //      get filename
 
57
                        fromPos = inString.find( L"&fn=" ) + 4;
 
58
                        lenPos = inString.find( L"&ctyp=" );
 
59
                        WideString fileName = inString.substr(fromPos, lenPos-fromPos);
 
60
                        for ( UINT i = 0; i < fileName.length(); i++)
 
61
                        {
 
62
                                if (fileName[i] =='+')
 
63
                                {
 
64
                                        fileName.replace(i,1,L"_");
 
65
                                        i++;
 
66
                                }
 
67
                        }
 
68
                        fileName.append(L".zip");
 
69
 
 
70
                        mFilePath.append(fileName.c_str());
 
71
                        
 
72
                        DownloadFile test;
 
73
                        test.getFile(inString.c_str(), mFilePath.c_str(), mHwndProgress);
 
74
                        
 
75
                        
 
76
                        // close Browser
 
77
                        Browser::getSingletonPtr()->closeBrowser();
 
78
 
 
79
                        return cancelNavigation(ppchURLOut);
 
80
                }
 
81
                else if (len >=  4 && !_wcsnicmp(pchURLIn, L"skp:" , 4))
 
82
                {
 
83
                        MessageBox(0,L"This operation is not supported!", L"Error", MB_OK );
 
84
                        return cancelNavigation(ppchURLOut);
 
85
                }
 
86
 
 
87
                //      do nothing
 
88
                *ppchURLOut = 0;
 
89
                return S_FALSE;         
 
90
        }
 
91
        //---------------------------------------------------------------------
 
92
        HRESULT DocHostUiHandler::cancelNavigation(OLECHAR __RPC_FAR* __RPC_FAR* ppchURLOut)
 
93
        {
 
94
                OLECHAR* dest;
 
95
                if ((dest = (OLECHAR *)CoTaskMemAlloc(2 << 1)))
 
96
                {
 
97
                        *ppchURLOut = dest;
 
98
                        CopyMemory(dest, L" ", 2 << 1);
 
99
                        return S_OK;
 
100
                }
 
101
                *ppchURLOut = 0;
 
102
                return S_FALSE;
 
103
        }
 
104
 
 
105
 
 
106
        //---------------------------------------------------------------------
 
107
        /* Be sure to use CoTaskMemAlloc to allocate strings for pchHostCss or pchHostNS.  */
 
108
        HRESULT DocHostUiHandler::GetHostInfo(DOCHOSTUIINFO __RPC_FAR *pInfo) {
 
109
          pInfo->cbSize = sizeof(DOCHOSTUIINFO);
 
110
 
 
111
          pInfo->dwFlags = 
 
112
           // DOCHOSTUIFLAG_DIALOG                     |
 
113
           // DOCHOSTUIFLAG_DISABLE_HELP_MENU          |
 
114
                  DOCHOSTUIFLAG_NO3DBORDER                 |  /* No 3D Border   */
 
115
           // DOCHOSTUIFLAG_SCROLL_NO                  |  /* Hide Scrollbar */
 
116
           // DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE    |
 
117
           // DOCHOSTUIFLAG_OPENNEWWIN                 |
 
118
           // DOCHOSTUIFLAG_DISABLE_OFFSCREEN          |
 
119
           // DOCHOSTUIFLAG_FLAT_SCROLLBAR             |
 
120
           // DOCHOSTUIFLAG_DIV_BLOCKDEFAULT           |
 
121
           // DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY    |
 
122
           // DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY    |
 
123
           // DOCHOSTUIFLAG_CODEPAGELINKEDFONTS        |
 
124
           // DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8  |
 
125
           // DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8   |
 
126
           // DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE  |
 
127
           // DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION  | 
 
128
           // DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION    |
 
129
           // DOCHOSTUIFLAG_THEME                      |
 
130
           // DOCHOSTUIFLAG_NOTHEME                    |
 
131
           // DOCHOSTUIFLAG_NOPICS                     |
 
132
                  DOCHOSTUIFLAG_NO3DOUTERBORDER            |
 
133
                  0                                        ;
 
134
 
 
135
          // What happens if user double clicks?
 
136
          pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
 
137
 
 
138
          return S_OK ;
 
139
        }
 
140
}
 
 
b'\\ No newline at end of file'