/* * Copyright (C) 2005-2006 Alfresco, Inc. * * Licensed under the Mozilla Public License version 1.1 * with a permitted attribution clause. You may obtain a * copy of the License at * * http://www.alfresco.org/legal/license.txt * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific * language governing permissions and limitations under the * License. */ #ifndef _Desktop_H #define _Desktop_H // Includes #include #include #include #include "util\Exception.h" #include "util\String.h" #include "util\DataBuffer.h" // Classes defined in this header file namespace Alfresco { class DesktopTarget; class DesktopParams; class DesktopResponse; typedef std::auto_ptr PTR_DesktopTarget; typedef std::auto_ptr PTR_DesktopParams; typedef std::auto_ptr PTR_DesktopResponse; } // Constants namespace Alfresco { // Desktop target types #define TargetFile 0 #define TargetFolder 1 #define TargetCopiedFile 2 #define TargetCopiedFolder 3 #define TargetNodeRef 4 } // Define desktop action exceptions DEFINE_EXCEPTION(Alfresco, DesktopActionException); /** * Desktop Target Class * * Contains the details of a target for a desktop action. */ class Alfresco::DesktopTarget { public: // Class constructors DesktopTarget(int typ, String& path); // Class destructor ~DesktopTarget(); // Return the target type, target path/id inline unsigned int isType(void) const { return m_type; } inline const String& getTarget(void) const { return m_target; } // Return the target type as a string const String getTypeAsString( void) const; // Return the target details as a string const String toString( void) const; // Operators bool operator==( const DesktopTarget& target); bool operator<( const DesktopTarget& target); private: // Hide the copy constructor DesktopTarget(const DesktopTarget& target) {}; private: // Instance variables // // Target type and path/id unsigned int m_type; String m_target; }; /** * Desktop Params Class * * Contains the parameters for a desktop action request. */ class Alfresco::DesktopParams { public: // Class constructors DesktopParams(void) {} // Return the number of targets inline size_t numberOfTargets(void) const { return m_list.size(); } // Return a target from the list const DesktopTarget* getTarget(const unsigned int idx) const; // Add a desktop target inline void addTarget(DesktopTarget* pTarget) { m_list.push_back(pTarget); } // Clear the target list inline void clearTargets( void) { m_list.clear(); } // Return the desktop parameters as a string const String toString(void) const; private: // Instance variables // // List of file/folder/node targets for the action std::vector m_list; }; /** * Desktop Response Class * * Contains the result of calling a server side desktop action. */ class Alfresco::DesktopResponse { public: // class constructors DesktopResponse( const unsigned int sts, const wchar_t* msg = NULL); // Return the status code inline unsigned int getStatus( void) const { return m_status; } // Check if there is a status message, return the status message inline bool hasStatusMessage(void) const { return m_statusMsg.length() > 0; } inline const String& getStatusMessage(void) const { return m_statusMsg; } // Assignment operator DesktopResponse& operator=( const DesktopResponse& response); private: // Instance variables // // Status code and message unsigned int m_status; String m_statusMsg; }; #endif