Skip to content

Instantly share code, notes, and snippets.

@vuchl
Created January 12, 2015 11:18
Show Gist options
  • Select an option

  • Save vuchl/34b68f5c81eaa23e6329 to your computer and use it in GitHub Desktop.

Select an option

Save vuchl/34b68f5c81eaa23e6329 to your computer and use it in GitHub Desktop.

Revisions

  1. Sebastian created this gist Jan 12, 2015.
    240 changes: 240 additions & 0 deletions GWCommand.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,240 @@
    // *SOURCE_FILE****************************************************************
    // Copyright (C) 2005 Novell Corp., All Rights Reserved
    //
    // The sample code is provided 'as is' without warranty of any kind.
    // Novell, Inc. further disclaims all implied warranties including
    // without limitation any implied warranties of any merchantability
    // or of fitness for a particular purpose. The entire risk arising out
    // of the use or performance of the software and documentation
    // remains with you.
    //
    // To the maximum extent permitted by law, in no event shall Novell,
    // Inc. or its suppliers be liable for any damages whatsoever (including
    // without limitation, damages for loss of business profits, business
    // interruption, loss of business information, or any other pecuniary
    // loss) arising out of the use of or inability to use this Novell, Inc.
    // product, even if Novell, Inc. has been advised of the possibility
    // of such damages. Because some states/jurisdictions do not
    // allow the exclusion or limitation of liability for consequential or
    // incidental damages, the above limitation may not apply to you.
    // *END************************************************************************
    using System;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using C3POTypeLibrary;
    using System.Threading;
    using System.Timers;
    using System.Reflection;
    using System.IO;
    using GroupwareTypeLibrary;


    namespace MailSendEvent
    {
    // ****************************************************************************
    // Class Name: GWCommand
    //
    // Description: This object defines an instance of a GroupwWise command
    //
    // *END************************************************************************

    [Guid(Guids.gwCommandGuid), ProgId("MailSendEvent.GWCommand")]
    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    [ComVisible(true)]
    public class GWCommand : IGWCommand
    {
    // Member variables to hold private data
    private object m_objBaseCmd;

    private string m_sLongPrompt;

    private string m_sToolTip;

    private int m_PersistentID;

    // ***********************************************************
    // Name: Constructor
    // ***********************************************************
    public GWCommand (int id)
    {
    m_PersistentID = id;

    //this.gw = new GroupwareTypeLibrary.Application();
    }

    // ***********************************************************
    // Name: Get/Set BaseCmd
    //
    // Description: Returns/Save the Base GWCommand
    //
    // In: none/Object Base GWCommand GroupWise Client functionality
    //
    // Out: Object - Base GWCommand/none
    //
    // Comments:
    //
    // ************************************************************
    public object BaseCmd
    {
    get
    {
    return m_objBaseCmd;
    }
    set
    {
    m_objBaseCmd = value;
    }
    }

    public string LongPrompt
    {
    get
    {
    return m_sLongPrompt;
    }
    set
    {
    m_sLongPrompt = value;
    }
    }

    public object Parameters
    {
    get
    {
    return null;
    }
    }

    public string PersistentID
    {
    get
    {
    return null;
    }
    }

    public string ToolTip
    {
    get
    {
    return m_sToolTip;
    }
    set
    {
    m_sToolTip = value;
    }
    }

    public void Execute()
    {
    try
    {


    switch (m_PersistentID)
    {
    case MailSendEvent.GWCOMMAND00:
    //C3PO WIZARD Put execute command code here for GW.MESSAGE.MAIL eGW_CMDID_SEND
    //MessageBox.Show(ClientController.GWCLIENT.FullName);

    /* send the message */
    IGWCommand baseCmd = (IGWCommand)MailSendEvent.g_C3POManager.CreateGWCommand(m_objBaseCmd);
    baseCmd.Execute();
    /* get client and sent items */
    GroupwareTypeLibrary.Application gw = new GroupwareTypeLibrary.Application();
    try
    {
    GroupwareTypeLibrary.Account acc = gw.Login();
    /* convert acc to Account9 for SentItems property access */
    GroupwareTypeLibrary.Account9 acc9 = (GroupwareTypeLibrary.Account9)acc;
    GroupwareTypeLibrary.Folder sentFolder = acc9.SentItems;
    /* get the last sent mail */
    GroupwareTypeLibrary.Message sentMessage = sentFolder.Messages.Item(sentFolder.Messages.Count);
    MessageBox.Show(sentMessage.MessageID);
    }catch(Exception e)
    {
    MessageBox.Show(e.Message);
    }

    break;
    default:
    MessageBox.Show("Unsupported Case", "Error", MessageBoxButtons.OK);
    break;
    }

    //A way to get the GroupWise client state with newest interface
    //C3POTypeLibrary.IGWClientState6 myCL = (C3POTypeLibrary.IGWClientState6)MailSendEvent.g_C3POManager.ClientState;

    //uncomment the code below to unblock the base command
    //IGWCommand baseCmd = (IGWCommand)MailSendEvent.g_C3POManager.CreateGWCommand(m_objBaseCmd);
    //baseCmd.Execute();
    }
    catch (Exception e)
    {
    MessageBox.Show("Error Executing GWCommand: " + m_PersistentID.ToString() + " Error: " + e.Message);
    }

    return;
    }

    // ***********************************************************
    // Name: Help
    //
    // Description: Reserved for future use.
    //
    // In: none
    //
    // Out: none
    //
    // Comments:
    //
    // ************************************************************
    public void Help()
    {
    }

    // ***********************************************************
    // Name: UnDo
    //
    // Description: Reserved for future use.
    //
    // In: none
    //
    // Out: none
    //
    // Comments:
    //
    // ************************************************************
    public void Undo()
    {
    }

    // ***********************************************************
    // Name: Validate
    //
    // Description: This interface is called to determine the state of a C3po
    // command. Determining the state is termed the validation.
    // The command is assumed by default to be in an enabled, unchecked,
    // visible state. The C3po provider can then modify that assumption
    // by returning flags. The available flags are:
    //
    // eGW_CMDVAL_CHECKED - The command has a check mark.
    // eGW_CMDVAL_DISABLED - The command is disabled.
    //
    //
    // In: none
    //
    // Out: Long - Setting command Checked or Disabled
    //
    // Comments: Validate applies only to commands put onto the toolbar or menu by the
    // C3po server. Predifined commands do not cause this method to be involked.
    //
    // ************************************************************
    public int Validate()
    {
    return 0;
    }
    }
    }