1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #pragma once 21 22 #include <rtl/ustring.hxx> 23 24 namespace framework{ 25 26 /** @short can be used to detect, if a target name (used e.g. for XFrame.findFrame()) 27 has a special meaning or can be used as normal frame name (e.g. for XFrame.setName()). 28 */ 29 class TargetHelper 30 { 31 32 public: 33 34 /** @short it's used at the following interfaces to classify 35 target names. 36 */ 37 enum class ESpecialTarget 38 { 39 Blank, 40 Default, 41 Beamer, 42 HelpTask 43 }; 44 45 // interface 46 47 public: 48 49 /** @short it checks the given unknown target name, 50 if it's the expected special one. 51 52 @note An empty target is similar to "_self"! 53 54 @param sCheckTarget 55 must be the unknown target name, which should be checked. 56 57 @param eSpecialTarget 58 represent the expected target. 59 60 @return It returns <TRUE/> if <var>sCheckTarget</var> represent 61 the expected <var>eSpecialTarget</var> value; <FALSE/> otherwise. 62 */ 63 static bool matchSpecialTarget(std::u16string_view sCheckTarget , 64 ESpecialTarget eSpecialTarget); 65 66 /** @short it checks, if the given name can be used 67 to set it at a frame using XFrame.setName() method. 68 69 @descr Because we handle special targets in a hard coded way 70 (means we do not check the real name of a frame then) 71 such named frames will never be found! 72 73 And in case such special names can exists one times only 74 by definition inside the same frame tree (e.g. _beamer and 75 OFFICE_HELP_TASK) it's not a good idea to allow anything here :-) 76 77 Of course we can't check unknown names, which are not special ones. 78 But we decide, that it's not allowed to use "_" as first sign 79 (because we reserve this letter for our own purposes!) 80 and the value must not a well known special target. 81 82 @param sName 83 the new frame name, which should be checked. 84 */ 85 static bool isValidNameForFrame(const OUString& sName); 86 }; 87 88 } // namespace framework 89 90 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 91