/* * Copyright (C) 2005-2007 Alfresco Software Limited. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * As a special exception to the terms and conditions of version 2.0 of * the GPL, you may redistribute this Program in connection with Free/Libre * and Open Source Software ("FLOSS") applications as described in Alfresco's * FLOSS exception. You should have recieved a copy of the text describing * the FLOSS exception, and it is also available here: * http://www.alfresco.com/legal/licensing" */ #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